aboutsummaryrefslogtreecommitdiff
path: root/files/ja/mozilla
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
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/ja/mozilla')
-rw-r--r--files/ja/mozilla/add-ons/add-on_debugger/index.html66
-rw-r--r--files/ja/mozilla/add-ons/add-on_guidelines/index.html129
-rw-r--r--files/ja/mozilla/add-ons/add-on_manager/addonauthor/index.html31
-rw-r--r--files/ja/mozilla/add-ons/add-on_manager/addonscreenshot/index.html34
-rw-r--r--files/ja/mozilla/add-ons/add-on_manager/code_samples/index.html75
-rw-r--r--files/ja/mozilla/add-ons/add-on_manager/index.html68
-rw-r--r--files/ja/mozilla/add-ons/amo/index.html12
-rw-r--r--files/ja/mozilla/add-ons/amo/policy/index.html26
-rw-r--r--files/ja/mozilla/add-ons/creating_custom_firefox_extensions_with_the_mozilla_build_system/index.html518
-rw-r--r--files/ja/mozilla/add-ons/firefox_for_android/index.html79
-rw-r--r--files/ja/mozilla/add-ons/index.html100
-rw-r--r--files/ja/mozilla/add-ons/overlay_extensions/index.html53
-rw-r--r--files/ja/mozilla/add-ons/sdk/guides/content_scripts/index.html484
-rw-r--r--files/ja/mozilla/add-ons/sdk/guides/index.html115
-rw-r--r--files/ja/mozilla/add-ons/sdk/index.html99
-rw-r--r--files/ja/mozilla/add-ons/sdk/tutorials/display_a_popup/index.html142
-rw-r--r--files/ja/mozilla/add-ons/sdk/tutorials/getting_started/index.html167
-rw-r--r--files/ja/mozilla/add-ons/sdk/tutorials/getting_started_(jpm)/index.html174
-rw-r--r--files/ja/mozilla/add-ons/sdk/tutorials/index.html146
-rw-r--r--files/ja/mozilla/add-ons/sdk/tutorials/installation/index.html72
-rw-r--r--files/ja/mozilla/add-ons/sdk/tutorials/troubleshooting/index.html112
-rw-r--r--files/ja/mozilla/add-ons/themes/obsolete/index.html46
-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
-rw-r--r--files/ja/mozilla/calendar/index.html62
-rw-r--r--files/ja/mozilla/chrome_registration/index.html360
-rw-r--r--files/ja/mozilla/command_line_options/index.html484
-rw-r--r--files/ja/mozilla/connect/index.html115
-rw-r--r--files/ja/mozilla/debugging/index.html90
-rw-r--r--files/ja/mozilla/developer_guide/build_instructions/index.html92
-rw-r--r--files/ja/mozilla/developer_guide/callgraph/index.html24
-rw-r--r--files/ja/mozilla/developer_guide/callgraph/schema_reference/index.html87
-rw-r--r--files/ja/mozilla/developer_guide/code_review_faq/index.html126
-rw-r--r--files/ja/mozilla/developer_guide/how_to_submit_a_patch/index.html109
-rw-r--r--files/ja/mozilla/developer_guide/index.html95
-rw-r--r--files/ja/mozilla/developer_guide/mozilla_build_faq/index.html363
-rw-r--r--files/ja/mozilla/developer_guide/source_code/cvs/index.html99
-rw-r--r--files/ja/mozilla/developer_guide/source_code/getting_comm-central_source_code_using_mercurial/index.html50
-rw-r--r--files/ja/mozilla/developer_guide/source_code/index.html50
-rw-r--r--files/ja/mozilla/developer_guide/svg_guidelines/index.html198
-rw-r--r--files/ja/mozilla/developer_guide/using_the_vm/index.html80
-rw-r--r--files/ja/mozilla/firefox/australis_add-on_compat/index.html130
-rw-r--r--files/ja/mozilla/firefox/developer_edition/index.html34
-rw-r--r--files/ja/mozilla/firefox/developer_edition/reverting/index.html25
-rw-r--r--files/ja/mozilla/firefox/enterprise_deployment_before_60/index.html210
-rw-r--r--files/ja/mozilla/firefox/experimental_features/index.html637
-rw-r--r--files/ja/mozilla/firefox/firefox_esr/index.html22
-rw-r--r--files/ja/mozilla/firefox/headless_mode/index.html267
-rw-r--r--files/ja/mozilla/firefox/index.html82
-rw-r--r--files/ja/mozilla/firefox/linux_compatibility_matrix/index.html480
-rw-r--r--files/ja/mozilla/firefox/multiple_profiles/index.html245
-rw-r--r--files/ja/mozilla/firefox/multiprocess_firefox/index.html75
-rw-r--r--files/ja/mozilla/firefox/multiprocess_firefox/message_manager/index.html71
-rw-r--r--files/ja/mozilla/firefox/multiprocess_firefox/message_manager/message_manager_overview/index.html444
-rw-r--r--files/ja/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html28
-rw-r--r--files/ja/mozilla/firefox/multiprocess_firefox/which_uris_load_where/index.html61
-rw-r--r--files/ja/mozilla/firefox/multiprocess_firefox/目的/index.html44
-rw-r--r--files/ja/mozilla/firefox/performance_best_practices_for_firefox_fe_engineers/index.html207
-rw-r--r--files/ja/mozilla/firefox/privacy/index.html20
-rw-r--r--files/ja/mozilla/firefox/privacy/storage_access_policy/index.html267
-rw-r--r--files/ja/mozilla/firefox/privacy/tracking_protection/index.html73
-rw-r--r--files/ja/mozilla/firefox/releases/1.5/changing_the_priority_of_http_requests/index.html66
-rw-r--r--files/ja/mozilla/firefox/releases/1.5/index.html122
-rw-r--r--files/ja/mozilla/firefox/releases/10/index.html197
-rw-r--r--files/ja/mozilla/firefox/releases/11/index.html111
-rw-r--r--files/ja/mozilla/firefox/releases/12/index.html168
-rw-r--r--files/ja/mozilla/firefox/releases/13/index.html136
-rw-r--r--files/ja/mozilla/firefox/releases/14/index.html90
-rw-r--r--files/ja/mozilla/firefox/releases/15/index.html121
-rw-r--r--files/ja/mozilla/firefox/releases/16/index.html105
-rw-r--r--files/ja/mozilla/firefox/releases/17/index.html95
-rw-r--r--files/ja/mozilla/firefox/releases/17/site_compatibility/index.html12
-rw-r--r--files/ja/mozilla/firefox/releases/18/index.html102
-rw-r--r--files/ja/mozilla/firefox/releases/18/site_compatibility/index.html12
-rw-r--r--files/ja/mozilla/firefox/releases/19/index.html82
-rw-r--r--files/ja/mozilla/firefox/releases/19/site_compatibility/index.html12
-rw-r--r--files/ja/mozilla/firefox/releases/2/index.html100
-rw-r--r--files/ja/mozilla/firefox/releases/2/security_changes/index.html32
-rw-r--r--files/ja/mozilla/firefox/releases/20/index.html78
-rw-r--r--files/ja/mozilla/firefox/releases/20/site_compatibility/index.html12
-rw-r--r--files/ja/mozilla/firefox/releases/21/index.html139
-rw-r--r--files/ja/mozilla/firefox/releases/21/site_compatibility/index.html12
-rw-r--r--files/ja/mozilla/firefox/releases/22/index.html84
-rw-r--r--files/ja/mozilla/firefox/releases/22/site_compatibility/index.html12
-rw-r--r--files/ja/mozilla/firefox/releases/23/index.html89
-rw-r--r--files/ja/mozilla/firefox/releases/23/site_compatibility/index.html12
-rw-r--r--files/ja/mozilla/firefox/releases/24/index.html74
-rw-r--r--files/ja/mozilla/firefox/releases/24/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/25/index.html87
-rw-r--r--files/ja/mozilla/firefox/releases/25/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/26/index.html90
-rw-r--r--files/ja/mozilla/firefox/releases/26/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/27/index.html115
-rw-r--r--files/ja/mozilla/firefox/releases/27/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/28/index.html116
-rw-r--r--files/ja/mozilla/firefox/releases/28/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/29/index.html133
-rw-r--r--files/ja/mozilla/firefox/releases/29/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/3.5/icc_color_correction_in_firefox/index.html105
-rw-r--r--files/ja/mozilla/firefox/releases/3.5/index.html273
-rw-r--r--files/ja/mozilla/firefox/releases/3.6/index.html250
-rw-r--r--files/ja/mozilla/firefox/releases/3/index.html181
-rw-r--r--files/ja/mozilla/firefox/releases/30/index.html95
-rw-r--r--files/ja/mozilla/firefox/releases/30/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/31/index.html128
-rw-r--r--files/ja/mozilla/firefox/releases/31/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/32/index.html135
-rw-r--r--files/ja/mozilla/firefox/releases/32/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/33/index.html145
-rw-r--r--files/ja/mozilla/firefox/releases/33/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/34/index.html155
-rw-r--r--files/ja/mozilla/firefox/releases/34/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/35/index.html154
-rw-r--r--files/ja/mozilla/firefox/releases/35/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/36/index.html179
-rw-r--r--files/ja/mozilla/firefox/releases/36/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/37/index.html128
-rw-r--r--files/ja/mozilla/firefox/releases/37/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/38/index.html190
-rw-r--r--files/ja/mozilla/firefox/releases/38/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/39/index.html120
-rw-r--r--files/ja/mozilla/firefox/releases/39/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/4/index.html583
-rw-r--r--files/ja/mozilla/firefox/releases/40/index.html215
-rw-r--r--files/ja/mozilla/firefox/releases/40/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/41/index.html208
-rw-r--r--files/ja/mozilla/firefox/releases/41/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/42/index.html196
-rw-r--r--files/ja/mozilla/firefox/releases/42/site_compatibility/index.html13
-rw-r--r--files/ja/mozilla/firefox/releases/43/index.html174
-rw-r--r--files/ja/mozilla/firefox/releases/44/index.html262
-rw-r--r--files/ja/mozilla/firefox/releases/45/index.html184
-rw-r--r--files/ja/mozilla/firefox/releases/46/index.html180
-rw-r--r--files/ja/mozilla/firefox/releases/47/index.html176
-rw-r--r--files/ja/mozilla/firefox/releases/48/index.html170
-rw-r--r--files/ja/mozilla/firefox/releases/49/index.html350
-rw-r--r--files/ja/mozilla/firefox/releases/5/index.html171
-rw-r--r--files/ja/mozilla/firefox/releases/50/index.html203
-rw-r--r--files/ja/mozilla/firefox/releases/51/index.html234
-rw-r--r--files/ja/mozilla/firefox/releases/52/index.html252
-rw-r--r--files/ja/mozilla/firefox/releases/53/index.html223
-rw-r--r--files/ja/mozilla/firefox/releases/54/index.html130
-rw-r--r--files/ja/mozilla/firefox/releases/55/index.html232
-rw-r--r--files/ja/mozilla/firefox/releases/56/index.html165
-rw-r--r--files/ja/mozilla/firefox/releases/57/index.html302
-rw-r--r--files/ja/mozilla/firefox/releases/58/index.html252
-rw-r--r--files/ja/mozilla/firefox/releases/59/index.html226
-rw-r--r--files/ja/mozilla/firefox/releases/6/index.html237
-rw-r--r--files/ja/mozilla/firefox/releases/60/index.html198
-rw-r--r--files/ja/mozilla/firefox/releases/61/index.html228
-rw-r--r--files/ja/mozilla/firefox/releases/62/index.html222
-rw-r--r--files/ja/mozilla/firefox/releases/63/index.html277
-rw-r--r--files/ja/mozilla/firefox/releases/64/index.html216
-rw-r--r--files/ja/mozilla/firefox/releases/65/index.html245
-rw-r--r--files/ja/mozilla/firefox/releases/66/index.html186
-rw-r--r--files/ja/mozilla/firefox/releases/67/index.html201
-rw-r--r--files/ja/mozilla/firefox/releases/68/index.html245
-rw-r--r--files/ja/mozilla/firefox/releases/69/index.html180
-rw-r--r--files/ja/mozilla/firefox/releases/7/index.html185
-rw-r--r--files/ja/mozilla/firefox/releases/70/index.html206
-rw-r--r--files/ja/mozilla/firefox/releases/71/index.html164
-rw-r--r--files/ja/mozilla/firefox/releases/72/index.html183
-rw-r--r--files/ja/mozilla/firefox/releases/73/index.html113
-rw-r--r--files/ja/mozilla/firefox/releases/74/index.html139
-rw-r--r--files/ja/mozilla/firefox/releases/75/index.html156
-rw-r--r--files/ja/mozilla/firefox/releases/76/index.html120
-rw-r--r--files/ja/mozilla/firefox/releases/77/index.html103
-rw-r--r--files/ja/mozilla/firefox/releases/78/index.html121
-rw-r--r--files/ja/mozilla/firefox/releases/79/index.html138
-rw-r--r--files/ja/mozilla/firefox/releases/8/index.html202
-rw-r--r--files/ja/mozilla/firefox/releases/80/index.html103
-rw-r--r--files/ja/mozilla/firefox/releases/81/index.html106
-rw-r--r--files/ja/mozilla/firefox/releases/82/index.html87
-rw-r--r--files/ja/mozilla/firefox/releases/83/index.html65
-rw-r--r--files/ja/mozilla/firefox/releases/84/index.html93
-rw-r--r--files/ja/mozilla/firefox/releases/9/index.html160
-rw-r--r--files/ja/mozilla/firefox/releases/index.html23
-rw-r--r--files/ja/mozilla/firefox/security_best_practices_for_firefox_front-end_engi/index.html48
-rw-r--r--files/ja/mozilla/firefox_for_ios/index.html46
-rw-r--r--files/ja/mozilla/gecko/chrome/api/chromeworker/index.html54
-rw-r--r--files/ja/mozilla/gecko/chrome/api/index.html31
-rw-r--r--files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text(hover)/index.html16
-rw-r--r--files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text/index.html27
-rw-r--r--files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell/index.html35
-rw-r--r--files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-column/index.html26
-rw-r--r--files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-drop-feedback/index.html25
-rw-r--r--files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-image/index.html31
-rw-r--r--files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-indentation/index.html24
-rw-r--r--files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-line/index.html25
-rw-r--r--files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-progressmeter/index.html25
-rw-r--r--files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row(hover)/index.html16
-rw-r--r--files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row/index.html48
-rw-r--r--files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-separator/index.html26
-rw-r--r--files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-twisty/index.html30
-rw-r--r--files/ja/mozilla/gecko/chrome/css/display-xul/index.html61
-rw-r--r--files/ja/mozilla/gecko/chrome/css/index.html21
-rw-r--r--files/ja/mozilla/gecko/chrome/index.html17
-rw-r--r--files/ja/mozilla/gecko/index.html71
-rw-r--r--files/ja/mozilla/gecko/versions/index.html130
-rw-r--r--files/ja/mozilla/gecko_almost_standards_mode/index.html58
-rw-r--r--files/ja/mozilla/ime_handling_guide/index.html667
-rw-r--r--files/ja/mozilla/implementing_pontoon_in_a_mozilla_website/index.html76
-rw-r--r--files/ja/mozilla/index.html13
-rw-r--r--files/ja/mozilla/javascript_code_modules/components.utils.unload/index.html43
-rw-r--r--files/ja/mozilla/javascript_code_modules/ctypes.jsm/index.html199
-rw-r--r--files/ja/mozilla/javascript_code_modules/deferredtask.jsm/index.html153
-rw-r--r--files/ja/mozilla/javascript_code_modules/downloads.jsm/index.html297
-rw-r--r--files/ja/mozilla/javascript_code_modules/index.html113
-rw-r--r--files/ja/mozilla/javascript_code_modules/perfmeasurement.jsm/index.html302
-rw-r--r--files/ja/mozilla/javascript_code_modules/popupnotifications.jsm/index.html213
-rw-r--r--files/ja/mozilla/javascript_code_modules/using/index.html208
-rw-r--r--files/ja/mozilla/javascript_style_guide/index.html133
-rw-r--r--files/ja/mozilla/js-ctypes/index.html97
-rw-r--r--files/ja/mozilla/localization/bootstrapping_a_new_locale/index.html225
-rw-r--r--files/ja/mozilla/localization/index.html27
-rw-r--r--files/ja/mozilla/localization/index/index.html6
-rw-r--r--files/ja/mozilla/localization/localizing_with_pontoon/index.html137
-rw-r--r--files/ja/mozilla/localization/quick_start_guide/index.html40
-rw-r--r--files/ja/mozilla/localization/quick_start_guide/initial_setup/index.html83
-rw-r--r--files/ja/mozilla/localization/quick_start_guide/translation_phase/index.html118
-rw-r--r--files/ja/mozilla/marketplace/options/open_web_apps_for_desktop/index.html115
-rw-r--r--files/ja/mozilla/mathml_project/index.html75
-rw-r--r--files/ja/mozilla/mathml_project/mathml_torture_test/index.html1322
-rw-r--r--files/ja/mozilla/mobile/firefox_mobile_for_developers/index.html27
-rw-r--r--files/ja/mozilla/mobile/index.html30
-rw-r--r--files/ja/mozilla/mobile/viewport_meta_tag/index.html91
-rw-r--r--files/ja/mozilla/performance/adding_a_new_telemetry_probe/index.html31
-rw-r--r--files/ja/mozilla/performance/gecko_profiler_faq/index.html415
-rw-r--r--files/ja/mozilla/performance/index.html143
-rw-r--r--files/ja/mozilla/performance/profiling_with_the_built-in_profiler/index.html360
-rw-r--r--files/ja/mozilla/performance/reporting_a_performance_problem/index.html62
-rw-r--r--files/ja/mozilla/performance/scroll-linked_effects/index.html110
-rw-r--r--files/ja/mozilla/persona/browser_compatibility/index.html90
-rw-r--r--files/ja/mozilla/persona/faq/index.html56
-rw-r--r--files/ja/mozilla/persona/index.html155
-rw-r--r--files/ja/mozilla/persona/internationalization/index.html52
-rw-r--r--files/ja/mozilla/persona/quick_setup/index.html242
-rw-r--r--files/ja/mozilla/persona/remote_verification_api/index.html125
-rw-r--r--files/ja/mozilla/persona/security_considerations/index.html91
-rw-r--r--files/ja/mozilla/persona/why_persona/index.html48
-rw-r--r--files/ja/mozilla/preferences/index.html48
-rw-r--r--files/ja/mozilla/preferences/preference_reference/index.html13
-rw-r--r--files/ja/mozilla/preferences/preference_reference/ui.alertnotificationorigin/index.html41
-rw-r--r--files/ja/mozilla/preferences/preferences_system/new_attributes/index.html49
-rw-r--r--files/ja/mozilla/projects/emscripten/index.html37
-rw-r--r--files/ja/mozilla/projects/emscripten/techniques/index.html15
-rw-r--r--files/ja/mozilla/projects/index.html13
-rw-r--r--files/ja/mozilla/projects/l20n/index.html126
-rw-r--r--files/ja/mozilla/projects/mochitest/index.html220
-rw-r--r--files/ja/mozilla/projects/mochitest/specialpowers/index.html471
-rw-r--r--files/ja/mozilla/projects/nspr/about_nspr/index.html476
-rw-r--r--files/ja/mozilla/projects/nspr/index.html474
-rw-r--r--files/ja/mozilla/projects/nspr/reference/date_and_time/index.html64
-rw-r--r--files/ja/mozilla/projects/nspr/reference/index.html768
-rw-r--r--files/ja/mozilla/projects/nspr/reference/introduction_to_nspr/index.html577
-rw-r--r--files/ja/mozilla/projects/nspr/reference/logging/index.html74
-rw-r--r--files/ja/mozilla/projects/nspr/reference/memory_management_operations/index.html40
-rw-r--r--files/ja/mozilla/projects/nspr/reference/nspr_log_modules/index.html469
-rw-r--r--files/ja/mozilla/projects/nspr/reference/pr_jointhread/index.html453
-rw-r--r--files/ja/mozilla/projects/nspr/reference/prthread/index.html429
-rw-r--r--files/ja/mozilla/projects/nss/an_overview_of_nss_internals/index.html102
-rw-r--r--files/ja/mozilla/projects/nss/building/index.html112
-rw-r--r--files/ja/mozilla/projects/nss/getting_started_with_nss/index.html58
-rw-r--r--files/ja/mozilla/projects/nss/index.html180
-rw-r--r--files/ja/mozilla/projects/nss/introduction_to_network_security_services/index.html152
-rw-r--r--files/ja/mozilla/projects/nss/new_nss_samples/index.html36
-rw-r--r--files/ja/mozilla/projects/nss/notes_on_tls_-_ssl_3.0_intolerant_servers/index.html94
-rw-r--r--files/ja/mozilla/projects/nss/nss_3.18_release_notes/index.html150
-rw-r--r--files/ja/mozilla/projects/nss/nss_3.57_release_notes/index.html118
-rw-r--r--files/ja/mozilla/projects/nss/nss_api_guidelines/index.html534
-rw-r--r--files/ja/mozilla/projects/nss/nss_developer_tutorial/index.html214
-rw-r--r--files/ja/mozilla/projects/nss/nss_faq/index.html79
-rw-r--r--files/ja/mozilla/projects/nss/nss_reference/fc_login/index.html66
-rw-r--r--files/ja/mozilla/projects/nss/nss_reference/index.html200
-rw-r--r--files/ja/mozilla/projects/nss/nss_releases/index.html137
-rw-r--r--files/ja/mozilla/projects/nss/nss_sample_code/index.html31
-rw-r--r--files/ja/mozilla/projects/nss/nss_sources_building_testing/index.html54
-rw-r--r--files/ja/mozilla/projects/nss/nss_tech_notes/index.html21
-rw-r--r--files/ja/mozilla/projects/nss/nss_third-party_code/index.html34
-rw-r--r--files/ja/mozilla/projects/nss/overview_of_nss/index.html75
-rw-r--r--files/ja/mozilla/projects/nss/pkcs11/index.html17
-rw-r--r--files/ja/mozilla/projects/nss/ssl_functions/index.html300
-rw-r--r--files/ja/mozilla/projects/nss/tools/index.html94
-rw-r--r--files/ja/mozilla/projects/spidermonkey/build_documentation/index.html290
-rw-r--r--files/ja/mozilla/projects/spidermonkey/bytecodes/index.html30
-rw-r--r--files/ja/mozilla/projects/spidermonkey/creating_javascript_jstest_reftests/index.html9
-rw-r--r--files/ja/mozilla/projects/spidermonkey/creating_javascript_tests/index.html77
-rw-r--r--files/ja/mozilla/projects/spidermonkey/foss/index.html97
-rw-r--r--files/ja/mozilla/projects/spidermonkey/getting_spidermonkey_source_code/index.html90
-rw-r--r--files/ja/mozilla/projects/spidermonkey/hacking_tips/index.html654
-rw-r--r--files/ja/mozilla/projects/spidermonkey/how_to_embed_the_javascript_engine/index.html474
-rw-r--r--files/ja/mozilla/projects/spidermonkey/index.html102
-rw-r--r--files/ja/mozilla/projects/spidermonkey/index/index.html10
-rw-r--r--files/ja/mozilla/projects/spidermonkey/internals/bytecode/index.html6855
-rw-r--r--files/ja/mozilla/projects/spidermonkey/internals/garbage_collection/index.html131
-rw-r--r--files/ja/mozilla/projects/spidermonkey/internals/index.html290
-rw-r--r--files/ja/mozilla/projects/spidermonkey/internals/thread_safety/index.html56
-rw-r--r--files/ja/mozilla/projects/spidermonkey/introduction_to_the_javascript_shell/index.html376
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_cookbook/index.html514
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/alphabetical_list/index.html228
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/index.html926
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_compilefile/index.html66
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_constructobject/index.html63
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_defineobject/index.html126
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroycontext/index.html55
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroyruntime/index.html45
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_dumpheap/index.html110
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_evaluatescript/index.html93
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getgcparameter/index.html323
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntime/index.html47
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntimeprivate/index.html59
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_init/index.html35
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_lock/index.html37
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newcontext/index.html93
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newobject/index.html104
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newruntime/index.html52
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_setgczeal/index.html141
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_shutdown/index.html34
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_threadsafe/index.html114
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsint/index.html42
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsruntime/index.html23
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_reference/jstype/index.html52
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsapi_user_guide/index.html6
-rw-r--r--files/ja/mozilla/projects/spidermonkey/jsdbgapi_reference/index.html150
-rw-r--r--files/ja/mozilla/projects/spidermonkey/parser_api/index.html1698
-rw-r--r--files/ja/mozilla/projects/spidermonkey/releases/52/index.html30
-rw-r--r--files/ja/mozilla/projects/spidermonkey/releases/index.html34
-rw-r--r--files/ja/mozilla/projects/spidermonkey/shell_global_objects/index.html662
-rw-r--r--files/ja/mozilla/qa/chrome_tests/index.html63
-rw-r--r--files/ja/mozilla/qa/index.html242
-rw-r--r--files/ja/mozilla/rust/index.html47
-rw-r--r--files/ja/mozilla/setting_up_an_update_server/index.html67
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/index.html5
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/index.html496
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_accel_label/index.html30
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_alert/index.html38
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_animation/index.html30
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_app_root/index.html26
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_application/index.html34
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_arrow/index.html30
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_autocomplete/index.html30
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_border/index.html23
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttondropdown/index.html28
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttondropdowngrid/index.html30
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttonmenu/index.html29
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_calendar/index.html24
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_canvas/index.html28
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_caption/index.html27
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_caret/index.html23
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_cell/index.html39
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_character/index.html23
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_chart/index.html29
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_check_menu_item/index.html32
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_checkbutton/index.html34
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_chrome_window/index.html30
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_clock/index.html28
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_color_chooser/index.html30
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_columnheader/index.html32
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox/index.html34
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox_list/index.html27
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox_option/index.html28
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_cursor/index.html23
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_date_editor/index.html30
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_desktop_frame/index.html30
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_desktop_icon/index.html30
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_diagram/index.html28
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_dial/index.html29
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_dialog/index.html35
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_directory_pane/index.html30
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_document/index.html35
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_document_frame/index.html27
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_droplist/index.html28
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_editbar/index.html29
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_entry/index.html29
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_equation/index.html30
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_file_chooser/index.html30
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_font_chooser/index.html30
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_footer/index.html27
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_form/index.html28
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_glass_pane/index.html27
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_graphic/index.html43
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_grip/index.html23
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_grouping/index.html40
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_header/index.html29
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_heading/index.html32
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_helpballoon/index.html34
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_hotkeyfield/index.html28
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_html_container/index.html27
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_icon/index.html29
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_image_map/index.html26
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ime/index.html25
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_indicator/index.html29
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_internal_frame/index.html39
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ipaddress/index.html28
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_label/index.html31
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_layered_pane/index.html27
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_link/index.html36
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_list/index.html41
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_listbox/index.html29
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_listitem/index.html51
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menubar/index.html35
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menuitem/index.html35
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menupopup/index.html37
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_nothing/index.html30
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_option/index.html27
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_option_pane/index.html27
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_outline/index.html33
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_outlineitem/index.html36
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_page/index.html27
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pagetab/index.html31
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pagetablist/index.html33
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pane/index.html38
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_paragraph/index.html27
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_parent_menuitem/index.html27
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_password_text/index.html28
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_popup_menu/index.html25
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_progressbar/index.html33
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_propertypage/index.html39
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pushbutton/index.html33
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_radio_menu_item/index.html28
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_radiobutton/index.html32
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_redundant_object/index.html26
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_rich_option/index.html28
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_root_pane/index.html26
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_row/index.html34
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ruler/index.html27
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_scroll_pane/index.html26
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_scrollbar/index.html22
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_section/index.html30
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_separator/index.html34
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_slider/index.html32
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_sound/index.html23
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_spinbutton/index.html32
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_split_pane/index.html26
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_statusbar/index.html27
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table/index.html27
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table_column_header/index.html25
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table_row_header/index.html25
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tear_off_menu_item/index.html26
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_terminal/index.html26
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_text_leaf/index.html28
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_titlebar/index.html22
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_toggle_button/index.html27
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_toolbar/index.html32
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tooltip/index.html37
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tree_table/index.html29
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_viewport/index.html27
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_whitespace/index.html30
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_window/index.html23
-rw-r--r--files/ja/mozilla/tech/accessibility/at-apis/index.html5
-rw-r--r--files/ja/mozilla/tech/accessibility/index.html28
-rw-r--r--files/ja/mozilla/tech/index.html15
-rw-r--r--files/ja/mozilla/tech/xpcom/accessing_the_windows_registry_using_xpcom/index.html281
-rw-r--r--files/ja/mozilla/tech/xpcom/fun_with_xbl_and_xpconnect/index.html88
-rw-r--r--files/ja/mozilla/tech/xpcom/generating_guids/index.html79
-rw-r--r--files/ja/mozilla/tech/xpcom/generic_factory/index.html136
-rw-r--r--files/ja/mozilla/tech/xpcom/guide/how_to_build_an_xpcom_component_in_javascript/index.html190
-rw-r--r--files/ja/mozilla/tech/xpcom/guide/index.html16
-rw-r--r--files/ja/mozilla/tech/xpcom/guide/mozilla_internal_string_guide/index.html834
-rw-r--r--files/ja/mozilla/tech/xpcom/guide/xpcom_hashtable_guide/index.html297
-rw-r--r--files/ja/mozilla/tech/xpcom/index.html114
-rw-r--r--files/ja/mozilla/tech/xpcom/interfacing_with_the_xpcom_cycle_collector/index.html67
-rw-r--r--files/ja/mozilla/tech/xpcom/introduction_to_xpcom_for_the_dom/index.html319
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components.classes/index.html109
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components.classesbyid/index.html20
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components.constructor/index.html109
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components.exception/index.html26
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components.id/index.html23
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components.interfaces/index.html37
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components.lastresult/index.html57
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components.manager/index.html11
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components.results/index.html40
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components.returncode/index.html28
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components.stack/index.html11
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components.utils.evalinsandbox/index.html34
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components.utils.forcegc/index.html20
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components.utils.getweakreference/index.html45
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components.utils.import/index.html118
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components.utils.reporterror/index.html40
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components.utils/index.html46
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/components_object/index.html108
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/index.html25
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/development/index.html24
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/embedding_mozilla_in_a_java_application_using_javaxpcom/index.html156
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/examples/index.html13
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/index.html73
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/other_resources/index.html15
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/plxpcom/index.html17
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/pyxpcom/index.html62
-rw-r--r--files/ja/mozilla/tech/xpcom/language_bindings/rbxpcom/index.html16
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/components/index.html18
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/components/nscategorymanager/index.html30
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/components/nsdirectoryservice/index.html71
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/components/nslocalfile/index.html41
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/components/nsobserverservice/index.html30
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/components/nsscriptableinputstream/index.html66
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/glue_classes/index.html16
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/glue_classes/nscomptr/index.html27
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/index.html21
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/ns_ensure_true/index.html49
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/imgiloader/index.html27
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/index.html15
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/mozijssubscriptloader/index.html80
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/moziregistry/index.html89
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/mozistoragestatementparams/index.html25
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiaccessible/index.html484
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiaccessibleprovider/index.html49
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiannotationobserver/index.html128
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiasyncinputstream/index.html96
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiconsoleservice/index.html51
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicontentprefobserver/index.html79
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicontentprefservice/index.html203
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicryptohash/index.html265
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfile/index.html108
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfileexception/index.html57
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfilelist/index.html80
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomhtmlmediaelement/index.html39
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomofflineresourcelist/index.html184
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomsimplegestureevent/index.html61
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownload/index.html135
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadmanager/index.html424
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadmanagerui/index.html111
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadprogresslistener/index.html295
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidragservice/index.html227
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsieffectivetldservice/index.html173
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsienumerator/index.html40
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeed/index.html125
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedcontainer/index.html101
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedelementbase/index.html46
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedentry/index.html68
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedgenerator/index.html51
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedperson/index.html53
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedprocessor/index.html116
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedprogresslistener/index.html102
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedresult/index.html105
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedresultlistener/index.html50
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedtextconstruct/index.html94
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpactivitydistributor/index.html68
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpactivityobserver/index.html172
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpchannel/index.html569
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiidleservice/index.html135
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiinputstream/index.html65
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiioservice/index.html456
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsijscid/index.html24
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsijson/index.html165
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsilogininfo/index.html147
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiloginmanager/index.html306
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiobserver/index.html65
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiobserverservice/index.html186
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsioutputstream/index.html60
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiparentalcontrolsservice/index.html172
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiparserutils/index.html205
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsipassword/index.html12
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsipasswordmanager/index.html16
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiplacesview/index.html128
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiprefbranch/index.html494
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiscriptableunescapehtml/index.html104
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiscriptableunicodeconverter/index.html142
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsisessionstore/index.html419
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsisupports_proxies/index.html89
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsitaggingservice/index.html180
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithread/index.html119
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadeventfilter/index.html61
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadinternal/index.html82
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadmanager/index.html112
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadobserver/index.html125
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadpool/index.html78
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiwebprogresslistener/index.html392
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiwindowmediator/index.html60
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsixmlhttprequest/index.html84
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipentry/index.html60
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipreader/index.html185
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipwriter/index.html496
-rw-r--r--files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference_group/index.html976
-rw-r--r--files/ja/mozilla/tech/xpcom/setting_http_request_headers/index.html273
-rw-r--r--files/ja/mozilla/tech/xpcom/storage/index.html378
-rw-r--r--files/ja/mozilla/tech/xpcom/the_thread_manager/index.html130
-rw-r--r--files/ja/mozilla/tech/xpcom/using_nscomptr/frequently_asked_questions/index.html91
-rw-r--r--files/ja/mozilla/tech/xpcom/using_nscomptr/getting_started_guide/index.html294
-rw-r--r--files/ja/mozilla/tech/xpcom/using_nscomptr/index.html24
-rw-r--r--files/ja/mozilla/tech/xpcom/using_nscomptr/reference_manual/index.html523
-rw-r--r--files/ja/mozilla/tech/xpcom/using_nscomptr/status,_recent_changes,_and_plans/index.html36
-rw-r--r--files/ja/mozilla/tech/xpcom/weak_reference/index.html153
-rw-r--r--files/ja/mozilla/tech/xpcom/wrappedjsobject/index.html104
-rw-r--r--files/ja/mozilla/tech/xpcom/xpcom_abi/index.html54
-rw-r--r--files/ja/mozilla/tech/xpcom/xpcom_ownership_guidelines/index.html37
-rw-r--r--files/ja/mozilla/tech/xpcom/xptcall_faq/index.html76
-rw-r--r--files/ja/mozilla/tech/xpidl/generating_xpt_on_windows/index.html13
-rw-r--r--files/ja/mozilla/tech/xpidl/index.html560
-rw-r--r--files/ja/mozilla/tech/xpidl/xpidl/index.html57
-rw-r--r--files/ja/mozilla/tech/xslt_2.0/index.html35
-rw-r--r--files/ja/mozilla/thunderbird/autoconfiguration/index.html37
-rw-r--r--files/ja/mozilla/thunderbird/content_tabs/index.html81
-rw-r--r--files/ja/mozilla/thunderbird/cookies_in_thunderbird/index.html25
-rw-r--r--files/ja/mozilla/thunderbird/deploying_thunderbird_in_the_enterprise/index.html15
-rw-r--r--files/ja/mozilla/thunderbird/index.html67
-rw-r--r--files/ja/mozilla/thunderbird/ldap_support/index.html32
-rw-r--r--files/ja/mozilla/thunderbird/mail_account_setup_wizard/index.html41
-rw-r--r--files/ja/mozilla/thunderbird/releases/24/index.html411
-rw-r--r--files/ja/mozilla/thunderbird/releases/3/index.html51
-rw-r--r--files/ja/mozilla/thunderbird/releases/5/index.html54
-rw-r--r--files/ja/mozilla/thunderbird/releases/index.html19
-rw-r--r--files/ja/mozilla/toolkit_version_format/index.html101
-rw-r--r--files/ja/mozilla/webidl_bindings/index.html1232
-rw-r--r--files/ja/mozilla/working_with_windows_in_chrome_code/index.html308
802 files changed, 103868 insertions, 0 deletions
diff --git a/files/ja/mozilla/add-ons/add-on_debugger/index.html b/files/ja/mozilla/add-ons/add-on_debugger/index.html
new file mode 100644
index 0000000000..e2147f4582
--- /dev/null
+++ b/files/ja/mozilla/add-ons/add-on_debugger/index.html
@@ -0,0 +1,66 @@
+---
+title: アドオンデバッガ
+slug: Mozilla/Add-ons/Add-on_Debugger
+translation_of: 'https://extensionworkshop.com/documentation/develop/debugging/'
+---
+<div class="geckoVersionNote">
+<p>The Add-on Debugger is new in Firefox 31.</p>
+</div>
+
+<p>Starting in Firefox 31, the Add-on Debugger lets you run the <a href="/en-US/docs/Tools/Debugger">JavaScript Debugger</a> in the context of an add-on.</p>
+
+<p>From Firefox 32 onwards you can also use the<a href="/en-US/docs/Tools/Web_Console"> Console</a>, to see logged messages and evaluate JavaScript in the add-on's context, and<a href="/en-US/docs/Tools/Scratchpad"> Scratchpad</a>, to conveniently evaluate multiline JavaScript in the add-on context and save it to a file.</p>
+
+<p>The Add-on Debugger is only available for <a href="/en-US/Add-ons/Bootstrapped_extensions">restartless</a> and <a href="/en-US/Add-ons/SDK">SDK-based add-ons</a>. It's still experimental: if you find bugs, we'd love it if you <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox&amp;component=Developer%20Tools%3A%20Debugger&amp;blocked=addon-dbg">filed them in Bugzilla</a>.</p>
+
+<p>For a quick introduction to the Add-on Debugger, see this screencast:</p>
+
+<p>{{EmbedYouTube("KU3Xsck7qy0")}}</p>
+
+<h2 id="Opening_the_Add-on_Debugger">Opening the Add-on Debugger</h2>
+
+<p>To enable the Add-on Debugger you need to check the "Enable chrome and addon debugging" and "Enable remote debugging" settings in Firefox.</p>
+
+<p>To do this, select "Toggle Tools" from the Web Developer menu in Firefox, open the <a href="/en-US/docs/Tools/Tools_Toolbox#Settings">Developer Tools Settings</a>, and check "Enable chrome and addon debugging" and "Enable remote debugging".</p>
+
+<p>Now open the Add-on Manager. Next to the entry for your add-on you will see a button labeled "Debug". Click this button to launch the debugger.</p>
+
+<p>Next you'll see a dialog asking you to accept an incoming connection. Click "OK", and the debugger will start in a separate window. Note that sometimes the debugger window is hidden by the main Firefox window.</p>
+
+<p>{{EmbedYouTube("DvNpUVJcG_E")}}</p>
+
+<h2 id="Using_the_Add-on_Debugger">Using the Add-on Debugger</h2>
+
+<p>The Add-on Debugger looks and behaves very much like the <a href="/en-US/docs/Tools/Browser_Toolbox">Browser Toolbox</a>, except that while the scope of the Browser Toolbox is the whole browser, the Add-on Debugger is focused on a specific add-on. Like the Browser Toolbox, a toolbar along the top lets you switch between a number of different tools. In Firefox 31 there's only one such tool, the JavaScript Debugger, but with Firefox 32 you also get the Console and Scratchpad.</p>
+
+<h3 id="The_JavaScript_Debugger">The JavaScript Debugger</h3>
+
+<p>This behaves just like the normal <a href="/en-US/docs/Tools/Debugger">JavaScript Debugger</a>, except its scope is the add-on rather than a web page. On the left-hand side it lists JavaScript sources:</p>
+
+<ul>
+ <li>at the top is <code>bootstrap.js</code>: either the one you've written if your add-on is a manually written <a href="/en-US/Add-ons/Bootstrapped_extensions">bootstrapped add-on</a>, or the one included by the SDK if your add-on is an SDK add-on.</li>
+ <li>next, if your add-on is an SDK add-on, you'll find your add-on's <code>main.js</code>, any <a href="/en-US/Add-ons/SDK/Guides/Module_structure_of_the_SDK#Local_Modules">local modules</a> shipping with your add-on, and any content scripts that are currently loaded</li>
+ <li>next, all the SDK modules used directly or indirectly by your add-on</li>
+</ul>
+
+<h4 id="Content_scripts">Content scripts</h4>
+
+<p>Content scripts are only listed if they are currently loaded. Also, if you set a breakpoint in a content script, it will not be active for instances of the content script which are loaded after the breakpoint is set.</p>
+
+<p>For example, suppose you have an add-on that attaches a content script to every tab the user loads. The content script adds a click handler to the page. As soon as you open a tab, this content script will be listed in the debugger. If you then set a breakpoint in the content script's click handler, then execution will pause whenever you click the page. But if you open a new tab, there are now two instances of the content script, and the breakpoint will not be enabled for the second instance You'll need to set a new breakpoint now if you want to it work for the second instance.</p>
+
+<p>We're investigating improvements to this in <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1016046">bug 1016046</a>.</p>
+
+<h3 id="The_Console">The Console</h3>
+
+<p>The Console behaves just like the <a href="/en-US/docs/Tools/Web_Console">Web Console</a>, but its scope is the add-on rather than the web page.</p>
+
+<p>However, note that it actually runs in the context of the add-on's <code>bootstrap.js</code>, which may not be what you expect if your add-on uses the SDK: you won't see any objects defined in your add-on's <code>main.js</code>, and you won't see <code>require()</code> either. This issue is being tracked as <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1005193">bug 1005193</a>.</p>
+
+<p>You can execute Console statements in the context of <code>main.js</code> while execution is paused inside <code>main.js</code>.</p>
+
+<h3 id="The_Scratchpad">The Scratchpad</h3>
+
+<p>The Scratchpad behaves just like the normal <a href="/en-US/docs/Tools/Scratchpad">Scratchpad</a>, but its scope is the add-on rather than the web page.</p>
+
+<p>Like the Console, the add-on Scratchpad runs in the context of the add-on's <code>bootstrap.js</code> even if the add-on uses the SDK, and as with the Console you can execute Scratchpad code in the context of <code>main.js</code> while execution is paused inside <code>main.js</code>.do</p>
diff --git a/files/ja/mozilla/add-ons/add-on_guidelines/index.html b/files/ja/mozilla/add-ons/add-on_guidelines/index.html
new file mode 100644
index 0000000000..f86dd2e18c
--- /dev/null
+++ b/files/ja/mozilla/add-ons/add-on_guidelines/index.html
@@ -0,0 +1,129 @@
+---
+title: アドオン ガイドライン
+slug: Mozilla/Add-ons/Add-on_guidelines
+tags:
+ - Add-ons
+ - アドオン
+translation_of: 'https://extensionworkshop.com/documentation/publish/add-on-policies/'
+---
+<div class="warning">
+<p>この文書はもはや無効です。現在のアドオンポリシー集については、 <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/AMO/Policy/Reviews">レビューポリシーの文書</a> をご覧ください。</p>
+</div>
+
+<p>これらのアドオンガイドラインは、優れたユーザエクスペリエンスを確保する一方で、オープンかつ多様なアドオン開発者のコミュニティの育成をするために作成されました。ホストされている場所に関わらず、すべてのアドオンおよびアドオンの更新に適用されます。同様に、アドオンを使用せずに Firefox の設定をカスタマイズするインストーラにも適用されます。<a class="external text" href="https://addons.mozilla.org/" rel="nofollow">AMO</a> にホストされているアドオンは、<a href="https://addons.mozilla.org/developers/docs/policies" title="https://addons.mozilla.org/developers/docs/policies">追加のポリシー</a> に従う必要があります。</p>
+
+<h2 id="Be_Transparent(透明性)">Be Transparent(透明性)</h2>
+
+<ul>
+ <li>アドオンは、アドオン Web インストールシステムを使用してインストールするか、<a class="external text" href="https://blog.mozilla.org/addons/2011/08/11/strengthening-user-control-of-add-ons/" rel="nofollow">インストールのオプトインダイアログ</a> で許可されなくてはいけません。
+
+ <ul>
+ <li>インストールしているものをユーザが知り、予期しない変更によって不快な驚きを与えないようにしてください。また、それが不要になった時に何を削除するかをユーザに知らせてください。</li>
+ <li>アプリケーションのインストーラによってインストールされたアドオンは、<a class="external text" href="/docs/Adding_Extensions_using_the_Windows_Registry" rel="nofollow">Windows のレジストリを使用</a> するか、グローバルなインストール方法と同等とし、Firefox にオプトイン画面が表示されなければなりません。オプトイン画面は、追加情報のオーバーレイや画像で覆い隠すなど、いかなる方法でも改変されてはなりません。</li>
+ </ul>
+ </li>
+ <li>アドオンは、いつでもアドオンマネージャからアンインストールまたは無効化できなければなりません。
+ <ul>
+ <li>Windows のレジストリを使用してグローバルにインストールされたアドオンやグローバルの extension ディレクトリにインストールされたアドオンは、アンインストールできません (<a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=640775" rel="nofollow">bug 640775</a>) が、無効化して同じ効果を得られます。</li>
+ </ul>
+ </li>
+ <li>アドオンは、そのライフタイム期間 (作成されてから破棄されるまで) のすべてにおいて、<a class="external text" href="/docs/Install_manifests#id" rel="nofollow">単一のユニークな ID</a> を使用しなければなりません。
+ <ul>
+ <li>同じ ID を複数の製品で使用したり、複数の ID を 1 つの製品で使用することは、自動更新で問題を引き起こし、ブロックリストの干渉を起こします。アドオンは所有者の変更によって ID が変更されることがあります。これは一般的にメールアドレスのような形式を使用します (例: personasplus@mozilla.com)。</li>
+ </ul>
+ </li>
+ <li>アドオンは、ブランド名や商標、その他のユーザを欺く用語を使用してはなりません。 Mozilla の商標を使用する場合、<a class="external text" href="https://www.mozilla.org/foundation/trademarks/policy/" rel="nofollow">Mozilla の商標ポリシー</a> に従わなくてはなりません。</li>
+ <li>アドオンは、その意図している目的と有効な機能および更新によって導入される新しい機能を明確に伝えるべきです。
+ <ul>
+ <li>私たちは、製品の収益化を選択したアドオン開発者を理解しサポートしますが、ユーザのブラウザ体験に代価を求めるものであってはなりません。アドオンが、広告やアフィリエイトコード、スポンサー付きの検索結果、または類似のものを Web ページに挿入する場合、このアドオンのインストール時に、このことをユーザに承知させておくべきです。同様に、一部の機能を有料にする、または試用期間後に支払いを必要とする場合は、ユーザにこのことを承知させておくべきです。</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Be_Respectful_to_Users(ユーザへの敬意)">Be Respectful to Users(ユーザへの敬意)</h2>
+
+<ul>
+ <li>アドオンは、アンインストールされた時に、導入されたコード、実行可能な機能、アプリケーションの設定変更をすべて削除しなければなりません。
+ <ul>
+ <li>通常のアンインストール処理でアドオンをアンインストールすることで、一般的に満たされます。このガイドラインは主に、ホームページ設定や既定の検索 URL、ネットワーク設定など、諸々の設定を変更するものに適用されます。これらの設定は、アドオンがアンインストールされた時に以前の設定が復元されるべきです。ほとんどのアドオンは、<a class="external text" href="/docs/Building_an_Extension#Defaults_Files" rel="nofollow">既定の設定ファイル</a> を通して変更を行うことで、容易にこれを達成できます。</li>
+ </ul>
+ </li>
+ <li>アドオンは、ユーザの選択を尊重し、予期しない変更を行ったりユーザの能力を制限して変更を戻してはなりません。
+ <ul>
+ <li>例えば、ユーザは一般的に、アドオンが Firefox のホームページ設定を変更することを期待していません。このような追加の変更を行う場合は、ユーザに確認してオプトインすることが推奨されます。</li>
+ <li>設定の変更が困難になったり元に戻すことが不可能な変更は禁止です。設定を変更してユーザや他のアドオン、インストーラをブロックすることも許可されていません。</li>
+ </ul>
+ </li>
+ <li>アドオンは、ユーザの個人情報がどのように使用されるかを明確にするべきです。
+ <ul>
+ <li>アドオンがユーザデータをインターネット経由で送信する場合は、できるだけ簡潔で読みやすいプライバシーポリシーを提供すべきです。</li>
+ </ul>
+ </li>
+ <li>アドオンの開発者は、開発者への問い合わせ方法を提供するべきです。
+ <ul>
+ <li>開発者はユーザのためのサポートチャンネルを提供する必要はありませんが、推奨されています。すべてのアドオン開発者は、問い合わせ用の公開のメールアドレスを持ち、ブロックリスト入りするようなガイドライン違反など、緊急の場合に備えて問い合わせられるようにするべきです。</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Be_Safe(安全性)">Be Safe(安全性)</h2>
+
+<ul>
+ <li>アドオンは、ユーザのデータやシステム、オンライン ID を損なってはなりません。</li>
+ <li>アドオンは、ユーザのプライベートデータを安全でない手段で送信したり、不要な第三者に開示したりしてはなりません。
+ <ul>
+ <li>プライベートデータは、常に安全な接続を通して送信されるべきです。これには、訪れたサイトの URL やブックマークなどのブラウジングデータも含まれます。</li>
+ <li>ユーザエージェント文字列にテキストを追加したりカスタムヘッダを追加することによってブラウザが簡単に指紋を残せるようにすることは、セキュリティに関わるため避けるべきです。</li>
+ </ul>
+ </li>
+ <li>アドオンは、アプリケーションやシステムの脆弱性を創出または露呈させてはなりません。
+ <ul>
+ <li>セキュリティのバグは見つかるものですが、一度発見されたものはすぐに修正される必要があります。人気のアドオンにセキュリティの脆弱性があると、悪意のハッカーの標的になります。このような場合、私たちは開発者からの応答を待たずに、アドオンをすぐにブロックリストへ移動します。</li>
+ </ul>
+ </li>
+ <li>アドオンは、アプリケーションやブロックリストの更新システムに手を加えてはなりません。</li>
+ <li>アドオンは、プライベートブラウジングモード (PBM) 中は、ブラウジングデータを保存するべきではありません。
+ <ul>
+ <li>PBM は、ブラウジング中にデータを <em>ローカル</em> に保存しないようにする機能であり、データを送信しない機能ではないことを強調しておくべきでしょう。PBM について学ぶには、<a class="external text" href="http://ehsanakhgari.org/tag/privatebrowsing" rel="nofollow">Ehsan のブログ投稿</a> をお読みください。</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Be_Stable(安定性)">Be Stable(安定性)</h2>
+
+<ul>
+ <li>アドオンは、ハングアップやクラッシュの原因となるべきではありません。</li>
+ <li>アドオンは、アプリケーションの中心機能を壊したり無効にしてはなりません。
+ <ul>
+ <li>これには、タブブラウジング、プライベートブラウジングモード、ロケーションバーなどの機能が含まれます。これを行わなければならない特別なアドオンは除きます。</li>
+ </ul>
+ </li>
+ <li>アドオンは、メモリリークの原因となったり不必要に大量のメモリーを消費するべきではありません。</li>
+ <li>アドオンは、アプリケーションやシステムの動作を著しく遅くするべきではありません。</li>
+ <li>アドオンは、通常のアプリケーションの使用に影響するほどのネットワークリソースを消費するべきではありません。
+ <ul>
+ <li>ユーザが承知せずに大量のデータをダウンロードすることは、通常のブラウジングを妨害し、ネットワーク利用に制限のあるユーザに想定外の通信料金が請求される可能性があります (モバイル通信などの従量課金サービスなど)。</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="例外">例外</h2>
+
+<ul>
+ <li>アドオンは、その意図した目的があり、悪意を持ったもの (セキュリティの脆弱性を悪用するものなど) でなければ、ガイドラインを破ることができます。</li>
+ <li>職場や学校、キオスク、その他の場所の管理者によって配備されたアドオンは、ほとんどのガイドラインから免除されます。</li>
+ <li>Firefox の実行中に有効なアドオンがアンインストールされる間は、その後片付けをするコードのみが実行できます。他の状況でアドオンがアンインストールされる場合は、アドオン自身が後片付けを試みることを必要としません。アドオン無しで Firefox の設定を変更するアプリケーションのインストーラは、アンインストール時にその変更を元に戻すべきです。</li>
+ <li>アドオンは、自身が無効の場合に Firefox に影響しないプライベートな設定を残しておくことができます。こうしておくことで、アドオンが後で再インストールされた時に、以前のアドオンの設定が失われません。</li>
+</ul>
+
+<p>他の例外も追加される可能性があります。</p>
+
+<h2 id="実施">実施</h2>
+
+<p>上記のガイドラインに従わないアドオンは、その違反の大きさにより、ブロックリスト入りの対象になる可能性があります。「してはならない」「しなければならない」(<em>must</em>) という制限されたガイドラインは特に重要です。これに違反したものは、すなわちブロックリスト入りの対象になります。</p>
+
+<p>Mozilla のアドオンチームは、アドオンの開発者との連絡に最善を尽くし、ブロックする前に、問題修正のために妥当な期間を提供します。アドオンに悪意が見られたり、その開発者と連絡が取れない、応答が無い、または違反を繰り返す場合は、即座にブロックリスト入りになります。</p>
+
+<p>ガイドライン違反は、<a class="external text" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Tech%20Evangelism&amp;component=Add-ons" rel="nofollow">Bugzilla 経由で報告</a> してください (Bugzilla の Tech Evangelism &gt; Add-ons カテゴリ)。質問は、<a class="external text" href="irc://irc.mozilla.org/addons" rel="nofollow">#addons IRC チャンネル</a> に投稿できます。</p>
+
+<p>これらのガイドラインは将来変更される可能性があります。すべての更新事項は、 <a class="external text" href="https://blog.mozilla.org/addons/" rel="nofollow">Add-ons ブログ</a> でアナウンスされます。</p>
diff --git a/files/ja/mozilla/add-ons/add-on_manager/addonauthor/index.html b/files/ja/mozilla/add-ons/add-on_manager/addonauthor/index.html
new file mode 100644
index 0000000000..03d58b8a15
--- /dev/null
+++ b/files/ja/mozilla/add-ons/add-on_manager/addonauthor/index.html
@@ -0,0 +1,31 @@
+---
+title: AddonAuthor
+slug: Mozilla/Add-ons/Add-on_Manager/AddonAuthor
+tags:
+ - Add-on Manager
+ - Add-ons
+translation_of: Mozilla/JavaScript_code_modules/Add-on_Manager/AddonAuthor
+---
+<p>作成者、開発者、貢献者、アドオンの翻訳者を表します。</p>
+
+
+<h2 id="Attributes" name="Attributes">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>name</code></td>
+ <td><code>string</code></td>
+ <td>人名</td>
+ </tr>
+ <tr>
+ <td><code>url</code> {{optional_inline}}</td>
+ <td><code>string</code></td>
+ <td><code>name</code> 属性で指定した人物の詳細が記載された URL</td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/ja/mozilla/add-ons/add-on_manager/addonscreenshot/index.html b/files/ja/mozilla/add-ons/add-on_manager/addonscreenshot/index.html
new file mode 100644
index 0000000000..b3a81b55e5
--- /dev/null
+++ b/files/ja/mozilla/add-ons/add-on_manager/addonscreenshot/index.html
@@ -0,0 +1,34 @@
+---
+title: AddonScreenshot
+slug: Mozilla/Add-ons/Add-on_Manager/AddonScreenshot
+tags:
+ - Add-on Manager
+ - Add-ons
+translation_of: Mozilla/JavaScript_code_modules/Add-on_Manager/AddonScreenshot
+---
+<p>アドオンのスクリーンショット</p>
+<h2 id="Attributes" name="Attributes">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>url</code></td>
+ <td><code>string</code></td>
+ <td>スクリーンショットの URL</td>
+ </tr>
+ <tr>
+ <td><code>thumbnailURL</code> {{optional_inline}}</td>
+ <td><code>string</code></td>
+ <td>スクリーンショットのサムネイルの URL</td>
+ </tr>
+ <tr>
+ <td><code>caption</code> {{optional_inline}}</td>
+ <td><code>string</code></td>
+ <td>スクリーンショットのキャプション</td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/ja/mozilla/add-ons/add-on_manager/code_samples/index.html b/files/ja/mozilla/add-ons/add-on_manager/code_samples/index.html
new file mode 100644
index 0000000000..0cc6c7b6ee
--- /dev/null
+++ b/files/ja/mozilla/add-ons/add-on_manager/code_samples/index.html
@@ -0,0 +1,75 @@
+---
+title: コードの実例
+slug: Mozilla/Add-ons/Add-on_Manager/Code_Samples
+tags:
+ - Add-on Manager
+ - Add-ons
+translation_of: Mozilla/JavaScript_code_modules/Add-on_Manager/Code_Samples
+---
+<h2 id="Getting_the_directory_where_your_addon_is_located" name="Getting_the_directory_where_your_addon_is_located">アドオンが格納されているディレクトリの取得</h2>
+
+<p>あなたのアドオンがインストールされているディレクトリを確認する必要がある場合、次の様なトリックを用います。コード中の <var>YOUREXTENSIONID</var> はあなたのアドオンの ID で置き換えてください。</p>
+
+<pre class="brush: js">Components.utils.import("resource://gre/modules/<code><a href="/ja/Add-ons/Add-on_Manager" title="Add-on Manager">AddonManager.jsm</a></code>");
+
+<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager" title="AddonManager">AddonManager</a></code>.<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#getAddonByID()" title="AddonManager.getAddonByID()">getAddonByID</a></code>("YOUREXTENSIONID", function(addon) {
+ var addonLocation = addon.<code><a href="/ja/Add-ons/Add-on_Manager/Addon#getResourceURI()" title="Addon.getResourceURI()">getResourceURI</a></code>("").QueryInterface(Components.interfaces.{{ Interface( "nsIFileURL" ) }}).file.path;
+});
+</pre>
+
+<h2 id="Accessing_file_and_version_information" name="Accessing_file_and_version_information">ファイルとバージョン情報へのアクセス</h2>
+
+<pre class="brush: js">Components.utils.import("resource://gre/modules/<code><a href="/ja/Add-ons/Add-on_Manager" title="Add-on Manager">AddonManager.jsm</a></code>");
+
+<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager" title="AddonManager">AddonManager</a></code>.<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#getAddonByID()" title="AddonManager.getAddonByID()">getAddonByID</a></code>("my-addon@foo.com", function(addon) {
+ alert("My extension's version is " + addon.version);
+ alert("Did I remember to include that file.txt file in my XPI? " +
+ addon.<code><a href="/ja/Add-ons/Add-on_Manager/Addon#hasResource()" title="Addon.hasResource()">hasResource</a></code>("file.txt") ? "YES!" : "No");
+ alert("Let's pretend I did, it's available from the URL " + addon.<code><a href="/ja/Add-ons/Add-on_Manager/Addon#getResourceURI()" title="Addon.getResourceURI()">getResourceURI</a></code>("file.txt").spec);
+});
+</pre>
+
+<h2 id="Uninstall_an_addon" name="Uninstall_an_addon">アドオンの削除</h2>
+
+<pre class="brush: js">Components.utils.import("resource://gre/modules/<code><a href="/ja/Add-ons/Add-on_Manager" title="Add-on Manager">AddonManager.jsm</a></code>");
+
+<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager" title="AddonManager">AddonManager</a></code>.<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#getAddonByID()" title="AddonManager.getAddonByID()">getAddonByID</a></code>("youraddon@youraddon.com", function(addon) {
+ addon.<code><a href="/ja/Add-ons/Add-on_Manager/Addon#uninstall()" title="Addon.uninstall()">uninstall</a></code>();
+});
+</pre>
+
+<h2 id="Disable_an_addon" name="Disable_an_addon">アドオンの無効化</h2>
+
+<pre class="brush: js">Components.utils.import("resource://gre/modules/<code><a href="/ja/Add-ons/Add-on_Manager" title="Add-on Manager">AddonManager.jsm</a></code>");
+<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager" title="AddonManager">AddonManager</a></code>.<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#getAddonByID()" title="AddonManager.getAddonByID()">getAddonByID</a></code>("youraddon@youraddon.com", function(addon) {
+ if (addon.isActive) addon.userDisabled = addon.isActive;
+});
+</pre>
+
+<h2 id="Listening_for_addon_uninstall" name="Listening_for_addon_uninstall">アドオンのアンインストールのリスニング</h2>
+
+
+<p>以下の例では、アドオンのアンインストール時にクリーンアップを実行する profile-before-change メッセージを取得する際に確認することができる変数 "beingUninstalled" を設定しています。</p>
+
+
+<pre class="brush: js">var beingUninstalled;
+
+let listener = {
+ onUninstalling: function(addon) {
+ if (addon.id == "youraddon@youraddon.com") {
+ beingUninstalled = true;
+ }
+ },
+ onOperationCancelled: function(addon) {
+ if (addon.id == "youraddon@youraddon.com") {
+ beingUninstalled = (addon.<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#Pending_operations" title="AddonManager.pendingOperations">pendingOperations</a></code> &amp; AddonManager.PENDING_UNINSTALL) != 0;
+ }
+ }
+}
+
+try {
+ Components.utils.import("resource://gre/modules/<code><a href="/ja/Add-ons/Add-on_Manager" title="Add-on Manager">AddonManager.jsm</a></code>");
+
+ <code><a href="/ja/Add-ons/Add-on_Manager/AddonManager" title="AddonManager">AddonManager</a></code>.<code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#addAddonListener()" title="AddonManager.addAddonListener()">addAddonListener</a></code>(listener);
+} catch (ex) {}
+</pre>
diff --git a/files/ja/mozilla/add-ons/add-on_manager/index.html b/files/ja/mozilla/add-ons/add-on_manager/index.html
new file mode 100644
index 0000000000..292d5b739b
--- /dev/null
+++ b/files/ja/mozilla/add-ons/add-on_manager/index.html
@@ -0,0 +1,68 @@
+---
+title: Add-on Manager
+slug: Mozilla/Add-ons/Add-on_Manager
+tags:
+ - Add-on Manager
+ - Add-ons
+ - NeedsEditorialReview
+ - NeedsTechnicalReview
+ - NeedsTranslation
+ - TopicStub
+translation_of: Mozilla/JavaScript_code_modules/Add-on_Manager
+---
+<p>{{ gecko_minversion_header("2.0") }}</p>
+
+<p>The Add-on Manager is responsible for managing all of the add-ons installed in the application. Through its APIs information about all installed add-ons can be retrieved and new add-ons can be installed. The APIs are designed to be generic and support many different types of add-ons.</p>
+
+<p>Many functions in the Add-on Manager interface operate asynchronously returning results through callbacks passed to the functions. The callbacks may be called immediately while the initial function is still executing or shortly after depending on when the requested data becomes available.</p>
+
+<h2 id="Accessing_installed_add-ons">Accessing installed add-ons</h2>
+
+<p>Information about installed add-ons can be retrieved through the main <code><a href="/ja/Add-ons/Add-on_Manager/AddonManager" title="AddonManager">AddonManager</a></code> API. All of its functions are asynchronous meaning that a callback function must be passed to receive the <code><a href="/ja/Add-ons/Add-on_Manager/Addon" title="Addon">Addon</a></code> instances. The callback may well only be called after the API function returns. For example:</p>
+
+<pre class="brush: js">Components.utils.import("resource://gre/modules/AddonManager.jsm");
+
+AddonManager.getAllAddons(function(aAddons) {
+ // Here aAddons is an array of <code><a href="/ja/Add-ons/Add-on_Manager/Addon" title="Addon">Addon</a></code> objects
+});
+// This code will execute before the code inside the callback
+</pre>
+
+<p>Notifications about changes to installed add-ons are dispatched to any registered <code><a href="/ja/Add-ons/Add-on_Manager/AddonListener" title="AddonListener">AddonListener</a></code>s. They must be registered through the <code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#addAddonListener()" title="AddonManager.addAddonListener()">addAddonListener()</a></code> method.</p>
+
+<h2 id="Installing_new_add-ons">Installing new add-ons</h2>
+
+<p>New add-ons can be installed by using the <code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#getInstallForFile()" title="AddonManager.getInstallForFile()">getInstallForFile()</a></code> or <code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#getInstallForURL()" title="AddonManager.getInstallForURL()">getInstallForURL()</a></code> methods on the <code><a href="/ja/Add-ons/Add-on_Manager/AddonManager" title="AddonManager">AddonManager</a></code> object. These will pass an <code><a href="/ja/Add-ons/Add-on_Manager/AddonInstall" title="AddonInstall">AddonInstall</a></code> instance to the callback which can then be used to install the add-on:</p>
+
+<pre class="brush: js">Components.utils.import("resource://gre/modules/AddonManager.jsm");
+
+AddonManager.getInstallForURL("http://www.foo.com/test.xpi", function(aInstall) {
+ // aInstall is an instance of <code><a href="/ja/Add-ons/Add-on_Manager/AddonInstall" title="AddonInstall">AddonInstall</a></code>
+ aInstall.install();
+}, "application/x-xpinstall");
+</pre>
+
+<p>The progress of <code><a href="/ja/Add-ons/Add-on_Manager/AddonInstall" title="AddonInstall">AddonInstall</a></code>s can be monitored using an <code><a href="/ja/Add-ons/Add-on_Manager/InstallListener" title="InstallListener">InstallListener</a></code>. A listener can be registered either for a specific install using the <code><a href="/ja/Add-ons/Add-on_Manager/AddonInstall#addListener()" title="AddonInstall.addListener()">addListener()</a></code> method or for all installs using the <code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#addInstallListener()" title="AddonManager.addInstallListener()">addInstallListener()</a></code> method.</p>
+
+<h2 id="Finding_updates">Finding updates</h2>
+
+<p>Add-ons can be checked for updates using the <code><a href="/ja/Add-ons/Add-on_Manager/Addon#findUpdates()" title="Addon.findUpdates()">findUpdates()</a></code> method. It must be passed an <code><a href="/ja/Add-ons/Add-on_Manager/UpdateListener" title="UpdateListener">UpdateListener</a></code> to receive information about compatibility information and new update information. Any available update is returned as an <code><a href="/ja/Add-ons/Add-on_Manager/AddonInstall" title="AddonInstall">AddonInstall</a></code> which is ready to be downloaded and installed.</p>
+
+<p>{{ h1_gecko_minversion("Detecting add-on changes", "7.0") }}</p>
+
+<p>You can also get lists of add-ons that, at startup, were changed in various ways. The <code><a href="/ja/Add-ons/Add-on_Manager/AddonManager#getStartupChanges()" title="AddonManager.getStartupChanges()">getStartupChanges()</a></code> method lets you find out which add-ons were installed, removed, updated, enabled, or disabled at application startup.</p>
+
+<p>For example, to take a look at the add-ons that were disabled at startup:</p>
+
+<pre class="brush: js">Components.utils.import("resource://gre/modules/AddonManager.jsm");
+
+let addonIDs = AddonManager.getStartupChanges(AddonManager.STARTUP_CHANGE_DISABLED);
+if (addonIDs.length &gt; 0) {
+  // addonIDs is now an array of the add-on IDs that have been disabled
+alert("Note: " + addonIDs.length + " add-ons have been disabled.");
+}
+</pre>
+
+<h2 id="See_also">See also</h2>
+
+<p>{{ ListSubpages() }}</p>
diff --git a/files/ja/mozilla/add-ons/amo/index.html b/files/ja/mozilla/add-ons/amo/index.html
new file mode 100644
index 0000000000..3f6d8b219f
--- /dev/null
+++ b/files/ja/mozilla/add-ons/amo/index.html
@@ -0,0 +1,12 @@
+---
+title: AMO
+slug: Mozilla/Add-ons/AMO
+translation_of: Mozilla/Add-ons/AMO
+---
+<p> </p>
+
+<p><a href="https://addons.mozilla.org/en-US/firefox/">addons.mozilla.org</a> をドキュメント化しているページ:</p>
+
+<p>{{Listsubpages("/ja/Add-ons/AMO", 10)}}</p>
+
+<p> </p>
diff --git a/files/ja/mozilla/add-ons/amo/policy/index.html b/files/ja/mozilla/add-ons/amo/policy/index.html
new file mode 100644
index 0000000000..ce6a579e34
--- /dev/null
+++ b/files/ja/mozilla/add-ons/amo/policy/index.html
@@ -0,0 +1,26 @@
+---
+title: AMO ポリシー
+slug: Mozilla/Add-ons/AMO/Policy
+tags:
+ - AMO
+ - Add-ons
+ - Firefox
+ - Policies
+translation_of: Mozilla/Add-ons/AMO/Policy
+---
+<p>{{AddonSidebar}}</p>
+
+<p>Mozilla はユーザーと開発者に対して、すばらしいアドオン体験を保証することにコミットします。アドオンを登録する前に、下記のポリシーを良く読んでください。</p>
+
+<dl>
+ <dt><a href="/ja/docs/Mozilla/Add-ons/AMO/Policy/Agreement">Firefox アドオン配布契約</a></dt>
+ <dd>この契約は、2016年1月5日から有効になります。</dd>
+ <dt><a href="/ja/docs/Mozilla/Add-ons/AMO/Policy/Reviews">アドオンポリシー</a></dt>
+ <dd>アドオンは Firefox のコア機能を拡張し、ユーザーが Web エクスペリエンスを変更したりパーソナライズしたりできるようにします。信頼に基づいて構築された健全なアドオンエコシステムは、開発者が成功し、ユーザーが Firefox を自分のものにしても安全に感じるために不可欠です。</dd>
+ <dd>これらの理由から、Mozilla はすべてのアドオンが許容される慣習に関するアドオンポリシーに従うことを要求しています。これらのポリシーは、法的な助言として機能することを意図したものではなく、アドオンのプライバシーポリシーに含める包括的な用語のリストとして機能することも意図していません。</dd>
+ <dt><a href="https://developer.mozilla.org/Mozilla/Add-ons/AMO/Policy/Featured">Featured Add-ons</a></dt>
+ <dd>注目のアドオンがどのように注目されるようになり、そのプロセスに何が関与しているのか。</dd>
+ <dd><strong><a href="https://developer.mozilla.org/ja/Add-ons#Contact_us">我々に連絡する</a></strong>
+ <p>このポリシーやあなたのアドオンに関して連絡を取る方法。</p>
+ </dd>
+</dl>
diff --git a/files/ja/mozilla/add-ons/creating_custom_firefox_extensions_with_the_mozilla_build_system/index.html b/files/ja/mozilla/add-ons/creating_custom_firefox_extensions_with_the_mozilla_build_system/index.html
new file mode 100644
index 0000000000..2a8d3507c7
--- /dev/null
+++ b/files/ja/mozilla/add-ons/creating_custom_firefox_extensions_with_the_mozilla_build_system/index.html
@@ -0,0 +1,518 @@
+---
+title: Mozilla ビルドシステムによるカスタム Firefox 拡張機能の作成
+slug: >-
+ Mozilla/Add-ons/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System
+tags:
+ - Mozilla 開発
+ - XPCOM
+ - アドオン
+ - ガイド
+ - ビルドドキュメンテーション
+ - 拡張機能
+translation_of: >-
+ Archive/Add-ons/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System
+---
+<div class="blockIndicator warning">
+<p>Support for extensions using XUL/XPCOM or the Add-on SDK was removed in Firefox 57, released November 2017. As there is no supported version of Firefox enabling these technologies, this page will be removed by December 2020.</p>
+</div>
+
+<p>{{LegacyAddonsNotice}}{{AddonSidebar}}</p>
+
+<p>Firefox 用の拡張機能を作成するための情報は<a href="/en/Extensions">豊富</a>にあります。しかし現時点でこれら全てのドキュメントは、あなたが <a href="/en/XUL" title="en/XUL">XUL</a> または <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a> のみを用いて拡張機能を作成することを想定しています。複雑な拡張機能を作成するためには、これらを実現するための C++ で作成されたコンポーネントを利用する必要が出てくることでしょう。あなたの作成する拡張機能に C++ によるコンポーネントを含めなければならないケースは次のとおりです。</p>
+
+<ul>
+ <li>JavaScript のコードよりも高いパフォーマンスが要求される場合。</li>
+ <li>C または C++ で書かれたサードパーティ製のライブラリを利用する場合。</li>
+ <li><a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> (例: <a href="/en/NSPR" title="en/NSPR">NSPR</a>) によって公開されていない Mozilla のインタフェースを利用する場合。</li>
+</ul>
+
+<ul>
+</ul>
+
+<div class="note"><strong>Note:</strong> Gecko の JIT による最新の JavaScript エンジンと <a href="/en/js-ctypes/js-ctypes_reference" title="js-ctypes reference">js-ctypes</a> により、より多くの拡張機能は JavaScript のみで記載できます。ネイティブな C++ コードをあなたの拡張機能で利用することを決断する前に、他の選択肢を十分検討してください。バイナリのコンポーネントの場合 Firefox のメジャーリリースの度に再コンパイルが必要となり面倒です。</div>
+
+<p>この記事では上記に記載したような条件の下、大規模で複雑な Firefox 拡張を作成するための開発環境をセットアップする方法について述べます。なお、 Mozilla 用の C++ コンポーネントを作成するために Mozilla をビルドする必要は無く、 Mozilla ビルドシステムを利用すればよいことを強調しておきます。あなたが単に <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> コンポーネント等の作成方法について調べているのであれば、本記事の内容はおそらく過剰であり、それよりも<a class="external" href="http://www.iosart.com/firefox/xpcom/">こちらのガイド</a>を見るべきでしょう。言い換えると、あなたが個人またはチームでの開発経験者であり、かつ大規模で複雑な拡張機能を作成しようとしているのであれば、本記事に書かれている手法を検討することで、うまく作業を進めることができるでしょう。</p>
+
+<p>メモ: ここでは Firefox でのみこれらの手法の動作確認をしましたが、これらは追加の変更を加えずとも、おそらく大体の Gecko ベースのプラットフォーム (Thunderbird や Seamonkey など) で動作するでしょう。</p>
+
+<h3 id="バンビ、モジラに会う">バンビ、モジラに会う</h3>
+
+<p>臆病者の話ではありません。とりわけ最初のステップは、非常に大規模―そう、途方もなく―である Mozilla プロジェクトのビルドの話へと巻き込みます。多くの賢い開発者は、一度はそのビルドに挑戦し、精神異常の瀬戸際を経験してきました。もしあなたが C++ 開発者を経験していないなら、あなたを悩ませたくありませんので、 JavaScript を利用することをおすすめします。</p>
+
+<h4 id="Windows_環境">Windows 環境</h4>
+
+<p>私は<a href="/En/Developer_Guide/Build_Instructions/Windows_Prerequisites" title="En/Developer_Guide/Build_Instructions/Windows_Prerequisites">このガイド</a>を見て初めて Mozilla のビルドを実施しました。なぜかは思い出せませんが、幾度となくスタックしてしまい、これらの一連の事件は最初に思っていたよりも実に長い時間を掛けて終えました。多くの家具が破壊され、髪は殆ど根っこから抜け落ちました。あなたがお探しの高評価の付いた分かりやすいガイドは<a class="external" href="http://whereswalden.com/mozilla/msvcfree/">こちら</a>にあります。几帳面に各ステップを実施していけば、おそらくうまく行くでしょう。あなたがきちんと動作するビルド環境を一度得られたのであれば、ある時点からはおそらく何の努力もせずにビルドできるようになったのでしょう。多分。</p>
+
+<h4 id="その他のプラットフォーム">その他のプラットフォーム</h4>
+
+<p>Linux や MacOS などの他のプラットフォームでは、手順は幾分簡単です。ビルドに必要な全てのツール群は最初から組み込まれ利用可能な状態になっており、したがって、あなたがやるべきことは端末上でいくつかコマンドを実行するのみです。殆どの OS 向けの完全な手順は<a href="/En/Developer_Guide/Build_Instructions" title="En/Developer_Guide/Build_Instructions">こちら</a>から参照できます。</p>
+
+<h3 id="プロジェクトの構築">プロジェクトの構築</h3>
+
+<p>Mozilla には、そのビルド過程へ統合されている大量の複雑な拡張機能が含まれています。したがって、XPCOM コンポーネントの作成や登録、 JAR ファイルやマニフェストのビルド、 Firefox の <code>extension/</code> ディレクトリへの多数のファイルのインストールなどの全ての問題を解決する必要があります。すなわち、これらの問題を解決することと拡張機能をビルドするための開発環境は、切っても切れない関係であると言えます。</p>
+
+<p>まず最初に、あなたの拡張機能に付けるキャッチーな名前を考えてください。そして、その名前のディレクトリを <code>/mozilla/extensions/ </code>ディレクトリの下に作成します。名前には小文字のみ利用可能です。ビルドツリーの同じ階層には <code>inspector/</code>, <code>reporter/</code> などの仲間のディレクトリも確認できるはずです。</p>
+
+<p>ビルドを行う前に、 Mozilla ビルドシステムは <code>Makefile.in</code> と呼ばれるメイクファイルのテンプレートを元にしてビルド時に実際に利用するメイクファイルを生成するコンフィギュレーションと呼ばれる処理を実施します。実際のメイクファイルはテンプレートと類似もしくは一致していることがしばしばありますが、動的に生成されたメイクファイルを利用することで得られる柔軟性が、ビルドシステムをより強力にする要素の一つとなっています。</p>
+
+<h4 id="単純な_C_拡張機能の分析">単純な C++ 拡張機能の分析</h4>
+
+<p>ここではあなたが C++ または JavaScript の両方から利用可能な XPCOM コンポーネントを記述するために C++ を利用することを想定します。コンポーネントを作成するプロセスは、 Mozilla ビルドシステムを利用した場合、実際のところ比較的簡単です。</p>
+
+<p>最も単純なケースでは、コンポーネントは <code>public/</code> と <code>src/</code> の 2 つのサブディレクトリを持つ、単一のメインディレクトリから成ります。メインディレクトリと各サブディレクトリには必ず <code>Makefile.in</code> を含める必要があります (これ以降は単にこれらのファイルをメイクファイルと呼びますが、本当のところは真のメイクファイルを生成するために利用されるファイルであることを忘れないようにしてください) 。このメイクファイルは 2 つのことを宣言します。 1 つ目は、拡張機能の生成先であるサブディレクトリをリスティングしています。そのためビルドシステムは、追加のメイクファイルの検索場所を知る必要があります。 2 つ目は、ビルドシステムに対して新しい拡張機能を作成する方法 (コンポーネントのディレクトリを Firefox のバイナリのあるディレクトリへコピーする、などではなく) を指示します。拡張機能を利用する主な利点は、全てをパッケージングしてそれを他のマシンへインストールできることです。</p>
+
+<p>それでは、以下に基礎的なごく普通の最上位のメイクファイルを示します (拡張機能のメインディレクトリ内にある <code>Makefile.in</code>) 。</p>
+
+<pre>DEPTH = ../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+MODULE = myextension
+
+DIRS = public src
+
+XPI_NAME = myextension
+INSTALL_EXTENSION_ID = myextension@mycompany.com
+XPI_PKGNAME = myextension
+
+DIST_FILES = install.rdf
+
+include $(topsrcdir)/config/rules.mk</pre>
+
+<p>このメイクファイルの主な機能を表現するメイク処理の詳細な記述については <a href="/en/How_Mozilla's_build_system_works" title="en/How_Mozilla's_build_system_works">こちら</a> から確認できます。 <strong>MODULE</strong> と <strong>XPI_NAME</strong> の両方は、あなたの拡張機能の名前に設定します。これは、 XPI と同じ場所 (下記参照) へ全てのファイルを配置するために、全てのプロジェクトのメイクファイルで繰り返し記述しなければなりません。 <strong>INSTALL_EXTENSION_ID</strong> はあなたの拡張機能のユニークな ID です。これは GUID でもよいですが、上に示したような ID の方がかなり、そして見たときに思い出しやすいです。 <strong>XPI_PKGNAME</strong> は記述する必要がありませんが、もし配布に適した XPI を利用するならば、この値は自動的に XPI と同じ場所に作成されます (<code>/mozilla/$(MOZ_OBJDIR)/dist/xpi-stage/</code>) 。</p>
+
+<p>全ての拡張機能は、 Firefox に対してインストール方法を指示する <code>install.rdf</code> ファイルを含める必要があります。このファイルは拡張機能のメインディレクトリに配置する必要があり、以下のような見た目をしています。</p>
+
+<pre class="brush: xml">&lt;?xml version="1.0"?&gt;
+
+&lt;RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#"&gt;
+ &lt;Description about="urn:mozilla:install-manifest"&gt;
+ &lt;em:id&gt;myextension@mycompany.com&lt;/em:id&gt;
+ &lt;em:version&gt;0.1&lt;/em:version&gt;
+
+ &lt;em:targetApplication&gt;
+ &lt;!-- Firefox --&gt;
+ &lt;Description&gt;
+ &lt;em:id&gt;{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&lt;/em:id&gt;
+ &lt;em:minVersion&gt;1.0+&lt;/em:minVersion&gt;
+ &lt;em:maxVersion&gt;1.0+&lt;/em:maxVersion&gt;
+ &lt;/Description&gt;
+ &lt;/em:targetApplication&gt;
+
+ &lt;!-- front-end metadata --&gt;
+ &lt;em:name&gt;My First Extension&lt;/em:name&gt;
+ &lt;em:description&gt;Just an example.&lt;/em:description&gt;
+ &lt;em:creator&gt;allpeers.com&lt;/em:creator&gt;
+ &lt;em:homepageURL&gt;http://www.allpeers.com/blog/&lt;/em:homepageURL&gt;
+ &lt;/Description&gt;
+&lt;/RDF&gt;
+</pre>
+
+<p><code>install.rdf </code>ファイルフォーマットの詳細については<a href="/en/Install_Manifests" title="en/Install_Manifests">こちら</a>から確認できます。メイクファイルの中で <strong>DIST_FILES</strong> 変数を指定すると、ファイルを拡張機能のディレクトリと (任意の) XPI ファイルへコピーするよう <code>make</code> へ伝えることができます。</p>
+
+<h4 id="Public_Interfaces">Public Interfaces</h4>
+
+<p>The <code>public/</code> directory contains any interfaces that need to be accessed by other modules. These can be <a class="external" href="http://www.mozilla.org/scriptable/xpidl/idl-authors-guide/index.html">IDL</a> files describing <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> interfaces, which are used to generate normal C++ header files for inclusion in your source files. They can also be normal C++ header files that are to be used directly by other modules. The easiest way to accomplish the latter is to use inline implementations for all methods so you don’t have any additional linking dependencies. Otherwise you will have to link statically to your module if you use these public headers in other modules. Personally I would discourage this practice (among other things, static linking means the same code gets loaded more than once into memory, and the code won’t be available from JavaScript or other non-C++ languages) and encourage the use of XPCOM wherever possible.</p>
+
+<p>The makefile in the <code>public/</code> directory should follow this model:</p>
+
+<pre>DEPTH = ../../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+MODULE = myextension
+XPIDL_MODULE = myextension
+
+XPI_NAME = myextension
+
+EXPORTS = \
+ myHeader.h \
+ $(NULL)
+
+XPIDLSRCS = \
+ myIFirstComponent.idl \
+ myISecondComponent.idl \
+ $(NULL)
+
+include $(topsrcdir)/config/rules.mk
+</pre>
+
+<p><strong>XPIDL_MODULE</strong> is the name of the generated XPT file that contains type information about your <a class="external" href="http://www.mozilla.org/scriptable/xpidl/idl-authors-guide/index.html">IDL</a> interfaces. If you have multiple modules, make absolutely sure that you use a different value for <strong>XPIDL_MODULE</strong> for each one. Otherwise the first module’s XPT file will be overwritten by the second and you’ll get <strong>NS_ERROR_XPC_BAD_IID</strong> errors when you try to access its IDL interfaces from your code. The files under <strong>EXPORTS</strong> are copied directly to the <code>/mozilla/$(MOZ_OBJDIR)/dist/include/</code> directory and are thus accessible from other modules (the value of <strong>MOZ_OBJDIR</strong> is defined in <code>/mozilla/.mozconfig</code>). XPIDLSRCS are run through the IDL processor, and the generated C++ headers are copied into the same include directory. In addition, an XPT (type library) file is generated and placed in the <code>components/</code> subdirectory of your extension.</p>
+
+<h4 id="Source_Files">Source Files</h4>
+
+<p>Now it’s time to create the makefile and source files in the <code>src/</code> subdirectory. If you're implementing interfaces that you've described using IDL, the easiest way to do this is to leave the <code>src/</code> directory empty and run <code>make</code> on the <code>public/</code> directory only; this will be explained shortly.</p>
+
+<p>Then open the generated header file for your interface from <code>/mozilla/$(MOZ_OBJDIR)/dist/include/</code>. It contains stubs for the component .H and .CPP files that you can copy and paste into your implementation files. All you have to do is fill in the implementation stubs in the C++ file and you’re good to go.</p>
+
+<p>Here’s an example of the makefile you need to place into your <code>src</code> directory:</p>
+
+<pre class="eval">DEPTH = ../../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+IS_COMPONENT = 1
+<a href="/en/MODULE" title="en/MODULE">MODULE</a> = myextension
+<a href="/en/LIBRARY_NAME" title="en/LIBRARY_NAME">LIBRARY_NAME</a> = myExtension
+<a href="/en/USE_STATIC_LIBS" title="en/USE_STATIC_LIBS">USE_STATIC_LIBS</a> = 1
+
+XPI_NAME = myextension
+
+<a href="/en/CPPSRCS" title="en/CPPSRCS">CPPSRCS</a> = \
+ myFirstComponent.cpp \
+ mySecondComponent.cpp \
+ myExtension.cpp \
+ $(NULL)
+
+include $(topsrcdir)/config/rules.mk
+
+<a href="/en/EXTRA_DSO_LDOPTS" title="en/EXTRA_DSO_LDOPTS">EXTRA_DSO_LDOPTS</a> += \
+ $(MOZ_COMPONENT_LIBS) \
+ $(NSPR_LIBS) \
+ $(NULL)
+</pre>
+
+<p>In this example, the first two files contain the implementation of the extension’s two components. The final file, <code>myExtension.cpp</code>, contains the code necessary to register these components, as described in the next section.</p>
+
+<h4 id="Registering_Your_Components">Registering Your Components</h4>
+
+<p><a href="/en/XPCOM/XPCOM_changes_in_Gecko_2.0" title="XPCOM changes in Gecko 2.0">This article </a>explains how to register XPCOM components in Gecko 2.0 and later.</p>
+
+<h4 id="Building_It">Building It</h4>
+
+<p>As mentioned above, you’ll probably want to build your extension immediately after creating your IDL files in order to generate the C++ stubs for your component implementations. I’m assuming that you’ve already built Firefox successfully. If not, return immediately to the beginning of this article and don’t come back til you have a functioning <code>firefox.exe</code>. Do not pass go. Do not collect $200.</p>
+
+<p>Still here? Okay, now we have to modify your <code>.mozconfig</code> (in the <code>/mozilla/</code> root directory) so that your extension is built along with Mozilla. Add the following line at the end of the file:</p>
+
+<pre class="brush: shell">ac_add_options --enable-extensions=default,myextension
+</pre>
+
+<p>Now launch <code>make</code> from the Mozilla root:</p>
+
+<pre class="brush: shell">make -f client.mk build
+</pre>
+
+<p>Even if you have an up-to-date Firefox build, you’ll have to wait a while for <code>make</code> to recurse over the entire Mozilla source tree looking for new stuff (on my machine, which is pretty fast, this takes a good 10-15 minutes). Eventually it will reach your extension and generate a bunch of stuff under <code>/mozilla/$(MOZ_OBJDIR)/</code>:</p>
+
+<ul>
+ <li>Exported header files and generated header files (from IDL) in <code>dist/include/</code></li>
+ <li>Static libraries for your modules in <code>dist/lib/</code> (in case other modules want to link statically to your stuff instead of using XPCOM).</li>
+ <li>XPI file in <code>dist/xpi-stage/myextension.xpi</code>.</li>
+ <li>Generated makefiles for your projects in <code>extensions/myextension/</code> (remember, we’re under <code>/mozilla/$(MOZ_OBJDIR)/</code>.</li>
+ <li>Everything else in <code><a class="link-mailto" href="mailto:dist/bin/extensions/myextension@mycompany.com" rel="freelink">dist/bin/extensions/myextension@mycompany.com</a>/</code>.</li>
+</ul>
+
+<p>A lot of this stuff won’t get created on this first pass since <code>make</code> will gag when it doesn’t find the source files for your components. Don’t worry about this; all you need are the generated header files that contain the C++ implementation stubs. Go back and flesh out the C++ implementation of your components so that the build can complete next time. Remember that you should never, ever modify any of these generated files. Always modify the files used to generate them and rerun <code>make</code>. If you’re changing the generated files directly, you’re probably doing something wrong.</p>
+
+<p>The process of walking the entire Mozilla tree takes a long time. If you already have a Mozilla build, you can avoid this by creating a makefile for your extension directly. Go to the root of your $(MOZ_OBJDIR) and (from a bash-compatible shell) enter:</p>
+
+<pre class="eval">../build/autoconf/make-makefile extensions/myextension
+</pre>
+
+<p>If your $(MOZ_OBJDIR) is located outside your $(TOPSRCDIR), you'll need to do:</p>
+
+<pre class="eval">$(TOPSRCDIR)/build/autoconf/make-makefile -t $(TOPSRCDIR) extensions/myextension
+</pre>
+
+<p>in order for the script to know where your source is (it'll use the extension path you gave it relative to the current dir to figure out where you want your makefiles to go).</p>
+
+<p>This will generate the proper makefile for your extension. Whether you build the whole Mozilla tree or take this shortcut, you can build from now on by going to <code>/mozilla/$(MOZ_OBJDIR)/extensions/myextension/</code> and typing "make" on the command line. It should build your component without bothering with the rest of Mozilla. If everything works out, you’ll see your XPI file in the XPI staging area. You’ll also see the "exploded" version of the XPI (i.e. the unzipped directory structure) underneath <code>/mozilla/$(MOZ_OBJDIR)/dist/bin/extensions</code>. (If something goes wrong, figure out what, fix it and then come back here and add it to this article.)</p>
+
+<p>To make sure that the build really finished, launch Firefox and check that your extension is listed when you select Tools/Extensions. If you are using Firefox as your regular browser (and if you’re not, why not!?), you might be annoyed by the fact that you have to close regular Firefox before running your custom-built version. If so, try setting the <strong>MOZ_NO_REMOTE</strong> environment variable to "1" before running the development version of Firefox. You’ll also need to use a different profile for your development version:</p>
+
+<pre class="brush: shell">firefox -P <em>development</em>
+</pre>
+
+<p>Where <em>development</em> is replaced with the name of the extra profile you’ve created. This will let you run both versions of Firefox simultaneously, saving you oodles of time over the course of the build/test cycle.</p>
+
+<h4 id="No_Place_Like_Chrome">No Place Like Chrome</h4>
+
+<p>Yippee-ki-yay! Now you have an extension that does, well, absolutely nothing. It’s time to do something with those groovy components that you’ve implemented and registered. The simplest way to do this is to write some <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a> and <a href="/en/XUL" title="en/XUL">XUL</a> code. At this point, it would be very helpful to have a bit of experience <a href="/en/Extensions" title="en/Extensions">writing "regular" extensions</a> (i.e. without using custom C++ components). If you’ve never done this, I strongly recommend that you think of a cool idea for something simple that you’ve always wanted to tweak in Firefox and write it. Just displaying a new menu item that opens a "Hello, World!" dialog box would be already be a great exercise to get warmed up with.</p>
+
+<p>Assuming you know how to write XUL/JavaScript extensions, you’re aware that the most important stuff goes in the <code>chrome/</code> directory of your extension. Well, the fact that you’re also using C++ components doesn’t change that one whit. So now you need to create the normal <code>content/</code>, <code>locale/</code> and <code>skin/</code> directories in which to place your chrome files. Personally I like placing these directly under the root directory of my module, but I don’t suppose it makes any difference if you prefer putting them under a <code>chrome/</code> subdirectory or whatever. Let freedom reign!</p>
+
+<p>Once you’ve written the necessary chrome files (for instance, an overlay that adds a menu item to instantiate and use one of your components), you need to package them up as part of your extension. This is accomplished through the use of a <a href="/en/JAR_Manifests" title="en/JAR_Manifests">JAR Manifest</a>. For our simple extension example, this file might look something like this:</p>
+
+<pre>myextension.jar:
+% content myextension %content/
+% locale myextension en-US %locale/en-US/
+% skin myextension classic/1.0 %skin/classic/
+% overlay chrome://browser/content/browser.xul chrome://myextension/content/MyExtensionOverlay.xul
+ content/MyExtensionOverlay.js (content/MyExtensionOverlay.js)
+ content/MyExtensionOverlay.xul (content/MyExtensionOverlay.xul)
+ locale/en-US/MyExtension.dtd (locale/en-US/MyExtension.dtd)
+ locale/en-US/MyExtension.properties (locale/en-US/MyExtension.properties)
+ skin/classic/MyExtension.css (skin/classic/MyExtension.css)
+</pre>
+
+<p>Place this code in a file called <code>jar.mn</code> in the root directory of your extension, making sure that the paths in parentheses point to actual files (when interpreted relative to the root directory). You also have to make one small change to the makefile in the same directory, adding the following line:</p>
+
+<pre class="eval">USE_EXTENSION_MANIFEST = 1
+</pre>
+
+<p>This tells <code>make</code> to create a single manifest file called <code>chrome.manifest</code> instead of creating separate manifests with goofy names for each package.</p>
+
+<p>Now launch <code>make</code> again, and you should see a <code>chrome</code> subdirectory appear in your extension (<code>/mozilla/$(MOZ_OBJDIR)<a class="link-mailto" href="mailto:/dist/bin/extensions/myextension@mycompany.com" rel="freelink">/dist/bin/extensions/myextension@mycompany.com</a>/</code>). Note that the <code>chrome</code> directory contains a JAR (i.e. ZIP) file with all the chrome files listed in <code>jar.mn</code> as well as a complete directory structure mirroring that of the JAR file. The directory structure, however, is empty. Why? I don’t know. Don’t worry about this, the files in the JAR are the ones that are actually used.</p>
+
+<h4 id="Keeping_it_Complex">Keeping it Complex</h4>
+
+<p>If you’re developing a really complex extension with lots of <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a> components, you’ll probably want to divide your code up into smaller modules.</p>
+
+<h5 id="Kinda_Sorta_Complex_Extensions">Kinda, Sorta Complex Extensions</h5>
+
+<p>For a moderately complex extension, it’s probably enough just to subdivide the code into a single level of modules. Let’s assume that you have a <code>base/</code> module that defines a bunch of basic XPCOM components and an <code>advanced/</code> module that defines some chrome as well as other components that use the basic components. Your complete directory structure will look something like this:</p>
+
+<ul>
+ <li>myextension
+ <ul>
+ <li>base
+ <ul>
+ <li>public</li>
+ <li>src</li>
+ </ul>
+ </li>
+ <li>advanced
+ <ul>
+ <li>content</li>
+ <li>locale
+ <ul>
+ <li>en-US</li>
+ <li>...other locales...</li>
+ </ul>
+ </li>
+ <li>public</li>
+ <li>skin
+ <ul>
+ <li>classic</li>
+ <li>...other skins...</li>
+ </ul>
+ </li>
+ <li>src</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+</ul>
+
+<p>Other than that, nothing really changes. The makefiles in the <code>base/</code> and <code>advanced/</code> directories should look more or less like your original root makefile, remembering to change the <strong>DEPTH</strong> variable to account for the fact that they’ve moved a level further away from the Mozilla root. You also need to remove the <strong>DIST_FILES</strong> variable since that’s going to be in the top-level makefile. Every makefile that generates anything should define the <strong>XPI_NAME</strong> variable to make sure generated files go into your extension and not into the global <code>components/</code> directory. In fact, just define this in every makefile to be safe. You can use the same <strong>MODULE</strong> in both <code>base/</code> and <code>advanced/</code> so that all the generated include files go into the same directory, but make sure that you don’t use the same <strong>XPIDL_MODULE</strong> in the two <code>public/</code> directories or one of the component type libraries (i.e. XPT files) will overwrite the other one and all hell will break loose.</p>
+
+<p>Each module must also have a different value for the <strong>LIBRARY_NAME</strong> variable. This is the name of the generated dynamic library, so if we call the libraries "myBase" and "myAdvanced", we’ll end up with <code>myBase.dll</code> and <code>myAdvanced.dll</code> (on Windows, at least). And each of these modules is going to have a separate C++ file for registering components. So there will be two files that look like <code>myExtension.cpp</code> in the original example, say <code>Base.cpp</code> and <code>Advanced.cpp</code>. Finally, each module will obviously have its own <code>jar.mn</code>, though they can reference the same JAR filename and package name if you want all the chrome files to be organized in a single JAR file and package. The only file that really stays put is <code>install.rdf</code>, which still exists once and only once in the extension root directory.</p>
+
+<p>As for the top-level makefile, it will now look like this:</p>
+
+<pre>DEPTH = ../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+MODULE = myextension
+
+DIRS = base advanced
+
+XPI_NAME = myextension
+INSTALL_EXTENSION_ID = myextension@mycompany.com
+XPI_PKGNAME = myextension
+
+DIST_FILES = install.rdf
+
+include $(topsrcdir)/config/rules.mk
+</pre>
+
+<h5 id="Seriously_Complex_Extensions">Seriously Complex Extensions</h5>
+
+<p>At some point, even a single module may grow to the point where you want to divide it further into submodules. The difference between having separate modules and having a single module with separate submodules is that the submodules all share the same file for registering components (the famous <code>myExtension.cpp</code> file), and when compiled they create a single dynamic library. The decision to split a module into submodules is all about code organization; it doesn’t really affect the final product at all.</p>
+
+<p>To split a module into submodules, first create a subdirectory for each submodule. Then create an additional directory called <code>build/</code>. Each submodule will be configured to create a static library, and the <code>build/</code> directory will pull these libraries together to create a single dynamic component library. Confused? Here’s an example, showing just the <code>advanced/</code> subbranch of the <code>myextension/</code> directory:</p>
+
+<ul>
+ <li>advanced
+ <ul>
+ <li>build</li>
+ <li>intricate
+ <ul>
+ <li>public</li>
+ <li>src</li>
+ </ul>
+ </li>
+ <li>multifarious
+ <ul>
+ <li>public</li>
+ <li>src</li>
+ </ul>
+ </li>
+ <li>content</li>
+ <li>locale
+ <ul>
+ <li>en-US</li>
+ <li>...other locales...</li>
+ </ul>
+ </li>
+ <li>skin
+ <ul>
+ <li>classic</li>
+ <li>...other skins...</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+</ul>
+
+<p>As you can see, we’ve split <code>advanced/</code> into two submodules: <code>intricate/</code> and <code>multifarious/</code>, and we’ve added an additional <code>build/</code> subdirectory. We’ve left the chrome directories directly under <code>advanced/</code>, since they aren’t tied to any specific submodule. This means that <code>jar.mn</code> will stay in the same place.</p>
+
+<p>The <code>intricate/</code> and <code>multifarious/</code> makefiles will look a lot like the original <code>advanced/</code> makefile, but we’ll need to tweak them a bit. As always, we have to adjust the <strong>DEPTH</strong> variable since the makefiles are deeper in the directory structure. And we should change the <strong>LIBRARY_NAME</strong> to indicate that we’re generating a static library for each submodule. By convention the "_s" suffix is used for this purpose. So let’s call them "myIntricate_s" and "myMultifarious_s". Finally, we define the variable <strong>FORCE_STATIC_LIB</strong>, resulting in a makefile that starts something like this:</p>
+
+<pre>DEPTH = ../../../../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+MODULE = myextension
+LIBRARY_NAME = myIntricate_s
+FORCE_STATIC_LIB = 1
+USE_STATIC_LIBS = 1
+
+XPI_NAME = myextension
+
+...more stuff here...
+</pre>
+
+<p>The <code>build</code> makefile pulls together the static libraries generated by the submodules and creates a single (dynamic) component library:</p>
+
+<pre>DEPTH = ../../../..
+topsrcdir = @top_srcdir@
+srcdir = @srcdir@
+VPATH = @srcdir@
+
+include $(DEPTH)/config/autoconf.mk
+
+IS_COMPONENT = 1
+MODULE = myextension
+LIBRARY_NAME = myAdvanced
+USE_STATIC_LIBS = 1
+
+XPI_NAME = myextension
+
+DEFINES += XPCOM_GLUE
+
+SHARED_LIBRARY_LIBS = \
+ $(DIST)/lib/$(LIB_PREFIX)myIntricate_s.$(LIB_SUFFIX) \
+ $(DIST)/lib/$(LIB_PREFIX)myMultifarious_s.$(LIB_SUFFIX) \
+ $(DIST)/lib/$(LIB_PREFIX)xpcomglue_s.$(LIB_SUFFIX) \
+ $(DIST)/lib/$(LIB_PREFIX)xul.$(LIB_SUFFIX) \
+ $(DIST)/lib/$(LIB_PREFIX)nss3.$(LIB_SUFFIX) \
+ $(NULL)
+
+CPPSRCS = \
+ Advanced.cpp \
+ $(NULL)
+
+include $(topsrcdir)/config/rules.mk
+
+LOCAL_INCLUDES += \
+ -I$(srcdir)/../intricate/src \
+ -I$(srcdir)/../multifarious/src \
+ $(NULL)
+</pre>
+
+<p>The makefile in the <code>advanced/</code> directory should list the <code>intricate/</code>, <code>multifarious/</code> and <code>build/</code> directories in its <strong>DIRS</strong> variable. Make sure that <code>build/</code> comes last since it can’t create the component library until the other makefiles have completed.</p>
+
+<h3 id="Other_Topics">Other Topics</h3>
+
+<h4 id="Adding_Data_Files_to_Your_Extensions">Adding Data Files to Your Extensions</h4>
+
+<p>In some cases, you may wish to include additional files in your extension that don’t belong in the <code>chrome/</code> subdirectory. Examples might be database files or XML schemas. This can be achieved by adding a custom step to your makefile that copies the files from the source tree into the extension’s target directory.</p>
+
+<h5 id="Copying_Data_Files_Into_Target_Directory">Copying Data Files Into Target Directory</h5>
+
+<p>Let’s say that you have some data files containing statistical information that you want to include in your extension and make available to your components. You’ve placed these files, which have the extension .TXT, into a <code>stats/</code> subdirectory under your extension directory in the source tree. The following makefile rule can be used to copy these files into the final target directory of the extension:</p>
+
+<pre>export::
+ if test ! -d $(FINAL_TARGET)/stats; then \
+ $(NSINSTALL) -D $(FINAL_TARGET)/stats; \
+ fi
+ $(INSTALL) $(srcdir)/*.txt $(FINAL_TARGET)/stats
+</pre>
+
+<h5 id="Accessing_Data_Files_From_Components">Accessing Data Files From Components</h5>
+
+<p>The trick to accessing your data files is to figure out where the home directory of your extension is. Rumor has it that at some future date, this will possible through the <code><a href="/en/XPCOM_Interface_Reference/nsIExtensionManager" title="en/XPCOM_Interface_Reference/nsIExtensionManager">nsIExtensionManager</a></code> interface or something similar. In the meantime, there is a simple and reliable hack that can be used to achieve this. In the implementation of any JavaScript XPCOM component, there is a special <strong>__LOCATION__</strong> (two leading and two trailing underscores) symbol that points to the component’s implementation file. So you can write a simple component which deduces the root directory of your extensions by extrapolating from its location.</p>
+
+<p><a class="external" href="http://www.builderau.com.au/program/soa/Creating_XPCOM_components_with_JavaScript/0,39024614,39206503,00.htm">This article</a> explains how to create an XPCOM component in JavaScript. You’ll need an IDL file for an interface that looks something like this:</p>
+
+<pre>interface myILocation : nsISupports
+{
+ readonly attribute nsIFile locationFile;
+};
+</pre>
+
+<p>Place the IDL file in the <code>public/</code> directory of your project or subproject. In the <code>src/</code> directory, place the JavaScript file that implements the component. The component implementation will include the methods for retrieving the path or file for the extension’s home directory:</p>
+
+<pre class="brush: js">myLocation.prototype =
+{
+ QueryInterface: function(iid)
+ {
+ if (iid.equals(nsISupports))
+ return this;
+ if (iid.equals(myILocation))
+ return this;
+
+ Components.returnCode = Components.results.NS_ERROR_NO_INTERFACE;
+ return null;
+ },
+
+ get locationFile()
+ {
+ return __LOCATION__.parent.parent;
+ }
+}
+</pre>
+
+<p>This assumes that the component resides in a subdirectory of the extension directory (by convention, this directory is called <code>components/</code>). The <code>parent</code> property of <strong>__LOCATION__</strong> returns the <code>components/</code>, and the <code>parent</code> of this is the extension directory.</p>
+
+<p>The last step is to modify the makefile of the source directory where you placed your JavaScript file so that it is copied into the appropriate location in the extension:</p>
+
+<pre>export::
+ $(INSTALL) $(srcdir)/*.js $(FINAL_TARGET)/components
+</pre>
+
+<p>Now you can instantiate an instance of this component and use the <code>locationFile</code> property to get an <code><a href="/en/XPCOM_Interface_Reference/nsIFile" title="en/XPCOM_Interface_Reference/nsIFile">nsIFile</a></code> interface that points to your extension’s home directory.</p>
+
+<h4 id="Using_Third-Party_Libraries">Using Third-Party Libraries</h4>
+
+<p>For more sophisticated extensions, you may want to integrate third-party libraries that provide specialized functionality for database connectivity, image processing, networking and the like. If you want your extension to run on all Firefox platforms, you will need to have the source code for the library in question, so I assume that this is available.</p>
+
+<p>The most convenient approach from the perspective of the development cycle is to create a Mozilla-style makefile for the library. This works well for libraries that have a straightforward make process without extensive configuration. A good example of this is the SQLite library included in the Mozilla build tree at <code>db/sqlite</code>. By adapting the makefile in this way, the library is created as part of the standard Mozilla build process, which eliminates additional build steps. The downside is that you will need to update the modified makefile any time a new version of the library is released.</p>
+
+<p>For libraries that have complex configuration processes, use a non-standard compiler or have other special characteristics, it may be unfeasible to create a Mozilla-compliant makefile. In this case, I would recommend placing the entire library distribution inside the project or subproject that uses it. So if library <code>acmelib</code> is used inside the <code>multifarious/</code> subproject in the above example, it would be placed as a subdirectory underneath that subproject (at the same level as <code>public/</code> and <code>src/</code>).</p>
+
+<p>Of course, this means that you will have to build <code>acmelib</code> manually on all platforms before launching the Mozilla build. But at least you can then refer to include files and import libraries from your component using relative paths.</p>
+
+<h4 id="Building_for_Multiple_Platforms">Building for Multiple Platforms</h4>
+
+<p>TODO</p>
+
+<div class="originaldocinfo">
+<h2 id="Original_Document_Information">Original Document Information</h2>
+
+<ul>
+ <li>Author: Matthew Gertner - July 26, 2005.</li>
+ <li>Permission granted to migrate in Jan 2006, including permission to relicense under the CC:By-SA.</li>
+ <li>Original Source: <a class="external" href="http://www.allpeers.com/blog/creating-complex-firefox-extensions/" rel="freelink">http://www.allpeers.com/blog/creatin...ox-extensions/</a></li>
+</ul>
+</div>
+
+<p> </p>
diff --git a/files/ja/mozilla/add-ons/firefox_for_android/index.html b/files/ja/mozilla/add-ons/firefox_for_android/index.html
new file mode 100644
index 0000000000..9adfb1d464
--- /dev/null
+++ b/files/ja/mozilla/add-ons/firefox_for_android/index.html
@@ -0,0 +1,79 @@
+---
+title: Android用Firefoxのアドオン
+slug: Mozilla/Add-ons/Firefox_for_Android
+translation_of: Archive/Add-ons/Legacy_Firefox_for_Android
+---
+<p>{{LegacyAddonsNotice}}{{AddonSidebar}}</p>
+
+<div class="note">
+<p>このページと、そのサブページは、古い技術を使った Android 用 Firefox のアドオン開発の方法を記しています。この技術は Firefox 57 で動作が停止します。 Android 用 Firefox のアドオン開発するのに <a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a> を使用可能です。</p>
+</div>
+
+<p>既にデスクトップ版のFirefoxで動いているアドオンは<strong>修正を加えないとAndroid版で動かない</strong>ので注意してください</p>
+
+<ul>
+ <li>UIに可視的なXULはありません。なので、UIを作るためにoverlayを使用することはできません。</li>
+ <li><code>gBrowser</code>のようなオブジェクトや内部コードなどは存在しません。内部について学ぶにはAndroid用のFirefoxの <a class="external external-icon" href="https://dxr.mozilla.org/mozilla-central/source/mobile/android/chrome/content/browser.js" title="http://mxr.mozilla.org/mozilla-central/source/mobile/android/chrome/content/browser.js"><code>browser.js</code></a> ファイルを見てください。だいたい同じ低レイヤーな機能が存在しています。</li>
+ <li>ネイティブ Android UI を使用するための <code>nsIPromptService</code> や <code>nsIAlertsService</code> のようなサービスが実装されています。</li>
+ <li><a href="https://developer.mozilla.org/en/Extensions/Mobile/API/NativeWindow" title="en/Extensions/Mobile/NativeWindow"><code>NativeWindow</code></a> と呼ばれる、ネイティブ Android UI のパーツを操作する、シンプルなJS オブジェクトがあります。 </li>
+</ul>
+
+<p>以下の記事はAndroid用のFirefoxの拡張機能を開発する手助けになります。加えてすべてのMozilla アプリケーションに適用できる <a class="internal" href="/ja/Add-ons" title="En/Extensions">general extension documentation</a> も参照してください。</p>
+
+<div class="column-container">
+<div class="column-half">
+<h3 id="チュートリアル">チュートリアル</h3>
+
+<dl>
+ <dt><a href="https://developer.mozilla.org/ja/Add-ons/Firefox_for_Android/Prerequisites">事前準備</a></dt>
+ <dd>アドオンを書いてデバイスに送り、直接つながっているデバイスでテストするための、あなたのデスクトップ側の設定です。</dd>
+ <dt><a href="https://developer.mozilla.org/ja/docs/Tools/Remote_Debugging/Debugging_Firefox_for_Android_with_WebIDE">WebIDEを使用してAndroid用Firefoxアドオンをデバッグする</a></dt>
+ <dd>前提条件のチュートリアルからの記事です。アドオンのデバッグやスニペットテストはWebIDEなしでは不可能です。</dd>
+ <dt><a href="https://developer.mozilla.org/ja/Add-ons/Firefox_for_Android/Walkthrough">Walkthrough</a></dt>
+ <dd>Android用のFirefoxのシンプルなアドオンを開発し、パッケージ化して、インストールします。</dd>
+ <dt><a href="https://developer.mozilla.org/ja/Add-ons/Firefox_for_Android/Firefox_Hub_Walkthrough">Firefox Hub Walkthrough</a></dt>
+ <dd>Android用のFirefoxのホームページにコンテンツを加えるFirefox Hubアドオンをどのようにして開発するかの解説です。</dd>
+ <dt><a href="https://developer.mozilla.org/ja/Add-ons/SDK/Tutorials/Mobile_development">Add-on SDK</a></dt>
+ <dd>Add-on SDKを使用したAndroid用のFirefoxのアドオンを開発する方法です。</dd>
+</dl>
+
+<h3 id="サンプルコード">サンプルコード</h3>
+
+<dl>
+ <dt> </dt>
+ <dt><a href="https://developer.mozilla.org/ja/Add-ons/Firefox_for_Android/Code_snippets">Code Snippets</a></dt>
+ <dd>一般的なタスクのためのコードサンプル。</dd>
+ <dt><a href="https://developer.mozilla.org/ja/Add-ons/Firefox_for_Android/Initialization_and_Cleanup">初期化とクリーンアップ</a></dt>
+ <dd>アドオンを開始時に初期化したり、シャットダウン時にクリーンアップする方法の解説です。</dd>
+ <dt><a href="https://github.com/mozilla/firefox-for-android-addons">Firefox for Android Add-ons Github Repo</a></dt>
+ <dd>Android用Firefoxのアドオンを作成する手助けとなる、JS モジュールやサンプルコード、ボイラープレートリポジトリのコレクションです。</dd>
+</dl>
+</div>
+
+<div class="column-half">
+<h3 id="API_リファレンス">API リファレンス</h3>
+
+<dl>
+ <dt><a class="internal" href="/ja/Add-ons/Firefox_for_Android/API/NativeWindow">NativeWindow</a></dt>
+ <dd>ネイティブ Androidの UI widgetを作成します。</dd>
+ <dt><a href="/ja/Add-ons/Firefox_for_Android/API/BrowserApp">BrowserApp</a></dt>
+ <dd>ブラウザーのタブとその内容にアクセスします。</dd>
+ <dt><a class="internal" href="/ja/Add-ons/Firefox_for_Android/API/Prompt.jsm">Prompt.jsm</a></dt>
+ <dd>ネイティブ Android の dialog を表示します。</dd>
+ <dt><a href="/ja/Add-ons/Firefox_for_Android/API/HelperApps.jsm">HelperApps.jsm</a></dt>
+ <dd>システムにインストールされているネイティブアプリを照会して起動します。</dd>
+ <dt><a href="/ja/Add-ons/Firefox_for_Android/API/Notifications.jsm">Notifications.jsm</a></dt>
+ <dd>Android システム通知用の拡張プロパティを使います。</dd>
+ <dt><a href="/ja/Add-ons/Firefox_for_Android/API/Home.jsm">Home.jsm</a></dt>
+ <dd>ホームページをカスタマイズします。</dd>
+ <dt><a href="/ja/Add-ons/Firefox_for_Android/API/HomeProvider.jsm">HomeProvider.jsm</a></dt>
+ <dd>ホームページに表示するデータを保存します。</dd>
+ <dt><a href="https://developer.mozilla.org/ja/Add-ons/Firefox_for_Android/API/PageActions.jsm">PageActions.jsm</a></dt>
+ <dd>URLバーにページ固有のアクションを表示します。</dd>
+ <dt><a href="https://developer.mozilla.org/ja/docs/Mozilla/JavaScript_code_modules/JNI.jsm">JNI.jsm</a></dt>
+ <dd>アドオンからネイティブ Java Android API をタップします。</dd>
+ <dt><a href="https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/Firefox_for_Android/API/Sound.jsm">Sound.jsm</a></dt>
+ <dd>ブラウザーから簡単に音を鳴らします。</dd>
+</dl>
+</div>
+</div>
diff --git a/files/ja/mozilla/add-ons/index.html b/files/ja/mozilla/add-ons/index.html
new file mode 100644
index 0000000000..13654a260d
--- /dev/null
+++ b/files/ja/mozilla/add-ons/index.html
@@ -0,0 +1,100 @@
+---
+title: アドオン
+slug: Mozilla/Add-ons
+tags:
+ - Add-ons
+ - Extension
+ - Extensions
+ - Landing
+ - Mozilla
+translation_of: Mozilla/Add-ons
+---
+<div>{{AddonSidebar}}</div>
+
+<div> </div>
+
+<p><span class="seoSummary">開発者はアドオン (add-on) を作成して Firefox を拡張したり機能を変更したりできます。</span> アドオンは JavaScript、HTML、CSS といったWeb標準技術と、幾つかの専用JavaScript APIを使って作成します。アドオンは、主に以下のようなことを実現できます。</p>
+
+<ul>
+ <li>特定のウェブサイトの見た目や内容を変更する</li>
+ <li>Firefoxのユーザーインタフェースを変更する</li>
+ <li>Firefoxに新しい機能を追加する</li>
+</ul>
+
+<p>アドオンには幾つかの種類がありますが、もっとも一般的なのは<a href="/ja/docs/Extensions" title="Extensions">拡張機能 (extension)</a>です。</p>
+
+<h2 id="Developing_extensions" name="Developing_extensions">拡張機能の開発</h2>
+
+<p>以前はFirefoxの拡張機能を開発するためのツールセットが幾つかありましたが、2017年11月からは <a href="/ja/docs/Mozilla/Add-ons/WebExtensions">WebExtensions API</a> を使って拡張機能をビルドするようにしなければいけません。 それ以外のツールセット(例えば overlay add-on, bootstrapped add-on, add-on SDK)はもうサポートされません。</p>
+
+<p>新しく拡張機能を作成するには <a href="https://developer.mozilla.org/ja/Add-ons/WebExtensions">WebExtensions API</a> を使いましょう。</p>
+
+<p>WebExtensions APIを使ってFirefox向けに作った拡張機能は、ブラウザ間の互換性を持つように設計されています。大抵の場合、Chrome、Edge、Operaでも修正無しか、わずかな修正で動作するでしょう。マルチプロセスFirefoxとも完全な互換性があります。<br>
+ <br>
+ 現在の<a href="/ja/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">各ブラウザのAPIサポート状況</a>もご覧下さい。私たちは開発者のニーズに応えて新しいAPIの設計・実装を続けています。<br>
+ <br>
+ ほとんどの WebExtensions API は、Android向けのFirefoxでも利用可能です。</p>
+
+<h3 id="Migrate_an_existing_extension" name="Migrate_an_existing_extension">既存の拡張機能を移行するには</h3>
+
+<p>もしあなたが既存の拡張機能(XUL overlay、bootstrapped、add-on SDK を使ったもの)を保守しているなら、WebExtension APIを使って移植できます。 MDNの<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Porting_a_legacy_Firefox_add-on">関連記事</a>をご覧ください。</p>
+
+<p>移行全般のサポート情報は、<a href="https://wiki.mozilla.org/Add-ons/developer/communication">Wikiページ</a>を見てください。</p>
+
+<h2 id="Publishing_add-ons" name="Publishing_add-ons">アドオンを公開するには</h2>
+
+<p><a href="https://addons.mozilla.org">Addons.mozilla.org</a> は、「AMO」という名前で知られるMozilla公式サイトです。開発者はアドオンを掲載し、ユーザーはアドオンを探すことができます。アドオンを開発したらAMOにアップロードして、ユーザーやクリエイターのコミュニティに注目してもらいましょう。</p>
+
+<p>開発したアドオンをAMOに掲載することは必須ではありませんが、Mozillaが署名しない限り、ユーザーはインストールできません。</p>
+
+<p>アドオンを公開する手順の概要については、<a href="/ja/Add-ons/Distribution">アドオンに署名して配布するには</a>をご覧ください。</p>
+
+<h2 id="Other_types_of_add-ons" name="Other_types_of_add-ons">その他の種類のアドオン</h2>
+
+<p>拡張機能の他にも、ユーザーがFirefoxをカスタマイズするためのアドオンが何種類かあります。</p>
+
+<ul>
+ <li><a href="/Add-ons/Themes/Background">テーマ (Lightweight themes)</a> を使うと、限定的ですが簡単にFirefoxをカスタマイズできます</li>
+ <li><a href="/Add-ons/Firefox_for_Android">Mobile add-ons</a> はAndroid向け Firefox 用のアドオンです。ただし、これらのAPIは一部の基盤技術が非推奨に変更される方向ですので、ご注意下さい。将来は、Android向けFirefoxでもWebExtensions APIを一定範囲でフルサポートする予定です。</li>
+ <li><a href="/ja/docs/Creating_OpenSearch_plugins_for_Firefox">Search engine plugins</a> は、ブラウザの検索バーに新しい検索エンジンを追加します。</li>
+ <li><a href="/ja/docs/Mozilla/Creating_a_spell_check_dictionary_add-on">User dictionaries</a> は、色々な言語のスペルチェックを可能にします。</li>
+ <li><a href="https://support.mozilla.org/kb/use-firefox-interface-other-languages-language-pack">Language packs</a> は、Firefoxのユーザーインタフェースで更に多くの言語をサポートできるようにします。</li>
+</ul>
+
+<hr>
+<h2 id="Contact_us" name="Contact_us">Contact us</h2>
+
+<p>疑問や質問、アドオン関連の最新ニュース、フィードバックなどは、下記のリンクからどうぞ。</p>
+
+<h3 id="Add-ons_forum" name="Add-ons_forum">アドオン フォーラム</h3>
+
+<p><a href="https://discourse.mozilla.org/c/add-ons">Add-ons Discourse forum</a> は、アドオン開発全般の議論や質問に使って下さい。</p>
+
+<h3 id="Mailing_lists" name="Mailing_lists">メーリング リスト</h3>
+
+<p><strong>dev-addons</strong> は、アドオン関連するシステムの議論(WebExtensionsシステムやAMOの開発を含む)に使ってください。</p>
+
+<ul>
+ <li><a href="https://mail.mozilla.org/listinfo/dev-addons">dev-addons list info</a></li>
+ <li><a href="https://mail.mozilla.org/pipermail/dev-addons/">dev-addons archives</a></li>
+</ul>
+
+<h3 id="IRC" name="IRC">IRC</h3>
+
+<p>IRCがお好きなら、こちらで連絡できます。</p>
+
+<ul>
+ <li><a href="irc://irc.mozilla.org/addons">#addons</a> (add-ons エコシステムの議論)</li>
+ <li><a href="irc://irc.mozilla.org/extdev">#extdev</a> (add-on 開発一般の議論)</li>
+ <li><a href="irc://irc.mozilla.org/webextensions">#webextensions</a> (特に WebExtensions API in 関連の議論)</li>
+</ul>
+
+<h3 id="Report_problems" name="Report_problems">問題を報告する</h3>
+
+<h4 id="Security_vulnerabilities" name="Security_vulnerabilities">セキュリティ欠陥</h4>
+
+<p>アドオンのセキュリティ欠陥を見つけた場合は、それがMozillaのサイトで提供しているものでなくても、私たちまでお知らせ下さい。私たちは開発者と協力して問題を修正します。 連絡は<a href="http://www.mozilla.org/projects/security/security-bugs-policy.html">非公開で</a>、 <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=addons.mozilla.org&amp;component=Add-on%20Security&amp;maketemplate=Add-on%20Security%20Bug&amp;bit-23=1&amp;rep_platform=All&amp;op_sys=All">Bugzilla</a> または <a href="mailto:amo-admins@mozilla.org">amo-admins@mozilla.org 宛てのメール</a>でお願いします。</p>
+
+<h4 id="Bugs_on_addons.mozilla.org_(AMO)" name="Bugs_on_addons.mozilla.org_(AMO)">サイト addons.mozilla.org (AMO)のバグ</h4>
+
+<p>もしサイト自体の問題を見つけたら、是非修正したいと思います。 <a href="https://github.com/mozilla/addons/issues/new">バグ報告して</a>、できるだけ多くの詳細を含めてください。</p>
diff --git a/files/ja/mozilla/add-ons/overlay_extensions/index.html b/files/ja/mozilla/add-ons/overlay_extensions/index.html
new file mode 100644
index 0000000000..1598fd8ca3
--- /dev/null
+++ b/files/ja/mozilla/add-ons/overlay_extensions/index.html
@@ -0,0 +1,53 @@
+---
+title: Legacyアドオン
+slug: Mozilla/Add-ons/Overlay_Extensions
+translation_of: Archive/Add-ons/Overlay_Extensions
+---
+<p>{{AddonSidebar}}</p>
+
+<p>このページは下記の機能を使っているGecko-baseのアプリケーションのアドオンを開発するための方法のドキュメントへのリンクです。</p>
+
+<ul>
+ <li>インターフェースを指定するためのXUL overlays</li>
+ <li><code>アプリケーションやコンテンツとの対話に</code><a href="/en-US/docs/XUL/tabbrowser"><code>tabbrowser</code></a>や<a href="/en-US/docs/Mozilla/JavaScript_code_modules">JavaScript modules</a>のような、特権コードが使用できるAPI。</li>
+</ul>
+
+<p>Prior to Firefox 4, and the Gecko 2 engine that powers it, this was the only way to develop extensions. This methodology has largely been superseded by <a href="/en-US/docs/Extensions/Bootstrapped_extensions">restartless extensions</a>, and the <a href="/en-US/Add-ons/SDK">Add-on SDK</a>, which is built on top of them. The privileged JavaScript APIs described here can still be used in these newer types of add-ons.</p>
+
+<h2 id="XUL_School">XUL School</h2>
+
+<p><a href="/en-US/Add-ons/Overlay_Extensions/XUL_School">XUL School</a>は体系的なアドオン開発のチュートリアルです。これはfirefoxアドオン開発のチュートリアルですが、他のおおよそのGecko-baseのアプリケーションに応用できます。</p>
+
+<h2 id="その他の情報">その他の情報</h2>
+
+<div class="column-container">
+<div class="column-half">
+<dl>
+ <dt><a href="/en-US/Mozilla/Add-ons/Setting_up_extension_development_environment">Setting up your environment</a></dt>
+ <dd>拡張機能を開発するための環境設定です。</dd>
+ <dt><a href="/en-US/docs/XUL">XUL</a></dt>
+ <dd>XUL extensionを使ったユーザーインターフェースを記述するチュートリアルとリファレンスです。</dd>
+ <dt><a href="/en-US/Mozilla/Add-ons/Code_snippets">Code snippets</a></dt>
+ <dd>Sample code for many of the things you'll want to do.</dd>
+ <dt><a href="/en-US/Mozilla/Add-ons/Installing_extensions">Installing extensions</a></dt>
+ <dd>How to install an extension by copying the extension files into the application's install directory.</dd>
+ <dt><a href="/en-US/Add-ons/Overlay_extensions/Firefox_addons_developer_guide">Firefox add-ons developer guide</a></dt>
+ <dd>オーバーレイextension(bootstrap extensionかな?)の開発ガイドです。</dd>
+</dl>
+</div>
+
+<div class="column-half">
+<dl>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules">JavaScript code modules</a></dt>
+ <dd>アドオン開発者の使用できるJavaScript モジュールです。</dd>
+ <dt><a href="/en-US/Mozilla/Add-ons/Inline_Options">Extension preferences</a></dt>
+ <dd>How to specify the preferences for your extension that will appear in the Add-ons Manager.</dd>
+ <dt><a href="/en-US/Mozilla/Add-ons/Extension_Packaging">Extension packaging</a></dt>
+ <dd>アドオンのパッケージングとインストールの方法です。</dd>
+ <dt><a href="/en-US/Mozilla/Add-ons/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System">Binary Firefox extensions</a></dt>
+ <dd>Firefoxのバイナリ拡張を作成します。</dd>
+</dl>
+</div>
+</div>
+
+<p> </p>
diff --git a/files/ja/mozilla/add-ons/sdk/guides/content_scripts/index.html b/files/ja/mozilla/add-ons/sdk/guides/content_scripts/index.html
new file mode 100644
index 0000000000..071cf1fb6f
--- /dev/null
+++ b/files/ja/mozilla/add-ons/sdk/guides/content_scripts/index.html
@@ -0,0 +1,484 @@
+---
+title: Content Scripts
+slug: Mozilla/Add-ons/SDK/Guides/Content_Scripts
+translation_of: Archive/Add-ons/Add-on_SDK/Guides/Content_Scripts
+---
+<article id="wikiArticle">
+<p><span class="seoSummary">アドオンの多くはウェブページへアクセスし修正する必要があります。しかしアドオンのメインのコードは直接ウェブコンテンツにアクセスできません。 代わりにアドオン SDK は <em>content scripts </em>と呼ばれる別のスクリプトからウェブコンテンツにアクセスします。このページでは content scripts の開発・実装方法を記述します。</span></p>
+
+<p>SDK を扱う上で content scripts はあなたを混乱させてしまうかもしれませんが、おそらくそれを使わなければなりません。下記は5つの基本原則です:</p>
+
+<ul>
+ <li>"main.js" を含むアドオンのメインコードやその他の "lib" 以下のモジュールは、SDK の<a href="/en-US/Add-ons/SDK/High-Level_APIs">高水準</a>または<a href="/en-US/Add-ons/SDK/Low-Level_APIs">低水準</a>なAPIを利用できますが、ウェブコンテンツには直接アクセスできません</li>
+ <li>content scripts は<a href="/en-US/Add-ons/SDK/Guides/Two_Types_of_Scripts#API_Access_for_Add-on_Code_and_Content_Scripts"> SDK の API を使用できません</a> (no access to globals <code>exports</code>, <code>require</code>) が、ウェブコンテンツに直接アクセスできます</li>
+ <li><a href="/en-US/Add-ons/SDK/High-Level_APIs/page-mod">page-mod</a> や <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs">tabs</a> のような content scripts を扱う SDK の API は、アドオンのメインコードから content scripts をウェブページにロードする機能を提供します</li>
+ <li>content scripts は文字列として読み込まれますが、アドオンの "data" ディレクトリ以下に別々のファイルとして保存します。jpm はデフォルトでは "data" を作らないので、 自分でディレクトリを作成し content scripts を置く必要があります</li>
+ <li>message-passing API でメインコードと content scripts とでお互いにコミュニケーションすることができます</li>
+</ul>
+
+<p>This complete add-on illustrates all of these principles. Its "main.js" attaches a content script to the current tab using the <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs">tabs</a> module. In this case the content script is passed in as a string. The content script simply replaces the content of the page:</p>
+
+<pre class="brush: js">// main.js
+var tabs = require("sdk/tabs");
+var contentScriptString = 'document.body.innerHTML = "&lt;h1&gt;this page has been eaten&lt;/h1&gt;";'
+
+tabs.activeTab.attach({
+ contentScript: contentScriptString
+});</pre>
+
+<p>The following high-level SDK modules can use content scripts to modify web pages:</p>
+
+<ul>
+ <li><a href="/en-US/Add-ons/SDK/High-Level_APIs/page-mod">page-mod</a>: enables you to attach content scripts to web pages that match a specific URL pattern.</li>
+ <li><a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs">tabs</a>: exports a <code>Tab</code> object for working with a browser tab. The <code>Tab</code> object includes an <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#attach(options)"><code>attach()</code></a> function to attach a content script to the tab.</li>
+ <li><a href="/en-US/Add-ons/SDK/High-Level_APIs/page-worker">page-worker</a>: lets you retrieve a web page without displaying it. You can attach content scripts to the page, to access and manipulate the page's DOM.</li>
+ <li><a href="/en-US/Add-ons/SDK/High-Level_APIs/context-menu">context-menu</a>: use a content script to interact with the page in which the menu is invoked.</li>
+</ul>
+
+<p>Additionally, some SDK user interface components - panel, sidebar, frame - are specified using HTML, and use separate scripts to interact with this content. In many ways these are like content scripts, but they're not the focus of this article. To learn about how to interact with the content for a given user interface module, please see the module-specific documentation: <a href="/en-US/Add-ons/SDK/High-Level_APIs/panel">panel</a>, <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_sidebar">sidebar</a>, <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_frame">frame</a>.</p>
+
+<p>Almost all the examples presented in this guide are available as complete, but minimal, add-ons in the <a href="https://github.com/mdn/addon-sdk-content-scripts">addon-sdk-content-scripts repository</a> on GitHub.</p>
+
+<h2 id="Loading_content_scripts">Loading content scripts</h2>
+
+<article id="wikiArticle">
+<p>You can load a single script by assigning a string to either the <code>contentScript</code> or the <code>contentScriptFile</code> option. The <code>contentScript</code> option treats the string itself as a script:</p>
+
+<pre class="brush: js">// main.js
+
+var pageMod = require("sdk/page-mod");
+var contentScriptValue = 'document.body.innerHTML = ' +
+ ' "&lt;h1&gt;Page matches ruleset&lt;/h1&gt;";';
+
+pageMod.PageMod({
+ include: "*.mozilla.org",
+ contentScript: contentScriptValue
+});</pre>
+
+<p>The <code>contentScriptFile</code> option treats the string as a resource:// URL pointing to a script file stored in your add-on's <code>data</code> directory. jpm doesn't make a "data" directory by default, so you must add it and put your content scripts in there.</p>
+
+<p>This add-on supplies a URL pointing to the file "content-script.js", located in the <code>data</code> subdirectory under the add-on's root directory:</p>
+
+<pre class="brush: js">// main.js
+
+var data = require("sdk/self").data;
+var pageMod = require("sdk/page-mod");
+
+pageMod.PageMod({
+ include: "*.mozilla.org",
+ contentScriptFile: data.url("content-script.js")
+});</pre>
+
+<pre class="brush: js">// content-script.js
+
+document.body.innerHTML = "&lt;h1&gt;Page matches ruleset&lt;/h1&gt;";</pre>
+
+<div class="note">
+<p>From Firefox 34 onwards, you can use "./content-script.js" as an alias for self.data.url("content-script.js"). So you can rewrite the above main.js code like this:</p>
+
+<pre class="brush: js">var pageMod = require("sdk/page-mod");
+
+pageMod.PageMod({
+ include: "*.mozilla.org",
+ contentScriptFile: "./content-script.js"
+});
+</pre>
+</div>
+
+<div class="warning">
+<p>Unless your content script is extremely simple and consists only of a static string, don't use <code>contentScript</code>: if you do, you may have problems getting your add-on approved on AMO.</p>
+
+<p>Instead, keep the script in a separate file and load it using <code>contentScriptFile</code>. This makes your code easier to maintain, secure, debug and review.</p>
+</div>
+
+<p>You can load multiple scripts by passing an array of strings to either <code>contentScript</code> or <code>contentScriptFile</code>:</p>
+
+<pre class="brush: js">// main.js
+
+var tabs = require("sdk/tabs");
+
+tabs.on('ready', function(tab) {
+ tab.attach({
+ contentScript: ['document.body.style.border = "5px solid red";', 'window.alert("hi");']
+ });
+});
+</pre>
+
+<pre class="brush: js">// main.js
+
+var data = require("sdk/self").data;
+var pageMod = require("sdk/page-mod");
+
+pageMod.PageMod({
+ include: "*.mozilla.org",
+ contentScriptFile: [data.url("jquery.min.js"), data.url("my-content-script.js")]
+});</pre>
+
+<p>If you do this, the scripts can interact directly with each other, just like scripts loaded by the same web page.</p>
+
+<p>You can also use <code>contentScript</code> and <code>contentScriptFile</code> together. If you do this, scripts specified using <code>contentScriptFile</code> are loaded before those specified using <code>contentScript</code>. This enables you to load a JavaScript library like jQuery by URL, then pass in a simple script inline that can use jQuery:</p>
+
+<pre class="brush: js">// main.js
+
+var data = require("sdk/self").data;
+var pageMod = require("sdk/page-mod");
+
+var contentScriptString = '$("body").html("&lt;h1&gt;Page matches ruleset&lt;/h1&gt;");';
+
+pageMod.PageMod({
+ include: "*.mozilla.org",
+ contentScript: contentScriptString,
+ contentScriptFile: data.url("jquery.js")
+});</pre>
+
+<div class="warning">
+<p>Unless your content script is extremely simple and consists only of a static string, don't use <code>contentScript</code>: if you do, you may have problems getting your add-on approved on AMO.</p>
+
+<p>Instead, keep the script in a separate file and load it using <code>contentScriptFile</code>. This makes your code easier to maintain, secure, debug and review.</p>
+</div>
+
+<h3 id="Controlling_when_to_attach_the_script">Controlling when to attach the script</h3>
+
+<p>The <code>contentScriptWhen</code> option specifies when the content script(s) should be loaded. It takes one of:</p>
+
+<ul>
+ <li><code>"start"</code>: load the scripts immediately after the document element for the page is inserted into the DOM. At this point the DOM content hasn't been loaded yet, so the script won't be able to interact with it.</li>
+ <li><code>"ready"</code>: load the scripts after the DOM for the page has been loaded: that is, at the point the <a href="https://developer.mozilla.org/en/Gecko-Specific_DOM_Events">DOMContentLoaded</a> event fires. At this point, content scripts are able to interact with the DOM content, but externally-referenced stylesheets and images may not have finished loading.</li>
+ <li><code>"end"</code>: load the scripts after all content (DOM, JS, CSS, images) for the page has been loaded, at the time the <a href="https://developer.mozilla.org/en/DOM/window.onload">window.onload event</a> fires.</li>
+</ul>
+
+<p>The default value is <code>"end"</code>.</p>
+
+<p>Note that <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs#attach(options)"><code>tab.attach()</code></a> doesn't accept contentScriptWhen, because it's generally called after the page has loaded.</p>
+
+<h3 id="Passing_configuration_options">Passing configuration options</h3>
+
+<p>The <code>contentScriptOptions</code> is a JSON object that is exposed to content scripts as a read-only value under the <code><a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/self">self</a>.options</code> property:</p>
+
+<pre class="brush: js">// main.js
+
+var tabs = require("sdk/tabs");
+
+tabs.on('ready', function(tab) {
+ tab.attach({
+ contentScript: 'window.alert(self.options.message);',
+ contentScriptOptions: {"message" : "hello world"}
+ });
+});</pre>
+
+<p>Any kind of jsonable value (object, array, string, etc.) can be used here.</p>
+
+<h2 id="Accessing_the_DOM">Accessing the DOM</h2>
+
+<p>Content scripts can access the DOM of a page, of course, just like any scripts that the page has loaded (page scripts). But content scripts are insulated from page scripts:</p>
+
+<ul>
+ <li>content scripts don't see any JavaScript objects added to the page by page scripts</li>
+ <li>if a page script has redefined the behavior of some DOM object, the content script sees the original behavior.</li>
+</ul>
+
+<p>The same applies in reverse: page scripts can't see JavaScript objects added by content scripts.</p>
+
+<p>For example, consider a page that adds a variable <code>foo</code> to the <code>window</code> object using a page script:</p>
+
+<pre class="brush: html">&lt;!DOCTYPE html"&gt;
+&lt;html&gt;
+ &lt;head&gt;
+ &lt;script&gt;
+ window.foo = "hello from page script"
+ &lt;/script&gt;
+ &lt;/head&gt;
+&lt;/html&gt;</pre>
+
+<p>Another script loaded into the page after this script will be able to access <code>foo</code>. But a content script will not:</p>
+
+<pre class="brush: js">// main.js
+
+var tabs = require("sdk/tabs");
+var mod = require("sdk/page-mod");
+var self = require("sdk/self");
+
+var pageUrl = self.data.url("page.html")
+
+var pageMod = mod.PageMod({
+ include: pageUrl,
+ contentScript: "console.log(window.foo);"
+})
+
+tabs.open(pageUrl);</pre>
+
+<pre>console.log: my-addon: null
+</pre>
+
+<p>There are good reasons for this insulation. First, it means that content scripts don't leak objects to web pages, potentially opening up security holes. Second, it means that content scripts can create objects without worrying about whether they might clash with objects added by page scripts.</p>
+
+<p>This insulation means that, for example, if a web page loads the jQuery library, then the content script won't be able to see the <code>jQuery</code> object added by the library - but the content script can add its own <code>jQuery</code> object, and it won't clash with the page script's version.</p>
+
+<h3 id="Interacting_with_page_scripts">Interacting with page scripts</h3>
+
+<p>Usually the insulation between content scripts and page scripts is what you want. But sometimes you might want to interact with page scripts: you might want to share objects between content scripts and page scripts or to send messages between them. If you need to do this, read about <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/Interacting_with_page_scripts">interacting with page scripts</a>.</p>
+
+<h3 id="Event_listeners">Event listeners</h3>
+
+<p>You can listen for DOM events in a content script just as you can in a normal page script, but there are two important differences:</p>
+
+<p>First, if you define an event listener by passing it as a string into <a href="https://developer.mozilla.org/en/DOM/element.setAttribute"><code>setAttribute()</code></a>, then the listener is evaluated in the page's context, so it will not have access to any variables defined in the content script.</p>
+
+<p>For example, this content script will fail with the error "theMessage is not defined":</p>
+
+<pre class="brush: js">var theMessage = "Hello from content script!";
+anElement.setAttribute("onclick", "alert(theMessage);");</pre>
+
+<p>Second, if you define an event listener by direct assignment to a <a href="/en-US/docs/Web/API/GlobalEventHandlers">global event handler</a> like <code>onclick</code>, then the assignment might be overridden by the page. For example, here's an add-on that tries to add a click handler by assignment to <code>window.onclick</code>:</p>
+
+<pre class="brush: js">var myScript = "window.onclick = function() {" +
+ " console.log('unsafewindow.onclick: ' + window.document.title);" +
+ "}";
+
+require("sdk/page-mod").PageMod({
+ include: "*",
+ contentScript: myScript,
+ contentScriptWhen: "start"
+});</pre>
+
+<p>This will work fine on most pages, but will fail on pages which also assign to <code>onclick</code>:</p>
+
+<pre class="brush: html">&lt;html&gt;
+ &lt;head&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;script&gt;
+ window.onclick = function() {
+ window.alert("it's my click now!");
+ }
+ &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;</pre>
+
+<p>For these reasons, it's better to add event listeners using <a href="https://developer.mozilla.org/en/DOM/element.addEventListener"><code>addEventListener()</code></a>, defining the listener as a function:</p>
+
+<pre class="brush: js">var theMessage = "Hello from content script!";
+
+anElement.onclick = function() {
+ alert(theMessage);
+};
+
+anotherElement.addEventListener("click", function() {
+ alert(theMessage);
+});</pre>
+
+<h2 id="Communicating_with_the_add-on">Communicating with the add-on</h2>
+
+<p>To enable add-on scripts and content scripts to communicate with each other, each end of the conversation has access to a <code>port</code> object.</p>
+
+<ul>
+ <li>to send messages from one side to the other, use <code>port.emit()</code></li>
+ <li>to receive messages sent from the other side, use <code>port.on()</code></li>
+</ul>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/7873/content-scripting-overview.png" style="display: block; margin-left: auto; margin-right: auto;">Messages are asynchronous: that is, the sender does not wait for a reply from the recipient but just emits the message and continues processing.</p>
+
+<p>Here's a simple add-on that sends a message to a content script using <code>port</code>:</p>
+
+<pre class="brush: js">// main.js
+
+var tabs = require("sdk/tabs");
+var self = require("sdk/self");
+
+tabs.on("ready", function(tab) {
+ worker = tab.attach({
+ contentScriptFile: self.data.url("content-script.js")
+ });
+ worker.port.emit("alert", "Message from the add-on");
+});
+
+tabs.open("http://www.mozilla.org");</pre>
+
+<pre class="brush: js">// content-script.js
+
+self.port.on("alert", function(message) {
+ window.alert(message);
+});</pre>
+
+<div class="note">
+<p>The context-menu module doesn't use the communication model described here. To learn about communicating with content scripts loaded using context-menu, see the <a href="/en-US/Add-ons/SDK/High-Level_APIs/context-menu">context-menu documentation</a>. </p>
+</div>
+
+<h3 id="Accessing_port_in_the_content_script">Accessing <code>port</code> in the content script</h3>
+
+<p>In the content script the <code>port</code> object is available as a property of the global <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/self"><code>self</code></a> object. So to emit a message from a content script:</p>
+
+<pre class="brush: js">self.port.emit("myContentScriptMessage", myContentScriptMessagePayload);</pre>
+
+<p>To receive a message from the add-on code:</p>
+
+<pre class="brush: js">self.port.on("myAddonMessage", function(myAddonMessagePayload) {
+ // Handle the message
+});</pre>
+
+<div class="note">
+<p><span>Note that the global <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/self"><code>self</code></a> object is completely different from the <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/self"><code>self</code> module</a>, which provides an API for an add-on to access its data files and ID.</span></p>
+</div>
+
+<h3 id="Accessing_port_in_the_add-on_script">Accessing <code>port</code> in the add-on script</h3>
+
+<p>In the add-on code, the channel of communication between the add-on and a particular content script context is encapsulated by the <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/content_worker"><code>worker</code></a> object. So the <code>port</code> object for communicating with a content script is a property of the corresponding <code>worker</code> object.</p>
+
+<p>However, the worker is not exposed to add-on code in quite the same way in all modules.</p>
+
+<h4 id="From_page-worker">From <code>page-worker</code></h4>
+
+<p>The <code>page-worker</code> object integrates the worker API directly. So to receive messages from a content script associated with a <code>page-worker</code> you use <code>pageWorker.port.on()</code>:</p>
+
+<pre class="brush: js">// main.js
+
+var pageWorkers = require("sdk/page-worker");
+var self = require("sdk/self");
+
+var pageWorker = require("sdk/page-worker").Page({
+  contentScriptFile: self.data.url("content-script.js"),
+  contentURL: "http://en.wikipedia.org/wiki/Internet"
+});
+
+pageWorker.port.on("first-para", function(firstPara) {
+  console.log(firstPara);
+});</pre>
+
+<p>To emit user-defined messages from your add-on you can just call <code>pageWorker.port.emit()</code>:</p>
+
+<pre class="brush: js">// main.js
+
+var pageWorkers = require("sdk/page-worker");
+var self = require("sdk/self");
+
+pageWorker = require("sdk/page-worker").Page({
+  contentScriptFile: self.data.url("content-script.js"),
+  contentURL: "http://en.wikipedia.org/wiki/Internet"
+});
+
+pageWorker.port.on("first-para", function(firstPara) {
+  console.log(firstPara);
+});
+
+pageWorker.port.emit("get-first-para");</pre>
+
+<pre class="brush: js">// content-script.js
+
+self.port.on("get-first-para", getFirstPara);
+
+function getFirstPara() {
+ var paras = document.getElementsByTagName("p");
+ if (paras.length &gt; 0) {
+ var firstPara = paras[0].textContent;
+ self.port.emit("first-para", firstPara);
+ }
+}</pre>
+
+<h4 id="From_page-mod">From <code>page-mod</code></h4>
+
+<p>A single <code>page-mod</code> object might attach its scripts to multiple pages, each with its own context in which the content scripts are executing, so it needs a separate channel (worker) for each page.</p>
+
+<p>So <code>page-mod</code> does not integrate the worker API directly. Instead, each time a content script is attached to a page, the page-mod emits an <code>attach</code> event, whose listener is passed the worker for that context. By supplying a listener to <code>attach</code> you can access the <code>port</code> object for content scripts attached to that page by this page-mod:</p>
+
+<pre class="brush: js">// main.js
+
+var pageMods = require("sdk/page-mod");
+var self = require("sdk/self");
+
+var pageMod = pageMods.PageMod({
+  include: ['*'],
+  contentScriptFile: self.data.url("content-script.js"),
+  onAttach: startListening
+});
+
+function startListening(worker) {
+  worker.port.on('click', function(html) {
+    worker.port.emit('warning', 'Do not click this again');
+  });
+}</pre>
+
+<pre class="brush: js">// content-script.js
+
+window.addEventListener('click', function(event) {
+ self.port.emit('click', event.target.toString());
+ event.stopPropagation();
+ event.preventDefault();
+}, false);
+
+self.port.on('warning', function(message) {
+ window.alert(message);
+});
+</pre>
+
+<p>In the add-on above there are two messages:</p>
+
+<ul>
+ <li><code>click</code> is sent from the page-mod to the add-on, when the user clicks an element in the page</li>
+ <li><code>warning</code> sends a silly string back to the page-mod</li>
+</ul>
+
+<h4 id="From_Tab.attach()">From <code>Tab.attach()</code></h4>
+
+<p>The <code>Tab.attach()</code> method returns the worker you can use to communicate with the content script(s) you attached.</p>
+
+<p>This add-on adds a button to Firefox: when the user clicks the button, the add-on attaches a content script to the active tab, sends the content script a message called "my-addon-message", and listens for a response called "my-script-response":</p>
+
+<pre class="brush: js">//main.js
+
+var tabs = require("sdk/tabs");
+var buttons = require("sdk/ui/button/action");
+var self = require("sdk/self");
+
+buttons.ActionButton({
+ id: "attach-script",
+ label: "Attach the script",
+ icon: "./icon-16.png",
+ onClick: attachScript
+});
+
+function attachScript() {
+ var worker = tabs.activeTab.attach({
+ contentScriptFile: self.data.url("content-script.js")
+ });
+ worker.port.on("my-script-response", function(response) {
+ console.log(response);
+ });
+ worker.port.emit("my-addon-message", "Message from the add-on");
+}
+</pre>
+
+<pre class="brush: js">// content-script.js
+
+self.port.on("my-addon-message", handleMessage);
+
+function handleMessage(message) {
+ alert(message);
+ self.port.emit("my-script-response", "Response from content script");
+}</pre>
+
+<h3 id="The_port_API">The port API</h3>
+
+<p>See the <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/port">reference page for the <code>port</code> object</a>.</p>
+</article>
+
+<h3 id="The_postMessage_API">The postMessage API</h3>
+
+<p>Before the <code>port</code> object was added, add-on code and content scripts communicated using a different API:</p>
+
+<ul>
+ <li>the content script called <code>self.postMessage()</code> to send and <code>self.on()</code> to receive</li>
+ <li>the add-on script called <code>worker.postMessage()</code> to send and <code>worker.on()</code>to receive</li>
+</ul>
+
+<p>The API is still available and <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/using_postMessage">documented</a>, but there's no reason to use it instead of the <code>port</code> API described here. The exception is the <a href="/en-US/Add-ons/SDK/High-Level_APIs/context-menu">context-menu</a> module, which still uses postMessage.</p>
+
+<h3 id="Content_script_to_content_script">Content script to content script</h3>
+
+<p>Content scripts can only communicate with each other directly if they have been loaded into the same context. For example, if a single call to <code>Tab.attach()</code> attaches two content scripts, then they can see each other directly, just as page scripts loaded by the same page can. But if you call <code>Tab.attach()</code> twice, attaching a content script each time, then these content scripts can't communicate with each other. You must then relay messages through the main add-on code using the port API.</p>
+
+<h2 id="Cross-domain_content_scripts">Cross-domain content scripts</h2>
+
+<p>By default, content scripts don't have any cross-domain privileges. In particular, they can't access content hosted in an <code>iframe</code>, if that content is served from a different domain, or make cross-domain XMLHttpRequests.</p>
+
+<p>However, you can enable these features for specific domains by adding them to your add-on's <a href="/en-US/Add-ons/SDK/Tools/package_json">package.json</a> under the <code>"cross-domain-content"</code> key, which itself lives under the <code>"permissions"</code> key. See the article on <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts/Cross_Domain_Content_Scripts">cross-domain content scripts</a>.</p>
+</article>
diff --git a/files/ja/mozilla/add-ons/sdk/guides/index.html b/files/ja/mozilla/add-ons/sdk/guides/index.html
new file mode 100644
index 0000000000..0a6a4422d6
--- /dev/null
+++ b/files/ja/mozilla/add-ons/sdk/guides/index.html
@@ -0,0 +1,115 @@
+---
+title: ガイド
+slug: Mozilla/Add-ons/SDK/Guides
+translation_of: Archive/Add-ons/Add-on_SDK/Guides
+---
+<p>This page lists more theoretical in-depth articles about the SDK.</p>
+<hr>
+<h3 id="Contributor's_guide"><a name="contributors-guide">Contributor's guide</a></h3>
+<div class="column-container">
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/Getting_Started">Getting Started</a></dt>
+ <dd>
+ Learn how to contribute to the SDK: getting the code, opening/taking a bug, filing a patch, getting reviews, and getting help.</dd>
+ <dt>
+ <a href="Guides/Modules">Modules</a></dt>
+ <dd>
+ Learn about the module system used by the SDK (which is based on the CommonJS specification), how sandboxes and compartments can be used to improve security, and about the built-in SDK module loader, known as Cuddlefish.</dd>
+ <dt>
+ <a href="Guides/Classes_and_Inheritance">Classes and Inheritance</a></dt>
+ <dd>
+ Learn how classes and inheritance can be implemented in JavaScript, using constructors and prototypes, and about the helper functions provided by the SDK to simplify this.</dd>
+ </dl>
+ </div>
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/Private_Properties">Private Properties</a></dt>
+ <dd>
+ Learn how private properties can be implemented in JavaScript using prefixes, closures, and WeakMaps, and how the SDK supports private properties by using namespaces (which are a generalization of WeakMaps).</dd>
+ <dt>
+ <a href="Guides/Content_Processes">Content Processes</a></dt>
+ <dd>
+ The SDK was designed to work in an environment where the code to manipulate web content runs in a different process from the main add-on code. This article highlights the main features of that design.</dd>
+ </dl>
+ </div>
+</div>
+<hr>
+<h3 id="SDK_infrastructure"><a name="sdk-infrastructure">SDK infrastructure</a></h3>
+<div class="column-container">
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/Module_structure_of_the_SDK">Module structure of the SDK</a></dt>
+ <dd>
+ The SDK, and add-ons built using it, are of composed from reusable JavaScript modules. This explains what these modules are, how to load modules, and how the SDK's module tree is structured.</dd>
+ <dt>
+ <a href="Guides/SDK_API_Lifecycle">SDK API lifecycle</a></dt>
+ <dd>
+ Definition of the lifecycle for the SDK's APIs, including the stability ratings for APIs.</dd>
+ </dl>
+ </div>
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/Program_ID">Program ID</a></dt>
+ <dd>
+ The Program ID is a unique identifier for your add-on. This guide explains how it's created, what it's used for and how to define your own.</dd>
+ <dt>
+ <a href="Guides/Firefox_Compatibility">Firefox compatibility</a></dt>
+ <dd>
+ Working out which Firefox releases a given SDK release is compatible with, and dealing with compatibility problems.</dd>
+ </dl>
+ </div>
+</div>
+<hr>
+<h3 id="SDK_idioms"><a name="sdk-idioms">SDK idioms</a></h3>
+<div class="column-container">
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/Working_with_Events">Working With Events</a></dt>
+ <dd>
+ Write event-driven code using the the SDK's event emitting framework.</dd>
+ <dt>
+ <a href="Guides/Content_Scripts">Content scripts guide</a></dt>
+ <dd>
+ An overview of content scripts, including: what they are, what they can do, how to load them, how to communicate with them.</dd>
+ </dl>
+ </div>
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/Two_Types_of_Scripts">Two Types of Scripts</a></dt>
+ <dd>
+ This article explains the differences between the APIs available to your main add-on code and those available to content scripts.</dd>
+ </dl>
+ </div>
+</div>
+<hr>
+<h3 id="XUL_migration"><a name="xul-migration">XUL migration</a></h3>
+<div class="column-container">
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/XUL_Migration_Guide">XUL Migration Guide</a></dt>
+ <dd>
+ Techniques to help port a XUL add-on to the SDK.</dd>
+ <dt>
+ <a href="Guides/XUL_vs_SDK">XUL versus the SDK</a></dt>
+ <dd>
+ A comparison of the strengths and weaknesses of the SDK, compared to traditional XUL-based add-ons.</dd>
+ </dl>
+ </div>
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/Porting_the_Library_Detector">Porting Example</a></dt>
+ <dd>
+ A walkthrough of porting a relatively simple XUL-based add-on to the SDK.</dd>
+ </dl>
+ </div>
+</div>
+<p> </p>
diff --git a/files/ja/mozilla/add-ons/sdk/index.html b/files/ja/mozilla/add-ons/sdk/index.html
new file mode 100644
index 0000000000..d1a2754a26
--- /dev/null
+++ b/files/ja/mozilla/add-ons/sdk/index.html
@@ -0,0 +1,99 @@
+---
+title: Add-on SDK
+slug: Mozilla/Add-ons/SDK
+translation_of: Archive/Add-ons/Add-on_SDK
+---
+<p>Add-on SDKを使って、JavaScript、HTML、CSSなどのウェブ技術を用いたFirefoxのアドオンを作成することができます。SDKにはアドオンを作成するためのJavaScript APIや、アドオンの作成、実行、テスト、そしてパッケージングを行うためのツールが含まれています。</p>
+<hr>
+<h3 id="チュートリアル">チュートリアル</h3>
+<div class="column-container">
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials#getting-started">はじめに</a></dt>
+ <dd>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Installation">SDKのインストール方法</a>と、アドオンの開発、テストおよびパッケージングのための<a href="/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">cfxツールの使い方</a>について。</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials#interact-with-the-browser">ブラウザと対話する</a></dt>
+ <dd>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Open_a_Web_Page">ウェブページを開き</a>、<a href="/en-US/Add-ons/SDK/Tutorials/Listen_For_Page_Load">ページが読み込まれたことを確認し</a>、 <a href="/en-US/Add-ons/SDK/Tutorials/List_Open_Tabs">開いているタブの一覧を取得</a>してみましょう。</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials#development-techniques">開発のためのテクニック</a></dt>
+ <dd>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Unit_testing">ユニットテスト</a>、 <a href="/en-US/Add-ons/SDK/Tutorials/Logging">ログの出力</a>、<a href="/en-US/Add-ons/SDK/Tutorials/Creating_Reusable_Modules">再利用可能なモジュールの作成</a>、 <a href="/en-US/Add-ons/SDK/Tutorials/l10n">ローカライズ</a>、 そして<a href="/en-US/Add-ons/SDK/Tutorials/Mobile_development">モバイル向けの開発</a>などの、アドオン開発のための一般的なテクニックについて学びましょう。</dd>
+ </dl>
+ </div>
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials#create-user-interfaces">ユーザーインターフェースの作成 </a></dt>
+ <dd>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Adding_a_Button_to_the_Toolbar">ツールバーボタン</a>、 <a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Context_Menu_Item">コンテキストメニュー</a>、<a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox">メニュー項目</a>、そして<a href="/en-US/Add-ons/SDK/Tutorials/Display_a_Popup">ダイアログ</a>などの、ユーザーインターフェースの構成要素を作成しましょう。</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials#modify-web-pages">ウェブページを変化させる</a></dt>
+ <dd>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL">特性のパターンにマッチした</a><a href="/en-US/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL">U</a><a href="/en-US/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL">RL</a>のページや、<a href="/en-US/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab">特性のタブに表示されているページ</a>の内容を修正してみましょう。</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Annotator">まとめ</a></dt>
+ <dd>
+ Annotatorアドオンを例とした、アドオン開発の概略。</dd>
+ </dl>
+ </div>
+</div>
+<hr>
+<h3 id="ガイド">ガイド</h3>
+<div class="column-container">
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Guides#contributors-guide">コントリビューターズガイド</a></dt>
+ <dd>
+ <a href="/en-US/Add-ons/SDK/Guides/Getting_Started">SDKへのコントリビュートの始め方</a>をお知らせします。また、<a href="/en-US/Add-ons/SDK/Guides/Modules">モジュール</a>や<a href="/en-US/Add-ons/SDK/Guides/Classes_and_Inheritance">クラスと継承</a>、<a href="/en-US/Add-ons/SDK/Guides/Private_Properties">プライベートプロパティ</a>、そして<a href="/en-US/Add-ons/SDK/Guides/Content_Processes">コンテンツの処理</a>などの、SDKのコードで使われている最も重要な手法についてお知らせします。</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Guides#sdk-infrastructure">SDKの下部構造</a></dt>
+ <dd>
+ SDKの根底にあるテクノロジーについて。<a href="/en-US/Add-ons/SDK/Guides/Module_structure_of_the_SDK">モジュール</a>、<a href="/en-US/Add-ons/SDK/Guides/Program_ID">プログラムID</a>、<a href="/en-US/Add-ons/SDK/Guides/Firefox_Compatibility">Firefoxの互換性</a>を定義する規則など。</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">Content script</a></dt>
+ <dd>
+ <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">content scriptの扱い方</a>についての詳細なガイド。<a href="/en-US/Add-ons/SDK/Guides/Loading_content_scripts">content scriptの読み込み</a>、<a href="/en-US/Add-ons/SDK/Guides/Accessing_the_DOM">DOMへのアクセス</a>、<a href="/en-US/Add-ons/SDK/Guides/Communicating_with_other_scripts">content script同士またはほかのアドオンとのやり取りの方法</a>など。</dd>
+ </dl>
+ </div>
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Guides#sdk-idioms">SDKのイディオム</a></dt>
+ <dd>
+ SDKにおける<a href="/en-US/Add-ons/SDK/Guides/Working_with_Events">イベントの扱い方</a>、および<a href="/en-US/Add-ons/SDK/Guides/Two_Types_of_Scripts">add-on scriptとcontent scriptの区別</a>について。</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Guides/XUL_Migration_Guide">XULからのマイグレーション</a></dt>
+ <dd>
+ <a href="/en-US/Add-ons/SDK/Guides/XUL_Migration_Guide">XULで作成されたアドオンをSDKに移植する</a>ためのガイドです。 <a href="/en-US/Add-ons/SDK/Guides/XUL_vs_SDK">二つのツールセットの比較</a>や<a href="/en-US/Add-ons/SDK/Guides/Porting_the_Library_Detector">移植の実施例</a>を含みます。</dd>
+ </dl>
+ </div>
+</div>
+<hr>
+<h3 id="リファレンス">リファレンス</h3>
+<div class="column-container">
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/High-Level_APIs">高レベルAPI</a></dt>
+ <dd>
+ SDKの高レベルなAPIについてのドキュメント。</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tools">ツール</a></dt>
+ <dd>
+ アドオンの開発、テストおよびパッケージングに利用する<a href="/en-US/Add-ons/SDK/Tools/cfx">cfxツール</a>、ログの出力に利用する<a href="/en-US/Add-ons/SDK/Tools/console">console</a>オブジェクト、および<a href="/en-US/Add-ons/SDK/Tools/package_json">package.json</a>についてのドキュメント。</dd>
+ </dl>
+ </div>
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Low-Level_APIs">低レベルAPI</a></dt>
+ <dd>
+ SDKの低レベルなAPIについてのドキュメント。</dd>
+ </dl>
+ </div>
+</div>
+<p> </p>
diff --git a/files/ja/mozilla/add-ons/sdk/tutorials/display_a_popup/index.html b/files/ja/mozilla/add-ons/sdk/tutorials/display_a_popup/index.html
new file mode 100644
index 0000000000..32e4e520f8
--- /dev/null
+++ b/files/ja/mozilla/add-ons/sdk/tutorials/display_a_popup/index.html
@@ -0,0 +1,142 @@
+---
+title: ポップアップを表示する
+slug: Mozilla/Add-ons/SDK/Tutorials/Display_a_Popup
+translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Display_a_Popup
+---
+<div class="note">
+ <p>このチュートリアルを行うには <a href="/ja/docs/Mozilla/Add-ons/SDK/Tutorials/Installation">SDK をインストール</a> し、<a href="/ja/docs/Mozilla/Add-ons/SDK/Tutorials/Getting_started"><code>cfx</code> の基本</a> について学んでいる必要があります。</p>
+ <p>このチュートリアルは、Firefox 29 以降で使用可能な <a href="/ja/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_action">アクションボタン</a> API を使用しています。</p>
+</div>
+<p>ポップアップダイアログを表示するには、<a href="/ja/docs/Mozilla/Add-ons/SDK/High-Level_APIs/panel"><code>panel</code></a> モジュールを使用します。パネルのコンテンツは HTML を使用して定義されます。パネル内でコンテンツのスクリプトを実行できます: パネル内で実行されるスクリプトは、アドオンのメインコードには直接アクセスできませんが、パネルのスクリプトとアドオンのコードの間でメッセージを交換できます。</p>
+<p>このチュートリアルでは、クリックした際にパネルを表示する <a href="/ja/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_action">アクションボタン</a> をツールバーに追加したアドオンを作成します。パネルには、<code>&lt;textarea&gt;</code> 要素のみが含まれています: <code>return</code> キーを押すと、<code>&lt;textarea&gt;</code> 内のコンテンツがメインのアドオンコードに送信されます。メインのアドオンコードでは、<a href="/ja/docs/Mozilla/Add-ons/SDK/Tutorials/Logging">メッセージをコンソールログに表示</a> します。</p>
+<p><img alt="" src="https://mdn.mozillademos.org/files/7647/panel.png" style="display: block; margin-left: auto; margin-right: auto;">アドオンは 6 つのファイルで構成されています:</p>
+<ul>
+ <li><code>main.js</code>: アドオンのメインコードで、ボタンとパネルを生成します</li>
+ <li><code>get-text.js</code>: パネルのコンテンツとインタラクティブなコンテンツスクリプトです</li>
+ <li><code>text-entry.html</code>: パネルのコンテンツそのもので、HTML で記述されます</li>
+ <li><code>icon-16.png</code>、<code>icon-32.png</code>、<code>icon-64.png</code>: 3 つの異なるサイズのボタン用アイコンです</li>
+</ul>
+<p>"main.js" は以下のようになっています:</p>
+<pre class="brush: js">var data = require("sdk/self").data;
+// Construct a panel, loading its content from the "text-entry.html"
+// file in the "data" directory, and loading the "get-text.js" script
+// into it.
+var text_entry = require("sdk/panel").Panel({
+  contentURL: data.url("text-entry.html"),
+  contentScriptFile: data.url("get-text.js")
+});
+
+// Create a button
+require("sdk/ui/button/action").ActionButton({
+  id: "show-panel",
+  label: "Show Panel",
+  icon: {
+    "16": "./icon-16.png",
+    "32": "./icon-32.png",
+    "64": "./icon-64.png"
+  },
+  onClick: handleClick
+});
+
+// Show the panel when the user clicks the button.
+function handleClick(state) {
+  text_entry.show();
+}
+
+// When the panel is displayed it generated an event called
+// "show": we will listen for that event and when it happens,
+// send our own "show" event to the panel's script, so the
+// script can prepare the panel for display.
+text_entry.on("show", function() {
+  text_entry.port.emit("show");
+});
+
+// Listen for messages called "text-entered" coming from
+// the content script. The message payload is the text the user
+// entered.
+// In this implementation we'll just log the text to the console.
+text_entry.port.on("text-entered", function (text) {
+  console.log(text);
+  text_entry.hide();
+});</pre>
+<p>コンテンツスクリプト "get-text.js" は、以下のようになっています:</p>
+<div>
+ <pre class="brush: js">// When the user hits return, send the "text-entered"
+// message to main.js.
+// The message payload is the contents of the edit box.
+var textArea = document.getElementById("edit-box");
+textArea.addEventListener('keyup', function onkeyup(event) {
+ if (event.keyCode == 13) {
+ // Remove the newline.
+ text = textArea.value.replace(/(\r\n|\n|\r)/gm,"");
+ self.port.emit("text-entered", text);
+ textArea.value = '';
+ }
+}, false);
+// Listen for the "show" event being sent from the
+// main add-on code. It means that the panel's about
+// to be shown.
+//
+// Set the focus to the text area so the user can
+// just start typing.
+self.port.on("show", function onShow() {
+ textArea.focus();
+});</pre>
+ <div>
+  </div>
+</div>
+<p>そして、"text-entry.html" ファイルで <code>&lt;textarea&gt;</code> 要素を定義します:</p>
+<div>
+ <div>
+ <pre class="brush: html">&lt;html&gt;
+&lt;head&gt;
+    &lt;style type="text/css" media="all"&gt;
+      textarea {
+        margin: 10px;
+      }
+      body {
+        background-color: gray;
+      }
+    &lt;/style&gt;
+  &lt;/head&gt;
+&lt;body&gt;
+    &lt;textarea rows="13" cols="33" id="edit-box"&gt;&lt;/textarea&gt;
+  &lt;/body&gt;
+&lt;/html&gt;</pre>
+ <div>
+  </div>
+ </div>
+</div>
+<p>3 種類のアイコンファイルを "data" ディレクトリに保存します:</p>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><img alt="" src="https://mdn.mozillademos.org/files/7635/icon-16.png" style="width: 16px; height: 16px;"></td>
+ <td>icon-16.png</td>
+ </tr>
+ <tr>
+ <td><img alt="" src="https://mdn.mozillademos.org/files/7637/icon-32.png" style="width: 32px; height: 32px;"></td>
+ <td>icon-32.png</td>
+ </tr>
+ <tr>
+ <td><img alt="" src="https://mdn.mozillademos.org/files/7639/icon-64.png" style="width: 64px; height: 64px;"></td>
+ <td>icon-64.png</td>
+ </tr>
+ </tbody>
+</table>
+<p>試してください: "main.js" をアドオン内の <code>lib</code> ディレクトリに保存し、他の 5 つのファイルをアドオン内の<code>data</code> ディレクトリに保存してください:</p>
+<pre>my-addon/
+ data/
+ get-text.js
+ icon-16.png
+ icon-32.png
+ icon-64.png
+ text-entry.html
+ lib/
+ main.js
+</pre>
+<p>アドオンを実行し、ボタンをクリックすると、パネルが表示されます。テキストを入力し、"return" を押すと、コンソールに出力されます。</p>
+<p>Firefox 30 以降では、<a href="/ja/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_toggle">トグルボタン</a> を使用すると、<a href="/ja/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_toggle#Attaching_panels_to_buttons"> ボタンからパネルを呼び出せます</a>。</p>
+<h2 id="詳しく学ぶ">詳しく学ぶ</h2>
+<p><code>panel</code> モジュールについてさらに学ぶには、<a href="/ja/docs/Mozilla/Add-ons/SDK/High-Level_APIs/panel"><code>panel</code> API リファレンス</a> をご覧ください。</p>
+<p>ボタンについてさらに学ぶには、<a href="/ja/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_action">アクションボタン</a> と <a href="/ja/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_button_toggle">トグルボタン</a> API リファレンスをご覧ください。</p>
diff --git a/files/ja/mozilla/add-ons/sdk/tutorials/getting_started/index.html b/files/ja/mozilla/add-ons/sdk/tutorials/getting_started/index.html
new file mode 100644
index 0000000000..3eb0b80ec6
--- /dev/null
+++ b/files/ja/mozilla/add-ons/sdk/tutorials/getting_started/index.html
@@ -0,0 +1,167 @@
+---
+title: 入門
+slug: Mozilla/Add-ons/SDK/Tutorials/Getting_started
+translation_of: Mozilla/Add-ons/SDK/Tutorials/Getting_Started_%28jpm%29
+---
+<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">SDK を</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">使用してシンプルなアドオンの作成を始めるための手順の概略です</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">。</span></p>
+<h2 id="必要条件">必要条件</h2>
+<p>SDK を使用してアドオンを作成するには、まず最初に <a href="/en-US/Add-ons/SDK/Tutorials/Installation" rel="noreferrer">SDKをインストールして起動するための手順</a>に従ってください。インストールは一度だけ行えばよく、SDK の起動はコマンドプロンプトごとに行う必要があります。準備が整ったら、コマンドプロンプトを見てください。</p>
+<p>Linux または Mac OS X の場合、コマンドプロンプトの先頭は SDK のルートディレクトリ名となります。</p>
+<pre>(addon-sdk)~/mozilla/addon-sdk &gt;
+</pre>
+<p>Windows の場合、コマンドプロンプトの先頭は SDK がインストールされたディレクトリの絶対パスとなります。</p>
+<pre>(C:\Users\mozilla\sdk\addon-sdk) C:\Users\Work\sdk\addon-sdk&gt;
+</pre>
+<h2 id="アドオンの初期化">アドオンの初期化</h2>
+<p>コマンドプロンプトで新しいディレクトリを作成してください。SDK のルートディレクトリ以下の場所以外であれば、任意の場所に作成することができます。作成後はそのディレクトリに移動し、<span style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: 1.5;">cfx init </span><span style="line-height: 1.5;">を実行してください。</span></p>
+<pre>mkdir my-addon
+cd my-addon
+cfx init
+</pre>
+<p>そうした場合、以下のように出力されるでしょう。</p>
+<pre>* lib directory created
+* data directory created
+* test directory created
+* doc directory created
+* README.md written
+* package.json written
+* test/test-main.js written
+* lib/main.js written
+* doc/main.md written
+Your sample add-on is now ready for testing:
+try "cfx test" and then "cfx run". Have fun!"
+</pre>
+<h2 id="アドオンを実装する">アドオンを実装する</h2>
+<p>lib ディレクトリにある main.js ファイルに、アドオンのコードを書くことができます。これは前のステップで作成されたものです。main.js を開き、以下のコードを追加してください。</p>
+<pre class="brush: js">var buttons = require('sdk/ui/button/action');
+var tabs = require("sdk/tabs");
+
+var button = buttons.ActionButton({
+ id: "mozilla-link",
+ label: "Visit Mozilla",
+ icon: {
+ "16": "./icon-16.png",
+ "32": "./icon-32.png",
+ "64": "./icon-64.png"
+ },
+ onClick: handleClick
+});
+
+function handleClick(state) {
+ tabs.open("http://www.mozilla.org/");
+}
+</pre>
+<p>コードを追加したら、ファイルを保存してください。</p>
+<p>次に、以下の3つのアイコンファイルを data ディレクトリに保存してください。</p>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><img alt="" src="https://mdn.mozillademos.org/files/7635/icon-16.png" style="width: 16px; height: 16px;"></td>
+ <td>icon-16.png</td>
+ </tr>
+ <tr>
+ <td><img alt="" src="https://mdn.mozillademos.org/files/7637/icon-32.png" style="width: 32px; height: 32px;"></td>
+ <td>icon-32.png</td>
+ </tr>
+ <tr>
+ <td><img alt="" src="https://mdn.mozillademos.org/files/7639/icon-64.png" style="width: 64px; height: 64px;"></td>
+ <td>icon-64.png</td>
+ </tr>
+ </tbody>
+</table>
+<div class="note">
+ <p>上記のコードは、Firefox 29 以降においてのみ使用できる<span style="line-height: 1.5;"> </span><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action" style="line-height: 1.5;">action button</a><span style="line-height: 1.5;"> モジュールを使用していることに注意してください。それ以前のバージョンの Firefox を使用する場合、アイコンがブラウザウィンドウの右下に表示されることを除けば、以下のコードを使用して同じものを実装できます。</span></p>
+ <pre class="brush: js">var widgets = require("sdk/widget");
+var tabs = require("sdk/tabs");
+var widget = widgets.Widget({
+  id: "mozilla-link",
+  label: "Mozilla website",
+  contentURL: require("sdk/self").data.url("icon-16.png"),
+  onClick: function() {
+    tabs.open("http://www.mozilla.org/");
+  }
+});</pre>
+</div>
+<p>コマンドプロンプトに戻り、以下のコマンドを実行します。</p>
+<pre>cfx run
+</pre>
+<p>これは、開発中のアドオンがインストールされた状態でFirefoxの新規インスタンスを実行する、 SDK のコマンドです。Firefox が起動されると、ブラウザの右上にFirefox ロゴのアイコンが表示されます。そのアイコンをクリックすると、<a href="http://www.mozilla.org/" rel="noreferrer">http://www.mozilla.org/</a> が読み込まれた新しいタブが開きます。</p>
+<div class="note">
+ <p>cfx run と入力したとき、以下のようなメッセージが表示される場合があります。</p>
+ <pre class="bz_comment_text" id="comment_text_0">A given cfx option has an inappropriate value:
+ ZIP does not support timestamps before 1980</pre>
+ <p>もし表示されたのであれば、<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1005412">bug 1005412</a> に行き当たったことになります。これは、ダウンロードしたアイコンファイルに1970年のタイムスタンプが付与されていることを意味します。このバグが修正されるまでは、<a href="http://www.linfo.org/touch.html"><code>touch</code></a> コマンドを使ってタイムスタンプをアップデートすることによってバグを回避してください。</p>
+ <pre>touch icon-16.png</pre>
+</div>
+<p>このアドオンが行うことは、これで全部です。このアドオンは2つの SDK モジュールを使用しています。一つは、ボタンをブラウザに追加することができる <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a> モジュール、もう一つは、基本的なタブの操作を可能にする <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs" rel="noreferrer">tabs</a> モジュールです。今回は、Firefox アイコンのボタンを作成し、それをクリックすると新しいタブで Mozilla ウェブサイトのホームページを読み込むためのハンドラを追加しました。</p>
+<p><img alt="" src="https://mdn.mozillademos.org/files/7643/mozilla-button.png" style="width: 382px; height: 221px; display: block; margin-left: auto; margin-right: auto;">先述のファイルを編集してみましょう。例えば、読み込むページを変更することができます。</p>
+<pre class="brush: js">var buttons = require('sdk/ui/button/action');
+var tabs = require("sdk/tabs");
+
+var button = buttons.ActionButton({
+ id: "mozilla-link",
+ label: "Visit Mozilla",
+ icon: {
+ "16": "./icon-16.png",
+ "32": "./icon-32.png",
+ "64": "./icon-64.png"
+ },
+ onClick: handleClick
+});
+
+function handleClick(state) {
+ tabs.open("https://developer.mozilla.org/");
+}</pre>
+<div class="note">
+ <p><span style="line-height: 1.5;">上記のコードは、Firefox 29 以降においてのみ使用できる</span><span style="line-height: 1.5;"> </span><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action" style="line-height: 1.5;">action button</a><span style="line-height: 1.5;"> モジュールを使用していることに注意してください。それ以前のバージョンの Firefox を使用する場合、アイコンがブラウザウィンドウの右下に表示されることを除けば、以下のコードを使用して同じものを実装できます。</span></p>
+ <pre class="brush: js">var widgets = require("sdk/widget");
+var tabs = require("sdk/tabs");
+var widget = widgets.Widget({
+  id: "mozilla-link",
+  label: "Mozilla website",
+  contentURL: require("sdk/self").data.url("icon-16.png"),
+  onClick: function() {
+    tabs.open("http://developer.mozilla.org/");
+  }
+});</pre>
+</div>
+<p>コマンドプロンプトで、再び <code>cfx run</code> を実行してください。今度は <a href="https://developer.mozilla.org/">https://developer.mozilla.org/</a> が表示されます。</p>
+<h2 id="アドオンをパッケージ化する">アドオンをパッケージ化する</h2>
+<p>アドオンが完成して配布する準備ができたとき、XPI ファイルとしてパッケージ化する必要があります。これは Firfox アドオンとしてインストール可能なファイル形式です。XPI ファイルを独自の手段で配布するか、<a href="https://addons.mozilla.org" rel="noreferrer">https://addons.mozilla.org</a> で公開しましょう。そうすれば、ほかのユーザーがそのアドオンをダウンロードし、インストールすることできます。</p>
+<p><span style="line-height: 1.5;">アドオンのディレクトリで </span><code style="font-style: normal; line-height: 1.5;">cfx xpi</code><span style="line-height: 1.5;"> コマンドを実行するだけで、</span>XPI をビルドすることができます。</p>
+<pre>cfx xpi
+</pre>
+<p>そうした場合、以下のようなメッセージが表示されるでしょう。</p>
+<pre>Exporting extension to my-addon.xpi.
+</pre>
+<p>アドオンが動くかどうかテストするために、あなたがインストールした Firefox に XPI ファイルをインストールしてみましょう。Firefox で Ctrl+O の組み合わせ(Mac であれば Cmd+O)でキーを入力するか、Firefox の「ファイル」メニューから「ファイルを開く」を選択します。すると、ファイル選択ダイアログが表示されます。アドオンの XPI ファイルがある場所まで移動してファイルを開き、アドオンをインストールするためのプロンプトに従ってください。</p>
+<h2 id="要約">要約</h2>
+<p>このチュートリアルでは、3つのコマンドを使ってアドオンの構築およびパッケージ化を行いました。</p>
+<ul>
+ <li><code>cfx init</code> による空のアドオンのテンプレートの初期化。</li>
+ <li><code>cfx run</code>  による、アドオンがインストールされた状態での Firefox の新規インスタンスの実行。アドオンの動作確認を可能にします。</li>
+ <li><code>cfx xpi</code> による、配布可能な XPI ファイルとしてのアドオンのパッケージ化。</li>
+</ul>
+<p>これら3つのコマンドは、SDK を用いてアドオンを開発するときに使用する主要なコマンドです。利用可能な全てのコマンドとオプションを網羅した<a href="/en-US/Add-ons/SDK/Tools/cfx" rel="noreferrer" style="line-height: 1.5;">リファレンス</a><span style="line-height: 1.5;">も用意してます。</span></p>
+<p>アドオン自体のコードは、<a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a> と <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs" rel="noreferrer">tabs</a> の2つのモジュールを使用しています。SDKの<a href="/en-US/Add-ons/SDK/High-Level_APIs" rel="noreferrer">高レベルなAPI</a> および <a href="/en-US/Add-ons/SDK/Low-Level_APIs" rel="noreferrer">低レベルなAPI</a> のリファレンスも用意しています。</p>
+<h2 id="次のステップ">次のステップ</h2>
+<p>SDKのAPIを使ってできることに慣れるためには、いくつかの<a href="/en-US/Add-ons/SDK/Tutorials" rel="noreferrer">チュートリアル</a>を進めてみてください。 </p>
+<h2 id="上級テクニック">上級テクニック</h2>
+<h3 id="組み込みのモジュールの上書き">組み込みのモジュールの上書き</h3>
+<p>アドオンを実装するために使用する SDK モジュールは、Firefox に組み込まれているものです。アドオンを <span style="font-family: 'Courier New', 'Andale Mono', monospace; line-height: 1.5;">cfx run</span><span style="line-height: 1.5;"> コマンドで実行したり、</span><code style="font-style: normal; line-height: 1.5;">cfx xpi</code><span style="line-height: 1.5;"> コマンドでパッケージ化したりする場合は、アドオンは Firefox が提供するバージョンのモジュールを使用します。</span></p>
+<p>アドオン開発者としては、通常これは望ましい挙動です。しかし、SDK のモジュール自体を開発する場合には、当然それは望ましくない挙動でしょう。この場合、仮にSDKを <a href="https://github.com/mozilla/addon-sdk" rel="noreferrer">GitHub リポジトリ</a>からチェックアウトし、そのルートディレクトリで <a href="/en-US/Add-ons/SDK/Tutorials/Installation" rel="noreferrer">bin/activate</a> スクリプトを実行するものとします。</p>
+<p>そのときは、"-o" オプションを渡して <code>cfx run</code> または <code>cfx xpi </code>コマンドを実行します。</p>
+<pre>cfx run -o
+</pre>
+<p>これにより、cfx は Firefox 組み込みのモジュールではなく、SDK モジュールのローカルコピーを使用するようになります。</p>
+<h3 id="cfx_を実行せずに開発する">cfx を実行せずに開発する</h3>
+<p><code>cfx run</code> を呼び出すたびにブラウザが再起動されるため、アドオンを頻繁に変更する場合、開発効率をいくらか損なうことになるでしょう。それに代わるものとして、特定のポートの新しい XPI ファイルを自動的にインストールする <a href="https://addons.mozilla.org/en-US/firefox/addon/autoinstaller/" rel="noreferrer" style="line-height: 1.5;">Extension Auto-Installer</a><span style="line-height: 1.5;"> アドオンを利用した開発があります。これにより、ブラウザを再起動する必要なく新しい変更点をテストすることができます。</span></p>
+<ul>
+ <li>アドオンに変更を加えます</li>
+ <li>cfx xpi コマンドを実行します</li>
+ <li>特定のポートにアドオンをポストします</li>
+</ul>
+<p>さらに、このワークフローを簡単なスクリプトで自動化できます。例えば、以下のようなスクリプトです。</p>
+<pre>while true ; do cfx xpi ; wget --post-file=codesy.xpi http://localhost:8888/ ; sleep 5 ; done
+</pre>
+<p>この方法を使った場合、<span style="line-height: 1.5;">アドオンを </span><code style="font-style: normal; line-height: 1.5;">cfx run</code><span style="line-height: 1.5;"> コマンドにより実行した場合と比べて、</span><span style="line-height: 1.5;">コンソールへのログ出力のレベルが異なることに注意してください。つまり、 </span><a href="/en-US/Add-ons/SDK/Tutorials/Logging" rel="noreferrer" style="line-height: 1.5;"><code>console.log()</code></a><span style="line-height: 1.5;"> が出力するメッセージを見たい場合、設定を微調整する必要があります。詳細については、</span><a href="/en-US/Add-ons/SDK/Tools/console#Logging_Levels" rel="noreferrer" style="line-height: 1.5;">ログ出力のレベル</a><span style="line-height: 1.5;">に関するドキュメントを参照してください。</span></p>
diff --git a/files/ja/mozilla/add-ons/sdk/tutorials/getting_started_(jpm)/index.html b/files/ja/mozilla/add-ons/sdk/tutorials/getting_started_(jpm)/index.html
new file mode 100644
index 0000000000..26fa4e6c4b
--- /dev/null
+++ b/files/ja/mozilla/add-ons/sdk/tutorials/getting_started_(jpm)/index.html
@@ -0,0 +1,174 @@
+---
+title: Getting Started (jpm)
+slug: Mozilla/Add-ons/SDK/Tutorials/Getting_Started_(jpm)
+translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Getting_Started_(jpm)
+---
+<p>{{AddonSidebar}}</p>
+
+<div class="blockIndicator warning">
+<p dir="ltr" id="docs-internal-guid-02db9a93-7fff-3bd4-b03f-ecfeb67b25c5">Support for extensions using XUL/XPCOM or the Add-on SDK was removed in Firefox 57, released November 2017. As there is no supported version of Firefox enabling these technologies, this page will be removed by December 2020.</p>
+</div>
+
+<p>{{LegacyAddonsNotice}}</p>
+
+<p> </p>
+
+<div class="note">
+<p>Add-on SDK は開発環境の作成, 実行, テスト, アドオンのパッケージング等を行うことができるコマンドラインツールを含みます. <a href="http://nodejs.org/">Node.js </a> を元に作成された jpm と呼ばれるクライアントツールは古い cfx tool を置き換えるものです.</p>
+jpm は Firefox 38 以上で使用可能です.
+
+<p>この記事では jpm を使ってどのように開発を行うのかを説明します.</p>
+</div>
+
+<p><span class="seoSummary">このチュートリアルでは SDK を使ってシンプルなアドオンを作成していきます.</span></p>
+
+<h2 id="前提条件">前提条件</h2>
+
+<p>SDK を使って Firefox のアドオンを作成するには, 以下の環境が必要です:</p>
+
+<ul>
+ <li>Firefox version 38 以上. それ以前の Firefox を使用する場合, 従来の cfx tool が必要です. <a href="/en-US/Add-ons/SDK/Tutorials/Getting_started_(cfx)">getting started with cfx</a> のインストラクションを参照してください.</li>
+ <li>コマンドラインツール jpm. <a href="/en-US/Add-ons/SDK/Tools/jpm#Installation">installing jpm</a> のインストラクションを参照してください. 導入が終了したらコマンドプロンプトを開いてください.</li>
+ <li>作成したアドオンのテストのために <a href="https://www.mozilla.org/en-US/firefox/developer/">Firefox Developer Version</a> をインストールしてください.</li>
+</ul>
+
+<h2 id="最初のアドオンの初期化">最初のアドオンの初期化</h2>
+
+<p>コマンドプロンプト上で, 新規ディレクトリを作成します. そのディレクトリに移動し <code>jpm init</code> , と入力し, エンターを押します:</p>
+
+<pre>mkdir my-addon
+cd my-addon
+jpm init
+</pre>
+
+<p>作成するアドオンに関する情報を入力するように求められます: この情報はこれから作成するアドオンの <a href="/en-US/Add-ons/SDK/Tools/package_json">package.json</a> ファイルを 生成するために使用されます. 今回は, それぞれのプロパティをデフォルトにするため, ただ Enter を押していきます. <code>jpm init</code> に関する詳細な情報は, <a href="/en-US/Add-ons/SDK/Tools/jpm#Command_reference">jpm command reference</a> を参照してください.</p>
+
+<p>これらのプロパティの,値を入力, または デフォルト値に設定した後に "package.json" の完全な内容が表示され、それを受け入れるように求められます.</p>
+
+<h2 id="アドオンの実装">アドオンの実装</h2>
+
+<p>それでは, アドオンのコードを書いて行きましょう. "entry point" の値 (これは package.json の "<a href="/en-US/Add-ons/SDK/Tools/package_json#main">main</a>" にあります) を変更していない限り, アドオンの root 直下の "index.js" です. このファイルは前のステップで作成されたものです. このファイルを開き以下のコードを追加します:</p>
+
+<pre class="brush: js">var buttons = require('sdk/ui/button/action');
+var tabs = require("sdk/tabs");
+
+var button = buttons.ActionButton({
+ id: "mozilla-link",
+ label: "Visit Mozilla",
+ icon: {
+ "16": "./icon-16.png",
+ "32": "./icon-32.png",
+ "64": "./icon-64.png"
+ },
+ onClick: handleClick
+});
+
+function handleClick(state) {
+ tabs.open("http://www.mozilla.org/");
+}
+</pre>
+
+<div class="note">
+<p>jpm では "entry point" のデフォルト値は "index.js" であることに注意してください. これは, アドオンの主要なファイルが "index.js" であることを意味しています. また, これはアドオンの root ディレクトリを検索します. and it is found directly in your add-on's root.</p>
+
+<p>cfx では, entry point はデフォルトに "main.js" になります. これは, アドオンの root 直下の "lib" ディレクトリに置かれています.</p>
+</div>
+
+<p>ファイルをセーブします.</p>
+
+<p>続いて, <strong>"data"</strong> という名前のディレクトリをアドオンの root 直下に作成し,</p>
+
+<pre>mkdir data
+</pre>
+
+<p>そして以下の 3 つのアイコンファイルを <strong>"data"</strong> ディレクトリに保存します:</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><img alt="" src="https://mdn.mozillademos.org/files/7635/icon-16.png" style="height: 16px; width: 16px;"></td>
+ <td>icon-16.png</td>
+ </tr>
+ <tr>
+ <td><img alt="" src="https://mdn.mozillademos.org/files/7637/icon-32.png" style="height: 32px; width: 32px;"></td>
+ <td>icon-32.png</td>
+ </tr>
+ <tr>
+ <td><img alt="" src="https://mdn.mozillademos.org/files/7639/icon-64.png" style="height: 64px; width: 64px;"></td>
+ <td>icon-64.png</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>コマンドプロンプトに戻り, 以下のコマンドを入力します:</p>
+
+<pre>jpm run</pre>
+
+<p>この jpm コマンドは作成したアドオンをインストールした状態の新規 Firefox インスタンスを実行します.</p>
+
+<p>Firefox は見つからない場合や, Firefox Developer を代理のブラウザとしてインストールしている場合には, そこまでの path を渡す必要があるかもしれません. 例えば Ubuntu の場合:</p>
+
+<pre>jpm run -b /usr/bin/firefox</pre>
+
+<p>Firefox が起動すると, ブラウザの右上端に Firefox のロゴにアイコンが見えるはずです. このアイコンをクリックすると, 新しいタブが開き, <a href="http://www.mozilla.org/" rel="noreferrer">http://www.mozilla.org/</a> が読み込まれます.</p>
+
+<p>これでこのアドオンでやることは終了です. ここでは, 二つの SDK モジュール を使っています: <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a> モジュール, これはブラウザにボタンを追加することができるモジュールです, <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs" rel="noreferrer">tabs</a> モジュール, これはタブの基本的な操作を行うことができるモジュールです. 今回のケースでは, 我々は Firefox アイコンのボタンを作成しました. また, 新規タブに Mozilla のホームページを読み込むクリックハンドラを追加しました.</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/7643/mozilla-button.png" style="display: block; height: 221px; margin-left: auto; margin-right: auto; width: 382px;"> このファイルを編集してみましょう. 例えば, 読み込むページを変更することができます.</p>
+
+<pre class="brush: js">var buttons = require('sdk/ui/button/action');
+var tabs = require("sdk/tabs");
+
+var button = buttons.ActionButton({
+ id: "mozilla-link",
+ label: "Visit Mozilla",
+ icon: {
+ "16": "./icon-16.png",
+ "32": "./icon-32.png",
+ "64": "./icon-64.png"
+ },
+ onClick: handleClick
+});
+
+function handleClick(state) {
+ tabs.open("https://developer.mozilla.org/");
+}</pre>
+
+<p>コマンドプロンプトで, <code>jpm run</code> を再度実行します. この時に, ボタンをクリックすると <a href="https://developer.mozilla.org/">https://developer.mozilla.org/</a> に移動します.</p>
+
+<h2 id="アドオンのパッケージング">アドオンのパッケージング</h2>
+
+<p>アドオンを作成し終え, 配布準備をする際には, アドオンを XPI にパッケージングする必要があります. これは Firefox アドオンをインストールするためのファイルフォーマットです. XPI を自分で配布したり, 他のユーザーがアドオンをダウンロードまたは, インストールできるようにするために, <a href="https://addons.mozilla.org" rel="noreferrer">https://addons.mozilla.org</a> に 公開することが可能です.</p>
+
+<p>XPIをビルドするためには, <code>jpm xpi</code> コマンドをアドオンのディレクトリで実行するだけです:</p>
+
+<pre>jpm xpi</pre>
+
+<p>次のようなメッセージを見ることができます:</p>
+
+<pre>JPM info Successfully created xpi at /path/to/my-addon/@my-addon-0.0.1.xpi
+</pre>
+
+<p>これが機能することをテストするために, XPI ファイルを自身がインストールしている Firefox にインストールしてみましょう. これは Firefox から Ctrl+O (Mac では Cmd+O)キーで行うことができます. もしくは, Firefox の "File" メニューから, "Open" を選択してもよいです. するとファイル選択ダイアログが開きます: "@my-addon.xpi" ファイルを選択すると アドオンインストールプロンプトが開きます.</p>
+
+<p>Firefoxでは, 基本的にローカルで開発されたアドオンでも署名が必要であることに注意してください. インストールが終了した後で, インストールされたアドオンのリストで disabled が示されている場合, 署名の不足を確認してください.注意してください。 開発中や, 公開する予定がない場合, 署名の無いアドオンを実行できるように <a>about:config</a> を開き, <em>xpinstall.signatures.required</em> を <em>false</em> に設定してください. この設定を全てのアドオンに適応されてしまうため, 他の場所から悪意のあるものを誤ってインストールしないように特別な注意を払ってください.</p>
+
+<p>アドオンを配布するために, <a href="https://addons.mozilla.org/en-US/developers/addon/submit/2"> XPI を addons.mozilla.org に提出</a> します. また自身のサーバーにアドオンを配布したい場合, <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm#jpm_sign">jpm sign</a> を 実行します.</p>
+
+<h2 id="結論">結論</h2>
+
+<p>このチュートリアルでは, 3 つのコマンドを使いアドオンのビルドやパッケージングを行いました:</p>
+
+<ul>
+ <li><code>jpm init</code> 空のアドオンテンプレートを初期化する</li>
+ <li><code>jpm run</code> アドオンがインストールされた Firefox インスタンスを実行する. 作成したアドオンを試すことができる</li>
+ <li><code>jpm xpi</code> 配布用にアドオンをXPIファイルにパッケージングする</li>
+</ul>
+
+<p>これらは, SDK アドオン開発している時に使用する 3 つの主要なコマンドです. これらがとれるオプションや利用できるすべてのコマンドをカバーした包括的な <a href="/en-US/Add-ons/SDK/Tools/jpm" rel="noreferrer">リファレンス</a> があります.</p>
+
+<p>アドオンコードでは 二つの SDK モジュール, <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a> や <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs" rel="noreferrer">tabs</a> を使用しました. SDK における 全てのAPIs, <a href="/en-US/Add-ons/SDK/High-Level_APIs" rel="noreferrer">high-level</a> や <a href="/en-US/Add-ons/SDK/Low-Level_APIs" rel="noreferrer">low-level</a> に関するレファレンスは存在します.</p>
+
+<h2 id="What's_next">What's next?</h2>
+
+<p>SDK APIs を使ってできるいくつかのことを把握するために, <a href="/en-US/Add-ons/SDK/Tutorials" rel="noreferrer">tutorials</a> に挑戦してみてください.</p>
diff --git a/files/ja/mozilla/add-ons/sdk/tutorials/index.html b/files/ja/mozilla/add-ons/sdk/tutorials/index.html
new file mode 100644
index 0000000000..e7be834a87
--- /dev/null
+++ b/files/ja/mozilla/add-ons/sdk/tutorials/index.html
@@ -0,0 +1,146 @@
+---
+title: チュートリアル
+slug: Mozilla/Add-ons/SDK/Tutorials
+translation_of: Archive/Add-ons/Add-on_SDK/Tutorials
+---
+<p>{{AddonSidebar}}</p>
+
+<p>SDK を使用したアドオンの開発方法を実践的に説明したページの一覧です。</p>
+
+<hr>
+<h3 id="はじめに"><a name="getting-started">はじめに</a></h3>
+
+<div class="column-container">
+<div class="column-half">
+<dl>
+ <dt><a href="/ja/Add-ons/SDK/Tools/jpm#Installation">インストール</a></dt>
+ <dd>Windows、OS X および Linux 上で、SDK をダウンロード、インストール、および初期化します。</dd>
+</dl>
+
+<dl>
+ <dt><a href="/en-US/Add-ons/SDK/Tutorials/Troubleshooting">トラブルシューティング</a></dt>
+ <dd>よくある問題を解決する場合や、支援を求める場合のヒントを説明します。</dd>
+</dl>
+</div>
+
+<div class="column-half">
+<dl>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Getting_Started_(jpm)">入門</a></dt>
+ <dd>jpm を使用してシンプルなアドオンを作成を始めるための手順の概略です</dd>
+ <dt></dt>
+</dl>
+</div>
+</div>
+
+<hr>
+<h3 id="ユーザーインターフェイスの作成"><a name="create-user-interfaces">ユーザーインターフェイスの作成</a></h3>
+
+<div class="column-container">
+<div class="column-half">
+<dl>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Adding_a_Button_to_the_Toolbar">ツールバーボタンの追加</a></dt>
+ <dd>Firefox アドオンツールバーにボタンを追加します。</dd>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox">Firefoxへのメニュー項目の追加</a></dt>
+ <dd>Firefox のメインメニューにアイテムを追加します。</dd>
+</dl>
+</div>
+
+<div class="column-half">
+<dl>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Display_a_Popup">ポップアップの表示</a></dt>
+ <dd>HTML および JavaScript を使用して実装したポップアップダイアログを表示します。</dd>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Add_a_Context_Menu_Item">コンテキストメニュー項目の追加</a></dt>
+ <dd>Firefox のコンテキストメニューに項目を追加します。</dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<h3 id="ブラウザの操作"><a name="interact-with-the-browser">ブラウザの操作</a></h3>
+
+<div class="column-container">
+<div class="column-half">
+<dl>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Open_a_Web_Page">Webページを開く</a></dt>
+ <dd>モジュールを用いて、新しいタブまたはウィンドウでWebページを開き、そのコンテンツにアクセスします。</dd>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Listen_for_Page_Load">ページの読み込みを確認する</a></dt>
+ <dd>モジュールを用いて、新しい Web ページが読み込まれたときに通知を受け取り、それらの Web ページのコンテンツにアクセスします。</dd>
+</dl>
+</div>
+
+<div class="column-half">
+<dl>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/List_Open_Tabs">開いているタブの一覧を表示する</a></dt>
+ <dd>tabs モジュールを用いて、現在開いているすべてのタブに対して反復処理を行い、それらのコンテンツにアクセスします。</dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<h3 id="Webページの変更"><a name="modify-web-pages">Webページの変更</a></h3>
+
+<div class="column-container">
+<div class="column-half">
+<dl>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL">URLに基づいたWebページの変更</a></dt>
+ <dd>URL に基づいて Web ページを検索するフィルタを作成します。フィルタに一致する URL の Web ページを読み込んだときに、フィルタ内の指定したスクリプトを実行します。</dd>
+</dl>
+</div>
+
+<div class="column-half">
+<dl>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab">アクティブなWebページの変更</a></dt>
+ <dd>現在アクティブな Web ページに、動的にスクリプトを読み込みます。</dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<h3 id="開発テクニック"><a name="development-techniques">開発テクニック</a></h3>
+
+<div class="column-container">
+<div class="column-half">
+<dl>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Logging">ログの出力</a></dt>
+ <dd>診断を行うために、メッセージをコンソールにログとして出力します。</dd>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Creating_reusable_modules">再利用可能なモジュールの作成</a></dt>
+ <dd>アドオンを別個のモジュールとして体系化し、開発、デバッグ、およびメンテナンスを容易にします。 また、作成したモジュールが入った再利用可能なパッケージを作成し、他の開発者もそのモジュールを使用できるようにします。</dd>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Unit_testing">ユニットテスト</a></dt>
+ <dd>SDK のテストフレームワークを使用して、ユニットテストを作成し実行します。</dd>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Chrome_authority">Chrome 権限</a></dt>
+ <dd>この権限を使用すると、アドオンが Components オブジェクトにアクセスできるので、どんな XPCOM オブジェクトでも読み込んで使用できるようになります。</dd>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Creating_event_targets">イベントターゲットの作成</a></dt>
+ <dd>定義したオブジェクトがイベントを発生させられるようにします。</dd>
+</dl>
+</div>
+
+<div class="column-half">
+<dl>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Listening_for_load_and_unload">読み込みと読み込み解除の確認</a></dt>
+ <dd>Firefox にアドオンが読み込まれたり、読み込み解除されたりしたときに通知を受け取ります。またコマンドラインからアドオンに引数を渡します。</dd>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Using_third-party_modules_(jpm)">サードパーティーモジュールの使用</a></dt>
+ <dd>SDK 自体に含まれていない追加のモジュールをインストールして使用します。</dd>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/l10n">ローカライゼーション</a></dt>
+ <dd>ローカライズ可能なコードを作成します。</dd>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Mobile_development">モバイル開発</a></dt>
+ <dd>Android 用 Firefox モバイルのアドオン開発を始める手順を説明します。</dd>
+</dl>
+
+<dl>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Mobile_development">アドオン用のデバッガー</a></dt>
+ <dd>アドオン内のJavaScriptのデバッグを行います。</dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<h3 id="応用"><a name="putting-it-together">応用 </a></h3>
+
+<div class="column-container">
+<div class="column-half">
+<dl>
+ <dt><a href="/ja/Add-ons/SDK/Tutorials/Annotator">アノテーターアドオン</a></dt>
+ <dd>より複雑なアドオンの開発作業を順を追って説明します。</dd>
+</dl>
+</div>
+</div>
diff --git a/files/ja/mozilla/add-ons/sdk/tutorials/installation/index.html b/files/ja/mozilla/add-ons/sdk/tutorials/installation/index.html
new file mode 100644
index 0000000000..b01e14ded3
--- /dev/null
+++ b/files/ja/mozilla/add-ons/sdk/tutorials/installation/index.html
@@ -0,0 +1,72 @@
+---
+title: インストール
+slug: Mozilla/Add-ons/SDK/Tutorials/Installation
+translation_of: Mozilla/Add-ons/SDK/Tools/jpm#Installation
+---
+<h2 id="前提条件">前提条件</h2>
+<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">アドオン SDK を使用して開発を行うには、以下が必要です。</span></p>
+<ul>
+ <li>
+ <p><a href="http://www.python.org/">Python</a> 2.5、2.6 または 2.7。<span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">Python バージョン 3.0 と 3.1 はサポートされていません。</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">環境変数 PATH に Python のパスを設定してください。</span></p>
+ </li>
+ <li>
+ <p>Firefox</p>
+ </li>
+ <li>
+ <p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">SDK 本体。</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">最新の安定したバージョンの SDK は、</span><a href="https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/jetpack-sdk-latest.tar.gz" style="line-height: 1.5;"><span style="line-height: 1.5;">tarball </span><span style="line-height: 19.9939994812012px; color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px;">または </span><span style="line-height: 19.9939994812012px; color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px;">zip ファイル として入手できます。あるいは、最新の開発バージョン</span></a>を <a href="https://github.com/mozilla/addon-sdk" style="line-height: 1.5;">GitHub </a>リポジトリ<a href="https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/jetpack-sdk-latest.tar.gz" style="line-height: 1.5;"><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">から入手することもできます。</span></a></p>
+ </li>
+</ul>
+<p><span style="font-size: 2.14285714285714rem; font-weight: 700; letter-spacing: -1px; line-height: 30px;">Mac OS Xでの Homebrew を使ったインストール</span></p>
+<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">アドオン SDK を </span><a href="http://brew.sh/" style="line-height: 1.5;">Homebrew</a><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> を用いてインストールするには、</span><span style="line-height: 1.5;">以下のコマンドを実行してください。</span></p>
+<pre>brew install mozilla-addon-sdk</pre>
+<h2 id="Mac_OS_X_Linux_でのインストール">Mac OS X / Linux でのインストール</h2>
+<p>shell や commnd prompt を用いて、任意の場所にアドオン SDK のファイルを展開し、SDK のルートディレクトリに移動してください。以下はコマンドの一例です。</p>
+<pre>tar -xf addon-sdk.tar.gz
+cd addon-sdk
+</pre>
+<p>次に、 Bash を使用している場合は以下を実行します。</p>
+<pre>source bin/activate
+</pre>
+<p>Bash 以外を使用している場合は、以下を実行します。</p>
+<pre>bash bin/activate
+</pre>
+<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">コマンドプロンプトの先頭に、SDK のルートディレクトリ名が追加されます。</span></p>
+<pre>(addon-sdk)~/mozilla/addon-sdk &gt;
+</pre>
+<h2 id="Windows_でのインストール">Windows でのインストール</h2>
+<p>shell や commnd prompt を用いて、任意の場所にアドオン SDK のファイルを展開し、SDK のルートディレクトリに移動してください。以下はコマンドの一例です。</p>
+<pre>7z.exe x addon-sdk.zip
+cd addon-sdk
+</pre>
+<p>次に、以下を実行します。</p>
+<pre>bin\activate
+</pre>
+<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">コマンドプロンプトの先頭に、SDK のルートディレクトリ名が追加されます。</span></p>
+<pre>(C:\Users\mozilla\sdk\addon-sdk) C:\Users\Work\sdk\addon-sdk&gt;
+</pre>
+<h2 id="SDK_仮想環境">SDK 仮想環境</h2>
+<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">上記のようにコマンドプロンプトが変更されていれば</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">、シェルで仮想環境が起動し、アドオン SDK コマンドラインツールにアクセスできます。</span></p>
+<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">仮想環境は</span> <code>deactivate</code> <span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">を実行していつでも終了することができます。</span></p>
+<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">仮想環境は、そのコマンドプロンプトにおいてのみ有効です。</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">コマンドプロンプトを閉じると</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">仮想環境が終了するので</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">、再び</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">仮想環境を起動するには、</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">新しいコマンドプロンプトを起動し </span><code style="font-style: normal; font-size: 13px; vertical-align: baseline; font-family: 'andale mono', monospace; color: rgb(68, 68, 68); line-height: 19.9939994812012px; background-clip: initial;">source bin/activate</code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> または </span><code style="font-style: normal; font-size: 13px; vertical-align: baseline; font-family: 'andale mono', monospace; color: rgb(68, 68, 68); line-height: 19.9939994812012px; background-clip: initial;">bin¥activate</code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> と入力する必要があります。</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">新しいコマンドプロンプトを開くだけでは、SDK は起動されません。</span></p>
+<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">ディスク上の異なる場所に SDK の複数のコピーを置き、切り替えて使用することもできます。</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">さらには、別個のコマンドプロンプトで、それぞれの</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">コピー</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">を同時に起動することも可能です。</span></p>
+<h3 id="activate_永続化"><code>activate</code> 永続化</h3>
+<p><code>activate</code> が行う処理は単に、<span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">最上位レベルの </span><code style="font-style: normal; font-size: 13px; vertical-align: baseline; font-family: 'andale mono', monospace; color: rgb(68, 68, 68); line-height: 19.9939994812012px; background-clip: initial;">bin</code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> ディレクトリにあるスクリプトを使用して、現在のコマンドプロンプトに関する複数の環境変数を設定することだけです。</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">そこで、使用する環境でこれらの変数が永続化されるように設定すれば、新しくコマンドプロンプトを開くだけでそれらの変数が読み込まれ、仮想環境が常に使用できます。</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">これにより、新しいコマンドプロンプトを開くたびに </span><code style="font-style: normal; font-size: 13px; vertical-align: baseline; font-family: 'andale mono', monospace; color: rgb(68, 68, 68); line-height: 19.9939994812012px; background-clip: initial;">activate</code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> と入力する必要がなくなります。</span></p>
+<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">ただし、コマンドプロンプトに関する変数が、新しい SDK のリリース時に変更されることがあります。設定が必要な変数を特定するために </span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">SDK の起動スクリプトを参照するのが最良の方法です</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">。</span><span style="line-height: 1.5;"> B</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">ash 環境(Linux および Mac OS X)と Windows 環境では、起動に使用するスクリプトも、それによって設定される変数も異なります。</span></p>
+<h4 id="Windows">Windows</h4>
+<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">Windows では、</span> <code>bin\activate</code> <span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">を実行すると </span><span style="line-height: 1.5;"> </span><code style="font-style: normal; line-height: 1.5;">activate.bat </code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">が使用されます。SDK を常に有効にするには、コマンドラインから</span><code style="font-style: normal; line-height: 1.5;"> </code><code style="font-style: normal; line-height: 1.5;">setx</code><span style="line-height: 1.5;"> </span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">ツールを使用するか、コントロール パネルを使用します。</span></p>
+<h4 id="LinuxMac_OS_X">Linux/Mac OS X</h4>
+<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">Linux および Mac OS X では、</span> <code>source bin/activate</code> により <code>activate</code> Bash スクリプトが実行されます。<span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">SDK を常に有効にするには、</span><span style="line-height: 1.5;">Linuxの場合は</span><span style="line-height: 1.5;"> </span><code style="font-style: normal; line-height: 1.5;">~/.bashrc</code><span style="line-height: 1.5;"> を、</span><span style="line-height: 1.5;">Mac OS Xの場合は</span><span style="line-height: 1.5;"> </span><code style="font-style: normal; line-height: 1.5;">~/.bashprofile </code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">を使用します。</span></p>
+<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">あるいは、</span><code style="font-style: normal; font-size: 13px; vertical-align: baseline; font-family: 'andale mono', monospace; color: rgb(68, 68, 68); line-height: 19.9939994812012px; background-clip: initial;">‾/bin</code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> ディレクトリにある </span><code style="font-style: normal; font-size: 13px; vertical-align: baseline; font-family: 'andale mono', monospace; color: rgb(68, 68, 68); line-height: 19.9939994812012px; background-clip: initial;">cfx</code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> プログラムへのシンボリックリンクを作成する方法もあります。</span></p>
+<pre>ln -s PATH_TO_SDK/bin/cfx ~/bin/cfx
+</pre>
+<h2 id="サニティチェック">サニティチェック</h2>
+<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">シェルプロンプトで以下を実行します。</span></p>
+<pre>cfx
+</pre>
+<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">一行目には以下のように表示されるでしょう。それに続いて、多数の使用方法の情報が表示されます。</span></p>
+<pre>Usage: cfx [options] [command] </pre>
+<p><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">これが</span> <a href="/en-US/Add-ons/SDK/Tools/cfx"><code>cfx</code> コマンドラインプログラム</a> です。<code style="font-style: normal; font-size: 13px; vertical-align: baseline; font-family: 'andale mono', monospace; color: rgb(68, 68, 68); line-height: 19.9939994812012px; background-clip: initial;">cfx</code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> は、アドオン SDK の主要なインターフェイスで、Firefox の起動とアドオンのテスト、アドオンを配布するためのパッケージング、</span><span style="line-height: 1.5;">説明書</span><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;">の表示、および単体テストの実行に使用します。</span></p>
+<h2 id="問題が発生した場合">問題が発生した場合</h2>
+<p><a href="/en-US/Add-ons/SDK/Tutorials/Troubleshooting">トラブルシューティング</a> のページを参照してください。</p>
+<h2 id="次のステップ">次のステップ</h2>
+<p><a href="/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">cfx 入門</a>のチュートリアルに目を通してください。<code style="font-style: normal; font-size: 13px; vertical-align: baseline; font-family: 'andale mono', monospace; color: rgb(68, 68, 68); line-height: 19.9939994812012px; background-clip: initial;">cfx</code><span style="color: rgb(68, 68, 68); font-family: 'helvetica neue', arial, helvetica, sans-serif; font-size: 13px; line-height: 19.9939994812012px;"> ツールによってアドオンを作成する方法を説明します。</span></p>
diff --git a/files/ja/mozilla/add-ons/sdk/tutorials/troubleshooting/index.html b/files/ja/mozilla/add-ons/sdk/tutorials/troubleshooting/index.html
new file mode 100644
index 0000000000..80db0e8976
--- /dev/null
+++ b/files/ja/mozilla/add-ons/sdk/tutorials/troubleshooting/index.html
@@ -0,0 +1,112 @@
+---
+title: トラブルシューティング
+slug: Mozilla/Add-ons/SDK/Tutorials/Troubleshooting
+translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Troubleshooting
+---
+<p>アドオン SDKを起動したり実行したりする際に問題があっても、慌てる必要はありません!問題を突き止めるにはどこから着手すれば良いのかを順番に見ていきましょう。</p>
+<h2 id="Quarantine_Problem_on_Mac_OS_X">Quarantine Problem on Mac OS X</h2>
+<p>On Mac OS X, you might see the following error when you try to run <code>cfx</code>:</p>
+<pre>/path/to/sdk/bin/cfx: /usr/bin/env: bad interpreter: Operation not permitted
+</pre>
+<p>This might be because the <code>cfx</code> executable file has been placed in quarantine during download from the Internet.</p>
+<p>To get it out of quarantine, use the <code>xattr -d</code> command, specifying <code>com.apple.quarantine</code> as the name of the attribute to delete, and <code>cfx</code> as the file from which to delete that attribute:</p>
+<pre>xattr -d com.apple.quarantine /path/to/sdk/bin/cfx
+</pre>
+<h2 id="Check_Your_Python">Check Your Python</h2>
+<p>The SDK's <code>cfx</code> tool runs on Python. If you're having trouble getting <code>cfx</code> to run at all, make sure you have Python correctly installed.</p>
+<p>Try running the following from a command line:</p>
+<pre> python --version
+</pre>
+<p><code>cfx</code> currently expects Python 2.5 or 2.6. Older and newer versions may or may not work.</p>
+<h2 id="Check_Your_Firefox_or_XULRunner">Check Your Firefox or XULRunner</h2>
+<p><code>cfx</code> searches well known locations on your system for Firefox or XULRunner. <code>cfx</code> may not have found an installation, or if you have multiple installations, <code>cfx</code> may have found the wrong one. In those cases you need to use <code>cfx</code>'s <code>--binary</code> option. See the <a href="/en-US/Add-ons/SDK/Tools/cfx">cfx Tool</a> guide for more information.</p>
+<p>When you run <code>cfx</code> to test your add-on or run unit tests, it prints out the location of the Firefox or XULRunner binary that it found, so you can check its output to be sure.</p>
+<h2 id="Check_Your_Text_Console">Check Your Text Console</h2>
+<p>When errors are generated in the SDK's APIs and your code, they are logged to the text console. This should be the same console or shell from which you ran the <code>cfx</code> command.</p>
+<h2 id="Don't_Leave_Non-SDK_Files_Lying_Around">Don't Leave Non-SDK Files Lying Around</h2>
+<p>Currently the SDK does not gracefully handle files and directories that it does not expect to encounter. If there are empty directories or directories or files that are not related to the SDK inside your <code>addon-sdk</code> directory or its sub-directories, try removing them.</p>
+<h2 id="Search_for_Known_Issues">Search for Known Issues</h2>
+<p>Someone else might have experienced your problem, too. Other users often post problems to the <a href="http://groups.google.com/group/mozilla-labs-jetpack/topics">project mailing list</a>. You can also browse the list of <a href="https://bugzilla.mozilla.org/buglist.cgi?order=Bug%20Number&amp;resolution=---&amp;resolution=DUPLICATE&amp;query_format=advanced&amp;product=Add-on%20SDK">known issues</a> or <a href="https://bugzilla.mozilla.org/query.cgi?format=advanced&amp;product=Add-on%20SDK">search</a> for specific keywords.</p>
+<h2 id="Contact_the_Project_Team_and_User_Group">Contact the Project Team and User Group</h2>
+<p>SDK users and project team members discuss problems and proposals on the <a href="http://groups.google.com/group/mozilla-labs-jetpack/topics">project mailing list</a>. Someone else may have had the same problem you do, so try searching the list. You're welcome to post a question, too.</p>
+<p>You can also chat with other SDK users in <a href="http://mibbit.com/?channel=%23jetpack&amp;server=irc.mozilla.org">#jetpack</a> on <a href="http://irc.mozilla.org/">Mozilla's IRC network</a>.</p>
+<p>And if you'd like to <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Add-on%20SDK&amp;component=General">report a bug in the SDK</a>, that's always welcome! You will need to create an account with Bugzilla, Mozilla's bug tracker.</p>
+<h2 id="Run_the_SDK's_Unit_Tests">Run the SDK's Unit Tests</h2>
+<p>The SDK comes with a suite of tests which ensures that its APIs work correctly. You can run it with the following command:</p>
+<pre> cfx testall
+</pre>
+<p>Some of the tests will open Firefox windows to check APIs related to the user interface, so don't be alarmed. Please let the suite finish before resuming your work.</p>
+<p>When the suite is finished, your text console should contain output that looks something like this:</p>
+<pre> Testing cfx...
+ .............................................................
+ ----------------------------------------------------------------------
+ Ran 61 tests in 4.388s
+
+OK
+ Testing reading-data...
+ Using binary at '/Applications/Firefox.app/Contents/MacOS/firefox-bin'.
+ Using profile at '/var/folders/FL/FLC+17D+ERKgQe4K+HC9pE+++TI/-Tmp-/tmpu26K_5.mozrunner'.
+ .info: My ID is 6724fc1b-3ec4-40e2-8583-8061088b3185
+ ..
+ 3 of 3 tests passed.
+ OK
+ Total time: 4.036381 seconds
+ Program terminated successfully.
+ Testing all available packages: nsjetpack, test-harness, api-utils, development-mode.
+ Using binary at '/Applications/Firefox.app/Contents/MacOS/firefox-bin'.
+ Using profile at '/var/folders/FL/FLC+17D+ERKgQe4K+HC9pE+++TI/-Tmp-/tmp-dzeaA.mozrunner'.
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ .........................................................................
+ ...............................................
+
+3405 of 3405 tests passed.
+ OK
+ Total time: 43.105498 seconds
+ Program terminated successfully.
+ All tests were successful. Ship it!
+</pre>
+<p>If you get lots of errors instead, that may be a sign that the SDK does not work properly on your system. In that case, please file a bug or send a message to the project mailing list. See the previous section for information on doing so.</p>
diff --git a/files/ja/mozilla/add-ons/themes/obsolete/index.html b/files/ja/mozilla/add-ons/themes/obsolete/index.html
new file mode 100644
index 0000000000..48bf1f18f0
--- /dev/null
+++ b/files/ja/mozilla/add-ons/themes/obsolete/index.html
@@ -0,0 +1,46 @@
+---
+title: Obsolete
+slug: Mozilla/Add-ons/Themes/Obsolete
+tags:
+ - Obsolete
+ - アドオン
+ - アーカイブ
+ - テーマ
+ - ルックアンドフィール
+translation_of: Mozilla/Add-ons/Themes/Obsolete
+---
+<p> </p>
+
+<p>{{AddonSidebar}}</p>
+
+<div class="boxed translate-rendered text-content">
+<p>このページには、これまでに更新されることはないテーマドキュメントやリソースが含まれていますが、当面は更新されたドキュメントのソースとして使用されています。</p>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Archive/Themes/Creating_a_Skin_for_Firefox">Creating a Skin for Firefox</a>
+
+ <ul>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Archive/Themes/Creating_a_Skin_for_Firefox/UUID">UUID</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Archive/Themes/Creating_a_Skin_for_Firefox/contents.rdf">contents.rdf</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Archive/Themes/Creating_a_Skin_for_Firefox/install.rdf">install.rdf</a></li>
+ </ul>
+ </li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Archive/Themes/Theme_changes_in_Firefox_2">Theme changes in Firefox 2</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Archive/Themes/Theme_changes_in_Firefox_3">Theme changes in Firefox 3</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Archive/Themes/Theme_changes_in_Firefox_3.5">Theme changes in Firefox 3.5</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Archive/Themes/Theme_changes_in_Firefox_4">Theme changes in Firefox 4</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Building_a_Theme" title="Building a Theme">Building a Theme</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Themes/Common_Firefox_Theme_Issues_and_Solutions" title="Themes/Common_Firefox_Theme_Issues_and_Solutions">Common Theme Issues and Their Solutions</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Making_Sure_Your_Theme_Works_with_RTL_Locales" title="Making_Sure_Your_Theme_Works_with_RTL_Locales">Making Sure Your Theme Works with RTL Locales</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Creating_a_Skin_for_SeaMonkey_2.x" title="Creating_a_Skin_for_SeaMonkey_2.x">Creating a Skin for SeaMonkey 2</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/DOM_Inspector" title="DOM_Inspector">DOM Inspector</a></li>
+</ul>
+
+<ul>
+ <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/inspectorwidget/">InspectorWidget</a></li>
+ <li><a class="link-https" href="https://addons.mozilla.org/en-us/firefox/addon/force-rtl/">Force RTL</a></li>
+ <li><a class="link-http" href="http://www.tudobom.de/articles/yatt/" title="http://www.tudobom.de/articles/yatt/">Yet Another Theme Tutorial</a></li>
+</ul>
+</div>
+
+<p> </p>
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>
diff --git a/files/ja/mozilla/calendar/index.html b/files/ja/mozilla/calendar/index.html
new file mode 100644
index 0000000000..47797046ae
--- /dev/null
+++ b/files/ja/mozilla/calendar/index.html
@@ -0,0 +1,62 @@
+---
+title: Calendar
+slug: Mozilla/Calendar
+tags:
+ - Calendar
+ - NeedsTranslation
+ - NeedsUpdate
+ - TopicStub
+translation_of: Mozilla/Calendar
+---
+<table>
+ <tbody>
+ <tr>
+ <td><img alt="Sunbird-Logo-148x155.png" class="default internal" src="/@api/deki/files/3621/=Sunbird-Logo-148x155.png" style="height: 155px; width: 148px;"></td>
+ <td>
+ <p><span class="seoSummary">The Mozilla Calendar Project is a community driven project based on the Mozilla application architecture. The Project's heart is a calendaring backend based on libical. The <a class="external" href="http://www.mozilla.org/projects/calendar/lightning/" title="http://www.mozilla.org/projects/calendar/lightning/">Lightning extension</a> is built on top of this platform and provides integrated calendaring capabilities for Mozilla Messaging's Email client <a class="internal" href="/en/Thunderbird" title="En/Thunderbird">Thunderbird</a>.</span></p>
+
+ <p>Mozilla Calendar emphasizes free and open source technology and supports standardized technology like the ical/ics (<a class="external" href="http://tools.ietf.org/html/rfc2445" title="http://tools.ietf.org/html/rfc2445">rfc2445</a>) format and the CalDAV (<a class="external" href="http://tools.ietf.org/html/rfc4791" title="http://tools.ietf.org/html/rfc4791">rfc4791</a>) protocol, which is implemented by many freely available servers and also some commercial providers.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td style="vertical-align: top;">
+ <h2 id="Development_Topics">Development Topics</h2>
+
+ <dl>
+ <dt><a class="internal" href="/en/Simple_Sunbird_build" title="en/Simple Sunbird build">Building Calendar</a></dt>
+ <dd>Information about building Calendar with the new <a class="internal" href="/en/comm-central" title="en/comm-central">comm-central</a> repository. There is also a simple build page for <a class="internal" href="/en/Simple_Thunderbird_build#Building_Thunderbird_and_Lightning" title="en/Simple Thunderbird build#Building Thunderbird and Lightning">Thunderbird including Lightning</a> and information about <a class="internal" href="/en/How_comm-central's_build_system_works" title="en/How comm-central's build system works">how comm-central works</a>.</dd>
+ </dl>
+
+ <dl>
+ <dt><a class="link-https" href="https://wiki.mozilla.org/Calendar:Creating_an_Extension" title="https://wiki.mozilla.org/Calendar:Creating_an_Extension">Creating a Calendar extension</a></dt>
+ <dd>Tutorial on creating a Calendar extension for Sunbird and Lightning.</dd>
+ </dl>
+
+ <dl>
+ <dt><a class="internal" href="/en/Calendar/Localization" title="En/Calendar/Localization"><strong>Localization</strong></a></dt>
+ <dd>How to get started with translating Calendar into your language and how to build Lightning in your language. </dd>
+ <dt>Testing Calendar</dt>
+ <dd><a class="internal" href="/en/Calendar/MozMill_Testing" title="En/Calendar/MozMill Testing">CalendarUtils reference</a> for writing <a class="internal" href="/en/Mozmill_Tests" title="en/Mozmill Tests">Mozmill tests</a>, which can automatically test the UI so that regressions can be easily found.</dd>
+ <dt><a href="/en/Calendar/Calendar_Versions" title="en/Calendar/Calendar Versions">Calendar Versions</a></dt>
+ <dd>This page will tell you which Calendar version fits with which Mozilla Platform and where current development is being done.</dd>
+ </dl>
+ </td>
+ <td style="vertical-align: top;">
+ <h2 id="Tools">Tools</h2>
+
+ <dl>
+ <dt><a class="link-https" href="https://bugzilla.mozilla.org/query.cgi?format=specific&amp;product=Calendar" title="https://bugzilla.mozilla.org/query.cgi?format=specific&amp;product=Calendar">Bugzilla</a></dt>
+ <dd>The <a class="internal" href="/en/Bugzilla" title="En/Bugzilla">Bugzilla</a> database used to track issues for Mozilla projects.</dd>
+ <dt><a class="link-https" href="https://wiki.mozilla.org/Calendar:QA_CalDAV_Support" title="https://wiki.mozilla.org/Calendar:QA_CalDAV_Support">Calendar Servers</a></dt>
+ <dd>Setup your own calendar server, or check to see how well commercial products are supported.</dd>
+ <dt></dt>
+ </dl>
+ </td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/ja/mozilla/chrome_registration/index.html b/files/ja/mozilla/chrome_registration/index.html
new file mode 100644
index 0000000000..1fabd9cae2
--- /dev/null
+++ b/files/ja/mozilla/chrome_registration/index.html
@@ -0,0 +1,360 @@
+---
+title: Chrome Registration
+slug: Mozilla/Chrome_Registration
+tags:
+ - Toolkit API
+translation_of: Mozilla/Chrome_Registration
+---
+<p> </p>
+
+<h2 id="Chrome_.28.E3.82.AF.E3.83.AD.E3.83.A0.29_.E3.81.A8.E3.81.AF_.3F" name="Chrome_.28.E3.82.AF.E3.83.AD.E3.83.A0.29_.E3.81.A8.E3.81.AF_.3F">Chrome (クロム) とは?</h2>
+
+<p><a href="/ja/Chrome" title="ja/Chrome">Chrome</a> とは、アプリケーションウィンドウで、そのウィンドウのコンテンツ領域の外側にあるユーザーインターフェイス要素のセットのことです。 ツールバーやメニューバー、プログレスバー、およびウィンドウタイトルバーといった要素は、全て chrome の部分の典型的な例になります。</p>
+
+<p>Mozilla は拡張機能とテーマについて、ルートディレクトリに置かれた <code>chrome.manifest</code> を認識します。</p>
+
+<div class="geckoVersionNote">
+<p>{{ gecko_callout_heading("2.0") }}</p>
+
+<p>Gecko 1.9.2 およびそれ以前では、Mozilla はアプリケーションのルートから見て <code>chrome/*.manifest</code> の位置にあるマニフェストファイルも読み込みます。Gecko 2.0 {{ geckoRelease("2.0") }} 以降では、ルートに置かれた <code>chrome.manifest</code> だけがマニフェストファイルとして利用されますが、<a href="/ja/Chrome_Registration#manifest" title="ja/Chrome Registration#manifest"><code>manifest</code></a> コマンドを使う事で、任意のファイルを追加のマニフェストファイルとして読み込ませる事ができます。</p>
+</div>
+
+<p>{{ 英語版章題("Chrome_Providers") }}</p>
+
+<h2 id="Chrome_.E3.83.97.E3.83.AD.E3.83.90.E3.82.A4.E3.83.80" name="Chrome_.E3.83.97.E3.83.AD.E3.83.90.E3.82.A4.E3.83.80">Chrome プロバイダ</h2>
+
+<p>ある種類のウィンドウ (例: ブラウザ用ウィンドウ) のための chrome の{{ 訳語("供給元", "supplier") }}を、chrome プロバイダと呼びます。 特定のウィンドウに対して、ツールバー上に表示する画像から利用するテキストを記述したファイルまで、 コンテンツとウィンドウ自身の外観のための完全な chrome のセットを供給するために、 複数のプロバイダが一緒に動作することになります。</p>
+
+<p>chrome プロバイダの 3 つの基本型を以下に示します。</p>
+
+<p>{{ 英語版章題("Content") }}</p>
+
+<h3 id=".E3.82.B3.E3.83.B3.E3.83.86.E3.83.B3.E3.83.88" name=".E3.82.B3.E3.83.B3.E3.83.86.E3.83.B3.E3.83.88">コンテント</h3>
+
+<p>ウィンドウを記述するための主要なソースファイルは、コンテントプロバイダから供給されます。 これらは Mozilla の中から参照可能な任意の種類のファイルであることが可能ですが、 典型的には、ウィンドウやダイアログを記述するために設計されている XUL ファイルになります。 また、ユーザーインターフェイスを定義する JavaScript ファイルもコンテントパッケージに含まれ、 ほとんどの XBL バインディングファイルも同様です。</p>
+
+<p>{{ 英語版章題("Locale") }}</p>
+
+<h3 id=".E3.83.AD.E3.82.B1.E3.83.BC.E3.83.AB" name=".E3.83.AD.E3.82.B1.E3.83.BC.E3.83.AB">ロケール</h3>
+
+<p>ローカライズ可能なアプリケーションは、全てのローカライズのための情報をロケールプロバイダに保持します。 これにより、翻訳者は別の chrome パッケージを差し込むだけで、ソースコードのそれ以外の部分を変更することなく、アプリケーションの翻訳を行うことが可能になります。 ローカライズ可能な主なファイルは、DTD ファイルと Java スタイルのプロパティファイルの 2 つになります。</p>
+
+<p>{{ 英語版章題("Skin") }}</p>
+
+<h3 id=".E3.82.B9.E3.82.AD.E3.83.B3" name=".E3.82.B9.E3.82.AD.E3.83.B3">スキン</h3>
+
+<p>スキンプロバイダは、chrome の視覚的な外観を記述するための、完全なファイルのセットを提供する役割を持っています。 典型的なスキンプロバイダは、CSS ファイルと画像を提供することになります。</p>
+
+<p>{{ 英語版章題("The Chrome Registry") }}</p>
+
+<h2 id="Chrome_.E3.83.AC.E3.82.B8.E3.82.B9.E3.83.88.E3.83.AA" name="Chrome_.E3.83.AC.E3.82.B8.E3.82.B9.E3.83.88.E3.83.AA">Chrome レジストリ</h2>
+
+<p>Gecko の実行環境は、chrome レジストリとして知られる、chrome パッケージ名から chrome パッケージのディスク上の物理的な位置へのマッピングを提供するサービスを保守しています。</p>
+
+<p>この chrome レジストリが、コンフィグ可能で{{ 訳語("永続的", "persistent") }}であるため、 利用者は異なった chrome プロバイダをインストールして、好みのスキンやロケールを選択することが可能になります。 これは、xpinstall と、拡張マネージャによって実現されます。</p>
+
+<p>利用可能な chrome の chrome レジストリの情報のために、テキストのマニフェストが使用されます。 このマニフェストは、拡張機能やテーマのルートに置かれた「chrome.manifest」であり、XULRunner アプリケーションの chrome/*.manifest に該当します。</p>
+
+<p>このプレインテキストの chrome マニフェストは、以下のような単純な行ベースのフォーマットになっています。 各行は個々に{{ 訳語("解釈", "parse") }}されます。 つまり、その行が chrome レジストリにとって解釈可能な場合は、その行で指定される動作を行い、 不可能な場合 chrome レジストリはその行を無視します。 (警告メッセージが実行時エラーのコンソールに出力されます)</p>
+
+<pre class="eval">locale パッケージ名 ロケール名 path/to/files
+skin パッケージ名 テーマ名 path/to/files
+</pre>
+
+<p></p><div class="warning">パッケージ名に大文字と小文字が両方含まれている場合、Firefox 2, ThunderBird 2, および SeaMonkey 1.1 は chrome を認識しません。もし上記の例のパッケージ名の箇所が <strong>C</strong>amel<strong>C</strong>ase<strong>P</strong>ackage のようになっている場合には、\"chrome://<strong>c</strong>amel<strong>c</strong>ase<strong>p</strong>ackage/path/to/files に対する chrome が登録されていません\" のようなエラーメッセージが表示されるでしょう。Firefox 3, ThunderBird 3, および SeaMonkey 2 は大文字と小文字を両方含むパッケージ名に対応しています。このバグは Mozilla 1.9 で修正されました。<a class="external" href="https://bugzilla.mozilla.org/show_bug.cgi?id=132183" title="https://bugzilla.mozilla.org/show_bug.cgi?id=132183">Bug 132183</a> を参照してください。</div><p></p>
+
+<p>{{ 英語版章題("Manifest Instructions") }}</p>
+
+<h2 id=".E3.83.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88.E5.91.BD.E4.BB.A4_.28Instruction.29" name=".E3.83.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88.E5.91.BD.E4.BB.A4_.28Instruction.29">マニフェスト命令 (Instruction)</h2>
+
+<h3 id=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88" name=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88">コメント</h3>
+
+<p>文字 '#' で始まる行はコメントです。 その行のそれ以降の文字は全て無視されます。</p>
+
+<pre class="eval"># この行はコメントです。ここには何でも書けます。
+</pre>
+
+<h3 id="content" name="content">manifest</h3>
+
+<p>{{ gecko_minversion_inline("2.0b4") }}</p>
+
+<pre>manifest <em>サブディレクトリ</em> <em>/foo.manifest [フラグ]</em>
+</pre>
+
+<p>この指定は追加のマニフェストファイルを読み込みます。これはコンポーネントや chrome の登録、プラットフォーム依存の登録用の指定を別ファイルに分割する場合に便利かもしれません。</p>
+
+<h3 id="binary-component">binary-component</h3>
+
+<p>{{ gecko_minversion_inline("2.0b2") }}</p>
+
+<pre>binary-component <em>components/mycomponent.dll</em> <em>[フラグ]</em>
+</pre>
+
+<p>Mozilla に対して、バイナリ形式のコンポーネントを登録し利用するよう指示します。コンポーネントが ABI に依存する物である場合には、これは abi フラグと同時に使用されるべきです。<a href="/ja/XPCOM/XPCOM_changes_in_Gecko_2.0" title="ja/XPCOM/XPCOM changes in Gecko 2.0">Firefox 4 よりも前のバージョンでは</a>、components ディレクトリにあるファイルは自動的に登録されていました。</p>
+
+<h3 id="interfaces">interfaces</h3>
+
+<p>{{ gecko_minversion_inline("2.0b2") }}</p>
+
+<pre>interfaces <em>components/mycomponent.xpt</em> <em>[フラグ]</em>
+</pre>
+
+<p>Mozilla に対して、XPIDL によって生成された typelib ファイルからインターフェースの情報を読み込むよう指示します。<a href="/ja/XPCOM/XPCOM_changes_in_Gecko_2.0" title="ja/XPCOM/XPCOM changes in Gecko 2.0">Firefox 4 よりも前のバージョンでは</a>、components ディレクトリにあるファイルは自動的に登録されていました。</p>
+
+<h3 id="component">component</h3>
+
+<p>{{ gecko_minversion_inline("2.0b2") }}</p>
+
+<pre>component <em>{00000000-0000-0000-0000-000000000000}</em> <em>components/mycomponent.js</em> <em>[フラグ]</em>
+</pre>
+
+<p>Mozilla に対して、JavaScript(あるいはその他の利用可能なスクリプト言語)で記述された XPCOM コンポーネントの実装についてコンポーネントの CID の情報を与えます。クラスID {0000...} はそのコンポーネントによって実装されているクラスIDと一致しなくてはなりません。</p>
+
+<h3 id="contract">contract</h3>
+
+<p>{{ gecko_minversion_inline("2.0b2") }}</p>
+
+<pre>contract <em>@foobar/mycontract;</em> <em>{00000000-0000-0000-0000-000000000000}</em> <em>[フラグ]</em>
+</pre>
+
+<p>コントラクト ID(ヒューマンリーダブルな文字列)を特定の実装のクラス ID にマッピングします。一般的には、1つのコントラクト ID はその直前に書かれた component エントリと対にして記述されるでしょう。</p>
+
+<h3 id="category">category</h3>
+
+<p>{{ gecko_minversion_inline("2.0b2") }}</p>
+
+<pre>category <em>カテゴリ名</em> <em>エントリ名</em> <em>値</em> <em>[フラグ]</em>
+</pre>
+
+<p>エントリを<a href="/ja/XPCOM_Interface_Reference/nsICategoryManager" title="ja/XPCOM Interface Reference/nsICategoryManager">カテゴリーマネージャ</a>に登録します。カテゴリによって、記述する内容の形式や意味は変わります。</p>
+
+<h3 id="content" name="content">content</h3>
+
+<p>この行により、コンテントパッケージが登録されます。</p>
+
+<pre class="eval">content <em>パッケージ名</em> <em>uri/to/files/</em> <em>[フラグ]</em>
+</pre>
+
+<p>これによって、URI <code>chrome://<em>パッケージ名</em>/content/...</code> によって参照された場合に実際のファイルシステム上の場所を解決するための情報が登録されます。 URI は、絶対指定か、このマニフェストファイルからの相対パスを指定します。 この URI 指定は、'/' で終了している必要があることに注意してください。</p>
+
+<h3 id="locale" name="locale">locale</h3>
+
+<p>この行により、ロケールパッケージが登録されます。</p>
+
+<pre class="eval">locale <em>パッケージ名</em> <em>ロケール名</em> <em>uri/to/files/</em> <em>[flags]</em>
+</pre>
+
+<p>これによって、URI <code>chrome://<em>packagename</em>/locale/...</code> によって参照されるロケールパッケージを登録します。 <em>ロケール名</em> は、「en」のように言語だけの識別子か、「en-US」のような「言語-国」の識別子になります。 もし、そのパッケージに複数のロケールが登録されている場合、 chrome レジストリは、利用者の{{ 訳語("設定", "preference") }}に最もふさわしいロケールを選択して利用することになります。</p>
+
+<div class="note">
+<p>{{ 訳注("日本語の場合のロケール名について") }}</p>
+
+<p>Firefox 1.5 以上は上位互換性を持っており、ja であろうが ja-JP であろうが問題なく動作します。 但し、*.manifest は ja/ja-JP-mac 世代の製品でしか使いませんから、contents.rdf でどうするかにかかわらず、ja を使用することを推奨します。</p>
+
+<p>Firefox/Thunderbird 1.5 以降での locale の選択は</p>
+
+<ol>
+ <li>general.useragenet.locale に完全一致するものがあればそれを使用</li>
+ <li>完全一致ではないが言語コードが一致するものがあればそれを使用</li>
+ <li>言語コードが一致するものがなければ en-US を使用</li>
+</ol>
+
+<p>という規則になっているので、拡張機能側では ja でも ja-JP でも好きな方を指定して動作上問題ありません。 Firefox/Thunderbird 1.5 以降しかサポートしないのに ja-JP を指定するというのはナンセンスですので推奨しませんが、Firefox/Thunderbird 1.0.x や Seamonkey 1.0.x などもサポートするのであれば ja でも ja-JP でも構いません。</p>
+
+<p>※ <a class="external" href="http://forums.firehacks.org/l10n/viewtopic.php?p=4923">Mozilla L10N フォーラムの記事 </a> から引用</p>
+</div>
+
+<h3 id="skin" name="skin">skin</h3>
+
+<p>この行により、スキンパッケージが登録されます。</p>
+
+<pre class="eval">skin <em>パッケージ名</em> <em>スキン名</em> <em>uri/to/files/</em> <em>[フラグ]</em>
+</pre>
+
+<p>これによって、URI <code><a class="external" rel="freelink">chrome://packagename/skin/</a>...</code> によって参照されるスキンパッケージを登録します。 <em>スキン名</em> にはインストールされるスキンを識別する{{ 訳語("適当な", "opaque") }}文字列を指定します。 もし、そのパッケージに複数のスキンが登録されている場合、 chrome レジストリは、利用者の{{ 訳語("設定", "preference") }}に最もふさわしいスキンを選択して利用することになります。</p>
+
+<h3 id="overlay" name="overlay">overlay</h3>
+
+<p>XUL オーバーレイは、以下の構文で登録されます。</p>
+
+<pre class="eval">overlay chrome://<em>オーバーレイが適用されるURI</em> chrome://<em>適用するオーバーレイのURI</em> <em>[フラグ]</em>
+</pre>
+
+<h3 id="style" name="style">style</h3>
+
+<p>スタイルオーバーレイ (chrome ページに適用するためのカスタム CSS) は、以下の構文で登録されます。</p>
+
+<pre class="eval">style chrome://<em>スタイルが適用されるURI</em> chrome://<em>スタイルシートのURI</em> <em>[フラグ]</em>
+</pre>
+
+<div class="note">
+<p>この機能はChrome URIのスタイルシートについてだけ利用できることに注意してください。</p>
+</div>
+
+<h3 id="override" name="override">override</h3>
+
+<p>{{ 訳語("拡張機能", "extension") }}や embedder で、アプリケーションや XULRunner が提供しているファイルをオーバーライドしたくなるケースがあります。 これは、chrome 登録マニフェストの 「override」命令で可能になります。</p>
+
+<pre class="eval">override chrome://<em>package</em>/<em>type</em>/<em>オーバーライドされる元のURI</em> <em>オーバーライドするURI</em> <em>[フラグ]</em>
+</pre>
+
+<p>注: override 指定は再帰的には適用されません。(ですので、<a class="external" rel="freelink">chrome://foo/content/bar/</a> を <a class="external" rel="freelink">file:///home/john/blah/</a> でオーバーライドしても、大抵の場合は意図した通りには動作しないでしょう。</p>
+
+<div class="note">
+<p>Gecko 1.8.1.5(Firefox 2.0.0.5)およびそれ以前のバージョンにはバグがあり、<em>オーバーライドするURI</em> の部分に相対パスを指定できませんでした。そのため、必ず絶対URIを指定する必要がありました。{{ Bug(323455) }} を参照してください。</p>
+</div>
+
+<h3 id="resource" name="resource">resource</h3>
+
+<p>{{ Fx_minversion_inline(3) }}</p>
+
+<p><a href="/ja/JavaScript_code_modules/Using" title="ja/JavaScript_code_modules/Using">JavaScript コードモジュール</a> を利用する場合、拡張機能やアプリケーションが<a href="/ja/Components.utils.import" title="ja/Components.utils.import">Components.utils.import</a> を使用してモジュールを読み込めるようにするために、resource プロトコルのエイリアスを作成する必要があるでしょう。エイリアスは <code>resource</code> 行を使うことによって作られます:</p>
+
+<pre class="eval">resource <em>エイリアス名</em> <em>uri/to/files/</em> <em>[flags]</em>
+</pre>
+
+<p>これは <code>resource://&lt;エイリアス名&gt;/</code> という URI に対して、与えられたパスへのマッピングを行います。</p>
+
+<div class="note">
+<p>Web 上のコンテンツを resource URI から読み込むことを防ぐようなセキュリティ上の制限事項は無いことに注意が必要です。ここで何を可視化しようとしているのかについて注意を払ってください。</p>
+</div>
+
+<p>{{ 英語版章題("Manifest Flags") }}</p>
+
+<h2 id=".E3.83.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88.E3.83.95.E3.83.A9.E3.82.B0" name=".E3.83.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88.E3.83.95.E3.83.A9.E3.82.B0">マニフェストフラグ</h2>
+
+<p>マニフェストの行は、空白区切りにより複数のフラグを持つことができ、 それらは登録行の最後に追加します。 これらのフラグは、そのパッケージの chrome に特殊な属性をマークしたり、 その行が使用される条件を制限するために使用されます。</p>
+
+<h3 id="application" name="application">application</h3>
+
+<p>{{ 訳語("拡張機能", "Extensions") }}は、複数のアプリケーションに対してインストールされる可能性があります。 特定のアプリケーションだけに適用する chrome 登録行を置きたい場合には、</p>
+
+<pre class="eval">application=<em>app-ID</em>
+</pre>
+
+<p>のフラグによって、拡張機能が <em>app-ID</em> で識別されるアプリケーションに対してインストールされる場合にのみ、この命令を適用することを示します。 複数の <code>application</code> フラグを単一の行に含めても構いません。 その場合は、その中のいずれかが一致した場合に適用されることになります。</p>
+
+<p>これは、異なるアプリケーションに対してどのように異なるオーバーレイを適用するかを示す例です。</p>
+
+<pre style="white-space: pre-wrap;">overlay chrome://browser/content/browser.xul chrome://myaddon/content/ffOverlay.xul application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
+overlay chrome://messenger/content/mailWindowOverlay.xul chrome://myaddon/content/tbOverlay.xul application={3550f703-e582-4d05-9a08-453d09bdfdc6}
+overlay chrome://songbird/content/xul/layoutBaseOverlay.xul chrome://myaddon/content/sbOverlay.xul application=songbird@songbirdnest.com
+</pre>
+
+<h3 id="appversion" name="appversion">appversion</h3>
+
+<p>{{ 訳語("拡張機能", "Extensions") }}は、アプリケーションの複数のバージョンに対してインストールされる可能性があります。 特定のバージョンだけに適用する chrome 登録行を置きたい場合には、</p>
+
+<pre class="eval">appversion=<em>version</em>
+appversion&lt;<em>version</em>
+appversion&lt;=<em>version</em>
+appversion&gt;<em>version</em>
+appversion&gt;=<em>version</em>
+</pre>
+
+<p>のフラグによって、拡張機能が識別されたバージョンのアプリケーションにインストールされる場合にのみ、この命令を適用することを示します。 複数の <code>appversion</code> フラグを単一の行に含めても構いません。 その場合は、その中のいずれかが一致した場合に適用されることになります。 なお、バージョン文字列は、<a href="/ja/Toolkit_version_format" title="ja/Toolkit_version_format">Toolkit version format</a> に従っている必要があります。</p>
+
+<div class="note">
+<p>Gecko 1.8.0.13 および 1.8.1.5 以前のバージョンには、比較演算子 &lt;, &gt; または = を使用していてバージョン文字列の中に2つ以上のアルファベットが含まれている場合についてバグがありました。バグを踏んだ場合には、エラーコンソールに <code>appversion</code> フラグを解釈できなかった旨のメッセージが表示されていました。{{ Bug(380398) }} を参照してください。</p>
+</div>
+
+<h3 id="contentaccessible" name="contentaccessible">contentaccessible</h3>
+
+<p>{{ Fx_minversion_inline(3) }} chrome のリソースは、信頼されていないソースから読み込まれたページに含まれる、またはそのようなページに挿入された  &lt;img&gt;, &lt;script&gt; またはその他の要素から参照できなくなりました。この制限は、信頼できないソースの中で定義された要素と、信頼された拡張機能によって追加された要素のいずれに対しても適用されます。もしそのような参照を明示的に許可する必要がある場合には、古いバージョンのFirefox と同じ結果を得るために、<code>contentaccessible</code> フラグを <code>yes</code> と指定してください。詳細は<span class="comment"> {{ bug(436989) }} を参照してください。</span></p>
+
+<p><code>contentaccessible</code> フラグはコンテントパッケージに対してのみ適用でき、ロケールまたはスキンの登録に対しては無視されます。しかしながら、マッチしたロケールおよびスキンのパッケージは、コンテントパッケージにも露出するでしょう。</p>
+
+<p><strong>注:</strong> 古いバージョンの Firefox は <code>contentaccessible</code> フラグを解釈しないため、 Firefox 3 とそれ以前のバージョンの Firefox の両方に対応するよう設計された拡張機能は、フォールバックのための指定を必要とするでしょう。例:</p>
+
+<pre style="white-space: pre-wrap;">content packagename chrome/path/
+content packagename chrome/path/ contentaccessible=yes
+</pre>
+
+<p><span class="comment">これは {{ bug(292789) }} のため、</span><span class="comment">Firefox 3 RC 1 において変更されました。</span></p>
+
+<h3 id="os" name="os">os</h3>
+
+<p>{{ Fx_minversion_inline(3) }} 拡張機能(およびテーマ)は、Firefoxが動作しているオペレーティングシステムに依存した異なる機能を提供することができます。値はそのプラットフォームの <a href="/ja/OS_TARGET" title="ja/OS_TARGET">OS_TARGET</a> の値と比較されます。</p>
+
+<pre class="eval">os=WINNT
+os=Darwin
+</pre>
+
+<p>OSの名前のより詳しいリストは<a href="/ja/OS_TARGET" title="ja/OS_TARGET">OS_TARGET</a>を参照してください。OSの名前は大文字小文字は区別されません。</p>
+
+<h3 id="osversion" name="osversion">osversion</h3>
+
+<p>{{ Fx_minversion_inline(3) }} 拡張機能あるいはテーマは動作しているオペレーティングシステムのバージョンによって異なる挙動を示す必要に迫られることがあります。例えば、あるテーマでMac OS X 10.5(以降)用に、10.4(以前)とは異なる外観を適用したい場合はこのようになります:</p>
+
+<pre class="eval">osversion&gt;=10.5
+</pre>
+
+<h3 id="abi" name="abi">abi</h3>
+
+<p>{{ Fx_minversion_inline(4) }} コンポーネントが特定の API に対してのみ互換性がある場合、この指定で ABI を記述する事ができます。例:</p>
+
+<pre>binary-component abi=WINNT_<code>x86-MSVC </code></pre>
+
+<p>より詳しい情報は <a href="/ja/XPCOM_ABI" title="ja/XPCOM ABI">XPCOM ABI</a> を参照してください。</p>
+
+<h3 id="platform_.28.E3.83.97.E3.83.A9.E3.83.83.E3.83.88.E3.83.95.E3.82.A9.E3.83.BC.E3.83.A0.E5.9B.BA.E6.9C.89.E3.83.91.E3.83.83.E3.82.B1.E3.83.BC.E3.82.B8.29" name="platform_.28.E3.83.97.E3.83.A9.E3.83.83.E3.83.88.E3.83.95.E3.82.A9.E3.83.BC.E3.83.A0.E5.9B.BA.E6.9C.89.E3.83.91.E3.83.83.E3.82.B1.E3.83.BC.E3.82.B8.29">platform (プラットフォーム固有パッケージ)</h3>
+
+<p>パッケージの中には、プラットフォーム固有を示すために専用のフラグでマークされているものがあります。 このようなパッケージでは、コンテント、スキン、ロケールのうちのいくつかのパートが、実行されているプラットフォームによって異なっているために、 「Windows と OS/2」、「Macintosh」、「{{ 訳語("Unix 系", "unix-lile") }}」のプラットフォームのために、3 セットの異なるファイルが含まれることになります。 例えば、ダイアログの「OK」と「キャンセル」ボタンの並び順は、プラットフォームによって異なります。 また同様にいくつかの項目の名前も異なっています。</p>
+
+<p>「platform」{{ 訳語("修飾子", "modifier") }}は、コンテントの登録の場合のみ{{ 訳語("解釈", "parse") }}され、ロケールとスキンの登録では行われません。 しかしながら、このフラグはパッケージの content、locale、skin のどのパートに対しても、指定されれば適用されます。</p>
+
+<p>そのパッケージがプラットフォーム固有であることを示すためには、 以下の例のように「platform」修飾子を「content」行のパス指定の後に置きます。</p>
+
+<pre class="eval">content global-platform jar:toolkit.jar!/toolkit/content/global-platform/ platform
+</pre>
+
+<p>これを作成するマニフェストで指定すると、global-platform ディレクトリ以下には、 <code>win</code> (Windows/OS2)、 <code>mac</code> (OS9/OSX)、 <code>unix</code> (それ以外の全て) のサブディレクトリを置く必要があります。 これらのサブディレクトリ以外に置かれた任意のファイルは、全て無視されます。</p>
+
+<h3 id="xpcnativewrappers" name="xpcnativewrappers">xpcnativewrappers</h3>
+
+<p>Chrome パッケージでは、{{ 訳語("悪意のある", "malicious") }}コンテンツにアクセスした場合に、それらからパッケージのコードを自動的に保護するために、 セキュリティのメカニズムである <a href="/ja/XPCNativeWrapper" title="ja/XPCNativeWrapper">XPCNativeWrapper</a> を使用するかどうかを決めることができます。 詳細については、<a href="/ja/Safely_accessing_content_DOM_from_chrome" title="ja/Safely_accessing_content_DOM_from_chrome">chrome から コンテントの DOM に安全にアクセスする方法</a>を参照してください。</p>
+
+<p>このフラグは Firefox 1.5 以前では初期状態で有効となっており、Firefox 4 までの間は、 <code>xpcnativewrappers=no</code> と指定することによって手動で無効化することができました。</p>
+
+<div class="geckoVersionNote">
+<p>{{ gecko_callout_heading("2.0") }}</p>
+
+<p>このフラグは Gecko 2.0 {{ geckoRelease("2.0") }} で廃止されたため、<code>XPCNativeWrapper</code> はどのような方法によっても無効化できなくなりました。このフラグ無しで動作するようにあなたのアドオンを更新するには以下を参考にしてください:</p>
+
+<ul>
+ <li>あなたのアドオンがコンテンツ領域のオブジェクトに適用された XBL のバインディングに依存している場合(XBL のバインディングによって追加された関数を呼んだりプロパティの値を取得・設定したりするためにはそうする必要がありました)、生のオブジェクトに触るためにそのオブジェクトの <a href="/ja/wrappedJSObject" title="ja/wrappedJSObject"><code>wrappedJSObject</code></a> プロパティを参照する必要があるでしょう。</li>
+ <li>Web ページの中で定義された関数を呼び出したりプロパティにアクセスしたりする必要がある場合 -- 例えば、あなたのアドオンで Web ページの中で定義された JavaScript の関数を呼ぶボタンを追加したい場合。</li>
+</ul>
+</div>
+
+<p>xpcnativewrappers フラグは、コンテントパッケージのみに適用され、 ロケールとスキンの登録では識別されません。</p>
+
+<h2 id="Chrome_.E3.83.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88.E3.81.AE.E4.BE.8B" name="Chrome_.E3.83.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88.E3.81.AE.E4.BE.8B">Chrome マニフェストの例</h2>
+
+<pre class="eval" style="white-space: pre-wrap;">content necko jar:comm.jar!/content/necko/
+locale        necko en-US jar:en-US.jar!/locale/en-US/necko/
+content xbl-marquee jar:comm.jar!/content/xbl-marquee/
+content pipnss jar:pipnss.jar!/content/pipnss/
+locale pipnss en-US jar:en-US.jar!/locale/en-US/pipnss/
+# Firefox-only
+overlay <a class="external" rel="freelink">chrome://browser/content/pageInfo.xul</a> <a class="external" rel="freelink">chrome://pippki/content/PageInfoOverlay.xul</a> application={ec8030f7-c20a-464f-9b0e-13a3a9e97384}
+# SeaMonkey-only
+overlay <a class="external" rel="freelink">chrome://navigator/content/pageInfo.xul</a> <a class="external" rel="freelink">chrome://pippki/content/PageInfoOverlay.xul</a> application={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
+overlay <a class="external" rel="freelink">chrome://communicator/content/pref/preftree.xul</a> <a class="external" rel="freelink">chrome://pippki/content/PrefOverlay.xul</a>
+content pippki jar:pippki.jar!/content/pippki/
+locale pippki en-US jar:en-US.jar!/locale/en-US/pippki/
+content global-platform jar:toolkit.jar!/content/global-platform/ platform
+skin global classic/1.0 jar:classic.jar!/skin/classic/global/
+override <a class="external" rel="freelink">chrome://global/content/netError.xhtml</a> jar:embedder.jar!/global/content/netError.xhtml
+content inspector jar:inspector.jar!/content/inspector/
+</pre>
+
+<h2 id=".E5.8F.A4.E3.81.84_contents.rdf_.E5.BD.A2.E5.BC.8F.E3.81.AE.E3.83.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88" name=".E5.8F.A4.E3.81.84_contents.rdf_.E5.BD.A2.E5.BC.8F.E3.81.AE.E3.83.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88">古い contents.rdf 形式のマニフェスト</h2>
+
+<p>プレインテキスト形式のマニフェストの導入 (Firefox 1.5 と Toolkit 1.8 で実施) より前には、"contents.rdf" という名称の RDF によるマニフェストが chrome の登録のために使用されていました。 この形式は{{ 訳語("非推奨", "deprecated") }}です。 しかしながら、バージョン2より前の SeaMonkey は、プレインテキスト形式のマニフェストをまだサポートしていないため、 Firefox 1.0 に対する後方互換性の維持や、Mozilla スイート への対応が必要な拡張機能では、contents.rdf マニフェストが必要になります。</p>
+
+<p>{{ gecko_minversion_note("1.9.2", "<code>contents.rdf</code> 形式のマニフェストファイルは Gecko 1.9.2 以降では利用できなくなりました。この形式を使用しているアドオンであっても、既にインストールされていた物は動作し続けますが、新たにインストールすることはできません。アドオンを削除してインストールし直す際は、プレインテキスト形式のマニフェストを使うようにアドオンが修正されていることを確かめて下さい。") }}</p>
+
+<h2 id="Toolkit_API_.E5.85.AC.E5.BC.8F.E3.83.AA.E3.83.95.E3.82.A1.E3.83.AC.E3.83.B3.E3.82.B9" name="Toolkit_API_.E5.85.AC.E5.BC.8F.E3.83.AA.E3.83.95.E3.82.A1.E3.83.AC.E3.83.B3.E3.82.B9"><a href="/ja/Toolkit_API" title="ja/Toolkit_API">Toolkit API</a> 公式リファレンス</h2>
+
+<p>{{ page("en-US/docs/Toolkit_API/Official_References") }}</p>
diff --git a/files/ja/mozilla/command_line_options/index.html b/files/ja/mozilla/command_line_options/index.html
new file mode 100644
index 0000000000..9ce45e21b7
--- /dev/null
+++ b/files/ja/mozilla/command_line_options/index.html
@@ -0,0 +1,484 @@
+---
+title: コマンドラインオプション
+slug: Mozilla/Command_Line_Options
+tags:
+ - Add-ons
+ - Administration
+ - Command Line
+ - Developing Mozilla
+ - Extensions
+ - NeedsUpdate
+ - QA
+ - User_Documentation
+ - XULRunner
+translation_of: Mozilla/Command_Line_Options
+---
+<p><span class="seoSummary">コマンドラインオプションを使用して、Mozilla アプリケーションのさまざまな起動オプションを指定します。</span>例えばプロファイルマネージャーを迂回して、(複数のプロファイルを持っている場合は) 特定のプロファイルを開くために、コマンドライン設定オプションを使用することができます。また、どのコンポーネントをはじめに開くかなど、Mozilla アプリケーションをどのように起動するかも管理できますし、そのコンポーネントが起動したとき何をするかも指定することができます。<span class="seoSummary">このページでは、一般的に利用できるオプションや、それらをどのように使うかを解説します。Shift + F2 を押下すると、コマンドラインインターフェイスを開くことができます。</span></p>
+
+<h2 id="Syntax_Rules" name="Syntax_Rules">構文規則</h2>
+
+<p>始めに、すべてのオプションに適用される構文規則を説明します。</p>
+
+<ul>
+ <li>空白の入っているパラメーターをコマンドに使用する場合は、引用符で囲ってください。例: "Joel User"</li>
+ <li>コマンドアクションでは、大文字・小文字は関係ありません。</li>
+ <li>プロファイル名以外のコマンドパラメーターでは、大文字・小文字は関係ありません。</li>
+ <li>空白 ( ) はコマンドとパラメーターとを切り離します。</li>
+ <li>各メッセージオプションは、<code><var>フィールド</var>=<var>値</var></code> のように構文の後に続きます。例えば:
+ <ul>
+ <li><code>to=</code><span class="nowiki"><code>foo@nowhere.net</code></span></li>
+ <li><code>subject=cool page</code></li>
+ <li><code>attachment=www.mozilla.org</code></li>
+ <li><code>attachment='<span class="nowiki">file:///c:/test.txt</span>'</code></li>
+ <li><code>body=check this page or also in Thunderbird 52 and newer: body=c:\path\to\file.txt</code></li>
+ </ul>
+ </li>
+ <li>複数のメッセージオプションは、例えば <code>"<span class="nowiki">to=foo@nowhere.net,subject=cool page</span>"</code> のように、カンマ (,) で切り離します。カンマの前後に空白 ( ) を入れてはいけません。ひとつの欄に複数の値を割り当てるには、<code>"<span class="nowiki">to='foo@nowhere.net,foo@foo.de',subject=cool page</span>"</code> のように引用符 (') でくくってください。</li>
+</ul>
+
+<h2 id="How_to_use_command_options" name="How_to_use_command_options">コマンドオプションの使い方</h2>
+
+<p>コマンドラインオプションは、アプリケーションを起動するコマンドの後に入力します。引数を持つコマンドもあります。引数は、コマンドラインオプションの後に入力します。省略形を持つコマンドもあります。例えば、コマンドラインオプション "-editor" は "-edit" と省略できます (使用できる省略形については後述します)。また、引数はを引用符で括らなければならない場合があります (オプションの説明で言及します)。複数のコマンドラインオプションを指定できます。通常、構文は以下のようになります:</p>
+
+<pre>application -option -option "argument" -option argument
+</pre>
+
+<h3 id="Examples" name="Examples">例</h3>
+
+<p>以下は "-ProfileManager" コマンドを使用して、Firefox や Thunderbird のプロファイルマネージャーを開くコマンドラインオプションの例です:</p>
+
+<h4 id="Windows" name="Windows">Windows</h4>
+
+<p>Windows のスタートメニューから [ファイル名を指定して実行] を選択します。次のように入力します。</p>
+
+<pre>firefox -ProfileManager
+</pre>
+
+<h4 id="Mac_OS_X" name="Mac_OS_X">Mac OS X</h4>
+
+<p>アプリケーションフォルダーのユーティリティに移動します。ターミナルを開いて次のように入力します。</p>
+
+<pre>cd /Applications/Firefox.app/Contents/MacOS
+./firefox -ProfileManager
+</pre>
+
+<p>Firefox Nightly を使用している場合は、次のように入力できます。</p>
+
+<pre>cd /Applications/FirefoxNightly.app/Contents/MacOS
+./firefox -ProfileManager
+</pre>
+
+<h4 id="Linux" name="Linux">Linux</h4>
+
+<p>ターミナルを開いて次のように入力します。</p>
+
+<pre>cd <em>Thunderbird</em><var> installation directory</var>
+./thunderbird -ProfileManager
+</pre>
+
+<p>上記の例は、Mozilla の Thunderbird メールクライアントで "-ProfileManager" コマンドラインオプションを呼び出しています。</p>
+
+<h2 id="User_Profile" name="User_Profile">ユーザープロファイル</h2>
+
+<h3 id="-CreateProfile_profile_name" name="-CreateProfile_profile_name"><code>-CreateProfile <var>profile_name</var></code></h3>
+
+<p>デフォルトのディレクトリーに新しいプロファイルを作成します。ただしアプリケーションは起動されません。プロファイルは、プロファイルマネージャーで <code><var>profile_name</var></code> と名前がつきます。<var>profile_name</var> には空白 ( ) は使えません。この操作を成功させるには実行中のアプリケーションインスタンスが存在しないか、<code>-no-remote</code> オプションを使用しなければなりません。</p>
+
+<pre>firefox -CreateProfile JoelUser
+</pre>
+
+<h3 id="-CreateProfile_.22profile_name_profile_dir.22" name="-CreateProfile_.22profile_name_profile_dir.22"><code>-CreateProfile "<var>profile_name</var> <var>profile_dir</var>"</code></h3>
+
+<p><code><var>profile_dir</var></code> ディレクトリーに新しいプロファイルを作成します。ただしアプリケーションは起動されません。プロファイルは、プロファイルマネージャーで <code><var>profile_name</var></code> と名前がつきます。<code><var>profile_name</var></code> と <code><var>profile_dir</var></code> は引用符で囲ってください。また、1 個の空白で区切ってください (前の構文と同じく、<code>profile_name</code> に空白は使えません)。</p>
+
+<p>この操作を成功させるには実行中のアプリケーションインスタンスが存在しないか、<code>-no-remote</code> オプションを使用しなければなりません。</p>
+
+<p>注: <code><var>profile_dir</var></code> や <code><var>profile_name</var></code> というプロファイルが存在する場合はエラーになります。</p>
+
+<pre>firefox -CreateProfile "JoelUser c:\internet\joelusers-moz-profile"
+</pre>
+
+<h3 id="-migration" name="-migration"><code>-migration</code></h3>
+
+<p>設定移行ウィザードで起動します。</p>
+
+<h3 id="-new-instance" name="-new-instance"><code>-new-instance</code></h3>
+
+<p>実行中のインスタンスの新しいウィンドウではなく、新しいインスタンスを起動します。アプリケーションの複数のコピーを同時に実行できます。</p>
+
+<pre>firefox -new-instance -P "Another Profile"
+</pre>
+
+<div class="note">
+<p><strong>注記:</strong> Windows では使用できません。{{bug(855899)}} をご覧ください。</p>
+</div>
+
+<h3 id="-no-remote" name="-no-remote"><code>-no-remote</code></h3>
+
+<p></p>
+
+<p>リモートコマンドを送受信しません。暗黙的に -new-instance も含みます。</p>
+
+<pre>firefox -no-remote -P "Another Profile"
+</pre>
+
+<div class="note"><strong>注記:</strong> Firefox 9 よりすべてのプラットフォームで、オプション名が暗示することを真に意味するようになりました。すなわち、このパラメーターをつけて作成したインスタンスは、リモートコマンドを送受信しません。{{bug(650078)}} をご覧ください。これは、インスタンスが再使用されないということです。またこのパラメーターを使用すると、どのような場合でも新しいインスタンスを作成します。</div>
+
+<h3 id="-override_.2Fpath.2Fto.2Foverride.ini" name="-override_.2Fpath.2Fto.2Foverride.ini"><code>-override <em>/path/to/</em>override.ini</code></h3>
+
+<p>指定した <code>override.ini</code> ファイルを読み込んで <code>application.ini</code> ({{Source("browser/app/application.ini")}}) をオーバーライドします。これは、以下のような <code>override.ini</code> を読み込ませることで、起動時の設定移行ウィザードを表示させないようにするのに利用できます。<strong>Firefox</strong> のみ。</p>
+
+<pre>[XRE]
+EnableProfileMigrator=0</pre>
+
+<h3 id="-ProfileManager_or_-P" name="-ProfileManager_or_-P"><code>-ProfileManager</code></h3>
+
+<p>プロファイルマネージャーを起動します。短縮形: <strong>-P</strong> でプロファイル名を指定しない。</p>
+
+<h3 id="-P_.22profile_name.22" name="-P_.22profile_name.22"><code>-P "<var>profile_name</var>"</code></h3>
+
+<p>プロファイルマネージャーを迂回して、<var>profile_name</var> と名前の付いたプロファイルでアプリケーションを立ち上げます。複数のプロファイルを使い分ける際に便利です。<var>profile_name</var> は大文字・小文字を区別します。ご注意ください。プロファイル名を指定しない場合は、代わりにプロファイルマネージャーを開きます。7.x より古いバージョンは、Linux では小文字の p は Purify モード(メモリリーク検出)での起動となるので、大文字の P を使用する必要があります。他のプラットフォームでは大文字と小文字両方が使えます。</p>
+
+<pre>firefox -P "Joel User"
+</pre>
+
+<h3 id="-profile_.22.2Fpath.2Fto.2Fprofile.22" name="-profile_.22.2Fpath.2Fto.2Fprofile.22"><code>-profile "<var>profile_path</var>"</code></h3>
+
+<p>指定されたパスにあるプロファイルで起動します。<strong>Firefox</strong>、<strong>Thunderbird</strong>、<strong>SeaMonkey2.x</strong> のみ。</p>
+
+<p><code>"profile_path"</code> は、絶対パス (<code>"<var>/path/to/profile</var>"</code>) または相対パス <code>("<var>path/to/profile</var>"</code>) を使用できます。</p>
+
+<div class="note"><strong>注記:</strong> Firefox 4.0 より、Mac OS X ではリグレッションのため、相対パス指定をサポートしません。{{bug(673955)}} をご覧ください。</div>
+
+
+<h2 id="Browser" name="Browser">ブラウザー</h2>
+
+<h3 id="-browser" name="-browser"><code>-browser</code></h3>
+
+<p>ブラウザーコンポーネントを起動します。<strong>Firefox</strong> と <strong>SeaMonkey</strong> のみ。</p>
+
+<h3 id="-foreground" name="-foreground"><code>-foreground</code></h3>
+
+<p>このインスタンスを、アクティブなアプリケーションにします。</p>
+
+<h3 id="-headless" name="-headless"><code>-headless</code></h3>
+
+<p>Firefox を <a href="/ja/docs/Mozilla/Firefox/Headless_mode">ヘッドレスモード</a> で実行します。これは、デバッグや自動テストといった用途に役立ちます。Linux では Firefox 55 以降、Windows および Mac OS X では Firefox 56 以降で使用できます。</p>
+
+<h3 id="-new-tab_URL" name="-new-tab_URL"><code>-new-tab <var>URL</var></code></h3>
+
+<p><var>URL</var> を新しいタブで開きます。<strong>Firefox</strong> と <strong>SeaMonkey2.x</strong> のみ。</p>
+
+<h3 id="-new-window_URL" name="-new-window_URL"><code>-new-window <var>URL</var></code></h3>
+
+<p><var>URL</var> を新しいウィンドウで開きます。<strong>Firefox</strong> と <strong>SeaMonkey2.x</strong> のみ。</p>
+
+<h3 id="-preferences" name="-preferences"><code>-preferences</code></h3>
+
+<p>オプション/環境設定ウィンドウを開きます。<strong>Firefox</strong> と <strong>SeaMonkey2.x</strong> のみ。</p>
+
+<h3 id="-private" name="-private"><code>-private</code></h3>
+
+<p>ユーザー設定に関わらなく、Firefox をプライベートウィンドウモードで開きます。<strong>Firefox 3.6</strong> 以降のみ。</p>
+
+<p><strong>Firefox 20</strong> 以降では、古い Ubuntu で機能しません。14.04 では機能することが確認されています。</p>
+
+<h3 id="-private-toggle" name="-private-toggle"><code>-private-window</code></h3>
+
+<p>既存の Firefox のインスタンスで、新しいプライベートウィンドウを開きます。<strong>Firefox 20</strong> 以降のみ。</p>
+
+<h3 id="-private-toggle_URL" name="-private-toggle_URL"><code>-private-window URL</code></h3>
+
+<p>URL を新しいプライベートウィンドウで開きます。すでにプライベートウィンドウを開いている場合は、既存のウィンドウで新しいタブが開きます。<strong> Firefox 29</strong> 以降のみLinux Mint 17 の <strong>Firefox 31</strong> や、Windows 7 の <strong>Firefox 48</strong> では機能しません。プライベートではないウィンドウで開きます。</p>
+
+<h3 id="-search_term" name="-search_term"><code>-search <var>term</var></code></h3>
+
+<p><var>term</var> を既定の検索エンジンで検索します。<strong>Firefox</strong> と <strong>SeaMonkey 2.1</strong> 以降のみ。</p>
+
+<h3 id="-setDefaultBrowser" name="-setDefaultBrowser"><code>-setDefaultBrowser</code></h3>
+
+<p>アプリケーションを既定のブラウザーに設定します。<strong>Firefox</strong> のみ。</p>
+
+<h3 id="-url_URL" name="-url_URL"><code>-url <var>URL</var></code></h3>
+
+<p><var>URL</var> をユーザー設定に応じて新しいタブまたはウィンドウで開きます。<code>-url</code> は省略可。空白区切りで複数の URL を指定できます。<strong>Firefox</strong> と <strong>SeaMonkey</strong> のみ。</p>
+
+<div class="note"><strong>注意:</strong> 複数の URL を開く場合、Firefox は常に新しいウィンドウに開きます。</div>
+
+<pre>firefox www.mozilla.com
+firefox www.mozilla.com developer.mozilla.org</pre>
+
+<h2 id="Mail.2FNews" name="Mail.2FNews">メール/ニュース</h2>
+
+<h3 id="-addressbook" name="-addressbook"><code>-addressbook</code></h3>
+
+<p>アドレス帳を起動します。<strong>Thunderbird</strong> と <strong>SeaMonkey</strong> のみ。</p>
+
+<h3 id="-compose_message_options" name="-compose_message_options"><code>-compose <var>message_options</var></code></h3>
+
+<p>メール作成画面を起動します。<a href="#Syntax_Rules">構文規則</a> を参照してください。<strong>Thunderbird</strong> と <strong>SeaMonkey</strong> のみ。</p>
+
+<pre>thunderbird -compose "<span class="nowiki">to=foo@nowhere.net</span>"</pre>
+
+<h3 id="-mail" name="-mail"><code>-mail</code></h3>
+
+<p>メールクライアントを起動します。<strong>Thunderbird</strong> と <strong>SeaMonkey</strong> のみ。</p>
+
+<h3 id="-news_news_URL" name="-news_news_URL"><code>-news</code> <var>news_URL</var></h3>
+
+<p>ニュースクライアントを起動します。オプションである <var>news_URL</var> が与えられた場合、その指定されたニュースグループを開きます。<strong>Thunderbird</strong> と <strong>SeaMonkey</strong> のみ。</p>
+
+<pre>thunderbird -news <span class="nowiki">news://server/group</span>
+</pre>
+
+<h3 id="-options" name="-options"><code>-options</code></h3>
+
+<p>オプション/環境設定ウィンドウを開きます。<strong>Thunderbird</strong> のみ。</p>
+
+<h3 id="-offline" name="-offline"><code>-offline</code></h3>
+
+<p>オフラインモードで起動します。<strong>Thunderbird</strong> と <strong>SeaMonkey</strong> のみ。</p>
+
+<h3 id="-setDefaultMail" name="-setDefaultMail"><code>-setDefaultMail</code></h3>
+
+<p>アプリケーションを既定のメールクライアントに設定します。<strong>Thunderbird</strong> のみ。</p>
+
+<h2 id="Calendar" name="Calendar">カレンダー</h2>
+
+<h3 id="-calendar" name="-calendar"><code>-calendar</code></h3>
+
+<p>カレンダークライアントを起動します。<strong>Sunbird</strong> のみ。</p>
+
+<h3 id="-showdate_date" name="-showdate_date"><code>-showdate <var>date</var></code></h3>
+
+<p>与えられた <var>date</var> のスケジュールを表示します。<strong>Sunbird</strong> のみ。</p>
+
+<pre>sunbird -showdate 08/04/2008
+</pre>
+
+<h3 id="-subscribe_URL_or_-url_URL" name="-subscribe_URL_or_-url_URL"><code>-subscribe <var>URL</var></code> または <code>-url <var>URL</var></code></h3>
+
+<p>与えられた <var>URL</var> を購読します。<strong>Sunbird</strong> のみ。</p>
+
+<h2 id="Other_Components" name="Other_Components">その他のコンポーネント</h2>
+
+<h3 id="-chat" name="-chat"><code>-chat</code></h3>
+
+<p>IRC クライアント <a class="link-https" href="https://addons.mozilla.org/ja/firefox/addon/16">ChatZilla</a> がインストールされている場合、ChatZilla を起動します。</p>
+
+<h3 id="-devtools" name="-devtools"><code>-devtools</code></h3>
+
+<p>内蔵の <a href="/ja/docs/Tools">開発ツール</a> を開いた状態で起動します。</p>
+
+<h3 id="-editor_URL_or_-edit_URL" name="-editor_URL_or_-edit_URL"><code>-editor <var>URL</var></code> または <code>-edit <var>URL</var></code></h3>
+
+<p>与えられた <var>URL</var> に対して、エディター (Composer) を起動します (<var>URL</var> はオプションです)。<strong>SeaMonkey</strong> のみ。</p>
+
+<pre>seamonkey -edit www.mozilla.org
+</pre>
+
+<h3 id="-inspector_URL" name="-inspector_URL"><code>-inspector <var>URL</var></code></h3>
+
+<p><a href="/ja/docs/DOM_Inspector" title="DOM_Inspector">DOM Inspector</a> がインストールされている場合、DOM Inspector を起動し、与えられた <var>URL</var> を検査します (<var>URL</var> はオプションです)。</p>
+
+<h3 id="-jsconsole" name="-jsconsole"><code>-jsdebugger</code></h3>
+
+<p><a href="/ja/docs/Tools/Browser_Toolbox">ブラウザーツールボックス</a> (旧ブラウザーデバッガー) とともにアプリケーションを起動します。これは Venkman デバッガーとは異なります (-venkman オプションをご覧ください)。</p>
+
+<h3 id="-jsconsole" name="-jsconsole"><code>-jsconsole</code></h3>
+
+<p><a href="/ja/docs/Error_Console" title="Error_Console">エラーコンソール</a>、または Firefox では <a href="/ja/docs/Tools/Browser_Console">ブラウザーコンソール</a> を起動します。</p>
+
+<h3 id="-purgecaches" name="-purgecaches"><code>-purgecaches</code></h3>
+
+<p>Gecko (レイアウトエンジン) は JavaScript キャッシュを持っており、起動時にリセットされません。これを消去します。</p>
+
+<h3 id="-start-debugger-server_port" name="-start-debugger-server_port"><code>-start-debugger-server port</code></h3>
+
+<p>Firefox のみ。<code>port</code> で指定したポート番号で、デバッガーサーバーを起動します。別の Firefox のインスタンスが、開発ツールをこの Firefox のインスタンスに接続できるようにします。<a href="/ja/docs/Tools/Remote_Debugging/Debugging_Firefox_Desktop">デスクトップ版 Firefox のデバッグを行う</a> のページをご覧ください。</p>
+
+<p>引数 <code>port</code> は省略可能であり、省略した場合は 6000 番ポートで待ち受けます。</p>
+
+<h3 id="-venkman" name="-venkman"><code>-venkman</code></h3>
+
+<p>JavaScript デバッガー <a href="/ja/docs/Venkman" title="Venkman">Venkman</a> がインストールされている場合、Venkman を起動します。</p>
+
+<h2 id="XULRunner" name="XULRunner">XULRunner</h2>
+
+<h3 id="-app_.2Fpath.2Fto.2Fapplication.ini" name="-app_.2Fpath.2Fto.2Fapplication.ini"><code>-app <em>/path/to/</em>application.ini</code></h3>
+
+<p><em>path/to</em> にある <a href="/ja/docs/XULRunner" title="XULRunner">XULRunner</a> アプリケーションを新しいプロセスで起動します。 バージョン 3 以上の Firefox のみ。</p>
+
+<h3 id="--install-app_pathtomyapplication.(xpixulapp)" name="--install-app_pathtomyapplication.(xpixulapp)"><span style="font-family: courier new,andale mono,monospace; line-height: normal;">--install-app path/to/myapplication.(xpi|xulapp)</span></h3>
+
+<p>システムの path/to に、XULRunner アプリケーションをインストールします。アプリケーションはシステムの既定の場所 (program files|Applications|usr/lib) に vendorname/applicationName でインストールされます。アプリケーションは、各システムの一般的な手順でアンインストールできます。</p>
+
+<pre style="margin-top: 0px; margin-bottom: 1.286em; font-size: 14px;">"C:\Program Files\Mozilla XULRunner\1.8.0.4\xulrunner\xulrunner.exe" --install-app "C:\Users\Billdo\Desktop\myapplication.xpi"</pre>
+
+<pre><span style="font-family: courier new,andale mono,monospace; line-height: normal;">/opt/xulrunner/1.8.0.4/xulrunner/xulrunner --install-app ~/Desktop/myapplication.xulapp</span></pre>
+
+<pre><span style="font-family: courier new,andale mono,monospace; line-height: normal;">​</span><span style="font-family: courier new,andale mono,monospace; line-height: normal;">/Library/Frameworks/XUL.framework/xulrunner-bin --install-app ~/Desktop/myapplication.xpi</span></pre>
+
+<h3 id="--register-global" name="--register-global"><span style="font-family: courier new,andale mono,monospace; line-height: normal;">--register-global</span></h3>
+
+<p>すべてのユーザー向けに、システムで XULRunner を登録します。admin / root として実行しなければなりません。</p>
+
+<h3 id="--register-user" name="--register-user"><span style="font-family: courier new,andale mono,monospace; line-height: normal;">--register-user</span></h3>
+
+<p>単独のユーザー向けに XULRunner を登録します。</p>
+
+<h3 id="--unregister-global" name="--unregister-global"><span style="font-family: courier new,andale mono,monospace; line-height: normal;">--unregister-global</span></h3>
+
+<p>すべてのユーザーで XULRunner の登録を解除します。</p>
+
+<h3 id="--unregister-user" name="--unregister-user"><span style="font-family: courier new,andale mono,monospace; line-height: normal;">--unregister-user</span></h3>
+
+<p>単独のユーザーで XULRunner の登録を解除します。</p>
+
+<h2 id="Chrome" name="Chrome">クローム</h2>
+
+<h3 id="-chrome_chrome_URL" name="-chrome_chrome_URL"><code>-chrome <var>chrome_URL</var></code></h3>
+
+<p>指定されたクロームを読み込みます。</p>
+
+<pre>firefox -chrome <a rel="freelink">chrome://inspector/content</a>
+</pre>
+
+<h3 id="-register_chrome_URL" name="-register_chrome_URL"><code>-register <var>chrome_URL</var></code></h3>
+
+<p>指定されたクロームを登録します。ただしアプリケーションは起動されません。</p>
+
+<h2 id="Add-ons" name="Add-ons">アドオン</h2>
+
+<p>{{gecko_minversion_note("1.9.2", "-install-global-extension と -install-global-theme は Gecko 1.9.2 以降で削除されました。")}}</p>
+
+<h3 id="-install-global-extension_.2Fpath.2Fto.2Fextension" name="-install-global-extension_.2Fpath.2Fto.2Fextension"><code>-install-global-extension <var>/path/to/extension</var></code></h3>
+
+<p>アプリケーションディレクトリーに拡張機能をインストールします。パラメーターは拡張機能へのパスになります。コンピューターの管理者権限が必要です。</p>
+
+<h3 id="-install-global-theme_.2Fpath.2Fto.2Ftheme" name="-install-global-theme_.2Fpath.2Fto.2Ftheme"><code>-install-global-theme <var>/path/to/theme</var></code></h3>
+
+<p>上と同様に、テーマをインストールします。コンピューターの管理者権限が必要です。</p>
+
+<div class="note">
+<p><strong>注記:</strong> Firefox 2.0.0.7 以降、コマンドライン引数 <code>-install-global-extension</code> および <code>-install-global-theme</code> は、ローカルディスクまたはマップ済みドライブ上にあるアドオンのインストールに限って利用できます。今後、ネットワーク共有ディレクトリーからのインストールはサポートされません。</p>
+</div>
+
+<h3 id="-safe-mode" name="-safe-mode"><code>-safe-mode</code></h3>
+
+<p>今回の起動に限って、すべての拡張機能を無効化した状態でアプリケーションを起動します (拡張機能は読み込まれませんが、拡張機能マネージャーのデータソースで恒久的に無効にされるわけではありません)。</p>
+
+<h2 id="Locale" name="Locale">ロケール</h2>
+
+<h3 id="-UILocale_locale" name="-UILocale_locale"><code>-UILocale <var>locale</var></code></h3>
+
+<p>UI ロケールとして <var>locale</var> リソースを使って起動します。</p>
+
+<pre>firefox -UILocale en-US
+</pre>
+
+<h2 id="Remote_Control" name="Remote_Control">リモートコントロール</h2>
+
+<h3 id="-remote_remote_command" name="-remote_remote_command"><code>-remote <var>remote_command</var></code><var> {{obsolete_inline}}</var></h3>
+
+<div class="note">
+<p><var>この機能は Firefox 36.0 で削除、36.0.1 で復帰、さらに 39.0 で再び削除されました。</var>{{bug(1080319)}} をご覧ください。</p>
+</div>
+
+<p>すでに作動しているアプリケーションプロセス内で <code><var>remote_command</var></code> を実行します。</p>
+
+<pre>firefox -remote "openURL(www.mozilla.org, new-tab)"
+</pre>
+
+<div class="note">
+<p>このオプションは X-Window Unix プラットフォームのみで使用できます。</p>
+</div>
+
+<h2 id="Miscellaneous" name="Miscellaneous">その他</h2>
+
+<h3 id="-attach-console" name="-attach-console"><code>-attach-console</code></h3>
+
+<p>メッセージのデバッグのために新しいウィンドウを開かず、アプリケーションを起動したウィンドウにデバッグコンソール向けのメッセージを書き込みます。Windows オペレーティングシステムのみサポートします。</p>
+
+<h3 id="-console" name="-console"><code>-console</code></h3>
+
+<p>デバッグコンソールとともにアプリケーションを起動します。Windows のみ。</p>
+
+<h3 id="-h_or_-help_or_-.3F" name="-h_or_-help_or_-.3F"><code>-h</code> または <code>-help</code> または <code>-?</code></h3>
+
+<p>利用できる全てのコマンドラインオプションの一覧を表示します。Windows では <code><span class="nowiki">|more</span></code> のようなリダイレクトと組み合わせた場合のみ機能します。ご注意ください ({{Bug(355889)}})。このオプションはコマンドラインでのみ利用可能です。</p>
+
+<h3 id="-osint" name="-osint"><code>-osint</code></h3>
+
+<p>アプリケーションに OS のシェルから起動されたことを通知します。これはアプリケーションを起動するときに、呼び出し側が OS のシェルが提供するすべての機能を提供するときを除いて指定されるべきではありません。({{Bug(384384)}})</p>
+
+<h3 id="-requestPending" name="-requestPending"><code>-requestPending</code></h3>
+
+<p>アプリケーションにコマンドライン指定されたものと同じ URL を開く Windows DDE リクエストが存在することを通知します。これはアプリケーションを起動するときに、呼び出し側が OS のシェルが提供するすべての機能を提供するときを除いて指定されるべきではありません。({{Bug(354005)}})</p>
+
+<h3 id="-silent" name="-silent"><code>-silent</code></h3>
+
+<p>デフォルトウィンドウを開きません。特定のウィンドウを開くコマンドライン引数と一緒に使うときに役に立ちますが、すでにデフォルトウィンドウが開いている場合は無効です。<strong>Firefox</strong>、<strong>Thunderbird3.x</strong>、<strong>SeaMonkey2.x</strong> のみ。</p>
+
+<h3 id="-tray" name="-tray"><code><strong>-tray</strong></code></h3>
+
+<p>システムトレイに最小化してアプリケーションを起動します。自動起動で役に立ちます。</p>
+
+<h3 id="-v_or_-version" name="-v_or_-version"><code>-v</code> または <code>-version</code></h3>
+
+<p>アプリケーションのバージョンを表示します。Windows では <code><span class="nowiki">|more</span></code> のようなリダイレクトと組み合わせた場合のみ機能します。ご注意ください ({{Bug(355889)}})。このオプションはコマンドラインでのみ利用可能です。</p>
+
+<h3 id="X11_options" name="X11_options">X11 オプション</h3>
+
+<p>以下のオプションは、Linux や他の Unix ベースシステムで X11/X.org ディスプレイおよびウィンドウシステム向けに構築および実行するアプリケーションのみで使用できます。</p>
+
+<h4 id="--classWM_CLASS" name="--classWM_CLASS">--class=WM_CLASS</h4>
+
+<p>アプリケーションが生成する X11 ウィンドウの WM_CLASS リソースクラスを設定します。</p>
+
+<h4 id="--displayDISPLAY" name="--displayDISPLAY">--display=DISPLAY</h4>
+
+<p>使用する X ディスプレイを設定します。</p>
+
+<h4 id="--g-fatal-warnings" name="--g-fatal-warnings">--g-fatal-warnings</h4>
+
+<p>すべての警告を fatal にします。</p>
+
+<h4 id="--sync" name="--sync">--sync</h4>
+
+<p>X コールを同期型にします。</p>
+
+<h2 id="Other_options_need_to_be_documented" name="Other_options_need_to_be_documented">文書化が必要な他のオプション</h2>
+
+<ul>
+ <li><code>-print-xpcom-dir</code></li>
+ <li><code>-print-xpcom-dirlist</code></li>
+ <li><code>-kill</code></li>
+ <li><code>-killAll</code></li>
+ <li><code>-f</code></li>
+ <li><code>-ftimeout</code></li>
+ <li><code>-fwait</code></li>
+ <li><code>-unsetDefaultMail</code></li>
+ <li>GTK options</li>
+</ul>
+
+<h2 id="References" name="References">参考情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Chrome/Command_Line" title="Chrome/Command_Line">クローム: コマンドライン</a></li>
+ <li><a href="http://www-archive.mozilla.org/quality/browser/front-end/testcases/cmd-line/">コマンドライン機能のテストドキュメント</a> (mozilla.org)</li>
+ <li>{{Source("toolkit/xre/nsAppRunner.cpp")}}</li>
+ <li>{{Source("browser/components/nsBrowserContentHandler.js")}}</li>
+ <li>{{Source("suite/browser/nsBrowserContentHandler.js")}}</li>
+ <li>{{Source("mail/components/nsMailDefaultHandler.js")}}</li>
+ <li><a class="link-https" href="https://wiki.mozilla.org/Installer:Command_Line_Arguments">インストーラーのコマンドラインオプション</a></li>
+</ul>
+
+<div class="originaldocinfo">
+<h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2>
+
+<ul>
+ <li>Author(s): Ben Goodger, Steffen Wilberg, Seth Spitzer, Daniel Wang</li>
+ <li>Copyright Information: Portions of this content are © 1998–2007 by individual mozilla.org contributors; content available under a Creative Commons license | <a href="http://www.mozilla.org/foundation/licensing/website-content.html">Details</a>.</li>
+</ul>
+</div>
diff --git a/files/ja/mozilla/connect/index.html b/files/ja/mozilla/connect/index.html
new file mode 100644
index 0000000000..eec70246f8
--- /dev/null
+++ b/files/ja/mozilla/connect/index.html
@@ -0,0 +1,115 @@
+---
+title: Connect with Mozilla
+slug: Mozilla/Connect
+tags:
+ - Landing
+ - Mozilla
+translation_of: Mozilla/Connect
+---
+<p class="summary"><span id="result_box" lang="ja"><span>立ち上がり、発想し、協力して、 Web をつながっているすべてのデバイスでの体験を創造するために使われる主要なプラットフォームにしましょう。</span></span></p>
+
+<div class="column-container dev-program-callouts dev-program-block dev-program-first dev-program-column-wrapper">
+<div class="dev-program-callout">
+<div class="callout-link-container">
+<h2 id="Hacks_ブログ">Hacks ブログ</h2>
+
+<p>開かれた Web を開発する人々にとって中心となるリソースである Mozilla Hacks ブログでは、最新の Web 技術やブラウザーの機能についてのニュースや議論を提供しています。</p>
+
+<div class="callout-link-wrapper"><a class="callout-link ignore-external" href="https://hacks.mozilla.org/" style="white-space: normal;">すぐに読もう </a></div>
+</div>
+</div>
+
+<div class="dev-program-callout">
+<div class="callout-link-container">
+<h2 id="連絡方法">連絡方法</h2>
+
+<p><a href="http://mzl.la/devtools">開発ツールについてのすばらしいアイディア</a>を持っていますか。教えてください。そして、将来の機能を磨くのに役立てましょう。</p>
+<a class="callout-link ignore-external" href="http://stackoverflow.com/r/mozilla" style="white-space: normal;"> </a></div>
+</div>
+
+<div class="dev-program-callout">
+<div class="callout-link-container">
+<h2 id="MDN_を開拓しましょう">MDN を開拓しましょう</h2>
+
+<p>開拓するのがコードであっても文書であっても、<a href="/en-US/docs/MDN/Getting_Started">あなたが MDN をより良くするために手助けする方法</a>があります。あなたが MDN プロフィールを作成すればここで作業を見せたり、 MDN の機能を広める際に早めにアクセスしたりすることができます。</p>
+
+<div class="callout-link-wrapper"><a class="callout-link" href="/profile/edit" style="white-space: normal;">参加またはログイン </a></div>
+</div>
+</div>
+</div>
+
+<div class="dev-program-explanation dev-program-block">
+<h2 id="Mozilla_と繋がりましょう">Mozilla と繋がりましょう</h2>
+
+<p>開発者は、世界中の人のためにサービスやアプリを開発しています。 The goal of Mozilla Developer Relations is to help developers to use open and standardized web technologies to succeed in achieving their goals. We offer help and other resources towards this goal, through various channels. We invite you to connect, learn, and share your knowledge.</p>
+
+<p>Reach out to us at devrel@mozilla.com or on the irc.mozilla.org #devrel IRC channel. We also have a newsletter keeping you informed about the latest happenings in the web scene around web apps and more. <a href="https://marketplace.firefox.com/developers/#newsletter-signup">Subscribe to the Apps &amp; Hacks newsletter.</a></p>
+
+<p>We have a lot of plans and ideas for iteratively expanding our Developer Relations offerings, and we want you involved as we do so! So <a href="https://hacks.mozilla.org/">subscribe to the Hacks blog</a> and <a href="https://marketplace.firefox.com/developers/#newsletter-signup">ニュースレターを購読しましょう</a>!</p>
+
+<p>If you're on <a href="http://www.twitter.com/MozDevNet">Twitter</a>, <a href="http://www.twitter.com/MozDevNet">follow us</a> and hear about doc updates, jobs, contributor opportunities, and more.</p>
+
+<h2 id="Mozilla_に参加しましょう" style="line-height: 30px;"><strong>Mozilla に参加しましょう</strong></h2>
+
+<p>If you want to go beyond connecting with <strong>Mozilla</strong>, you can join <strong>Mozilla </strong>and help realize <a href="https://www.mozilla.org/mission/">Mozilla's mission of building a better Internet</a>. As a developer, you have skills to contribute in many areas, as well as the opportunity to enhance your skills. Mozilla is an open source project, so we "default to open." You can "view source" and contribute to our software development projects, like the Firefox browser for desktop and Android, Firefox OS, and Mozilla's websites. You can become part of an international community and get recognition for your efforts. Here are some of the advantages of contributing to the Mozilla project.</p>
+
+<h3 id="新しいことを学ぶ機会"><strong>新しいことを学ぶ機会 </strong></h3>
+
+<div>
+<p>In writing code for an open source project, you may face problems you have not encountered before, which present learning opportunities for you. You can try out new tools and techniques in an open source project. For example, if you have never done unit testing, and cannot get permission to do so at work then coding for an open source project would be an excellent place to learn more about it. Contributing to open source gives you the opportunity to collaborate with and get to know many people around the world who have similar interests. Moreover, an open source organization like Mozilla has many contributors who can help you in solving problems you encounter. If you're just getting started contributing, you can look for "mentored" bugs, where an experienced contributor has offered to help a newcomer fix them.</p>
+
+<h3 id="貢献することで何が得られるのか"><strong>貢献することで何が得られるのか </strong></h3>
+
+<p>Exploring many things and gaining recognition in the community -- these are the intangible benefits of contributing to Mozilla. While we can't guarantee specific tangible benefits, many valued contributors receive free Mozilla gear and invitations to Mozilla-related events, and are first in line to be considered for internships. Moreover, your experience in contributing to an open source project might help you find a job. More and more employers of developers are looking at open source contributions. They like to see that you're blogging and contributing to mailing lists, and they like to see you listed as a contributor to an open source project. It may also help with the work experience section of your CV/resumé.</p>
+
+<h3 id="Mozilla_への貢献のしかた"><strong>Mozilla への貢献のしかた</strong></h3>
+
+<p>There are many project area for which you can contribute to Mozilla. You can find a current, complete list on the main Mozilla <a href="https://www.mozilla.org/contribute">Get Involved</a> page. Some areas that may interest you as a developer include:</p>
+
+<ul>
+ <li><a href="http://www.whatcanidoformozilla.org/">Coding</a></li>
+ <li><a href="http://www.whatcanidoformozilla.org/">Web development</a></li>
+ <li><a href="/en-US/Firefox_OS/Developing_Gaia">Firefox OS</a></li>
+ <li><a href="https://quality.mozilla.org/teams/">QA</a></li>
+ <li><a href="https://wiki.mozilla.org/Marketplace/Contributing/Addons">Add-ons</a></li>
+ <li><a href="https://wiki.mozilla.org/Marketplace/Contributing/Apps">Apps</a></li>
+ <li><a href="/en-US/docs/MDN/Getting_started">Developer documentation (here on MDN)</a></li>
+</ul>
+</div>
+</div>
+
+<p> </p>
+
+<p class="dev-program-block"><img alt="マドリードでの Firefox OS workshop の開発者たち。" src="https://mdn.mozillademos.org/files/7479/PhonesUp.jpg" style="display: block; height: 359px; margin: 0px auto; max-width: 100%; width: 720px;"></p>
+
+<p> </p>
+
+<div class="column-container dev-program-block">
+<div class="column-7 dev-program-events">
+<h2 id="Mozilla_はどこ?">Mozilla はどこ?</h2>
+
+<p><a class="heading-link" href="https://www.mozilla.org/en-US/contribute/events/">イベントページで出席者と詳細を確認しましょう... </a></p>
+</div>
+
+<div class="column-5">
+<h2 id="その他のリソース">その他のリソース</h2>
+
+<ul class="no-bullets">
+ <li><a href="http://www.youtube.com/user/mozhacks">Mozilla Hacks (YouTube)</a>
+
+ <ul>
+ <li><a href="http://www.youtube.com/playlist?list=PLo3w8EB99pqIHIUUv08hBCHq1OgPKhdo0">Firefox OS videos</a></li>
+ <li><a href="http://www.youtube.com/playlist?list=PLo3w8EB99pqLZNY22xKbTEzMfYo9PXAlm">Firefox Developer Tools videos</a></li>
+ </ul>
+ </li>
+ <li><strong>Twitter でフォローしてください</strong>
+ <ul class="no-bullets">
+ <li><a href="https://twitter.com/mozdevnet">@MozDevNet</a>: MDN からのニュースとメモ</li>
+ <li><a href="https://twitter.com/mozhacks">@mozhacks</a>: Hacks ブログの最新情報</li>
+ <li><a href="https://twitter.com/mozappsdev">@mozappsdev</a>: ウェブ開発者向け</li>
+ <li> </li>
+ </ul>
+ </li>
+</ul>
+</div>
+</div>
diff --git a/files/ja/mozilla/debugging/index.html b/files/ja/mozilla/debugging/index.html
new file mode 100644
index 0000000000..377d49f860
--- /dev/null
+++ b/files/ja/mozilla/debugging/index.html
@@ -0,0 +1,90 @@
+---
+title: デバッグ
+slug: Mozilla/Debugging
+tags:
+ - 要更新
+translation_of: Mozilla/Debugging
+---
+<p>Mozilla のような大きなプロジェクトをデバッグすることは、困難な作業であるかもしれません。幸い長年の間に Mozilla 開発者は、あなたがコードのデバッグするのを助けるための技術や特徴のみならず、考案された TIPS やテクニックも用意しました。また、あなたがデバッグする時、様々なツールが利用可能です。</p>
+<p> </p>
+<table class="mainpage-table">
+ <tbody>
+ <tr>
+ <td colspan="2">
+ <h2 id="文書のトピックス">文書のトピックス</h2>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <h3 id="デバッグトピックス">デバッグトピックス</h3>
+ <dl>
+ <dt>
+ <a class="internal" href="/ja/Debugging_memory_leaks" title="ja/Debugging memory leaks">メモリリークのデバッグ</a></dt>
+ <dd>
+ メモリリークのデバッグに役立つツールや技術について学ぶ。</dd>
+ <dt>
+ <a class="internal" href="/ja/Building_Firefox_with_Debug_Symbols" title="En/Building Firefox with Debug Symbols">デバッグシンボルを用いた Firefox のビルド</a></dt>
+ <dd>
+ デバッグに役立つデバッグシンボルを有効にした Firefox のビルド方法</dd>
+ <dt>
+ <a class="internal" href="/ja/Debugging_a_hang_on_OS_X" title="En/Debugging a hang on OS X">Mac OS X におけるハングアップのデバッグ</a></dt>
+ <dd>
+ Mac OS X のハングアップのデバッグのための参考になる TIPS</dd>
+ <dt>
+ <a href="/ja/Remote_debugging" title="en/Remote_debugging">リモートデバッグ</a></dt>
+ <dd>
+ 開発者がクラッシュを再現できないとき、たまに役立つ。</dd>
+ </dl>
+ <h3 id="良くある質問">良くある質問</h3>
+ <dl>
+ <dt>
+ <a class="internal" href="/ja/Debugging_Mozilla_on_Windows_FAQ" title="En/Debugging Mozilla on Windows FAQ">Windows における Mozilla のデバッグ</a></dt>
+ <dd>
+ Windows における Mozilla のデバッグについての質問(と答え)</dd>
+ <dt>
+ <a class="internal" href="/ja/Debugging_on_Mac_OS_X" title="En/Debugging on Mac OS X">Mac OS XにおけるMozillaのデバッグ</a></dt>
+ <dd>
+ Mac OS X における Mozilla のデバッグについての質問(と答え)</dd>
+ <dt>
+ <a class="internal" href="/ja/Debugging_Mozilla_with_gdb" title="En/Debugging Mozilla on Linux FAQ">gdbを用いたMozillaのデバッグ</a></dt>
+ <dd>
+ gdb は、 Mac や Linux におけるプライマリデバッガです。</dd>
+ </dl>
+ <dl>
+ <dt>
+ <a class="internal" href="/ja/Debugging_Mozilla_with_Valgrind" title="en/Debugging Mozilla with valgrind">valgrind を用いた Mozilla のデバッグ</a></dt>
+ <dd>
+ valgrind は、 Mac や Linux のためのメモリデバッガです。低速ではあるが、難しいメモリバグを見つけ出すには良い。</dd>
+ </dl>
+ </td>
+ <td>
+ <h3 id="独自技術のデバッグ">独自技術のデバッグ</h3>
+ <dl>
+ <dt>
+ <a class="internal" href="/ja/Debugging_JavaScript" title="En/Debugging JavaScript">JavaScript コードのデバッグ</a></dt>
+ <dd>
+ Mozilla プロジェクトのコードをデバッグすることを重要視した JavaScript のデバッグ方法。</dd>
+ <dt>
+ <a class="internal" href="/ja/Debugging_a_XULRunner_Application" title="En/Debugging a XULRunner Application">XULRunner アプリケーションのデバッグ</a></dt>
+ <dd>
+ アプリケーションの元となる <a class="internal" href="/en/XULRunner" title="En/XULRunner">XULRunner</a> のデバッグを助ける TIPS や提案。</dd>
+ <dt>
+ <a class="internal" href="/ja/Debugging_Frame_Reflow" title="En/Debugging Frame Reflow">フレームレイアウトのデバッグ</a></dt>
+ <dd>
+ フレームレイアウトのデバッグ方法を学ぶ。</dd>
+ <dt>
+ <a class="internal" href="/ja/Debugging_Table_Reflow" title="En/Debugging Table Reflow">テーブルレイアウトのデバッグ</a></dt>
+ <dd>
+ テーブルレイアウトのデバッグ方法を学ぶ。</dd>
+ </dl>
+ <h3 id="デバッグツール">デバッグツール</h3>
+ <dl>
+ <dt>
+ <a class="internal" href="/ja/Tools" title="En/Tools">ツール</a></dt>
+ <dd>
+ あなたがコードやウェブサイトをデバッグするのを助ける様々なツール。</dd>
+ </dl>
+ </td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/ja/mozilla/developer_guide/build_instructions/index.html b/files/ja/mozilla/developer_guide/build_instructions/index.html
new file mode 100644
index 0000000000..41eb3d0b44
--- /dev/null
+++ b/files/ja/mozilla/developer_guide/build_instructions/index.html
@@ -0,0 +1,92 @@
+---
+title: Build and Install
+slug: Mozilla/Developer_guide/Build_Instructions
+tags:
+ - Build documentation
+ - Developing Mozilla
+translation_of: Mozilla/Developer_guide/Build_Instructions
+---
+<p>注意:最初に<a href="ja/Configuring_Build_Options">ビルドオプションの設定</a>をしてからビルドしてください!</p>
+
+<h3 id=".E3.83.93.E3.83.AB.E3.83.89" name=".E3.83.93.E3.83.AB.E3.83.89">ビルド</h3>
+
+<p>Mozilla のチェックアウトやビルドには必ず GNU make を使用してください。他の "make" プログラムは好ましくありません。Windows、Mac OS X および GNU/Linux では GNU make を実行するために "make" を使ってください。ほとんどの 非 GNU の unix では "gmake" を使ってください。</p>
+
+<p>Windows、Mac OS X および GNU/Linux では必ずソースディレクトリの最上部 ("mozilla") で make コマンドを実行してください。</p>
+
+<pre class="eval">make -f client.mk build
+</pre>
+
+<p>Mac OS X での注意:ソースの tar ボールを展開したときに作成されるソースディレクトリのパスにスペースが含まれないようにしてください。</p>
+
+<p>ほとんどの非 GNU の unix の場合</p>
+
+<pre class="eval">$ gmake -f client.mk build
+</pre>
+
+<p>手動で configure やビルドをしたい場合は、オブジェクトディレクトリに移動し、configure を実行し、make/gmake を実行してください。configure が .mozconfig ファイルで指定したオプションを拾います。</p>
+
+<h3 id=".E3.81.A7.E3.81.8D.E3.81.9F.E3.83.93.E3.83.AB.E3.83.89.E3.81.AE.E5.AE.9F.E8.A1.8C" name=".E3.81.A7.E3.81.8D.E3.81.9F.E3.83.93.E3.83.AB.E3.83.89.E3.81.AE.E5.AE.9F.E8.A1.8C">できたビルドの実行</h3>
+
+<p>できたビルドをビルドに使われたディレクトリから直接実行することができます。しかし、ビルドディレクトリにはビルドツリーへのシンボリックリンクが含まれます。共有したり移動したりできるスタンドアローンなビルドにするためには、インストールやパッケージングの作業が必要です。</p>
+
+<h4 id="Windows_.E3.81.A8_Linux" name="Windows_.E3.81.A8_Linux">Windows と Linux</h4>
+
+<p>macintosh 以外のビルドシステムでは、ビルドの完成品は<em>objdir</em> /dist/bin にあります。POSIX プラットフォーム(BSD、GNU/Linux、Solaris)ではバイナリの "mozilla-bin" や "firefox-bin" ではなく、"mozilla" や "firefox" というファイルを実行してください。</p>
+
+<h4 id="Mac_OS_X" name="Mac_OS_X">Mac OS X</h4>
+
+<p>macintosh ではビルドシステムによって<em>objdir</em> /dist/<em>AppName</em> .app にアプリケーションバンドルが生成されます。例えば、<em>objdir</em> /dist/Minefield.app です。</p>
+
+<p>--enable-debug 付きでビルドすると、アプリケーションは<em>objdir</em> /dist/<em>AppName</em> Debug.app、例えば<em>objdir</em> /dist/MinefieldDebug.app に配置されますので<strong>注意</strong>してください。</p>
+
+<p>Finder からアプリケーションバンドルを開いたり、またはコマンドラインから次のものを実行したりすることでアプリケーションを実行することができます。</p>
+
+<pre class="eval">$ objdir/dist/AppName[Debug].app/Contents/MacOS/appname
+</pre>
+
+<p>例えば</p>
+
+<pre class="eval">$ objdir/dist/MinefieldDebug.app/Contents/MacOS/firefox
+</pre>
+
+<h3 id=".E3.83.93.E3.83.AB.E3.83.89.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB" name=".E3.83.93.E3.83.AB.E3.83.89.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">ビルドのインストール</h3>
+
+<p>POSIX プラットフォームでは<em>gmake install</em> を実行することによってできたビルドをシステムにインストールすることができます。しかしながら、以下のステップに従って tarball を作り、それを展開したほうがいい場合がよくあります。</p>
+
+<p>ほとんどのアプリケーションでは、アプリケーション特有のディレクトリで make することでビルドの tarball や zip パッケージを作ることができます。</p>
+
+<ul>
+ <li>Firefox: $ make -C objdir/browser/installer</li>
+ <li>Thunderbird: $ make -C objdir/mail/installer</li>
+ <li>SeaMonkey: $ make -C objdir/xpinstall/packager</li>
+</ul>
+
+<p><em>実際の例</em>:<a href="ja/Configuring_Build_Options#Firefox_Optimized_Static"> Firefox の最適化・静的ビルド</a> 用の .mozconfig ファイルを使用する場合、</p>
+
+<ul>
+ <li>Firefox: $ make -C ff-opt-static/browser/installer</li>
+</ul>
+
+<p>こうすることで、ff-opt-static/dist ディレクトリ内に、どこにでも展開できる firefox-1.5.0.3.en-US.linux-i686.tar.gz ファイルができます。</p>
+
+<p>windows 用のインストーラを作るためには、上記のディレクトリで "installer" ターゲットを make してください。</p>
+
+<ul>
+ <li>Firefox: $ make -C objdir/browser/installer installer</li>
+ <li>Thunderbird: $ make -C objdir/mail/installer installer</li>
+ <li>SeaMonkey: $ make -C objdir/xpinstall/packager installer</li>
+</ul>
+
+<p><em>注意:</em>Firefox や Thunderbird で使われる圧縮率の高いインストーラを作るためには追加のアプリケーションをインストールする必要があります。</p>
+
+<ul>
+ <li><a class="external" href="http://www.7-zip.org/">7-zip</a></li>
+ <li><a class="external" href="http://upx.sourceforge.net/">UPX</a>(Windows ユーザへ:このパッケージは <a class="external" href="http://cygwin.com/">Cygwin</a> セットアップで使用できます。Utils カテゴリーから選択し、インストールしてください。DOS バージョンは機能しませんので使用しないでください。)</li>
+</ul>
+
+<p>これらのユーティリティの両方に PATH が通っている必要があります。さらに、MOZ_INSTALLER_USE_7ZIP 環境変数を設定する必要があります。</p>
+
+<div class="noinclude"> </div>
+
+<p>{{ languages( { "en": "en/Build_and_Install", "es": "es/Compilar_e_instalar", "fr": "fr/Compilation_et_installation", "zh-cn": "cn/\u7f16\u8bd1\u4e0e\u5b89\u88c5" } ) }}</p>
diff --git a/files/ja/mozilla/developer_guide/callgraph/index.html b/files/ja/mozilla/developer_guide/callgraph/index.html
new file mode 100644
index 0000000000..8bc4e0c2be
--- /dev/null
+++ b/files/ja/mozilla/developer_guide/callgraph/index.html
@@ -0,0 +1,24 @@
+---
+title: Callgraph
+slug: Mozilla/Developer_guide/Callgraph
+tags:
+ - Callgraph
+ - Developing Mozilla
+ - NeedsTranslation
+ - TopicStub
+translation_of: Mozilla/Developer_guide/Callgraph
+---
+<p>The Callgraph project is intended to produce a complete callgraph covering C and C++ code within Mozilla. This can be used for performing static analysis based on the relationship between functions and methods. For instance, given the C++ code:</p>
+<pre class="eval">int foo() {
+ return good();
+}
+
+int good() {
+ return evil() ? 0 : 1;
+}
+</pre>
+<p>The callgraph would be <code>foo() -&gt; good() -&gt; evil()</code>. Given the knowledge that <code>evil()</code> does evil things, one could then determine <code>foo()</code> also does evil things.</p>
+<p>The Callgraph project uses gcc and <a href="/en/Treehydra" title="en/Treehydra">Treehydra</a> to generate information about function and method calls at compile time, and aggregates it into a sqlite database.</p>
+<h2 id="Documentation">Documentation</h2>
+<dl> <dt><a href="/en/Developing_Mozilla/Callgraph/Installing_Callgraph" title="En/Callgraph/Installing_Callgraph">Installing Callgraph</a></dt> <dd>Download and installation of Callgraph</dd> <dt><a href="/en/Developing_Mozilla/Callgraph/Schema_Reference" title="En/Callgraph/Schema_Reference">Schema Reference</a></dt> <dd>Explanation of the database schema</dd> <dt><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=callgraph" class="link-https">Further details</a></dt> <dd>Implementation ideas for Callgraph</dd>
+</dl>
diff --git a/files/ja/mozilla/developer_guide/callgraph/schema_reference/index.html b/files/ja/mozilla/developer_guide/callgraph/schema_reference/index.html
new file mode 100644
index 0000000000..6bd8d1b191
--- /dev/null
+++ b/files/ja/mozilla/developer_guide/callgraph/schema_reference/index.html
@@ -0,0 +1,87 @@
+---
+title: スキーマリファレンス
+slug: Mozilla/Developer_guide/Callgraph/Schema_Reference
+tags:
+ - Callgraph
+ - Developing Mozilla
+ - リファレンス
+translation_of: Mozilla/Developer_guide/Callgraph/Schema_Reference
+---
+<p>The schema used in <code>graph.sqlite</code> is defined by <code>schema.sql</code>. Since Callgraph is new, the schema is fairly simple and is expected to evolve. If you have suggestions or use cases that require changes, please file a bug. (In particular, there are several pending improvements mentioned below.)</p>
+
+<p>The schema contains the following tables:</p>
+
+<ul>
+ <li><code>node</code>. This represents a function, and contains the following fields:
+
+ <ul>
+ <li><code>id INTEGER PRIMARY KEY</code>, a unique identifier for the node</li>
+ <li><code>name TEXT</code>, the fully-qualified function or method name, including return type and parameters. See below.</li>
+ <li><code>isPtr INTEGER</code>, 1 if the function call (in this case, the callee) is a function pointer, 0 otherwise.</li>
+ <li><code>isVirtual INTEGER</code>, 1 if the function call is a virtual method, 0 otherwise.</li>
+ <li><code>loc TEXT</code>, the fully-resolved source file containing the declaration or definition of the function. See below.</li>
+ <li><code>UNIQUE (name, loc) ON CONFLICT IGNORE</code></li>
+ </ul>
+
+ <p> </p>
+
+ <p>The fully-qualified method name includes the return value, namespaces, class name, method or function name, and parameter types. For instance, the code</p>
+
+ <pre class="brush: cpp">namespace ns {
+ class cs {
+ int method(float, double);
+ };
+};
+ </pre>
+
+ <p>would result in a <code>name</code> of <code>int ns::cs::method(float,double)</code>. For nonstatic methods, <code>this</code> is excluded from the parameter list, though we may want to denote nonstatic methods with a separate field. The global namespace is indicated by a leading <code>::</code>. (Types are currently not fully-qualified.) The <code>loc</code> refers to the source file in which the declaration or definition appeared. For classes, the declaration context will always be available, and this location will refer to the file containing the declaration (for instance, <code>foo.h</code>). For function calls, this location may refer to the declaration or definition, and cannot presently be used in concert with <code>name</code> as a reliably unique identifier. (This could potentially be solved by implementing linker-style name resolution rules in Callgraph.) For function pointers, it is impossible to determine a location, and <code>loc</code> will be the empty string. (You should guard on this case using <code>isPtr</code>.) For compiler built-ins, <code>loc</code> will be <code>&lt;built-in&gt;</code>. Since symlinks are prevalent in the Mozilla build process, the path in <code>loc</code> is always fully-resolved; that is, it will be an absolute path which is guaranteed to have a one-to-one mapping with a particular file in the source or object tree. (In the case of generated files, such as from xpidlgen, it will point into the object tree. Note also that one can override gcc's notion of the current source file using the <code>#file</code> directive; in the likely case where this file doesn't exist, the resulting <code>loc</code> will not be fully-resolved. Caveat emptor. Thankfully, this practice is uncommon.)</p>
+
+ <p>The <code>(name, loc)</code> pair is intended to be a unique identifier for a given function or method call. (Though this currently breaks down for functions and function pointers.) In the future, we may include a <code>mangledName</code> field in the table, which would allow more consistency with linker rules regarding function name resolution and uniqueness. We may also add a field indicating whether the function definition has been seen (which would distinguish, say, calls into library functions from functions who simply don't call anyone else).</p>
+ </li>
+ <li><code>edge</code>. This represents a call between functions, and contains the following fields:
+ <ul>
+ <li><code>caller INTEGER REFERENCES node</code>, the <code>id</code> of a <code>node</code> representing the caller function.</li>
+ <li><code>callee INTEGER REFERENCES node</code>, likewise for the callee.</li>
+ <li><code>PRIMARY KEY(caller, callee) ON CONFLICT IGNORE</code></li>
+ </ul>
+
+ <p> </p>
+
+ <p>The primary key is currently unique on caller and callee, meaning that if the caller calls the callee multiple times, only one edge will exist in the table. We may change this if there are cases where the number of calls is relevant.</p>
+ </li>
+ <li><code>implementors</code>. This table provides information about the inheritance chain of C++ classes, specifically which virtual interface methods are overridden or implemented by which classes.
+ <ul>
+ <li><code>implementor TEXT</code>, the fully-qualified class name of the class which implements the method.</li>
+ <li><code>interface TEXT</code>, the fully-qualified class name of the class which declares the method to be pure virtual. See below.</li>
+ <li><code>method TEXT</code>, the method name (not including return type or arguments).</li>
+ <li><code>loc TEXT</code>, the fully-resolved source file containing the declaration of the interface class.</li>
+ <li><code>id INTEGER PRIMARY KEY</code>, a unique identifier for the entry.</li>
+ <li><code>UNIQUE (implementor, interface, method, loc) ON CONFLICT IGNORE</code></li>
+ </ul>
+
+ <p> </p>
+
+ <p>An interface is considered a class which declares the method in question to be virtual (either pure or non-pure), while an implementor overrides it with a declaration that is non-pure. (Whether the implementor actually defines the function is not considered.) For instance, consider the code</p>
+
+ <pre class="brush: cpp">class iFoo {
+ public:
+ virtual void method1(float) = 0;
+ virtual void method2(float) = 0;
+};
+
+class iBar : public iFoo {
+ public:
+ virtual void method1(float) = 0;
+ virtual void method2(float);
+};
+
+class Bar : public iBar {
+ public:
+ virtual void method1(float);
+ virtual void method2(float);
+};
+</pre>
+
+ <p>The class <code>iBar</code> would be considered an implementor of <code>method2</code>, while class <code>Bar</code> would be an implementor of both <code>method1</code> and <code>method2</code>. For implementor <code>iBar</code>, <code>iFoo::method2</code> would be considered an interface method. For implementor <code>Bar</code>, both methods on <code>iFoo</code> and <code>iBar</code> would be listed as interface methods. Uniqueness is determined by implementor, interface, method, and loc. (Note that the parameter list to the virtual method is also required to determine uniqueness, and will be added.)</p>
+ </li>
+</ul>
diff --git a/files/ja/mozilla/developer_guide/code_review_faq/index.html b/files/ja/mozilla/developer_guide/code_review_faq/index.html
new file mode 100644
index 0000000000..53a1401ec6
--- /dev/null
+++ b/files/ja/mozilla/developer_guide/code_review_faq/index.html
@@ -0,0 +1,126 @@
+---
+title: Code Review FAQ
+slug: Mozilla/Developer_guide/Code_Review_FAQ
+tags:
+ - Developing Mozilla
+translation_of: Mozilla/Developer_guide/Code_Review_FAQ
+---
+<h3 id=".E3.82.B3.E3.83.BC.E3.83.89.E3.83.AC.E3.83.93.E3.83.A5.E3.83.BC.E3.81.AE.E7.9B.AE.E7.9A.84.E3.81.AF.E4.BD.95.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> コードレビューの目的は何ですか? </h3>
+<p>コードレビューは、パッチの設計と実装について検証を行うための、基本的な機構です。沢山のハッカーたちが Mozilla の様々なモジュールに対して行う設計と実装を、常に一貫したレベルのものにするために役立っています。私たちは現在、二段階のレビューを行っています。「レビュー」と「スーパーレビュー」です。
+</p><p>もちろんコードレビューは即座に行えるものではなく、このシステムにはある程度の待ち時間が伴います。私たちは、レビュアーやスーパーレビュアーが彼ら自身のハッキングを行うのを妨げずに、レビューの待ち時間を減らす方法を常に模索しています。私たちのシステムは完璧ではなく、将来も完璧にはならないでしょう。私たちは現在もシステムを発展させている途上であり、もし良い方法があるのなら提案してください。
+</p>
+<h3 id=".E7.A7.81.E3.81.8C.E6.9B.B8.E3.81.84.E3.81.9F.E3.82.B3.E3.83.BC.E3.83.89.E3.81.AE.E3.83.AC.E3.83.93.E3.83.A5.E3.83.BC.E3.82.92.E8.A1.8C.E3.81.86.E3.81.AE.E3.81.AF.E8.AA.B0.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> 私が書いたコードのレビューを行うのは誰ですか? </h3>
+<p>あなたは、コードがチェックインされる予定のモジュールの所有者、あるいは指定された「ピア (peer:同格の人)」から承認 ("r={{ mediawiki.external('name') }}") を貰わなくてはなりません。 あなたのコードが複数のモジュールに影響を及ぼす場合には、影響を受けるモジュールのオーナーあるいは指定されたピアから "r={{ mediawiki.external('name') }}" を貰わなくてはなりません。 私たちはこの点に関して合理的であるよう心がけていますので、モジュール所有者全員の承認が必要な場合についての厳密なルールはありません。例えば、文字列クラスの変更や、多数のモジュールで表示されるテキストの変更のように、ツリー全体にまたがる変更の場合、必ずしも全てのモジュール所有者のレビューを必要とはしません。
+</p><p>上記以外の人に、追加のレビューを依頼しても構いません。
+</p>
+<h3 id=".E3.83.AC.E3.83.93.E3.83.A5.E3.82.A2.E3.83.BC.E3.81.8C.E6.A4.9C.E8.A8.8E.E3.81.99.E3.82.8B.E3.82.82.E3.81.AE.E3.81.AF.E4.BD.95.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> レビュアーが検討するものは何ですか? </h3>
+<p>レビューでは、パッチの設計と実装、対象となる問題の解決における有用性、そしてモジュールへの適合性に重点が置かれます。レビュアーは、その問題の領域における専門知識を持った人物であるべきです。また、レビュアーは、その領域以外の専門知識を利用して、他の改善案の可能性を指摘することもできます。 レビュアーがコードの改善に関して行うコメントに、固有の制限はありません。
+</p>
+<h3 id=".E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.83.BC.E3.81.A8.E3.81.AF.E4.BD.95.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> スーパーレビューとは何ですか? </h3>
+<p>「スーパーレビュー」という名称は、本当は好ましくありません。「インフラストラクチャ・レビュー」または「インテグレーション・レビュー」という名称のほうが、多分正確であり、「スーパー」という魅力的な名称が招く誤解を避けることが出来るでしょう。しかし、この名称は長い間使われてきましたし、当面は「スーパーレビュー」という名称が使用され続けるでしょう。
+</p><p>スーパーレビューでは、単なるレビューとは異なる問題に重点が置かれます。 Mozilla コードベースの幅広い範囲において、パッチがうまく適合するかどうか、ということです。例えば、以下のようなポイントが論点となります。
+</p>
+<ul><li> API の使用に関して
+</li><li> XPCOM の使用に関して
+</li><li> Mozilla のポータビリティ・ガイドラインに忠実であるか
+</li><li> 複数のモジュールへの影響
+</li><li> Mozilla のコーディングの慣例
+</li></ul>
+<h3 id=".E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.82.A2.E3.83.BC.E3.81.AB.E3.81.AF.E5.B0.82.E9.96.80.E7.9F.A5.E8.AD.98.E3.81.8C.E5.BF.85.E8.A6.81.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> スーパーレビュアーには専門知識が必要ですか? </h3>
+<p>いいえ、そのパッチが対象とする分野の専門知識をスーパーレビュアーが持っている必要はありません。 私たちは、スーパーレビュアーに対して、専門知識を持たない領域でレビューを行ってくれるよう頼んでいます。そうしないと、負荷のバランスが取れなくなるのです。専門知識を持ったスーパーレビュアーは、その領域の範囲内のパッチ全てにレビューを行わなければならないと感じるでしょう。これは燃え尽き症候群への道です。さらに、スーパーレビューを行うために重要であるのにも関わらず、誰一人としてその領域に関する幅広い知識を持たない、あるいは持ちたくない領域もあるでしょう。
+</p><p>もちろん、スーパーレビュアーが専門知識を持っていて悪いということはありません。私たちは彼らがスーパーレビューにおいてその専門知識を使ってくれることを望みますし、コードの改善に関してスーパーレビュアーが行うコメントに、固有の制限はありません。専門知識を持ったスーパーレビュアーは、レビューがどの程度複雑になりそうかを迅速に評価し、スーパーレビューをより早く完了させ、そのパッチに対する包括的な評価を与えることができるでしょう。例えて言えば、どんな名シェフでもあなたの料理を改善できますが、あなたがクレオール料理を作ろうとしているのであれば、クレオール料理の名シェフならなお良い、ということです。
+</p><p>ですので、専門知識は付加価値にはなりますが、必須のものではありません。スーパーレビュアーが希望すれば、そのレビューが、専門知識には基づかず、包括的な問題についてのみのレビューであることを注記することができます。
+</p>
+<h3 id=".E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.83.BC.E3.81.AE.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88_.E3.81.A7.E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.82.A2.E3.83.BC.E3.81.A8.E5.B0.82.E9.96.80.E9.A0.98.E5.9F.9F.E3.81.8C.E9.96.A2.E9.80.A3.E3.81.A5.E3.81.91.E3.82.89.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.AF.E4.BD.95.E6.95.85.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> スーパーレビューのドキュメント でスーパーレビュアーと専門領域が関連づけられているのは何故ですか? </h3>
+<p>既に述べた通り、専門知識を持ったスーパーレビュアーはより早く、包括的なレビューを行うことが出来ます。あなたの作業範囲に専門知識を持つスーパーレビュアーがいる場合には、まずその人に連絡を取ってください。できるものであれば、デラックスバージョンのスーパーレビューを受けましょう。
+</p><p>専門知識を持ったスーパーレビュアーがいなかったり、また、いたとしても彼らが忙しすぎるような場合には、別のスーパーレビュアーをあたってください。強力なレビュアーとできるだけ自力で頑張って、スーパーレビュアーがモジュール間の問題に専念できるようにしてください。スーパーレビュアーと専門範囲を関連付けているのは、単に出発点を示すためだけです。どのスーパーレビュアーでもパッチの取り扱いができます。
+</p>
+<h3 id=".E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.82.A2.E3.83.BC.E3.81.8C.E5.95.8F.E9.A1.8C.E3.82.92.E8.A6.8B.E9.80.83.E3.81.97.E3.81.9F.E3.82.89.E3.81.A9.E3.81.86.E3.81.AA.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> スーパーレビュアーが問題を見逃したらどうなるのですか? </h3>
+<p>私たちはスーパーレビュアーが、全てを完璧に行うことを期待はしていません。見逃される問題もあることでしょう。スーパーレビュアーは日々新しいことを学んでいるでしょうが、学問に終点はありません。スーパーレビュアーがスーパーレビューを行うことによって、あなたの作業成果に関する責任が発生するわけではないのです。
+</p>
+<h3 id=".E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.83.BC.E3.81.AE.E5.89.8D.E3.81.AB.E3.81.AF.E5.BF.85.E3.81.9A.E9.80.9A.E5.B8.B8.E3.81.AE.E3.83.AC.E3.83.93.E3.83.A5.E3.83.BC.E3.82.92.E5.8F.97.E3.81.91.E3.81.AA.E3.81.91.E3.82.8C.E3.81.B0.E3.81.AA.E3.82.8A.E3.81.BE.E3.81.9B.E3.82.93.E3.81.8B.EF.BC.9F"> スーパーレビューの前には必ず通常のレビューを受けなければなりませんか? </h3>
+<p>いいえ、逆の順序でも構いません。しかしながらスーパーレビュアーは、まず通常のレビューが終了してからスーパーレビューを始めたい、と決めることが出来ます。例えば、パッチの目的をどのようにして実現するかで議論が分かれており、パッチが完成するまでに大幅な変更があるかもしれないような場合です。
+</p>
+<h3 id=".E3.83.AC.E3.83.93.E3.83.A5.E3.83.BC.E3.82.84.E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.83.BC.E3.81.AE.E7.B5.90.E6.9E.9C.E3.81.AF.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AB.E4.BC.9D.E3.81.88.E3.82.89.E3.82.8C.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> レビューやスーパーレビューの結果はどのように伝えられますか? </h3>
+<p>パッチがレビューやスーパーレビューを通った場合には、バグレポートのアタッチメントテーブルが "{{ mediawiki.external('name') }}:review+" や、 "{{ mediawiki.external('name') }}:super-review+" の状態になります。レビューを通らなかった場合には、"{{ mediawiki.external('name') }}:review-"、 "{{ mediawiki.external('name') }}:super-review-" となります。レビュアーがレビューフラグを設定する場合には、レビューの内容に関するコメントがそのバグに追記されることが多いでしょう。
+</p>
+<h3 id=".E3.81.A9.E3.82.8C.E3.81.8F.E3.82.89.E3.81.84.E3.81.AE.E6.99.82.E9.96.93.E3.81.A7.E8.BF.94.E7.AD.94.E3.82.92.E8.B2.B0.E3.81.88.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> どれくらいの時間で返答を貰えますか? </h3>
+<p>あなたが特定のレビュアーにスーパーレビューを依頼した場合、24 時間以内になんらかの返答をもらえるでしょう。最低限、次のような事項に関する返答があるはずです。(a) スーパーレビュアーがレビューを行えるかどうか、(b) もし可能な場合、完了までの時間。 スーパーレビュアーが要求どおりスーパーレビューを行うことが出来ないというだけの返答をもらうのに 24 時間も待つのは長すぎるということはわかっていますので、要求されたスーパーレビューを行えない場合には、できるだけ早く返事を出すよう、スーパーレビュアーにお願いしています。
+</p><p>多くのパッチには、有意義なコメントが 24 時間以内に付くでしょう。しかし、スーパーレビュアーには、24 時間以内にレビューを行う義務はありません。 スーパーレビュアーが後になってスーパーレビューを行えそうにない、あるいは時間的見通しを誤ったのに気付いた場合には、迅速にスーパーレビュアーからその旨を連絡されるでしょう。
+</p><p>自分のパッチが単純かつ小さなもので、スーパーレビューは必要無いと確信できる場合は、その旨のリクエスト ("requesting 'rs= '") を行ってください。スーパーレビュアーはパッチに「ゴム印」を付ける決定権を持っています。つまり、スーパーレビュアーはパッチが非常に基本的なものであり、スーパーレビューを飛ばしても構わないと合意したことになります。この場合、「ゴム印」の付いたパッチはすみやかに受理されるでしょう。
+</p>
+<h3 id=".E8.BF.94.E7.AD.94.E3.82.92.E8.B2.B0.E3.81.88.E3.81.AA.E3.81.84.E5.A0.B4.E5.90.88.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.99.E3.82.8C.E3.81.B0.E8.89.AF.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> 返答を貰えない場合にはどうすれば良いですか? </h3>
+<p>スーパーレビュアーが度忘れをしてパッチを受け付けない、ということもありえます。彼らは完璧ではなく、往々にしてオーバーワークです。24 時間以内に返答がない場合には再度 Ping (問い合わせ) を行ってください。または他のスーパーレビュアーをあたってください。この問題が頻繁に起こるのであれば、具体的なデータを mozilla.org のスタッフに知らせてください。(データ抜きで苦情をよこさないでください。「これに一週間かかりました」だけで、具体的なデータの量が充分でなければ、問題の原因を探り出すことはできません。) 私たちはトラッキングシステムを使用しているのですから、より良い解決策を見つけることができるでしょう。
+</p>
+<h3 id="24_.E6.99.82.E9.96.93.E4.BB.A5.E5.86.85.E3.81.AB.E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.83.BC.E3.82.92.E5.8F.97.E3.81.91.E3.82.89.E3.82.8C.E3.82.8B.E8.A6.8B.E8.BE.BC.E3.81.BF.E3.81.AF.E3.81.82.E3.82.8A.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> 24 時間以内にスーパーレビューを受けられる見込みはありますか? </h3>
+<p>それは、あなたのパッチと、スーパーレビュアーの作業負荷によります。各スーパーレビュアーの作業のやり方は人によって少しずつ異なっているので、スーパーレビュアーがコーディング、スーパーレビュー、そしてその他の作業に対してどのような優先順位を付けるのか、そしてあなたのパッチがそのどこに該当するか、を一つの型にはめることはできません。仕事が中断されることに慣れていて、簡単なレビューのためならすぐに本業を中断できるスーパーレビュアーもいるでしょう。別のスーパーレビュアーは、まず本業を完了させてからスーパーレビューにかかるでしょう。簡単にレビューでき、かつ重大問題を解決するようなパッチが関心を引きやすいということは確かです。また、数時間の濃密なレビューを必要とするような大きなパッチには時間がかかるということも明らかでしょう。
+</p>
+<h3 id=".E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.83.BC.E3.82.92.E5.BE.8C.E5.9B.9E.E3.81.97.E3.81.AB.E3.81.97.E3.81.A6.E3.80.81.E3.83.81.E3.82.A7.E3.83.83.E3.82.AF.E3.82.A4.E3.83.B3.E3.82.92.E5.85.88.E3.81.AB.E8.A1.8C.E3.81.86.E3.81.93.E3.81.A8.E3.81.8C.E5.87.BA.E6.9D.A5.E3.81.AA.E3.81.84.E3.81.AE.E3.81.AF.E4.BD.95.E6.95.85.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> スーパーレビューを後回しにして、チェックインを先に行うことが出来ないのは何故ですか? </h3>
+<p>それには多くの理由があります。ここに、順不同でいくつかを挙げます。
+</p><p>スーパーレビュアーが探し出すのは、チェックインされた後に広範囲の影響を及ぼすような問題だからです。スーパーレビューで発見できるような問題でトランク上の全員が苦労するのでは意味がありません。ミスター・スポックなら「多数の善は、少数の善に勝る」と言うでしょう。
+</p><p>コードをチェックインすると、「パッチの作業はこれで終わりだ。次の作業に進もう」という心理学的な効果をもたらすようです。そうすると、パッチ変更の要求は、新たな別の作業と思われがちです。実際にはまだ完了していないのに、完了したような気分にさせるのは、馬鹿げたことです。
+</p><p>コードのチェックインの後にスーパーレビュアーがコメントを追加すると、そのコメントが実装されたかされていないかを追跡するのが困難になります。
+</p>
+<h3 id=".E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.82.A2.E3.83.BC.E3.81.8B.E3.82.89.E3.80.81.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E5.9B.9E.E7.AD.94.E3.82.92.E8.B2.B0.E3.81.88.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> スーパーレビュアーから、どのような回答を貰えるのですか? </h3>
+<p>典型的な返答としては、以下の様なものがあります:
+</p>
+<ul><li> "sr={{ mediawiki.external('name') }}." という承認。
+</li><li> "r/sr={{ mediawiki.external('name') }}." という承認。これはスーパーレビュアーが、パッチの関係する領域でレビュアーでもある場合に有り得ます。この返答の意味は、承認がレビューとスーパーレビューとのどちらとしても適用できる (両方ではない) ことを意味します。従って、パッチの作者にとって、第二のレビューを受けることが可能な人の幅が広がります。
+</li><li> 変更の要求と変更されたパッチの再提出の要求。
+</li><li> 変更の要求と、"once changes made, sr={{ mediawiki.external('name') }}." (変更後は{{ mediawiki.external('name') }}にスーパーレビューを受けること) の様な但し書き。
+</li><li> "rs={{ mediawiki.external('name') }}." という承認。これは、パッチが小さいか自明のものであって、スーパーレビューは不要である、とスーパーレビュアーが判断したことを意味します。
+</li><li> モジュール所有者に対して、まずレビューを完了するよう依頼。
+</li><li> まずパッチを適用して、テストしてくれるよう誰かに依頼。(往々にして良い学習材料です)
+</li><li> 他のスーパーレビュアーにパッチを取り扱ってくれるように依頼。
+</li><li> 説明またはリスク分析の依頼。
+</li></ul>
+<p>スーパーレビュアーは、上記のリストに記載されていない回答をすることもあります。上記は全ての回答を網羅したものではありませんので、スーパーレビュアーがこのリストに縛られるのは私たちの望むところではありません。
+</p>
+<h3 id=".E3.81.AA.E3.81.9C.E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.82.A2.E3.83.BC.E3.81.8B.E3.82.89_.22rs.3D.22_.E3.82.92.E8.B2.B0.E3.81.86.E3.81.BE.E3.81.A7.E5.BE.85.E3.81.9F.E3.81.AA.E3.81.91.E3.82.8C.E3.81.B0.E3.81.AA.E3.82.89.E3.81.AA.E3.81.84.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F_.E3.81.AA.E3.81.9C.E5.B0.8F.E3.81.95.E3.81.AA.E5.A4.89.E6.9B.B4.E3.81.A7.E3.81.82.E3.81.A3.E3.81.A6.E3.82.82.E3.80.81.E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.83.BC.E3.81.AE.E5.BF.85.E8.A6.81.E3.81.8C.E7.84.A1.E3.81.84.E3.81.A8.E5.8B.9D.E6.89.8B.E3.81.AB.E5.88.A4.E6.96.AD.E3.81.97.E3.81.A6.E3.81.AF.E3.81.AA.E3.82.89.E3.81.AA.E3.81.84.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> なぜスーパーレビュアーから "rs=" を貰うまで待たなければならないのですか? なぜ小さな変更であっても、スーパーレビューの必要が無いと勝手に判断してはならないのですか? </h3>
+<p>一貫性を保つには、チェックインアクセスが可能な全員よりも、25 人のグループのほうが簡単だからです。あなたのパッチが "rs" の範疇に属すると考えるのなら、リクエストにその旨を注記してください。これによって、レビューに割ける時間が少ないスーパーレビュアーに対して、そのパッチを見てみようという気にさせることができるかもしれません。もちろん、スーパーレビュアーは、リクエストを受け入れず、パッチにスーパーレビューが必要であると決めることが出来ます。もしあなたが全てのパッチに "rs wanted" 通知をつけたとするならば、「オオカミが来たとほらを吹く少年」だと見なされるという逆効果になり、"rs wanted" を付けても重視されなくなるでしょう。
+</p>
+<h3 id=".E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.82.A2.E3.83.BC.E3.81.8C.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB.E6.89.80.E6.9C.89.E8.80.85.E3.81.AE.E5.A0.B4.E5.90.88.E3.80.81.E3.81.A9.E3.81.86.E3.81.97.E3.81.A6_R_.E3.81.A8_SR_.E3.81.AE.E4.B8.A1.E6.96.B9.E3.82.92.E4.B8.8E.E3.81.88.E3.82.8B.E3.81.93.E3.81.A8.E3.81.8C.E5.87.BA.E6.9D.A5.E3.81.AA.E3.81.84.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> スーパーレビュアーがモジュール所有者の場合、どうして R と SR の両方を与えることが出来ないのですか? </h3>
+<p>ソースコードをツリーに入れるにあたって、第三者の確認が必要と考えるからです。
+</p>
+<h3 id=".E7.A7.81.E3.81.AE.E3.83.91.E3.83.83.E3.83.81.E3.81.AE.E3.83.97.E3.83.A9.E3.82.A4.E3.82.AA.E3.83.AA.E3.83.86.E3.82.A3.E3.81.8C.E4.BD.8E.E3.81.8F.E3.81.A6.E3.80.81.E5.BD.93.E5.88.86.E3.81.AE.E9.96.93.E3.83.AC.E3.83.93.E3.83.A5.E3.83.BC.E3.82.92.E5.8F.97.E3.81.91.E3.82.89.E3.82.8C.E3.81.AA.E3.81.84.E3.80.81.E3.81.A8.E3.83.AC.E3.83.93.E3.83.A5.E3.82.A2.E3.83.BC.E3.81.AB.E8.A8.80.E3.82.8F.E3.82.8C.E3.81.9F.E5.A0.B4.E5.90.88.E3.80.81.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> 私のパッチのプライオリティが低くて、当分の間レビューを受けられない、とレビュアーに言われた場合、どうしたら良いですか? </h3>
+<p>間違ってはいないのかもしれませんが、そのような返答を貰うのはいやですよね、別のスーパーレビュアーをあたってください。
+</p>
+<h3 id=".E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.82.A2.E3.83.BC.E3.81.AF.E3.80.81.E8.A9.B2.E5.BD.93.E3.83.90.E3.82.B0.E3.81.A7.E6.98.8E.E7.A2.BA.E3.81.AB.E7.89.B9.E5.AE.9A.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.81.AA.E3.81.84.E3.82.88.E3.81.86.E3.81.AA.E4.BD.9C.E6.A5.AD.E3.82.92.E3.83.91.E3.83.83.E3.83.81.E4.BD.9C.E6.88.90.E8.80.85.E3.81.AB.E4.BE.9D.E9.A0.BC.E3.81.99.E3.82.8B.E3.81.93.E3.81.A8.E3.81.8C.E5.87.BA.E6.9D.A5.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> スーパーレビュアーは、該当バグで明確に特定されていないような作業をパッチ作成者に依頼することが出来ますか? </h3>
+<p>はい、これに関して、スーパーレビュアーには自由裁量権があります。コードの品質の継続的な向上が私たちの望みであり、そのパッチに関連する追加的な変更を作成するのは正当なことでしょう。しかしながら、スーパーレビュアーは白紙委任状を持っているわけではありません。例えば、ミスタイプを修正するために、そのモジュール全体の文字列の実装を更新するような要求は、やり過ぎでしょう。特定のバグが関与する範囲と、スーパーレビュアーによって要求される変更の範囲とには、合理的な関係があるべきです。
+</p>
+<h3 id=".E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.82.A2.E3.83.BC.E3.81.8B.E3.82.89.E3.80.81.E4.B8.8A.E8.A8.98.E3.81.AE.E6.96.87.E5.AD.97.E5.88.97.E3.81.AE.E4.BE.8B.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E6.8B.85.E5.BD.93.E7.AF.84.E5.9B.B2.E5.A4.96.E3.81.AE.E5.A4.89.E6.9B.B4.E3.82.92.E4.BE.9D.E9.A0.BC.E3.81.95.E3.82.8C.E3.81.9F.E3.82.89.E3.80.81.E3.81.A9.E3.81.86.E3.81.99.E3.82.8C.E3.81.B0.E8.89.AF.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> スーパーレビュアーから、上記の文字列の例のような担当範囲外の変更を依頼されたら、どうすれば良いですか? </h3>
+<p>スーパーレビュアーに、その要求を新たなバグとして登録し、別のバグとして評価し優先順位付けし、修正することが可能であるか、尋ねてください。そして、この新しいバグが修正される前に、あなたが行った修正をチェックできないか、ということも確認してください。もしスーパーレビュアーと合意が出来なかった場合、他のスーパーレビュアー、または <a class=" link-mailto" href="mailto:drivers@mozilla.org">drivers@mozilla.org</a>、あるいはこの両方に、仲裁を頼んでください。見解の相違があるということを明記するのを忘れないようにしてください。他のレビュアーに第二のスーパーレビューを求め、より口当たりの良い結果を期待することは、更なる問題に繋がるでしょう。
+</p>
+<h3 id=".E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.82.A2.E3.83.BC.E3.81.AF.E3.83.A6.E3.83.BC.E3.82.B6.E3.83.BC.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.81.A8.E3.83.A6.E3.83.BC.E3.82.B6.E3.83.BC.E3.82.A8.E3.82.AF.E3.82.B9.E3.83.9A.E3.83.AA.E3.82.A8.E3.83.B3.E3.82.B9.E3.81.AE.E5.95.8F.E9.A1.8C.E3.82.82.E6.8B.85.E5.BD.93.E3.81.97.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> スーパーレビュアーはユーザーインターフェースとユーザーエクスペリエンスの問題も担当しますか? </h3>
+<p>はい。現在私たちは、コードのチェックインに先立って、独立した「UI/UE レビュー」を行っていません。過去に何度か提案されたことはありますが、私たちは別のレベルや別のレビューを設けるつもりはありません。その代わりに、スーパーレビュアーに UI の問題も考慮するように頼んでいます。彼らは、(a) インターフェースの破壊、(b) 他の UI 要素や仕様との不一致、(c) 仕様にはない大幅な UI の変更、 (d) その他奇妙なインターフェース、に注目するでしょう。
+</p><p>(a) の場合、スーパーレビュアーは、スーパーレビューの一環として修正できるか尋ねるでしょう。 (b), (c), (d) に関しては、スーパーレビュアーが UI 開発者に声をかけるでしょう。スーパーレビュアーが個人的な好みで UI に関する決定を行うようなことはあってはならないと考えています。
+</p>
+<h3 id=".E7.90.86.E8.A7.A3.E3.81.A7.E3.81.8D.E3.81.AA.E3.81.84.E5.A4.89.E6.9B.B4.E3.82.84.E3.80.81.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AB.E5.AE.9F.E8.A3.85.E3.81.97.E3.81.9F.E3.82.89.E3.82.88.E3.81.84.E3.81.8B.E3.82.8F.E3.81.8B.E3.82.89.E3.81.AA.E3.81.84.E5.A4.89.E6.9B.B4.E3.82.92.E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.82.A2.E3.83.BC.E3.81.8B.E3.82.89.E4.BE.9D.E9.A0.BC.E3.81.95.E3.82.8C.E3.81.9F.E5.A0.B4.E5.90.88.E3.80.81.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> 理解できない変更や、どのように実装したらよいかわからない変更をスーパーレビュアーから依頼された場合、どうしたら良いですか? </h3>
+<p>スーパーレビュアーには要求仕様を明確にする責任がありますが、あなたのコードの修正方法を教える責任はありません。スーパーレビュアーの要求を実装するために何らかの勉強が必要な場合、コミュニティの知り合いや会社の同僚に聞く、IRC やニュースグループに質問する、などの方法があります。もし Mozilla の作業を行うために雇われているのなら、あなたの会社に学習システムや指導教育システムがあるかもしれません。
+</p>
+<h3 id=".E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.83.BC.E3.81.AB.E3.81.AF.E3.83.88.E3.83.AC.E3.83.BC.E3.83.8B.E3.83.B3.E3.82.B0.E6.A9.9F.E6.A7.8B.E3.81.A8.E3.81.97.E3.81.A6.E3.81.AE.E6.84.8F.E5.9B.B3.E3.81.AF.E3.81.82.E3.82.8A.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> スーパーレビューにはトレーニング機構としての意図はありますか? </h3>
+<p>Yes でもあり、No でもあります。スーパーレビューは中上級者には優れた訓練機構です。一方で、経験が不十分な人にとって、スーパーレビューは恐ろしい訓練機構でもあります。コミュニティーの全体にわたって、基礎的な訓練を徹底的に広める必要がありますが、スーパーレビュアーの数はあまりにも少なく、また忙しすぎるので、マンツーマンで訓練を行う時間はほんの短い時間であっても捻出できません。そんな要求をすれば、燃え尽き症候群へのもうひとつの確実な道となるでしょう。私たちは、スーパーレビューが訓練の最終ステップとなるような、別の訓練方法を探しています。
+</p>
+<h3 id=".E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E3.82.B9.E3.83.BC.E3.83.91.E3.83.BC.E3.83.AC.E3.83.93.E3.83.A5.E3.82.A2.E3.83.BC.E3.81.AB.E3.81.AA.E3.82.8C.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> どうしたらスーパーレビュアーになれますか? </h3>
+<p>まず、自分の胸に手を当てて考えてください。本当に、インフラのレビュアーになりたいですか?「スーパー」が意味する、製品のコア・シェルよりも魅惑的な何かに惑わされていませんか?それでもやはりスーパーレビュアーになりたいのなら、スーパーレビューの分野におけるあなたの才能を実証する方法を探してください。あなたが既にコードレビューに関っているのなら、範囲を拡大してスーパーレビューの対象も含めるようにしてください。また、スーパーレビュアーの中にはアシスタントがいればいいと思っている人がいるかもしれません。
+</p><p>スーパーレビュアーに次のようなことをアピールしてみましょう。
+</p>
+<ul><li> 製品の基盤と統合の問題について理解していることを示すコードを書く。
+</li><li> より良いレビュー、慎重なレビューを行う。
+</li><li> コードレビューにおいて製品基盤と統合の問題を識別する。
+</li><li> 明確なコメントでフィードバックを送り、製品基盤と統合の問題に関する教育技術を持っていることを示す。
+</li><li> 良好なコミュニケーションが取れることを示す。
+</li><li> Mozilla コミュニティへの尊敬の念を持っていることを示す。
+</li></ul>
+<p>自分の準備が整ったと思ったら、スーパーレビュアーグループにあなたの参加を提案してくれるスーパーレビュアーを探してください。スーパーレビュアーは、あなたの準備が整った、あるいは検討に値する程度に準備が整っていると考えれば、参加を提案してくれるでしょう。 明らかに力不足の人をスーパーレビュアーが推薦することは、まず無いでしょう。
+</p><p>スーパーレビュアーたちの間で、あなたには参加する資格があるという合意が出来たなら、あなたはグループの一員になれます。「合意」についての公式な定義はまだありませんし、明文化のためのプロセスもありません。当面はケースバイケースで対応したいと思います。必要となる前に、ではなく、必要に応じてプロセスを加えましょう。 </p>
+<div class="originaldocinfo">
+<h2 id=".E5.8E.9F.E6.96.87.E6.9B.B8.E3.81.AE.E6.83.85.E5.A0.B1"> 原文書の情報 </h2>
+<ul><li> 著者: Marcia Knous
+</li><li> 貢献者: dbaron, asa
+</li><li> 最終更新日: 2005-03-30
+</li></ul>
+</div>
+<div class="noinclude">
+</div>
+{{ languages( { "en": "en/Code_Review_FAQ" } ) }}
diff --git a/files/ja/mozilla/developer_guide/how_to_submit_a_patch/index.html b/files/ja/mozilla/developer_guide/how_to_submit_a_patch/index.html
new file mode 100644
index 0000000000..03ed7214bd
--- /dev/null
+++ b/files/ja/mozilla/developer_guide/how_to_submit_a_patch/index.html
@@ -0,0 +1,109 @@
+---
+title: How to Submit a Patch
+slug: Mozilla/Developer_Guide/How_to_Submit_a_Patch
+tags:
+ - Developing Mozilla
+ - MDC Project
+ - NeedsContent
+ - 要更新
+---
+<div class="summary">
+<p><span class="seoSummary">パッチを提出し、レビューを受け、Mozilla ソースツリーにコミットして貢献するための幾つかのステップです。この記事ではそのやり方を説明します。</span></p>
+</div>
+
+<p>パッチの提出プロセスは以下の図に書いてある通りです。そして、各ステップの詳細は次のセクションで説明します。</p>
+
+<p style="text-align: center;"><img alt="Workflow of submitting a patch: Preparation | Module Ownership | Creating a patch
+| Testing | Getting Reviews | Addressing Review Comments | Committing the Patch" class="default internal" src="/@api/deki/files/3599/=submitting-patch-workflow.png" style="height: 348px; width: 267px;"></p>
+
+<h2 id="準備">準備</h2>
+
+<p>全てのコードの変更は <a class="link-https" href="https://bugzilla.mozilla.org/" title="https://bugzilla.mozilla.org/">bugzilla.mozilla.org</a> のバグによってトラッキングされています。バグがないものについてはコードレビューされず、レビューされないコードは受け付けません。重複を避けるために変更しようとしている内容が既に存在していないか、<a href="https://bugzilla.mozilla.org/query.cgi?format=specific">バグの検索</a>をし存在しなければファイル(登録)してください。変更についてのほとんどの議論はバグ上で行います。そのため、バグには問題を正しく記載することが解決の鍵です。</p>
+
+<p>バグが正しいプロダクト・コンポーネントとして登録されているか確認してください。もっと情報が欲しい時は、IRC チャンネルの #developers か、ニュースグループに問い合わせてください。</p>
+
+<p>バグを作業している人は bugzilla 内のバグの "assignee" として登録されます。もし誰かがバグにアサインされていれば、その人に変更を調整するためにメールしてください。もしいなければ、バグの状態をあなたが作業していることがわかるようにステータスを変更し、バグの編集権限がある人に自分がアサインでいるよう依頼してください。</p>
+
+<p>パッチが長いこと作られず他のコントリビュータが手をつけないことを避けるため、幾つかのチームでは、アサインされる前にパッチを添付する新しいコントリビュータを待っています。バグのコメントに興味を持つようなことを書くと、チームの誰かが普段使っているプロセスを教えてくれるかもしれません。</p>
+
+<h2 id="モジュールオーナーシップ">モジュールオーナーシップ</h2>
+
+<p>全てのコードは<a href="/ja/docs/">モジュールオーナー</a>によって管理されています。モジュールオーナーはレビューをして変更を許可する役割を持っています。コードを書く前に、モジュールオーナーを確認し、変更提案を許可するか書くにしてください。彼らは新しいユーザーインターフェイス(UI review)、関数(API review)、または変更のテストケースを作成する人を探しています。</p>
+
+<p>もしモジュールオーナーがわからない場合、IRC または ニューズグループに確認した方が良いです。変更するファイル履歴も活用できます。例えば、{{ Source("browser/base/content/browser.js") }} の変更ログを <a href="http://mxr.mozilla.org/mozilla/source/">MXR</a> の "Hg Log" リンクをクリックまたは、<code> hg log browser/base/content/browser.js </code>を実行することで確認します。"r=nickname" のようなログがチェックインメッセージに含まれていてそこからレビューアが誰かを質問することができます。</p>
+
+<h2 id="パッチを作成する">パッチを作成する</h2>
+
+<p>Mozilla ソースコードの変更はパッチで表現されます。パッチはバージョンコントロールにコミットするための基本です。</p>
+
+<p>各パッチは1つの完全な変更を表現し、分割された変更だったらパッチも複数に分割します。もし変更が大きい場合、パッチは複雑になります。その時は、<a href="https://secure.phabricator.com/book/phabflavor/article/writing_reviewable_code/#many-small-commits">パッチを分割し、小さく簡単に読みやすいパッチに変更するためのステップ</a>を参考にしてください。これは変更のレビューを<a href="http://groups.google.com/group/mozilla.dev.planning/msg/2f99460f57f776ef?hl=en">簡単にし、早いレビューを導き</a>、公式なレビューの良い方法です。</p>
+
+<div class="note">
+<p><strong>Note</strong>: 適切なフォーマットでレビューを簡素化させるためのパッチを作るための情報については、<a href="/docs/Mercurial_FAQ#How_can_I_generate_a_patch_for_somebody_else_to_check-in_for_me.3F">patch の精製方法</a>を参照してください。我々の<a href="/docs/Developer_Guide/Reviewer_Checklist">レビューアチェックリスト</a>も参照して良いパッチの作成情報を見てください。</p>
+</div>
+
+<h2 id="テスト">テスト</h2>
+
+<p>すべての変更をテストします。多くの場合、他の変更時にテストできるように<a href="/en-US/docs/Mozilla_automated_testing">自動テスト</a>が要求されます。自動テストができない場合、<a href="/docs/Litmus_tests">Limus tests</a> と呼ばれる手動テストを使ってください。</p>
+
+<p>変更がレグレッションを起こさないようにローカルで自動テストをするか、<a href="https://wiki.mozilla.org/Build:TryServer">Mozilla の try server</a> を使ってください。try server の権限がない場合でも、モジュールオーナーまたは開発者が IRC でジョブを動かすための手助けをしてくれます。</p>
+
+<h2 id="パッチを提出する">パッチを提出する</h2>
+
+<p>もしコントリビュータなら、パッチ提出に MozReview を使うべきです。使い方は <a href="https://mozilla-version-control-tools.readthedocs.org/en/latest/mozreview-user.html">MozReview User Guide</a> を見てください。</p>
+
+<p>もし Mercurial を使う場合、Bugzilla にパッチを添付する仕組みである <a href="https://mozilla-version-control-tools.readthedocs.org/en/latest/hgext.html#bzexport">bzexport extension</a> をインストールします。bzexport の簡単なインストール方法は <code>mach mercurial-setup </code>を実行することです。その後、ターミナルから画面を切り替えることなく、Bugzilla にパッチをアップロードするために <code>hg bzexport -e</code> を実行します。</p>
+
+<p>もし、MozReview や bzexport を使わない場合、bugzilla の <em>Add an attachment </em>リンクを使ってバグにパッチを添付します。レビューアや bugzilla ユーザーがパッチを読めるように <em>patch</em> チェックボックスにチェックを入れてください。</p>
+
+<p>一部のパッチのアプローチ手段を確認したり、フィードバックを問い合わせすることを恐れないでください。コードと一緒に質問をされた時にコメントしたり提案することはとても簡単なことです。</p>
+
+<h2 id="Getting_the_patch_reviewed" name="Getting_the_patch_reviewed">レビューを受ける</h2>
+
+<p>コードレビューを通すことは Mozilla の品質管理の一つです。すべてのパッチはモジュールオーナーまたは、支持したピアによってレビューされます。モジュールを跨いだり、API を変更したり、セキュリティ関係の変更をする場合、レビューに加え、<a class="external" href="http://www.mozilla.org/hacking/reviewers.html">super-review</a> も必須です。</p>
+
+<p>レビュープロセスについての詳しい情報は、<a class="internal" href="/en-US/docs/Code_Review_FAQ" title="/en-US/docs/Code Review FAQ">code review FAQ</a> をご覧ください。もし変更がユーザーインターフェイスに影響を与える場合、<a href="/docs/Developer_Guide/Requesting_feedback_and_ui-review_for_desktop_Firefox_front-end_changes">フィードバッグやデスクトップ版 Firefox のフロントエンド変更のためによる ui-review を要求してください</a>。<br>
+ <br>
+ <br>
+ <img alt="request-review.png" class="internal rwrap" src="/@api/deki/files/3598/=request-review.png" style="border: 1px solid black; float: right; height: 149px; width: 519px;">レビューやスーパーレビューを要求するには、bugzilla の添付ファイルリンクの詳細(Details)をクリックします。左側にラベルと共にドロップダウンが存在します。"review" を見つけ、フラグを"?"に変更し、モジュールオーナーかパッチをレビューしてくれるピアのメールアドレスを入力します。最後に送信することを忘れないでください!</p>
+
+<p><em>注意:</em> もしレビューアが1週間ほど応答しない場合は以下の方法をとってください:</p>
+
+<ul>
+ <li>Moizlla の IRC サーバーの <a class="link-irc" href="irc://irc.mozilla.org/developers">#developers</a> に参加し、誰かレビューが遅れている理由を知っているか聞いてください。(その時に一緒にバグのリンクを添えてください)</li>
+ <li>もしレビューがされていなければ、直接レビューアにメールをして、いつレビューができるか、または誰か他にレビューができないか聞いてください。</li>
+ <li>最後の手段としてnews.mozilla.org のニュースグループに問い合わせてみてください。</li>
+</ul>
+
+<h2 id="レビューコメントを修正する">レビューコメントを修正する</h2>
+
+<p>最初っからパッチがパーフェクトな事はありません。レビューアは "review-" をつけ、そしてパッチを許可する前に修正すべき問題点を教えてくれます。要求しているリビジョンは参加を阻害する意図ではなく、変更の完成度を可能な限り良いものにするために奨励しているということを忘れないでください。レビューアの助言を注意深く修正し、新しいパッチを添付して再度レビューを出してください。</p>
+
+<p>時々レビューアは"review+" と共に、スペルミスやインデントミスなどの修正すべき小さな変更を指摘する場合があります。全ての指摘を修正するべきですが、再レビューは不要です。変更を作成し、リビジョンを改訂したのちに、添付ファイルページに表示されている元のパッチの obsolete チェックボックスにチェックを入れてください。もしそのリビジョンに不安がある場合は、レビューを要求してください。</p>
+
+<p>時々レビューした後で、コミット前の場合、誰かが衝突する変更を加えることがあります。もしマージがシンプルで影響を与えないような場合、アップデートしたバージョンのパッチを投稿します。それ以外はレビューが必要です。</p>
+
+<p>もしレビュープロセスが2週間以上止まっている場合は、上述している "注意" を参考にしてください。</p>
+
+<p>多くのオープンソースプロジェクトで、開発者は完全な状態でもパッチを許可し、それを完了し適用ます。Mozilla の文化では、<strong>レビューアはレビューだけして、パッチにコメント</strong>します。もし パッチ提出者が作成したリビジョンを諦めた場合、誰かがバグを引き取るまではパッチは存在し続けます。</p>
+
+<h2 id="Getting_the_patch_checked_into_the_tree" name="Getting_the_patch_checked_into_the_tree">パッチをコミットする</h2>
+
+<p>レビューが完了したらパッチはコミットできます。</p>
+
+<div class="note">
+<p>パッチが適用されたアプリケーションをビルドしてください。それが動作させて自動テスト(そして完了したバグの動作)を確認し、 <a class="link-https" href="https://wiki.mozilla.org/Build:TryServerAsBranch" title="https://wiki.mozilla.org/Build:TryServerAsBranch">try server</a> にプッシュしてください。(この時もコメントにバグを明記します)<br>
+ テストしないパッチを提出するとコミッターの時間を浪費し、ツリーを炎上させます。全ての必要な確認を完了することで、全員の時間と努力を節約してください。</p>
+
+<p>コミッターがパッチをチェックしやすいように、パッチを<a href="/docs/Creating_a_patch_that_can_be_checked_in">適切なフォーマット</a>で作成してください。</p>
+</div>
+
+<p>バグに <a class="link-https" href="https://bugzilla.mozilla.org/describekeywords.cgi#checkin-needed"><code>checkin-needed</code></a> キーワードをつけます。(またはバグの変更権限がない場合は、誰かに追加してもらえるよう訪ねてください) コミット権限を持ったコミュニティーメンバーは通常1日程度で checkin-needed キーワードを持ったバグを見つけ、コミットします。もしパッチが時間帯によってチェックインされていない場合は、<a class="external" href="http://irc.mozilla.org/">irc.mozilla.org</a> の <a class="external" href="http://irc.mozilla.org/developers">#developers</a> に参加し、あなたの代わりにチェックインできる人を聞いてください。ほとんどの場合、ランド後に新しい問題をパッチが引き起こさないことを確認するために Try の実行結果のリンクが必要です。</p>
+
+<p>もし自身でコミットできる場合は、<a href="/en-US/docs/Developer_Guide/Committing_Rules_and_Responsibilities" title="/en-US/docs/Developer Guide/Committing Rules and Responsibilities">Committing Rules and Responsibilities</a> に従うことを忘れないでください。</p>
+
+<h2 id="Getting_the_patch_checked_into_the_tree" name="Getting_the_patch_checked_into_the_tree">レグレッション</h2>
+
+<p>自身の変更により、機能またはパフォーマンスのレグレッションが発生した状態です。特にパフォーマンスレグレッションの厳しい<a href="http://www.mozilla.org/hacking/regression-policy.html">ポリシー</a>があります。これは変更したコードがよくバックアウトされてしまうことがあり、修正して再提出する必要があるということです。レグレッションはテスト(自身がチェックイン前に行ったもの、また実施していないもの)が包括的に不十分ということを意味し、パッチを再提出するか、適切なテストを伴うレグレッションの修正をする必要があります。</p>
+
+<p>いくつかパッチを作成したら、<a href="http://www.mozilla.org/hacking/committer/">Mozilla source code のコミット権を取得する</a>ことも考えてみてください。</p>
diff --git a/files/ja/mozilla/developer_guide/index.html b/files/ja/mozilla/developer_guide/index.html
new file mode 100644
index 0000000000..e3a8b873d0
--- /dev/null
+++ b/files/ja/mozilla/developer_guide/index.html
@@ -0,0 +1,95 @@
+---
+title: 開発者ガイド
+slug: Mozilla/Developer_Guide
+tags:
+ - Developing Mozilla
+translation_of: Mozilla/Developer_guide
+---
+<p><span class="seoSummary">Mozilla プロジェクトへ貢献する方法は、コーディング・テスト・ビルドプロセス/ツールの改善・ドキュメントへの貢献など多くの方法があります。このドキュメントは Mozilla 貢献者向けの情報だけでなく、経験豊富な貢献者にも役に立つ情報を提供します。</span></p>
+
+<div class="row topicpage-table">
+<div class="section">
+<h2 class="Documentation" id="Documentation_topics">Documentation topics</h2>
+
+<dl>
+ <dt><a href="/docs/Introduction" title="Introduction">Getting Started</a></dt>
+ <dd>A step-by-step beginner's guide to getting involved with Mozilla.</dd>
+ <dt><a href="/docs/Mozilla/Developer_guide/Articles_for_new_developers">For new Mozilla developers</a></dt>
+ <dd>A directory of articles which are particularly helpful for new Mozilla developers.</dd>
+</dl>
+
+<dl>
+ <dt><a class="internal" href="/docs/Developer_Guide/Source_Code" title="en-US/docs/Developer_Guide/Source_Code">Working with Mozilla Source Code</a></dt>
+ <dd>A code overview, how to get the code, and the coding style guide.</dd>
+ <dt><a class="internal" href="/docs/Developer_Guide/Build_Instructions" title="en-US/docs/Developer_Guide/Build_Instructions">Build Instructions</a></dt>
+ <dd>How to build Firefox, Thunderbird, SeaMonkey, or other Mozilla applications.</dd>
+ <dt><a href="/docs/Developer_Guide/Development_process_overview" title="en-US/docs/Developer Guide/Development process overview">Development process overview</a></dt>
+ <dd>An overview of the entire Mozilla development process.</dd>
+ <dt><a href="/docs/Mozilla/Multiple_Firefox_Profiles" title="en-US/docs/Mozilla/Multiple_Firefox_Profiles">Managing multiple profiles</a></dt>
+ <dd>When working with prerelease versions of Firefox, it's often helpful to have multiple Firefox profiles, such as one for each channel, or for different kinds of testing.</dd>
+ <dt><a class="internal" href="/docs/Mozilla_automated_testing" title="en-US/docs/Mozilla automated testing">Automated Testing</a></dt>
+ <dd>How to run Mozilla's automated tests, and how to write new tests.</dd>
+ <dt><a class="internal" href="/docs/Developer_Guide/How_to_Submit_a_Patch" title="en-US/docs/Getting your patch in the tree">How to submit a patch</a></dt>
+ <dd>After getting your patch written, you need to get it checked into the tree. This article explains the review process and how to get your patch approved.</dd>
+ <dt><a href="/docs/Developer_Guide/Getting_documentation_updated" title="en-US/docs/Developer_Guide/Getting documentation updated">Getting documentation updated</a></dt>
+ <dd>How to ensure that documentation is kept up to date as you develop.</dd>
+ <dt><a class="internal" href="/docs/Mozilla_Modules_and_Module_Ownership" title="en-US/docs/Mozilla Modules and Module Ownership">Mozilla modules and module ownership</a></dt>
+ <dd>This article provides information about Mozilla's modules, what the role of a module owner is, and how module owners are selected.</dd>
+ <dt><a class="internal" href="/docs/Code_snippets" title="en-US/docs/Code_snippets">Code snippets</a></dt>
+ <dd>Useful code samples for a wide variety of things you might need to figure out how to do.</dd>
+ <dt><a class="internal" href="/docs/Mozilla_Development_Strategies" title="en-US/docs/Mozilla Development Strategies">Mozilla development strategies</a></dt>
+ <dd>Tips for how to make the most of your time working on the Mozilla project.</dd>
+ <dt><a class="internal" href="/docs/Debugging" title="en-US/docs/Debugging">Debugging</a></dt>
+ <dd>Find helpful tips and guides for debugging Mozilla code.</dd>
+ <dt><a href="/docs/Performance" title="en-US/docs/Performance">Performance</a></dt>
+ <dd>Performance guides and utilities to help you make your code perform well (and to play nicely with others).</dd>
+ <dt><a class="internal" href="/docs/The_Mozilla_platform" title="en-US/docs/The Mozilla platform">The Mozilla platform</a></dt>
+ <dd>Information about the workings of the Mozilla platform.</dd>
+ <dt><a href="/docs/Developer_Guide/Adding_APIs_to_the_navigator_object" title="en-US/docs/Developer_Guide/Adding_APIs_to_the_navigator_object">Adding APIs to the navigator object</a> {{ gecko_minversion_inline("9.0") }}</dt>
+ <dd>How to augment the {{ domxref("window.navigator") }} object with additional APIs.</dd>
+ <dt><a href="/docs/Developer_Guide/Interface_Compatibility" title="en-US/docs/Developer Guide/Interface Compatibility">Interface Compatibility</a></dt>
+ <dd>Guidelines for modifying scriptable and binary APIs in Mozilla.</dd>
+ <dt><a href="/docs/Developer_Guide/Customizing_Firefox" title="en-US/docs/Developer Guide/Customizing Firefox">Customizing Firefox</a></dt>
+ <dd>Information about creating customized versions of Firefox.</dd>
+ <dt><a href="/docs/Developer_Guide/Virtual_ARM_Linux_environment" title="Virtual ARM Linux environment">Virtual ARM Linux environment</a></dt>
+ <dd>How to set up an ARM emulator running Linux for testing ARM-specific, but not necessarily platform-specific, code. Useful for mobile developers.</dd>
+ <dt><a href="/docs/Introduction/Obsolete_Build_Caveats_and_Tips" title="Obsolete Build Caveats and Tips">Obsolete Build Caveats and Tips</a></dt>
+ <dd>A place to put build tips which are no longer relevant to building the latest version of the code from main but are relevant when building old codebases.</dd>
+</dl>
+</div>
+
+<div class="section">
+<h2 class="Tools" id="ツール">ツール</h2>
+
+<dl>
+ <dt><a class="link-https" href="https://bugzilla.mozilla.org/" title="https://bugzilla.mozilla.org/">Bugzilla</a></dt>
+ <dd>The <a class="internal" href="/docs/Bugzilla" title="en-US/docs/Bugzilla">Bugzilla</a> database used to track issues for Mozilla projects.</dd>
+ <dt><a class="external" href="https://mxr.mozilla.org/">MXR</a></dt>
+ <dd>Browse and search the Mozilla source code repository on the Web.</dd>
+ <dt><a href="https://dxr.mozilla.org/">DXR</a></dt>
+ <dd>Next generation of searching Mozilla's source code. In active development.</dd>
+ <dt><a class="external" href="https://bonsai.mozilla.org/cvsqueryform.cgi">Bonsai</a></dt>
+ <dd>The <a class="internal" href="/docs/Bonsai" title="en-US/docs/Bonsai">Bonsai</a> tool lets you find out who changed what file in the repository, and when they did it.</dd>
+ <dt><a class="internal" href="/docs/Mercurial" title="en-US/docs/Mercurial">Mercurial</a></dt>
+ <dd>The distributed version-control system used to manage Mozilla's source code.</dd>
+ <dt><a href="https://developer.mozilla.org/docs/Mozilla/Developer_guide/Using_the_VM">Mozilla build VM</a></dt>
+ <dd>A VirtualBox compatible virtual machine configured with all the software needed to build and work on Firefox.</dd>
+ <dt><a class="external" href="https://treeherder.mozilla.org/">Treeherder</a></dt>
+ <dd>Treeherder shows the status of the tree (whether or not it currently builds successfully). Check this before checking in and out, to be sure you're working with a working tree.</dd>
+ <dt><a class="internal" href="/docs/Crash_reporting" title="en-US/docs/Crash reporting">Crash tracking</a></dt>
+ <dd>Information about the <a class="link-https" href="https://crash-reports.mozilla.com/reports">Socorro</a> crash reporting system.</dd>
+ <dt>Performance tracking: <a href="https://datazilla.mozilla.org/">Datazilla</a> and <a href="https://graphs.mozilla.org/">Graphs</a></dt>
+ <dd>See performance information for Mozilla projects.</dd>
+ <dt><a href="/docs/Developer_Guide/Callgraph" title="en-US/docs/Developing Mozilla/Callgraph">Callgraph</a></dt>
+ <dd>A tool to help perform static analysis of the Mozilla code by generating callgraphs automatically.</dd>
+ <dt><a class="external" href="https://www.mozilla.org/community/developer-forums.html">Developer forums</a></dt>
+ <dd>A topic-specific list of discussion forums where you can talk about Mozilla development issues.</dd>
+ <dt><a class="external" href="http://www.codefirefox.com/cheatsheet/">Mozilla Platform Development Cheat Sheet</a></dt>
+ <dd>Brian Bondy's list of frequently referenced information for platform developers.</dd>
+ <dt><a class="external" href="http://www.codefirefox.com/videos/">Firefox development video tutorials</a></dt>
+ <dd>Brian Bondy's video tutorials on Firefox development.</dd>
+</dl>
+</div>
+</div>
+
+<p> </p>
diff --git a/files/ja/mozilla/developer_guide/mozilla_build_faq/index.html b/files/ja/mozilla/developer_guide/mozilla_build_faq/index.html
new file mode 100644
index 0000000000..f14b507b5b
--- /dev/null
+++ b/files/ja/mozilla/developer_guide/mozilla_build_faq/index.html
@@ -0,0 +1,363 @@
+---
+title: Mozilla Build FAQ
+slug: Mozilla/Developer_Guide/Mozilla_Build_FAQ
+tags:
+ - Build documentation
+ - Developing Mozilla
+translation_of: Mozilla/Developer_guide/Mozilla_build_FAQ
+---
+<p>こちらもご参照ください:</p>
+
+<ul>
+ <li><a href="/ja/Debugging_Mozilla_on_Windows_FAQ" title="ja/Debugging_Mozilla_on_Windows_FAQ">Debugging Mozilla on Windows FAQ</a>: Windows 上での Mozilla のデバッグ方法の Tips</li>
+</ul>
+
+<p> </p>
+
+<h3 id=".E5.85.A8.E4.BD.93.E7.9A.84.E3.81.AA.E8.B3.AA.E5.95.8F" name=".E5.85.A8.E4.BD.93.E7.9A.84.E3.81.AA.E8.B3.AA.E5.95.8F">全体的な質問</h3>
+
+<dl>
+ <dt id="platform">Mozilla ビルドプラットフォームはどのシステムでサポートされていますか?</dt>
+ <dd>Mozilla ビルド "サポート" には複数のレベルまたは段階があります。
+ <p>第 1 段階のプラットフォームは開発のプライマリーフォーカスであるプラットフォームが該当します。これらのプラットフォーム上での主要な問題はショーストッパーによって重んじられます。これらはまた <a class="external" href="http://tinderbox.mozilla.org/showbuilds.cgi?tree=SeaMonkey">SeaMonkey tinderbox ページ</a>に現れるプラットフォームです。</p>
+
+ <ul>
+ <li>linux/x86 (gcc)</li>
+ <li>win32/x86 (msvc)</li>
+ <li>OS X (gcc)</li>
+ </ul>
+
+ <p>第 2 段階のプラットフォームは積極的にメンテナンスしようとしている開発者と貢献者の小さく変化しているサブセットのプラットフォームです。しかし全体の開発はこれらのプラットフォーム上での問題のために停止しません。これらのプラットフォームは大抵、<a class="external" href="http://tinderbox.mozilla.org/SeaMonkey-Ports/">SeaMonkey-Ports tinderbox ページ</a>に Ports として参照されます。 第 2 段階のプラットフォームは:</p>
+
+ <ul>
+ <li>aix 4.3 (aCC)</li>
+ <li>beos 5.0.3 (gcc)</li>
+ <li>bsdi 4.x (gcc)</li>
+ <li>hpux 10.x,11.x (HP cc)</li>
+ <li>irix 6.x/gcc (gcc/MIPSpro)</li>
+ <li>linux/ppc (gcc)</li>
+ <li>os/2 (gcc)</li>
+ <li>osf1 5.x (Compaq cc)</li>
+ <li>solaris (sparc &amp; x86) 2.6+ (gcc/Forte)</li>
+ </ul>
+
+ <p>第 3 段階のプラットフォームは全体的にプロジェクトの主要な開発者が活動的でないプラットフォームですが修正がサードパーティによってもたらされています。 第 3 段階のプラットフォームは:</p>
+
+ <ul>
+ <li>freebsd (gcc)</li>
+ <li>linux/alpha (gcc)</li>
+ <li>netbsd (gcc)</li>
+ <li>openvms (?)</li>
+ <li>ps2linux (gcc)</li>
+ <li>qnx 6 (gcc)</li>
+ <li>win32/x86 (gcc)</li>
+ </ul>
+
+ <p>その他の全てのプラットフォームは主要な mozilla 開発者によって "サポート外" です。"サポート外" は本当に "重要でなく活動的でないもの" を意味します。</p>
+
+ <p>ほとんどの Mozilla 開発者は第 1 段階以外のプラットフォームにアクセスしません。なので第 1 段階以外のプラットフォームに対するどんなバグも問題の原因と適切な解決策を定めバグのオーナーを助ける情報で満ちているべきです。あなたがパッチもしくは開発者のパッチがあなたのプラットフォームで動作することを立証するものを準備しているなら、それはあなたのバグを修正しツリーにチェックするのを大変、助けるでしょう。</p>
+
+ <p> </p>
+ </dd>
+ <dt>Mozilla はどんなタイプのビルドシステムを使いますか?</dt>
+ <dd>Mozilla は全てのプラットフォーム上で動作が弱弱しい GNU 設定レイヤーに加えて再帰的なレガシー Netscape makefile ビルドシステムを使います。ほとんどの設定ベースのプロジェクトのように、設定スクリプトを生成するために GNU autoconf を使います。GNU make はビルド過程を進めるのに使われます。
+ <p> </p>
+ </dd>
+ <dt>なぜ GNU make を使うのですか?</dt>
+ <dd>GNU make は多くのシステムへ移植されています。これは Mozilla をこれらのシステムに少し簡単に移植します。10 の異なったプラットフォームで特有の make プログラムによってサポートされている make 機能の唯一のサブセットを使うことはビルドシステムに不必要なコンパイルを引き起こすでしょう。
+ <p> </p>
+ </dd>
+ <dt>make のその他のバージョンで動作しますか?</dt>
+ <dd>いいえ。Mozilla makefile は GNU make でのみ動作する特有の機能を使っています。
+ <p> </p>
+ </dd>
+ <dt>なぜあなた方は automake を使わないのですか?</dt>
+ <dd>Netscape レガシーシステムの一部は GNU make の使用を必要としています -それらを使うのを必要としている Makefile の少数のファイルから共通のルールセットを含む機能を含んでいます。この中心のルールシステムで、主要な automake のセリングポイントの 1 つは重要度が低いものでした。また当時、Mozilla のビルドライブラリの方式はライブツールと調和していませんでした。
+ <p> </p>
+ </dd>
+ <dt>nmake と CodeWarrior ビルドシステムで何が起こりますか?</dt>
+ <dd>それらは現在のツリーで長く存在しません。nmake ビルドサポートは Mozilla 1.2a リリースサイクルの間に中止されました。mac cfm ビルドシステムは Mozilla 1.3 リリース後、すぐの OS9 サポートと共に中止されました。
+ <p> </p>
+ </dd>
+ <dt>なぜ ant、tmake、scons または <em>あなたの好みのビルドシステムをここに挿入してください</em>?</dt>
+ <dd>主に、Mozilla をこれらのシステムで実行する人がいなかったからです。Mozilla が最初にオープンソースにされた時、それはただレガシー Netscape システムを含むだけでした。autoconf レイヤーはunix ビルドで標準ビルドシステムになる前、 6 ヶ月間でブランチへの追加とメンテナンスが並行して行われました。
+ <p> </p>
+ </dd>
+ <dt>私の気に入ったビルドシステムで Mozilla を実行する場合、 Mozilla はそれを使って起動しますか?私はそれを使うかどうかで私の時間を無駄にしたくない。</dt>
+ <dd>Mozilla に書かれたどんなコードもデフォルトツリーに受け入れられるという保証はありません。実行されたどんなビルドシステムもそれが現在のビルドシステムよりも全体的に良いことを示さなければなりません。速さ、適応性、ポータビリティそして現在のビルドシステムで 3 年以上の経験がある開発者の大きなグループに簡単に新しいシステムに移ってもらう能力が切り替えを決める中で主要な要因になります。あなたが本気でかつ、多くの仕事をするのをいとわないのであれば、あなたの提案の詳細を話し合うために <a href="/User:Benjamin_Smedberg">en:User:Benjamin Smedberg</a> にコンタクトを取ってください。
+ <p> </p>
+ </dd>
+ <dt>なぜ Mozilla は autoconf 2.5x をサポートしないのですか?</dt>
+ <dd>単に、autoconf 2.5x は、アップグレードを努力してみる価値があるようにする何も提供しません。 Autoconf 2.5x は autoconf 2.13 との共存へ戻れず、更に制限は autoconf の新しいバージョンが不確かな増加のために Mozilla ビルドシステムの重大な書き直しを要求することによって引き起こされます。
+ <p>サブ設定のための引数を通すための能力のように 2.13 機能のいくつかは 2.5x で利用できません。人々は好意的な返答無しに autoconf メーリングリストでこれらの機能について繰り返し尋ねてきました。Mozilla (NSPR &amp; LDAP) のサブプロジェクトの設定の書き直しは受け入れることのできない取引です。サブプロジェクトはまた独立したプロジェクトでビルドシステムの相反が馬鹿げているせいで全体のコードベースが分岐しています。</p>
+
+ <p> </p>
+ </dd>
+ <dt>なぜ NSS は autoconf を使わないのですか?</dt>
+ <dd>NSS プロジェクトはまた Mozilla プロジェクトの外で使われており、NSS プロジェクトのメンバーは autoconf へ移行することはコスト価値があることとは感じませんでした。詳細は{{ Bug(52990) }}を見てください。
+ <p> </p>
+ </dd>
+ <dt>1 つのソースツリーから多様な Mozilla ベースのプロジェクトをビルドしても良いですか?</dt>
+ <dd>はい!それぞれのプロジェクトでそれ自身のオブジェクトディレクトリでビルドされなければなりません。
+ <p> </p>
+ </dd>
+ <dt>オブジェクトディレクトリとは何ですか?</dt>
+ <dd>オブジェクトディレクトリビルドはソースのある場所と異なった場所に出力されたファイルを作るプロセスを適用します。これは、ほとんどの設定ベースのプロジェクトの標準的な機能です。それはネットワークファイルシステムを使うなら多様なプラットフォームを含む多様な設定のために 1 つのソースツリーからビルドするのを許します。あなたのツリー中のファイルがビルドプロセスによって変更されなかったことを知るには、ソースツリーを汚すのを避けます。
+ <p>もし手動で設定を実行したなら、ディスク上の適当な場所に空のディレクトリを作りそのディレクトリに移ってそこから /path/to/mozilla/configure を実行するという標準的な方法を使うことができます。</p>
+
+ <pre class="eval">mkdir obj-debug
+cd obj-debug
+../mozilla/configure
+</pre>
+
+ <p>ビルドするのに client.mk を使ったなら、mozconfig ファイルを以下のように追加できます:</p>
+
+ <pre class="eval">mk_add_options MOZ_OBJDIR=/path/to/objdir
+</pre>
+
+ <p> </p>
+ </dd>
+ <dt>Mozilla をクロスコンパイルして良いですか?</dt>
+ <dd>はい、詳細については <a class="external" href="http://www.mozilla.org/build/cross-compiling.html">Mozilla クロスコンパイル</a>ドキュメントを見てください。いいえ、<a class="external" href="http://www.vmlinux.org/joachim/mirror/www.objsw.com/CrossGCC/FAQ-4.html#ss4.9">カナダ英語クロスコンパイル</a>はサポートされていません。
+ <p> </p>
+ </dd>
+ <dt>How can I test out a build of just certain files, instead of the whole tree, while I'm changing code? 私がコードを変更している間に全体のツリーの代わりに特定のファイルだけをテストするにはどうすれば良いですか?</dt>
+ <dd>あなたのオブジェクトディレクトリを変更してください、ビルドしたい特定のディレクトリ(オブジェクトディレクトリのディレクトリ構造はソースディレクトリの構造と合致します)に入れ替えてください、そして "make" (必要ならばまたは "gmake")とタイプしてください。これはただ "Makefile" (ソースツリーの同等のディレクトリは "Makefile.in" に含まれるでしょう)が含まれているディレクトリを見つけた時にのみ動作します。それよりもよりはっきりと得たいならば、"make &lt;ファイル名&gt;.obj" をしてみることが出来ます。<a href="/ja/Incremental_Build" title="ja/Incremental_Build">Incremental Build</a> をご覧ください。
+ <p> </p>
+ </dd>
+ <dt>Mozilla への並列 (make -j) ビルドは動作しますか?</dt>
+ <dd>はい。最適な処理についての入り口は <a class="external" href="http://www.gnu.org/software/make/manual/html_node/Parallel.html">GNU Make 並列実行</a>マニュアルを見てください。
+ <p>並列ビルド(特に可能な限り並列で多くのタスクを実行するために -jN の代わりに -j を使っている時)を使っている時に不明瞭なビルドエラーが出る場合、N の減少による並列タスク数を減らしてみてください(または無制限の並列処理を使った場合、小さい数字 N を -j に追加してください)。</p>
+
+ <p>-j4 と -j8 を並列ビルドで用いるとよく動作するようです。</p>
+
+ <p> </p>
+ </dd>
+ <dt>ビルドシステムに私の mozconfig ファイルへの変更を集めるよう強いるにはどうすれば良いですか?</dt>
+ <dd>ツリー中の設定スクリプトに接してください。mozconfig ファイルは MOZCONFIG 環境変数によってどこにでも存在でき、ファイル上に明白な依存物はありません
+ <p> </p>
+ </dd>
+ <dt>error: file '../../toolkit/locales/en-US/chrome/necko/contents.rdf' doesn't exist at ../../config/make-jars.pl line 418, &lt;STDIN&gt; line 9.</dt>
+ <dd>あなたは <a href="/ja/Configuring_Build_Options" title="ja/Configuring_Build_Options">Configuring Build Options</a> 上の説明に従わずに Firefox をビルドしようとしています。特に、あなたの mozcconfig ファイルは Firefox をデフォルトの mozconfig ファイルで調達しなければなりません:
+ <pre class="eval">. $topsrcdir/browser/config/mozconfig
+# ここに好みの追加オプションを追加してください
+</pre>
+
+ <p> </p>
+ </dd>
+ <dt>Initial cvs checkout fails with the message: <code>cvs {{ mediawiki.external('checkout aborted') }}: *PANIC* administration files missing</code></dt>
+ <dd>"CVS" という名前のディレクトリの元に cvs ツリーを作ることはできません。これは cvs の機能/バグです。cvs は特定の管理ファイルを CVS ディレクトリで見つけ、それらが行方不明である場合には不満を言うでしょう。
+ <p> </p>
+ </dd>
+ <dt>Error: ../coreconf/rules.mk:406: target `c' doesn't match the target pattern</dt>
+ <dd>make 3.80 が必要で 3.81 のようなその他のバージョンは必要ありません。
+ <ul>
+ <li>make 3.80 は長く Cygwin セットアップインストーラで利用されていません。なのであなた自身でそれを見つけなければなりません。make-3.80-1.tar.bz2 と google でき、それはまた<a class="external" href="http://cygwin.paracoda.com/release/make/make-3.80-1.tar.bz2">ここ</a>から入手できます。</li>
+ </ul>
+
+ <p> </p>
+ </dd>
+</dl>
+
+<h3 id="Mac_.E7.89.B9.E6.9C.89.E3.81.AE.E8.B3.AA.E5.95.8F" name="Mac_.E7.89.B9.E6.9C.89.E3.81.AE.E8.B3.AA.E5.95.8F">Mac 特有の質問</h3>
+
+<p> </p>
+
+<dl>
+ <dt>Mozilla アプリケーションを Universal Binary としてビルドしても良いですか?</dt>
+ <dd>はい。説明については <a href="/ja/Mac_OS_X_Universal_Binaries" title="ja/Mac_OS_X_Universal_Binaries">Mac OS X Universal Binaries</a> を見てください。
+ <p> </p>
+ </dd>
+ <dt>編集を助けるためにどのように distcc 上で起動すれば良いですか?</dt>
+ <dd>未定
+ <p> </p>
+ </dd>
+ <dt>UFS 上で Mozilla はビルドされていますか?</dt>
+ <dd>はい、{{ Bug(157036) }} から修正されています。
+ <p> </p>
+ </dd>
+ <dt>Mozilla を UFS で実行されていますか?</dt>
+ <dd>はい。
+ <p> </p>
+ </dd>
+ <dt>Mach-0 ビルドをコンパイルするために CodeWarrior を使っても良いですか?</dt>
+ <dd>いいえ、CodeWarrior は死んでいます。詳細については {{ Bug(119589) }} を見てください。
+ <p> </p>
+ </dd>
+ <dt>例えばレイアウトがリビルドされた後、どのように FirefoxDebug.app にその変更をさせれば良いでしょうか?</dt>
+ <dd>make -C browser/app</dd>
+</dl>
+
+<p>よく起こる Mac ビルドエラーと追加のトラブルシューティング tips については <a href="/ja/Developer_Guide/Build_Instructions/Mac_OS_X_Build_Prerequisites" title="ja/Developer_Guide/Build_Instructions/Mac_OS_X_Build_Prerequisites">Mac OS X Build Prerequisites</a> の <a href="/ja/Developer_Guide/Build_Instructions/Mac_OS_X_Build_Prerequisites#Troubleshooting" title="ja/Developer_Guide/Build_Instructions/Mac_OS_X_Build_Prerequisites#Troubleshooting">トラブルシューティング</a>を見てください。</p>
+
+<h3 id="Win32_.E7.89.B9.E6.9C.89.E3.81.AE.E8.B3.AA.E5.95.8F" name="Win32_.E7.89.B9.E6.9C.89.E3.81.AE.E8.B3.AA.E5.95.8F">Win32 特有の質問</h3>
+
+<p> </p>
+
+<p> </p>
+
+<dl>
+ <dt>Mozilla をビルドするための Microsoft Visual Studio プロジェクトファイルはありますか?</dt>
+ <dd>いいえ。cygwin と GNU make を使わなければなりません。
+ <p> </p>
+ </dd>
+ <dt>cmd.exe からビルドコマンドを実行しても良いでしょうか?</dt>
+ <dd>はい。Make はコマンドを実行するために cygwin /bin/sh サブシェルを呼びます。なので何のシェルが make を呼ぶのに使われるかは重要ではありません。
+ <p> </p>
+ </dd>
+ <dt>cygwin の autoconf パッケージのどのバージョンが使うのに必要でしょうか?</dt>
+ <dd>autoconf 2.1x と 2.5x が相反するせいで、cygwin 維持管理者たちは autoconf 設定スクリプトが必要としているバージョンを決定しその autoconf のバージョンを呼ぶラッパースクリプトを書きました。autoconf(-wrapper) &amp; autoconf-stable パッケージが必要です。詳細については <a class="external" href="http://cygwin.com/ml/cygwin-announce/2001/msg00177.html" rel="freelink">http://cygwin.com/ml/cygwin-announce.../msg00177.html</a> を見てください。
+ <p> </p>
+ </dd>
+ <dt>Microsoft ツール(CL, LINK, RC)が <em>file not found</em> エラーを示す</dt>
+ <dd>INCLUDE と LIB 環境変数は Microsoft Visual C++ ツールによって使われます。それらは大抵 vcvars32.bat でセットアップされます。あなたのビルドしたモジュールに依存しているなら、MFC と ATL が必要かもしれませんし必要ないかもしれません。下のは Visual C++ が "C:\msvs": にインストールされている場合に動作するパスです。
+ <pre class="eval">set INCLUDE=C:\msvs\VC\Include;C:\msvs\VC\ATLMFC\Include
+set LIB=C:\msvs\VC\Lib;C:\msvs\VC98\ATLMFC\Lib
+</pre>
+
+ <p> </p>
+ </dd>
+ <dt>cvs update: authorization failed: server XXXX rejected access -- used empty password; try "cvs login" with a real password</dt>
+ <dd>wincvs と cygwin cvs が混じっています。どちらか一方だけを使ってください。
+ <p> </p>
+ </dd>
+ <dt>cvs {{ mediawiki.external('checkout aborted') }}: cannot rename file CVS/Entries.Backup to CVS/Entries: Permission denied</dt>
+ <dd>cygwin 1.3.13 で、ntsec はデフォルトで有効です。ntsec はもっと Windows NT のセキュリティ機能をベースにしたパーミッションのような UNIX を得るための cygwin の試みです。そのエラーメッセージは cygwin の /etc/passwd ファイルにリストされた unix パーミッションと Windows NT によって使われるそれらとの間にマッピング不一致があることを指し示しています。回避方法として、あなたの CYGWIN 環境変数に "nontsec" を追加することができます。適切な修正はマッピング問題を修正することです。
+ <p> </p>
+ </dd>
+ <dt>Make が a command not found error, or about not being able to find a .dtd file と吐く</dt>
+ <dd>多分、ソースアーカイブを解凍するのに WinZIP を使っています。それを使わないでください。デフォルトで WinZIP は tar.gz アーカイブから 0 長のファイルを解凍しません。他のユーティリティを使うか、または WinZIP が展開しなかったファイルをチェックアウトするのに pull スクリプトを使ってください。
+ <p> </p>
+ </dd>
+ <dt>nsinstall または他のネイティブ Win32 プログラムが a file not being found とエラーを出す</dt>
+ <dd>Running the mount command should return something similar to: あなたの cygwin マウントテーブルをチェックしてください。マウントコマンドを実行することは以下によく似たことを返すはずです:
+ <pre class="eval">c: on /cygdrive/c type user (binmode,noumount)
+e: on /cygdrive/e type user (binmode,noumount)
+c:\cygwin on / type system (binmode)
+c:\cygwin\bin on /usr/bin type system (binmode)
+c:\cygwin\lib on /usr/lib type system (binmode)
+</pre>
+
+ <p>ビルドシステムは動かしているパーティションが prefix を動かすと /cygdrive を使ってマウントされることを期待しています。c: または e: が prefix を動かす時なければ、その後、これらのドライブを使って Mozilla を使うことはできません。コマンドを使うことによって期待されたスポットで手動でマウントする必要があります:</p>
+
+ <pre class="eval">mount -s "e:\" /cygdrive/e
+</pre>
+
+ <p>あなたのソースツリーが $HOME 以下ならば、マウントモードは binmode (UNIX スタイルラインエンジン)であるべきです。そうでなければビルドは多くのファイルを腐敗させるのに十分な失敗をするでしょう。ソースツリーが $HOME の外にあるなら、マウントモードはあなたのソースエディタが Unix スタイルラインエンジンを認める以上問題ではありません。</p>
+
+ <p> </p>
+ </dd>
+ <dt>アクセス違反で xpidl.exe がクラッシュする</dt>
+ <dd>これはコンパイラと glib と libIDL ライブラリまたは glib か libIDL ライブラリの間で食い違っているせいでいつも発生します。
+ <p>あなたが Visual Studio .NET でビルドしているのであれば、その時に glib と libIDL DLL の VC7 ビルトバージョンに対してリンクを張らなければなりません。Visual Studio .NET 2003 のために VC 7.1 バージョンを使ってください。Visual Studio 2005 に対しては VC8 バージョンを使ってください。</p>
+
+ <p>あなたのコンパイラのため特有のこれらのライブラリのバージョンを含んでいるディレクトリはどんなこれらのライブラリのバージョンの前に PATH になければなりません。.dll と .lib ファイルは実行できるようでなければ(chmod 755)cygwin はそれらをロードしないでしょう。</p>
+
+ <p>VC7 とそれ以降のビルドについてのより多くの Tips については <a href="/ja/Windows_Build_Prerequisites/Free_Microsoft_Compilers" title="ja/Windows_Build_Prerequisites/Free_Microsoft_Compilers">Windows ビルド要件</a>を見てください。</p>
+
+ <p>またたくさんの代わりの静的ライブラリが {{ Bug(242870) }} でコンパイラの特定のライブラリの代わりに使えるかもしれません。</p>
+
+ <p>VC6 を使っているのであれば、その時に VC7 ライブラリをビルドタイムまたはランタイムで使って <em>いない</em> ことを確かめなければなりません。</p>
+
+ <p> </p>
+ </dd>
+ <dt>configure: error: the midl major version, , does not match the compiler suite version, &lt;Visual C++ バージョン番号&gt; -- same for linker</dt>
+ <dd>シンボリックリンクのための cygwin ツール "link.exe" がオブジェクトリンカーを Microsoft コンパイラスイーツと間違えているか、midl がそれぞれ見つけられていない。Microsoft ツールが PATH で cygwin よりも前にあるか確かめるか(<a href="/ja/Developer_Guide/Build_Instructions/Windows_Build_Prerequisites#Configure_the_Environment" title="ja/Developer_Guide/Build_Instructions/Windows_Build_Prerequisites#Configure_the_Environment">説明</a>を見てください)、/bin/link.exe をリネームするか削除してください。シェルが起動した時に cygwin が PATH を修正するかもしれないことに注意してください、そして cygwin シェルの<code>export</code> も見てください。
+ <p> </p>
+ </dd>
+ <dt>configure: error: installation or configuration problem: C compiler cannot create executables.</dt>
+ <dd>あなたの PATH 変数が全ての必要なディレクトリを含んでいるか確かめてみてください。MS Visual Studio を使っているならば、vcvar32.bat を実行してください(PATH, LIB, そして INCLUDE 変数を設定します)。ビルド環境が変化しているならば、config.cache ファイル(mozilla またはオブジェクトディレクトリで)を削除しビルドし直す必要があります。
+ <p> </p>
+ </dd>
+ <dt>build error: ../coreconf/rules.mk:365: target `c' doesn't match the target pattern</dt>
+ <dd>cygwin インストーラから make 3.81 が使用されています。make 3.80 を使わなければなりません。<a href="/ja/Developer_Guide/Build_Instructions/Windows_Build_Prerequisites#make" title="ja/Developer_Guide/Build_Instructions/Windows_Build_Prerequisites#make">説明</a>を読んでください。
+ <p> </p>
+ </dd>
+ <dt>fatal error LNK1112: module machine type 'IA64' conflicts with target machine type 'X86'</dt>
+ <dd>PATH, LIB, そして INCLUDE 変数でディレクトリ命令を変えてみてください。他の "win64" またはより終端に近い "IA64" (または "AMD64")を含むディレクトリに移動してください。
+ <p> </p>
+ </dd>
+ <dt>LINK : fatal error LNK1104: cannot open file 'atlthunk.lib'</dt>
+ <dd><a class="external" href="http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=64509">この Microsoft フォーラムスレッド</a>によると、フリープラットフォームソフトウェア開発キット (PSDK) 内の Active Template Library (ATL) は Visual Studio 内のと異なるバージョンです。Visual Studio ATL は 32 ビットも 64 ビットも両方サポートして atlthunk.lib を要求しないのに PSDK 内の ATL は 32 ビットコードをサポートしておらず 64 ビットのみをサポートしています。見たところ、Visual C++ ツールキットと Visual Studio Express に含まれている atlthunk.lib ファイルは利用できず <a href="/ja/Windows_Build_Prerequisites/Free_Microsoft_Compilers" title="ja/Windows_Build_Prerequisites/Free_Microsoft_Compilers">自由に利用できるツール</a> からビルドできません。ATL のそれらのバージョンを使うには Visual Studio を完全なバージョンにアップグレードするか、次の方法で atlbase.h (PSDK ディレクトリ下の \include\atl)のいくつかのコードを変更することによってこの問題を回避するかどちらか一方をすることが出来ます。
+ <pre class="eval">--- atlbase.h.old 2006-06-08 08:20:26.671875000 -0400
++++ atlbase.h 2006-06-08 08:13:26.578125000 -0400
+@@ -283,7 +283,7 @@
+ }
+ };
+ #pragma pack(pop)
+-
++/*
+ PVOID __stdcall __AllocStdCallThunk(VOID);
+ VOID __stdcall __FreeStdCallThunk(PVOID);
+
+@@ -291,6 +291,11 @@
+ #define FreeStdCallThunk(p) __FreeStdCallThunk(p)
+
+ #pragma comment(lib, "atlthunk.lib")
++*/
++
++// workaround for not having atlthunk.lib in PSDK or VC++ 2005 Express Edition
++#define AllocStdCallThunk() HeapAlloc(GetProcessHeap(),0,sizeof(_stdcallthunk))
++#define FreeStdCallThunk(p) HeapFree(GetProcessHeap(), 0, p)
+
+ #elif defined (_M_AMD64)
+ #pragma pack(push,2)
+</pre>
+
+ <p>私はまたコンパイラにこの変更を反映するためにオブジェクトディレクトリを削除して一からコンパイルする必要がありました。</p>
+
+ <p> </p>
+ </dd>
+ <dt>cygwin と VS 6.0 で実行ファイルをコンパイルまたはビルドするときの結果 FIND: Parameter format not correct と出る</dt>
+ <dd>System32 "find" と cygwin の /usr/bin/find との間で混乱が生じています。望ましい find は cygwin の方のです。これは Path の整理によって生じます。2,3 の解決法が利用できます:
+ <ul>
+ <li>一時的に system32/find.exe をリネームする。</li>
+ <li>system32 path が記入される前に cygwin が記入されていることを確認してください。</li>
+ </ul>
+
+ <p> </p>
+ </dd>
+ <dt>私はインストーラによって問題なく Firefox をパッケージ化した: <code>make -C ${OBJ_DIR}/browser/installer installer</code> インストーラは欠けている mozz.dll を要求してインストールが失敗する。</dt>
+ <dd>Thunderbird と Firefox は両方とも --enable-static--disable-shared 設定フラグでコンパイルされるべきです。
+ <p> </p>
+ </dd>
+ <dt>shlibsign.exe - Entry Point Not Found; The procedure entry point CERT_GetFirstEmailAddress could not be located in the dynamic link library nss3.dll.</dt>
+ <dd>あなたの Path でマシン上の nss3.dll の複数からなるインスタンスをしているのかもしれません。このファイルの全てのインスタンスのためにマシン上で検索を実行してください。 ビルド中は別にしてどんなインスタンスも Firefox ビルドツリーの外に移動してください。そしてビルドされる時にそれらを元の名前にリネームしてください。 &lt;/dd&gt;</dd>
+</dl>
+
+<h3 id="Mingw32_.E7.89.B9.E6.9C.89.E3.81.AE.E8.B3.AA.E5.95.8F" name="Mingw32_.E7.89.B9.E6.9C.89.E3.81.AE.E8.B3.AA.E5.95.8F">Mingw32 特有の質問</h3>
+
+<ul>
+ <li>w32api のために設定またはビルドが失敗するなら、あなたの INCLUDE 環境変数の終わりに mingw32 の /include ディレクトリを追加してください。Mingw32 ライブリーまたはバイナリは必要でなくヘッダーのみが必要です。</li>
+</ul>
+
+<h3 id="Unix_.E7.89.B9.E6.9C.89.E3.81.AE.E8.B3.AA.E5.95.8F" name="Unix_.E7.89.B9.E6.9C.89.E3.81.AE.E8.B3.AA.E5.95.8F">Unix 特有の質問</h3>
+
+<p> </p>
+
+<dl>
+ <dt>Galeon は libgtksuperwin.so が必要としますが私の Mozilla gtk2 ビルドにそのファイルはありません。それはどこにありますか?</dt>
+ <dd>Mozilla gtk1 ビルドのみが libgtksuperwin.so をビルドします。あなたが gtk2 ビルドで galeon を使いたいなら、galeon2 を使う必要があるでしょう。
+ <p> </p>
+ </dd>
+ <dt>なぜ私が libIDL 0.8.x をインストールした時に configure は libIDL &gt;= 0.6.3 が必要だと言うのでしょうか?</dt>
+ <dd>libIDL 0.8.x は gtk2 に対してコンパイルしたときのみに使うことが出来ます。 Mozilla はデフォルトで gtk1 に対してコンパイルします。libIDL 0.8.x と gtk2 を使うには、configure コマンドラインまたは mozconfig ファイル中に --enable-default-toolkit=gtk2 を指定しなければなりません。 注意:これは mozilla 1.8 で修正されている古い問題です。</dd>
+ <dt>Solaris 10 x86 (SeaMonkey) でどのようにビルドすれば良いでしょうか?</dt>
+ <dd>私は動作環境を得るために以下のことをしなければなりませんでした。</dd>
+ <dd>1. forte をインストールしてください(Sun からのフリー)</dd>
+ <dd>2. gmake をインストールしてください (blastwave から)</dd>
+ <dd>3. mv /usr/ucb/cc /usr/ucb/cc.hold</dd>
+ <dd>4. CFLAGS="-xlibmil"; export CFLAGS</dd>
+ <dd>5. CXXFLAGS="-xlibmil -xlibmopt -features=tmplife -norunpath"; export CXXFLAGS</dd>
+ <dd>6. LDFLAGS='-R$ORIGIN -R/usr/sfw/lib -R/opt/sfw/lib -R/usr/local/lib -R/opt/csw/lib'; export LDFLAGS</dd>
+ <dd>7. PATH=$PATH:/opt/SUNWspro/bin:/opt/csw/bin:/opt/csw/sbin:/usr/ucb/bin:/usr/ccs/bin; export PATH</dd>
+ <dd>8. LD_LIBRARY_PATH=/opt/SUNWspro/lib:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH</dd>
+ <dd>9. mozconfig ファイルを創って通常のようにビルドしてください</dd>
+ <dd>10. パッケージ(tar と gzip)のビルドが失敗したので、手動で{{ 原語併記("ディスト", "dist") }}ディレクトリにある結果ファイルを tar しました。
+ <p> </p>
+ </dd>
+ <dt>libxpcom_core.so: cannot restore segment prot after reloc: Permission denied&lt;/dt&gt;</dt>
+ <dd>あなたは多分、FedoraCore 5 を使っているか、または SELinux が作動している他の Linux ディストリビューションを使っているでしょう。それを直すには dist/bin ディレクトリで 'chcon -t chcon -t texrel_shlib_t lib*' コマンドを使ってください。 &lt;/dd&gt;</dd>
+</dl>
+
+<p>{{ languages( { "en": "en/Mozilla_Build_FAQ", "es": "es/Preguntas_frecuentes_sobre_la_compilaci\u00f3n_de_Mozilla", "fr": "fr/FAQ_sur_la_compilation_de_Mozilla" } ) }}</p>
diff --git a/files/ja/mozilla/developer_guide/source_code/cvs/index.html b/files/ja/mozilla/developer_guide/source_code/cvs/index.html
new file mode 100644
index 0000000000..8ab1fdc8af
--- /dev/null
+++ b/files/ja/mozilla/developer_guide/source_code/cvs/index.html
@@ -0,0 +1,99 @@
+---
+title: Getting Mozilla Source Code Using CVS
+slug: Mozilla/Developer_Guide/Source_Code/CVS
+tags:
+ - Build documentation
+ - Developing Mozilla
+---
+<div class="note">注記: このドキュメントは Gecko 1.9.0 や Firefox 3 より古いバージョンと、NSS および NSPR のすべてのバージョンのソースコードを取得する方法について書かれています。Gecko 1.9.1/Firefox 3.5 以降の開発は <a class="internal" href="/ja/Developer_Guide/Source_Code/Mercurial" title="ja/Developer Guide/Source Code/Mercurial">Mercurial</a> ソースコードコントロールシステムを使用します。</div>
+<p>精力的に開発に関わっている人は、CVS を使って最新のソースをチェックアウトできます。この方法は、パッチやバグ修正を提供したい場合におすすめの方法です。というのも、文字通り最新の変更を入手でき、それらとあなた独自の変更をマージできるからです。</p>
+<p>リリースのために製品をコンパイルしたい場合は、tarball で <a href="/ja/Developer_Guide/Source_Code/Downloading_Source_Archives" title="ja/Developer_Guide/Source_Code/Downloading_Source_Archives">Mozilla ソースコードをダウンロードする</a> 方が良いでしょう。</p>
+<h3 id="Getting Started" name="Getting Started">はじめに</h3>
+<p>CVS とは「Concurrent Versioning System」を意味します。CVS 全般について知りたい場合は、 <a class="external" href="http://ximbiot.com/cvs/manual/">ximbiot.com</a> あるいは <a class="external" href="http://ximbiot.com/cvs/cvshome/docs/blandy.html">チュートリアル</a> を参照してください。</p>
+<p>誰でも CVS を経由してソースをチェックアウト (「pull (引っ張る)」 とか 「download (ダウンロードする)」 とも言われます) できますが、チェックイン (変更すること、「commit (コミット)」 とも言われます) は許可のある人しかできません。チェックインができる人は、<a class="external" href="http://www.mozilla.org/owners.html">モジュールオーナー</a> やその代理人に限られます。「<a class="external" href="http://www.mozilla.org/hacking/">Mozilla をハックする<span class="comment">hacking mozilla</span></a>」 を読んで、チェックインの権限を得るにはどうしたらよいのか学んでください。<a href="/ja/Using_SSH_to_connect_to_CVS" title="ja/Using_SSH_to_connect_to_CVS">SSH をつかって CVS に接続する</a>も参考になるかもしれません。</p>
+<h4 id="Requirements" name="Requirements">必要条件</h4>
+<p>ソースをチェックアウトするには、<a class="external" href="http://www.nongnu.org/cvs/">CVS</a> 1.11 以降を実行していなければなりません。1.12.13 は CVS サーバと相性が悪く、ハングアップします。1.12.9 は動作することがわかっています。さらに、Mozilla をチェックアウトしてビルドするには <a class="external" href="http://www.gnu.org/software/make/">GNU make</a> を使用しなければなりません。それ以外の「make」プログラムでは動きません。Windows、Mac および通常の GNU システム(GNU/Linux など)では、「make」と入力して GNU make を実行してください。非 GNU UNIX の多く(例えば Solaris など)では「gmake」を使用してください。</p>
+<h3 id="CVS Client Settings" name="CVS Client Settings">CVS クライアントの設定</h3>
+<p>Mozilla の CVS に匿名でアクセスするための 「cvsroot」(リポジトリを識別する文字列)は次のとおりです:</p>
+<pre class="eval">:pserver:<a class=" link-mailto" href="mailto:anonymous@cvs-mirror.mozilla.org" rel="freelink">anonymous@cvs-mirror.mozilla.org</a>:/cvsroot
+</pre>
+<p>グラフィカル CVS インタフェースを使用する場合は次のサーバデータを使用してください:</p>
+<ul> <li><strong>ホスト</strong>: "cvs-mirror.mozilla.org"</li> <li><strong>リポジトリパス</strong>: "/cvsroot"</li> <li><strong>ユーザ</strong>: "anonymous"</li> <li><strong>パスワード</strong>: "anonymous"</li> <li><strong>接続方法</strong>: pserver</li> <li><strong>ポート</strong>: デフォルト (2401)</li>
+</ul>
+<h3 id="Selecting_a_Project_to_Pull" name="Selecting_a_Project_to_Pull">引っ張ってくるプロジェクトを選択する</h3>
+<p>同じ基礎のソースコードから複数の異なるアプリケーションがビルドされているため、<code>MOZ_CO_PROJECT</code> 変数を使ったコマンドライン上で、どのアプリケーションをチェックアウトするかを選択しなければなりません。この情報は実際のソースコードがチェックアウトされる際に使用されます(チェックアウトしたいブランチに従って、下にある適当な <a href="#.E3.83.81.E3.82.A7.E3.83.83.E3.82.AF.E3.82.A2.E3.82.A6.E3.83.88">チェックアウト</a> <a href="#.E3.83.81.E3.82.A7.E3.83.83.E3.82.AF.E3.82.A2.E3.82.A6.E3.83.88_2">セクション</a> をご覧ください)。利用可能なオプションには次のようなものがあります:</p>
+<dl> <dt> browser </dt> <dd> スタンドアローンな「Firefox」ブラウザです。</dd> <dt> mail </dt> <dd> スタンドアローンな「Thunderbird」メール・ニュースクライアントです。</dd> <dt> suite </dt> <dd> 古くからある、ブラウザ、メール・ニュース、コンポーザ、その他のアプリケーションからなる「Mozilla」 SeaMonkey スイートです。</dd> <dt> minimo </dt> <dd> 小型デバイス向けのスタンドアローンなブラウザです。</dd> <dt> composer </dt> <dd> スタンドアローンな HTML コンポーザです。</dd> <dt> calendar </dt> <dd> スタンドアローンな「Sunbird」カレンダーアプリケーションです。</dd> <dt> xulrunner </dt> <dd> 次世代の XUL アプリケーションランチャーです。</dd> <dt> camino </dt> <dd> Macintosh 用の「Camino」ネイティブブラウザです。</dd> <dt> all </dt> <dd> 上記のプロジェクトすべてに対応したソースに加えてユーティリティコードをチェックアウトします。</dd>
+</dl>
+<p>カンマで繋ぐことで複数のプロジェクトを指定できます:<code>MOZ_CO_PROJECT=suite,browser,xulrunner</code></p>
+<p><strong>注意</strong>:独自の <code><a href="/ja/Configuring_Build_Options#.mozconfig_.E8.A8.AD.E5.AE.9A.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.82.92.E4.BD.BF.E3.81.86" title="ja/Configuring_Build_Options#.mozconfig_.E8.A8.AD.E5.AE.9A.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.82.92.E4.BD.BF.E3.81.86">.mozconfig</a></code> ファイルを使用する場合は <code>MOZ_CO_PROJECT</code> をコマンドラインではなくそのファイルで指定することもできます。</p>
+<p>{{ 英語版章題("Checking Out a New Source Tree") }}</p>
+<h3 id=".E6.96.B0.E3.81.97.E3.81.84.E3.82.BD.E3.83.BC.E3.82.B9.E3.83.84.E3.83.AA.E3.83.BC.E3.82.92.E3.83.81.E3.82.A7.E3.83.83.E3.82.AF.E3.82.A2.E3.82.A6.E3.83.88.E3.81.99.E3.82.8B" name=".E6.96.B0.E3.81.97.E3.81.84.E3.82.BD.E3.83.BC.E3.82.B9.E3.83.84.E3.83.AA.E3.83.BC.E3.82.92.E3.83.81.E3.82.A7.E3.83.83.E3.82.AF.E3.82.A2.E3.82.A6.E3.83.88.E3.81.99.E3.82.8B">新しいソースツリーをチェックアウトする</h3>
+<p>{{ 英語版章題("Check Tinderbox") }}</p>
+<h4 id="Tinderbox_.E3.82.92.E7.A2.BA.E8.AA.8D.E3.81.99.E3.82.8B" name="Tinderbox_.E3.82.92.E7.A2.BA.E8.AA.8D.E3.81.99.E3.82.8B">Tinderbox を確認する</h4>
+<p>ツリーを引っ張ってくる前には適当な <a href="/ja/Tinderbox" title="ja/Tinderbox">Tinderbox</a> を毎回確認してコードベースが壊れていないかどうかを確かめるようにします。赤くなっている Tinderbox があれば、それが緑になるまでツリーを引っ張るのを待つことをお勧めします。</p>
+<p>{{ 英語版章題("Branch HEAD") }}</p>
+<h4 id=".E3.83.96.E3.83.A9.E3.83.B3.E3.83.81_HEAD" name=".E3.83.96.E3.83.A9.E3.83.B3.E3.83.81_HEAD">ブランチ HEAD</h4>
+<p>一から新しいソースツリーをチェックアウトするには、まず <code>client.mk</code> ファイルを取得してください。このファイルには残りのツリーを引っ張ってくるのに使用するメイクファイルの命令が含まれています。</p>
+<pre class="eval">$ cvs -d :pserver:<a class=" link-mailto" href="mailto:anonymous@cvs-mirror.mozilla.org" rel="freelink">anonymous@cvs-mirror.mozilla.org</a>:/cvsroot co mozilla/client.mk
+</pre>
+<p>注意:<code><a href="/ja/Configuring_Build_Options#.mozconfig_.E8.A8.AD.E5.AE.9A.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.82.92.E4.BD.BF.E3.81.86" title="ja/Configuring_Build_Options#.mozconfig_.E8.A8.AD.E5.AE.9A.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.82.92.E4.BD.BF.E3.81.86">.mozconfig</a></code> ファイルをすでに用意してある場合は次のファイルもチェックアウトしなければなりません。</p>
+<dl> <dt> Firefox </dt> <dd> <pre>cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/browser/config/mozconfig</pre> </dd> <dt> Thunderbird </dt> <dd> <pre>cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/mail/config/mozconfig</pre> </dd>
+</dl>
+<p>{{ Note("HEAD 上の Thunderbird の最新版は 3.0a2 後のナイトリービルドでした。HEAD 上の SeaMonkey の最新版は 2.0a1pre ナイトリービルドでした。Thunderbird や SeaMonkey の開発はこれ以上 CVS の HEAD 上では行われません。") }}</p>
+<p>{{ 英語版章題("Specific Branch") }}</p>
+<h4 id=".E7.89.B9.E5.AE.9A.E3.81.AE.E3.83.96.E3.83.A9.E3.83.B3.E3.83.81" name=".E7.89.B9.E5.AE.9A.E3.81.AE.E3.83.96.E3.83.A9.E3.83.B3.E3.83.81">特定のブランチ</h4>
+<p>特定の <a class="external" href="http://ximbiot.com/cvs/wiki/index.php?title=CVS--Concurrent_Versions_System_v1.12.12.1:_Branching_and_merging">CVS ブランチ</a> のソースコードをチェックアウトしたい場合は代わりに次のようにしてください:</p>
+<pre class="eval">$ cvs -d :pserver:<a class=" link-mailto" href="mailto:anonymous@cvs-mirror.mozilla.org" rel="freelink">anonymous@cvs-mirror.mozilla.org</a>:/cvsroot co -r BRANCH mozilla/client.mk
+</pre>
+<p>例えば、Firefox 2.0/Thunderbird 2.0/SeaMonkey 1.1 開発ブランチを引っ張ってくるには、上記の BRANCH を MOZILLA_1_8_BRANCH に置き換えてください。利用可能な Mozilla のブランチタグについては <a href="/ja/CVS_Tags" title="ja/CVS_Tags">CVS タグ</a> を参照してください。</p>
+<p><a href="#.E3.83.96.E3.83.A9.E3.83.B3.E3.83.81_HEAD">前のセクション</a> で示したプロジェクト固有の <code>.mozconfig</code> ファイルを引っ張ってくる方法はもちろん HEAD 以外のブランチでも使用できます。</p>
+<p>{{ 英語版章題("Checkout") }}</p>
+<h4 id=".E3.83.81.E3.82.A7.E3.83.83.E3.82.AF.E3.82.A2.E3.82.A6.E3.83.88" name=".E3.83.81.E3.82.A7.E3.83.83.E3.82.AF.E3.82.A2.E3.82.A6.E3.83.88">チェックアウト</h4>
+<p>正しいブランチを選んだら、次を実行してください:</p>
+<pre class="eval">$ cd mozilla
+$ make -f client.mk checkout MOZ_CO_PROJECT=<em>option,option</em>
+</pre>
+<p>上で触れたように、<code>MOZ_CO_PROJECT</code> 変数を指定済みの独自の <code>.mozconfig</code> ファイルを使用する場合は、コマンドラインでこの作業を繰り返す必要はありません。</p>
+<div class="note">Mozilla のソースをチェックアウトするときには常に <code>client.mk</code> を使用してください。直接 <code>mozilla/</code> モジュールをチェックアウトしてはいけません。通常の Mozilla の開発がトランク上で行われているときでさえ、NSS、NSPR、LDAP C SDK といったさまざまなサブプロジェクトは安定版リリースタグから引っ張り出されます。</div>
+<p>{{ 英語版章題("Specific Time") }}</p>
+<h4 id=".E7.89.B9.E5.AE.9A.E3.81.AE.E6.99.82.E5.88.BB" name=".E7.89.B9.E5.AE.9A.E3.81.AE.E6.99.82.E5.88.BB">特定の時刻</h4>
+<p>ある特定の時刻においてのソースコードをチェックアウトしたい場合は MOZ_CO_DATE 変数を使用できます。例:<code>MOZ_CO_DATE="20 Oct 2006 17:00 PDT"</code></p>
+<p>これは <code><a href="/ja/Configuring_Build_Options#.mozconfig_.E8.A8.AD.E5.AE.9A.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.82.92.E4.BD.BF.E3.81.86" title="ja/Configuring_Build_Options#.mozconfig_.E8.A8.AD.E5.AE.9A.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.82.92.E4.BD.BF.E3.81.86">.mozconfig</a></code> に加えることも、次のようにしてコマンドラインで指定することもできます。</p>
+<pre class="eval">$ cd mozilla
+$ make -f client.mk checkout MOZ_CO_DATE="20 Oct 2006 17:00 PDT" MOZ_CO_PROJECT=<em>option,option</em>
+</pre>
+<p>{{ 英語版章題("Changing the Source Tree to a Different Branch") }}</p>
+<h3 id=".E3.82.BD.E3.83.BC.E3.82.B9.E3.83.84.E3.83.AA.E3.83.BC.E3.82.92.E7.95.B0.E3.81.AA.E3.82.8B.E3.83.96.E3.83.A9.E3.83.B3.E3.83.81.E3.81.AB.E5.A4.89.E6.9B.B4.E3.81.99.E3.82.8B" name=".E3.82.BD.E3.83.BC.E3.82.B9.E3.83.84.E3.83.AA.E3.83.BC.E3.82.92.E7.95.B0.E3.81.AA.E3.82.8B.E3.83.96.E3.83.A9.E3.83.B3.E3.83.81.E3.81.AB.E5.A4.89.E6.9B.B4.E3.81.99.E3.82.8B">ソースツリーを異なるブランチに変更する</h3>
+<p>{{ 英語版章題("Branch HEAD") }}</p>
+<h4 id=".E3.83.96.E3.83.A9.E3.83.B3.E3.83.81_HEAD_2" name=".E3.83.96.E3.83.A9.E3.83.B3.E3.83.81_HEAD_2">ブランチ HEAD</h4>
+<p>ソースツリー(ブランチ HEAD あるいは特定のブランチ)を最新のブランチ HEAD に更新するには、まずこれを実行してください:</p>
+<pre class="eval">$ cd mozilla
+$ cvs up -A client.mk
+</pre>
+<p>-A オプションは「貼り付いたブランチ」の情報を取り払い、ツリーを HEAD に更新できるようになります。</p>
+<p>{{ 英語版章題("Specific Branch") }}</p>
+<h4 id=".E7.89.B9.E5.AE.9A.E3.81.AE.E3.83.96.E3.83.A9.E3.83.B3.E3.83.81_2" name=".E7.89.B9.E5.AE.9A.E3.81.AE.E3.83.96.E3.83.A9.E3.83.B3.E3.83.81_2">特定のブランチ</h4>
+<p>特定のブランチから引っ張ってきたソースツリーを更新するには代わりにこうしてください:</p>
+<pre class="eval">$ cd mozilla
+$ cvs up -r BRANCH client.mk
+</pre>
+<p>BRANCH は更新したいブランチのタグで置き換えてください。</p>
+<p>{{ 英語版章題("Updating a Source Tree") }}</p>
+<h3 id=".E3.82.BD.E3.83.BC.E3.82.B9.E3.83.84.E3.83.AA.E3.83.BC.E3.82.92.E6.9B.B4.E6.96.B0.E3.81.99.E3.82.8B" name=".E3.82.BD.E3.83.BC.E3.82.B9.E3.83.84.E3.83.AA.E3.83.BC.E3.82.92.E6.9B.B4.E6.96.B0.E3.81.99.E3.82.8B">ソースツリーを更新する</h3>
+<p>ソースツリーを更新するには、単に次のようにします:</p>
+<pre class="eval">$ make -f client.mk checkout MOZ_CO_PROJECT=<em>option,option</em>
+</pre>
+<p>やはり <code>MOZ_CO_PROJECT</code> を定義してある独自の <code>.mozconfig</code> ファイルを使用するのであれば、コマンドラインで作業を繰り返す必要はありません。</p>
+<p>{{ 英語版章題("Creating a Diff File") }}</p>
+<h3 id=".E5.B7.AE.E5.88.86.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.82.92.E4.BD.9C.E6.88.90.E3.81.99.E3.82.8B" name=".E5.B7.AE.E5.88.86.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.82.92.E4.BD.9C.E6.88.90.E3.81.99.E3.82.8B">差分ファイルを作成する</h3>
+<p>リポジトリ内の現時点でのファイルと単一のローカルファイルとの差分を作成するには次のようにしてください:</p>
+<pre class="eval">$ cvs diff -u8p FILENAME
+</pre>
+<p>詳しくは <a href="/ja/Creating_a_patch" title="ja/Creating_a_patch">パッチの作成</a> を参照してください。</p>
+<p>{{ 英語版章題("Converting a Downloaded Source Tree") }}</p>
+<h3 id=".E3.83.80.E3.82.A6.E3.83.B3.E3.83.AD.E3.83.BC.E3.83.89.E3.81.97.E3.81.9F.E3.82.BD.E3.83.BC.E3.82.B9.E3.83.84.E3.83.AA.E3.83.BC.E3.82.92.E5.A4.89.E6.8F.9B.E3.81.99.E3.82.8B" name=".E3.83.80.E3.82.A6.E3.83.B3.E3.83.AD.E3.83.BC.E3.83.89.E3.81.97.E3.81.9F.E3.82.BD.E3.83.BC.E3.82.B9.E3.83.84.E3.83.AA.E3.83.BC.E3.82.92.E5.A4.89.E6.8F.9B.E3.81.99.E3.82.8B">ダウンロードしたソースツリーを変換する</h3>
+<p>mozilla.org からダウンロードしたソースツリー(<a href="/ja/Developer_Guide/Source_Code/Downloading_Source_Archives" title="ja/Developer_Guide/Source_Code/Downloading_Source_Archives">ソースの tarball</a>)は、通常のチェックアウト時のようにすでに CVS の情報が付け加えられた状態になっています。通常のツリーと同様、このツリーは特別なことをしなくても最新のコードに更新することができます。ソースツリーの更新方法は前のセクションをご覧ください。</p>
+
+<div class="noinclude">
+<p>{{ languages( { "en": "en/Mozilla_Source_Code_(CVS)", "es": "es/C\u00f3digo_fuente_de_Mozilla_(CVS)", "fr": "fr/Obtenir_le_code_source_de_Mozilla_via_CVS", "zh-cn": "cn/\u901a\u8fc7CVS\u83b7\u53d6\u6e90\u7801" } ) }}</p>
+</div>
diff --git a/files/ja/mozilla/developer_guide/source_code/getting_comm-central_source_code_using_mercurial/index.html b/files/ja/mozilla/developer_guide/source_code/getting_comm-central_source_code_using_mercurial/index.html
new file mode 100644
index 0000000000..581da56b72
--- /dev/null
+++ b/files/ja/mozilla/developer_guide/source_code/getting_comm-central_source_code_using_mercurial/index.html
@@ -0,0 +1,50 @@
+---
+title: Getting comm-central Source Code Using Mercurial
+slug: >-
+ Mozilla/Developer_Guide/Source_Code/Getting_comm-central_Source_Code_Using_Mercurial
+translation_of: Mozilla/Developer_guide/Source_Code/Getting_comm-central
+---
+<p><a href="/ja/Mercurial" title="ja/Mercurial">Mercurial</a> は、ソースコードの変更をローカルで追跡し、それらの変更を他のユーザと共有するためのソースコード管理ツールです。Mozilla プロジェクトはソースコードの管理を、Mozilla 1.9 開発用の <a href="/ja/Developer_Guide/Source_Code/CVS" title="Getting Older Mozilla Source Code Using CVS">CVS</a> から Mozilla 1.9.1 とその先の製品開発用の Mercurial へ移行しています。</p>
+<div class="note">Thunderbird 2.0 や SeaMonkey 1.1, Firefox 3.0 の開発のためのパッチを提出したいときは、<a href="/ja/Developer_Guide/Source_Code/CVS" title="Getting Older Mozilla Source Code Using CVS">CVS</a> を使用してください。</div>
+<h3 id="Client_Settings" name="Client_Settings">クライアントの設定</h3>
+<p>設定は Firefox 3.5/xulrunner 1.9.1 の開発と同じです。次の記事を参照してください。</p>
+<p><a href="/ja/Developer_Guide/Source_Code/Mercurial#Client_settings" title="ja/Mozilla_Source_Code_(Mercurial)#Client_settings">Mozilla_Source_Code_(Mercurial)#Client_settings</a>.</p>
+<h3 id="Checking_out_a_source_tree" name="Checking_out_a_source_tree">ソースツリーのチェックアウト</h3>
+<p>Thunderbird と Seamonkey のソースコードはそれぞれ異なるリポジトリに含まれています。<a class="internal" href="/ja/comm-central" title="ja/comm-central">comm-central</a> は、それらのアプリケーション開発用のメインの統合リポジトリです。Thunderbird および Sunbird, SeaMonkey に必要とされるソースコードが含まれています。また、他のソースコードを入手するための <code>client.py</code> スクリプトも含まれています。</p>
+<p>comm-central のソースコードを入手するには (Mercurial の用語で、リポジトリを "clone" します):</p>
+<pre class="eval"># Mozilla ソースコードを src/ フォルダに pull します。
+# 数百メガバイトの履歴が .hg フォルダにダウンロードされるため、しばらく時間がかかります。
+hg clone <span class="nowiki">http://hg.mozilla.org/comm-central/</span> src
+
+cd src
+</pre>
+<div class="note">すでに mozilla-central ツリーを clone している場合は、mozilla-central 全体を再び pull してしまうことを避けるため、ここでは src/mozilla に clone してください。</div>
+<p>client.py を使用して、必要な他のすべてのソースコードを更新または pull してください:</p>
+<pre class="eval">python client.py checkout
+</pre>
+<div class="note">
+<ul> <li>"No module named subprocess" というエラーメッセージが表示された場合は、Python 2.4 以降をインストールする必要があります。</li> <li>このステップでは数百メガバイトのデータがダウンロードされます。ネットワークの接続速度によっては、しばらく時間がかかります。</li>
+</ul>
+</div>
+<p>client.py は以下のタスクを行います:</p>
+<ul> <li><a href="/ja/mozilla-central" title="ja/mozilla-central">mozilla-central</a> コードベースを mozilla/ ディレクトリに pull する</li> <li>次のリポジトリを mozilla/extensions ディレクトリに pull する: <ul> <li>inspector (DOM Inspector)</li> <li>venkman (JavaScript Debugger)</li> </ul> </li> <li>次のディレクトリを CVS リポジトリから pull する:<br> <ul> <li>extensions/irc (Chatzilla) (mozilla/extensions/irc ディレクトリへ)</li> <li>directory/c-sdk</li> </ul> </li> <li>'hg pull' を実行して変更を pull する。これは必須ではありません (あなた自身が pull することになるでしょう)。--skip-comm オプションを client.py に渡し、このタスクをスキップします。</li>
+</ul>
+<h4 id="Updating_the_Repository" name="Updating_the_Repository">リポジトリの更新</h4>
+<p>リポジトリを更新するには、client.py を再び実行します:</p>
+<pre>python client.py checkout
+</pre>
+<p><a href="/ja/comm-central#Branches" title="ja/comm-central#Branches">comm-central の異なるブランチ</a> を pull するには、 <code><a class=" external" href="http://hg.mozilla.org/comm-central" rel="freelink">http://hg.mozilla.org/comm-central</a></code> をブランチの場所に置きかえて、上に書かれた最初のステップを行ってください。ブランチの場所は <a href="/ja/comm-central#Branches" title="ja/comm-central#Branches">comm-central ページのブランチ章</a>で指定されています。</p>
+<div class="note">関連するリポジトリを pull すると、同じソースディレクトリを使用して上述のソフトウェアを開発してビルドすることができますが、リポジトリをまたがる変更 (chengeset) を作成できるわけではありません。リポジトリをまたがるパッチを作成するときは、各リポジトリごとの変更 (chengeset) が必要です。</div>
+<h3 id="Building" name="Building">ビルド</h3>
+<p>comm-central のアプリケーションについては、次のリンク先をご覧ください:</p>
+<ul> <li><a class="internal" href="/ja/Simple_Thunderbird_build" title="ja/Simple Thunderbird build">Simple Thunderbird Build</a></li> <li><a class="internal" href="/ja/Simple_SeaMonkey_build" title="ja/Simple SeaMonkey build">Simple SeaMonkey Build</a></li> <li><a class="internal" href="/ja/Simple_Sunbird_build" title="ja/Simple Sunbird build">Simple Sunbird Build</a></li>
+</ul>
+<h4 id="Firefox_and_xulrunner" name="Firefox_and_xulrunner">Firefox と xulrunner</h4>
+<p>必要であれば、このツリーから Firefox や xulrunner をビルドすることができます。client.py によって mozilla-central リポジトリが pull されるため、Firefox や xulrunner のビルドと開発は comm-central からのリポジトリ内で行うことができます。ただ一つの違いは、ビルドコマンドを実行する前に mozilla/ ディレクトリに移動する必要があることです:</p>
+<pre class="eval">cd src/mozilla
+make -f client.mk build
+</pre>
+<h3 id="See_Also" name="See_Also">参照</h3>
+<ul> <li><a href="/ja/comm-central" title="ja/comm-central">comm-central</a></li> <li><a href="/ja/Mercurial" title="ja/Mercurial">Mercurial</a></li> <li><a href="/ja/Mercurial_FAQ" title="ja/Mercurial_FAQ">Mercurial FAQ</a></li> <li><a href="/ja/Developer_Guide/Source_Code/Mercurial" title="ja/Mozilla_Source_Code_(Mercurial)">Mozilla_Source_Code_(Mercurial)</a></li>
+</ul>
+<p>{{ languages( { "en": "En/Developer_Guide/Source_Code/Getting_comm-central", "fr": "fr/Code_source_de_comm-central_(Mercurial)" } ) }}</p>
diff --git a/files/ja/mozilla/developer_guide/source_code/index.html b/files/ja/mozilla/developer_guide/source_code/index.html
new file mode 100644
index 0000000000..66a5520a66
--- /dev/null
+++ b/files/ja/mozilla/developer_guide/source_code/index.html
@@ -0,0 +1,50 @@
+---
+title: Mozilla のソースコードに貢献する
+slug: Mozilla/Developer_Guide/Source_Code
+tags:
+ - Developing Mozilla
+ - Firefox
+ - Intermediate
+ - Mozilla
+ - thunderbird
+translation_of: Mozilla/Developer_guide/Source_Code
+---
+<p>The articles below will help you get your hands on the Mozilla source code, learn to navigate the code, and how to get the changes you propose checked into the tree.</p>
+
+<div class="row topicpage-table">
+<div class="section">
+<dl>
+ <dt><a class="internal" href="/En/Developer_Guide/Source_Code/Mercurial" title="En/Mozilla Source Code (Mercurial)">Mercurial のリポジトリからソースコードをダウンロードする</a></dt>
+ <dd>Mozilla プロジェクトへ貢献するためソースコードを手元に持ってきたい場合、バージョン管理がされているリポジトリをチェックアウトすると最も良いでしょう。この記事ではダウンロードの方法を紹介します。</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Using_the_VM">仮想マシンとして構築済みの Mozilla ビルドシステムを使う</a></dt>
+ <dd>ここでは VirtualBox の仮想マシンを用いますが、すでにビルド環境は構築されているため、仮想マシンを起動するだけでビルドを実行できます。Mozilla のソースコードを初めてビルドするには最も簡単な方法です。</dd>
+ <dt><a class="internal" href="/En/Developer_Guide/Source_Code/Downloading_Source_Archives" title="En/Mozilla Source Code (HTTP//FTP)">HTTP や FTP でソースコードをダウンロードする</a></dt>
+ <dd>ある Mozilla プロジェクトのソースコードをダウンロードする際にリリースバージョンを指定したい場合、ソースコードのアーカイブを利用したほうが便利です。</dd>
+ <dt><a class="internal" href="/en/Viewing_and_searching_Mozilla_source_code_online" title="En/Viewing and searching Mozilla source code online">Mozilla のソースコードをオンラインで閲覧・検索する</a></dt>
+ <dd>Mozilla のソースコードをオンラインで閲覧・検索できる MXR の利用方法について解説します。ダウンロードには不向きですが、ソースコードの検索にはとても便利です。</dd>
+ <dt><a class="internal" href="/en/Mozilla_Source_Code_Directory_Structure" title="en/Mozilla Source Code Directory Structure">Mozillaソースコードのガイド</a></dt>
+ <dd>Mozilla のソースツリーに含まれている様々なフォルダの内容や、閲覧したいソースコード検索方法について解説します。</dd>
+ <dt><a class="external" href="/en/Introduction#Find_a_bug_we%27ve_identified_as_a_good_fit_for_new_contributors." title="/en/Introduction#Find_a_bug_we%27ve_identified_as_a_good_fit__for_new_contributors.">初心者向けのバグ</a></dt>
+ <dd>参加したいプロジェクトはあっても貢献したことがまだない場合、まずはこちらをご覧ください。</dd>
+</dl>
+</div>
+
+<div class="section">
+<dl>
+ <dt><a class="internal" href="/En/Developer_Guide/Coding_Style" title="En/Mozilla Coding Style Guide">Mozilla コーディングスタイルのガイド</a></dt>
+ <dd>自分が書いたソースコードを整形する方法や、レビュー結果で落ち込まないための方法をお教えします。</dd>
+ <dt><a href="/En/Developer_Guide/Interface_development_guide" title="En/Developer Guide/Interface development guide">インターフェイス開発のガイド</a></dt>
+ <dd>XPCOM インターフェイスの作成や改善する際のガイドラインを確認できます。</dd>
+ <dt><a href="/en-US/docs/Mozilla/Developer_guide/SVG_Guidelines">SVG クリーンアップガイド</a></dt>
+ <dd>新しい SVG を開発する際のベストプラクティスをまとめています。</dd>
+ <dt><a class="link-https" href="https://wiki.mozilla.org/Build:TryServer" title="https://wiki.mozilla.org/Build:TryServer">Try Servers</a></dt>
+ <dd>Mozilla のプロダクトは 3 つ以上のプラットフォームでビルドされています。すべてでビルドを試すことができない場合、自分の書いたパッチをテストサーバに送ってテストすることができます。</dd>
+ <dt><a class="internal" href="/en/Creating_a_patch" title="En/Creating a patch">パッチを作成する</a></dt>
+ <dd>Mozilla のソースコードに変更を加え、正しく動くことを確認できた次は、パッチを作成してレビューしてもらいましょう。<em>この記事は Mercurial 向けに全面的な更新が必要です。</em></dd>
+ <dt><a class="external" href="http://www.mozilla.org/hacking/committer/" title="http://www.mozilla.org/hacking/committer/">ソースコードへのコミット権を得る</a></dt>
+ <dd>Feel ready to join the few, the proud, the committers? Find out how to get check-in access to the Mozilla code.</dd>
+ <dt><a class="internal" href="/En/Developer_Guide/Source_Code/CVS" title="En/Mozilla Source Code (CVS)">古い Mozilla ソースコードを CVS からダウンロードする</a></dt>
+ <dd>古い Mozilla ソースコードや現在の NSS、NSPR におけるソースコードは CVS リポジトリで管理されています。CVS リポジトリからのダウンロード方法について解説します。</dd>
+</dl>
+</div>
+</div>
diff --git a/files/ja/mozilla/developer_guide/svg_guidelines/index.html b/files/ja/mozilla/developer_guide/svg_guidelines/index.html
new file mode 100644
index 0000000000..358d2da811
--- /dev/null
+++ b/files/ja/mozilla/developer_guide/svg_guidelines/index.html
@@ -0,0 +1,198 @@
+---
+title: SVG ガイドライン
+slug: Mozilla/Developer_Guide/SVG_Guidelines
+translation_of: Mozilla/Developer_guide/SVG_Guidelines
+---
+<p>The <a href="/en-US/docs/Web/SVG">SVG</a> format has the advantage of being able to describe complex images while being lightweight and to scaling them very well at all resolutions. Unfortunately, a lot of SVG files (often generated by SVG editors) ship without being cleaned up, so the benefit of them being lightweight is gone. Here are some best pratices to keep SVGs lightweight. These rules are based on some real examples seen in Mozilla's code.</p>
+
+<h2 id="Basics"><span class="author-g-1scq3ywqbljc5puc b">Basics</span></h2>
+
+<ul>
+ <li><span class="author-g-1scq3ywqbljc5puc">2 spaces indenting</span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc">No useless whitespaces or linebreaks (see below for more details)</span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc">Adding a license header</span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc">Use double quotes</span></li>
+</ul>
+
+<h2 id="Whitespace_and_line_breaks">Whitespace and line breaks</h2>
+
+<div id="magicdomid5">
+<h3 id="Whitespace">Whitespace</h3>
+
+<p>In addition to trailing whitespace at the end of lines, there are a few more cases more specific to SVGs:</p>
+
+<ul>
+ <li>Trailing whitespaces in attribute values (usually seen in path definitions)</li>
+ <li>Excessive whitespace in path or polygon points definition</li>
+</ul>
+
+<h4 id="Examples">Examples</h4>
+
+<p>This path:<span class="author-g-g4g23bmoaru8by8u"> </span></p>
+
+<pre><span class="author-g-g4g23bmoaru8by8u">&lt;path d=" M5,5 L1,1z "&gt;</span></pre>
+
+<p><span class="author-g-g4g23bmoaru8by8u">can be cut down to this:</span></p>
+
+<pre><span class="author-g-g4g23bmoaru8by8u">&lt;path d="M5,5 L1,1z"&gt;</span></pre>
+
+<p>Similarly, this polygon:</p>
+
+<pre><span class="author-g-g4g23bmoaru8by8u">&lt;polygon points=" 0,0 4,4 4,0 "/&gt;</span></pre>
+
+<p><span class="author-g-g4g23bmoaru8by8u">can be cut down to this:</span></p>
+
+<pre><span class="author-g-g4g23bmoaru8by8u">&lt;polygon points="0,0 4,4 4,0"/&gt;</span></pre>
+
+<h3 id="Line_breaks">Line breaks</h3>
+
+<p>You should only use line breaks for logical separation or if they help make the file readable. You should avoid line breaks between every single element or within attribute values. It's recommended to put the attributes on the same line as their tagnames if possible. You should also put the shortest attributes first so they are easier to spot.</p>
+
+<h2 id="Unused_tags_and_attributes"><span class="author-g-1scq3ywqbljc5puc b">Unused tags and attributes</span></h2>
+</div>
+
+<h3 id="Editor_metadata"><span class="author-g-1scq3ywqbljc5puc b">Editor metadata</span></h3>
+
+<p><span class="author-g-1scq3ywqbljc5puc b">Vector editors (Inkscape, Adobe Illustrator, Sketch, </span>…<span class="author-g-1scq3ywqbljc5puc b">) usually add a bunch of metadata in SVG files when saving them.</span> Metadata can mean many things, including:</p>
+
+<ul>
+ <li>The common "Created with <em>editor</em>" comments</li>
+ <li>Non-standard editor specific tags and attributes (<code>sketch:foo</code>, <code>illustrator:foo</code>, <code>sopodi:foo</code>, …)</li>
+ <li>The <a href="/en-US/docs/Namespaces">XML namespace</a> definition that comes with the latter (<code>xmlns:sketch</code>, <code>xmlns:sopodi</code>, …)</li>
+</ul>
+
+<h3 id="Other_metadata">Other metadata</h3>
+
+<p>In addition to non-standard editor metadata, standard compliant metadata also exists. Common examples of this are <code>&lt;title&gt;</code> and <code>&lt;desc&gt;</code> tags. Although this kind of data is supported by the browser, it can only be displayed when the SVG is opened in a new tab. Plus, the filename is descriptive enough most of the time. So it's recommended to remove that kind of metadata, since it doesn't bring much value.</p>
+
+<p>You shouldn't include DOCTYPEs in your SVGs either, they are source of many issues and the SVG WG recommends not to include them. See <a href="https://jwatt.org/svg/authoring/#doctype-declaration">SVG Authoring guidelines</a>.</p>
+
+<h3 id="Avoid_the_use_of_CDATA_sections"><span class="author-g-1scq3ywqbljc5puc">Avoid the use of <span id="cke_bm_253E" style="display: none;"> </span>CDATA sections</span></h3>
+
+<p><span class="author-g-1scq3ywqbljc5puc"><a href="/en-US/docs/Web/API/CDATASection">CDATA sections</a> are used to avoid parsing some text as HTML. Most of time, CDATA isn't needed, for example, the content in <code>&lt;style&gt;</code> tags doesn't need to be wrapped in a CDATA section as the content inside the tag is already properly parsed as CSS.</span></p>
+
+<h3 id="Invisible_shapes">Invisible shapes</h3>
+
+<p>There are 2 kinds of invisible shapes: the offscreen ones and the uncolored ones.</p>
+
+<p>The offscreen shapes are hard to spot, even with an automated tool, and are usually context aware. Those kind of shapes are visible, but off the <a href="/en-US/docs/Web/SVG/Attribute/viewBox">SVG view box</a>. Here's <a href="https://hg.mozilla.org/mozilla-central/diff/9fb143f3b36a/browser/themes/shared/heartbeat-star-lit.svg">an example</a> of a file with offscreen shapes.</p>
+
+<p>On the other hand, the uncolored ones are easier to spot, since they usually come with styles making them invisible. They must meet 2 conditions: they must have no fill (or a transparent one) and no stroke.</p>
+
+<h3 id="Unused_attributes_on_root_&lt;svg>_element">Unused attributes on root <code>&lt;svg</code>&gt; element</h3>
+
+<p>The root <code>&lt;svg&gt;</code> element can also host many useless attributes. Here's an <a href="https://hg.mozilla.org/mozilla-central/diff/2d38fecce226/browser/components/loop/content/shared/img/icons-10x10.svg">example</a> taking into account the list below:</p>
+
+<ul>
+ <li><code><span class="author-g-1scq3ywqbljc5puc">version</span></code></li>
+ <li><span class="author-g-1scq3ywqbljc5puc"><code>x="0"</code> and <code>y="0"</code></span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc"><code>enable-background</code> (unsupported by Gecko and now deprecated by the Filter Effects specification</span><span class="author-g-1scq3ywqbljc5puc">)</span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc"><code>id</code> (id on root element has no effect)</span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc"><code>xmlns:xlink</code> attribute when there are no <code>xlink:href</code> attributes used throughout the file</span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc">Other unused <a href="/en-US/docs/Namespaces">XML Namespace</a> definitions</span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc"><code>xml:space</code> when there is no text used in the file</span></li>
+</ul>
+
+<h3 id="Other">Other</h3>
+
+<ul style="list-style-type: disc;">
+ <li>Empty tags, this may be obvious, but those are sometimes found in SVGs</li>
+ <li><span class="author-g-1scq3ywqbljc5puc">Unreferenced ids (usually on gradient stops, but also on shapes or paths)</span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc"><code><a href="/en-US/docs/Web/SVG/Attribute/clip-rule">clip-rule</a></code> attribute when the element </span><u><strong><span class="author-g-1scq3ywqbljc5puc u">is not</span></strong></u><span class="author-g-1scq3ywqbljc5puc"> a descendant of a <code><a href="/en-US/docs/Web/SVG/Element/clipPath">&lt;clipPath&gt;</a></code></span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc"><code><a href="/en-US/docs/Web/SVG/Attribute/fill-rule">fill-rule</a></code> attribute when the element </span><u><strong><span class="author-g-1scq3ywqbljc5puc u">is</span></strong></u><span class="author-g-1scq3ywqbljc5puc"> a descendant of a <code><a href="/en-US/docs/Web/SVG/Element/clipPath">&lt;clipPath&gt;</a></code></span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc">Unreferenced/Unused clip paths, masks or defs (<a href="https://hg.mozilla.org/mozilla-central/diff/2d38fecce226/toolkit/themes/shared/reader/RM-Plus-24x24.svg">example</a>)</span></li>
+</ul>
+
+<h2 id="Styling"><span class="author-g-1scq3ywqbljc5puc b">Styling</span></h2>
+
+<h3 id="Basics_2">Basics</h3>
+
+<ul>
+ <li><span class="author-g-1scq3ywqbljc5puc">Privilege short lowercase hex for colors</span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc">Don't use excessive precision for numeric values (usually comes from illustrator)</span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc">Use descriptive IDs </span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc">Avoid inline styles and use class names or SVG attributes</span></li>
+</ul>
+
+<h4 id="Examples_2"><span class="author-g-1scq3ywqbljc5puc">Examples</span></h4>
+
+<p>Here are some examples for excessive number precision:</p>
+
+<ul>
+ <li><span class="author-g-1scq3ywqbljc5puc">5.000000e-02 </span>→<span class="author-g-1scq3ywqbljc5puc"> 0.05 (as seen <a href="https://hg.mozilla.org/mozilla-central/diff/2d38fecce226/browser/themes/shared/devtools/images/tool-network.svg#l1.31">here</a>)</span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc">-3.728928e-10 </span>→<span class="author-g-1scq3ywqbljc5puc"> 0 (as seen <a href="https://hg.mozilla.org/mozilla-central/diff/2d38fecce226/browser/themes/shared/aboutNetError_alert.svg#l1.12">here</a>)</span></li>
+ <li>t<span class="author-g-1scq3ywqbljc5puc">ranslate(0.000000, -1.000000) </span>→<span class="author-g-1scq3ywqbljc5puc"> translate(0, -1) (as seen <a href="https://hg.mozilla.org/mozilla-central/diff/2d38fecce226/browser/themes/shared/heartbeat-icon.svg#l1.13">here</a>)</span></li>
+</ul>
+
+<p>As for descriptive IDs:</p>
+
+<ul>
+ <li><span class="author-g-1scq3ywqbljc5puc">For gradients: SVG_ID1 </span>→<span class="author-g-1scq3ywqbljc5puc"> gradient1 (as seen <a href="https://hg.mozilla.org/mozilla-central/diff/2d38fecce226/browser/themes/shared/aboutNetError_alert.svg#l1.12">here</a>)</span></li>
+</ul>
+
+<h3 id="Use_of_class_names"><span class="author-g-1scq3ywqbljc5puc b">Use of class names</span></h3>
+
+<ul>
+ <li><span class="author-g-g4g23bmoaru8by8u">Avoid using a class if that class is only used once in the file</span></li>
+ <li><span class="author-g-g4g23bmoaru8by8u">If that class only sets a fill or a stroke, it's better to set the fill/stroke directly on the actual shape, instead of introducing a class just for that shape, you can also use SVG grouping to avoid duplicating those attributes</span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc">Avoid introducing variants of the same file (color/style variants), and use sprites instead (with class names)</span></li>
+</ul>
+
+<h3 id="Default_style_values"><span class="author-g-1scq3ywqbljc5puc b">Default style values</span></h3>
+
+<p><span class="author-g-1scq3ywqbljc5puc b">There's usually no need to set the default style value unless you're overriding a style. Here are some commonly seen examples:</span></p>
+
+<ul>
+ <li><span class="author-g-1scq3ywqbljc5puc"><code>style="display: none;"</code> on <code><a href="/en-US/docs/Web/SVG/Element/defs">&lt;defs&gt;</a></code> elements (a <code>&lt;defs&gt;</code> element is hidden by default)</span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc"><code>type="text/css"</code> on <code>&lt;style&gt;</code> elements</span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc"><code>stroke: none</code> or <code>stroke-width: 0</code></span></li>
+</ul>
+
+<h2 id="SVG_grouping">SVG grouping</h2>
+
+<h3 id="Style_grouping">Style grouping</h3>
+
+<p>Group similarly styled shapes under one <code>&lt;g&gt;</code> tag, this avoids having to set the same class/styles on many shapes.</p>
+
+<h3 id="Avoid_excessive_grouping">Avoid excessive grouping</h3>
+
+<p>Editors can sometimes do excessive grouping when exporting SVGs. This is due to the way editors work.</p>
+
+<h4 id="Nested_groups">Nested groups</h4>
+
+<p>Avoid multiple-level nesting of groups, these make the SVG less readable.</p>
+
+<h4 id="Nested_transforms">Nested transforms</h4>
+
+<p>Some editors use <code>&lt;g&gt;</code> tags to do nested transforms, which is usually not needed. You can avoid this by doing basic algebra, for example:</p>
+
+<pre><span class="author-g-1scq3ywqbljc5puc">&lt;g transform="translate(-62, -310)"&gt;&lt;shape transform="translate(60, 308)"/&gt;&lt;/g&gt;</span></pre>
+
+<p><span class="author-g-1scq3ywqbljc5puc">can be cut down to:</span></p>
+
+<pre><span class="author-g-1scq3ywqbljc5puc">&lt;shape transform="translate(-2,-2)"/&gt;</span></pre>
+
+<p><span class="author-g-1scq3ywqbljc5puc">because: -62+60 = -310+308 = -2</span></p>
+
+<h2 id="Performance_tips"><span class="author-g-1scq3ywqbljc5puc b">Performance tips</span></h2>
+
+<p>These rules are optional, but they help speeding up the SVG.</p>
+
+<ul>
+ <li><span class="author-g-1scq3ywqbljc5puc">Avoid using a <code>&lt;use&gt;</code> tag when that <code>&lt;use&gt;</code> tag is being referenced only once in the whole file</span></li>
+ <li>Instead of using CSS/SVG <a href="/en-US/docs/Web/SVG/Attribute/transform">transforms</a>, apply directly the transform on the path/shape definition</li>
+</ul>
+
+<h2 id="Tools">Tools</h2>
+
+<p>Tools can help clean SVG files. Note however that some of the rules stated above can be hard to detect with automated tools since they require too much context-awereness.<br>
+ To this date, there doesn't seem to be a tool that handles all of the above. However, there are some existing utilities that cover some parts of this document:</p>
+
+<ul>
+ <li>Mostly complete command line tool: <a href="https://github.com/svg/svgo">https://github.com/svg/svgo</a></li>
+ <li>GUI for command line tool (use with "Prettify code" and "Remove <code>&lt;title&gt;</code>" options on): <a href="https://jakearchibald.github.io/svgomg/">https://jakearchibald.github.io/svgomg/</a></li>
+ <li>Good alternative to SVGO/SVGOMG: <a href="http://petercollingridge.appspot.com/svg-editor">http://petercollingridge.appspot.com/svg-editor</a></li>
+ <li><span class="author-g-1scq3ywqbljc5puc">Fixes the excessive number precision: </span><span class="author-g-1scq3ywqbljc5puc url"><a href="https://simon.html5.org/tools/js/svg-optimizer/">https://simon.html5.org/tools/js/svg-optimizer/</a></span></li>
+ <li><span class="author-g-1scq3ywqbljc5puc url">Converts inline styles to SVG attributes:</span><span class="author-g-1scq3ywqbljc5puc url"> </span><a href="http://www.w3.org/wiki/SvgTidy">http://www.w3.org/wiki/SvgTidy</a></li>
+ <li><span class="author-g-1scq3ywqbljc5puc">RaphaelJS has a couple of utilities that may be useful: </span><span class="author-g-1scq3ywqbljc5puc url"><a href="http://raphaeljs.com/reference.html">http://raphaeljs.com/reference.html</a></span></li>
+</ul>
diff --git a/files/ja/mozilla/developer_guide/using_the_vm/index.html b/files/ja/mozilla/developer_guide/using_the_vm/index.html
new file mode 100644
index 0000000000..0fb4ff7bd0
--- /dev/null
+++ b/files/ja/mozilla/developer_guide/using_the_vm/index.html
@@ -0,0 +1,80 @@
+---
+title: Mozilla build用VMを使用する
+slug: Mozilla/Developer_Guide/Using_the_VM
+translation_of: Archive/Mozilla/Using_the_VM
+---
+<p>If you ever wondered what contributing to Firefox feels like but you never had the time to read and follow through our <a href="/en-US/docs/Simple_Firefox_build">instructions to setup a build environment</a> or wanted to avoid making changes to your standard tools and configuration, then this might be for you. Mozilla provides a virtual machine (VM) which is compatible with the free <a href="https://www.virtualbox.org/wiki/Downloads">VirtualBox</a> virtualization software (as well as others, including VMWare/VMWare Fusion).</p>
+
+<p>This article provides simple instructions for downloading, installing, and setting up this build environment build machine; once you've finished following the steps below, you'll have a VM ready for you to modify and tweak Firefox.</p>
+
+<p>Hopefully this VM will especially help developers or potential developers who don't have a full C++ development environment available to them, as well as to experienced developers without the time to set up a build system following the usual instructions.</p>
+
+<h2 id="Installing_VirtualBox">Installing VirtualBox</h2>
+
+<p>Visit the <a href="https://www.virtualbox.org/wiki/Downloads">VirtualBox downloads page</a> and download the latest version of the software for your operating system.</p>
+
+<div class="note">
+<p><strong>Note:</strong> If you already have a virtualization product installed, such as VirtualBox, VMWare, or VMWare Fusion, you can use that instead of downloading a new copy of VirtualBox. Just make sure you have the latest version of the software. Note that Parallels Desktop does <strong>not</strong> support the OVF format.</p>
+</div>
+
+<h2 id="VMのダウンロード">VMのダウンロード</h2>
+
+<p>Next, download the Firefox development environment VM.</p>
+
+<p><a class="download-button external ignore-external" href="http://vmimages.mozilla.net/ovf/FirefoxBuildEnv.ova" rel="noopener">Download the VM</a></p>
+
+<p>SHA-256: 67698e6dfe54582b4fc23221a8b8f3a9062ffa0bce11523823ccb26a8f8bce2b</p>
+
+<div class="note">
+<p><strong>Note:</strong> This file is about 3.6 GB, so it may take a while to download.</p>
+</div>
+
+<h2 id="Setting_up_the_VM">Setting up the VM</h2>
+
+<p>After getting the virtual machines' .ova file has downloaded, double-click on it; this will start the process of importing the VM into VirtualBox. Please give the VM a minimum of 4096 MB of RAM (8192 MB or more if you can), and set it to have the same number of processors as your host computer. Building Firefox uses a lot of system resources, and you want it to build as quickly as possible.</p>
+
+<p><img alt="Screen shot of the Import Virtual Appliance window" src="https://mdn.mozillademos.org/files/8665/firefoxdev3.png" style="height: 447px; width: 600px;"></p>
+
+<p>Once you've finished importing the VM, you can perform additional customizations if you wish, or just boot the VM and wait for the Ubuntu desktop to appear. A terminal window will pop up automatically and perform some final setup activities. Once those are finished running, Sublime Text will start up, and you can get to work!</p>
+
+<p><img alt="Screen shot of the Sublime Text editor running in the VM" src="https://mdn.mozillademos.org/files/8667/firefoxdev1.png" style="height: 317px; width: 600px;"></p>
+
+<div class="note">
+<p><strong>Note:</strong> <strong>もしrootのパスワードが必要になった場合、 "firefox-dev" をパスワードとして使用することができます。</strong> If you wish to change your language and keyboard settings, follow the instructions in <a href="http://www.howtogeek.com/howto/17528/change-the-user-interface-language-in-ubuntu/">How to change the UI language in Ubuntu</a>.</p>
+</div>
+
+<h2 id="Firefoxをビルドする">Firefoxをビルドする</h2>
+
+<p>VMを使用してFirefoxをビルドするためには、(sublimetextを開いた状態で上のバーから)Toolsメニューを開きBuildオプションを選びます。ビルドの処理が開始するので、お茶や美味しい食事でもして休憩しましょう。休憩の長さはあなたのコンピューターの処理速度によります。</p>
+
+<p>もしビルドが終了(完了)した場合、Tools内のRunオプションを選び、あなたがカスタムビルドしたfirefoxを起動させることができます。想定した動作をしているかどうか確認してみてください。</p>
+
+<p>デフォルトではこのVMはFirefoxのビルドに最適化された設定になっています。デバッグ用ビルドに変更することもかんたんにできます。Toolsメニューを開き、Build Systemサブメニューを開いて、"Firefox (Debug)"を選ぶだけです。次にあなたがビルドするときはデバッグ用のビルドになっているでしょう!</p>
+
+<p><img alt="Screen shot showing how to switch between debug; and optimized builds" src="https://mdn.mozillademos.org/files/8669/firefoxdev2.png" style="height: 317px; width: 600px;"></p>
+
+<h2 id="VMでcontributeする">VMでcontributeする</h2>
+
+<p>今後はあなたがどこにいてもVMを使ってcontributeすることができます。最新のソースコードを <a href="/en-US/docs/mozilla-central">mozilla-central</a>, 内から持ってくるには、いつものようにMercurialのコマンドを打つだけで済みます:</p>
+
+<pre>hg pull</pre>
+
+<p>そしていつもと同じように <a href="/en-US/docs/Mozilla/Developer_guide/How_to_Submit_a_Patch">作成したパッチを提出する</a> こともできます。</p>
+
+<h2 id="Now_what">Now what?</h2>
+
+<p>Now that you've successfully built Firefox in your brand-new VM, you might be wondering what to do next.  A great way to start is to pick a small, easy-to-fix bug and contribute code that patches it. Imagine how awesome it is to have code you wrote shipped to half a billion users all over the world!</p>
+
+<p>Here are some links to help you find something you can do to make Firefox better:</p>
+
+<ul>
+ <li><a href="http://codefirefox.com/">Code Firefox Lessons</a> provides a number of video tutorials for new Firefox contributors.</li>
+ <li><a href="http://www.joshmatthews.net/bugsahoy/">Bugs Ahoy!</a> (a tool to help you find bugs that might interest you).</li>
+ <li><a href="http://firefox-dev.tools/">firefox-dev.tools</a> (a tool to help you find bugs related to the <a href="/en-US/docs/Tools">Firefox Developer Tools</a> that might interest you).</li>
+ <li><a href="/en-US/docs/Mozilla/Developer_guide">Developer guide</a> (documentation about developing on and for Mozilla projects).</li>
+ <li><a class="external" href="http://www.joshmatthews.net/bugsahoy/" title="http://www.joshmatthews.net/bugsahoy/">Mentored bugs</a> have a mentor who commits to helping you every step of the way. Generally, there should be enough information in the bug to get started. Whenever you need help, contact the mentor over Matrix, in the bug itself, or by email. When you've completed the bug, they will help you get your code into the tree.</li>
+ <li><a class="link-https" href="https://bugzil.la/sw:%22[good%20first%20bug]%22" title='https://bugzil.la/sw:"[good first bug]"'>"Good" first bugs</a> may be a little stale, but at some point in their lives we considered that they would be a good first step for newcomers to Mozilla. We are in the process of migrating these bugs to mentored bugs, but more recent "good first bugs" may be good starting points if there are no appropriate mentored bugs.</li>
+ <li><a href="/en-US/docs/Mozilla/Developer_guide/How_to_Submit_a_Patch">How to submit a patch</a> (information about how to create a patch file and get it submitted into the source code).</li>
+</ul>
+
+<p>You can also ask your getting-started questions in {{IRCLink("introduction")}}, and any Firefox development questions in {{IRCLink("developers")}}.</p>
diff --git a/files/ja/mozilla/firefox/australis_add-on_compat/index.html b/files/ja/mozilla/firefox/australis_add-on_compat/index.html
new file mode 100644
index 0000000000..fb7e362c1e
--- /dev/null
+++ b/files/ja/mozilla/firefox/australis_add-on_compat/index.html
@@ -0,0 +1,130 @@
+---
+title: Australis とアドオンの互換性
+slug: Mozilla/Firefox/Australis_add-on_compat
+tags:
+ - Extensions
+translation_of: Mozilla/Firefox/Australis_add-on_compat
+---
+<div>{{FirefoxSidebar}}</div>
+
+<h2 id="拡張機能の変更">拡張機能の変更</h2>
+
+<p><strong>We've removed the add-ons toolbar (including the status-bar).</strong> You should no longer rely on it existing. There is a shim in place that will attempt to migrate your icons, but it may not work, or only work partially. The best solution is to change the placement of your button. This may also be a good time to wonder if your add-on really needs a toolbar button to be visible by default for all users. <strong>Add-ons made using the Add-on SDK should not need to worry about this change.</strong></p>
+
+<p><strong>We've removed the application (Firefox) menu.</strong> Instead, there is a <strong>new panel-based menu</strong> that can be opened with a button on the far side of the navigation toolbar. Toolbar items can be dragged in and out from this panel.</p>
+
+<p>Some of the default toolbarbutton IDs have changed, we have added some new ones, and the sequence of back/forward button, URL bar, stop/reload button, will no longer be customizable. This also means users cannot add new (add-on-provided) buttons inbetween these items using the normal customization flow.</p>
+
+<p>The standalone stop reload buttons have been removed.</p>
+
+<p>We're changing the way toolbar buttons are added. While we've attempted to maintain some measure of backward compatibility, the following are deprecated and will be removed in the near future: the <code>toolbar.insertItem</code> method, the <code>toolbar.currentSet</code> property, and the <code>currentset</code> attribute on toolbars. If possible, please stop relying on them. Instead, you should use the <a href="http://mxr.mozilla.org/projects-central/source/ux/browser/components/customizableui/src/CustomizableUI.jsm">CustomizableUI</a> module.</p>
+
+<p>CustomizableUI introduces a new API to insert, move and remove toolbar buttons and other toolbar items, as well as creating panels that are anchored to these toolbarbuttons. We believe this will be simpler and more powerful than the previous mix of APIs.</p>
+
+<p>Because of the new customization APIs, your toolbar buttons may not be direct children of a XUL <code>&lt;toolbar&gt;</code>; they might still be in a toolbar, or they might be in the "customization target" of a toolbar (a descendant node in a toolbar), or they might be in the new menu panel. The customization target of any toolbar (whether the target is a child node, or the toolbar itself) via <code>toolbar.customizationTarget.</code></p>
+
+<p><strong>Icon sizes in toolbars have changed</strong>, and you should ideally provide a larger icon for your add-on's buttons, should they exist, for use in the menu panel and customization area (palette). The new icon sizes are the same on all platforms and are:</p>
+
+<ul>
+ <li>Toolbars:<br>
+ <strong>16px</strong> (32px @2dppx) without padding.<br>
+ Internal icons on the navbar use 18px. For add-ons, by default the padding is set up so it should work well if add-ons specify an icon of size 16px.</li>
+ <li>Menu panel/Customization area (palette):<br>
+ <strong>32px</strong> (64px @2dppx)<br>
+ Please note that smaller icons will be <em>upscaled</em>.</li>
+</ul>
+
+<p>When in the customization area (palette), the button will be wrapped in a toolbarpaletteitem with a <code>place</code> attribute set to <code>palette</code>. Putting it all together, your updated CSS might look like this:</p>
+
+<pre class="brush: css notranslate">#my-addon-button {
+    list-style-image: url(icon16.png);
+}
+#my-addon-button[cui-areatype="menu-panel"],
+toolbarpaletteitem[place="palette"] &gt; #my-addon-button {
+    list-style-image: url(icon32.png);
+}
+
+/* High-resolution displays */
+@media (min-resolution: 2dppx) {
+ #my-addon-button {
+     list-style-image: url(icon32.png);
+ }
+ #my-addon-button[cui-areatype="menu-panel"],
+ toolbarpaletteitem[place="palette"] &gt; #my-addon-button {
+     list-style-image: url(icon64.png);
+ }
+}
+</pre>
+
+<p>Tab markup and styling have changed. If your add-on affects the tabstrip or provides alternative visualizations of the tabstrip, changes tab colors, or anything else related to the tabstrip, you may want to verify that it still works.</p>
+
+<p>The navigation toolbar is always visible (except in popup windows where a reduced navigation toolbar with the urlbar is visible) and can no longer be hidden e.g. for update pages or in-content UI. The related Add-on SDK module <a href="/en-US/Add-ons/SDK/High-Level_APIs/addon-page">addon-page</a> has been removed as it no longer has any effect.</p>
+
+<p>Items in the navigation toolbar can be overflowed if the browser window is made too small. Items in the toolbar will be moved into the new "overflow panel" when this occurs. The overflow panel is anchored to a button that appears in the navigation toolbar when one or more items are overflowed. If your item should never be overflowed, set an <code>overflows</code> attribute to <code>false</code> on the item. The <code>urlbar-container</code> is not overflowable by default, for example. Items that are overflowed have the <code>overflowedItem</code> attribute set to <code>true</code>.</p>
+
+<p>The menu panel uses a 3-column grid layout. Items should either fit in a single grid column (<code>toolbarbutton</code>s will be styled to do so automatically) or span the entire width of the panel if they wouldn't fit in a single grid column, e.g. for wide <code>toolbaritem</code>s. In order to have the latter work correctly, you should use the <code>panel-wide-item</code> class on your <code>toolbaritem</code>.</p>
+
+<p>If your add-on provides a <code>&lt;toolbarbutton type="menu"/&gt;</code> or <code>&lt;toolbarbutton type="menu-button"/&gt;</code>, consider moving to a subview-based design, which will work much better in the menu panel. There's some <a href="/en-US/docs/Mozilla/JavaScript_code_modules/CustomizableUI.jsm">documentation</a> you can look at, as well as <a href="http://hg.mozilla.org/projects/ux/annotate/8b514254b168/browser/components/customizableui/src/CustomizableWidgets.jsm#l56">the implementation of the history widget</a>.</p>
+
+<p>If your add-on provides a simple <code>toolbarbutton</code> then it should automatically be styled correctly in the menu panel, overflow panel and palette. If it provides a <code>toolbaritem</code> it is likely you will need to do additional work to make it look nice in places other than a toolbar.</p>
+
+<p>All items will have context menus allowing users to move the items between the palette, panel and the navigation toolbar. If your add-on uses the contextmenu itself, we will not override or change it (see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=892463">this bug</a> for a lengthy discussion as to why). You are requested, however, to update your menus yourself so that users do have the possibility of using these options even for your add-on's button.</p>
+
+<p>The <code>class</code> attribute on tab close buttons has been changed. Extensions shouldn't be relying on the class attribute value since it is a list of tokens and should instead look for the <code>anonid </code>attribute with value "<code>close-button</code>".</p>
+
+<p>The <code>close-icon</code> class now works cross-platform to provide a close icon with a default, hover, and active state. Previously, this wasn't available on Linux and the GTK close icon (gtk-close) was used instead.</p>
+
+<p>The BrowserToolboxCustomizeDone, BrowserToolboxCustomizeChange, and BrowserCustomizeToolbar global window functions have been removed. <a href="/en-US/docs/XUL/Toolbars/Toolbar_customization_events">The customize events fired from the toolbox</a> are now the preferred mechanism for hooking new logic into the customization feature.</p>
+
+<h3 id="Add-on_SDK_Australis_APIs">Add-on SDK Australis APIs</h3>
+
+<p>If you're using the Add-on SDK, there are several new APIs for building your add-on's user interface in Australis. See the <a href="/en-US/Add-ons/SDK/High-Level_APIs/ui">reference documentation</a>. Also note that the <code><a href="/en-US/Add-ons/SDK/High-Level_APIs/widget">widget</a></code> module has been deprecated in favor of the new APIs.</p>
+
+<h2 id="Changes_for_themes">Changes for themes</h2>
+
+<p>We've changed the tab markup. If you style these differently, you'll need to check whether it still works.</p>
+
+<p>We'll be drawing tabs in the titlebar and on top, on all platforms (currently implemented on Windows and OS X), except when not showing tabs at all (in popup windows).</p>
+
+<p>Support for small icons mode as well as text and icons mode have been removed.</p>
+
+<p>We've changed the default iconsets, and there are new icon sizes for the menupanel. If you're building on the default theme with new icons, you'll need to rearrange your icons in your Toolbar icon files. In both this case and if you supply a complete theme, you will also need to provide icons for the menu panel. The new icon sizes are the same on all platforms and are:</p>
+
+<ul>
+ <li>Toolbars:<br>
+ <strong>16px</strong> (32px @2dppx) without padding.<br>
+ Internal icons on the navbar use 18px. For add-ons, by default the padding is set up so it should work well if add-ons specify an icon of size 16px.</li>
+ <li>Menu panel/Customization area (palette):<br>
+ <strong>32px</strong> (64px @2dppx)<br>
+ Please note that smaller icons will be <em>upscaled</em>.</li>
+</ul>
+
+<p>We've removed the add-on bar, but have a shim in place to migrate icons to other places. Any styles pertaining to should be removed so as not to disturb the migration work.</p>
+
+<p>We've changed a few toolbarbutton IDs, such as those for the bookmark and history buttons. We also added new ones.</p>
+
+<p>The application (Firefox) menu has been removed.</p>
+
+<p>The back, forward, stop and refresh buttons will no longer be movable. They will always remain in their current position next to the urlbar. Your CSS rules can probably be simplified now that this is the case.</p>
+
+<p>The navigation toolbar can no longer be hidden e.g. for update pages or in-content UI.<br>
+  </p>
+
+<h2 id="Known_issues_related_to_add-ons">Known issues related to add-ons</h2>
+
+<ul>
+ <li>Add-ons that have copied their toolbarbutton-insertion code from Adblock Plus hide their toolbarbutton icon. They keep track of their insertion point by themselves. Even though our compatibility shims correctly insert these button initially, their detection code decides it is not in a toolbar (it is in fact in a customization target inside a toolbar, see above) and removes the icon on restart. This has been fixed in Adblock Plus but add-ons using similar code patterns might still be affected.</li>
+ <li>Many add-ons check whether their button is in the toolbox (rather than in a toolbar or some other visible place) by checking the result of <code>document.getElementById()</code>. This is <strong>no longer enough</strong>. If your button is in the menu panel, it will not be moved there until the menu panel is first shown. Instead, use:<a href="/en-US/docs/Mozilla/JavaScript_code_modules/CustomizableUI.jsm"><code> CustomizableUI.getPlacementOfWidget("mytoolbarbuttonId")</code></a>. This will return <code>null</code> if and only if the widget is in the palette.</li>
+ <li>If a <code>&lt;menulist&gt;</code> element is wrapped inside a toolbaritem, popping up the <code>&lt;menulist&gt;</code> closes the new menu panel. This issue is being tracked <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=964944">here</a>.</li>
+ <li>Add-ons that automatically re-add their icons to the add-on bar when removed will need to fix their own insertion code to not do that.</li>
+ <li>Elements inserted in the statusbar element or the add-on bar itself will not be shown. This can only be fixed by the add-on authors, who need to update their add-on to use toolbaritems instead of statuspanels, and insert into a normal toolbar.</li>
+ <li>For toolbaritems and toolbarbuttons inserted into the add-on bar, we will attempt to migrate them to a visible toolbar automatically <strong>if</strong> the add-on bar was visible in the user's profile before migrating to Australis. However, depending on your add-on's code this may or may not work correctly without further code changes on your part.</li>
+ <li>Toolbar buttons of type <code>menu </code>with a <code>orient="horizontal"</code> attribute will not display properly in the menu panel. This attribute should probably be avoided altogether.</li>
+</ul>
+
+<h2 id="See_Also">See Also</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Mozilla/JavaScript_code_modules/CustomizableUI.jsm">CustomizableUI.jsm</a></li>
+ <li><a href="/en-US/Firefox/Releases/29">Firefox 29 for developers</a></li>
+</ul>
diff --git a/files/ja/mozilla/firefox/developer_edition/index.html b/files/ja/mozilla/firefox/developer_edition/index.html
new file mode 100644
index 0000000000..1f1c73209e
--- /dev/null
+++ b/files/ja/mozilla/firefox/developer_edition/index.html
@@ -0,0 +1,34 @@
+---
+title: Developer Edition
+slug: Mozilla/Firefox/Developer_Edition
+tags:
+ - Beta
+ - Bugs
+ - Developer Edition
+ - Latest
+translation_of: Mozilla/Firefox/Developer_Edition
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p>Firefox Developer Edition は、ウェブ開発者向けの Firefox のバージョンです。以下の内容が含まれます:</p>
+
+<ul>
+ <li><strong>最新の Firefox 機能</strong>: Firefox Developer Edition は古い Aurora チャンネルを置き換えます
+
+ <ul>
+ <li>新リリースには、Nightly ビルドを通じて安定化された機能が含まれます。</li>
+ <li>新機能がリリースされる 6 週間前に、Firefox Beta チャンネルに入ります。</li>
+ <li>新機能は、Firefox のリリース版に登場する前に 12 週間かけて安定化されます。</li>
+ </ul>
+ </li>
+ <li><strong>開発者プロファイルの分離</strong>: Developer Edition を Firefox のリリース版やベータ版と別に簡単に実行できます。</li>
+ <li><strong>実験的な開発者ツール</strong>: Developer Edition には、まだリリースに向けた準備が整っていない実験的なツールも含まれます。</li>
+ <li><strong>ウェブ開発者向けの設定</strong>: 各種既定の設定値もウェブ開発者向けに変更されています。例えば、Developer Edition では、クロームデバッグやリモートデバッグが初期設定で有効となっています。</li>
+ <li><strong>明確なテーマ</strong>: 開発者ツールへ素早くアクセスできるようになっています。</li>
+</ul>
+
+<p><a href="/ja/docs/Mozilla/Firefox/Releases" style="float: left; margin: 0 30px 20px 30px; padding: 10px; text-align: center; border-radius: 4px; display: inline-block; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Developer Edition の新機能</a></p>
+
+<p><a href="https://www.mozilla.org/ja/firefox/developer/" style="float: right; margin: 0 30px 20px 30px; padding: 10px; text-align: center; border-radius: 4px; display: inline-block; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Developer Edition をダウンロード</a></p>
+
+<p> </p>
diff --git a/files/ja/mozilla/firefox/developer_edition/reverting/index.html b/files/ja/mozilla/firefox/developer_edition/reverting/index.html
new file mode 100644
index 0000000000..c9f86b8e6f
--- /dev/null
+++ b/files/ja/mozilla/firefox/developer_edition/reverting/index.html
@@ -0,0 +1,25 @@
+---
+title: Reverting
+slug: Mozilla/Firefox/Developer_Edition/Reverting
+translation_of: Mozilla/Firefox/Developer_Edition/Reverting
+---
+<div>{{FirefoxSidebar}}</div>
+
+<h2 id="Developer_Edition_のテーマを元に戻す">Developer Edition のテーマを元に戻す</h2>
+
+<p>Developer Editionを使用したいが、FirefoxとFirefox Betaで使用されている 'Australis'テーマを使用したい場合は、通常のFirefoxテーマに切り替えることができます。「カスタマイズ」パネルを開き、「テーマ」をクリックし、「デフォルト」というラベルのテーマを選択します。</p>
+
+<p>{{EmbedYouTube("oiHt8T1Liyk")}}</p>
+
+<p>または、URLバーに "about:addons" と入力して「Appearance」を選択し、そこからテーマを切り替えます。</p>
+
+<h2 id="Firefox_Aurora_に戻す">Firefox Aurora に戻す</h2>
+
+<p>Firefox Developer Editionでベータ版以前の機能をすべて使いたいが、他の変更を望まない場合は、古いFirefox Auroraのようなものに戻すことができます。これにより、アップグレード前のプロファイルとセッションデータも復元されます。それは2段階のプロセスです。この手順をこの順序で実行する必要があります。</p>
+
+<ol>
+ <li>Developer EditionのPreferencesページを開いて、「Firefox Developer EditionとFirefoxを同時に実行する」をオフにします。 ブラウザを再起動するよう求められます</li>
+ <li>再起動後、上記の「Developer Editionテーマを元に戻す」で説明したように、開発者エディションのテーマを元に戻すことができます</li>
+</ol>
+
+<p>{{EmbedYouTube("8rEJn_hATE8")}}</p>
diff --git a/files/ja/mozilla/firefox/enterprise_deployment_before_60/index.html b/files/ja/mozilla/firefox/enterprise_deployment_before_60/index.html
new file mode 100644
index 0000000000..262254fcf7
--- /dev/null
+++ b/files/ja/mozilla/firefox/enterprise_deployment_before_60/index.html
@@ -0,0 +1,210 @@
+---
+title: エンタープライズ環境におけるFirefoxのデプロイ(Firefox 60 ESR 以前)
+slug: Mozilla/Firefox/Enterprise_deployment_before_60
+tags:
+ - Firefox
+ - エンタープライズ
+ - デプロイ
+ - 管理者向け
+translation_of: Mozilla/Firefox/Enterprise_deployment_before_60
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p>このページでは、Mozilla Firefox を Windows および macOS コンピュータ上でエンタープライズ設定で管理するプロセスを、最初から最後までドキュメント化しようとしています。 ご不明な点がございましたら、エンタープライズワーキンググループメーリングリスト(<a href="https://mail.mozilla.org/listinfo/enterprise">enterprise@mozilla.org</a>)にメールをお送りください。 さらに、<a href="https://mail.mozilla.org/listinfo/enterprise">リストに登録</a>し、進行中のディスカッションに参加してください。</p>
+
+<div class="note"><strong>注</strong>:この記事では、Firefox 60 ESR 以前の Firefox のバージョンについて説明します。 Firefox 60以降でエンタープライズ環境用にデプロイするには、<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Enterprise_deployment">エンタープライズ環境での Firefox のデプロイ</a>を参照してください。</div>
+
+<h2 id="さまざまな_Firefox_を選択する">さまざまな Firefox を選択する</h2>
+
+<h3 id="Rapid_Release_(RR)">Rapid Release (RR)</h3>
+
+<p>Mozilla publishes a new version with incremented main version number, new features, and bug fixes every six weeks (and, as needed, additional security releases in between). On the day a major version is released, in most cases (see below for an exception) Mozilla stops providing bug fixes for the previous one.</p>
+
+<p>For the planned dates for upcoming releases, see the column 'release date' in the <a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates">Future branch dates</a> table in the Mozilla wiki.</p>
+
+<h3 id="Extended_Support_Release_(ESR)">Extended Support Release (ESR)</h3>
+
+<p>Every seventh major version of Firefox is declared an Extended Support Release. These versions get serious bugs fixed in minor versions, for 54 weeks (nine of the six-week release cycles). There is an overlap of 12 weeks (two release cycles) between two successive ESR releases, during which both ESR releases get bug fixes.</p>
+
+<p>The major ESR releases so far have been versions 10, 17, 24, 31, 38, 45 and 52. This cadence will be proken according to information in Devember 2017, and <code>60</code> will be the next ESR</p>
+
+<p>Many enterprises and other organizations with centrally-managed computing environments prefer to use the ESR rather than the RR versions, because then they need to test for compatibility only every 42 weeks instead of every 6 weeks. Also if there are any issues, they have 12 weeks additional time (the overlap between two ESR releases) to find a solution (in addition to the 6 weeks that they can get by testing the beta version).</p>
+
+<p>Note that there can be undesired side effects if you switch from a RR version to an earlier ESR version, for example from version 26-RR back to 24.2-ESR, even if they were published on the same day. The reason for this is that often new features are built into the RR versions for test purposes before they are finished, but disabled by preference settings. Eventually Mozilla decides to toggle the feature on in a certain version. If you then downgrade to a previous version, all users keep their latest settings in their profile directories. Thus the option is now switched on, although the feature does not yet fully work in that version. If you want to switch from RR to ESR, you should do so when a new ESR release comes out.</p>
+
+<h2 id="インストール">インストール</h2>
+
+<ol>
+ <li>Get the full, redistributable installer from<br>
+ <a href="http://www.mozilla.org/firefox/all/">http://www.mozilla.org/firefox/all/</a> (RR)<br>
+ or<br>
+ <a href="https://www.mozilla.org/firefox/organizations/all.html">https://www.mozilla.org/firefox/organizations/all.html</a> (ESR)<br>
+ rather than the "stub" or "downloader" that you get by clicking the "Download" button.</li>
+ <li>Install using the software distribution method of your choice.<br>
+ The command line option for a silent install is <code>-ms</code>. </li>
+ <li>Optionally you can specify an INI file, for example to disable the placement of shortcuts and the installation of the MaintenanceService; see <a href="https://wiki.mozilla.org/Installer:Command_Line_Arguments">Installer Command Line Arguments</a>.</li>
+</ol>
+
+<h2 id="構成・設定">構成・設定</h2>
+
+<ol>
+ <li>Find the Firefox <strong>program directory</strong> where the Firefox executable is located.<br>
+ For example:
+ <ul>
+ <li>on <strong>Windows</strong> this is typically either:
+
+ <ul>
+ <li><code>C:\Program Files\Mozilla Firefox </code></li>
+ <li><strong>or</strong> <code>C:\Program Files (x86)\Mozilla Firefox</code></li>
+ </ul>
+ </li>
+ <li>on <strong>macOS</strong> it is typically:
+ <ul>
+ <li><code>/Applications/Firefox.app/Contents/MacOS</code></li>
+ </ul>
+ </li>
+ </ul>
+ If you are specifying a configuration INI file and have set <strong>InstallDirectoryName</strong> or <strong>InstallDirectoryPath</strong>, then use that path.<br>
+ Subfolders mentioned below are relative to this program directory.</li>
+ <li>Create a JavaScript file that instructs to use a administrative <strong>config file</strong> at startup.<br>
+ For best results, the filename should be early in the alphabet, for example; <strong><code style="white-space: nowrap;">00_admin-prefs.js</code></strong><br>
+ By convention this file is named <strong><code>autoconfig.js</code></strong>, but other filenames will work.<br>
+ This file should be put inside: <small>(see <a href="#Changes_Over_Time">Changes Over Time</a>)</small>
+ <ul>
+ <li>on <strong>Windows</strong>:
+ <ul>
+ <li><code>defaults\pref</code></li>
+ </ul>
+ </li>
+ <li>on <strong>Mac</strong>:
+ <ul>
+ <li><code>Firefox.app/Contents/Resources/defaults/pref</code></li>
+ </ul>
+ </li>
+ <li>on <strong>Linux</strong>:
+ <ol>
+ <li>Formerly:
+ <ul>
+ <li><code>defaults/pref</code><br>
+ <small>(Still working in Firefox 60.0a1)</small></li>
+ </ul>
+ </li>
+ <li>Presently:
+ <ul>
+ <li><code>browser/defaults/preferences</code></li>
+ </ul>
+ </li>
+ </ol>
+ </li>
+ </ul>
+
+ <p>This <code><strong>autoconfig.js</strong></code> file <strong>must</strong> set these preferences:</p>
+
+ <pre class="brush: js">// Any comment. You <strong>must</strong> start the file with a single-line comment!
+pref("general.config.filename", "mozilla.cfg");
+pref("general.config.obscure_value", 0);</pre>
+
+ <div class="warning">
+ <p>The first line of the <code><strong>autoconfig.js</strong></code> and <code><strong>mozilla.cfg</strong></code> is ignored.  The line shouldn't contain any configuration, nor multiline comment (<code>/*...*/</code>) without closing "<code>*/</code>".</p>
+ </div>
+ </li>
+ <li>Create a <code>.cfg</code> file in the Firefox program directory. By convention, <strong><code>mozilla.cfg</code></strong><code>,</code> but it can be any file name really. It just <strong>has to match</strong> what is specified in <strong><code>general.config.filename</code></strong> preference above. <strong>Skip or comment out the first line</strong>, then start setting your preferences. To learn what preferences to set, go to about:config on a copy of Firefox that you have configured correctly and look for preferences that are "user set", or see the example below. Any preference that appears in about:config (and a few that don't) can be set using one of the following functions:
+ <dl>
+ <dt><strong>pref </strong></dt>
+ <dd>sets the preference as if a user had set it, every time you start the browser. So users can make changes, but they will be erased on restart. If you set a particular preference this way, it shows up in about:config as "user set". </dd>
+ <dt><strong>defaultPref</strong></dt>
+ <dd>is used to alter the default value, though users can set it normally and their changes will be saved between sessions. If preferences are reset to default through the GUI or some other method, this is what they will go back to. Appears in about:config as "default". </dd>
+ <dt><strong>lockPref</strong></dt>
+ <dd>is used to lock preferences so they cannot be changed through the GUI or about:config. In many cases the GUI will change to reflect this, graying out or removing options. Appears in about:config as "locked". <span class="author-g-fer323ku83ypu55t">Some config items require <strong>lockPref</strong> to be set, such as <strong>app.update.enabled</strong>. It will not work if it set with just <strong>pref</strong>.</span></dd>
+ <dt><span class="author-g-fer323ku83ypu55t">clearPref</span></dt>
+ <dd><span class="author-g-fer323ku83ypu55t">can be used to "blank" certain preferences. This can be useful e.g. to disable functions that rely on comparing version numbers. </span></dd>
+ </dl>
+
+ <div class="warning">
+ <p>The first line of the <code><strong>autoconfig.js</strong></code> and <code><strong>mozilla.cfg</strong></code> is ignored.  The line shouldn't contain any configuration, nor multiline comment (<code>/*...*/</code>) without closing "<code>*/</code>".</p>
+ </div>
+ </li>
+</ol>
+
+<p>See <a href="http://mike.kaply.com/2012/03/16/customizing-firefox-autoconfig-files/">Customizing Firefox autoconfig files</a> and <a href="http://mike.kaply.com/2012/03/20/customizing-firefox-autoconfig-files-continued/">Customizing Firefox autoconfig files continued</a> for more detail. For fancier stuff like disabling UI elements, you may want to use the <a href="http://mike.kaply.com/cck2/">CCK2</a> extension.</p>
+
+<h3 id="Example_configuration_file">Example configuration file</h3>
+
+<p>You may see references to "complex preferences" that need to be specified in a different way; the default homepage is one, as in the example below. For more info on individual preferences, search the <a href="http://kb.mozillazine.org/Knowledge_Base">Knowledgebase</a>.</p>
+
+<pre class="brush: js">// Any comment. You <strong>must</strong> start the file with a comment!
+
+<span class="brush: js">// Disable updater
+lockPref("app.update.enabled", false);
+// make absolutely sure it is really off
+lockPref("app.update.auto", false);
+lockPref("app.update.mode", 0);
+lockPref("app.update.service.enabled", false);
+
+// Disable Add-ons compatibility checking
+clearPref("extensions.lastAppVersion");
+
+// Don't show 'know your rights' on first run
+pref("browser.rights.3.shown", true);
+
+// Don't show WhatsNew on first run after every update
+pref("browser.startup.homepage_override.mstone","ignore");
+
+// Set default homepage - users can change
+// Requires a complex preference
+</span>defaultPref("browser.startup.homepage","data:text/plain,browser.startup.homepage=http://home.example.com");
+<span class="brush: js">
+// Disable the internal PDF viewer
+pref("pdfjs.disabled", true);
+
+// Disable the flash to javascript converter
+pref("shumway.disabled", true);
+
+// Don't ask to install the Flash plugin
+pref("plugins.notifyMissingFlash", false);
+
+//Disable plugin checking
+lockPref("plugins.hide_infobar_for_outdated_plugin", true);
+clearPref("plugins.update.url");
+
+// Disable health reporter
+lockPref("datareporting.healthreport.service.enabled", false);
+
+// Disable all data upload (Telemetry and FHR)
+lockPref("</span>datareporting.policy.dataSubmissionEnabled<span class="brush: js">", false);
+
+// Disable crash reporter
+lockPref("toolkit.crashreporter.enabled", false);
+Components.classes["@mozilla.org/toolkit/crash-reporter;1"].getService(Components.interfaces.nsICrashReporter).submitReports = false;</span><em> </em>
+</pre>
+
+<h2 id="拡張機能のパッケージング">拡張機能のパッケージング</h2>
+
+<ol>
+ <li>Install the extension on a test machine. Look in <code>about:support</code> under Extensions to find the GUID.   This is absent in: FF 52.5.1 ESR</li>
+ <li>Look in the <a href="https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data">Profile directory</a> (ex: <code>%APPDATA%\Mozilla\Firefox\Profiles</code> on Win7; to find it, click <strong>Show Folder</strong> in <code>about:support</code>), then under "extensions" for the add-on you want. Note whether it is a single .xpi file (basically a zip file) or extracted to a folder with multiple files.</li>
+ <li>Decide how you want to deploy it. The simplest method is to drop the .xpi or folder into the <strong>program directory</strong><code>/distribution/extensions</code>, but this only works for profiles created after the extension is installed. Also, if you manually update firefox by re-installing it, this directory will be deleted, so make sure you re-install the extensions as well. See <a href="http://mike.kaply.com/2012/02/09/integrating-add-ons-into-firefox/">Integrating add-ons into Firefox/</a> for alternative methods.</li>
+</ol>
+
+<p>Also keep in mind: <a href="http://mike.kaply.com/2013/05/03/add-on-scopes-redux/">Add-on scopes redux</a></p>
+
+<h2 id="Changes_Over_Time">Changes Over Time</h2>
+
+<h3 id="Changes_in_Directory_Structure">Changes in Directory Structure</h3>
+
+<p>The directory structure within the program directory has changed twice. When you read descriptions that were written before version 21 came out, you must take these changes into account:</p>
+
+<ul>
+ <li>In version 14 some of the pref settings stopped working when they were in a file in directory <code>defaults/pref</code>. The fix was to create a directory <code>defaults/preferences</code> and put them there.</li>
+ <li>In version 21 the new directory named <code>browser</code> was created. The file <code>override.ini</code> and the directories <code>defaults/preferences</code>, <code>defaults/profile</code>, <code>extensions</code>, <code>plugins</code>, and <code>searchplugins</code> were moved there. Plug-ins in the directory <code>plugins</code> can be reactivated by setting the preference <code>plugins.load_appdir_plugins</code> to <strong>true</strong>.</li>
+</ul>
+
+<p>Custom settings in <code>defaults/pref</code> that worked in a version of Firefox before 21 may fail in a current or future version. If this happens, copy or move your customized files into the corresponding directories in <code>browser/defaults/preferences</code> and redeploy.</p>
+
+<h3 id="Mac_Directory_Change">Mac Directory Change</h3>
+
+<p>Due to Apple's stricter approach to software signing, as of about version 35 or so configuration files should now be placed relative to <code>/Applications/Firefox.app/Contents/Resources </code>(so <code>mozilla.cfg</code> should go there, and <code>autoconfig.js </code>under <code>/Applications/Firefox.app/Contents/Resources/defaults/pref</code>.)</p>
+
+<h3 id="Changes_in_ESR_24_and_newer_with_Adobe_PDF_Files">Changes in ESR 24 and newer with Adobe PDF Files</h3>
+
+<p>Firefox RR 19.x changed the default viewer for Adobe PDF files to use the internal Firefox viewer.  This change is now in the ESR version as of 24.x, and the setting (on Windows) is changed to use the internal Firefox viewer when upgrading from 17.x, <em>even if an external viewer had already been configured</em>. The name of the Content Type is also changed from <strong>Adobe Acrobat Document</strong> to <strong>Portable Document Format (PDF)</strong>, which makes it difficult to locate via the Tools, Options, Applications tab. To disable this, set <code>pdfjs.disabled</code> to true as in the example file above.</p>
diff --git a/files/ja/mozilla/firefox/experimental_features/index.html b/files/ja/mozilla/firefox/experimental_features/index.html
new file mode 100644
index 0000000000..5e268c9e55
--- /dev/null
+++ b/files/ja/mozilla/firefox/experimental_features/index.html
@@ -0,0 +1,637 @@
+---
+title: Firefoxにおける試験的機能
+slug: Mozilla/Firefox/Experimental_features
+translation_of: Mozilla/Firefox/Experimental_features
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">新しい機能をテストするために、Mozilla は Firefox ブラウザのテスト版である <a href="https://nightly.mozilla.org/">Firefox Nightly</a> を毎日公開しています。提案されたWebプラットフォーム標準の実装など、実験的な機能が利用可能です。このページには、必要に応じて Nightly 版の Firefox の機能と、Firefox の起動方法に関する情報が掲載されています。これらの機能がリリースされる前に、Webサイトとアプリケーションをテストして、最新のWebテクノロジ機能ですべてが機能することを確認できます。</p>
+
+<p>これらの試験的機能をテストするためには、 <a href="https://nightly.mozilla.org/">Firefox Nightly</a> または <a href="https://www.mozilla.org/en-US/firefox/developer/">Firefox Developer Edition</a>をダウンロードしインストールしておくことが必要です。</p>
+
+<h2 id="HTML">HTML</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Feature</th>
+ <th scope="col">Firefox Nightly</th>
+ <th scope="col">Firefox Developer Edition</th>
+ <th scope="col">Firefox Beta</th>
+ <th scope="col">Firefox Release</th>
+ <th scope="col">Preference</th>
+ </tr>
+ <tr>
+ <td><strong>{{HTMLElement("dialog")}}</strong><br>
+ Dialog element including DOM APIs to interact with it. Implementation of modal dialogs and accessibility still missing.</td>
+ <td>Disabled<br>
+ <sub>(available since 53)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 53)</sub></td>
+ <td>---</td>
+ <td>---</td>
+ <td><code>dom.dialog_element.enabled</code></td>
+ </tr>
+ </thead>
+</table>
+
+<h2 id="CSS">CSS</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Feature</th>
+ <th scope="col">Firefox Nightly</th>
+ <th scope="col">Firefox Developer Edition</th>
+ <th scope="col">Firefox Beta</th>
+ <th scope="col">Firefox Release</th>
+ <th scope="col">Preference</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><strong>Subgrids</strong></td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td><code>layout.css.grid-template-subgrid-value.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong>Display stray control characters in CSS as hex boxes</strong><br>
+ This feature renders control characters (Unicode category Cc) other than <em>tab</em> (<code>U+0009</code>), <em>line feed</em> (<code>U+000A</code>), <em>form feed</em> (<code>U+000C</code>), and <em>carriage return</em> (<code>U+000D</code>) as a hexbox when they are not expected.</td>
+ <td>43</td>
+ <td>43</td>
+ <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1329613">Disabled</a></td>
+ <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1329613">Disabled</a></td>
+ <td><code>layout.css.control-characters.enabled</code> or <code>layout.css.control-characters.visible</code></td>
+ </tr>
+ <tr>
+ <td><strong>Positioned CSS Masks</strong><br>
+ A subset of CSS Masks that includes <a href="/en-US/docs/Web/CSS/CSS_Masks">longhand properties of CSS Masks</a>, as well as a change in the shorthand property</td>
+ <td>51</td>
+ <td>51</td>
+ <td>53</td>
+ <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1251161">Disabled</a></td>
+ <td>Controlled by a compile flag (MOZ_ENABLE_MASK_AS_SHORTHAND).</td>
+ </tr>
+ <tr>
+ <td>
+ <p><strong>The</strong> <strong><code>font-variation-settings</code> property</strong><br>
+ The {{cssxref("font-variation-settings")}} provides low-level control over OpenType or TrueType font typographic features, by specifying the four letter axis names of the features you want to vary, along with their variation values.</p>
+ </td>
+ <td>Disabled<br>
+ <sub>(available since 53)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 53)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 53)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 53)</sub></td>
+ <td>
+ <p><code>layout.css.font-variations.enabled</code><br>
+ Functions only in Mac OS Sierra (and later).<br>
+ <br>
+ For the downloadable fonts on axis-praxis, you also need <code>gfx.downloadable_fonts.keep_variation_tables</code> (in Firefox 54 and later)</p>
+ </td>
+ </tr>
+ <tr>
+ <td><strong>The <code>touch-action</code> CSS property</strong><br>
+ The {{cssxref("touch-action")}} CSS property is part of the {{SpecName("Pointer Events")}} specification and allows you to specify how and in what way the user is able to manipulate an object by touch.</td>
+ <td>50</td>
+ <td>—</td>
+ <td>—</td>
+ <td>—</td>
+ <td><code>layout.css.touch_action.enabled</code></td>
+ </tr>
+ <tr id="shape-outside">
+ <td>
+ <p><strong>The <code>shape-outside</code> CSS property</strong><br>
+ The {{cssxref("shape-outside")}} CSS property is part of the {{SpecName("CSS Shapes")}} specification and allows you to specify a float area causing inline contents to wrap around a shape.</p>
+
+ <p>Firefox currently implements the <code>&lt;shape-box&gt;</code> values ({{bug(1309467)}}) as well as the <code>circle()</code> ({{bug(1311244)}}), <code>ellipse()</code> ({{bug(1326406)}}), and <code>polygon()</code> ({{bug(1326409)}}) functions. {{cssxref("shape-outside")}} is animatable since Firefox 57 ({{bug(1289049)}}).</p>
+ </td>
+ <td>Disabled<br>
+ <sub>(available since 53)</sub></td>
+ <td>—</td>
+ <td>—</td>
+ <td>—</td>
+ <td><code>layout.css.shape-outside.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong>The <code>contain</code> CSS property</strong><br>
+ The {{cssxref("contain")}} CSS property is part of the {{SpecName("CSS Containment")}} specification and allows you to indicate that an element and its contents are independent of the rest of the document tree, allowing {{Glossary("User agent", "user agents")}} to optimize the rendering of a page.</td>
+ <td>Disabled<br>
+ <sub>(available since 45)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 45)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 45)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 45)</sub></td>
+ <td><code>layout.css.contain.enabled</code></td>
+ </tr>
+ <tr id="column-span">
+ <td>
+ <p><strong>The <code>column-span</code> CSS property</strong><br>
+ The {{cssxref("column-span")}} CSS property is part of the {{SpecName("CSS3 Multicol")}} specification and allows you to specify how many columns an element spans across.</p>
+
+ <p>Firefox currently only parses the property ({{bug(1339298)}}), it's not actually implemented yet ({{bug(616436)}}).</p>
+ </td>
+ <td>Disabled<br>
+ <sub>(recognized since 55, but not implemented yet)</sub></td>
+ <td>—</td>
+ <td>—</td>
+ <td>—</td>
+ <td><code>layout.css.column-span.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong>The <code>frames()</code> timing function</strong><br>
+ See <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/single-transition-timing-function#The_frames()_class_of_timing-functions">The frames() class of timing-functions</a> for more details.</td>
+ <td>Enabled</td>
+ <td><sub>N/A</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 55)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 55)</sub></td>
+ <td>None</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="JavaScript">JavaScript</h2>
+
+<p id="ECMAScript_2016">See also <a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_Next_support_in_Mozilla">ECMAScript Next support</a> for implemented features of ECMAScript 2016 and later, that are not experimental and thus available without preferences in Firefox Release.</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Feature</th>
+ <th scope="col">Firefox Nightly</th>
+ <th scope="col">Firefox Developer Edition</th>
+ <th scope="col">Firefox Beta</th>
+ <th scope="col">Firefox Release</th>
+ <th scope="col">Preference</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><strong>Additions to the <code>ArrayBuffer</code> object</strong><br>
+ Adds the {{jsxref("ArrayBuffer.transfer()")}} that returns a new <code>ArrayBuffer</code> whose contents have been taken from the <code>oldBuffer</code>'s data (<a href="https://gist.github.com/lukewagner/2735af7eea411e18cf20">spec</a>).</td>
+ <td>36</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><strong>TypedObject objects</strong> (<a href="https://github.com/dslomov-chromium/typed-objects-es7">spec</a>)</td>
+ <td>Enabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/SIMD">SIMD</a> (<a href="https://github.com/johnmccutchan/ecmascript_simd">specification and polyfill</a>)</td>
+ <td>Enabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><strong>ECMAScript modules</strong><br>
+ Allows you to use native ECMAScript modules, for example defining modules with <code>&lt;script type="module"&gt;</code>, defining fallback scripts with <code>&lt;script nomodule&gt;</code>, and <a href="/en-US/docs/Web/JavaScript/Reference/Statements/import">importing</a> code features that have been <a href="/en-US/docs/Web/JavaScript/Reference/Statements/export">exported</a> from modules.</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td><code>dom.moduleScripts.enabled</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="APIs">APIs</h2>
+
+<h3 id="Canvas_WebGL">Canvas &amp; WebGL</h3>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Feature</th>
+ <th scope="col">Firefox Nightly</th>
+ <th scope="col">Firefox Developer Edition</th>
+ <th scope="col">Firefox Beta</th>
+ <th scope="col">Firefox Release</th>
+ <th scope="col">Preference</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><strong><code>WEBGL_debug_renderer_info</code> extension</strong><br>
+ The {{domxref("WEBGL_debug_renderer_info")}} extension allows you to transmit information useful to help debugging problems to the server.</td>
+ <td>42</td>
+ <td>42</td>
+ <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=742798">Disabled</a></td>
+ <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=742798">Disabled</a></td>
+ <td><code>webgl.enable-debug-renderer-info</code></td>
+ </tr>
+ <tr>
+ <td><strong>OffscreenCanvas</strong><br>
+ The {{domxref("OffscreenCanvas")}} interface provides a canvas that can be rendered off screen. It is available in both the window and <a href="/en-US/docs/Web/API/Web_Workers_API">worker</a> contexts.</td>
+ <td>Disabled<br>
+ <sub>(available since 44)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 44)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 44)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 44)</sub></td>
+ <td><code>gfx.offscreencanvas.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong><a href="/en-US/docs/Web/API/Canvas_API/Tutorial/Hit_regions_and_accessibility">Hit regions</a></strong><br>
+ Whether the mouse coordinates are within a particular area on the canvas is a common problem to solve. The hit region API allows you define an area of your canvas and provides another possibility to expose interactive content on a canvas to accessibility tools.</td>
+ <td>Disabled<br>
+ <sub>(available since 30)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 30)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 30)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 30)</sub></td>
+ <td><code>canvas.hitregions.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong><a href="/en-US/docs/Web/API/Streams_API">Streams API</a></strong><br>
+ Allows JavaScript to programmatically access streams of data received over the network and process them as desired by the developer.</td>
+ <td>Disabled<br>
+ <sub>(available since 57)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 57)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 57)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 57)</sub></td>
+ <td><code>dom.streams.enabled</code> and <code>javascript.options.streams</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="DOM">DOM</h3>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Feature</th>
+ <th scope="col">Firefox Nightly</th>
+ <th scope="col">Firefox Developer Edition</th>
+ <th scope="col">Firefox Beta</th>
+ <th scope="col">Firefox Release</th>
+ <th scope="col">Preference</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><strong>WebVR API 1.1 on Mac</strong><br>
+ The <a href="/en-US/docs/Web/API/WebVR_API">WebVR API</a> allows you to control and use virtual reality devices.</td>
+ <td>Enabled</td>
+ <td>Enabled</td>
+ <td>Enabled</td>
+ <td>Disabled</td>
+ <td><code>dom.vr.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong>Gamepad extensions</strong><br>
+ <a href="/en-US/docs/Web/API/Gamepad_API#Experimental_Gamepad_extensions">The Gamepad Extensions</a> provide access to additional functionality such as pose information in the case of WebVR controllers, and haptic actuator control (e.g. controller vibration hardware).</td>
+ <td>Enabled</td>
+ <td>Enabled</td>
+ <td>Enabled</td>
+ <td>Disabled</td>
+ <td><code>dom.gamepad-extensions.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong>FlyWeb</strong><br>
+ <a href="https://flyweb.github.io/">FlyWeb</a> is a project at Mozilla focused on bringing a new set of APIs to the browser for advertising and discovering local-area web servers.</td>
+ <td>51</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td><code>dom.flyweb.enabled</code></td>
+ </tr>
+ <tr>
+ <td><code><strong>HTMLMediaElement.seekToNextFrame()</strong></code><br>
+ Part of an experimentation process around support non-real-time access to media for tasks including filtering, editing, and so forth, the {{domxref("HTMLMediaElement.seekToNextFrame()")}} advances the the current play position to the next frame in the media.</td>
+ <td>49<br>
+ <sub>(Fundamental update in version 50)</sub></td>
+ <td>49<br>
+ <sub>(Fundamental update in version 50)</sub></td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td><code>media.seekToNextFrame.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong><code>GeometryUtils.getBoxQuads()</code></strong> ({{bug(917755)}})</td>
+ <td>31</td>
+ <td>31</td>
+ <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107559">Disabled</a></td>
+ <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107559">Disabled</a></td>
+ <td><code>layout.css.getBoxQuads.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong><code>GeometryUtils.convertPointFromNode()</code></strong>,<br>
+ <strong><code>GeometryUtils.RectFromNode()</code></strong>, and<br>
+ <code><strong>GeometryUtils.convertQuadFromNode()</strong></code><br>
+ ({{bug(918189)}})</td>
+ <td>31</td>
+ <td>31</td>
+ <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107559">Disabled</a></td>
+ <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107559">Disabled</a></td>
+ <td><code>layout.css.convertFromNode.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong><code>Node.rootNode</code></strong><br>
+ The {{domxref("Node.rootNode")}} property returns a {{domxref("Node")}} object representing the topmost node in the tree, or the current node if it's the topmost node in the tree.<br>
+ <em>This feature is kept experimental as its naming poses Web compatibility problems. It will be renamed in the future.</em></td>
+ <td>48</td>
+ <td>48</td>
+ <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1269155">Disabled</a></td>
+ <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1269155">Disabled</a></td>
+ <td><code>dom.node.rootNode.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong>WebVTT Regions API</strong><br>
+ <a href="/en-US/docs/Web/API/Web_Video_Text_Tracks_Format">WebVTT</a> regions are parts of the video viewport that provide a rendering area for WebVTT cues. The {{domxref("VTTRegion")}} is the interface exposing the WebVTT cues.<br>
+ <em>This interface is considered to be in flux and isn't therefore activated in any version by default.</em></td>
+ <td>Disabled<br>
+ <sub>(Experimental implementation since version 30)</sub></td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td><code>media.webvtt.regions.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong>Support for audio and video tracks</strong><br>
+ Implements {{domxref("HTMLMediaElement.audioTracks")}} and {{domxref("HTMLMediaElement.videoTracks")}}.<br>
+ <em>Firefox doesn't support multiple audio or video tracks, preventing the most common use cases for these properties to work properly. That's why these properties are not activated by default in any version.</em></td>
+ <td>Disabled<br>
+ <sub>(Experimental implementation since version 33)</sub></td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td><code>media.track.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong>Better value for <code>Event.timestamp</code></strong><br>
+ The property {{domxref("Event.timestamp")}} is returning a {{domxref("DOMHighResTimeStamp")}}, which is now relative to the Unix epoch.</td>
+ <td>32 (Windows)<br>
+ 43 (Linux)</td>
+ <td>32 (Windows)<br>
+ 43 (Linux)</td>
+ <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1026804">Disabled</a></td>
+ <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1026804">Disabled</a></td>
+ <td><code>media.track.enabled</code></td>
+ </tr>
+ <tr id="pointer-events">
+ <td><strong>Pointer Events</strong></td>
+ <td>50</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td><code>dom.w3c_pointer_events.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong>Pointer Events {{domxref("PointerEvent.tangentialPressure")}} and {{domxref("PointerEvent.twist")}}</strong></td>
+ <td>54</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td><code>dom.w3c_pointer_events.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong>Intersection Observer API</strong><br>
+ The {{domxref("Intersection Observer API")}} allows you to configure a callback that is called whenever one item, called a target, intersects either the device viewport or a specified element called.</td>
+ <td>Disabled<br>
+ <sub>(available since 53)</sub></td>
+ <td>—</td>
+ <td>—</td>
+ <td>—</td>
+ <td><code>dom.IntersectionObserver.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong><a href="/en-US/docs/Web/API/Web_Animations_API">Web Animations API: KeyframeEffect and KeyframeEffectReadOnly</a></strong><br>
+ The {{domxref("KeyframEffectReadOnly()", "KeyframeEffectReadOnly.KeyframeEffectReadOnly()")}} and {{domxref("KeyframeEffect()", "KeyframeEffect.KeyframeEffect()")}} constructors can be used to clone existing {{domxref("KeyframeEffectReadOnly")}} object instances by being given the object to clone as their only parameter (see {{bug(1273784)}}.)</td>
+ <td>52</td>
+ <td>52</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>None</td>
+ </tr>
+ <tr>
+ <td><strong>{{domxref("PromiseRejectionEvent")}} and related features</strong><br>
+ Providing a way to monitor and more finely control the rejection of Promises.<br>
+  </td>
+ <td>Disabled<br>
+ <sub>(available since 55)</sub></td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td><code>dom.promise_rejection_events.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong><a href="/en-US/docs/Web/API/Payment_Request_API">Payment Request API</a></strong><br>
+ Provides a web API for handling web-based payments.</td>
+ <td>Disabled<br>
+ <sub>(available since 55)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 55)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 55)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 55)</sub></td>
+ <td><code>dom.payments.request.enabled</code></td>
+ </tr>
+ <tr>
+ <td><strong>Basic Card Payment API</strong><br>
+ Provides dictionaries that define data structures describing card payment types and payment responses for use in the Payment Request API. See {{domxref("BasicCardRequest")}} and {{domxref("BasicCardResponse")}}.</td>
+ <td>Disabled<br>
+ <sub>(available since 56)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 56)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 56)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 56)</sub></td>
+ <td><code>dom.payments.request.enabled</code></td>
+ </tr>
+ <tr>
+ <td>The proprietary {{domxref("Window.content")}} property is now only available to chrome (privileged) code, and not available to the web anymore ({{bug(864845)}}).</td>
+ <td>Enabled<br>
+ <sub>(since 57)</sub></td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="WebRTC">WebRTC</h3>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Feature</th>
+ <th scope="col">Firefox Nightly</th>
+ <th scope="col">Firefox Developer Edition</th>
+ <th scope="col">Firefox Beta</th>
+ <th scope="col">Firefox Release</th>
+ <th scope="col">Preference</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><strong>TCP ICE candidates</strong><br>
+ ICE candidates that use TCP rather than UDP are considered during ICE negotiation.</td>
+ <td>
+ <p>Disabled<br>
+ 41</p>
+
+ <p>Enabled<br>
+ 54</p>
+ </td>
+ <td>Disabled<br>
+ 41</td>
+ <td>Disabled<br>
+ 41</td>
+ <td>Disabled<br>
+ 41</td>
+ <td><code>media.peerconnection.ice.tcp</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="開発者用ツール">開発者用ツール</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Feature</th>
+ <th scope="col">Firefox Nightly</th>
+ <th scope="col">Firefox Developer Edition</th>
+ <th scope="col">Firefox Beta</th>
+ <th scope="col">Firefox Release</th>
+ <th scope="col">Preference</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr id="new-debugger-frontend">
+ <td><strong>Debugger rewrite in HTML</strong></td>
+ <td>52</td>
+ <td>52</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td><code>devtools.debugger.new-debugger-frontend</code></td>
+ </tr>
+ <tr id="new-console-frontend">
+ <td><strong>Console rewrite in HTML</strong></td>
+ <td>52</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td><code>devtools.webconsole.new-frontend-enabled</code></td>
+ </tr>
+ <tr id="performance-tool-options">
+ <td><strong>Experimental Performance tool options</strong><br>
+ Enables options in the UI for JIT optimizations, memory, etc.</td>
+ <td>41</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td><code>devtools.performance.ui.experimental</code></td>
+ </tr>
+ <tr id="layout-side-panel">
+ <td><strong>Layout side panel</strong><br>
+ The Layout side panel allows to inspect and manage different CSS layout types like <a href="/en-US/docs/Web/CSS/CSS_Grid_Layout">CSS Grid Layout</a>.</td>
+ <td>Disabled<br>
+ <sub>(available since 52)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 52)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 52)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 52)</sub></td>
+ <td><code>devtools.layoutview.enabled</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="セキュリティ">セキュリティ</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Feature</th>
+ <th scope="col">Firefox Nightly</th>
+ <th scope="col">Firefox Developer Edition</th>
+ <th scope="col">Firefox Beta</th>
+ <th scope="col">Firefox Release</th>
+ <th scope="col">Preference</th>
+ </tr>
+ <tr>
+ <td><strong>TLS 1.3</strong></td>
+ <td>Enabled</td>
+ <td>Enabled</td>
+ <td>Disabled</td>
+ <td>Disabled</td>
+ <td><code>security.tls.version.max</code> to <code>4</code></td>
+ </tr>
+ <tr>
+ <td><strong>Blocking data URL navigations on the top-level window</strong><br>
+ We are experimenting with blocking <code>data:</code> URLs on the top-level window. See <a href="https://www.fxsitecompat.com/en-CA/docs/2017/data-url-navigations-on-top-level-window-will-be-blocked/">Data URL navigations on top level window will be blocked</a> for a detailed explanation.</td>
+ <td>Enabled</td>
+ <td>n/a</td>
+ <td>Enabled</td>
+ <td>Disabled</td>
+ <td><code>security.data_uri.block_toplevel<br>
+ _data_uri_navigations</code></td>
+ </tr>
+ </thead>
+</table>
+
+<h2 id="その他">その他</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Feature</th>
+ <th scope="col">Firefox Nightly</th>
+ <th scope="col">Firefox Developer Edition</th>
+ <th scope="col">Firefox Beta</th>
+ <th scope="col">Firefox Release</th>
+ <th scope="col">Preference</th>
+ </tr>
+ <tr>
+ <td><a href="https://support.mozilla.org/t5/Other/How-to-add-a-shortcut-to-a-website-on-Android/ta-p/21992"><strong>Add to home screen</strong></a><br>
+ The <code>icons</code>, <code>name</code>, <code>short_name</code>, and <code>theme_color</code> fields of the <a href="/en-US/docs/Web/Manifest">Web App Manifest</a> (if present) can now be as the source of the homescreen/apps window icons, apps window title, homescreen icon title, and apps window color (respectively) for "Add to home screen" (Firefox Mobile only).</td>
+ <td>Disabled<br>
+ <sub>(available since 53)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 53)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 53)</sub></td>
+ <td>Disabled<br>
+ <sub>(available since 52)</sub></td>
+ <td><code>manifest.install.enabled</code></td>
+ </tr>
+ </thead>
+</table>
+
+<h2 id="次も参照してください">次も参照してください</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Mozilla/Firefox/Releases">Firefox developer release notes</a></li>
+ <li><a href="https://nightly.mozilla.org/">Firefox Nightly</a></li>
+ <li><a href="https://www.mozilla.org/en-US/firefox/developer/">Firefox Developer Edition</a></li>
+</ul>
diff --git a/files/ja/mozilla/firefox/firefox_esr/index.html b/files/ja/mozilla/firefox/firefox_esr/index.html
new file mode 100644
index 0000000000..db1e60c146
--- /dev/null
+++ b/files/ja/mozilla/firefox/firefox_esr/index.html
@@ -0,0 +1,22 @@
+---
+title: Firefox ESR
+slug: Mozilla/Firefox/Firefox_ESR
+tags:
+ - ESR
+ - Exteneded Support Release
+ - Firefox
+ - Firefox for Desktop
+ - LTS
+ - gpo
+ - group policy
+ - グループポリシー
+ - デスクトップ版Firefox
+translation_of: Mozilla/Firefox/Firefox_ESR
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p>Firefox 延長サポートリリース (ESR) は、大規模展開している拡張サポートが必要な組織で使用する、デスクトップ版 Firefox の公式リリースに基づいています。他のリリースチャンネルとは異なり、ESR は 6 週間ごとに新しい機能で更新されるものではありません。代わりに、1 年以上サポートされており、主要なセキュリティまたは安定性の修正が加えられて更新されています。</p>
+
+<p>スケジュールと詳細は <a href="https://www.mozilla.org/en-US/firefox/organizations/">ESR 公式サイト</a>で入手できます。</p>
+
+<p>Firefox ESR を導入している管理者は、<a href="https://www.mozilla.org/en-US/firefox/organizations/">Enterprise Working Group (EWG) のメーリングリスト</a>に登録することを強くお勧めします。</p>
diff --git a/files/ja/mozilla/firefox/headless_mode/index.html b/files/ja/mozilla/firefox/headless_mode/index.html
new file mode 100644
index 0000000000..88e2da5052
--- /dev/null
+++ b/files/ja/mozilla/firefox/headless_mode/index.html
@@ -0,0 +1,267 @@
+---
+title: ヘッドレスモード
+slug: Mozilla/Firefox/Headless_mode
+tags:
+ - Automation
+ - Firefox
+ - Mozilla
+ - QA
+ - Testing
+ - headless
+ - headless mode
+ - node.js
+translation_of: Mozilla/Firefox/Headless_mode
+---
+<p class="summary">ヘッドレスモードは、その名の通り Firefox を実行する便利な方法です — UI コンポーネントが表示されない点を除いて、Firefox は通常通り実行されます。ウェブサーフィンにはあまり役立たないかもしれませんが、自動テストには非常に有効です。この記事では、ヘッドレス Firefox の実行について知るべきことをすべて提供します。</p>
+
+<h2 id="ヘッドレスモードを使用する">ヘッドレスモードを使用する</h2>
+
+<p>このセクションではヘッドレスモードの使用方法について説明します</p>
+
+<h3 id="基本的な使い方">基本的な使い方</h3>
+
+<p><code>-headless</code> フラグを含めることで、コマンドラインから Firefox をヘッドレスモードで実行できます。たとえば:</p>
+
+<pre class="brush: bash">/path/to/firefox -headless</pre>
+
+<h3 id="スクリーンショットを撮る">スクリーンショットを撮る</h3>
+
+<p>Firefox 57以降、<code>-screenshot</code>フラグを使用してウェブサイトのスクリーンショットを撮ることができます。基本的な使い方は:</p>
+
+<pre class="brush: bash line-numbers language-bash"><code class="language-bash">/path/to/firefox -headless -screenshot https://developer.mozilla.com</code></pre>
+
+<p>これにより、<code>screenshot.png</code>というファイル名で800pxのビューポート幅を持つ<code>https://developer.mozilla.com</code>の全画面スクリーンショットが作成され、アクティブなディレクトリに保存されます。</p>
+
+<p>暗黙的に <code>-screenshot</code> を使用している場合、<code>-headless</code>を省略することができます。</p>
+
+<pre class="brush: bash line-numbers language-bash"><code class="language-bash">/path/to/firefox -screenshot https://developer.mozilla.com</code></pre>
+
+<p>上記のデフォルト値を上書きするために、次のフラグ/機能を使用できます。</p>
+
+<ul>
+ <li><code>-screenshot name url</code> — スクリーンショットの名前をカスタマイズするには、<code>-screenshot</code>フラグとキャプチャするURLの間に含めて設定します。<code>.jpg</code>、<code>.bmp</code>などの他のウェブ対応画像フォーマットを指定することができます</li>
+ <li><code>--window-size=x</code> — スクリーンショットを撮るときにカスタムビューポートの幅(完全な高さが維持されます)を設定します。 これの単一の引数バージョンは動作しないことに注意してください</li>
+ <li><code>--window-size=x,y</code> — キャプチャのカスタムビューポートの幅と高さを設定します</li>
+</ul>
+
+<p>たとえば、次のコマンドは、ビューポートの幅が800px、高さが1000pxの<code>https://developer.mozilla.com</code>のスクリーンショットを<code>test.jpg</code>というファイル名で作成し、アクティブなディレクトリに保存します。</p>
+
+<pre class="brush: bash line-numbers language-bash"><code class="language-bash">/path/to/firefox -screenshot test.jpg https://developer.mozilla.com --window-size=800,1000</code></pre>
+
+<p> </p>
+
+<h3 id="ブラウザーサポート">ブラウザーサポート</h3>
+
+<p>ヘッドレス Firefox は Linux 上の Fx55 以上と Windows/Mac 上の Fx56 以上で動作します。</p>
+
+<h2 id="ヘッドレスモードで自動テストを実行する">ヘッドレスモードで自動テストを実行する</h2>
+
+<p>ヘッドレス Firefox の最も便利な使い方は、自動テストの実行です。つまり、テストプロセスをより効率的にできます。</p>
+
+<h3 id="Node.js_で_Selenium">Node.js で Selenium</h3>
+
+<p>ここで、<a href="https://nodejs.org/">Node.js</a> と <code><a href="https://www.npmjs.com/package/selenium-webdriver">selenium-webdriver</a></code> パッケージを使用して <a href="http://www.seleniumhq.org/">Selenium</a> テストを作成します。このガイドでは、読者が Selenium と Webdriver、Node に精通しており、テスト環境をセットアップ済みであることを想定しています。そうでないなら、最初に <a href="https://developer.mozilla.org/ja/docs/Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment#Setting_up_Selenium_in_Node">Setting up Selenium in Node</a> ガイドを読んでから戻ってきてください。</p>
+
+<p>まず、システムに Node と <code>selenium-webdriver</code> パッケージがインストールされていることを確かめてから、<code>selenium-test.js</code> と呼ばれる新しいファイルを作成し、以下の手順に従ってテストコードを入力してください。</p>
+
+<div class="note">
+<p><strong>ノート</strong>: 代わりに、<a href="https://github.com/mdn/headless-examples">headless-examples repo</a> をコピーできます。これはパッケージファイルも含んでいるので、<code>npm install</code> を実行するだけで必要な依存パッケージをインストールできます。</p>
+</div>
+
+<ol>
+ <li>
+ <p>コードを追加していきましょう、このファイル内で、<code>selenium-webdriver</code> メインモジュールと <code>firefox</code> サブモジュールのインポートから始めます:</p>
+
+ <pre class="brush: js">var webdriver = require('selenium-webdriver'),
+ By = webdriver.By,
+ until = webdriver.until;
+
+var firefox = require('selenium-webdriver/firefox');</pre>
+ </li>
+ <li>
+ <p>次に、Firefox Nightly を表す新しい <code>binary</code> オブジェクトを生成し、ヘッドレスモードで実行するために <code>-headless</code> 引数を追加します:</p>
+
+ <pre class="brush: js">var binary = new firefox.Binary(firefox.Channel.NIGHTLY);
+binary.addArguments("-headless");</pre>
+ </li>
+ <li>
+ <p>いよいよ Firefox のための新しいドライバーインスタンスを生成します。上記で作成したバイナリを使用してテストの実行を指定するオプションオブジェクトを含めるためには、<code>setFirefoxOptions()</code> を使用します。(このステップは Linux と Windows/Mac でヘッドレスモードがリリースされた後は不要です。しかし、Nightly 特有の機能としてテストしたい場合にはまだ役立ちます):</p>
+
+ <pre class="brush: js">var driver = new webdriver.Builder()
+    .forBrowser('firefox')
+    .setFirefoxOptions(new firefox.Options().setBinary(binary))
+    .build();</pre>
+ </li>
+ <li>
+ <p>Google 検索ホームページ上で簡単なテストを実行する次のコードを追加します:</p>
+
+ <pre class="brush: js">driver.get('https://www.google.com');
+driver.findElement(By.name('q')).sendKeys('webdriver');
+
+driver.sleep(1000).then(function() {
+ driver.findElement(By.name('q')).sendKeys(webdriver.Key.TAB);
+});
+
+driver.findElement(By.name('btnK')).click();
+
+driver.sleep(2000).then(function() {
+ driver.getTitle().then(function(title) {
+ if(title === 'webdriver - Google Search') {
+ console.log('Test passed');
+ } else {
+ console.log('Test failed');
+ }
+ });
+});
+
+driver.quit();</pre>
+ </li>
+ <li>
+ <p>最後に、次のコマンドでテストを実行します:</p>
+
+ <pre class="brush: bash">node selenium-test</pre>
+ </li>
+</ol>
+
+<p>これでおしまい! 少し経つと、コンソール上に "Test passed" というメッセージが表示されます。</p>
+
+<p>Myk Melez の <a href="https://mykzilla.org/2017/08/30/headless-firefox-in-node-js-with-selenium-webdriver/">Headless Firefox in Node.js with selenium-webdriver</a> には、追加の便利な tips やヘッドレスモードで Node.js Selenium テストを実行するトリックが含まれています。</p>
+
+<h3 id="Java_で_Selenium">Java で Selenium</h3>
+
+<div class="note">
+<p><strong>Note</strong>: これらの手順を書いてくれてありがとう、nicholas dipiazzaに感謝します!</p>
+</div>
+
+<p>このガイドでは、<a href="/ja/docs/Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment#Setting_up_Selenium_in_Node">Setting up Selenium in Node</a> ガイドで説明したように、マシンに Geckodriver が既にあること、および Gradle プロジェクトをサポートする IDE があることを前提としています。</p>
+
+<ol>
+ <li>
+ <p><a href="https://github.com/mdn/headless-examples/blob/master/headlessfirefox-gradle.zip">headlessfirefox-gradle.zip</a> アーカイブ(<a href="https://github.com/mdn/headless-examples/tree/master/headlessfirefox-gradle">ここのソースを参照</a>)をダウンロードし、解凍してheadlessfirefoxフォルダをIDEにグラデルプロジェクトとしてインポートします</p>
+ </li>
+ <li>
+ <p>必要に応じて<code>build.gradle</code>ファイルを編集して、selenium をそれ以降のバージョンに設定します。執筆時点では 3.5.3 を使用しました</p>
+
+ <pre class="brush: java">group 'com.mozilla'
+version '1.0'
+
+apply plugin: 'java'
+
+sourceCompatibility = 1.8
+
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ compile('org.seleniumhq.selenium:selenium-api:3.5.3')
+ compile('org.seleniumhq.selenium:selenium-remote-driver:3.5.3')
+ compile('org.seleniumhq.selenium:selenium-server:3.5.3')
+
+ testCompile group: 'junit', name: 'junit', version: '4.12'
+}</pre>
+ </li>
+ <li>
+ <p>HeadlessFirefoxSeleniumExample.javaファイルの<code>webdriver.gecko.driver</code>プロパティをgeckodriverをインストールしたパスと等しくなるように編集します(下の15行目を参照)</p>
+
+ <pre class="brush: java">package com.mozilla.example;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.firefox.FirefoxBinary;
+import org.openqa.selenium.firefox.FirefoxDriver;
+import org.openqa.selenium.firefox.FirefoxOptions;
+
+import java.util.concurrent.TimeUnit;
+
+public class HeadlessFirefoxSeleniumExample {
+ public static void main(String [] args) {
+ FirefoxBinary firefoxBinary = new FirefoxBinary();
+ firefoxBinary.addCommandLineOptions("--headless");
+ System.setProperty("webdriver.gecko.driver", "/opt/geckodriver");
+ FirefoxOptions firefoxOptions = new FirefoxOptions();
+ firefoxOptions.setBinary(firefoxBinary);
+ FirefoxDriver driver = new FirefoxDriver(firefoxOptions);
+ try {
+ driver.get("http://www.google.com");
+ driver.manage().timeouts().implicitlyWait(4,
+ TimeUnit.SECONDS);
+ WebElement queryBox = driver.findElement(By.name("q"));
+ queryBox.sendKeys("headless firefox");
+ WebElement searchBtn = driver.findElement(By.name("btnK"));
+ searchBtn.click();
+ WebElement iresDiv = driver.findElement(By.id("ires"));
+ iresDiv.findElements(By.tagName("a")).get(0).click();
+ System.out.println(driver.getPageSource());
+ } finally {
+ driver.quit();
+ }
+ }
+}</pre>
+ </li>
+ <li>
+ <p>Javaクラスを実行すると、このページのHTMLコンテンツがコンソール/端末に表示されます</p>
+ </li>
+</ol>
+
+<h3 id="Python_で_Selenium">Python で Selenium</h3>
+
+<p>このガイドでは、<a href="/ja/docs/Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment#Setting_up_Selenium_in_Node">Setting up Selenium in Node</a>で説明したように、マシンにgeckodriverが既にあることを前提としています。</p>
+
+<ol>
+ <li>
+ <p><a href="https://pypi.python.org/pypi/selenium">SeleniumのPythonクライアント</a>の最新バージョンをインストールします</p>
+ </li>
+ <li>
+ <p>geckodriverをインストールした場所にパスを通すためには、11行目の<code>executable_path</code>を設定し、次のように編集します</p>
+
+ <pre class="brush: python line-numbers language-python"><code class="language-python">from selenium.webdriver import Firefox
+from selenium.webdriver.common.by import By
+from selenium.webdriver.common.keys import Keys
+from selenium.webdriver.firefox.options import Options
+from selenium.webdriver.support import expected_conditions as expected
+from selenium.webdriver.support.wait import WebDriverWait
+
+if __name__ == "__main__":
+ options = Options()
+ options.add_argument('-headless')
+ driver = Firefox(executable_path='geckodriver', firefox_options=options)
+ wait = WebDriverWait(driver, timeout=10)
+ driver.get('http://www.google.com')
+ wait.until(expected.visibility_of_element_located((By.NAME, 'q'))).send_keys('headless firefox' + Keys.ENTER)
+ wait.until(expected.visibility_of_element_located((By.CSS_SELECTOR, '#ires a'))).click()
+ print(driver.page_source)
+ driver.quit()</code></pre>
+ </li>
+ <li>
+ <p>Pythonスクリプトを実行すると、このページのHTMLコンテンツがコンソール/端末に表示されます</p>
+ </li>
+</ol>
+
+<h3 id="その他のテスト方法">その他のテスト方法</h3>
+
+<ul>
+ <li>Slimerjs は Linux 上で Firefox をサポートしており、Mac と Windowsのサポートは間もなく公開されます。詳細については、Brendan Dahl の <a href="https://adriftwith.me/coding/2017/04/21/headless-slimerjs-with-firefox/">Headless SlimerJS with Firefox</a> を参照してください</li>
+ <li><a href="https://github.com/DevExpress/testcafe">TestCafe</a> (v.0.18.0 以降) は、デフォルトでヘッドレス Firefox でのテストもサポートしています。詳細については<a href="https://devexpress.github.io/testcafe/blog/testcafe-v0-18-0-released.html#testing-in-headless-firefox">ドキュメント</a>を参照してください。</li>
+</ul>
+
+<p>さらに、環境変数を設定できる限り、他の一般的なテストアプリで書かれた自動テストを実行するために、ヘッドレスFirefoxを使用することができます。</p>
+
+<h2 id="トラブルシューティングとヘルプ">トラブルシューティングとヘルプ</h2>
+
+<p>ヘッドレスモードの実行でトラブルがあっても心配しないでください — ここで助けます。このセクションでは、追加の QA を載せることを想定しています。</p>
+
+<ul>
+ <li>Linux では、ヘッドレスモードで使用しないにもかかわらず、システム上であるライブラリが要求されます。 — Firefox がそれらにリンクしているからです。詳細と修正に向けた進捗は {{bug(1372998)}} を見てください。</li>
+</ul>
+
+<p>エンジニアに質問したいなら、<a href="https://wiki.mozilla.org/IRC">Mozilla IRC</a> の <code>#headless</code> チャネルに行くのがベストです。バグを見つけた場合は、<a href="https://bugzilla.mozilla.org/">Mozilla Bugzilla</a> で報告してください。</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="https://intoli.com/blog/running-selenium-with-headless-firefox/">Using Selenium with Headless Firefox (on Windows)</a> by Andre Perunicic (Python を使用)</li>
+ <li><a href="https://mykzilla.org/2017/08/30/headless-firefox-in-node-js-with-selenium-webdriver/">Headless Firefox in Node.js with selenium-webdriver</a> by Myk Melez</li>
+ <li><a href="https://adriftwith.me/coding/2017/04/21/headless-slimerjs-with-firefox/">Headless SlimerJS with Firefox</a> by Brendan Dahl</li>
+ <li><a href="http://blog.rousek.name/2017/09/08/going-headless-with-firefox-since-55/">Using Selenium with Headless Firefox on Travis-CI</a> by Josef Rousek</li>
+</ul>
diff --git a/files/ja/mozilla/firefox/index.html b/files/ja/mozilla/firefox/index.html
new file mode 100644
index 0000000000..4f8a1ebffa
--- /dev/null
+++ b/files/ja/mozilla/firefox/index.html
@@ -0,0 +1,82 @@
+---
+title: Firefox
+slug: Mozilla/Firefox
+tags:
+ - Firefox
+ - Landing
+ - Mozilla
+translation_of: Mozilla/Firefox
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p><a class="external external-icon" href="https://www.mozilla.org/ja/firefox/">Firefox</a> は Mozilla のポピュラーな Web ブラウザで、デスクトップ上の Windows、OS X、Linux、そしてすべての Android および iOS モバイルデバイスを含む複数のプラットフォームで利用できます。幅広い互換性、最新の Web 技術、強力な開発ツールにより、Firefox は Web 開発者とエンドユーザーの両方にとって最適な選択肢です。</p>
+
+<p>Firefox はオープンソースのプロジェクトです。コードの多くは私達の巨大なボランティアのコミュニティの貢献によるものです。ここでは、Firefox プロジェクトにどのように貢献するかについて学ぶことができ、Firefox アドオンの構築、Firefox の開発者ツールの使い方、その他のトピックへのリンクもあります。</p>
+
+<p class="summary"><a class="external external-icon" href="https://www.mozilla.org/firefox/">Firefox</a> のアドオンを作成する方法、Firefox 自体を開発して構築する方法、Firefox の内部とそのサブプロジェクトの仕組みについて学びます。</p>
+
+<ul class="card-grid">
+ <li><span>開発者向けリリースノート</span>
+
+ <p><a href="/ja/docs/Mozilla/Firefox/Releases">開発者向けのリリースノート</a>。ウェブサイトとアドオンに向けた新しい機能が Firefox のどのバージョンで登場したのかがわかります。</p>
+ </li>
+ <li><span>プロジェクトドキュメント</span>
+ <p><a href="/ja/docs/Mozilla">Firefox の内部構造</a>とそのビルドシステムに関する詳細な情報を入手してください。そうすれば、コード内であなたの道を見つけることができます。</p>
+ </li>
+ <li><span>開発者ガイド</span>
+ <p>私たちの<a href="/ja/docs/Mozilla/Developer_guide">開発者ガイド</a>では、Firefoxのソースコードを入手してコンパイルする方法、方法を見つける方法、プロジェクトに貢献する方法について詳しく説明しています。</p>
+ </li>
+</ul>
+
+<h2 id="Firefox_channels" name="Firefox_channels">Firefox チャンネル</h2>
+
+<p>Firefox は5つの<strong>チャンネル</strong>で利用できます。</p>
+
+<h3 id="Firefox_Nightly">Firefox Nightly</h3>
+
+<p>毎晩、私たちは <a href="https://developer.mozilla.org/ja/docs/mozilla-central">mozilla-central</a> の最新コードから Firefox をビルドします。これらのビルドは、Firefox 開発者や、最新の最先端の機能をまだ積極的に開発している最中に試してみたい方向けです。</p>
+
+<p><a class="external external-icon" href="https://nightly.mozilla.org/" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Firefox Nightly のダウンロード</a></p>
+
+<h3 id="Firefox_Developer_Edition">Firefox Developer Edition</h3>
+
+<p>これは開発者向けの Firefox のバージョンです。6週間ごとに、Firefox Nightly から十分に安定した機能を取り込み、Firefox Developer Edition の新しいバージョンが作成されます。このチャンネルでのみ利用可能な開発者用の追加機能もいくつか追加しています。</p>
+
+<p><a href="/ja/docs/Mozilla/Firefox/Developer_Edition">Firefox Developer Edition についてさらに学ぶ</a></p>
+
+<p><a class="external external-icon" href="https://www.mozilla.org/firefox/developer/" style="width: 320px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Firefox Developer Edition のダウンロード</a></p>
+
+<h3 id="Firefox_Beta">Firefox Beta</h3>
+
+<p>Firefox Developer Edition で6週間を過ごした後に、十分に安定した機能を利用し、新しいバージョンの Firefox Beta を作成します。 Firefox Beta ビルドは、Firefox 愛好者が次回リリースされることになる Firefox バージョンをテストするためのものです。</p>
+
+<p><a class="external external-icon" href="https://www.mozilla.org/firefox/channel/#beta" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Firefox Beta のダウンロード</a></p>
+
+<h3 id="Firefox">Firefox</h3>
+
+<p>Beta でさらに6週間安定させた後、新しいリリースの Firefox で何億人ものユーザーに新機能を届ける準備が整います。</p>
+
+<p><a class="external external-icon" href="https://www.mozilla.org/firefox/channel/#firefox" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Firefox のダウンロード</a></p>
+
+<h3 id="Firefox_Extended_Support_Release_ESR">Firefox Extended Support Release (ESR)</h3>
+
+<p>Firefox ESR は、学校、大学、企業、大規模な展開のための延長サポートを必要とする組織など、組織が使用するためのデスクトップ用 Firefox の長期サポート版です。</p>
+
+<p><a href="/ja/docs/Mozilla/Firefox/Firefox_ESR">Firefox Extended Support Release についてさらに学ぶ</a></p>
+
+<p><a class="external external-icon" href="https://www.mozilla.org/firefox/organizations/all/" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Firefox ESR のダウンロード</a></p>
+
+<h2 id="Contents" name="Contents">目次</h2>
+
+<p>{{LandingPageListSubpages}}</p>
+
+<h2 id="Firefox_profiles" name="Firefox_profiles">Firefox プロファイル</h2>
+
+<p>複数の Firefox チャンネル、または複数の設定を定常的に使用している場合は、Firefox のプロファイルマネージャーやその他のプロファイル管理ツールを利用して<a href="/ja/docs/Mozilla/Firefox/Multiple_profiles">複数の Firefox プロファイルを使用する</a>方法をお読みください。</p>
+
+<h2 id="See_also" name="See_also">こちらもどうぞ</h2>
+
+<ul>
+ <li><a href="https://mail.mozilla.org/listinfo/firefox-dev">メーリングリスト</a></li>
+ <li><a href="https://wiki.mozilla.org/Release_Management/Calendar">リリーススケジュール</a></li>
+</ul>
diff --git a/files/ja/mozilla/firefox/linux_compatibility_matrix/index.html b/files/ja/mozilla/firefox/linux_compatibility_matrix/index.html
new file mode 100644
index 0000000000..50adc5a551
--- /dev/null
+++ b/files/ja/mozilla/firefox/linux_compatibility_matrix/index.html
@@ -0,0 +1,480 @@
+---
+title: Linux の互換性マトリックス
+slug: Mozilla/Firefox/Linux_compatibility_matrix
+translation_of: Mozilla/Firefox/Linux_compatibility_matrix
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p><span class="seoSummary">次の表は、mozilla.org distributed Firefox ビルドの依存関係の利用可能なライブラリのバージョン、および/またはFirefoxのビルドを示しています。</span></p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th>ディストリビューション</th>
+ <th>カーネル</th>
+ <th>glibc</th>
+ <th>glib</th>
+ <th>gtk+2</th>
+ <th>gtk+3</th>
+ <th>pixman</th>
+ <th>stdc++</th>
+ <th>GCC</th>
+ <th>リリース</th>
+ <th>EOL</th>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(255, 204, 204);">Fedora 16</td>
+ <td style="background-color: rgb(153, 255, 153);">3.1</td>
+ <td style="background-color: rgb(153, 255, 153);">2.14</td>
+ <td style="background-color: rgb(153, 255, 153);">2.30</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(255, 204, 204);">3.2</td>
+ <td style="background-color: rgb(153, 255, 153);">0.22</td>
+ <td style="background-color: rgb(153, 255, 153);">4.6</td>
+ <td style="background-color: rgb(255, 204, 204);">4.6</td>
+ <td>Nov 2011</td>
+ <td style="background-color: rgb(255, 204, 204);">Feb 2013</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Fedora 17</td>
+ <td style="background-color: rgb(153, 255, 153);">3.3</td>
+ <td style="background-color: rgb(153, 255, 153);">2.15</td>
+ <td style="background-color: rgb(153, 255, 153);">2.32</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.4</td>
+ <td style="background-color: rgb(153, 255, 153);">0.24</td>
+ <td style="background-color: rgb(153, 255, 153);">4.7</td>
+ <td style="background-color: rgb(255, 204, 204);">4.7</td>
+ <td>May 2012</td>
+ <td style="background-color: rgb(255, 204, 204);">Jul 2013</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Fedora 18</td>
+ <td style="background-color: rgb(153, 255, 153);">3.6</td>
+ <td style="background-color: rgb(153, 255, 153);">2.16</td>
+ <td style="background-color: rgb(153, 255, 153);">2.34</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.6</td>
+ <td style="background-color: rgb(153, 255, 153);">0.26</td>
+ <td style="background-color: rgb(153, 255, 153);">4.7</td>
+ <td style="background-color: rgb(255, 204, 204);">4.7</td>
+ <td>Jan 2013</td>
+ <td style="background-color: rgb(255, 204, 204);">Jan 2014</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Fedora 19</td>
+ <td style="background-color: rgb(153, 255, 153);">3.9</td>
+ <td style="background-color: rgb(153, 255, 153);">2.17</td>
+ <td style="background-color: rgb(153, 255, 153);">2.36</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.8</td>
+ <td style="background-color: rgb(153, 255, 153);">0.30</td>
+ <td style="background-color: rgb(153, 255, 153);">4.8</td>
+ <td style="background-color: rgb(255, 204, 204);">4.8</td>
+ <td>Jul 2013</td>
+ <td style="background-color: rgb(255, 204, 204);">Jan 2015</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Fedora 20</td>
+ <td style="background-color: rgb(153, 255, 153);">3.11</td>
+ <td style="background-color: rgb(153, 255, 153);">2.18</td>
+ <td style="background-color: rgb(153, 255, 153);">2.38</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.10</td>
+ <td style="background-color: rgb(153, 255, 153);">0.30</td>
+ <td style="background-color: rgb(153, 255, 153);">4.8</td>
+ <td style="background-color: rgb(255, 204, 204);">4.8</td>
+ <td>Dec 2013</td>
+ <td style="background-color: rgb(255, 204, 204);">Jun 2015</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Fedora 21</td>
+ <td style="background-color: rgb(153, 255, 153);">3.17</td>
+ <td style="background-color: rgb(153, 255, 153);">2.20</td>
+ <td style="background-color: rgb(153, 255, 153);">2.42</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.14</td>
+ <td style="background-color: rgb(153, 255, 153);">0.32</td>
+ <td style="background-color: rgb(153, 255, 153);">4.9</td>
+ <td style="background-color: rgb(204, 255, 153);">4.9</td>
+ <td>Dec 2014</td>
+ <td style="background-color: rgb(255, 204, 204);">Dec 2015</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Fedora 22</td>
+ <td style="background-color: rgb(153, 255, 153);">4.0</td>
+ <td style="background-color: rgb(153, 255, 153);">2.21</td>
+ <td style="background-color: rgb(153, 255, 153);">2.44</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.16</td>
+ <td style="background-color: rgb(153, 255, 153);">0.32</td>
+ <td style="background-color: rgb(153, 255, 153);">5.1</td>
+ <td style="background-color: rgb(204, 255, 153);">4.9, 5.1</td>
+ <td>May 2015</td>
+ <td style="background-color: rgb(255, 204, 204);">Jul 2016</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Fedora 23</td>
+ <td style="background-color: rgb(153, 255, 153);">4.2</td>
+ <td style="background-color: rgb(153, 255, 153);">2.22</td>
+ <td style="background-color: rgb(153, 255, 153);">2.46</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.18</td>
+ <td style="background-color: rgb(153, 255, 153);">0.33</td>
+ <td style="background-color: rgb(153, 255, 153);">5.1</td>
+ <td style="background-color: rgb(204, 255, 153);">5.1</td>
+ <td>Nov 2015</td>
+ <td style="background-color: rgb(255, 204, 204);">Dec 2016</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Fedora 24</td>
+ <td style="background-color: rgb(153, 255, 153);">4.5</td>
+ <td style="background-color: rgb(153, 255, 153);">2.23</td>
+ <td style="background-color: rgb(153, 255, 153);">2.48</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.20</td>
+ <td style="background-color: rgb(153, 255, 153);">0.34</td>
+ <td style="background-color: rgb(153, 255, 153);">6.1</td>
+ <td style="background-color: rgb(153, 255, 153);">6.1</td>
+ <td>Jun 2016</td>
+ <td style="background-color: rgb(255, 204, 204);">Aug 2017</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Fedora 25</td>
+ <td style="background-color: rgb(153, 255, 153);">4.8</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">2.50</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.22.2</td>
+ <td style="background-color: rgb(153, 255, 153);">0.34</td>
+ <td style="background-color: rgb(153, 255, 153);">6.2</td>
+ <td style="background-color: rgb(153, 255, 153);">6.2</td>
+ <td>Nov 2016</td>
+ <td style="background-color: rgb(255, 204, 204);">Dec 2017</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Fedora 26</td>
+ <td style="background-color: rgb(153, 255, 153);">4.11</td>
+ <td style="background-color: rgb(153, 255, 153);">2.25</td>
+ <td style="background-color: rgb(153, 255, 153);">2.52</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.22.16</td>
+ <td style="background-color: rgb(153, 255, 153);">0.34</td>
+ <td style="background-color: rgb(153, 255, 153);">7.1</td>
+ <td style="background-color: rgb(153, 255, 153);">7.1</td>
+ <td>Jul 2017</td>
+ <td>Jun 2018</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Fedora 27</td>
+ <td style="background-color: rgb(153, 255, 153);">4.13</td>
+ <td style="background-color: rgb(153, 255, 153);">2.26</td>
+ <td style="background-color: rgb(153, 255, 153);">2.54</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.22.24</td>
+ <td style="background-color: rgb(153, 255, 153);">0.34</td>
+ <td style="background-color: rgb(153, 255, 153);">7.2</td>
+ <td style="background-color: rgb(153, 255, 153);">7.2</td>
+ <td>Nov 2017</td>
+ <td>?</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Fedora 28</td>
+ <td style="background-color: rgb(153, 255, 153);">4.16</td>
+ <td style="background-color: rgb(153, 255, 153);">2.27</td>
+ <td style="background-color: rgb(153, 255, 153);">2.56</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.22.30</td>
+ <td style="background-color: rgb(153, 255, 153);">0.34</td>
+ <td style="background-color: rgb(153, 255, 153);">8.0.1</td>
+ <td style="background-color: rgb(153, 255, 153);">8.0.1</td>
+ <td>May 2018</td>
+ <td>?</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(255, 204, 204);">RHEL 6</td>
+ <td style="background-color: rgb(153, 255, 153);">2.6.32</td>
+ <td style="background-color: rgb(153, 255, 153);">2.12</td>
+ <td style="background-color: rgb(153, 255, 153);">2.28</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(255, 204, 204);">N/A</td>
+ <td style="background-color: rgb(153, 255, 153);">0.32</td>
+ <td style="background-color: rgb(255, 204, 204);">4.4</td>
+ <td style="background-color: rgb(255, 204, 204);">4.4</td>
+ <td>Nov 2010</td>
+ <td>Nov 2020</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">RHEL 7</td>
+ <td style="background-color: rgb(153, 255, 153);">3.10</td>
+ <td style="background-color: rgb(153, 255, 153);">2.17</td>
+ <td style="background-color: rgb(153, 255, 153);">2.42</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.14</td>
+ <td style="background-color: rgb(153, 255, 153);">0.32</td>
+ <td style="background-color: rgb(153, 255, 153);">4.8</td>
+ <td style="background-color: rgb(255, 204, 204);">4.8</td>
+ <td>Jun 2014</td>
+ <td>Jun 2024</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(255, 204, 204);">openSUSE 11.4</td>
+ <td style="background-color: rgb(153, 255, 153);">2.6.37</td>
+ <td style="background-color: rgb(255, 204, 204);">2.11</td>
+ <td style="background-color: rgb(153, 255, 153);">2.28</td>
+ <td style="background-color: rgb(153, 255, 153);">2.22</td>
+ <td style="background-color: rgb(255, 204, 204);">3.0</td>
+ <td style="background-color: rgb(153, 255, 153);">0.20</td>
+ <td style="background-color: rgb(255, 204, 204);">4.5</td>
+ <td style="background-color: rgb(255, 204, 204);">4.5</td>
+ <td>Mar 2011</td>
+ <td style="background-color: rgb(255, 204, 204);">Jul 2015</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(255, 204, 204);">openSUSE 12.1</td>
+ <td style="background-color: rgb(153, 255, 153);">3.1</td>
+ <td style="background-color: rgb(153, 255, 153);">2.14</td>
+ <td style="background-color: rgb(153, 255, 153);">2.30</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(255, 204, 204);">3.2</td>
+ <td style="background-color: rgb(153, 255, 153);">0.22</td>
+ <td style="background-color: rgb(153, 255, 153);">4.6</td>
+ <td style="background-color: rgb(255, 204, 204);">4.6</td>
+ <td>Nov 2011</td>
+ <td style="background-color: rgb(255, 204, 204);">May 2013</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">openSUSE 12.2</td>
+ <td style="background-color: rgb(153, 255, 153);">3.4</td>
+ <td style="background-color: rgb(153, 255, 153);">2.15</td>
+ <td style="background-color: rgb(153, 255, 153);">2.32</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.4</td>
+ <td style="background-color: rgb(153, 255, 153);">0.24</td>
+ <td style="background-color: rgb(153, 255, 153);">4.7</td>
+ <td style="background-color: rgb(255, 204, 204);">4.7</td>
+ <td>Jul 2012</td>
+ <td style="background-color: rgb(255, 204, 204);">Jan 2014</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">openSUSE 12.3</td>
+ <td style="background-color: rgb(153, 255, 153);">3.7</td>
+ <td style="background-color: rgb(153, 255, 153);">2.17</td>
+ <td style="background-color: rgb(153, 255, 153);">2.34</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.6</td>
+ <td style="background-color: rgb(153, 255, 153);">0.28</td>
+ <td style="background-color: rgb(153, 255, 153);">4.7</td>
+ <td style="background-color: rgb(255, 204, 204);">4.7</td>
+ <td>Mar 2013</td>
+ <td style="background-color: rgb(255, 204, 204);">Sep 2014</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">openSUSE 13.1</td>
+ <td style="background-color: rgb(153, 255, 153);">3.11</td>
+ <td style="background-color: rgb(153, 255, 153);">2.18</td>
+ <td style="background-color: rgb(153, 255, 153);">2.38</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.10</td>
+ <td style="background-color: rgb(153, 255, 153);">0.30</td>
+ <td style="background-color: rgb(153, 255, 153);">4.8</td>
+ <td style="background-color: rgb(255, 204, 204);">4.8</td>
+ <td>Nov 2013</td>
+ <td style="background-color: rgb(255, 204, 204);">Jan 2016</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">openSUSE 13.2</td>
+ <td style="background-color: rgb(153, 255, 153);">3.16</td>
+ <td style="background-color: rgb(153, 255, 153);">2.19</td>
+ <td style="background-color: rgb(153, 255, 153);">2.42</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.14</td>
+ <td style="background-color: rgb(153, 255, 153);">0.32</td>
+ <td style="background-color: rgb(153, 255, 153);">4.8</td>
+ <td style="background-color: rgb(204, 255, 153);">4.8, 4.9</td>
+ <td>Nov 2014</td>
+ <td style="background-color: rgb(255, 204, 204);">Jan 2017</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">openSUSE Leap 42.1</td>
+ <td style="background-color: rgb(153, 255, 153);">4.1</td>
+ <td style="background-color: rgb(153, 255, 153);">2.19</td>
+ <td style="background-color: rgb(153, 255, 153);">2.44</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.16</td>
+ <td style="background-color: rgb(153, 255, 153);">0.32</td>
+ <td style="background-color: rgb(153, 255, 153);">5.2</td>
+ <td style="background-color: rgb(204, 255, 153);">4.8, 5.2</td>
+ <td>Nov 2015</td>
+ <td style="background-color: rgb(255, 204, 204);">May 2017</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">openSUSE Leap 42.2</td>
+ <td style="background-color: rgb(153, 255, 153);">4.4</td>
+ <td style="background-color: rgb(153, 255, 153);">2.22</td>
+ <td style="background-color: rgb(153, 255, 153);">2.48.2</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.20.9</td>
+ <td style="background-color: rgb(153, 255, 153);">0.34</td>
+ <td style="background-color: rgb(153, 255, 153);">5.3.1</td>
+ <td style="background-color: rgb(153, 255, 153);">4.8.5, 5.3.1, 6.1.1</td>
+ <td>Nov 2016</td>
+ <td style="background-color: rgb(255, 204, 204);">Jan 2018</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">openSUSE Leap 42.3</td>
+ <td style="background-color: rgb(153, 255, 153);">4.4</td>
+ <td style="background-color: rgb(153, 255, 153);">2.22</td>
+ <td style="background-color: rgb(153, 255, 153);">2.48.2</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.20.10</td>
+ <td style="background-color: rgb(153, 255, 153);">0.34</td>
+ <td style="background-color: rgb(153, 255, 153);">5.3.1</td>
+ <td style="background-color: rgb(153, 255, 153);">4.8.5, 5.3.1, 6.2.1, 7.1.1</td>
+ <td>Jul 2017</td>
+ <td>Jan 2019</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(255, 204, 204);">Debian 6</td>
+ <td style="background-color: rgb(153, 255, 153);">2.6.32</td>
+ <td style="background-color: rgb(255, 204, 204);">2.11</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">2.20</td>
+ <td style="background-color: rgb(255, 204, 204);">N/A</td>
+ <td style="background-color: rgb(255, 204, 204);">0.16</td>
+ <td style="background-color: rgb(255, 204, 204);">4.4</td>
+ <td style="background-color: rgb(255, 204, 204);">4.1, 4.3, 4.4</td>
+ <td>Feb 2011</td>
+ <td style="background-color: rgb(255, 204, 204);">May 2014 / Feb 2016 (LTS)</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Debian 7</td>
+ <td style="background-color: rgb(153, 255, 153);">3.2</td>
+ <td style="background-color: rgb(153, 255, 153);">2.13</td>
+ <td style="background-color: rgb(153, 255, 153);">2.32</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.4</td>
+ <td style="background-color: rgb(153, 255, 153);">0.26</td>
+ <td style="background-color: rgb(153, 255, 153);">4.7</td>
+ <td style="background-color: rgb(255, 204, 204);">4.4, 4.6, 4.7</td>
+ <td>May 2013</td>
+ <td style="background-color: rgb(255, 204, 204);">Apr 2016 / May 2018 (LTS)</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Debian 8</td>
+ <td style="background-color: rgb(153, 255, 153);">3.16</td>
+ <td style="background-color: rgb(153, 255, 153);">2.19</td>
+ <td style="background-color: rgb(153, 255, 153);">2.42</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.14</td>
+ <td style="background-color: rgb(153, 255, 153);">0.32</td>
+ <td style="background-color: rgb(153, 255, 153);">4.9</td>
+ <td style="background-color: rgb(204, 255, 153);">4.8, 4.9</td>
+ <td>Apr 2015</td>
+ <td>Jun 2018 / Jun 2020 (LTS)</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Debian 9</td>
+ <td style="background-color: rgb(153, 255, 153);">4.9</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">2.50</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.22</td>
+ <td style="background-color: rgb(153, 255, 153);">0.34</td>
+ <td style="background-color: rgb(153, 255, 153);">6.3</td>
+ <td style="background-color: rgb(153, 255, 153);">6.3</td>
+ <td>Jun 2017</td>
+ <td>Jun 2020 / Jun 2022 (LTS)</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Ubuntu 12.04 LTS</td>
+ <td style="background-color: rgb(153, 255, 153);">3.2</td>
+ <td style="background-color: rgb(153, 255, 153);">2.15</td>
+ <td style="background-color: rgb(153, 255, 153);">2.32</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.4</td>
+ <td style="background-color: rgb(153, 255, 153);">0.30</td>
+ <td style="background-color: rgb(153, 255, 153);">4.6</td>
+ <td style="background-color: rgb(255, 204, 204);">4.4, 4.5, 4.6</td>
+ <td>Apr 2012</td>
+ <td style="background-color: rgb(255, 204, 204);">Apr 2017</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Ubuntu 14.04 LTS</td>
+ <td style="background-color: rgb(153, 255, 153);">3.13</td>
+ <td style="background-color: rgb(153, 255, 153);">2.19</td>
+ <td style="background-color: rgb(153, 255, 153);">2.40</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.10</td>
+ <td style="background-color: rgb(153, 255, 153);">0.30</td>
+ <td style="background-color: rgb(153, 255, 153);">4.8</td>
+ <td style="background-color: rgb(255, 204, 204);">4.4, 4.6, 4.7, 4.8</td>
+ <td>Apr 2014</td>
+ <td>Apr 2019</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Ubuntu 16.04 LTS</td>
+ <td style="background-color: rgb(153, 255, 153);">4.4</td>
+ <td style="background-color: rgb(153, 255, 153);">2.23</td>
+ <td style="background-color: rgb(153, 255, 153);">2.48</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.18</td>
+ <td style="background-color: rgb(153, 255, 153);">0.33</td>
+ <td style="background-color: rgb(153, 255, 153);">5.3</td>
+ <td style="background-color: rgb(204, 255, 153);">4.7, 4.8, 4.9, 5.3</td>
+ <td>Apr 2016</td>
+ <td>Apr 2021</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">Ubuntu 18.04 LTS</td>
+ <td style="background-color: rgb(153, 255, 153);">4.15</td>
+ <td style="background-color: rgb(153, 255, 153);">2.27</td>
+ <td style="background-color: rgb(153, 255, 153);">2.56</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.22.30</td>
+ <td style="background-color: rgb(153, 255, 153);">0.34</td>
+ <td style="background-color: rgb(153, 255, 153);">8-20180414</td>
+ <td style="background-color: rgb(153, 255, 153);">7.3</td>
+ <td>Apr 2018</td>
+ <td>Apr 2023</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(255, 204, 204);">SLES 11 (SP4)</td>
+ <td style="background-color: rgb(153, 255, 153);">3.0</td>
+ <td style="background-color: rgb(255, 204, 204);">2.11</td>
+ <td style="background-color: rgb(153, 255, 153);">2.22</td>
+ <td style="background-color: rgb(153, 255, 153);">2.18</td>
+ <td style="background-color: rgb(255, 204, 204);">N/A</td>
+ <td style="background-color: rgb(153, 255, 153);">0.24</td>
+ <td style="background-color: rgb(153, 255, 153);">4.6, 5.3</td>
+ <td style="background-color: rgb(255, 204, 204);">4.3</td>
+ <td>Mar 2009</td>
+ <td>Mar 2019</td>
+ </tr>
+ <tr>
+ <td style="background-color: rgb(153, 255, 153);">SLES 12 (SP2)</td>
+ <td style="background-color: rgb(153, 255, 153);">4.4</td>
+ <td style="background-color: rgb(153, 255, 153);">2.22</td>
+ <td style="background-color: rgb(153, 255, 153);">2.48.2</td>
+ <td style="background-color: rgb(153, 255, 153);">2.24</td>
+ <td style="background-color: rgb(153, 255, 153);">3.20.9</td>
+ <td style="background-color: rgb(153, 255, 153);">0.34</td>
+ <td style="background-color: rgb(153, 255, 153);">6.2.1</td>
+ <td style="background-color: rgb(255, 204, 204);">4.8.5</td>
+ <td>Oct 2014</td>
+ <td>Oct 2024</td>
+ </tr>
+ </tbody>
+</table>
+
+<h4 id="注意">注意</h4>
+
+<p>赤い背景は、現在のバージョンのFirefoxとの互換性がないことを表しています。EOL列では、EOL列の末尾のディストリビューションバージョンを表します。<br>
+ <br>
+ 黄色の背景はESR60との互換性を表しています<br>
+ <br>
+ 緑色の背景は現在のリリース (執筆時点では60) との互換性があることを表しています<br>
+ <br>
+ より緑色の背景は、現在のmozilla-central (執筆時点では62) との互換性があることを表しています。</p>
+
+<p>テーブルは <a href="https://github.com/glandium/firefox-linux-compat-matrix">https://github.com/glandium/firefox-linux-compat-matrix</a> のスクリプトとデータを使って生成されています。</p>
diff --git a/files/ja/mozilla/firefox/multiple_profiles/index.html b/files/ja/mozilla/firefox/multiple_profiles/index.html
new file mode 100644
index 0000000000..d495fe06af
--- /dev/null
+++ b/files/ja/mozilla/firefox/multiple_profiles/index.html
@@ -0,0 +1,245 @@
+---
+title: Multiple Firefox profiles
+slug: Mozilla/Firefox/Multiple_profiles
+tags:
+ - Firefox
+ - QA
+ - イントロ
+ - ガイド
+ - プロファイル
+ - 初心者
+translation_of: Mozilla/Firefox/Multiple_profiles
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p class="summary">Firefox のプロファイルは、ユーザーが Firefox のコピーに作成またはインストールした設定、カスタマイズ、アドオン、その他のパーソナライズの集合です。プロファイルに関する詳細は、Mozilla のエンドユーザサポートサイトを参照してください。</p>
+
+<h2 id="複数のプロファイルを持つ理由">複数のプロファイルを持つ理由</h2>
+
+<p>カジュアルなユーザーは、家族ごとに異なるプロファイルを使用することができます。プロファイルを別にすると、それぞれの人が独自のブックマーク、設定、アドオンを持つことができます。</p>
+
+<p>Web 開発者は Web サイト、アプリケーション、またはさまざまな Firefox チャンネル上の他のプロジェクトをテストするためのセカンダリプロファイルを必要とするかもしれません。たとえば、Web 開発用にいくつかの拡張機能をインストールしたいが、汎用の Web ブラウジング用にはインストールしたくないかもしれません。 Nightly チャンネルを使用している間、アドオン開発者がそれらを更新する機会を得るまで、新しい API の変更と一時的に互換性がなくなったアドオンが発生することがあります。このようなアドオンは、他のプロファイルで使用できるようにしながら、 Nightly のためのプロファイルから削除できます。</p>
+
+<p>QA、テスト、およびバグトリアージングの貢献者のために、それぞれ独自のプロファイルを持つ複数の開発版 Firefox をインストールしたい場合があります。テスト用の新しいプロファイルを作成すると、環境設定、ブックマーク、および履歴が失われないようにすることができます。新しいプロファイルを設定するには少し時間がかかります。完了すると、すべての Firefox バージョンが別々に更新され、同時に実行できます。</p>
+
+<h2 id="利用可能なブラウザ開発チャンネル">利用可能なブラウザ開発チャンネル</h2>
+
+<p>4つの利用可能なチャンネルがあり、それぞれは異なるレベルの安定性と開発レベルに対応しています。 4つのチャンネルは <a class="link-https" href="https://www.mozilla.org/firefox/new/" title="Firefox Stable">Release</a>, <a class="link-https" href="https://www.mozilla.org/firefox/beta/" title="Firefox Beta">Beta</a>, <a href="https://www.mozilla.org/firefox/aurora/">Developer Edition</a>, and <a class="external" href="https://nightly.mozilla.org/" title="Firefox Nightly">Nightly</a>です。 Release チャンネルは "公式なリリース" であり、たいていのユーザーに推奨されます。 しかしながら、より冒険好きなユーザーに対しては、ほかの3つのチャンネルを使用して Firefox の新機能を見て、試すことができます。 Beta チャンネルは次のリリースで公開される予定の機能を含んでおりテストの最終段階にあたります。 Aurora (Developer Edition) はまだ Beta ほど安定していない実験的な機能を含んでいます。 Nightly は Firefox 開発者からの最新のコードが含まれており、最も安定していないチャンネルです。</p>
+
+<h2 id="サードパーティのツール">サードパーティのツール</h2>
+
+<p>組み込みのプロファイルマネージャーと外部のプロファイルマネージャーに加えて、複数のプロファイルで作業するのを容易にするサードパーティ製のツールがいくつかあります。</p>
+
+<div class="note">
+<p>このリストは決して網羅的ではありません。発見した便利なツールをリストに追加してください!</p>
+</div>
+
+<h3 id="Mac_OS_X">Mac OS X</h3>
+
+<ul>
+ <li><a href="http://davemartorana.com/multifirefox/">Multifirefox</a> by Dave Martorana</li>
+</ul>
+
+<h2 id="プロファイル管理">プロファイル管理</h2>
+
+<h3 id="Firefox_の実行中のプロファイルの決定">Firefox の実行中のプロファイルの決定</h3>
+
+<p>Windows, macOS or Linux で現在実行している Firefox インスタンスのプロファイルを決定するには、次のようにします。</p>
+
+<ol>
+ <li>ブラウザーの URL 検索バーに about:profiles と入力します。</li>
+ <li>表示されるページでは、すべてのプロファイルの一覧が表示されます。 それぞれの先頭は "プロファイル:" に続いてそのプロファイルの名前が表示されています。</li>
+ <li>現在実行している Firefox インスタンスのプロファイルの下には "<strong>これは使用中のプロファイルです</strong>" という太字のテキストが表示されます。 例えば、 "プロファイル: Suzie" という項目の下にそのテキストがあれば、 <em>Suzie</em> という名前のプロファイルを実行していることになります。</li>
+</ol>
+
+<h3 id="希望のプロファイルで_Firefox_を起動する">希望のプロファイルで Firefox を起動する</h3>
+
+<p id="You_cannot_change_the_profile_while_Firefox_is_running._Although_it_is_possible_in_some_cases_to_have_multiple_instances_of_Firefox_running_in_different_profiles_to_avoid_confusion_you_should_first_exitquitterminate_all_running_instances_of_Firefox_FirefoxDeveloperEdition_or_Nightly._Then_follow_the_instructions_below_applicable_to_your_operating_system."><strong>You cannot change the profile while Firefox is running.</strong>  Although it is possible in some cases to have multiple instances of Firefox running in different profiles, to avoid confusion, you should first exit/quit/terminate all running instances of <em>Firefox</em>, <em>FirefoxDeveloperEdition</em> or <em>Nightly</em>.  Then follow the instructions below, applicable to your operating system.</p>
+
+<h4 id="Windows">Windows</h4>
+
+<h5 id="Windows_XP">Windows XP</h5>
+
+<ol>
+ <li>Click the Start button.</li>
+ <li>Click "Run".</li>
+ <li>
+ <p>Type <code>firefox --ProfileManager</code>.</p>
+ </li>
+</ol>
+
+<h5 id="Windows_Vista7">Windows Vista/7</h5>
+
+<ol>
+ <li>Click the Start button.</li>
+ <li>Click the search bar at the bottom.</li>
+ <li>
+ <p>Type <code>firefox --ProfileManager</code>.</p>
+ </li>
+</ol>
+
+<h5 id="Windows_88.1">Windows 8/8.1</h5>
+
+<ol>
+ <li>Press "Windows + R" on your keyboard.</li>
+ <li>Type <code>firefox --ProfileManager</code>.</li>
+</ol>
+
+<p>If the Profile Manager window does not open, Firefox may have been running in the background, even though it was not visible. Close all instances of Firefox, or restart the computer, and then try again.</p>
+
+<h4 id="Linux">Linux</h4>
+
+<p>If Firefox is already included in your Linux distribution, or if you have installed Firefox with the package manager of your Linux distribution:</p>
+
+<ol>
+ <li>At the top of the Firefox window, click on the File menu and select Quit.</li>
+ <li>In Terminal run <code>firefox --ProfileManager</code></li>
+</ol>
+
+<p>If the Profile Manager window does not open, Firefox may have been running in the background, even though it was not visible. Close all instances of Firefox, or restart the computer and then try again.</p>
+
+<h4 id="macOS">macOS</h4>
+
+<ol>
+ <li>Run the <em>Terminal</em> application, which is found in Applications/Utilities.</li>
+ <li>Type or paste in the path to Firefox, followed by <code>.app/Contents/MacOS/firefox</code>.  For example, if Firefox is installed in the recommended location, you would enter <code>/Applications/Firefox.app/Contents/MacOS/firefox</code>.</li>
+ <li>If you have the path to your desired profile handy, enter a space character, followed by <code>-profile</code> followed by another space character, followed by the full path to the profile folder you wish to launch into.  This will launch Firefox immediately.  Otherwise, enter a space character followed by <code>--profilemanager</code>.  This will present the Profile Manager window in which you can make your selection.</li>
+ <li>Hit <em>return.</em></li>
+</ol>
+
+<p>Here is a complete example Terminal command from steps 2-3:</p>
+
+<pre>/Applications/Firefox.app/Contents/macOS/firefox -profile /Users/Suzie/Library/Application\ Support/Firefox/Profiles/r99d1z7c.default</pre>
+
+<p>If you want to do this frequently and more easily, you may wish to create an <em>Automator</em> application, as explained in <a href="http://sonnygill.net/mac/mac-multiple-firefox-profiles/">this tutorial</a>.</p>
+
+<h3 id="プロファイルの作成">プロファイルの作成</h3>
+
+<h4 id="Creating_a_profile_through_the_Profile_Manager">Creating a profile through the Profile Manager</h4>
+
+<p>These instructions should be the same for all operating systems.</p>
+
+<ol>
+ <li>To start the Create Profile Wizard, click "Create Profile..." in the Profile Manager.</li>
+ <li>Click Next and enter the name of the profile. Use a profile name that is descriptive, such as your personal name. This name is not exposed to the Internet.</li>
+ <li>You can also choose where to store the profile on your computer. To select storage location, click Choose Folder....</li>
+ <li>If you choose your folder location for the profile, select a new or empty folder. If you choose a folder that isn't empty, and you later remove the profile and choose the \"Delete Files\" option, everything inside that folder will be deleted.</li>
+ <li>To create the new profile, click Finish.</li>
+</ol>
+
+<h4 id="Creating_a_profile_through_the_Firefox_browser">Creating a profile through the Firefox browser</h4>
+
+<p>You can create a new Firefox profile directly from the browser.</p>
+
+<ol>
+ <li>Type about:profiles into the browser URL search bar</li>
+ <li>On the page, click Create a New Profile button</li>
+ <li>Read the introduction, and click Next</li>
+ <li>Enter a profile name for your new Profile. Use a profile name that is descriptive, such as your personal name. This name is not exposed to the Internet.</li>
+ <li>Optionally, to change where the profile will be stored on your computer, click Choose Folder...</li>
+ <li>To create the new profile, click Finish.</li>
+</ol>
+
+<h3 id="プロファイルの削除">プロファイルの削除</h3>
+
+<ol>
+ <li>In the Profile Manager, select the profile to remove, and click Delete Profile....</li>
+ <li>Confirm that you wish to delete the profile:
+ <ul>
+ <li>Don't Delete Files removes the profile from the Profile Manager yet retains the profile data files on your computer in the storage folder so that your information is not lost. "Don't Delete Files" is the preferred option, because it saves the old profile's folder, allowing you to recover the files to a new profile.</li>
+ <li>Delete Files removes the profile and its files, including the profile bookmarks, settings, passwords, etc.<br>
+ <br>
+ {{ warning("If you use the \"Delete Files\" option, the profile folder, and files will be deleted. This action cannot be undone.") }}</li>
+ <li>Cancel interrupts the profile deletion.</li>
+ </ul>
+ </li>
+</ol>
+
+<h3 id="プロファイルの名前変更">プロファイルの名前変更</h3>
+
+<ol>
+ <li>In the Profile Manager, select the profile you want to rename, and then click "Rename Profile".</li>
+ <li>Enter a new name for the profile and click on OK.</li>
+</ol>
+
+<div class="note">
+<p>Note: The folder containing the files for the profile is not renamed.</p>
+</div>
+
+<h2 id="オプション">オプション</h2>
+
+<h3 id="オフライン作業">オフライン作業</h3>
+
+<p>Choosing this option loads the selected profile, and starts Firefox offline. You can view previously viewed web pages, and experiment with your profile.</p>
+
+<h3 id="Don't_ask_at_startup">Don't ask at startup</h3>
+
+<p>If you have multiple profiles, Firefox prompts you for the profile to use each time you start Firefox. Select this option to allow Firefox to load the selected profile, without prompting at startup.</p>
+
+<div class="note">
+<p>Note: To access other profiles after selecting this option, you must start the Profile Manager first.</p>
+</div>
+
+<h2 id="プロファイルの使用">プロファイルの使用</h2>
+
+<h3 id="Windows_2">Windows</h3>
+
+<p>If you want to have the profile manager to pop up each time you start Firefox, so you can choose a profile, you will need to edit the "Target" of the launch icon. To do this:</p>
+
+<ol>
+ <li>Right-click the icon and choose "Properties".</li>
+ <li>When the properties dialog box pops up, you should see a "Target" text field that you can edit, and it should show the current file path.</li>
+ <li>After the closing quote, add <code>-ProfileManager</code>.</li>
+ <li>Click Ok.</li>
+</ol>
+
+<p>Now whenever you double click that icon, the profile manager should appear, allowing you to choose which profile you'd like to use.</p>
+
+<p>If you want individual icons to launch specific profiles, you will need to edit the "Target" of each icon. To do this:</p>
+
+<ol>
+ <li>Right-click the icon and choose "Properties".</li>
+ <li>When the properties dialog box pops up, you should see a "Target" text field that you can edit, and it should show the current file path.</li>
+ <li>To permanently set a specific profile, add <code>-p PROFILE_NAME</code> to the target path, but outside of the quotes, replacing "PROFILE_NAME" with the actual profile name you chose.</li>
+ <li>If you would also like to allow multiple instances of Firefox to run at the same time, add <code>-no-remote</code> after the profile name.</li>
+</ol>
+
+<p>Once you are all done, click Ok. Do this for each icon you'd like to have a specific profile for. Once done, each one should automatically start with the specified profile<code>.</code></p>
+
+<h3 id="Linux_2">Linux</h3>
+
+<p>There is no extremely straightforward way to create custom application launchers in Gnome 3 like there was in Gnome 2. The following tutorial will help get you going overall: <a class="external" href="https://blog.randell.ph/how-to-create-custom-application-launchers-in-gnome-3/" title="How to create custom application launchers in gnome 3">Gnome 3 Custom application launcher</a>. Once you get to the point of adding a new item, you can have the profile dialog show up every time or set the launcher to launch a specific profile.</p>
+
+<p>If you want to have the profile manager to pop up each time you start Firefox, so you can choose a profile, you will need to set the command line for your new launcher.</p>
+
+<ol>
+ <li>Set the "command" text field to target the executable file, likely "/usr/bin/firefox", and add the <code>-p</code> parameter.</li>
+</ol>
+
+<p>If you want individual icons to launch specific profiles, you will need to set the command line for your new launcher. To do this:</p>
+
+<ol>
+ <li>Set the "command" text field to target the executable file, likely "/usr/bin/firefox", and add the <code>-p PROFILE_NAME</code> parameter, replacing "PROFILE_NAME" with the specific profile.</li>
+ <li>Repeat as necessary, for each additional profile you want to set.</li>
+ <li>If you would also like to allow multiple instances of Firefox to run at the same time, add "-no-remote" after the profile name.</li>
+</ol>
+
+<h3 id="Mac_OS_X_2">Mac OS X</h3>
+
+<p>You can find a useful tutorial to set up custom launchers here: <a href="https://spf13.com/post/managing-multiple-firefox-profiles-in-os-x/" title="Managing Multiple Firefox Profiles in OSX">Managing Multiple Firefox Profiles in OSX</a>. Do note it's best to follow all steps in the "Creating the scripts" section, including the "edit Info.plist" step. Leave off the profile name if you want the profile selector to show up every time you launch.</p>
+
+<h2 id="さまざまな_Firefox_チャンネル用に複数のプロフィールを設定する">さまざまな Firefox チャンネル用に複数のプロフィールを設定する</h2>
+
+<p>This section will be especially helpful if you are a developer, wanting to work with multiple channels, and each having their separate launcher.</p>
+
+<h3 id="Windows_3">Windows</h3>
+
+<p>In Windows, the Developer and Nightly builds get their own directory in the "Programs" folder, so you don't have to worry about where to store the downloaded files. However, all three will attempt to use the same profile by default. You won't want to keep this behavior, because the different channels have different levels of features. To set each launcher, follow the Windows instructions at <a href="#Windows">Windows Launcher</a>.</p>
+
+<h3 id="Linux_3">Linux</h3>
+
+<p>In Linux, things aren't as automatically set up. You will likely get a prompt to download a tar.bz2 file to extract from. Extract the files to a new directory, and use the new launcher instructions from <a href="#Linux">here</a>. The only change you will need to make is the command path. You will want to set it to the directory where you extracted the Firefox channel's tar.bz2 file, and the executable "firefox" file located within this directory. The remaining profile assignment methods will remain the same. You will want to, for sure, add the <code>-no-remote</code> part to the end of the command field, so that you could run multiple instances at the same time.</p>
+
+<h3 id="Mac_OS_X_3">Mac OS X</h3>
+
+<p>You can find a useful tutorial to set up custom launchers here: <a href="https://spf13.com/post/managing-multiple-firefox-profiles-in-os-x/" title="Managing Multiple Firefox Profiles in OSX">Managing Multiple Firefox Profiles in OSX</a>. Do note it's best to follow all steps in the "Creating the scripts" section, including the "edit Info.plist" step. Also, you'll want to change the path in the do shell script to point to the correct .app file for the Firefox channel you want to target.</p>
diff --git a/files/ja/mozilla/firefox/multiprocess_firefox/index.html b/files/ja/mozilla/firefox/multiprocess_firefox/index.html
new file mode 100644
index 0000000000..3adde0c9b6
--- /dev/null
+++ b/files/ja/mozilla/firefox/multiprocess_firefox/index.html
@@ -0,0 +1,75 @@
+---
+title: マルチプロセス Firefox
+slug: Mozilla/Firefox/Multiprocess_Firefox
+translation_of: Mozilla/Firefox/Multiprocess_Firefox
+---
+<p>現バージョンのデスクトップ版 Firefox は、オペレーティングシステムにおけるプロセス 1 つでブラウザ全体を実行しています。特に、ブラウザ UI (別名 "chrome code") の JavaScript を実行するプロセスと Web ページ (別名 "content" または "web content") のコードを実行するプロセスが同じです。<br>
+ <br>
+ 将来のバージョンの Firefox は、ブラウザ UI のプロセスと web content のプロセスを分離します。このアーキテクチャの第 1 段階では、すべてのブラウザタブを同一のプロセスで実行して、ブラウザ UI を別のプロセスで実行する予定です。また将来の段階で、複数の content プロセスを持つようにする予定です。マルチプロセス Firefox を提供するプロジェクトは Electrolysis と呼ばれ、e10s と略されることがあります。</p>
+
+<p>一般的な Web ページは、マルチプロセス Firefox の影響を受けません。Firefox そのものや Firefox アドオンの開発に携わる人々は、web content に直接アクセスできる機能に依存するコードを使用している場合に影響を受けます。</p>
+
+<p>content へ直接アクセスせずに、chrome JavaScript では <a href="/ja/Firefox/Multiprocess_Firefox/Message_manager">メッセージマネージャ</a> を使用して content にアクセスしなければなりません。容易に移行できるようにするため、<a href="/ja/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">クロスプロセスオブジェクトラッパー</a>や<a href="/ja/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts#Compatibility_shims">アドオン開発者向けの互換性 shim</a> を実装しました。あなたがアドオン開発者で影響を受けるかがわからない場合は、<a href="/ja/Add-ons/Working_with_multiprocess_Firefox">マルチプロセス Firefox を扱うためのガイド</a>をご覧ください。</p>
+
+<p>現在マルチプロセス Firefox は <a class="external external-icon" href="https://www.mozilla.org/firefox/developer/">Firefox Developer Edition</a> で、既定で有効です。</p>
+
+<hr>
+<div class="column-container">
+<div class="column-half">
+<dl>
+ <dt><a href="/ja/Firefox/Multiprocess_Firefox/Technical_overview">技術概要</a></dt>
+ <dd>マルチプロセス Firefox がどのように実装されているかを、高レベルから概観します。</dd>
+ <dt><a href="/ja/Firefox/Multiprocess_Firefox/Glossary">用語</a></dt>
+ <dd>マルチプロセス Firefox で使用する用語のリファレンスです。</dd>
+ <dt><a href="/ja/Firefox/Multiprocess_Firefox/Message_Manager">メッセージマネージャ</a></dt>
+ <dd>chrome と content の間の通信に使用するオブジェクトのガイドです。</dd>
+ <dt><a href="/ja/Mozilla/Add-ons/SDK/Guides/Multiprocess_Firefox_and_the_SDK">SDK ベースのアドオン</a></dt>
+ <dd>Add-on SDK を使用して開発したアドオンのマイグレーション方法です。</dd>
+ <dt><a href="/ja/Firefox/Multiprocess_Firefox/Which_URIs_load_where">URI ごとの読み込み先</a></dt>
+ <dd>どの URI (chrome:、about:、file:、resource:) がどのプロセスに読み込まれるかのクイックガイドです。</dd>
+</dl>
+</div>
+
+<div class="column-half">
+<dl>
+ <dt><a href="/ja/Firefox/Multiprocess_Firefox/Motivation">マルチプロセス化を行う理由</a></dt>
+ <dd>なぜマルチプロセス Firefox を実装するか? その答えはパフォーマンス、セキュリティ、安定性です。</dd>
+ <dt><a href="/ja/Add-ons/Working_with_multiprocess_Firefox">アドオンのマイグレーションガイド</a></dt>
+ <dd>あなたがアドオン開発者でしたら、アドオンが影響を受けるかを突き止めてコードの更新方法を確認してください。</dd>
+ <dt><a href="/ja/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">クロスプロセスオブジェクトラッパー</a></dt>
+ <dd>クロスプロセスオブジェクトラッパーは、chrome code が同期的に content にアクセスする機能を提供する、マイグレーション支援措置です。</dd>
+ <dt><a href="/ja/Firefox/Multiprocess_Firefox/Debugging_frame_scripts">content プロセスのデバッグ</a></dt>
+ <dd>frame やプロセスのスクリプトを含む、content プロセスで実行しているコードをデバッグする方法です。</dd>
+ <dt><a href="https://developer.mozilla.org/docs/Mozilla/Firefox/Multiprocess_Firefox/Tab_selection_in_multiprocess_Firefox">マルチプロセス化された Firefox におけるタブの選択方法</a></dt>
+ <dd>マルチプロセス化された Firefox ではタブの選択方法が異なります。</dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<div class="column-container">
+<div class="column-half">
+<dl>
+ <dt><a href="/ja/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts">chrome スクリプトの制限</a></dt>
+ <dd>chrome code で実施できなくなることと、その修正方法の実例です。</dd>
+</dl>
+</div>
+
+<div class="column-half">
+<dl>
+ <dt><a href="/ja/Firefox/Multiprocess_Firefox/Limitations_of_frame_scripts">frame スクリプトの制限</a></dt>
+ <dd>frame スクリプトで実施できなくなることと、その代替手段の実例です。</dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<h2 id="Contact_us" name="Contact_us">問い合わせ先</h2>
+
+<p>プロジェクトについて詳しく知り、参加するか疑問点を尋ねてください。</p>
+
+<ul>
+ <li><strong>Electrolysis プロジェクトのページ</strong>: <a href="https://wiki.mozilla.org/Electrolysis">https://wiki.mozilla.org/Electrolysis</a></li>
+ <li><strong>IRC</strong>: <a href="https://wiki.mozilla.org/IRC">irc.mozilla.org</a> の #e10s</li>
+ <li><strong>メーリングリスト</strong>: <a href="https://groups.google.com/forum/#!forum/mozilla.dev.tech.electrolysis">dev.tech.electrolysis</a></li>
+</ul>
diff --git a/files/ja/mozilla/firefox/multiprocess_firefox/message_manager/index.html b/files/ja/mozilla/firefox/multiprocess_firefox/message_manager/index.html
new file mode 100644
index 0000000000..869474d44f
--- /dev/null
+++ b/files/ja/mozilla/firefox/multiprocess_firefox/message_manager/index.html
@@ -0,0 +1,71 @@
+---
+title: Message manager
+slug: Mozilla/Firefox/Multiprocess_Firefox/Message_Manager
+tags:
+ - NeedsTranslation
+ - TopicStub
+translation_of: Mozilla/Firefox/Multiprocess_Firefox/Message_Manager
+---
+<p>Message managers provide a way for chrome-privileged JavaScript code to communicate across process boundaries. They are particularly useful for allowing chrome code, including the browser's own code and extension code, to access web content when the browser is running web content in a separate process.</p>
+
+<p>These guides explain how to use message managers in multiprocess Firefox.</p>
+
+<p>Note that none of this requires multiprocess Firefox: everything described here will work with single-process Firefox, so the same code will work in both variants.</p>
+
+<hr>
+<h2 id="Guides">Guides</h2>
+
+<div class="column-container">
+<div class="column-half">
+<dl>
+ <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Message_manager_overview">Message manager overview</a></dt>
+ <dd> </dd>
+ <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Frame_script_loading_and_lifetime">Frame script loading and lifetime</a></dt>
+ <dd> </dd>
+ <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Communicating_with_frame_scripts">Communicating with frame scripts</a></dt>
+ <dd> </dd>
+ <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Performance">Performance Best Practices</a></dt>
+ <dd> </dd>
+</dl>
+</div>
+
+<div class="column-half">
+<dl>
+ <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Frame_script_environment">Frame script environment</a></dt>
+ <dd> </dd>
+ <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/_Limitations_of_frame_scripts">Limitations of frame scripts</a></dt>
+ <dd> </dd>
+ <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Process_scripts">Process scripts</a></dt>
+ <dd> </dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<h2 id="API_reference">API reference</h2>
+
+<div class="column-container">
+<div class="column-half">
+<dl>
+ <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader">nsIFrameScriptLoader</a></dt>
+ <dd> </dd>
+ <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager">nsIMessageListenerManager</a></dt>
+ <dd> </dd>
+ <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster">nsIMessageBroadcaster</a></dt>
+ <dd> </dd>
+ <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender">nsIMessageSender</a></dt>
+ <dd> </dd>
+</dl>
+</div>
+
+<div class="column-half">
+<dl>
+ <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISyncMessageSender">nsISyncMessageSender</a></dt>
+ <dd> </dd>
+ <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentFrameMessageManager">nsIContentFrameMessageManager</a></dt>
+ <dd> </dd>
+ <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProcessScriptLoader">nsIProcessScriptLoader</a></dt>
+ <dd> </dd>
+</dl>
+</div>
+</div>
diff --git a/files/ja/mozilla/firefox/multiprocess_firefox/message_manager/message_manager_overview/index.html b/files/ja/mozilla/firefox/multiprocess_firefox/message_manager/message_manager_overview/index.html
new file mode 100644
index 0000000000..5e00266603
--- /dev/null
+++ b/files/ja/mozilla/firefox/multiprocess_firefox/message_manager/message_manager_overview/index.html
@@ -0,0 +1,444 @@
+---
+title: Message manager overview
+slug: Mozilla/Firefox/Multiprocess_Firefox/Message_Manager/Message_manager_overview
+translation_of: Mozilla/Firefox/Multiprocess_Firefox/Message_Manager/Message_manager_overview
+---
+<div class="summary">
+<p>マルチプロセスの Firefo では 2 つのプロセスが存在します。</p>
+
+<ul>
+ <li>Chrome プロセスまたは親プロセスと呼ばれるもので、ブラウザ UI(chrome) コードと拡張によって挿入されたコードが動いています。</li>
+ <li>コンテンツプロセスまたは子プロセスと呼ばれます。Web コンテンツのすべてが動いています。近い将来のマルチプロセス Firefo のバージョンでは、それぞれのタブが個別のプロセスで動作するようになりますが、現在はすべてのコンテンツタブが 1 つのコンテンツプロセスを共有している状況です。</li>
+</ul>
+
+<p>Message manager はあるプロセス上の chrome 権限 JavaScript がほかのプロセス上の Chrome 権限 JavaScript と通信することを可能にします。</p>
+
+<p>この記事では種類の違う message manager の説明、アクセス方法、使いどころの説明をします。</p>
+</div>
+
+<p>トップレベルにおいて、2つの違う種類の message manager が存在します。</p>
+
+<ul>
+ <li><em>Frame message managers:</em>コンテンツタブにロードされた iframe にロードされた chrome プロセスコードを有効にします。(現在は 1 つのブラウザタブ) それは<em> frame scripts</em> と呼ばれ、 その名の通り、ブラウザ内の特定のフレームにスコープされます。もし chrome コードを子プロセスで動作して、Web コンテンツにアクセスしたい場合は、一般的にこの種の message manager を使います。</li>
+ <li><em>Process message managers: </em>プロセスの境界を越え、親(chrome) プロセスで動作しているコードが子(コンテンツ)プロセスで動作するコードと通信することを可能にします。これが子プロセスにおいてはグローバルである事を除いては、frame scripts に似ています。Process scripts は <a href="/en/docs/Observer_Notifications">observer</a> や <a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPolicy">content policy</a> のグローバルサービスにアクセスするように、エクステンションがコンテンツプロセスで限られたコードを実行する場合と使い方が似ています。</li>
+</ul>
+
+<h2 id="Frame_message_managers">Frame message managers</h2>
+
+<p>マルチプロセスの Firefo では、chrome コードが Web コンテンツにアクセスする必要が出た時に、以下のように使います。</p>
+
+<ul>
+ <li>factor the code that needs direct access to content into separate scripts, which are called "frame scripts"</li>
+ <li>use a frame message manager to load these frame scripts into the content process</li>
+ <li>use the frame message manager API to communicate with the frame script</li>
+</ul>
+
+<div class="note">
+<p>Some older articles on multiprocess Firefox and the message manager might refer to "content scripts" instead of "frame scripts", but this usage is deprecated because the Add-on SDK uses "content script" to refer to a <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts">similar but different kind of script</a>.</p>
+</div>
+
+<p>So fundamentally, frame message managers enable chrome code to:</p>
+
+<ul>
+ <li>load a script into a frame (essentially, a single browser tab) in the content process. These scripts are called "frame scripts".</li>
+ <li>communicate with frame scripts using message-passing APIs</li>
+</ul>
+
+<p>There are various types of frame message managers, as depicted in this diagram:</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/10795/frame-message-managers.png" style="display: block; height: 596px; margin-left: auto; margin-right: auto; width: 737px;"></p>
+
+<p>This diagram shows the setup when there are 2 browser windows open, one with 2 tabs open and one with 1 tab open.</p>
+
+<h3 id="Chrome_process">Chrome process</h3>
+
+<p>In the chrome process, there's a hierarchy of frame message managers: the global frame message manager, window message managers, and browser message managers.</p>
+
+<h4 id="Global_frame_message_manager">Global frame message manager</h4>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td style="width: 20%;">Description</td>
+ <td>
+ <p>There's a single <em>global frame message manager</em> in the chrome process.</p>
+
+ <p>This operates on all frames, in all content tabs. If you load a frame script using the global frame message manager, the script gets loaded separately into every open tab: three times, in the diagram above. Similarly, if you send a message using the global frame message manager, it's received by all content tabs, and is then delivered to any frame scripts that are listening for it.</p>
+
+ <p>Its most important functions and attributes are:</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#childCount">childCount</a></code> : contains the number of children (typically, browser windows)</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#getChildAt()">getChildAt()</a></code> : get the child at the given index</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader#loadFrameScript()">loadFrameScript()</a></code> : load a frame script into every tab in the browser</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#broadcastAsyncMessage()">broadcastAsyncMessage()</a></code> : send a message to frame scripts</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#addMessageListener()">addMessageListener()</a></code> : start listening to a specific message from all frame scripts</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#removeMessageListener()">removeMessageListener()</a></code> : stop listening to a specific message</p>
+ </td>
+ </tr>
+ <tr>
+ <td>Interfaces</td>
+ <td>
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader" title="">nsIFrameScriptLoader</a></code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager" title="">nsIMessageListenerManager</a></code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster" title="">nsIMessageBroadcaster</a></code></p>
+ </td>
+ </tr>
+ <tr>
+ <td>How to access</td>
+ <td>
+ <p>Access it using <code><a href="/en-US/docs/Components.classes">Components.classes</a></code>:</p>
+
+ <pre class="brush: js language-js">
+// chrome script
+let globalMM = Cc["@mozilla.org/globalmessagemanager;1"]
+ .getService(Ci.nsIMessageListenerManager);</pre>
+
+ <p>You can also access it as the <code>mm</code> property of <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm">Services.jsm</a>, if you are in the parent process.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h4 id="Window_message_manager">Window message manager</h4>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td style="width: 20%;">Description</td>
+ <td>
+ <p>There's a <em>window message manager</em> for every browser window: two, in the diagram above.</p>
+
+ <p>It operates on all content tabs in a given window. If you load a frame script using the window message manager it gets loaded separately into each tab open in that particular window. If you send a message using the window message manager, it gets sent to all content tabs in that window.</p>
+
+ <p>Its most important functions and attributes are:</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#childCount">childCount</a></code> : contains the number of children (typically, browser tabs)</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#getChildAt()">getChildAt()</a></code> : get the child at the given index</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader#loadFrameScript()">loadFrameScript()</a></code> : load a frame script into every tab in this window</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#broadcastAsyncMessage()">broadcastAsyncMessage()</a></code> : send a message to all frame scripts in this window</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#addMessageListener()">addMessageListener()</a></code> : start listening to a specific message from frame scripts</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#removeMessageListener()">removeMessageListener()</a></code> : stop listening to a specific message</p>
+ </td>
+ </tr>
+ <tr>
+ <td>Interfaces</td>
+ <td>
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader" title="">nsIFrameScriptLoader</a></code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager" title="">nsIMessageListenerManager</a></code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster" title="">nsIMessageBroadcaster</a></code></p>
+ </td>
+ </tr>
+ <tr>
+ <td>How to access</td>
+ <td>
+ <p>You can access it as a property of the browser window:</p>
+
+ <pre class="brush: js">
+// chrome script
+let windowMM = window.messageManager;</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h4 id="Browser_message_manager">Browser message manager</h4>
+
+<div class="note">
+<p>Note that in this context, "browser" refers to the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/browser">XUL &lt;browser&gt; object</a>, which is a frame that hosts a single Web document. It does not refer to the more general sense of a Web browser.</p>
+</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td style="width: 20%;">Description</td>
+ <td>
+ <p>Finally, there's a <em>browser message manager</em> for every open content tab: three, in the diagram above.</p>
+
+ <p>This corresponds one-to-one with a content tab. Scripts you load using a browser message manager are loaded only into that content tab, and messages you send are delivered only to that content tab.</p>
+
+ <p>You can mix and match: so for example, you could load a script into every tab using the global message manager, but then send a message to the script instance loaded into a specific tab by using the browser message manager.</p>
+
+ <p>Its most important functions are:</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader#loadFrameScript()">loadFrameScript()</a></code> : load a frame script into this browser frame (tab)</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender#sendAsyncMessage()">sendAsyncMessage()</a></code> : send a message to all frame scripts in this browser frame</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#addMessageListener()">addMessageListener()</a></code> : start listening to a specific message from frame scripts</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#removeMessageListener()">removeMessageListener()</a></code> : stop listening to a specific message</p>
+ </td>
+ </tr>
+ <tr>
+ <td>Interfaces</td>
+ <td>
+ <p><code>nsIProcessChecker</code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader">nsIFrameScriptLoader</a></code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager">nsIMessageListenerManager</a></code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender">nsIMessageSender</a></code></p>
+ </td>
+ </tr>
+ <tr>
+ <td>How to access</td>
+ <td>
+ <p>The browser message manager can be accessed as a property of the XUL <code>&lt;browser&gt;</code> element:</p>
+
+ <pre class="brush: js">
+// chrome script
+let browserMM = gBrowser.selectedBrowser.messageManager;</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Content_process">Content process</h3>
+
+<h4 id="Content_frame_message_manager">Content frame message manager</h4>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td style="width: 20%;">Description</td>
+ <td>
+ <p>There's a <em>content frame message manager</em> for every open tab. It's the content-side end of frame message manager conversations.</p>
+
+ <p>Frame scripts are loaded into the content frame message manager scope, and messages from chrome message managers end up here.</p>
+
+ <p>The content frame message manager provides the <a href="/en-US/Firefox/Multiprocess_Firefox/Frame_script_environment">global object for frame scripts</a> (but note that there is trickery to ensure that top-level variables defined by frame scripts are not shared).</p>
+
+ <p>Frame scripts can use this object to send messages to the chrome process, and to receive messages from the chrome process.</p>
+
+ <p>Its most important attributes and functions are:</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentFrameMessageManager#content">content</a></code> : access the DOM window hosted by the tab</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentFrameMessageManager#docShell">docShell</a></code> : access the top-level docshell</p>
+
+ <p><code><a href="/en-US/docs/Components_object">Components</a></code> : access privileged objects and APIs</p>
+
+ <p><code><a href="/en-US/docs/Web/API/EventTarget/addEventListener">addEventListener()</a></code> : listen to DOM events</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#addMessageListener()">addMessageListener()</a></code> : receive messages from the chrome process</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender#sendAsyncMessage()">sendAsyncMessage()</a></code> : send asynchronous messages to the chrome process</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISyncMessageSender#sendSyncMessage()">sendSyncMessage()</a></code> : send synchronous messages to the chrome process</p>
+ </td>
+ </tr>
+ <tr>
+ <td>Interfaces</td>
+ <td>
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIDOMEventTarget">nsIDOMEventTarget</a></code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager">nsIMessageListenerManager</a></code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender">nsIMessageSender</a></code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISyncMessageSender">nsISyncMessageSender</a></code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentFrameMessageManager">nsIContentFrameMessageManager</a></code></p>
+ </td>
+ </tr>
+ <tr>
+ <td>How to access</td>
+ <td>The content frame message manager is the global object in frame scripts.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Process_message_managers">Process message managers</h2>
+
+<p>Process message managers はプロセス境界を越え、異なるプロセスと通信することを可能にします。マルチプロセスの Firefo のコンセプトは次の通り。</p>
+
+<ul>
+ <li>"親プロセス"</li>
+ <li>"子プロセス" は親プロセスによって生成されたプロセス</li>
+</ul>
+
+<p>実用的な目的で、マルチプロセスの Firefo の親プロセスは chrome プロセスで、子プロセスは コンテンツプロセスです。</p>
+
+<p>各子プロセスは、single <em>child process message manager</em> (CPMM) を持ちます。それに加え、親プロエスでは <em>child-in-process message manager</em> (CIPMM) をもっています。</p>
+
+<p>各子プロセスの message manager は、親プロセスに対応する <em>parent process message manager</em> (PPMM) を持っています。</p>
+
+<p>親プロセスには 1つの <em>global parent process message manager</em> (GPPMM) をもっており、それがすべての親プロセスの message manager に対するアクセスを提供します。2 つの子プロセスを持つと以下の図のように構築されます。</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/10799/process-message-managers.png" style="display: block; height: 477px; margin-left: auto; margin-right: auto; width: 477px;"></p>
+
+<p>GPPMM を使って、CIPMM とすべての CPMM にブロードキャストすることができます。PPMM は対応する CPMM にだけメッセージを送信できます。CPMM では親プロセスにメッセージを送信できます。まず初めに対応する PPMM が受信でき、次に GPPMM が受信します。<br>
+ <br>
+ From Firefox 38 onwards, you can also use a parent process message manager to load a script into a child process. This is the recommended way to load a script that executes just once per child process, which is something you might want to do if you are interacting with some global service (for example, adding listeners to observer notifications or registering a content policy).</p>
+
+<h3 id="Parent_process">Parent process</h3>
+
+<h4 id="Global_parent_process_message_manager">Global parent process message manager</h4>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td style="width: 20%;">Description</td>
+ <td>
+ <p>The global parent process message manager (GPPMM) is global to the parent process.</p>
+
+ <ul>
+ <li>Messages sent using the GPPMM get sent to all CPMMs in all child processes.</li>
+ <li>Process scripts loaded using the GPPMM get loaded in all child processes.</li>
+ </ul>
+
+ <p>Its most important functions and attributes are:</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#childCount">childCount</a></code> : contains the number of children (child processes, plus the in-content child)</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#getChildAt()">getChildAt()</a></code> : get the child at the given index</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProcessScriptLoader#loadProcessScript()">loadProcessScript()</a></code> : load a process script into every content process</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#broadcastAsyncMessage()">broadcastAsyncMessage()</a></code> : send a message to all process scripts</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#addMessageListener()">addMessageListener()</a></code> : start listening to a specific message from process scripts</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#removeMessageListener()">removeMessageListener()</a></code> : stop listening to a specific message</p>
+ </td>
+ </tr>
+ <tr>
+ <td>Interfaces</td>
+ <td>
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProcessScriptLoader">nsIProcessScriptLoader</a></code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager" title="">nsIMessageListenerManager</a></code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster" title="">nsIMessageBroadcaster</a></code></p>
+ </td>
+ </tr>
+ <tr>
+ <td>How to access</td>
+ <td>
+ <p>You can access the GPPMM with code like this:</p>
+
+ <pre class="brush: js">
+// parent process
+let ppmm = Cc["@mozilla.org/parentprocessmessagemanager;1"]
+ .getService(Ci.nsIMessageBroadcaster);</pre>
+
+ <p>You can also access it as the <code>ppmm</code> property of <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm">Services.jsm</a>, if you are in the parent process.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h4 id="Parent_process_message_manager">Parent process message manager</h4>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td style="width: 20%;">Description</td>
+ <td>
+ <p>There's one parent process message manager (PPMM) in the parent process for every child process, and its API is oriented to that one child process.</p>
+
+ <ul>
+ <li>Messages sent using the PPMM are received only by the corresponding CPMM</li>
+ <li>Scripts loaded using the PPMM are loaded only into the corresponding child process.</li>
+ </ul>
+
+ <p>Its most important functions are:</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProcessScriptLoader#loadProcessScript()">loadProcessScript()</a></code> : load a process script into the content process</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster#broadcastAsyncMessage()">broadcastAsyncMessage()</a></code> : send a message to process scripts</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#addMessageListener()">addMessageListener()</a></code> : start listening to a specific message from process scripts</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#removeMessageListener()">removeMessageListener()</a></code> : stop listening to a specific message</p>
+ </td>
+ </tr>
+ <tr>
+ <td>Interfaces</td>
+ <td>
+ <p><code>nsIProcessChecker</code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProcessScriptLoader">nsIProcessScriptLoader</a></code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager">nsIMessageListenerManager</a></code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender">nsIMessageSender</a></code></p>
+ </td>
+ </tr>
+ <tr>
+ <td>How to access</td>
+ <td>
+ <p>You can access a PPMM using the <code>getChildAt()</code> function in the GPPMM:</p>
+
+ <pre class="brush: js">
+// parent process
+let ppmm = Services.ppmm.getChildAt(1);</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Child_process">Child process</h3>
+
+<h4 id="Child_process_message_manager">Child process message manager</h4>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td style="width: 20%;">Description</td>
+ <td>
+ <p>There's one child process message manager (CPMM) in each child process. Messages sent using the CPMM are sent to the corresponding PPMM and are also relayed to the GPPMM.</p>
+
+ <p>Its most important attributes and functions are:</p>
+
+ <p><code><a href="/en-US/docs/Components_object">Components</a></code> : access privileged objects and APIs</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager#addMessageListener()">addMessageListener()</a></code> : receive messages from the parent process</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender#sendAsyncMessage()">sendAsyncMessage()</a></code> : send asynchronous messages to the parent process</p>
+
+ <p><code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISyncMessageSender#sendSyncMessage()">sendSyncMessage()</a></code> : send synchronous messages to the parent process</p>
+ </td>
+ </tr>
+ <tr>
+ <td>Interfaces</td>
+ <td>
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager">nsIMessageListenerManager</a></code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender">nsIMessageSender</a></code></p>
+
+ <p><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISyncMessageSender">nsISyncMessageSender</a></code></p>
+
+ <p><code>nsIContentProcessMessageManager</code></p>
+ </td>
+ </tr>
+ <tr>
+ <td>How to access</td>
+ <td>
+ <p>Code running in a child process can access the CPMM with code like this:</p>
+
+ <pre class="brush: js">
+// child process script
+let cpmm = Cc["@mozilla.org/childprocessmessagemanager;1"]
+ .getService(Ci.nsISyncMessageSender);</pre>
+
+ <p>You can also access it as the <code>cpmm</code> property of <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm">Services.jsm</a>, if you are in the child process.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/ja/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html b/files/ja/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html
new file mode 100644
index 0000000000..c94bbd1737
--- /dev/null
+++ b/files/ja/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html
@@ -0,0 +1,28 @@
+---
+title: Web コンテンツの互換性
+slug: Mozilla/Firefox/Multiprocess_Firefox/Web_content_compatibility
+translation_of: Mozilla/Firefox/Multiprocess_Firefox/Web_content_compatibility
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p><span class="seoSummary">Firefoxにマルチプロセス機能を導入するには、Webコンテンツにシームレスで目に見えないものが必要ですが、過去の挙動からの例外や微妙な変更があります。 この資料では、遭遇する可能性のある既知の相違点について説明します。</span></p>
+
+<h2 id="イベント">イベント</h2>
+
+<p>ここでは、マルチプロセスのFirefoxの実装によって動作が変更されたイベントに関する情報を見つけることができます。</p>
+
+<h3 id="&lt;option>_から_&lt;select>_へイベントがバブルしない"><code>&lt;option&gt;</code> から <code>&lt;select&gt;</code> へイベントがバブルしない</h3>
+
+<p>以前より、Firefoxはキーボードとマウスのイベントを {{HTMLElement("option")}} 要素から {{HTMLElement("select")}} 要素にバブルアップさせました。この動作は多くのブラウザで矛盾(たとえば、イベントがChromeでバブルアップしないなど)しています。 Web互換性を高めるため(加えて技術的な理由のため)に、Firefoxがマルチプロセスモードで、<code>&lt;select&gt;</code>要素がドロップダウンリストとして表示されている場合、これらのイベントはバブルアップしません。<code>&lt;select&gt;</code>がインラインで表示され、<code>multiple</code>属性が定義されているか、<code>size</code>属性が1より大きい値に設定されている場合、これらのイベントはバブルアップします。<br>
+ <br>
+ イベントの {{HTMLElement("option")}} 要素を見るのではなく、{{HTMLElement("select")}} の {{event("change")}} イベントを監視する必要があります。詳細は {{bug(1090602)}} を参照してください。</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Mozilla/Firefox/Multiprocess_Firefox">Multiprocess Firefox</a></li>
+ <li>{{HTMLElement("option")}}</li>
+ <li>{{HTMLElement("select")}}</li>
+ <li>{{domxref("HTMLOptionElement")}}</li>
+ <li>{{domxref("HTMLSelectElement")}}</li>
+</ul>
diff --git a/files/ja/mozilla/firefox/multiprocess_firefox/which_uris_load_where/index.html b/files/ja/mozilla/firefox/multiprocess_firefox/which_uris_load_where/index.html
new file mode 100644
index 0000000000..d4eccacf5a
--- /dev/null
+++ b/files/ja/mozilla/firefox/multiprocess_firefox/which_uris_load_where/index.html
@@ -0,0 +1,61 @@
+---
+title: URIのロードする先
+slug: Mozilla/Firefox/Multiprocess_Firefox/Which_URIs_load_where
+translation_of: Mozilla/Firefox/Multiprocess_Firefox/Which_URIs_load_where
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p>最初にページのURIスキームに基づいて、ブラウザは Chrome プロセスまたはコンテンツプロセスでページを読み込むかどうかを決定できます。一部のスキームでは、デフォルトの動作を変更できます。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">スキーム</th>
+ <th scope="col">振る舞い</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>about:</code></td>
+ <td>
+ <p>By default, <code>about:</code> pages are always loaded in the chrome process. However, when you register a new <code>about:</code> page, you can change this default.</p>
+
+ <p>Two new flags are defined in <code><a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/protocol/about/nsIAboutModule.idl">nsIAboutModule</a></code>:</p>
+
+ <ul>
+ <li><code>URI_CAN_LOAD_IN_CHILD</code>: the page will be loaded in the same process as the <code><a href="/en-US/docs/XUL/browser">browser</a></code> that has loaded it.</li>
+ <li><code>URI_MUST_LOAD_IN_CHILD</code>: the page will always be loaded in a child process.</li>
+ </ul>
+
+ <p>To use one of these flags, return it from your implementation of <code>getURIFlags</code> in the <a href="/en-US/docs/Custom_about:_URLs">code that registers the <code>about:</code> URI</a>.</p>
+
+ <p>If you use these flags, you must register the about page in the framescript for each tab. If you do not set multiprocessCompatible to true in your install.rdf then shims will be used. But the e10s shims will be deprecated soon. Read more here - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1257201">Bug 1257201</a>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>chrome:</code></td>
+ <td>
+ <p>By default, <code>chrome:</code> pages are always loaded in the chrome process. However, when you register a new <code>chrome:</code> page, you can change this default.</p>
+
+ <p>Two new flags are defined in the <a href="/en-US/docs/Chrome_Registration">chrome.manifest file</a>:</p>
+
+ <ul>
+ <li>remoteenabled: the page will be loaded in the same process as the <code><a href="/en-US/docs/XUL/browser">browser</a></code> that has loaded it.</li>
+ <li>remoterequired: the page will always be loaded in a child process.</li>
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td><code>file:</code></td>
+ <td>
+ <p>常にコンテンツプロセスに読み込まれます。</p>
+
+ <p><strong>注:</strong> これは <code>file:</code> という意味ではなく、コンテンツプロセスのコードでURIを自由に使用することができます。 サンドボックス化は特定のディレクトリをブラックリストに載せ、今後の変更により <code>file:</code> URIを通常のWebコンテンツとは別の独立したコンテンツプロセスに制限する可能性があります。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1187099">bug 1187099</a> で、これがプロファイルディレクトリからファイルをロードしようとしているアドオンにどのように影響するかを見てください。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>resource:</code></td>
+ <td>常にコンテンツプロセスに読み込まれます。</td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/ja/mozilla/firefox/multiprocess_firefox/目的/index.html b/files/ja/mozilla/firefox/multiprocess_firefox/目的/index.html
new file mode 100644
index 0000000000..b9635595c4
--- /dev/null
+++ b/files/ja/mozilla/firefox/multiprocess_firefox/目的/index.html
@@ -0,0 +1,44 @@
+---
+title: マルチプロセス化を行う理由
+slug: Mozilla/Firefox/Multiprocess_Firefox/目的
+translation_of: Mozilla/Firefox/Multiprocess_Firefox/Motivation
+---
+<p>Firefoxがコンテンツを別のプロセスで動作するようにするには、3つの目的があります。:それは、パフォーマンス、セキュリティ、安定性です</p>
+
+<h2 id="パフォーマンス">パフォーマンス</h2>
+
+<p>Mozilla は過去2年間、ブラウザの応答性の向上に注力してきました。その目的は<a href="/docs/Glossary/Jank">プチフリ</a>、つまり大きなページをロードしているときやタイピング中、もしくはスクロール中にブラウザがフリーズしたように見える状況を減らすことにありました。近年、応答性はスループットよりも重要になりつつあります。応答性の向上に関する様々な改良は、<a href="https://wiki.mozilla.org/Performance/Snappy">Snappy project</a> の一部として達成されました。主な点を挙げると以下の通りになります:</p>
+
+<ul>
+ <li>メインスレッドがユーザへの応答を続けられるようにするために、時間のかかる処理の別スレッドへの移行すること</li>
+ <li>入出力によってメインスレッドがブロックされるのさけるため、入出力を別スレッドで非同期に行うこと</li>
+ <li>インクリメンタルGC に代表される時間のかかる処理を細かく分割し、イベントループ中で処理を行うように変更すること</li>
+</ul>
+
+<p>すぐにできる改良の多くは成されており、残った問題は修正が難しい物ばかりでした。例えば JavaScript の実行やメインスレッドで行われるレイアウト処理などです。これらはイベントループをブロックするのですが、別のプロセスへ分離するには難しい処理でもあります。これらの処理は DOM のようなデータにアクセスする必要がありますが、これらのデータはスレッドセーフではないからです。他の選択肢として、イベントループを JavaScript の処理の中に入れる事も検討しましたが、Firefox  の他の部分(アドオンではありません)によって難しい事がわかりました。</p>
+
+<p>Web コンテンツを別のプロセスに分離する事は、良い代替策でした。スレッドを利用するアプローチと同様、Firefox は JavaScript やレイアウト処理がコンテントプロセスで行われている間に イベントループを実行できる上に、DOM やコンテンツデータにアクセスしない UI のコードをスレッドセーフにしなくても済みます。その反面、Firefox の UI プロセスは明示的にメッセージパッシングを行わないとコンテンツデータにアクセスできなくなります。</p>
+
+<p>このトレードオフはいくつかの理由から許容できると考えています:</p>
+
+<ul>
+ <li>すべての Firefox のコードがよくコンテンツ DOM にアクセスするわけではない</li>
+ <li>Firefox OS と共有されているコードはすでにメッセージパッシングを利用するものになっていること</li>
+ <li>マルチプロセスモデルでのメッセージパッシングを利用したコンテントアクセスはその失敗が明白であるのに対し、適切なロックなしに行われたコンテンツアクセスに起因するスレッドのバグは発見が難しくデバッグも困難であるため</li>
+</ul>
+
+<h2 id="セキュリティ">セキュリティ</h2>
+
+<p>Firefox に攻撃可能なバグがあった場合、それを利用してユーザのコンピュータを乗っ取ることが可能です。この問題の解決策として最も強力なものは、<a href="http://en.wikipedia.org/wiki/Sandbox_%28computer_security%29">サンドボックス化</a>です。 技術的にはサンドボックス化にマルチプロセス化は必要ありません。しかしシングルプロセスの Firefox 上でサンドボックス化を行っても、あまり有用ではありません。サンドボックスはあくまでプロセスが、通常のプロセスがしないような振る舞いをするのを阻止するための機能です。アドオンがインストールされている場合が典型的ですが、Firefox の通常プロセスはネットワーク通信やファイルへのアクセスを行います。そのため、シングルプロセスの Firefox では制限をうまく掛けることが難しくなっています。</p>
+
+<p>マルチプロセス化したFirefoxでのコンテンツプロセスは、サンドボックス化されます。通常、コンテンツプロセスはファイルシステムに直接アクセスすることはありません。そのような場合はメインプロセスに対してファイルアクセスリクエストを送ります。メインプロセスは、そのリクエストが妥当なものかを検証できるため、コンテンツプロセスに対するサンドボックスの制限は極めて厳しいものなります。その結果として、Firefox にセキュリティホールを作ることが難しくなると期待されます。</p>
+
+<h2 id="安定性">安定性</h2>
+
+<p>Web ページ中で実行されるプログラムがクラッシュした場合、ブラウザ全体が停止してしまします。マルチプロセス化することによって、停止するのはクラッシュしたプログラムの動作するコンテントプロセスのみとなります。</p>
+
+<div class="note">
+<p>このページの内容の多くは、Bill McCloskey のブログポストの内容を含んでいます。詳しくはこちらをご覧ください: <a href="http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/">http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/</a></p>
+</div>
+
+<p> </p>
diff --git a/files/ja/mozilla/firefox/performance_best_practices_for_firefox_fe_engineers/index.html b/files/ja/mozilla/firefox/performance_best_practices_for_firefox_fe_engineers/index.html
new file mode 100644
index 0000000000..7ccf3a2ec4
--- /dev/null
+++ b/files/ja/mozilla/firefox/performance_best_practices_for_firefox_fe_engineers/index.html
@@ -0,0 +1,207 @@
+---
+title: Firefox フロントエンドエンジニアのためのパフォーマンスベストプラクティス
+slug: Mozilla/Firefox/Performance_best_practices_for_Firefox_fe_engineers
+translation_of: Mozilla/Firefox/Performance_best_practices_for_Firefox_fe_engineers
+---
+<h2 id="可能であればメインスレッドを避けること">可能であればメインスレッドを避けること</h2>
+
+<p>メインスレッドはユーザーイベントを処理し、描画を行います。また、多くの JavaScript はメインスレッドで動きます。</p>
+
+<p>メインスレッドを避けるほどに、ユーザーイベントや描画、応答が素早くできます。</p>
+
+<p>メインスレッドから何か計算する必要がある場合、 <a href="/ja/docs/Web/API/Web_Workers_API/Using_web_workers">Worker</a> を使うことをおすすめします。また、より高い権限が必要な場合は <a href="/en-US/docs/Web/API/ChromeWorker">ChromeWorker</a> (Firefoxのみ)を使うことを検討してください。</p>
+
+<h2 id="requestIdleCallback">requestIdleCallback</h2>
+
+<p>どうしてもメインスレッドで何らかの長い処理をしないといけない場合、おそらく存在するであろうユーザーが何もしない空き時間に、小さなパーツに分割して実行することを検討してください。</p>
+
+<p>RequestIdleCallback ではこちらが役に立つでしょう。 <a href="https://hacks.mozilla.org/2016/11/cooperative-scheduling-with-requestidlecallback/">こちらの Hacks ブログをチェックしてください。</a></p>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1353206">そして、いつか、DOM コンテキスト以外でも可能となるでしょう!</a></p>
+
+<h2 id="Hide_your_panels">Hide your panels</h2>
+
+<p>If you’re adding a new &lt;popup&gt; or &lt;panel&gt; to a XUL document, set the hidden=”true” attribute on it by default. That way, the binding is applied on demand, and we can save time when constructing the XUL document.</p>
+
+<h2 id="Get_familiar_with_the_pipeline_that_gets_pixels_to_the_screen">Get familiar with the pipeline that gets pixels to the screen</h2>
+
+<p><img alt="This is the pipeline that a browser uses to get pixels to the screen." src="https://mdn.mozillademos.org/files/14995/pasted%20image%200.png" style="height: 167px; width: 1093px;"></p>
+
+<div class="note">
+<p>The above image is used under <a href="https://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0</a>, courtesy of <a href="https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing">this page</a> from our friends at Google, which itself is well worth the read.</p>
+</div>
+
+<p>For 60fps, the above needs to occur in 16ms or less.</p>
+
+<p>Note that <a href="https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame">the requestAnimationFrame API</a> allows you to queue up JavaScript to run very soon after a trip through this pipeline has been completed. This is useful because the last trip through the pipeline likely cached layout and style information which (assuming the DOM hasn't been dirtied somehow) should still be valid and cheap to access (see the sections below on synchronous style and layout flushes).</p>
+
+<h2 id="Detecting_and_Avoiding_Synchronous_Style_Flushes">Detecting and Avoiding Synchronous Style Flushes</h2>
+
+<h3 id="What_are_Style_Flushes">What are Style Flushes?</h3>
+
+<p>When CSS is applied to a document (HTML or XUL, it doesn’t matter), we do a calculation to determine what CSS styles will apply to each element.</p>
+
+<p>This will happen during the first time the page loads and CSS is first applied, but can happen again if JavaScript modifies the DOM - for example, by changing DOM node attributes (either directly or via APIs like <code>classList.add</code> / <code>classList.remove</code> / <code>classList.toggle</code>), or adding / removing / moving DOM nodes. Note that because styles are normally scoped to the entire document, the cost of doing these style calculations is proportional to the number of DOM nodes in the document (and the number of styles being applied).</p>
+
+<p>It is expected that over time, script will update the DOM, requiring us to recalculate styles. Normally, however, the changes to the DOM just result in the standard style calculation that occurs immediately after the JavaScript has finished running during the 16ms window.</p>
+
+<p>It is possible for JavaScript to force multiple, synchronous style calculations (or “style flushes”) to occur during the 16ms window, which greatly increases the probability of going over the 16ms limit, causing us to skip painting one or more frames. Skipping frames is called <strong>jank</strong>.</p>
+
+<p>Generally speaking, you force a synchronous style flush any time you query for style information after the DOM has changed. Depending on whether or not <a href="https://gist.github.com/paulirish/5d52fb081b3570c81e3a">the style information you’re asking for has something to do with size or position</a>, you may also cause a layout re-calculation (also referred to as “layout flush” or “reflow”), which is also an expensive step (see the section on Detecting and Avoiding Synchronous Reflow below).</p>
+
+<p>To avoid this: avoid reading style information if you can. If you must read style information, do so at the very beginning of the frame before any changes to the DOM have occurred since the last style flush (perhaps by using <a href="https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame">requestAnimationFrame</a> to set a callback at the start of a frame). At the start of a frame, style values are cached from the last calculation and more cheaply accessed when the document hasn’t yet undergone any change.</p>
+
+<h3 id="Writing_tests_to_ensure_you_don’t_add_more_synchronous_style_flushes">Writing tests to ensure you don’t add more synchronous style flushes</h3>
+
+<p>Unlike reflow, there isn’t a “observer” mechanism for style recalculations. There is, however, <a href="http://searchfox.org/mozilla-central/rev/78cefe75fb43195e7f5aee1d8042b8d8fc79fc70/dom/interfaces/base/nsIDOMWindowUtils.idl#1865-1874">an attribute on nsIDOMWindowUtils</a> that records a count of how many style calculations have occurred for a particular DOM window.</p>
+
+<p>It should be possible to write a test that gets the <code>nsIDOMWindowUtils</code> for a browser window, records the count of styleFlushes, then <strong>synchronously calls the function</strong> that you want to test, and immediately after checks the styleFlushes attribute again. If the value went up, your code caused synchronous style flushes to occur.</p>
+
+<p>Note that your test and function must be called synchronously in order for this test to be accurate. If you ever go back to the event loop (by yielding, waiting for an event, etc), style flushes unrelated to your code are likely to run, and your test will give you a false positive.</p>
+
+<h2 id="Detecting_and_Avoiding_Synchronous_Reflow">Detecting and Avoiding Synchronous Reflow</h2>
+
+<div class="note">
+<p>This is also sometimes called “sync Layout” or “sync Layout calculations”</p>
+</div>
+
+<p>“Sync Reflow” is a term bandied about a lot, and has negative connotations. It's not unusual for an engineer to have only the vaguest sense of what it is - and to only know to avoid it.</p>
+
+<p>This section will attempt to demystify things.</p>
+
+<p>The first time a document (XUL or HTML) loads, we parse the markup, and then apply styles. Once the styles have been calculated, we then need to calculate where things are going to be placed on the page. This layout step can be seen in the “16ms” pipeline graphic above, and occurs just before we paint things to be composited for the user to see.</p>
+
+<p>It is expected that over time, script will update the DOM, requiring us to recalculate styles, and then update layout. Normally, however, the changes to the DOM just result in the standard style calculation that occurs immediately after the JavaScript has finished running during the 16ms window.</p>
+
+<p>Also note that since <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=67752">the early days</a>, Gecko has had the notion of interruptible reflow. This means that size and position calculations can be broken up over several of those 16ms windows. Gecko will decide when an interruptible reflow has taken too long, and then bail out to paint. It will continue the reflow in the next 16ms window. <strong>Interruptible reflow is fine.</strong> Interruptible reflow only happens during initial document load.</p>
+
+<p>Uninterruptible reflow is what we want to <strong>avoid at all costs</strong>. Uninterruptible reflow occurs when some DOM node’s styles have changed such that the size or position of one or more nodes in the document will need to be updated, and then <strong>JavaScript asks for the size or position of anything</strong>. <a href="https://gist.github.com/paulirish/5d52fb081b3570c81e3a">Here’s a comprehensive list of things that JavaScript can ask for that can cause uninterruptible reflow</a>.</p>
+
+<p>Here’s a simple example, cribbed from <a href="http://paulrouget.com/e/fxoshud">this blog post by Paul Rouget</a>:</p>
+
+<p><code>div1.style.margin = "200px";        // Line 1<br>
+ var height1 = div1.clientHeight;    // Line 2<br>
+ div2.classList.add("foobar");       // Line 3<br>
+ var height2 = div2.clientHeight;    // Line 4<br>
+ doSomething(height1, height2);      // Line 5</code></p>
+
+<p>At line 1, we’re setting some style information on a DOM node that’s going to result in a reflow - but (at just line 1) it’s okay, because that reflow will happen after the style calculation.</p>
+
+<p>Note line 2 though - we’re asking for the height of some DOM node. This means that Gecko needs to synchronously calculate layout using an uninterruptible reflow in order to answer the question that JavaScript is asking (“What is the clientHeight of div1?”).</p>
+
+<p>It’s possible for our example to avoid this synchronous, uninterruptible reflow by moving lines 2 and 4 above line 1. Assuming there weren’t any style changes requiring size or position recalculation above line 1, the clientHeight information should be cached since the last reflow, and will not result in a new layout calculation.</p>
+
+<p>If you can avoid querying for the size or position of things in JavaScript, that’s the safest option - especially because it’s always possible that something earlier in this tick of JS execution caused a style change in the DOM without you knowing it.</p>
+
+<p>You could also potentially move your query into a requestAnimationFrame callback. This will run your code after the last frame is painted, and all of the layout data should be cached. Assuming no DOM properties affecting size or position have been changed in the meantime, accessing those cached values should be free.</p>
+
+<h3 id="nsIDOMWindowUtils.getBoundsWithoutFlushing">nsIDOMWindowUtils.getBoundsWithoutFlushing</h3>
+
+<p><code>getBoundsWithoutFlushing</code> does exactly what it says - it allows you to get the rect for some DOM node in a window without flushing layout. This means that the information you get is potentially stale, but allows you to avoid a sync reflow.</p>
+
+<h3 id="nsIDOMWindowUtils.getRootBounds">nsIDOMWindowUtils.getRootBounds</h3>
+
+<p>Similar to above - but allows you to get dimensions of the containing window without causing a sync reflow.</p>
+
+<h3 id="nsIDOMWindowUtils.getScrollXY">nsIDOMWindowUtils.getScrollXY</h3>
+
+<p>Similar to above - but allows you to get the window scroll offsets without causing a sync reflow.</p>
+
+<h3 id="Writing_tests_to_ensure_you_don’t_add_more_unintentional_reflow">Writing tests to ensure you don’t add more unintentional reflow</h3>
+
+<p>We have something called <a href="http://searchfox.org/mozilla-central/rev/78cefe75fb43195e7f5aee1d8042b8d8fc79fc70/docshell/base/nsIReflowObserver.idl">nsIReflowObserver</a>, which allows us to detect both interruptible and uninterruptible reflows. A number of tests have been written that exercise various functions of the browser (<a href="http://searchfox.org/mozilla-central/rev/78cefe75fb43195e7f5aee1d8042b8d8fc79fc70/browser/base/content/test/general/browser_tabopen_reflows.js">opening tabs</a>, <a href="http://searchfox.org/mozilla-central/source/browser/base/content/test/general/browser_windowopen_reflows.js">opening windows</a>) and ensures that we don’t add new uninterruptible reflows accidentally while those actions occur.</p>
+
+<p>You should add tests like this for your feature if you happen to be touching the DOM.</p>
+
+<h3 id="Detecting_Over-painting_with_Paint_Flashing">Detecting Over-painting with Paint Flashing</h3>
+
+<p>Painting is, in general, cheaper than both style calculation and layout calculation - but the more you can avoid, the better.</p>
+
+<p>Generally speaking, the larger an area that needs to be repainted, the longer it takes. Similarly, the more things that need to be repainted, the longer it takes.</p>
+
+<p>Our graphics team has added a handy feature to help you detect when and where paints are occurring. This feature is called “paint flashing”, and it can be activated for both web content and the browser chrome. Paint flashing tints each region being painted with a randomly selected colour so that it’s more easy to see what on the screen is being painted.</p>
+
+<p>You can activate paint flashing for browser chrome by setting <code>nglayout.debug.paint_flashing_chrome</code> to true.</p>
+
+<p>You can activate paint flashing for web content by setting <code>nglayout.debug.paint_flashing</code> to true.</p>
+
+<p>Now exercise your function and see what’s painting. See a lot of flashing / colours? That means a lot of painting is going on.</p>
+
+<p>Painting occurs on the main thread. The more things we can take off of the main thread, the better. If you’re overpainting, it’s a good idea to figure out why.</p>
+
+<p>Perhaps you’re animating something that requires a repaint? For example, transitioning the background-color of a DOM node from red to blue will result in a repaint for every frame of the animation, and paint flashing will reveal that. Consider using a different animation that can be accelerated by the GPU - these occur off of the main thread, and have a much higher probability of running at 60fps (see the section below labeled “Rely on the Compositor for Animations” for further details).</p>
+
+<p>Perhaps you’re touching some DOM nodes in such a way that unexpected repaints are occurring in an area that don’t need it. Best to investigate and try to remove those as best you can. Sometimes, our graphics layer invalidates regions in ways that might not be clear to you, and a section outside of the thing that just repainted will also repaint. Sometimes this can be addressed by ensuring that the thing changing is on its own layer (though this comes at a memory cost). You can put something on its own layer by setting its z-index, or by setting the <a href="https://developer.mozilla.org/en/docs/Web/CSS/will-change">will-change style</a> on the node, though this should be used sparingly.</p>
+
+<p>If you’re unsure why something is repainting, consider talking to our always helpful Graphics team in the #gfx IRC channel, and they can probably advise you. Note that a significant number of the Graphics team members are in the Eastern Time zone, so let that information guide your timing when you ask questions in #gfx.</p>
+
+<h2 id="Adding_Nodes_with_documentFragment">Adding Nodes with documentFragment</h2>
+
+<p>There is periodically the need to add a series of DOM nodes as children to another DOM node. For example, for things like our XUL menupopup’s, one often has JavaScript dynamically inserting menuitem’s.</p>
+
+<p>Inserting items into the DOM comes with a cost. If you’re adding a number of children to a DOM node in a loop, it’s often cheaper to batch those adds into a single insertion.</p>
+
+<p>Thanks to <a href="https://developer.mozilla.org/en/docs/Web/API/Document/createDocumentFragment">the createDocumentFragment API</a>, this is very straight-forward.</p>
+
+<p>This example has been cribbed from <a href="https://davidwalsh.name/documentfragment">davidwalsh’s blog post</a>:</p>
+
+<p><code>// Create the fragment<br>
+ var frag = document.createDocumentFragment();<br>
+ // Create numerous list items, add to fragment<br>
+ for(var x = 0; x &lt; 10; x++) {<br>
+     var li = document.createElement("li");<br>
+     li.innerHTML = "List item " + x;<br>
+     frag.appendChild(li);<br>
+ }</code></p>
+
+<p><code>// Mass-add the fragment nodes to the list<br>
+ listNode.appendChild(frag);</code></p>
+
+<p>The above is strictly cheaper that individually adding each node to the DOM.</p>
+
+<h2 id="The_Gecko_Profiler_Add-on_is_your_friend">The Gecko Profiler Add-on is your friend</h2>
+
+<p>The Gecko Profiler is your best friend when diagnosing performance problems and looking for bottlenecks.</p>
+
+<p>There’s plenty of excellent documentation on MDN about the Gecko Profiler:</p>
+
+<ul>
+ <li><a href="/en-US/docs/Mozilla/Performance/Reporting_a_Performance_Problem">Basic instructions for gathering and sharing a performance profile</a></li>
+ <li><a href="en-US/docs/Mozilla/Performance/Profiling_with_the_Built-in_Profiler">Advanced profile analysis</a></li>
+</ul>
+
+<h2 id="Don’t_Guess._Measure.">Don’t Guess. Measure.</h2>
+
+<p>If you’re working on a performance improvement, this should go without saying: ensure that what you care about is actually improving by measuring before and after.</p>
+
+<p>Landing a speculative performance enhancement is the same thing as landing speculative bug fixes - these things need to be tested. Even if that means instrumenting a function with a <code>Date.now()</code> recording at the entrance, and a <code>Date.now()</code> at the exits in order to measure processing time changes.</p>
+
+<p>Prove to yourself that you’ve actually improved something by measuring before and after.</p>
+
+<h3 id="window.performance">window.performance</h3>
+
+<p>The <a href="/en-US/docs/Web/API/Performance_API">Performance API</a> is very useful for taking high-resolution measurements. This is usually much better than using your own hand-rolled timers to measure how long things take.</p>
+
+<p>Also, the Gecko Profiler back-end is in the process of being modified to expose things like markers (from window.performance.mark).</p>
+
+<h2 id="Rely_on_the_Compositor_for_animations._Main_thread_animation_should_be_treated_as_deprecated.">Rely on the Compositor for animations. Main thread animation should be treated as deprecated.</h2>
+
+<p><a href="https://hacks.mozilla.org/2016/08/animating-like-you-just-dont-care-with-element-animate/">Here’s an excellent article about doing that.</a></p>
+
+<h2 id="Use_IndexedDB_for_Storage">Use IndexedDB for Storage</h2>
+
+<p><a href="en-US/docs/Web/HTML/Using_the_application_cache">AppCache</a> and <a href="/en-US/docs/Web/API/Storage/LocalStorage">LocalStorage</a> are synchronous storage APIs that will block the main thread when you use them. Avoid them at all costs!</p>
+
+<p><a href="/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB">IndexedDB</a> is preferable, as the API is asynchronous (all disk operations occur off of the main thread), and can be accessed from Web Workers.</p>
+
+<p>IndexedDB is also arguably better than storing and retrieving JSON from a file - particularly if the JSON encoding or decoding is occurring on the main thread. IndexedDB will do JS object serialization and deserialization for you using the Structured Clone algorithm, meaning that you can stash <a href="/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm#Supported_types">things like Maps, Sets, Dates, Blobs, and more</a>, without having to do conversions for JSON compatibility.</p>
+
+<p>A Promise-based wrapper for IndexedDB, <a href="http://searchfox.org/mozilla-central/source/toolkit/modules/IndexedDB.jsm">IndexedDB.jsm</a>, is available for chrome code.</p>
+
+<h2 id="Test_on_weak_hardware">Test on weak hardware</h2>
+
+<p>For the folks paid to work on Firefox, we tend to have pretty powerful hardware for development. This is great, because it reduces build times, and means we can do our work faster.</p>
+
+<p>We should remind ourselves that the majority of our user base is unlikely to have similar hardware. Look at the <a href="https://metrics.mozilla.com/firefox-hardware-survey/">Firefox Hardware Report</a> to get a sense of what our users are working with. Test on slower machines to make it more obvious to yourself if what you’ve written impacts the performance of the browser.</p>
+
+<p> </p>
diff --git a/files/ja/mozilla/firefox/privacy/index.html b/files/ja/mozilla/firefox/privacy/index.html
new file mode 100644
index 0000000000..4abcf426c4
--- /dev/null
+++ b/files/ja/mozilla/firefox/privacy/index.html
@@ -0,0 +1,20 @@
+---
+title: Privacy
+slug: Mozilla/Firefox/Privacy
+tags:
+ - Privacy
+ - Security
+translation_of: Mozilla/Firefox/Privacy
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p class="summary">このドキュメントは、プライバシーに関連するドキュメントのリストを表示します。</p>
+
+<p>{{ ListSubpages () }}</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="https://support.mozilla.org/ja/products/firefox/privacy-and-security">プライバシーとセキュリティの設定 </a></li>
+ <li><a href="/ja/docs/Web/Security">ウェブセキュリティ</a></li>
+</ul>
diff --git a/files/ja/mozilla/firefox/privacy/storage_access_policy/index.html b/files/ja/mozilla/firefox/privacy/storage_access_policy/index.html
new file mode 100644
index 0000000000..b24c4748f5
--- /dev/null
+++ b/files/ja/mozilla/firefox/privacy/storage_access_policy/index.html
@@ -0,0 +1,267 @@
+---
+title: 'ストレージアクセスポリシー: 追跡者からのクッキーのブロック'
+slug: Mozilla/Firefox/Privacy/Storage_access_policy
+tags:
+ - Privacy
+ - storage access policy
+ - tracking protection
+translation_of: Mozilla/Firefox/Privacy/Storage_access_policy
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p class="summary"><span class="seoSummary">Firefox には、サードパーティの追跡リソース(tracking resources、トラッキングリソース)からのクッキーやその他のサイトデータをブロックする新しいストレージアクセスポリシーが含まれています。 このポリシーは、Firefox で長年にわたって利用されてきた<a href="/ja/docs/Mozilla/Cookies_Preferences">古いクッキーポリシー</a>の代替として設計されています。 このポリシーは、従来のクッキーブロックに関連するサイトの中断を最小限に抑えながら、クロスサイトトラッキング(cross-site tracking、サイトをまたがった追跡)から保護します。 この記事では、ポリシーの仕組みとテスト方法について説明します。</span></p>
+
+<h2 id="Testing_in_Firefox" name="Testing_in_Firefox">Firefox でのテスト</h2>
+
+<p>このクッキーポリシーは、バージョン 63 以降の Firefox で使用可能です。 この文書では、Firefox Release ユーザーに出荷する予定のポリシーについて説明しますが、Firefox の現在の Release バージョンで実装されているものと一致しない場合があります。 これは、プレリリースチャネルである <a href="https://www.mozilla.org/en-US/firefox/channel/desktop/#nightly">Firefox Nightly</a> にポリシーが追加されるとすぐに、ポリシーの新しい側面を文書化するためです。 Firefox Nightly には、Release ユーザーへの出荷を予定していない実験的な機能も含まれている場合があります。 この文書には実験的な機能は含まれていませんが、追跡者(trackers、トラッカー)として分類されたドメインの機能に影響を与える可能性があります。</p>
+
+<p>これには最新バージョンの保護が含まれているため、<a href="https://www.mozilla.org/en-US/firefox/channel/desktop/#nightly">Firefox Nightly</a> でサイトをテストすることをお勧めします。 前述のように、Nightly には、Release ユーザーに到達する前に削除または変更される追加の保護が含まれることがあります。 保護を強化するため、このページは常に最新情報で更新されます。</p>
+
+<p>Nightly では、これらの保護はデフォルトで有効になっています。 クッキーポリシーは、<a href="https://support.mozilla.org/ja/kb/content-blocking">コンテンツブロッキング設定</a>を介して Firefox の他のバージョンで有効にできます(これらの手順はバージョンによって異なります。 リンクされた文書には、適切な Firefox バージョンを選択するためのドロップダウンが含まれています)。</p>
+
+<h3 id="Report_Broken_Sites" name="Report_Broken_Sites">中断するサイトを報告</h3>
+
+<p>この変更の結果としてウェブサイトが中断する場合は、<a href="https://bugzilla.mozilla.org/enter_bug.cgi?assigned_to=nobody%40mozilla.org&amp;blocked=1480137&amp;bug_file_loc=http%3A%2F%2F&amp;bug_ignored=0&amp;bug_severity=normal&amp;bug_status=NEW&amp;cf_fx_iteration=---&amp;cf_fx_points=---&amp;cf_platform_rel=---&amp;cf_status_firefox62=---&amp;cf_status_firefox63=---&amp;cf_status_firefox64=---&amp;cf_status_firefox_esr60=---&amp;cf_status_geckoview62=---&amp;cf_tracking_firefox62=---&amp;cf_tracking_firefox63=---&amp;cf_tracking_firefox64=---&amp;cf_tracking_firefox_esr60=---&amp;cf_tracking_firefox_relnote=---&amp;cf_tracking_geckoview62=---&amp;component=Tracking%20Protection&amp;contenttypemethod=list&amp;contenttypeselection=text%2Fplain&amp;defined_groups=1&amp;flag_type-203=X&amp;flag_type-37=X&amp;flag_type-41=X&amp;flag_type-5=X&amp;flag_type-607=X&amp;flag_type-721=X&amp;flag_type-737=X&amp;flag_type-748=X&amp;flag_type-787=X&amp;flag_type-799=X&amp;flag_type-800=X&amp;flag_type-803=X&amp;flag_type-835=X&amp;flag_type-846=X&amp;flag_type-855=X&amp;flag_type-864=X&amp;flag_type-914=X&amp;flag_type-916=X&amp;flag_type-929=X&amp;flag_type-930=X&amp;flag_type-933=X&amp;form_name=enter_bug&amp;maketemplate=Remember%20values%20as%20bookmarkable%20template&amp;op_sys=Unspecified&amp;priority=--&amp;product=Firefox&amp;rep_platform=Unspecified&amp;target_milestone=---&amp;version=unspecified">Bugzilla</a> の Firefox 製品内の Tracking Protection コンポーネントでバグを報告してください。 または、<a href="https://support.mozilla.org/ja/kb/control-center-site-privacy-and-security-firefox">コントロールセンター</a>のコンテンツブロッキングセクションで「問題の報告」をクリックして、Firefox で中断するサイトを直接報告できます(このショートカットは、Firefox のすべてのバージョンで利用できるとは限りません)。</p>
+
+<h2 id="Tracking_protection_explained" name="Tracking_protection_explained">トラッキング防止の説明</h2>
+
+<p>Firefox はどのリソースが追跡リソースかをどのように判断していますか?</p>
+
+<p>Firefox はトラッキング防止リストを使用して、どのリソースが追跡リソースかを判断します。 トラッキング防止リストは、<a href="https://github.com/disconnectme/disconnect-tracking-protection/issues">Disconnect によって維持</a>されます。 リストが Firefox に適用されると、次の2つの重要な変更が行われます。</p>
+
+<ul>
+ <li>最初に、リストの「基本的な保護」バージョンのみを使用します。 これは、<a href="https://github.com/mozilla-services/shavar-prod-lists#blacklist">追跡者の一部のカテゴリを除外します</a>。 将来的には、リストの「厳格な保護」バージョンを使用するように保護を拡張する可能性があります。</li>
+ <li>2番目に、Firefox は追加の「<a href="https://github.com/mozilla-services/shavar-prod-lists/blob/master/disconnect-entitylist.json">エンティティリスト</a>」を使用します。 これにより、<a href="https://github.com/mozilla-services/shavar-prod-lists#entity-list">ドメインが同じ組織が所有する最上位サイトに読み込まれたときにそのドメインが追跡者として分類</a>されなくなります。</li>
+</ul>
+
+<p>Firefox は、組み込みの<a href="https://support.mozilla.org/ja/kb/tracking-protection">トラッキング防止</a> URL 分類子を使用して、トラッキング防止リストに一致するリソースを判別します。 ドメインは、<a href="https://developers.google.com/safe-browsing/v4/urls-hashing#suffixprefix-expressions">SafeBrowsing v4 仕様</a>に従ってリストと照合されます。 具体的には、リストに対してリソースの正確なホスト名を確認し、最後の5つのコンポーネントから開始して先頭のコンポーネントを次々に取り除くことによって形成された最後の4つのホスト名も同様に確認します。 次の例を検討してください。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">リスト上のホスト名</th>
+ <th scope="col">リソースのホスト名</th>
+ <th scope="col">一致</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>example.com</code></td>
+ <td><code>example.com</code></td>
+ <td>はい</td>
+ </tr>
+ <tr>
+ <td><code>example.com</code></td>
+ <td><code>a.b.example.com</code></td>
+ <td>はい</td>
+ </tr>
+ <tr>
+ <td><code>blah.example.com</code></td>
+ <td><code>example.com</code></td>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <td><code>a.b.example.com</code></td>
+ <td><code>c.d.example.com</code></td>
+ <td>いいえ</td>
+ </tr>
+ <tr>
+ <td><code>blah.example.com</code></td>
+ <td><code>foo.blah.example.com</code></td>
+ <td>はい</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="What_does_the_storage_access_policy_block" name="What_does_the_storage_access_policy_block">ストレージアクセスポリシーは何をブロックしますか?</h2>
+
+<p>ストレージアクセスポリシーは、追跡者として識別されたリソースがサードパーティのコンテキストに読み込まれたときに、それらのクッキーや他のサイトストレージにアクセスすることをブロックします。 これにより、それらのリソースがクッキーまたはサイトストレージに保存されている追跡識別子を取得し、それらを使用して複数のファーストパーティにわたって訪問したユーザーを識別することができなくなります。 具体的には、Firefox は次の制限を課してこれを行います。</p>
+
+<p>クッキー:</p>
+
+<ul>
+ <li>{{httpheader("Cookie")}} リクエストヘッダーをブロックし、{{httpheader("Set-Cookie")}} レスポンスヘッダーを無視します。</li>
+ <li>{{domxref("Document.cookie")}} の呼び出しに対して空の文字列を返し、<code>Document.cookie</code> を介してクッキーを設定する要求を無視します。</li>
+</ul>
+
+<p>DOM ストレージ:</p>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Web_Storage_API">localStorage</a>: <code><a href="/ja/docs/Web/API/Window/localStorage">Window.localStorage</a></code>: 読み取りおよび書き込みの試みは <code>SecurityError</code> 例外をスローします。 Firefox 70より前: <code><a href="/ja/docs/Web/API/Window/localStorage">Window.localStorage</a></code> は <code>null</code> です。 したがって、このオブジェクトを使用して読み書きしようとすると、<code>TypeError</code> 例外がスローされます。</li>
+ <li><a href="/ja/docs/Web/API/Web_Storage_API">sessionStorage</a>: 読み取りおよび書き込みの試みが許されます。</li>
+ <li><a href="/ja/docs/Web/API/IndexedDB_API">IndexedDB</a>: IndexedDB Factory オブジェクトへのアクセスの試みは <code>SecurityError</code> 例外をスローします。</li>
+</ul>
+
+<p>メッセージングとワーカー:</p>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Broadcast_Channel_API">Broadcast Channel</a>: 新しい {{domxref("BroadcastChannel")}} 作成の試みは <code>SecurityError</code> 例外をスローします。</li>
+ <li><a href="/ja/docs/Web/API/Web_Workers_API">Shared Worker</a>: 新しい {{domxref("SharedWorker")}} 作成の試みは <code>SecurityError</code> 例外をスローします。</li>
+ <li><a href="/ja/docs/Web/API/Service_Worker_API">Service Worker</a>: 新しい {{domxref("ServiceWorker")}} 作成の試みは <code>SecurityError</code> 例外をスローします。</li>
+</ul>
+
+<p>DOM キャッシュ:</p>
+
+<ul>
+ <li>{{domxref("CacheStorage")}} の呼び出しは、常に <code>SecurityError</code> で拒否されます。</li>
+</ul>
+
+<p>ブラウザーキャッシュ:</p>
+
+<ul>
+ <li><a href="/ja/docs/Web/HTTP/Caching">HTTP キャッシュ</a>、画像キャッシュ、および<a href="/ja/docs/Web/HTTP/Headers/Alt-Svc">代替サービス(Alt-Svc)キャッシュ</a>は、追跡リソースに対してすべてパーティション化されているため、各最上位オリジンには個別のパーティションがあり、異なる最上位オリジンの追跡リソースは互いに別々にキャッシュされます。</li>
+</ul>
+
+<p>ネットワーク接続:</p>
+
+<ul>
+ <li>追跡者として分類されている埋め込みのサードパーティリソースへの HTTPS 接続が行われた場合、セッションチケットを使用して <a href="https://wiki.mozilla.org/Security/Server_Side_TLS#Session_Resumption">TLS セッション</a>は再開されません。</li>
+ <li>追跡者として分類されたドメインによる <a href="/ja/docs/Web/HTTP/Connection_management_in_HTTP_1.x#Persistent_connections">HTTP 接続の再利用</a>は、同じ最上位オリジンで発生する要求に制限されます。 例えば、news.example の tracker.example からのコンテンツの要求は、shopping.example の tracker.example からのコンテンツの要求や、tracker.example に直接訪問したときに(つまり、 ファーストパーティとして)発生する要求との HTTP 接続を再利用しません。</li>
+</ul>
+
+<p>HTTP リファラー:</p>
+
+<ul>
+ <li>追跡者として分類されたサードパーティリソースのデフォルトの <a href="/ja/docs/Web/HTTP/Headers/Referrer-Policy">Referrer Policy</a> は、<code>strict-origin-when-cross-origin</code> に設定されています。</li>
+</ul>
+
+<h3 id="What_is_not_blocked_by_the_policy" name="What_is_not_blocked_by_the_policy">ポリシーによってブロックされないものは何ですか?</h3>
+
+<ol>
+ <li>現在、このポリシーは、追跡リソースとして分類されていないリソースに対するサードパーティのストレージアクセスを制限していません。 今後、サードパーティのストレージアクセスに追加の制限を適用する場合があります。</li>
+ <li>ポリシーによって適用される制限は、追跡リソースとして分類されたサードパーティのスクリプトがページのメインコンテキストのストレージにアクセスすることを妨げません。 これらのスクリプトは、最上位オリジンを対象としたストレージを引き続き使用できます。</li>
+ <li>追跡者として分類されたオリジンは、ファーストパーティのコンテキストで読み込まれると、自分のストレージにアクセスできます。</li>
+ <li>最上位コンテキストと同じ eTLD+1 から読み込まれたクロスオリジンリソースは、引き続きストレージにアクセスできます。</li>
+ <li>追跡者として通常分類されるオリジンは、<a href="https://github.com/mozilla-services/shavar-prod-lists#entity-list">最上位ページのオリジンがそれらと同じ組織からのものであると判断された場合、ブロックされません</a>。</li>
+</ol>
+
+<h2 id="Storage_access_grants" name="Storage_access_grants">ストレージアクセス許可</h2>
+
+<p>ウェブ互換性を改善し、ストレージアクセスを必要とするサードパーティのインテグレーションを許すために、Firefox はこのセクションで説明するように、特定のサードパーティオリジンに対して、ファーストパーティを対象としたストレージアクセスを許可します。 現在、Firefox には、ユーザーが追跡者として分類されるサードパーティとやり取りするときに、これらのサードパーティリソースにストレージアクセスを許可するいくつかのウェブ互換性経験則が含まれています。 これは、アクセスを許可しないとウェブページが中断することが予想される場合に行います。 また、埋め込みの {{htmlelement("iframe")}} が {{domxref("Document.requestStorageAccess()")}} を呼び出してストレージアクセスを要求できる <a href="/ja/docs/Web/API/Storage_Access_API">Storage Access API</a> の初期実装もサポートしています。 これらのアプローチは両方とも同じレベルのストレージアクセスを提供しますが、ストレージへのアクセスを保証するために、サードパーティが Storage Access API の使用に切り替えることをお勧めします。</p>
+
+<h3 id="Automatic_storage_access_upon_interaction" name="Automatic_storage_access_upon_interaction">対話時の自動ストレージアクセス</h3>
+
+<p>ウェブ互換性を改善するために、Firefox には現在、ユーザーとのやり取りを受け取るサードパーティにストレージアクセスを自動的に許可するためのいくつかの経験則が含まれています。 これらの経験則は、ウェブで一般的な一部のサードパーティのインテグレーションを機能させ続けることを目的としています。 これらは一時的なものであり、Firefox の将来のバージョンでは取り除かれる予定です。 現在および将来のウェブ開発において依存するべきではありません。</p>
+
+<p>ユーザージェスチャーが元の文書への<a href="/ja/docs/Web/API/Window/opener">オープナーアクセス</a>を持つポップアップウィンドウをトリガーすると、追跡リソースとして分類されたリソースにサードパーティのストレージアクセスが許可される場合があります。 その場合、サードパーティのオリジンにアクセスを許可する方法には次の3つがあります。</p>
+
+<ul>
+ <li>ポップアップウィンドウに最初に読み込まれるリソースのオリジンには、オープナー文書へのストレージアクセスが許可されます。 オリジンが追跡アクセスを取得するためにこの経験則を悪用していることが判明した場合、そのオリジンには、過去30日以内にファーストパーティとしてユーザーとのやり取りを受け取る必要があるという追加の要件があります。</li>
+ <li>最初のリソースがポップアップウィンドウに読み込まれた後、ウィンドウは他のホストへの一連のリダイレクトを通過する場合があります。 ユーザーがリダイレクト後にポップアップウィンドウとやり取りすると、ポップアップウィンドウに読み込まれたコンテンツのオリジンにはオープナー文書のストレージアクセスが与えられます。</li>
+ <li>追跡オリジンから非追跡オリジンへの最上位のリダイレクトがある場合、追跡オリジンは、非追跡オリジンとリダイレクトチェーンのさらに下に表れる他の非追跡オリジンで短期間のストレージアクセスを受け取ります(つまり、読み込みがリダイレクトし続ける場合)。 追跡オリジンは、過去30日以内にファーストパーティとしてユーザーとのやり取りを受け取っている必要があり、ストレージアクセス許可は15分後に期限切れになります。</li>
+</ul>
+
+<h3 id="Scope_of_storage_access" name="Scope_of_storage_access">ストレージアクセスの範囲</h3>
+
+<p>ストレージアクセスが許可されると、それはオープナー文書のオリジンまたはそのオリジンのサブドメインを対象とします。 オリジンのサブドメインで許可されたアクセスは、最上位オリジンに拡張されません。 例えば、<code>tracker.example</code> のリソースに <code>foo.example.com</code> のストレージアクセスが許可されている場合、<code>tracker.example</code> は <code>example.com</code> ではなく <code>bar.foo.example.com</code> のクッキーにアクセスできます。 代わりに、<code>tracker.example</code> が <code>example.com</code> でアクセスを許可された場合、<code>bar.foo.example.com</code>、<code>foo.example.com</code>、および <code>example.com</code> のストレージにアクセスできます。</p>
+
+<p><code>example.com</code> の <code>tracker.example</code> にストレージアクセスが許可されると、<code>example.com</code> から読み込まれた任意の最上位文書において <code>tracker.example</code> から読み込まれたすべてのリソースには、すぐにストレージアクセスが与えられます。 これには、ページのメインコンテキストに読み込まれたすべてのリソース、埋め込み <code>&lt;iframe&gt;</code>、埋め込み <code>&lt;iframe&gt;</code> に読み込まれたリソースが含まれます。 ストレージアクセスは、<code>example.com</code> に読み込まれた他のリソース(<code>other-tracker.example</code> など)や、<code>tracker.example</code> が埋め込まれている他のファーストパーティ(<code>example.org</code> など)には拡張されません。</p>
+
+<p>ストレージアクセス許可は、ネストされたコンテキストの最初のレベルまで拡張されますが、それ以上は拡張されません。 これは、ページのメインコンテキストに埋め込まれ、追跡者として分類されたドメインから読み込まれた <code>&lt;iframe&gt;</code> が、JavaScript を介してアクセス可能なすべてのストレージの場所に完全にアクセスできることを意味します。 同様に、ページのメインコンテキストに埋め込まれた <code>&lt;iframe&gt;</code> に読み込まれたリソースの要求は、HTTP クッキーにアクセスできます。 ただし、追跡者として分類されたオリジンからのものを含むがこれに限定されない、さらにネストされたコンテキストは、ストレージアクセスを許可されません。</p>
+
+<p><code>tracker.example</code> にストレージアクセスを許可している <code>example.com</code> から読み込まれた最上位ページでの以下の埋め込みのシナリオを検討してください。</p>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">埋め込み</th>
+ <th scope="col">tracker.example リソースのストレージアクセス</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>画像は <code>tracker.example</code> から読み込まれ、<code>example.com</code> のメインコンテキストに埋め込まれます。</td>
+ <td>HTTP: はい<br>
+ JS: 該当なし</td>
+ </tr>
+ <tr>
+ <td><code>example.com</code> は、<code>example.org</code> から <code>&lt;iframe&gt;</code> を埋め込みます。 その <code>&lt;iframe&gt;</code> は、<code>tracker.example</code> から画像を読み込みます。</td>
+ <td>HTTP: はい<br>
+ JS: 該当なし</td>
+ </tr>
+ <tr>
+ <td><code>example.com</code> は、<code>example.org</code> から <code>&lt;iframe&gt;</code> を埋め込みます。 その <code>&lt;iframe&gt;</code> は、<code>tracker.example</code> から <code>&lt;iframe&gt;</code> を埋め込みます。</td>
+ <td>HTTP: はい<br>
+ JS: いいえ</td>
+ </tr>
+ <tr>
+ <td><code>example.com</code> は、<code>tracker.example</code> から <code>&lt;iframe&gt;</code> を埋め込みます。</td>
+ <td>HTTP: はい<br>
+ JS: はい</td>
+ </tr>
+ <tr>
+ <td><code>example.com</code> は、<code>example.com</code>(同じオリジン)から <code>&lt;iframe&gt;</code> を埋め込みます。 ネストされた <code>&lt;iframe&gt;</code> は、<code>tracker.example</code> から <code>&lt;iframe&gt;</code> を埋め込みます。</td>
+ <td>HTTP: はい<br>
+ JS: いいえ</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Storage_access_expiration" name="Storage_access_expiration">ストレージアクセスの有効期限</h3>
+
+<p>ストレージアクセス許可は30日後に失効します。 追跡リソースとして分類されたドメインには、複数のファーストパーティでサードパーティのストレージアクセスが許可される場合があり、各パーティのストレージ許可は独立して期限切れになります。 上記の経験則は、すでにアクセスが許可されているオリジンに対するサードパーティのストレージ許可の有効期間を延長するのにも役立ちます。 経験則がアクティブになるたびに、または Storage Access API の成功呼び出しが行われるたびに、以前にアクセスが許可された時点から数えて、既存のストレージアクセスの有効期限が30日間延長されます。</p>
+
+<p>今後、ストレージアクセスの有効期間を変更する予定です。 前述したように、今後ストレージをサードパーティとして使用できることを知る方法は、Storage Access API を使用することです。</p>
+
+<h2 id="Debugging" name="Debugging">デバッグ</h2>
+
+<p>サイト所有者は、サイト、特にサードパーティのコンテンツインテグレーションに依存しているサイトをテストすることをお勧めします。 テストを簡単にするために、Firefox にいくつかの新機能を追加しました。</p>
+
+<h3 id="Developer_Tools_notifications" name="Developer_Tools_notifications">開発ツールの通知</h3>
+
+<p>Firefox 開発ツールの<a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a>には、追跡リソースとして分類されたすべてのリソース要求のインジケーターが含まれるようになりました。 このインジケータは、ドメイン列に盾のアイコンとして表示されます。 次のサンプル画像では、<code>trackertest.org</code> は追跡リソースとして分類されていますが、example.com への要求は追跡リソースではありません。</p>
+
+<p><img alt="Firefox 開発ツールのネットワーク要求は、小さな盾のアイコンで追跡リソースがどれであるかを示します" src="https://mdn.mozillademos.org/files/16181/Screen_Shot_2018-09-21_at_10.34.22_AM.png" style="border-style: solid; border-width: 1px; display: block; height: 57px; margin: 0px auto; width: 600px;"></p>
+
+<h3 id="Adding_custom_domains_to_the_Tracking_Protection_list" name="Adding_custom_domains_to_the_Tracking_Protection_list">トラッキング防止リストへのカスタムドメインの追加</h3>
+
+<p>サイトのサードパーティドメインが追跡者として分類された場合、どのように機能するのか興味がありますか? トラッキング防止 URL 分類子にカスタムドメインを追加できる設定を追加しました。 そうするには次のようにします。</p>
+
+<ol>
+ <li>アドレスバーに <code>about:config</code> と入力します。 「注意して進んでください!」と警告するページが表示された場合は、「危険性を承知の上で使用する!」をクリックします。</li>
+ <li>設定名 "urlclassifier.trackingAnnotationTable.testEntries" を検索します。</li>
+ <li>設定がすでに存在する場合は、設定値を編集します。</li>
+ <li>設定が存在しない場合は、「文字列」をクリックしてから「+」をクリックして、新しい設定を作成します。</li>
+ <li>設定値には、追跡者として分類するオリジンをコンマで区切って入力します。 例えば、"example.net,example.org"。</li>
+</ol>
+
+<div class="warning">
+<p><strong>警告</strong>: テストが終了したら、これらのエントリを必ず取り除いてください。</p>
+</div>
+
+<h2 id="FAQ" name="FAQ">FAQ</h2>
+
+<p>このクッキーポリシーはサイトの中断につながる可能性がありますが、一般的なサードパーティのインテグレーションがクロスサイトトラッキングを防止しながら機能し続けるように設計されています。 このセクションでは、さまざまなインテグレーションのシナリオで期待できる機能について説明します。</p>
+
+<h3 id="Will_this_storage_access_policy_block_ads_from_displaying_on_my_website" name="Will_this_storage_access_policy_block_ads_from_displaying_on_my_website">このストレージアクセスポリシーにより、ウェブサイトに広告が表示されなくなりますか?</h3>
+
+<p>いいえ — この機能は、ウェブサイトをわたってユーザーを追跡するために使用できるクッキーとサイトデータへのアクセスのみを制限します。 追跡識別子をブロックしても、広告の表示は妨げられません。</p>
+
+<h3 id="I_use_a_third-party_analytics_service_that_is_classified_as_a_tracker._Will_I_still_receive_analytics_data" name="I_use_a_third-party_analytics_service_that_is_classified_as_a_tracker._Will_I_still_receive_analytics_data">追跡者として分類されるサードパーティの分析サービスを使用しています。 分析データは引き続き受け取れますか?</h3>
+
+<p>これは、サードパーティの分析サービスの実装方法に依存します。 サードパーティの分析プロバイダーは、サードパーティのストレージを使用してデータを収集できなくなります。 これは、サードパーティドメイン、またはローカルストレージとそのオリジンの下に保存されている他のサイトデータを対象としたクッキーを使用するプロバイダーが、他のウェブサイトにわたる識別子にアクセスできなくなることを意味します。</p>
+
+<p>これらのサービスがページのメインコンテキストに埋め込まれている場合、ファーストパーティのクッキーとサイトストレージを引き続き使用して、その特定のファーストパーティのドメインにおいてページにわたった訪問を追跡できます。</p>
+
+<h3 id="I_use_third-party_services_for_social_login_like_and_share_button_integration._Will_my_users_still_be_able_to_make_use_of_these_services" name="I_use_third-party_services_for_social_login_like_and_share_button_integration._Will_my_users_still_be_able_to_make_use_of_these_services">ソーシャルログイン、いいねボタン、シェアボタンのインテグレーションのためにサードパーティのサービスを使用しています。 ユーザーは引き続きこれらのサービスを利用できますか?</h3>
+
+<p>これは、ソーシャルインテグレーションの実装方法によって異なります。 人気のあるソーシャルインテグレーションの多くは、Firefox の現在のクッキーポリシーに基づいて機能し続けますが、ユーザーエクスペリエンスに若干の違いがあります。</p>
+
+<p>追跡者として分類されたソーシャルコンテンツプロバイダーは、ユーザーが新しいファーストパーティに初めてアクセスしたときにサードパーティのクッキーにアクセスできません。 したがって、ユーザーはプロバイダーのウェブサイトに直接アクセスしたときにログインしているにも関わらず、サービスにログアウトしているように見える場合があります。 インテグレーションの種類によっては、ユーザーがソーシャルコンテンツプロバイダーとやり取りするために、プロバイダーにクッキーへのアクセスを許可する前に、何らかのアクションを実行する必要がある場合があります。 例えば次のようにです。</p>
+
+<ul>
+ <li>ソーシャルログインの場合、ユーザーはファーストパーティのログインボタンをクリックする必要があります。</li>
+ <li>ソーシャルのいいねボタンやシェアボタンの場合、ユーザーは最初にログアウト状態のボタンを操作する必要があります。 一度行うと、多くのソーシャルコンテンツプロバイダーはログインを促します。</li>
+</ul>
+
+<p>これらのやり取りの後、プロバイダーは、上記のストレージアクセスのアクティベーション経験則によって捕捉される方法でユーザーにプロンプ​​トした場合、サードパーティのストレージアクセスを受け取ります。 これらのプロバイダーは、できるだけ早く Storage Access API を介してストレージアクセスを明示的に要求するように切り替えることを検討する必要があります。 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1469714">この API の初期実装</a>は、現在 Nightly で利用可能です。</p>
+
+<h3 id="I_use_third-party_pixels_and_other_tools_to_measure_the_effectiveness_of_my_ad_campaigns._Will_I_still_be_able_to_measure_the_conversion_rate_of_my_ads" name="I_use_third-party_pixels_and_other_tools_to_measure_the_effectiveness_of_my_ad_campaigns._Will_I_still_be_able_to_measure_the_conversion_rate_of_my_ads">サードパーティのピクセルやその他のツールを使用して、広告キャンペーンの効果を測定しています。 広告のコンバージョン率を測定することはできますか?</h3>
+
+<p>これは、サードパーティが測定ツールをどのように実装したかに依存しますが、一般に広告コンバージョンの測定はより困難になります。 次の例を考慮してください。</p>
+
+<ol>
+ <li>あなたは、ユーザーが何度も見たがクリックされなかったソーシャルメディアウェブサイトで広告を掲載している。 そのユーザーは、後で同じソーシャルメディアウェブサイトからのコンバージョン追跡タグを含んであなたのウェブサイトに訪問します。 このタイプのコンバージョンは、多くの場合「ビュースルーコンバージョン」と呼ばれます。 ソーシャルメディアウェブサイトはそれらのサードパーティのストレージにアクセスできないため、それらのウェブサイトで広告を見たユーザーと同じユーザーとしてユーザーを認識せず、コンバージョンは追跡されません。 ディスプレイネットワークで提供されるものを含め、ほとんどのビュースルーコンバージョン追跡技術は機能しなくなると予想されます。</li>
+ <li>あなたは、ユーザーがクリックしたディスプレイネットワークまたはソーシャルメディアウェブサイトで広告を掲載している。 そのユーザーはあなたのウェブサイトに着陸します。 これには、あなたの広告を表示した同じウェブサイトのコンバージョン追跡タグが含まれています。 このタイプのコンバージョンは、しばしば「クリックスルーコンバージョン」と呼ばれます。 ソーシャルメディアサイトまたはディスプレイネットワークはそれらのサードパーティのストレージにアクセスできないため、それらのウェブサイトで広告を見たユーザーと同じユーザーとしてユーザーを認識せず、コンバージョンは追跡されません。 このバージョンのクリックスルーコンバージョンは機能しなくなると予想されます。</li>
+ <li>あなたは、ソーシャルメディアウェブサイトに表示される広告を掲載している。 ユーザーがあなたの広告をクリックすると、サードパーティのネットワークからコンバージョン追跡タグを含むランディングページに移動します。 ソーシャルメディアのウェブサイトでは、ネットワークは広告のランディングページ URL に、訪問が広告をクリックした結果であることを示すクエリパラメーターで注釈を付けます。 あなたのウェブサイトでは、ディスプレイネットワークのタグが URL クエリパラメーターをチェックし、広告追跡パラメータをファーストパーティストレージに保存します。 ユーザーが後でコンバージョンイベントを完了した場合、ネットワークのタグはファーストパーティストレージをチェックして、訪問の原因となったクリックを特定します。 この方法で実装されたクリックスルーコンバージョンは引き続き機能すると予想されます。</li>
+</ol>
diff --git a/files/ja/mozilla/firefox/privacy/tracking_protection/index.html b/files/ja/mozilla/firefox/privacy/tracking_protection/index.html
new file mode 100644
index 0000000000..471f4d0684
--- /dev/null
+++ b/files/ja/mozilla/firefox/privacy/tracking_protection/index.html
@@ -0,0 +1,73 @@
+---
+title: トラッキング防止
+slug: Mozilla/Firefox/Privacy/Tracking_Protection
+translation_of: Mozilla/Firefox/Privacy/Tracking_Protection
+---
+<h2 id="トラッキング防止機能とは何か?">トラッキング防止機能とは何か?</h2>
+
+<p>バージョン 42 以降、デスクトップ版 Firefox および Android 版 Firefox には、組み込みの機能としてトラッキング防止が含まれます。プライベートウィンドウ(Android 版 Firefox ではプライベートタブ)では、サイトをまたいでユーザーを追跡するようなドメインからロードされるコンテンツは Firefox によってブロックされます。</p>
+
+<p>ブロックされたコンテンツがページレイアウトの一部である場合、どの部分が Firefox によってブロックされたレイアウト要素であるのかはユーザーにも分かるでしょう。ただし、ページグリッドが要素のブロックによってできた穴を塞ぐように配置されることで、ユーザーに全く気付かれないこともあります。</p>
+
+<p>Firefox によってコンテンツがブロックされると、ウェブコンソールに次のようなメッセージとして記録されます。</p>
+
+<pre>トラッキング防止機能が有効なため、 "http://some/url" のリソースがブロックされました。</pre>
+
+<p>Android 版 Firefox の場合、コンソールへの出力はリモートデバッガからアクセスできる点に注意してください。</p>
+
+<p>Firefox UI は、コンテンツがいつブロックされたのか、そして、選択すれば現在のセッションにおいてブロック解除を有効にできるということを示します。また、ユーザーはトラッキング防止機能を完全に無効にすることもできます。</p>
+
+<h2 id="Firefox_はどのようにブロックする対象を選ぶのか?">Firefox はどのようにブロックする対象を選ぶのか?</h2>
+
+<p>コンテンツはそれがロードされるドメインに基づいてブロックされます。</p>
+
+<p>Firefox は、サイトをまたぐユーザーの追跡を行うサイトをリストにします。トラッキング防止機能が有効な場合、Firefoxは、このリストにあるサイトからのコンテンツをブロックします。</p>
+
+<p>ユーザーの追跡を行うサイトとしては、広告サイトや分析サイトが一般的です。</p>
+
+<h2 id="このことがあなたのサイトにとって意味するものは?">このことがあなたのサイトにとって意味するものは?</h2>
+
+<p>トラッキング防止が有効であれば、次のことが言えます。</p>
+
+<ul>
+ <li>追跡を行うサイトから提供されるコンテンツはユーザーに表示されない。</li>
+ <li>追跡を行うような広告サービスまたは解析ツールをあなたのサイトで使うことができなくなる。</li>
+</ul>
+
+<p>もしあなたのサイトの別の部分が、ロードされる追跡を行うコンテンツに依存していた場合、トラッキング防止が有効になっているとこれらの部分も同様に正しく表示されなくなるかもしれません。例えば、追跡を行うサイトからコンテンツがロードされた時に実行されるようなコールバックがあなたのサイトに含まれたいた場合、このコールバックが実行されることはありません。</p>
+
+<p>例えば、Google Analytics はこのような使い方をすべきではありません:</p>
+
+<pre class="brush:html example-bad line-numbers language-html"><code class="language-html"><span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>a</span> <span class="attr-name token">href</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>http://www.example.com<span class="punctuation token">"</span></span> <span class="attr-name token">onclick</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>trackLink(<span class="punctuation token">'</span>http://www.example.com<span class="punctuation token">'</span>, event);<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>Visit example.com<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>a</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="language-javascript script token">
+<span class="keyword token">function</span> <span class="function token">trackLink</span><span class="punctuation token">(</span>url<span class="punctuation token">,</span>event<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ event<span class="punctuation token">.</span><span class="function token">preventDefault</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="function token">ga</span><span class="punctuation token">(</span><span class="string token">'send'</span><span class="punctuation token">,</span> <span class="string token">'event'</span><span class="punctuation token">,</span> <span class="string token">'outbound'</span><span class="punctuation token">,</span> <span class="string token">'click'</span><span class="punctuation token">,</span> url<span class="punctuation token">,</span> <span class="punctuation token">{</span>
+ <span class="string token">'transport'</span><span class="punctuation token">:</span> <span class="string token">'beacon'</span><span class="punctuation token">,</span>
+ <span class="string token">'hitCallback'</span><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>
+ document<span class="punctuation token">.</span>location <span class="operator 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><span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>script</span><span class="punctuation token">&gt;</span></span></code></pre>
+
+<p>その代わり、Google Analytics を使わない場合も考慮して、次のように ga オブジェクトが初期化されているか確認してください:</p>
+
+<pre class="brush:html example-good line-numbers language-html"><code class="language-html"><span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>a</span> <span class="attr-name token">href</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>http://www.example.com<span class="punctuation token">"</span></span> <span class="attr-name token">onclick</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>trackLink(<span class="punctuation token">'</span>http://www.example.com<span class="punctuation token">'</span>, event);<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>Visit example.com<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>a</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="language-javascript script token">
+<span class="keyword token">function</span> <span class="function token">trackLink</span><span class="punctuation token">(</span>url<span class="punctuation token">,</span>event<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ event<span class="punctuation token">.</span><span class="function token">preventDefault</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>window<span class="punctuation token">.</span>ga <span class="operator token">&amp;&amp;</span> ga<span class="punctuation token">.</span>loaded<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="function token">ga</span><span class="punctuation token">(</span><span class="string token">'send'</span><span class="punctuation token">,</span> <span class="string token">'event'</span><span class="punctuation token">,</span> <span class="string token">'outbound'</span><span class="punctuation token">,</span> <span class="string token">'click'</span><span class="punctuation token">,</span> url<span class="punctuation token">,</span> <span class="punctuation token">{</span>
+ <span class="string token">'transport'</span><span class="punctuation token">:</span> <span class="string token">'beacon'</span><span class="punctuation token">,</span>
+ <span class="string token">'hitCallback'</span><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> document<span class="punctuation token">.</span>location <span class="operator 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="keyword token">else</span> <span class="punctuation token">{</span>
+ document<span class="punctuation token">.</span>location <span class="operator token">=</span> url<span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</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></code></pre>
+
+<p>この手法についてより詳しくは <a href="https://hacks.mozilla.org/2016/01/google-analytics-privacy-and-event-tracking/">Google Analytics, Privacy, and Event Tracking</a> をご覧ください。</p>
+
+<p>他のサイトからのコンテンツに依存してしまうやり方は、そのサイトが重かったり、読み込みに失敗したり、アドオンによってトラッキングがブロックされた場合にあなたのサイトまで影響を受けてしまうので良い方法とは言えません。</p>
diff --git a/files/ja/mozilla/firefox/releases/1.5/changing_the_priority_of_http_requests/index.html b/files/ja/mozilla/firefox/releases/1.5/changing_the_priority_of_http_requests/index.html
new file mode 100644
index 0000000000..6064899206
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/1.5/changing_the_priority_of_http_requests/index.html
@@ -0,0 +1,66 @@
+---
+title: HTTPリクエストの優先順位の変更
+slug: Mozilla/Firefox/Releases/1.5/Changing_the_priority_of_HTTP_requests
+tags:
+ - HTTP
+translation_of: Mozilla/Firefox/Releases/1.5/Changing_the_priority_of_HTTP_requests
+---
+<div>{{FirefoxSidebar}}</div>
+
+<h3 id="イントロダクション">イントロダクション</h3>
+
+<p>In <a href="/en/Firefox_1.5_for_developers" title="en/Firefox_1.5_for_developers">Firefox 1.5</a> (Gecko 1.8), an API was added to support changing the priority of <a href="/en/HTTP" title="en/HTTP">HTTP</a> requests. Prior to this, there was no way to directly indicate that a request was of a different priority. The API is defined in <a href="/en/nsISupportsPriority" title="en/nsISupportsPriority">nsISupportsPriority</a>, but is defined in very generic terms so that any object can implement this interface to enable the concept of priority. This article deals specifically with using that interface to change the priority of HTTP requests.</p>
+
+<p>At the time of this writing, changing the priority of an HTTP request only affects the order in which connection attempts are made. This means that the priority only has an effect when there are more connections (to a server) than are allowed.</p>
+
+<p>The examples in this document are all written in <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a> using <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a>.</p>
+
+<h3 id="APIの使用">APIの使用</h3>
+
+<p>It should be noted that the value of the <code>priority</code> attribute follows UNIX conventions, with smaller numbers (including negative numbers) having higher priority.</p>
+
+<h4 id="Accessing_priority_from_an_nsIChannel">Accessing priority from an nsIChannel</h4>
+
+<p>To change the priority of an HTTP request, you need access to the <a href="/en/XPCOM_Interface_Reference/nsIChannel" title="en/XPCOM_Interface_Reference/nsIChannel">nsIChannel</a> that the request is being made on. If you do not have an existing channel, then you can create one as follows:</p>
+
+<pre class="eval">var ios = Components.classes["@<a class="linkification-ext external" href="http://mozilla.org/network/io-service;1" title="Linkification: http://mozilla.org/network/io-service;1">mozilla.org/network/io-service;1</a>"]
+ .getService(Components.interfaces.nsIIOService);
+var ch = ios.newChannel("<a class="linkification-ext external" href="http://www.example.com/" title="Linkification: http://www.example.com/">http://www.example.com/</a>", null, null);
+</pre>
+
+<p><br>
+ Once you have an <a href="/en/XPCOM_Interface_Reference/nsIChannel" title="en/XPCOM_Interface_Reference/nsIChannel">nsIChannel</a>, you can access the priority as follows:</p>
+
+<pre class="eval">if (ch instanceof Components.interfaces.nsISupportsPriority) {
+ ch.priority = Components.interfaces.nsISupportsPriority.PRIORITY_LOWEST;
+}
+</pre>
+
+<p>For convenience, the interface defines several standard priority values that you can use, ranging from <code>PRIORITY_HIGHEST</code> to <code>PRIORITY_LOWEST</code>.</p>
+
+<h4 id="Getting_an_nsIChannel_from_XMLHttpRequest">Getting an nsIChannel from XMLHttpRequest</h4>
+
+<p>If you are programming in <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a>, you will probably want to use <a href="/en/XMLHttpRequest" title="en/XMLHttpRequest">XMLHttpRequest</a>, a much higher level abstraction of an HTTP request. You can access the <code>channel</code> member of an <a href="/en/XMLHttpRequest" title="en/XMLHttpRequest">XMLHttpRequest</a> once you have called the <code>open</code> method on it, as follows:</p>
+
+<pre class="eval">var req = new XMLHttpRequest();
+req.open("GET", "<a class="linkification-ext external" href="http://www.example.com" title="Linkification: http://www.example.com">http://www.example.com</a>", false);
+if (req.channel instanceof Components.interfaces.nsISupportsPriority) {
+ req.channel.priority = Components.interfaces.nsISupportsPriority.PRIORITY_LOWEST;
+}
+req.send(null);
+</pre>
+
+<p><br>
+ Note that this example uses a synchronous <a href="/en/XMLHttpRequest" title="en/XMLHttpRequest">XMLHttpRequest</a>, which you should not use in practice.</p>
+
+<h4 id="優先順位の調整">優先順位の調整</h4>
+
+<p><a href="/en/nsISupportsPriority#adjustPriority" title="en/nsISupportsPriority#adjustPriority">nsISupportsPriority</a> includes a convenience method named <code>adjustPriority</code>. You should use this if you want to alter the priority of a request by a certain amount. For example, if you would like to make a request have slightly higher priority than it currently has, you could do the following:</p>
+
+<pre class="eval">// assuming we already have a nsIChannel from above
+if (ch instanceof Components.interfaces.nsISupportsPriority) {
+ ch.adjustPriority(-1);
+}
+</pre>
+
+<p>Remember that lower numbers mean higher priority, so adjusting by a negative number will serve to increase the request's priority.</p>
diff --git a/files/ja/mozilla/firefox/releases/1.5/index.html b/files/ja/mozilla/firefox/releases/1.5/index.html
new file mode 100644
index 0000000000..9b21bb503c
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/1.5/index.html
@@ -0,0 +1,122 @@
+---
+title: Firefox 1.5 for developers
+slug: Mozilla/Firefox/Releases/1.5
+tags:
+ - Add-ons
+ - CSS
+ - DOM
+ - Extensions
+ - HTML
+ - JavaScript
+ - RDF
+ - SVG
+ - Web Development
+ - Web Standards
+ - XML
+ - XML Web Services
+ - XSLT
+ - XUL
+translation_of: Mozilla/Firefox/Releases/1.5
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p>Gecko 1.8 エンジンに基づいて、Firefox 1.5 はクラス最高の標準サポートを改善し、次世代の Web アプリケーションを可能にする新しい機能を提供しました。Firefox 1.5 では、CSS2 と CSS3、SVG 1.1 と &lt;canvas&gt;、XForms と XML イベント、さらに多くの DHTML、JavaScript、DOM 拡張を介したスクリプト可能でプログラム可能な 2D グラフィックスの API のサポートが強化されています。</p>
+
+<h2 id=".E9.96.8B.E7.99.BA.E3.83.84.E3.83.BC.E3.83.AB" name=".E9.96.8B.E7.99.BA.E3.83.84.E3.83.BC.E3.83.AB">開発ツール</h2>
+
+<p>Firefox 1.5 をサポートする開発者を助ける、さまざまなツールやブラウザ拡張機能が利用可能です。</p>
+
+<ul>
+ <li><a href="/ja/docs/DOM_Inspector">DOM Inspector</a> : 開発者が、文書を直接編集しなくても文書を調査、編集可能なツールです。DOM Inspector は、カスタムインストールにある Firefox 1.5 の開発者ツールの中からインストール可能です。</li>
+ <li>JavaScript console : JavaScript コードを、JavaScript と CSS のエラーをみながら作成、試験可能なツールです。</li>
+ <li>ページのソースにてシンタックスハイライト、検索機能を利用できます。</li>
+ <li><a class="link-https" href="https://addons.mozilla.org/extensions/showlist.php?application=firefox&amp;category=Developer%20Tools">ブラウザ拡張</a> には、<a class="external" href="http://www.joehewitt.com/software/firebug/">FireBug</a>, <a href="/ja/docs/Web_Developer_Extension_(external)">ウェブ開発ツールバー</a>, <a href="/ja/docs/Live_HTTP_Headers_(external)">Live HTTP Headers</a>, <a href="/ja/docs/HTML_Validator_(external)">HTML Validator</a> などさまざまな機能が含まれます。</li>
+</ul>
+
+<p><strong>注:</strong> いくつかの拡張機能はいまのところ Firefox 1.5 をサポートしていません。これらは自動的に無効になります。</p>
+
+<h2 id=".E6.A6.82.E8.AA.AC" name=".E6.A6.82.E8.AA.AC">概説</h2>
+
+<p>Firefox 1.5 での新機能のいくつかを紹介します。</p>
+
+<h3 id=".E3.82.A6.E3.82.A7.E3.83.96.E3.82.B5.E3.82.A4.E3.83.88.E3.80.81.E3.82.A6.E3.82.A7.E3.83.96.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E9.96.8B.E7.99.BA.E8.80.85.E5.90.91.E3.81.91" name=".E3.82.A6.E3.82.A7.E3.83.96.E3.82.B5.E3.82.A4.E3.83.88.E3.80.81.E3.82.A6.E3.82.A7.E3.83.96.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E9.96.8B.E7.99.BA.E8.80.85.E5.90.91.E3.81.91">ウェブサイト、ウェブアプリケーション開発者向け</h3>
+
+<dl>
+ <dt><a href="/ja/docs/SVG_In_HTML_Introduction">XHTML の中での SVG についての導入</a></dt>
+ <dd>SVG を XHTML ページの中でどのように利用し、JavaScript と CSS を通常の XHTML でのスクリプトと同様な方法で画像を操作する方法について学習します。<a href="/ja/docs/SVG_in_Firefox">SVG in Firefox</a> も読み、 Firefox における SVG 実装の問題点と現状について学習してください。</dd>
+ <dt><a href="/ja/docs/Drawing_Graphics_with_Canvas">Canvas での画像の描き方</a></dt>
+ <dd>新しい <code>&lt;canvas&gt;</code> タグについて、Firefox においてどのようにグラフやその他のオブジェクトを描くかについて学習します。</dd>
+ <dt><a href="/ja/docs/CSS3_Columns">CSS3 Columns</a></dt>
+ <dd>CSS3 に提案されている自動マルチカラムテキストレイアウトの新規サポートについて学習します。</dd>
+ <dt><a href="/ja/docs/Using_Firefox_1.5_caching">Firefox 1.5 のキャッシュを利用する</a></dt>
+ <dd><code>bfcache</code> と、進む・戻る機能をどのように高速化したかについて学習します。</dd>
+</dl>
+
+<h3 id="XUL_.E3.81.A8.E6.8B.A1.E5.BC.B5.E6.A9.9F.E8.83.BD.E9.96.8B.E7.99.BA.E8.80.85.E5.90.91.E3.81.91" name="XUL_.E3.81.A8.E6.8B.A1.E5.BC.B5.E6.A9.9F.E8.83.BD.E9.96.8B.E7.99.BA.E8.80.85.E5.90.91.E3.81.91">XUL と拡張機能開発者向け</h3>
+
+<dl>
+ <dt><a href="/ja/docs/Building_an_Extension">拡張機能の作成方法</a></dt>
+ <dd>このチュートリアルでは、Firefox の最も基礎的な拡張機能を作成するために必要な段階を通して説明します。新しい拡張機能の作成をより簡単にする、Firefox 1.5 での拡張機能マネージャーの新機能のデモを行う <a class="external" href="http://kb.mozillazine.org/Getting_started_with_extension_development">MozillaZine ナレッジベースのほかのチュートリアル</a> も参考にしてください。</dd>
+ <dt><a href="/ja/docs/XPCNativeWrapper">XPCNativeWrapper</a></dt>
+ <dd><code>XPCNativeWrapper</code> は、<a href="/ja/docs/Safely_accessing_content_DOM_from_chrome">特権コードから安全にアクセスする</a> ためにオブジェクトを包む方法です。すべての Firefox バージョンで利用可能ですが、Firefox 1.5 (Gecko 1.8) から動作が変更されました。</dd>
+ <dt><a href="/ja/docs/Preferences_System">設定機能</a></dt>
+ <dd>より少ない JavaScript コードでより簡単にオプションウィンドウを作成可能な新しいウィジェットについて学習します。</dd>
+ <dt><a href="/ja/docs/International_characters_in_XUL_JavaScript">XUL JavaScript 内部文字コード</a></dt>
+ <dd>XUL JavaScript ファイルに、ASCII でない文字を含むことができるようになりました。</dd>
+ <dt><a href="/ja/docs/Tree_Widget_Changes">Tree API の変更</a></dt>
+ <dd>XUL <code>&lt;tree&gt;</code> エレメントへのアクセスのインターフェースが変更されました。</dd>
+ <dt><a href="/ja/docs/XUL_Changes_for_Firefox_1.5">Firefox 1.5 での XUL の変更</a></dt>
+ <dd>XUL についての変更のまとめです。<a href="/ja/docs/Adapting_XUL_Applications_for_Firefox_1.5">XUL アプリケーションを Firefox 1.5 に対応させる</a> も参考にしてください。</dd>
+ <dt>ネットワーク関係の変更</dt>
+</dl>
+
+<ul>
+ <li>証明書のプロンプトは、チャネルごとに上書き可能になりました。これは、<a href="/ja/docs/NsIChannel">nsIChannel</a> の notificationCallbacks へインターフェースリクエスタとして設定し、<a href="/ja/docs/NsIBadCertListener">nsIBadCertListener</a> へインターフェースを設定することで動作します。</li>
+ <li>nsIWebBrowserPersist のリスナは、<a href="/ja/docs/NsIInterfaceRequestor">nsIInterfaceRequestor</a>::GetInterface を実装し、<a href="/ja/docs/NsIProgressEventSink">nsIProgressEventSink</a> (<a href="/ja/docs/NsIWebProgressListener">nsIWebProgressListener</a> と重複し、そう使い勝手がいいわけではありません) を含む問い合わせがくる可能性のあるチャネルのすべてのインターフェースを提供する機会をもちました。これには、<a href="/ja/docs/NsIChannelEventSink">nsIChannelEventSink</a> と <a href="/ja/docs/NsIBadCertListener">nsIBadCertListener</a> も含みます。</li>
+ <li>XMLHttpRequest を含む、拡張機能や他の necko 利用側は、cookie ヘッダを明示的に設定でき、necko はそれを置き換えません。保存された cookie は、明示的に設定されたヘッダと組み合わされ、保存された cookie を上書きします。</li>
+</ul>
+
+<h2 id=".E6.96.B0.E3.81.97.E3.81.84.E3.82.A8.E3.83.B3.E3.83.89.E3.83.A6.E3.83.BC.E3.82.B6.E5.90.91.E3.81.91.E6.A9.9F.E8.83.BD" name=".E6.96.B0.E3.81.97.E3.81.84.E3.82.A8.E3.83.B3.E3.83.89.E3.83.A6.E3.83.BC.E3.82.B6.E5.90.91.E3.81.91.E6.A9.9F.E8.83.BD">新しいエンドユーザ向け機能</h2>
+
+<h3 id=".E3.83.A6.E3.83.BC.E3.82.B6.E4.BD.93.E9.A8.93" name=".E3.83.A6.E3.83.BC.E3.82.B6.E4.BD.93.E9.A8.93">ユーザ体験</h3>
+
+<ul>
+ <li><strong>より早いブラウザナビゲーション</strong> 戻る・進むボタンのパフォーマンス改善</li>
+ <li><strong>ブラウザタブのドラッグ・ドロップによる再配列</strong></li>
+ <li><strong>検索エンジンリストへの Answers.com の追加</strong> (辞書検索)</li>
+ <li><strong>製品利便性の向上</strong> エラーページの記述の改善、オプションメニューの再配置、RSS 検出、"セーフモード"について</li>
+ <li><strong>よりよいアクセシビリティーのサポート</strong> DHTML のアクセシビリティーを含む</li>
+ <li><strong>壊れたウェブサイトのレポートのウイザード</strong> により、Firefox で動作しないウェブサイトの報告が行えます。</li>
+ <li><strong>Mac OS X 環境のよりよいサポート</strong> (10.2 かそれ以上)、Safari や Mac Internet Explorer からのプロファイル移行を含む。</li>
+</ul>
+
+<h3 id=".E3.82.BB.E3.82.AD.E3.83.A5.E3.83.AA.E3.83.86.E3.82.A3.E3.83.BC.E3.81.A8.E3.83.97.E3.83.A9.E3.82.A4.E3.83.90.E3.82.B7.E3.83.BC" name=".E3.82.BB.E3.82.AD.E3.83.A5.E3.83.AA.E3.83.86.E3.82.A3.E3.83.BC.E3.81.A8.E3.83.97.E3.83.A9.E3.82.A4.E3.83.90.E3.82.B7.E3.83.BC">セキュリティーとプライバシー</h3>
+
+<ul>
+ <li><strong>自動更新</strong> による、能率化された製品アップグレード。アップグレードの通知は、より目立つようになり、Firefox のアップデートも 0.5MB かそれ以下になりました。拡張機能のアップデートも改良されました。</li>
+ <li><strong>ポップアップブロックの改良</strong></li>
+ <li><strong>プライバシーデータの消去</strong> 機能により、より簡単に、メニューやキーボードショートカットから個人データの消去が高速に行えるようになりました。</li>
+</ul>
+
+<h3 id=".E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.81.AA.E3.82.A6.E3.82.A7.E3.83.96.E6.A8.99.E6.BA.96.E3.81.AE.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88" name=".E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.81.AA.E3.82.A6.E3.82.A7.E3.83.96.E6.A8.99.E6.BA.96.E3.81.AE.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88">オープンなウェブ標準のサポート</h3>
+
+<p>Firefox のウェブ標準のサポートは、一貫性のあるクロスプラットフォームな実装とともに、業界をリードし続けます。</p>
+
+<ul>
+ <li>Hypertext Markup Language (<a href="/ja/docs/HTML">HTML</a>)、 Extensible Hypertext Markup Language (<a href="/ja/docs/XHTML">XHTML</a>): <a class="external" href="http://www.w3.org/TR/html401/">HTML 4.01</a> と <a class="external" href="http://www.w3.org/TR/xhtml1/">XHTML 1.0/1.1</a></li>
+ <li>Cascading Style Sheets (<a href="/ja/docs/CSS">CSS</a>): <a class="external" href="http://www.w3.org/TR/REC-CSS1">CSS Level 1</a>, <a class="external" href="http://www.w3.org/TR/REC-CSS2">CSS Level 2</a> と <a class="external" href="http://www.w3.org/Style/CSS/current-work.html">CSS Level 3</a> の一部</li>
+ <li>Document Object Model (<a href="/ja/docs/DOM">DOM</a>): <a class="external" href="http://www.w3.org/TR/2000/WD-DOM-Level-1-20000929/">DOM Level 1</a>, <a class="external" href="http://www.w3.org/DOM/DOMTR#dom2">DOM Level 2</a> と <a class="external" href="http://www.w3.org/DOM/DOMTR#dom3">DOM Level 3</a> の一部</li>
+ <li>Mathematical Markup Language: <a class="external" href="http://www.w3.org/Math/">MathML Version 2.0</a></li>
+ <li>Extensible Markup Language (<a href="/ja/docs/XML">XML</a>): <a class="external" href="http://www.w3.org/TR/REC-xml">XML 1.0</a>, <a class="external" href="http://www.w3.org/TR/REC-xml-names/">XML 名前空間</a>, <a class="external" href="http://www.w3.org/TR/xml-stylesheet/">XML 文書へのスタイルシートの関連付け 1.0</a>, <a class="external" href="http://lists.w3.org/Archives/Public/www-xml-linking-comments/2001AprJun/att-0074/01-NOTE-FIXptr-20010425.htm">XML のフラグメント同定</a></li>
+ <li>XSL 変換 (<a href="/ja/docs/XSLT">XSLT</a>): <a class="external" href="http://www.w3.org/TR/xslt">XSLT 1.0</a></li>
+ <li>XML Path Language (<a href="/ja/docs/XPath">XPath</a>): <a class="external" href="http://www.w3.org/TR/xpath">XPath 1.0</a></li>
+ <li>Resource Description Framework (<a href="/ja/docs/RDF">RDF</a>): <a class="external" href="http://www.w3.org/RDF/">RDF</a></li>
+ <li>Simple Object Access Protocol (SOAP): <a class="external" href="http://www.w3.org/TR/SOAP/">SOAP 1.1</a></li>
+ <li><a href="/ja/docs/ECMA-262">ECMA-262</a>, revision 3 に基づく <a href="/ja/docs/JavaScript">JavaScript</a> 1.6: <a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">ECMA-262</a></li>
+</ul>
+
+<p>Firefox 1.5 は、データ転送プロトコル (HTTP/FTP/SSL/TLS/その他)、他言語文字データ (Unicode)、画像 (GIF/JPEG/PNG/SVG/その他) や、世界でもっとも普及したスクリプト言語の最新版である <a href="/ja/docs/New_in_JavaScript_1.6">JavaScript 1.6</a> をサポートしています。</p>
+
+<h2 id="Firefox_1.0_.E4.BB.A5.E9.99.8D.E3.81.AE.E5.A4.89.E6.9B.B4" name="Firefox_1.0_.E4.BB.A5.E9.99.8D.E3.81.AE.E5.A4.89.E6.9B.B4">Firefox 1.0 以降の変更</h2>
+
+<p>2004 年 11 月 9 日の最初のリリース以降、さまざまな変更が Firefox へ導入されています。Firefox は多くの新機能とバグ修正により前進してきました。変更点の詳しい一覧は <a class="external" href="http://www.squarefree.com/burningedge/releases/1.5-comprehensive.html">squarefree.com</a> にあります。</p>
diff --git a/files/ja/mozilla/firefox/releases/10/index.html b/files/ja/mozilla/firefox/releases/10/index.html
new file mode 100644
index 0000000000..f22691ca88
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/10/index.html
@@ -0,0 +1,197 @@
+---
+title: Firefox 10 for developers
+slug: Mozilla/Firefox/Releases/10
+tags:
+ - Firefox
+ - Firefox 10
+ - Gecko 10
+translation_of: Mozilla/Firefox/Releases/10
+---
+<div>{{ draft }}</div>
+
+<p>Gecko 10.0 を搭載した Firefox 10 は米国時間 2012 年 1 月 31 日にリリースされました。このページでは、開発者に影響する Firefox 10 の変更点をまとめています。</p>
+
+<div class="note"><strong>重要: </strong>Firefox 10 は、2 桁の数値で表記される最初のリリースです。これにより、一部の UserAgent 検出スクリプトで問題が発生するおそれがあります。そのようなスクリプトや、ページに埋め込まれているサードパーティのソフトウェア (ライブラリなど) で UserAgent 検出を行っているものの確認を行うようにしてください。この点に関する詳細情報は、hack.mozilla.org の記事 <a class="external" href="http://hacks.mozilla.org/2012/01/firefox-goes-2-digit-time-to-check-your-ua-sniffing-scripts/" title="http://hacks.mozilla.org/2012/01/firefox-goes-2-digit-time-to-check-your-ua-sniffing-scripts/">Firefox goes 2-digit article on </a> をご覧ください。</div>
+
+<h2 id="Web_開発者向けの変更点一覧">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li>方向が異なるテキストの部分を分離することを可能にする、HTML5 の {{ HTMLElement("bdi") }} (bi-directional isolation) 要素が実装されました。これは、既知の方向のテキスト内に未知の方向のテキスト (例えばデータベースから取り出したテキストで、方向が異なる可能性がある) を表示する場合に特に有用です。</li>
+ <li>{{ htmlattrxref("href", "a") }} 属性に、ページ先頭へのリンクを作成するための断片 "top" を指定可能になりました。これは過去に動作していてその後一時的に削除されていましたが、HTML5 仕様書との互換性のため再び動作するようになりました。例: <code>&lt;a href="#top"&gt;Return to top of page&lt;/a&gt;</code>.</li>
+</ul>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Global_Objects/WeakMap" title="https://developer.mozilla.org/ja/docs/JavaScript/Reference/Global_Objects/WeakMap">WeakMap</a>.set()</code> メソッドの戻り値はそれ自身から <em><code>undefined</code></em> に替わりました。</li>
+ <li>Firefox 7 以降で正規表現のハンドリングに関する不具合がありましたが、修正されました。詳しくは {{ bug("683838") }} をご覧ください。</li>
+ <li><a href="/ja/docs/JavaScript/Reference/Functions_and_function_scope/Strict_mode" title="Strict mode">ECMAScript 5 strict mode</a> (すなわち、<code>"use strict;"</code> 以降) では、<a href="/ja/docs/E4X" title="E4X">E4X</a> の構文を使用できなくなりました。</li>
+</ul>
+
+<h3 id="DOM">DOM</h3>
+
+<h4 id="DOM3_Events">DOM3 Events</h4>
+
+<ul>
+ <li>DOM イベントの <a href="/ja/docs/DOM/event.stopImmediatePropagation" title="event.stopImmediatePropagation"><code>event.stopImmediatePropagation</code></a> メソッドが実装されました。</li>
+ <li>マウスイベントの <code>mouseenter</code> および <code>mouseleave</code> が実装されました。</li>
+</ul>
+
+<h4 id="DOM4">DOM4</h4>
+
+<ul>
+ <li>DOM4 仕様書で非推奨とされたため、{{ domxref("document.xmlVersion") }} 属性 (読み取りのみ可能で、設定は不可) が削除されました。{{ domxref("document.xmlVersion") }} の記事では、このプロパティを使用せずに ドキュメントが HTML か XML かを判断する方法を提案しています。</li>
+ <li>DOM4 仕様書で非推奨とされたため、{{ domxref("document.xmlStandalone") }} 属性が削除されました。</li>
+ <li>DOM4 仕様書で非推奨とされたため、{{ domxref("document.xmlEncoding") }} 属性が削除されました。</li>
+ <li>DOM4 仕様書で非推奨とされたため、{{ domxref("text.isElementContentWhiteSpace") }} 属性が削除されました。</li>
+ <li>DOM4 仕様書で非推奨とされたため、{{ domxref("text.replaceWholeText") }} メソッドが削除されました。</li>
+ <li>DOM4 仕様書で非推奨とされたため、{{ domxref("node.isSameNode") }} メソッドが削除されました。<code><em>node1</em>.isSameNode(<em>node2</em>)</code> に代わり、<code>===</code> 演算子を使用できます。例: <code><em>node1 </em>===</code><code><em> node2</em></code></li>
+</ul>
+
+<h4 id="Page_Visibility_API">Page Visibility API</h4>
+
+<ul>
+ <li><a href="/ja/docs/DOM/Using_the_Page_Visibility_API" title="Using the Page Visibility API">Page Visibility API</a> が実装されました (接頭辞が付加されています): <code>document.mozHidden</code>、<code>document.mozVisibilityState</code> が利用可能であり、また状態が変更されると <code>mozvisibilitychanged</code> イベントが送信されます。</li>
+</ul>
+
+<h4 id="Full_Screen_API">Full Screen API</h4>
+
+<ul>
+ <li>{{ domxref("document.mozFullScreenEnabled") }} のサポートが追加されました。</li>
+ <li>{{ cssxref(":-moz-full-screen-ancestor") }} プロパティが追加されました。これはフルスクリーンモードになっている要素の祖先要素に対してマッチします。</li>
+</ul>
+
+<h4 id="Battery_API">Battery API</h4>
+
+<ul>
+ <li>{{ domxref("window.navigator.mozBattery") }} の実験的なサポートが追加されました (設定 <code>dom.battery.enabled</code> を <code>true</code> にすることで有効になります。また、Firefox 11 からはデフォルトで有効になる予定です)。</li>
+</ul>
+
+<h4 id="Canvas">Canvas</h4>
+
+<ul>
+ <li><a href="/ja/docs/DOM/CanvasRenderingContext2D#createPattern%28%29" title="DOM/CanvasRenderingContext2D#createPattern%28%29"><code>createPattern()</code></a> メソッドは、サイズが 0 の canvas が指定された場合に例外が発生するようになりました。</li>
+ <li>仕様書に準拠するため、<a href="/ja/docs/DOM/CanvasRenderingContext2D#putImageData%28%29" title="DOM/CanvasRenderingContext2D#putImageData%28%29"><code>putImageData()</code></a> の数値引数のいずれかに有限値でない値を与えたときに例外が発生するのではなく、値を無視するようになりました。</li>
+</ul>
+
+<h4 id="WebGL">WebGL</h4>
+
+<ul>
+ <li>Firefox 10 で、<a class="external" href="http://www.khronos.org/registry/webgl/extensions/OES_standard_derivatives/" title="http://www.khronos.org/registry/webgl/extensions/OES_standard_derivatives/"><code>OES_standard_derivatives</code></a> 拡張がサポートされました。</li>
+ <li>完全な開発環境上で、最低限のサポートにとどまるデバイスとの WebGL コードの互換性を確認するために役立つ <a href="/ja/docs/WebGL#WebGL_debugging_and_testing" title="WebGL#WebGL_debugging_and_testing">新たな設定項目</a> が追加されました。</li>
+</ul>
+
+<h4 id="Web_Workers">Web Workers</h4>
+
+<ul>
+ <li><a href="/ja/docs/DOM/Worker/Functions_available_to_workers#section_2" title="https://developer.mozilla.org/ja/docs/DOM/Worker/Functions_available_to_workers#section_2">Workers</a> 内で <code>XMLHttpRequest.responseType</code> 属性および <code>XMLHttpRequest.response</code> 属性が利用可能になりました。</li>
+ <li><a href="/ja/docs/DOM/Worker#Worker()" title="DOM/Worker#Worker()"><code>Worker()</code></a> コンストラクタが <a href="/ja/docs/data_URIs" title="data URIs">data URIs</a> を受け入れるようになりました。</li>
+</ul>
+
+<h4 id="IndexedDB">IndexedDB</h4>
+
+<p>IndexedDB を最新のドラフト仕様に更新するための大きな進展がありました。この努力は Firefox 11 でも続くでしょう。</p>
+
+<ul>
+ <li><a href="/ja/docs/IndexedDB/IDBIndex#count" title="IndexedDB/IDBIndex#count"><code>IDBIndex.count()</code></a> メソッドおよび <a href="/ja/docs/IndexedDB/IDBObjectStore#count" title="IndexedDB/IDBObjectStore#count"><code>IDBObjectStore.count()</code></a> メソッドが追加されました。</li>
+ <li><a href="/ja/docs/IndexedDB/IDBCursor#advance" title="IndexedDB/IDBCursor#advance"><code>IDBCursor.advance()</code></a> メソッドが追加されました。</li>
+ <li><a href="/ja/docs/IndexedDB/IDBObjectStore#createIndex" title="https://developer.mozilla.org/ja/docs/IndexedDB/IDBObjectStore#createIndex"><code>IDBObjectStore.createIndex()</code></a> および <a href="/ja/docs/IndexedDB/IDBDatabase#createObjectStore" title="IndexedDB/IDBDatabase#createObjectStore"><code>IDBDatabase.createObjectStore()</code></a> で未知のオプション引数が渡されたとき、Gecko は例外を発生させるのではなくそれを無視するようになりました。</li>
+ <li><a href="/ja/docs/IndexedDB/IDBTransaction#abort%28%29" title="https://developer.mozilla.org/ja/docs/IndexedDB/IDBTransaction#abort%28%29"><code>IDBTransaction.abort()</code></a> が呼び出されると、待機状態にあるすべての <a href="/ja/docs/IndexedDB/IDBRequest" title="IDBRequest"><code>IDBRequest</code></a> は <code>errorCode</code> を <code>ABORT_ERROR</code> に設定します。</li>
+ <li><a href="/ja/docs/IndexedDB/IDBObjectStore#delete()" title="IndexedDB/IDBObjectStore#delete()"><code>IDBObjectStore.delete()</code></a> メソッドおよび <a href="/ja/docs/IndexedDB/IDBCursor#delete()" title="IndexedDB/IDBCursor#delete()"><code>IDBCursor.delete()</code></a> メソッドは、戻り値となる <a href="/ja/docs/IndexedDB/IDBRequest" title="IndexedDB/IDBRequest"><code>IDBRequest</code></a> の <code>result</code> 属性の値を <code>undefined</code> にするようになりました。</li>
+ <li>最新の仕様書で削除されたため、<a href="/ja/docs/IndexedDB/IDBDatabase#setVersion()" title="IndexedDB/IDBDatabase#setVersion()"><code>IDBDatabase.setVersion()</code></a> メソッドは削除されました。データベースのバージョンは、更新された <a href="/ja/docs/IndexedDB/IDBFactory#open" title="IndexedDB/IDBFactory#open"><code>IDBFactory.open()</code></a> メソッドで渡すことができ、<code>onupgradeneeded</code> コールバックでデータベースのスキーマの更新が可能になります。なお、バージョンの型は <code>DOMString</code> から <code>unsigned long long</code> に替わりました。また、<a href="/ja/docs/IndexedDB/IDBVersionChangeRequest" title="IndexedDB/IDBVersionChangeRequest"><code>IDBVersionChangeRequest</code></a> インタフェースは削除され、新たな <a href="/ja/docs/IndexedDB/IDBOpenDBRequest" title="IndexedDB/IDBOpenDBRequest"><code>IDBOpenDBRequest</code></a> インタフェースに置き換えられました。</li>
+ <li><a href="/ja/docs/IndexedDB/IDBFactory#deleteDatabase%28%29" title="IndexedDB/IDBFactory#deleteDatabase%28%29"><code>IDBFactory.deleteDatabase()</code></a> メソッドが追加されました。</li>
+</ul>
+
+<h4 id="その他の変更点">その他の変更点</h4>
+
+<ul>
+ <li>SVG を含む文字列が与えられたとき、適切な MIMEタイプ <code>image</code><code>/svg+xml</code> が渡された場合は <a href="/ja/docs/DOM/DOMParser#Parsing_a_SVG_document" title="https://developer.mozilla.org/ja/docs/DOM/DOMParser#Parsing_a_SVG_document"><code>DOMParser</code> が <code>SVGDocument</code> を生成する</a>ようになりました。</li>
+ <li>従来 {{ domxref("element.setAttribute()") }} が整数値の構文解析を行うときは、数値ではない文字列が含まれる場合 (例えば "42foo") にエラーを報告していました。これが仕様書へ合致させるために、数値 42 へ正しく切り詰めるようになりました。</li>
+ <li>ESC キーで {{ domxref("window.oninput") }} ハンドラが誤って呼び出されるという、間違った結果にならないようになりました。</li>
+ <li>従来実装されていたものの実際にはアクセスする方法がない {{ domxref("NameList") }} インタフェースは削除されました。</li>
+ <li>{{ domxref("document.createProcessingInstruction()") }} メソッドが HTML ドキュメントでも、XML ドキュメントの場合と同様に動作するようになりました。{{ domxref("ProcessingInstruction") }} ノードは現在も XML ドキュメントでのみサポートされていますが、ノードはドキュメントをまたいで移動させられますので、HTML ドキュメントでも同様にノードを作成することに役立ちます。</li>
+ <li>{{ domxref("XMLHttpRequest") }} のプロパティ <code>responseType</code> の値として <a href="/ja/docs/Firefox_9_for_developers#DOM" title="Firefox_9_for_developers#DOM">Firefox 9 で導入した</a> "<code>moz-json</code>" は、最新のドラフト仕様への更新を行い接頭辞を削除しました。{{ bug("707142#c13") }} をご覧ください。</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>CSS 3D Transforms がサポートされました。これには {{ cssxref("transform-style") }}、{{ cssxref("perspective") }}、{{ cssxref("perspective-origin") }}、{{ cssxref("backface-visibility") }} の各プロパティ、また同様に {{ cssxref("transform") }} および {{ cssxref("transform-function") }} プロパティによる 3D transform 機能が含まれます。詳しくは <a href="/ja/docs/CSS/Using_CSS_transforms#3D_specific_CSS_properties" title="CSS/Using_CSS_transforms#3D_specific_CSS_properties">Using CSS transforms</a> をご覧ください。</li>
+ <li>{{ cssxref("unicode-bidi") }} CSS プロパティへ、新たに 2 つの値 <code>-moz-isolation</code> および <code>-moz-plaintext</code> が追加されました。値 <code>-moz-isolation</code> は、要素がその環境から受けるテキストの方向の見解から切り離すことで、異なる方向のテキストであることを示すことができます。<code>unicode-bidi:-moz-isolation</code> を指定した要素は、 {{ HTMLElement("bdi") }} 要素のように動作します。値 <code>-moz-plaintext</code> は、テキストの方向の決定に CSS の {{ cssxref("direction") }} プロパティではなく Unicode のヒューリスティックな方法を用いることを示します。</li>
+ <li>CSS の {{ cssxref("linear-gradient") }} プロパティおよび {{ cssxref("repeating-linear-gradient") }} プロパティは、新たに <code>to</code> 構文と <em>magic corner</em> アルゴリズムをサポートするよう更新されました。これにより、グラデーションが描画されたボックスの隅へ精密に色を配置することができます。</li>
+ <li>{{ cssxref("text-overflow") }} プロパティに処理法が一つだけ指定されている場合に、ボックスの両側へオーバーフローする場合の <code>text-overflow</code> の扱いが <a href="/ja/docs/CSS/text-overflow#Gecko_notes" title="CSS/text-overflow#Gecko_notes">正しくなりました</a>。</li>
+ <li>ポジショニングされた {{ HTMLElement("table") }} 要素内部での {{ cssxref("position") }} プロパティの扱いが <a href="/ja/docs/CSS/position#Gecko_notes" title="CSS/position#Gecko_notes">修正されました</a>。<strong>この変更はページのレイアウトに影響を与えますが、CSS 仕様書や他のブラウザに従うことになりますので、レイアウトの修正は容易でしょう。</strong></li>
+ <li>{{ HTMLElement("table") }} 要素のマージンの相殺が、CSS 仕様書に合致するようになりました。以前は table 要素のマージンは隣接する要素のマージンと相殺されなかったため、正しくないレイアウトになっていました。<strong>この変更はページのレイアウトに影響を与えますが、CSS 仕様書や他のブラウザに従うことになりますので、レイアウトの修正は容易でしょう。</strong></li>
+</ul>
+
+<h3 id="SVG">SVG</h3>
+
+<ul>
+ <li>最新の SVG 1.1 仕様書へ準拠するため、{{ SVGElement("mask") }} 要素は sRGB および linearRGB をサポートするように更新されました。デフォルトは sRGB です。</li>
+</ul>
+
+<h3 id="ネットワーク">ネットワーク</h3>
+
+<ul>
+ <li>HTTP ヘッダ <code>Accept-Charset</code> は、HTTP 要求時に送信されなくなりました。このヘッダがない場合、サーバは UTF-8 での送信として応答するべきです。</li>
+</ul>
+
+<h3 id="開発ツール">開発ツール</h3>
+
+<ul>
+ <li>{{ domxref("console") }} オブジェクトへ新たに 2 つのメソッド、{{ domxref("console.time()") }} および {{ domxref("console.timeEnd()") }} が追加されました。これらはページにタイマーをセットするために用いられます。</li>
+ <li>コンテンツの背後にある HTML や CSS の調査および操作を行うすばらしい方法を提供する、<a href="/ja/docs/Tools/Page_Inspector" title="Page Inspector">調査ツール</a> が新たに追加されました。</li>
+</ul>
+
+<h2 id="Mozilla_開発者とアドオン開発者向けの変更点">Mozilla 開発者とアドオン開発者向けの変更点</h2>
+
+<p>アドオンを Firefox 10 へ対応させる際に発生すると思われる問題の概要に関しては、<a href="/ja/docs/Firefox/Updating_add-ons_for_Firefox_10" title="Firefox/Updating_add-ons_for_Firefox_10">Updating add-ons for Firefox 10</a> をご覧ください。</p>
+
+<div class="note"><strong>注意:</strong> 古い <a href="/ja/docs/PRBool" title="PRBool"><code>PRBool</code></a> データ形式は退役されました。これを参照する文書では、どこでも代わりに標準 C++ <code>bool</code> 形式を使用します。現時点では文書が更新されていませんが、将来更新されますので留意してください。</div>
+
+<h3 id="Manifests">Manifests</h3>
+
+<ul>
+ <li>インストールマニフェストに <a href="/ja/docs/Install_Manifests#strictCompatibility" title="Install_Manifests#strictCompatibility"><code>&lt;em:strictCompatibility&gt;</code></a> のサポートが追加されました。これによりアドオンの作者が、拡張機能で最大バージョンのチェックを有効にすることができます。<code>true</code> に設定すると、アプリケーションのバージョンが <code>&lt;em:maxVersion&gt;</code> を上回っている場合にアドオンが無効になります。Firefox 10 はデフォルトで、指定された最大バージョンに関わらずアドオンは互換性があるものとします。このフラグは、その設定を上書きします。Firefox の更新により動作しなくなる可能性があることをアドオンで行っている場合はこれを設定するべきですが、アドオンにバイナリコンポーネントが含まれている場合は常に厳密なチェックが行われますのでこれを<strong>設定しない</strong>ようにしてください (バイナリコンポーネントは Firefox のメジャーリリースごとに、必ず再コンパイルが必要です)。</li>
+ <li>以前の動作、つまりマニフェストの <code>strictCompatibility</code> の値に関わらずすべてのアドオンで厳密な互換性チェックを行う方式に戻したい場合は、設定項目 <code>extensions.strictCompatibility</code> を <code>true</code> にしてください。</li>
+</ul>
+
+<h3 id="XUL">XUL</h3>
+
+<ul>
+ <li><a href="/ja/docs/Chrome_Registration" title="chrome.manifest">chrome.manifest</a> ファイルを用いるブートストラップ型アドオンは、マニフェストファイルが自動的に登録されるようになりました。詳しくは <a href="/ja/docs/Extensions/Bootstrapped_extensions#Adding_user_interface_with_a_chrome.manifest" title="Extensions/Bootstrapped_extensions#Adding_user_interface_with_a_chrome.manifest">Adding user interface with a chrome.manifest</a> をご覧ください。</li>
+</ul>
+
+<h3 id="XPConnect">XPConnect</h3>
+
+<ul>
+ <li><a href="/ja/docs/Components.utils" title="Components.utils"><code>Components.utils</code></a> に、デバッグ用に用意された情報へのアクセスを可能にするプロパティとメソッドがいくつか追加されました。</li>
+</ul>
+
+<h3 id="インタフェースの変更">インタフェースの変更</h3>
+
+<ul>
+ <li>{{ interface("mozISpellCheckingEngine") }} インタフェースおよび {{ interface("nsIEditorSpellCheck") }} インタフェースは、再起動の不要なアドオンがスペルチェッカに辞書を追加できるように更新されました。<strong>注: これを行う方法に関して <a href="/ja/docs/Using_an_External_Spell-checker" title="Using_an_External_Spell-checker">ドキュメントの更新</a> が必要。</strong></li>
+ <li>{{ ifattribute("nsIBrowserHistory", "lastPageVisited") }} 属性は削除されました。</li>
+ <li><code>nsIDocumentViewer</code> インタフェースは {{ interface("nsIContentViewer") }} に統合されました。</li>
+ <li>{{ interface("nsIURIFixup") }} インタフェースに、コンバートする際にプラットフォームの文字コードではなく UTF-8 を使用することを示す <code>FIXUP_FLAG_USE_UTF8</code> フラグが追加されました。</li>
+</ul>
+
+<h3 id="プラグインの変更">プラグインの変更</h3>
+
+<ul>
+ <li>新しい変数 <a href="/ja/docs/Gecko_Plugin_API_Reference/Plug-in_Development_Overview#Working_with_URLs" title="Gecko_Plugin_API_Reference/Plug-in_Development_Overview#Working_with_URLs"><code>NPNVdocumentOrigin</code></a> を追加しました。これはドキュメントの生成元を返すもので、{{ domxref("window.location") }} よりセキュアです。</li>
+</ul>
+
+<h3 id="ビルドシステムの変更">ビルドシステムの変更</h3>
+
+<ul>
+ <li>実際はビルドを成功できないようにしてしまう、<code>--disable-rdf</code> ビルドオプションが削除されました。RDF サポートの完全な削除を可能にする作業は進行中ですが、現在の XUL ではこの機能が必須です。RDF を必要とする最後の痕跡を削除する作業の進捗については {{ bug("559505") }} をご覧ください。</li>
+ <li><code>--disable-smil</code> ビルドオプションは削除されました。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<div>{{Firefox_for_developers('9')}}</div>
diff --git a/files/ja/mozilla/firefox/releases/11/index.html b/files/ja/mozilla/firefox/releases/11/index.html
new file mode 100644
index 0000000000..ca9ecfa3da
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/11/index.html
@@ -0,0 +1,111 @@
+---
+title: Firefox 11 for developers
+slug: Mozilla/Firefox/Releases/11
+tags:
+ - Firefox
+ - Firefox 11
+translation_of: Mozilla/Firefox/Releases/11
+---
+<p>Firefox 11 は米国時間  2012 年 3 月13日にリリースされました。この記事は Web 開発者とアドオン開発者向けに、今回のリリースにおける新機能と修正された重要なバグについての情報とより詳細なドキュメントへのリンクをまとめています。</p>
+<h2 id="Web_開発者向けの変更点一覧">Web 開発者向けの変更点一覧</h2>
+<h3 id="HTML">HTML</h3>
+<ul>
+ <li>{{ HTMLElement("audio") }} 要素と {{ HTMLElement("video") }} 要素に、<code>muted</code> 属性と <code>loop</code> 属性が実装されました。</li>
+</ul>
+<h3 id="DOM">DOM</h3>
+<ul>
+ <li>HTML の要素で {{ domxref("element.outerHTML") }} プロパティがサポートされました。</li>
+ <li><a href="/ja/docs/HTML_in_XMLHttpRequest" title="HTML_in_XMLHttpRequest"><code>XMLHttpRequest</code></a> が HTML のパース処理をサポートしました。</li>
+ <li>同期リクエストの実行時における、{{ domxref("XMLHttpRequest") }} <code>responseType</code> および <code>withCredentials</code> 属性の使用のサポートを削除しました。属性の使用を試みると、<code>NS_ERROR_DOM_INVALID_ACCESS_ERR</code> 例外が発生します。この変更は、W3C へ標準化の提案が行われました。</li>
+ <li>バイブレーションをサポートするデバイスでバイブレーションを行う {{ domxref("window.navigator.mozVibrate()") }} をサポートしました。Gecko では <code>mozVibrate()</code> として実装しています。</li>
+ <li>{{ domxref("window.navigator.mozApps") }} は、<a href="/ja/docs/Apps" title="Apps">Open Web Applications</a> のインストールや管理に用いることができる <a href="/ja/docs/DOM/Apps" title="Apps"><code>Apps</code></a> オブジェクトを返します。</li>
+ <li><code>MozBeforePaint</code> イベントは発生しなくなりました。{{ domxref("window.requestAnimationFrame","mozRequestAnimationFrame()") }} でこのイベントを使用している場合は、代わりにコールバック関数を渡してください。</li>
+ <li>アニメーションフレームの要求をキャンセルする機能をサポートしました。{{ domxref("window.requestAnimationFrame", "window.mozRequestAnimationFrame()") }} はリクエスト ID を返すようになり、要求をキャンセルするにはこの値を {{ domxref("window.cancelAnimationFrame", "window.mozCancelAnimationFrame()") }} に渡します。</li>
+ <li>DOM4 仕様書で導入されたいくつかの {{ domxref("Event") }} コンストラクタ (<code>Event</code>、HTML イベント、 <code>UIEvent</code>、<code>MouseEvent</code>) がサポートされました。</li>
+ <li>{{ domxref("window.navigator.mozBattery", "Battery API") }} がデフォルトで有効になりました。</li>
+ <li><a href="/ja/docs/DOM/HTMLMediaElement" title="DOM/HTMLMediaElement"><code>HTMLMediaElement</code></a> で、<a href="/ja/docs/DOM/HTMLMediaElement" title="DOM/HTMLMediaElement"><code>defaultMuted</code></a>、<code><a href="/ja/docs/DOM/HTMLMediaElement" title="DOM/HTMLMediaElement">loop</a></code>、<a href="/ja/docs/DOM/HTMLMediaElement" title="DOM/HTMLMediaElement"><code>muted</code></a> の各プロパティがサポートされました。</li>
+ <li>ある要素で {{ domxref("element.mozRequestFullScreen()") }} メソッドを呼び出したときに別の要素がすでにフルスクリーンモードであった場合は、{{ domxref("document.mozCancelFullScreen()") }} を呼び出すときに、前にフルスクリーンモードであった要素を復元するようになりました。</li>
+ <li>{{ domxref("window.requestAnimationFrame", "window.mozRequestAnimationFrame()") }} メソッドは引数がない形式をサポートしなくなりました。このような形式はあまり使用されておらず、また標準化される見込みもありません。</li>
+ <li>画像としての SVG が、<a href="/ja/docs/CORS_Enabled_Image#What_is_a_.22tainted.22_canvas.3F" title="CORS_Enabled_Image#What_is_a_.22tainted.22_canvas.3F">canvas を汚染せずに</a> canvas 内へ描画できるようになりました。</li>
+ <li><code>GeoPositionAddress</code>インタフェースの非標準プロパティである <code>countryCode</code> を削除しました。{{ interface("nsIDOMGeoPositionAddress") }} をご覧ください。</li>
+ <li><a href="/ja/docs/Server-sent_events" title="Server-sent events">Server-sent events</a> が <a href="/ja/docs/HTTP_access_control" title="HTTP access control (CORS)">CORS</a> をサポートしました。</li>
+ <li>従来、ユーザがリンクをたどると {{ domxref("window.navigator") }} オブジェクトでセットしている値は新しいページが保持していました。これが、新しいページ用に新たな <code>navigator</code> オブジェクトを作成するようになりました。これにより、Firefox は他のブラウザと同様に動作します。</li>
+</ul>
+<h3 id="CSS">CSS</h3>
+<ul>
+ <li><a href="/ja/docs/CSS/text-size-adjust" title="text-size-adjust"><code>text-size-adjust</code></a> プロパティがサポートされました。</li>
+ <li><a href="/ja/docs/CSS/CSS3" title="CSS3">CSS3</a> <a href="/ja/docs/CSS/CSS3#Conditional_Rules" title="CSS3 Conditional Rules">Conditional Rules</a> のサポートが向上しました: <a href="/ja/docs/CSS/@media" title="@media">@media</a>、<a href="/ja/docs/CSS/@document" title="@document">@-moz-document</a> に入れ子構文を追加できます (<a href="/ja/docs/CSS/Syntax" title="Syntax">CSS Syntax</a> および <a href="/ja/docs/CSS/At-rule" title="At-rule">CSS at-rules</a> をご覧ください)。</li>
+</ul>
+<h3 id="SVG">SVG</h3>
+<ul>
+ <li>{{ domxref("SVGSVGElement") }} DOM インタフェースが <code>getElementById</code> メソッドをサポートしました。</li>
+</ul>
+<h3 id="WebSocket">WebSocket</h3>
+<ul>
+ <li><a href="/ja/docs/WebSockets" title="WebSockets">WebSocket</a> API がバイナリ形式のメッセージをサポートしました ({{ bug("676439") }} を参照)。</li>
+ <li>プロトコルおよび API が最新のドラフト仕様に更新され、また API から接頭辞が除去されました ({{ bug("666349") }} および {{ bug("695635") }} を参照)。</li>
+ <li>以前 Firefox では WebSockets で送受信するメッセージのサイズが 16 MB に制限されていましたが、この制限を 2 GB に引き上げました (メモリ容量の制限で大きなデータを扱えない場合もありますが、Firefox は 2 GB までサポートします)。</li>
+</ul>
+<h3 id="IndexedDB">IndexedDB</h3>
+<ul>
+ <li><a href="/ja/docs/IndexedDB/IDBFactory#cmp%28%29" title="https://developer.mozilla.org/ja/docs/IndexedDB/IDBFactory#cmp%28%29">IDBFactory.cmp()</a> がサポートされました。</li>
+ <li><a href="/ja/docs/IndexedDB/Basic_Concepts_Behind_IndexedDB#section_6" title="https://developer.mozilla.org/ja/docs/IndexedDB/Basic_Concepts_Behind_IndexedDB#section_6">IndexedDB のキー</a> のタイプは、以下のいずれかにすることができます: (String や Integer だけでなく) Date、Arrays、Float。</li>
+</ul>
+<h3 id="Network">Network</h3>
+<ul>
+ <li>Firefox 8 で変更した、{{ rfc("2231") }} および {{ rfc("5987") }} でダブルクォートを区切り文字として利用できなくした点は、Outlook Web Access など一部のサイトで異常が発生するために取り消しました。</li>
+ <li>HTTP ヘッダのユーザエージェント文字列に、<a href="/ja/docs/Gecko_user_agent_string_reference#Mobile_and_Tablet_indicators" title="Gecko_user_agent_string_reference#Mobile_and_Tablet_indicators">携帯電話やタブレット上の Firefox がアクセスしているかをサーバが知ることができる</a>識別子を含むようになりました。</li>
+</ul>
+<h3 id="開発ツール">開発ツール</h3>
+<ul>
+ <li>システムが <a href="/ja/docs/WebGL" title="WebGL">WebGL</a> をサポートしている場合は、<a href="/ja/docs/Tools/Page_Inspector" title="Page Inspector">ページ調査ツール</a> で <a href="/ja/docs/Tools/Page_Inspector/3D_view" title="3D view">3D ビュー</a> を提供します。</li>
+ <li>新しいツールである <a href="/ja/docs/Tools/Style_Editor" title="Style Editor">スタイルエディタ</a> は、リアルタイムな CSS スタイルシートの変更や作成を自由自在に行う機能を提供します。</li>
+ <li><a href="/ja/docs/View_source" title="https://developer.mozilla.org/ja/docs/View_source">ソース表示機能</a> が従来の HTML パーサーに代わり新しい HTML5 パーサーを使用するようになりました。</li>
+</ul>
+<h2 id="Mozilla_開発者とアドオン開発者向けの変更点">Mozilla 開発者とアドオン開発者向けの変更点</h2>
+<h3 id="JavaScript_code_modules">JavaScript code modules</h3>
+<h4 id="NetUtil.jsm">NetUtil.jsm</h4>
+<ul>
+ <li><a href="/ja/docs/JavaScript_code_modules/NetUtil.jsm#readInputStreamToString()" title="JavaScript_code_modules/NetUtil.jsm#readInputStreamToString()"><code>readInputStreamToString()</code></a> へ新たに、入力ストリームを読み取る際のキャラクタセットの解釈を設定するための、省略可能なパラメータが追加されました。</li>
+</ul>
+<h4 id="新しい_JavaScript_code_modules">新しい JavaScript code modules</h4>
+<dl>
+ <dt>
+ <a href="/ja/docs/JavaScript_code_modules/source-editor.jsm" title="source-editor.jsm"><code>source-editor.jsm</code></a></dt>
+ <dd>
+ アドオンで利用可能な、便利で使いやすいソースコードエディタを提供します。これは <a href="/ja/docs/Tools/Scratchpad" title="Scratchpad">スクラッチパッド</a> など Firefox に統合している開発ツールで使用しているものと同じです。</dd>
+</dl>
+<h3 id="インタフェースの変更">インタフェースの変更</h3>
+<ul>
+ <li>{{ interface("mozIAsyncHistory") }} インタフェースに、ある URI が訪問済みであるかを確認するためのメソッド {{ ifmethod("mozIAsyncHistory","isURIVisited") }} が追加されました。</li>
+ <li>{{ ifmethod("mozIAsyncHistory","isURIVisited") }} でコールバックハンドリング機能を提供するため、新たに {{ interface("mozIVisitStatusCallback") }} インタフェースを追加しました。</li>
+ <li>{{ interface("nsIMacDockSupport") }} インタフェースが新属性 <code>badgeText</code> を用いて、Dock のアプリケーションアイコンへのテキスト追加をサポートしました。</li>
+ <li>{{ interface("nsINavHistoryResultObserver") }} インタフェースでは、非推奨になった <code>containerOpened()</code> および <code>containerClosed()</code> メソッドに代わり {{ ifmethod("nsINavHistoryResultObserver", "containerStateChanged") }} を実装することが必要です。</li>
+</ul>
+<h4 id="削除されたインタフェース">削除されたインタフェース</h4>
+<p>以下のインタフェースは、不要になったため削除されました:</p>
+<ul>
+ <li>{{ interface("nsICharsetResolver") }}</li>
+ <li>{{ interface("nsIDOMNSElement") }}、詳しくは <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=707576" title="https://bugzilla.mozilla.org/show_bug.cgi?id=707576">bug707576</a> をご覧いただき、代わりに {{ interface("nsIDOMElement") }} を使用してください。</li>
+</ul>
+<h3 id="テーマに関する変更">テーマに関する変更</h3>
+<ul>
+ <li><code>omni.jar</code> ファイルは名前を <a href="/ja/docs/Mozilla/About_omni.ja_(formerly_omni.jar)" title="Mozilla/About_omni.ja_%28formerly_omni.jar%29"><code>omni.ja</code></a> に変更しました。</li>
+</ul>
+<h3 id="設定項目の変更">設定項目の変更</h3>
+<dl>
+ <dt>
+ {{ Pref("ui.tooltipDelay") }}</dt>
+ <dd>
+ マウスカーソルを載せてからツールチップが表示されるまでの遅延をミリ秒単位で指定します。</dd>
+</dl>
+<h3 id="ビルドシステムの変更">ビルドシステムの変更</h3>
+<ul>
+ <li><code>--enable-tracejit</code> ビルドオプションを削除しました。</li>
+</ul>
+<h3 id="その他の変更">その他の変更</h3>
+<ul>
+ <li>長く更新されていないアドオンは、デフォルトで互換性があると判断しないようになりました。現時点では、<code>maxVersion</code> が 4.0 を示しているアドオンです。</li>
+</ul>
+<h2 id="See_also" name="See_also">参考</h2>
+<div>{{Firefox_for_developers('10')}}</div>
diff --git a/files/ja/mozilla/firefox/releases/12/index.html b/files/ja/mozilla/firefox/releases/12/index.html
new file mode 100644
index 0000000000..24e3ae332c
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/12/index.html
@@ -0,0 +1,168 @@
+---
+title: Firefox 12 for developers
+slug: Mozilla/Firefox/Releases/12
+tags:
+ - Firefox
+ - Firefox 12
+ - Gecko 12
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/12
+---
+<p>Firefox 12 は 米国時間 2012 年 4 月 24 日にリリースされました。この記事は開発者に影響がある Firefox 12 での変更点をまとめています。</p>
+
+<h2 id="Web_開発者向けの変更点一覧">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li><code>title</code> の値に含めた改行文字が反映され、複数行のツールチップを表示できるようになりました。</li>
+ <li>JavaScript が無効である場合、<a class="external" href="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html" title="http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html">仕様</a> に従ったフォールバックコンテンツではなく {{ HTMLElement("canvas") }} 要素が表示されていましたが、フォールバックコンテンツが表示されるようになりました。</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>{{ cssxref("text-align-last") }} プロパティに対応しました。(接頭辞付き)</li>
+</ul>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><a href="/ja/docs/JavaScript/Sharp_variables_in_JavaScript" title="JavaScript/Sharp_variables_in_JavaScript">シャープ変数</a> (Netscape 由来の非標準拡張仕様) への対応が打ち切られました。</li>
+</ul>
+
+<h3 id="DOM">DOM</h3>
+
+<ul>
+ <li><a href="/ja/docs/DOM/DOMParser" title="DOM/DOMParser">DOMParser</a> が HTML ドキュメントのソース解析に対応しました。</li>
+ <li>{{ domxref("XMLHttpRequest") }} で <code>timeout</code> プロパティと {{ domxref("XMLHttpRequestEventTarget") }} インタフェース 上の <code>ontimeout</code> イベントハンドラである "timeout" イベントを用いた、タイムアウトがサポートされました。</li>
+ <li>{{ domxref("XMLHttpRequest") }} が<a href="/ja/docs/data_URIs" title="data URIs"><code> data:</code> URI</a> から読み込めるようになりました。</li>
+ <li>{{ domxref("XMLHttpRequest") }} で巨大なデータをダウンロードしているとき、<code>responseType</code> に "moz-blob" を設定していると、 これまでに受信したデータのすべてを含む {{ domxref("Blob") }} であるレスポンスを参照できる progress イベントハンドラが定期的に呼び出されるようになりました。これによって、progress ハンドラでデータのすべてが到着するまで待つことなしにデータを処理し始められます。</li>
+ <li>Gecko が Android 上で <a href="/ja/docs/DOM/Touch_events" title="DOM/Touch_events">マルチタッチ</a> をサポートしました。今までは一度に一つのタッチ操作しか認識しかできませんでした。</li>
+ <li>エディタ (フォーム) 上で IME を使った文字入力を行っている場合、従来は確定後に <code>input</code> イベントが発生していましたが、Firefox 12 では、IME で編集中の文字列が変更されたことを示す <code>compositionupdate</code> イベントの直後にも <code>input</code> イベントが発生するようになりました。これにより、<code>input</code> イベントハンドラを使って、日本語入力中にも未確定文字列を含めたフォームの入力内容を取得することが可能となりました。</li>
+ <li>DOM 4 仕様で定義されている {{ domxref("DOMError") }} が実装されました。</li>
+ <li>{{ domxref("Document.createNodeIterator()") }} メソッドが DOM 4 仕様に適合するように更新されました。これにより、<code>whatToShow</code> および<code> filter 引数がオプションになり、</code><code>非標準の 4 番目の引数である entityReferenceExpansion</code> が削除されます。</li>
+ <li>{{ domxref("Blob") }} インタフェースの <code>slice() メソッドは符号付き 64 ビット整数の範囲外の </code><code>start</code> の値と <code>end</code> の値を正しく受け取れない<code>バグによる影響を受けていましたが、この問題は修正されました。</code></li>
+ <li>{{ domxref("element.getBoundingClientRect()") }} メソッドが要素の矩形の境界を算出するときに <a href="/ja/docs/CSS/Using_CSS_transforms" title="CSS/Using_CSS_transforms">CSS transforms</a> の効果を考慮するようになりました。</li>
+</ul>
+
+<h4 id="新しい_WebAPI">新しい WebAPI</h4>
+
+<ul>
+ <li>Network Information API: {{ domxref("window.navigator.connection") }} の実験的サポートが追加されました。(接頭辞付き)</li>
+ <li>WebTelephony API: {{ domxref("window.navigator.mozTelephony") }} が実装されました。デバイス上での電話の発信、応答、管理をするためのサポートを提供します。</li>
+ <li>WebSMS API: モバイルデバイスで SMS テキストメッセージを送信できる {{ domxref("window.navigator.mozSms") }} が利用可能になりました。</li>
+</ul>
+
+<h3 id="SVG">SVG</h3>
+
+<ul>
+ <li>{{ domxref("SVGTests") }} DOM API に対応しました。({{ bug("607854") }})</li>
+ <li>{{ domxref("SVGStringList") }} DOM インタフェースが非標準の <code>length</code> プロパティに対応しました。({{ bug("711958") }})</li>
+</ul>
+
+<h3 id="MathML">MathML</h3>
+
+<ul>
+ <li>MathML 式の方向性を制御する <code>dir</code> 属性に対応しました。{{ MathMLElement("math") }}、{{ MathMLElement("mrow") }}、{{ MathMLElement("mstyle") }} の各要素と、<a href="/Special:Tags?tag=MathML:Token+Elements" title="Special:Tags?tag=MathML:Token+Elements">MathML トークン要素</a> で使用できます。これは特に一部の <a class="external" href="http://www.w3.org/TR/arabic-math/">アラビア語数学的表記</a> で必要とされるものです。</li>
+ <li>MathML3 で定義された配置属性 <code>align</code> に対応しました。{{ MathMLElement("munder") }}、{{ MathMLElement("mover") }}、{{ MathMLElement("munderover") }} の各要素で使用できます。</li>
+</ul>
+
+<h3 id="ネットワーク">ネットワーク</h3>
+
+<ul>
+ <li>以前は、WebSocket チャンネルが、予期せぬエラーのためにクローズしたとき、あるいは、仕様がカバーしていないエラー状況のためにクローズした場合、Gecko は <code>CLOSE_NORMAL</code> クローズコードを報告していましたが、代わりに <code>CLOSE_GOING_AWAY コードを報告するようになりました。</code></li>
+</ul>
+
+<h3 id="開発者ツール">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Web_Console" title="Tools/Web_Console">Web Console</a> がコンソールが開いていない状態の場合にエラーメッセージと {{ domxref("console.log()") }} を用いて追加したログエントリをキャッシュし、コンソールが開いたときにそれらを表示するようになりました。</li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/3D_view" title="Tools/Page_Inspector/3D_view">3D view</a> で "r" キーを押すことにより、ズームレベル、移動、回転をリセットできるようになりました。</li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/3D_view" title="Tools/Page_Inspector/3D_view">3D view</a> でノードを選択した後に "x" キーを押すことにより、そのノードを隠すことができるようになりました。</li>
+ <li><a href="/ja/docs/Tools/Using_the_Source_Editor" title="Tools/Using_the_Source_Editor">ソースエディタ</a> にいくつかの新しい編集機能とキーボードショートカットが追加されました。詳細は、<a href="/ja/docs/Tools/Using_the_Source_Editor" title="Tools/Using_the_Source_Editor">ソースエディタの利用</a> を参照してください。</li>
+</ul>
+
+<p>Mozilla は人気のアドオン <a class="external" href="http://getfirebug.com/" title="Firebug Firefox add-on">Firebug</a> に依存するだけではなく、自身の Web 開発者ツールの統合作業を進めています。これらのツールについてのさらなる情報および Firefox での Web 開発を支援する外部リソースの一覧は、<a href="/ja/docs/Tools" title="Tools">Web developer tools</a> にあります。</p>
+
+<h3 id="その他の変更点">その他の変更点</h3>
+
+<ul>
+ <li>GEOSTD8 文字セットは、これまでも完全にはサポートされていませんでしたが、まったくサポートされなくなりました。</li>
+</ul>
+
+<h2 id="Mozilla_開発者とアドオン開発者向けの変更点">Mozilla 開発者とアドオン開発者向けの変更点</h2>
+
+<h3 id="JavaScript_code_modules">JavaScript code modules</h3>
+
+<h4 id="source-editor.jsm">source-editor.jsm</h4>
+
+<ul>
+ <li>The <a href="/ja/docs/JavaScript_code_modules/source-editor.jsm#resetUndo%28%29" title="JavaScript_code_modules/source-editor.jsm#resetUndo%28%29"><code>resetUndo()</code></a> method was added; this lets you clear the undo stack.</li>
+ <li>The source editor now offers methods for providing search capability: <a href="/ja/docs/JavaScript_code_modules/source-editor.jsm#find()" title="JavaScript_code_modules/source-editor.jsm#find()"><code>find()</code></a>, <a href="/ja/docs/JavaScript_code_modules/source-editor.jsm#findNext()" title="JavaScript_code_modules/source-editor.jsm#findNext()"><code>findNext()</code></a>, and <a href="/ja/docs/JavaScript_code_modules/source-editor.jsm#findPrevious()" title="JavaScript_code_modules/source-editor.jsm#findPrevious()"><code>findPrevious()</code></a>.</li>
+</ul>
+
+<h3 id="XUL">XUL</h3>
+
+<ul>
+ <li>{{ XULAttr("chromemargin") }} 属性の値の定義が若干変更されました。これにより、デフォルトのウィンドウ枠幅が異なる各プラットフォームで、クロスプラットフォームな XUL コードの見た目を簡単に揃えられるようになりました。</li>
+</ul>
+
+<h3 id="XPCOM">XPCOM</h3>
+
+<ul>
+ <li><a href="/ja/docs/nsISupports_proxies" title="nsISupports_proxies"><code>nsISupports</code> プロキシ</a> が削除されました。代わりに <a href="/ja/docs/XPCOM/Making_cross-thread_calls_using_runnables" title="XPCOM/Making_cross-thread_calls_using_runnables">runnable を使ってください</a>。</li>
+</ul>
+
+<ul>
+ <li>Firefox 11 changed the behavior of <a href="/ja/docs/Components.utils.getWeakReference" title="Components.utils.getWeakReference"><code>Components.utils.getWeakReference()</code></a> to throw an exception when the object reference is null; the previous behavior of silently failing has been restored.</li>
+</ul>
+
+<h3 id="XPConnect">XPConnect</h3>
+
+<ul>
+ <li>The <a href="/ja/docs/PRUint64" title="PRUint64"><code>PRUint64</code></a> data type was incorrectly essentially identical to <a href="/ja/docs/PRInt64" title="PRInt64"><code>PRint64</code></a> when used with XPConnect. This has been fixed.</li>
+</ul>
+
+<h3 id="インタフェースの変更">インタフェースの変更</h3>
+
+<ul>
+ <li><code>nsIScreen_MOZILLA_2_0_BRANCH</code> インタフェースが {{ interface("nsIScreen") }} へ統合されました。このインタフェースで定義されていた API (画面の最低輝度の調節) はこれまで文書化されていませんでしたが、これを機に文書化されました。</li>
+ <li>The {{ interface("nsIScriptError2") }} interface has been merged into {{ interface("nsIScriptError") }}.</li>
+ <li>{{ ifmethod("nsIDownloadManager", "addDownload") }} is now handled asynchronously rather than synchronously.</li>
+ <li>The {{ ifmethod("imgIContainerObserver", "frameChanged") }} method now receives as its first parameter an {{ interface("imgIRequest") }} object identifying the corresponding request.</li>
+ <li>The {{ ifmethod("nsIDOMWindowUtils", "sendTouchEvent") }} method has been added to allow synthesizing touch events.</li>
+ <li>You can now scroll the specified content to the vertical center of the view by specifying <code>SCROLL_CENTER_VERTICALLY</code> as the scroll constant when calling {{ ifmethod("nsISelectionController", "scrollSelectionIntoView") }}.</li>
+ <li>The new {{ ifattribute("nsIMemoryMultiReporter", "explicitNonHeap") }} attribute has been added; this is a more efficient way to obtain the sum of all of the multi-reporter's measurements that have a path that starts with "explicit" <strong>and</strong> are of the kind <code>KIND_NONHEAP</code>.</li>
+ <li>The {{ ifattribute("nsIDOMWindowUtils", "paintingSuppressed") }} attribute has been added; this boolean value indicates whether or not painting is currently suppressed on the window. This is used on mobile to prevent bouncy rendering that occurs when attempts to draw the page begin before enough content is available to do so smoothly.</li>
+ <li>The <code>nsIDocCharset</code> and <code>nsIDocumentCharsetInfo</code> interfaces have been merged into {{ interface("nsIDocShell") }}. As part of this work, the old <code>forcedDetector</code> attribute has been removed; it never did anything.</li>
+</ul>
+
+<h3 id="SpiderMonkey">SpiderMonkey</h3>
+
+<ul>
+ <li><code>JSThread</code> has been eliminated.</li>
+ <li><code>JSThreadData</code> has been merged into <code>JSRuntime</code>.</li>
+</ul>
+
+<h3 id="Building">Building</h3>
+
+<ul>
+ <li>When building on Windows, you must have the Windows 7 SDK installed.</li>
+</ul>
+
+<h3 id="Other_changes">Other changes</h3>
+
+<ul>
+ <li>The editor component (known as <a href="/ja/docs/Midas" title="Midas">Midas</a>) now <a href="/ja/docs/Using_the_Editor_from_XUL#Editor_event_handling" title="Using_the_Editor_from_XUL#Editor_event_handling">only accepts events</a> from privileged code.</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連記事</h2>
+
+<ul>
+ <li><a class="link-https" href="https://dev.mozilla.jp/2012/03/firefox-12-site-compatibility/">Firefox 12 のサイト互換性に関わる修正のまとめ</a></li>
+ <li><a class="link-https" href="https://dev.mozilla.jp/2012/03/firefox-12-addon-compatibility/">Firefox 12 のアドオン互換性に関わる修正のまとめ</a></li>
+ <li><a class="external" href="http://hacks.mozilla.org/2012/02/aurora-12-is-out-improvements-and-updated-developer-tools/">Aurora 12 is out – improvements and updated Developer Tools</a></li>
+</ul>
+
+<div>{{Firefox_for_developers('11')}}</div>
diff --git a/files/ja/mozilla/firefox/releases/13/index.html b/files/ja/mozilla/firefox/releases/13/index.html
new file mode 100644
index 0000000000..7b24606fc7
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/13/index.html
@@ -0,0 +1,136 @@
+---
+title: Firefox 13 for developers
+slug: Mozilla/Firefox/Releases/13
+translation_of: Mozilla/Firefox/Releases/13
+---
+<p>Firefox 13 は 米国時間 2012 年 6 月 5 日にリリースされました。この記事は開発者に影響がある Firefox 13 での変更点をまとめています。</p>
+
+<h2 id="Web_開発者向けの変更点一覧">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li>テーブルの {{ htmlattrxref("cellspacing", "table") }} 属性は、Quirks モード以外でも Quirks モードと同様に解析するようになりました。これは値をパーセント値で指定した場合に、仕様書で実際はパーセント値が認められていないため代わりにピクセル数として扱うものです。</li>
+ <li>{{ htmlelement("wbr") }} 要素の双方向テキストに関する動作を修正しました。Unicode の <code>U+200B</code><code> ZERO-WIDTH SPACE</code> 文字と同様の動作になり、従って親要素の双方向性に影響を与えません。</li>
+ <li>{{ Cssxref(":invalid") }} 疑似クラスを {{ htmlelement("form") }} 要素へ適用できるようになりました。</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>{{ cssxref("&lt;angle&gt;") }} の単位 <code>turn</code> をサポートしました (<code>rotate()</code> などの CSS 関数で用います)。</li>
+ <li>{{ cssxref("background-position") }} で値を 3 - 4 個置く構文をサポートしました。"<code>right 10px bottom 20px</code>" といった表記で、背景画像を任意の角からずらすことができます。{{ bug("522607") }} をご覧ください。</li>
+ <li>{{ cssxref("background-repeat") }} で値を 2 個置く構文をサポートしました。</li>
+ <li>{{ cssxref("border-radius","-moz-border-radius*") }} および {{ cssxref("box-shadow","-moz-box-shadow") }} のサポートを削除しました。代わりに著作者は接頭辞のない <code>border-radius</code> または <code>box-shadow</code> を使用してください。{{ bug("693510") }} をご覧ください。</li>
+ <li>{{ cssxref("column-fill") }} プロパティが実装されました。(接頭辞付き)</li>
+</ul>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>ECMAScript 6 の <a href="/en/JavaScript/Reference/Statements/for...of" title="for...of"><code>for..of</code></a> 構造をサポートしました。</li>
+ <li>ECMAScript 6 の <a href="/en/JavaScript/Reference/Global_Objects/Map" title="en/JavaScript/Reference/Global_Objects/Map"><code>Map</code></a> と <a href="/en/JavaScript/Reference/Global_Objects/Set" title="en/JavaScript/Reference/Global_Objects/Set"><code>Set</code></a> オブジェクトの実験的サポートを実装しました。</li>
+</ul>
+
+<h3 id="DOM">DOM</h3>
+
+<ul>
+ <li>DOM4 の規定により、{{ domxref("Node.cloneNode()") }} メソッドの引数 <code>deep</code> は省略可能になりました。</li>
+ <li>{{ domxref("window.setTimeout()") }} および {{ domxref("window.setInterval()") }} メソッドは、付加的な引数である "遅延" をコールバックルーチンに渡さないようになりました。</li>
+ <li>{{ domxref("Blob","Blob.mozSlice()") }} メソッドの接頭辞を削除しました。</li>
+ <li>{{ domxref("Blob") }} コンストラクタをサポートしました。</li>
+ <li><a href="/ja/DOM/Storage#globalStorage" title="ja/DOM/Storage#globalStorage"><code>globalStorage</code></a> のサポートを削除しました。</li>
+ <li>バックグラウンドの処理の状態や結果を報告するために用いる {{ domxref("DOMRequest") }} インタフェースを新たに追加しました。</li>
+ <li>{{ domxref("HTMLOptionElement", "HTMLOptionElement.index()") }} メソッドは、{{ HTMLElement("option") }} が {{ HTMLElement("datalist") }} HTML 要素の内部にあるときに誤った値 <code>-1</code> ではなく <code>0</code> を返すようになりました。</li>
+ <li>{{ domxref("DOMException") }} のうち DOM Level 4 で定義された部分を実装しました。</li>
+ <li>最新の File API 仕様での {{ domxref("DOMError") }} の定義に賛同して、{{ domxref("FileError") }} インタフェースを削除しました。</li>
+ <li>{{ domxref("Range") }} オブジェクトは <code>RangeException</code> 例外を投げなくなりました。代わりに DOM4 で定義された {{ domxref("DOMException") }} を用います。</li>
+ <li>{{ domxref("element.getAttributeNS()") }} は存在しない属性について空の文字列に代わり常に <code>null</code> を返すようになりました。以前は、空の文字列が返る場合がありました。存在しない属性には空の文字列ではなく null を返すべきであるという現在の DOM4 仕様に従います。</li>
+ <li>{{ domxref("HTMLCanvasElement") }} インタフェースに非標準の <code>mozFetchAsStream()</code> メソッドを追加しました。これは当該要素の画像データを指定した形式で含む入力ストリームを提供します。</li>
+</ul>
+
+<h3 id="UA_文字列">UA 文字列</h3>
+
+<ul>
+ <li>Android 版 Firefox は、フォームファクタを示すため <a href="/en/Gecko_user_agent_string_reference#Mobile_and_Tablet_indicators" title="en/Gecko_user_agent_string_reference#Mobile_and_Tablet_indicators">UserAgent 文字列に Tablet または Mobile のトークンを含むようになり</a>、Fennec トークンは持たなくなりました。また "Gecko/" に続く数値は、フリーズした日付から Gecko のバージョン番号に変わります。</li>
+ <li>UA 文字列では、Gecko のパッチ番号やリリース状況をバージョン番号で公開しないようになりました。バージョン番号は常に "X.Y" という形式になり、X はメジャーリリース番号、Y はマイナー番号を表します。例えば、"13.0" や "14.1" となります。"14.0.1b1" のようにはなりません。</li>
+</ul>
+
+<h3 id="SVG">SVG</h3>
+
+<ul>
+ <li>{{ domxref("SVGStringList") }} DOM インタフェースが <a href="/ja/JavaScript/Reference/Global_Objects/Array" title="Array"><code>Array</code></a> と同様に添字を利用可能になりました。{{ bug("722071") }} をご覧ください。</li>
+</ul>
+
+<h3 id="WebGL">WebGL</h3>
+
+<ul>
+ <li><a href="/ja/WebGL/Using_Extensions#EXT_texture_filter_anisotropic" title="ja/WebGL/Using_Extensions#EXT_texture_filter_anisotropic"><code>EXT_texture_filter_anisotropic</code></a> 拡張のサポートを追加しました。異方性テクスチャフィルタリングは、テクスチャが貼り付けられた斜めのプリミティブを表示する際のミップマップテクスチャのアクセスの品質を向上させます。</li>
+</ul>
+
+<h3 id="MathML">MathML</h3>
+
+<ul>
+ <li>{{ MathMLElement("mtable") }} 要素で <code>width</code> 属性をサポートしました ({{ bug("722880") }})。</li>
+ <li>数学的なテキストで <a class="external" href="http://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/" rel="external" title="http://cdn.mathjax.org/mathjax/latest/fonts/HTML-CSS/TeX/otf/">MathJax fonts</a> をデフォルトフォントとして使用するようになりました。詳しくは <a href="/en/Mozilla_MathML_Project/Fonts" title="Fonts for Mozilla's MathML engine">Fonts for Mozilla's MathML engine</a> をご覧ください。</li>
+</ul>
+
+<h3 id="Developer_tools">Developer tools</h3>
+
+<h4 id="3D_ビューの改良">3D ビューの改良</h4>
+
+<ul>
+ <li>"f" キーを押すと、選択中のノードが見えるように位置を調整することができます。</li>
+</ul>
+
+<h4 id="スタイルパネルの改良">スタイルパネルの改良</h4>
+
+<ul>
+ <li><a href="/ja/Tools/Page_Inspector/Style_panel" title="Style panel">スタイルパネル</a> でルールの見出しをクリックすると、対応する CSS を <a href="/ja/Tools/Style_Editor" title="Style Editor">スタイルエディタ</a> で開くようになりました。</li>
+ <li><a href="/ja/Tools/Page_Inspector/Style_panel" title="Style panel">スタイルパネル</a> でルールを右クリックすると、そのルールをクリップボードへコピーできるようになりました。</li>
+ <li>未知のプロパティ名や誤った値を入力すると、プロパティの隣に警告アイコンを表示します。</li>
+</ul>
+
+<h4 id="スクラッチパッドの改良">スクラッチパッドの改良</h4>
+
+<ul>
+ <li><a href="/ja/Tools/Scratchpad" title="Scratchpad">スクラッチパッド</a> のヘルプメニューに、MDN のスクラッチパッドに関する文書を開くための項目を追加しました。</li>
+</ul>
+
+<h2 id="Mozilla_開発者とアドオン開発者向けの変更点">Mozilla 開発者とアドオン開発者向けの変更点</h2>
+
+<h3 id="互換性情報">互換性情報</h3>
+
+<p>Firefox 13 より、Windows 版の Firefox は Windows XP Service Pack 2 以降を要求します。従って、 Windows 2000 や古いバージョンの Windows XP では動作しません。</p>
+
+<h3 id="JavaScript_code_modules">JavaScript code modules</h3>
+
+<h4 id="source-editor.jsm">source-editor.jsm</h4>
+
+<ul>
+ <li>ソースエディタの API に、ダーティフラグのサポートを追加しました。</li>
+ <li>ソースエディタは、Orion を利用せずに {{ HTMLElement("textarea") }} へフォールバックする動作をサポートしなくなりました。</li>
+ <li>エディタが focus と blue のイベントを公開するようになりました。</li>
+ <li><a href="/en/JavaScript_code_modules/source-editor.jsm#getIndentationString%28%29" title="en/JavaScript_code_modules/source-editor.jsm#getIndentationString%28%29"><code>getIndentationString()</code></a> メソッドを追加しました。これは、エディタでテキストのインデントに使用する文字を返します。</li>
+ <li>ソースエディタで、ブレークポイントのリストの管理とブレークポイントのオン・オフを切り替えるユーザインタフェースの表示をサポートしました。ただし実際は、ブレークポイントを実装していません。そのためのデバッガのコードを記述するのはあなた次第です。</li>
+ <li><code>highlightCurrentLine</code> 設定オプションを用いて、カレント行をハイライトする機能をサポートしました。</li>
+</ul>
+
+<h3 id="ARIA">ARIA</h3>
+
+<ul>
+ <li>CSS プロパティ {{ cssxref("margin-left") }}、{{ cssxref("margin-right") }}、{{ cssxref("margin-top") }}、および {{ cssxref("margin-bottom") }} はすべて、同じ名前で ARIA オブジェクトに反映されます。詳しくは <a href="/en/Accessibility/AT-APIs/Gecko/Attrs" title="Gecko Object Attributes">Gecko object attributes</a> をご覧ください。</li>
+</ul>
+
+<h3 id="インタフェースの変更">インタフェースの変更</h3>
+
+<ul>
+ <li>{{ interface("nsIScreen") }} インタフェースが、新たに引数 <code>rotation</code> を通して回転の制御をサポートしました。</li>
+ <li>{{ interface("nsIPrefBranch2") }} インタフェースを {{ interface("nsIPrefBranch") }} に統合しました ({{ bug("718255") }})。</li>
+ <li>以前のバージョンの Gecko で削除されたエイリアス <code>MozOpacity</code>、<code>MozOutline</code>、<code>MozOutlineStyle</code>、<code>MozOutlineWidth</code>、<code>MozOutlineOffset</code>、および <code>MozOutlineColor</code> を、{{ interface("nsIDOMCSS2Properties") }} から削除しました。これは、エイリアスを削除した当初に行うべきでした。</li>
+ <li>{{ interface("nsINavHistoryQueryOptions") }} の属性 <code>excludeItemIfParentHasAnnotation</code> を、対応するクエリ操作と共に削除しました。これはライブブックマークのサポート用に存在しましたが、もはや存在しません。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連記事</h2>
+
+<div>{{Firefox_for_developers('12')}}</div>
diff --git a/files/ja/mozilla/firefox/releases/14/index.html b/files/ja/mozilla/firefox/releases/14/index.html
new file mode 100644
index 0000000000..5df84b86a4
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/14/index.html
@@ -0,0 +1,90 @@
+---
+title: Firefox 14 for developers
+slug: Mozilla/Firefox/Releases/14
+tags:
+ - Firefox
+ - Firefox 14
+ - Gecko
+ - Gecko 14
+translation_of: Mozilla/Firefox/Releases/14
+---
+<p>{{ draft() }}</p>
+
+<p>Firefox 14 は 米国時間 2012 年 7 月 17 日にリリースされました。この記事では、Web 開発者が知っておくべくことについてだけでなく、アドオン開発者および Firefox と Gecko 開発者にも役立つ主な変更点を一覧にしています。</p>
+
+<h2 id="Web_開発者向けの変更点一覧">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li>{{ HTMLElement("progress") }} 要素がフォーム関連要素として誤って分類されることはなくなりました。ゆえに、<code>form</code> 属性は無くなります。</li>
+ <li>Mac での HTML コンテンツのデフォルトアクセスキーが Control + Option キーに変更されました。これは Mac での Webkit ベースブラウザと同じです。</li>
+</ul>
+
+<h3 id="DOM">DOM</h3>
+
+<ul>
+ <li><a href="/ja/DOM/DOM_event_reference/input" title="ja/DOM/DOM_event_reference/input">input</a> イベントが <a href="/en/DOM/Element.contentEditable" title="en/DOM/Element.contentEditable">contenteditable</a> エディタをホストしている要素および <a href="/en/DOM/document.designMode" title="document.designMode">designMode</a> エディタのルート要素上での編集でも発生するようになりました。</li>
+ <li>{{ domxref("DOMException", "DOMException.code") }} は最新の DOM Level 4 仕様に従って非推奨になりました。</li>
+ <li>{{ domxref("Range.insertNode()") }} が 折り畳まれた (collapsed) 範囲上で用いられたときに正しく動作するようになりました。</li>
+ <li>{{ domxref("BlobBuilder", "MozBlobBuilder") }} インタフェースが {{ domxref("Blob") }} コンストラクタの利用を促すために非推奨になりました。<code>MozBlobBuilder</code> を利用した場合、Web コンソールに警告が表示されます。</li>
+ <li>{{ domxref("DOM_Mutation_Observers","MutationObserver") }} のサポートが導入されました。これは、パフォーマンスに関する多くの問題がある DOM3  の Mutation Events の置き換えとして設計されました。</li>
+ <li>{{ domxref("HTMLImageElement") }} インタフェースの <code>x</code> <code><code>プロパティおよび </code>y</code> プロパティは Gecko 7.0 で削除されましたが、互換性の理由でこのリリースから復活しました。</li>
+ <li>{{ domxref("Document") }} のメソッドである <code>execCommandShowHelp()<code><code> と<code><code> </code></code></code></code></code><code>queryCommandText() は、今まで何もしませんでしたが、削除されました。</code></li>
+ <li><code>GeoPositionAddress</code> インタフェースは、<a href="/Ja/Using_geolocation" title="Ja/Using_geolocation">Geolocation</a> API で廃止された仕様の一部であり、削除されました。</li>
+ <li>{{ domxref("Storage", "localStorage/sessionStorage") }} がプロパティアクセスを通した宣言されていないキーに対して <code>null</code> ではなく<code> undefined</code> を正しく返すようになりました。</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>{{ cssxref("text-transform") }} と {{ cssxref("font-variant") }} CSS プロパティが <code>i</code> → <code>İ</code> および <code>ı</code> → <code>I </code>という <a class="external" href="http://en.wikipedia.org/wiki/Turkic_languages" title="http://en.wikipedia.org/wiki/Turkic_languages">テュルク諸語</a> (<a class="external" href="http://ja.wikipedia.org/wiki/%E3%83%86%E3%83%A5%E3%83%AB%E3%82%AF%E8%AB%B8%E8%AA%9E" title="http://ja.wikipedia.org/wiki/%E3%83%86%E3%83%A5%E3%83%AB%E3%82%AF%E8%AB%B8%E8%AA%9E">日本語版</a>) 固有の文字対応の組を正しく扱うように修正されました。</li>
+ <li>オランダ語の IJ という連字が <code>text-transform: capitalization<code> </code></code>で正しく扱われるようになりました。類似のものとして、ギリシャ文字の <code>Σ</code> には、2つの小文字 <code>σ</code> と <code>ς</code> がありますが、これらが<code> text-transform: lowercase</code> で正しく扱われるようになりました。</li>
+ <li>ドラフト標準から削除されたため、<code>skew()</code> 関数のサポートが {{ cssxref("transform") }} プロパティから削除されました。</li>
+</ul>
+
+<h3 id="MathML">MathML</h3>
+
+<ul>
+ <li>{{ MathMLElement("maction") }} 要素での <span class="st">actiontype 属性の値 </span><code>statusline</code> の構文が MathML 仕様に合うように変更されました。</li>
+</ul>
+
+<h3 id="HTTP">HTTP</h3>
+
+<p>Gecko で新しい <a href="/en/HTTP" title="HTTP">HTTP</a> <a href="/en/HTTP/HTTP_response_codes#308" title="https://developer.mozilla.org/en/HTTP/HTTP_response_codes#308"><code>308 Permanent Redirect</code></a> ステータスコードがサポートされます。Gecko は永続的リダイレクトと一時的リダイレクトを区別しないので、308 ステータスコードは <a href="/en/HTTP/HTTP_response_codes#307" title="https://developer.mozilla.org/en/HTTP/HTTP_response_codes#307"><code>307 Temporary Redirect</code></a> コードのように振る舞います。307 同様に、ユーザエージェントが 2 つのリクエスト間で HTTP メソッドを変更することは禁止されます (<code>POST</code> は <code>POST のままであり、</code><code>GET</code> は <code>GET のままです</code>)。</p>
+
+<h2 id="Mozilla_開発者とアドオン開発者向けの変更点">Mozilla 開発者とアドオン開発者向けの変更点</h2>
+
+<h3 id="JavaScript_コードモジュール">JavaScript コードモジュール</h3>
+
+<h4 id="source-editor.jsm">source-editor.jsm</h4>
+
+<ul>
+ <li>現在の選択範囲をコメントアウトする、もしくは、コメントアウトを解除するためのキーボードショートカットが追加されました(Ctrl-/ もしくは Mac OS X では Cmd-/)。</li>
+ <li>現在のブロックの開始と終端にテキスト入力位置を移動するための Ctrl-[ および Ctrl-]  キーボードショートカットが追加されました。</li>
+ <li>新しく <a href="/en/JavaScript_code_modules/source-editor.jsm#getLineStart%28%29" title="en/JavaScript_code_modules/source-editor.jsm#getLineStart%28%29"><code>getLineStart()</code></a> <code>および </code><a href="/en/JavaScript_code_modules/source-editor.jsm#getLineEnd%28%29" title="en/JavaScript_code_modules/source-editor.jsm#getLineEnd%28%29"><code>getLineEnd()</code></a> メソッドが追加されました。</li>
+</ul>
+
+<h3 id="XUL">XUL</h3>
+
+<ul>
+ <li>{{ XULElem("window") }} 要素に新しい {{ XULAttr("fullscreenbutton") }} 属性が追加されました。この属性に <code>true</code> を設定することで、ウィンドウのクロム (chrome) にフルスクリーンモードに変更するためのボタンが追加されます。</li>
+</ul>
+
+<h3 class="editable" id="インタフェース"><span>インタフェース</span></h3>
+
+<ul>
+ <li>{{ interface("nsILocalFile") }} インタフェースは {{ interface("nsIFile") }} にマージされました。 (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=682360" title="https://bugzilla.mozilla.org/show_bug.cgi?id=682360">bug 682360</a>).</li>
+ <li>ブックマークをインポートするための {{ interface("nsIPlacesImportExportService") }} におけるメソッドは <code><a href="/en/JavaScript_code_modules/BookmarkHTMLUtils.jsm" title="en/JavaScript_code_modules/BookmarkHTMLUtils.jsm">BookmarkHTMLUtils.jsm</a></code> JavaScript コードモジュールの利用を促すために削除されました。</li>
+ <li>{{ interface("nsIDOMGeoPositionAddress") }} インターフェースは削除されました。</li>
+</ul>
+
+<h3 id="スペルチェック">スペルチェック</h3>
+
+<ul>
+ <li>辞書の名前が完全な <a class="external" href="http://tools.ietf.org/html/bcp47" title="http://tools.ietf.org/html/bcp47">BCP 47</a> 言語タグで解釈されるようになりました (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=730209" title="https://bugzilla.mozilla.org/show_bug.cgi?id=730209">bug 730209</a>, <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=741842" title="https://bugzilla.mozilla.org/show_bug.cgi?id=741842">bug 741842</a>)。開発者は辞書名での言語名をハードコーディングしないようにしてください。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連記事</h2>
+
+<div>{{Firefox_for_developers('13')}}</div>
diff --git a/files/ja/mozilla/firefox/releases/15/index.html b/files/ja/mozilla/firefox/releases/15/index.html
new file mode 100644
index 0000000000..bac3f59186
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/15/index.html
@@ -0,0 +1,121 @@
+---
+title: Firefox 15 for developers
+slug: Mozilla/Firefox/Releases/15
+tags:
+ - Firefox
+ - Firefox 15
+ - Gecko 15
+translation_of: Mozilla/Firefox/Releases/15
+---
+<p>Firefox 15 は 2012 年 8 月 28 日にリリースされました。この記事では、ウェブ開発者に知らせるだけでなく、Firefox や Gecko 開発者、アドオン開発者にも役立つ主な変更点のリストを掲載しています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点</h2>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("font")}} 要素の <code>size</code> 属性が HTML5 仕様に従って扱われるようになりました。つまり、<code>10</code> より大きい、または、<code>-10</code> より小さい整数はすべて <code>10</code> か <code>-10</code> であるとみなされるようになりました。</li>
+ <li><code>&lt;font&gt;</code> 要素の <code>font-weight</code> および <code>point-size</code> 属性のサポートが削除されました。これらは非標準であり、Gecko はそれらをサポートする唯一のレンダリングエンジンでした。</li>
+ <li>{{HTMLElement("audio")}} および {{HTMLElement("video")}} 要素のための Ogg コンテナで音声向けの <a class="external" href="http://www.opus-codec.org/" title="http://www.opus-codec.org/">Opus コーデック</a> がサポートされました。</li>
+ <li>{{HTMLElement("source")}} 要素で <code>media</code> 属性がサポートされました。</li>
+ <li>{{HTMLElement("audio")}} および {{HTMLElement("video")}} 要素で <code>played</code> 属性がサポートされました。この属性の値はこれまで再生したメディアの時間を一覧化した {{domxref("TimeRanges")}} オブジェクトです。</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("font-feature-settings")}} プロパティが最新の構文に更新されました。例: <code>font-feature-settings: "lnum" 1;</code></li>
+ <li>{{cssxref("text-transform")}} プロパティが (<code>fi</code> のような) Unicode の合字を正しく扱うように拡張されました。</li>
+ <li>CSS の {{cssxref("word-break")}} プロパティが実装されました。</li>
+ <li>The {{cssxref("border-image")}} プロパティが最新の仕様と接頭辞無しのプロパティに対応するように更新されました。 (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=713643">bug 713643</a>)</li>
+ <li>{{cssxref("transform")}} の <code>skew()</code> 関数は Firefox 14 で削除されましたが、既存サイト互換性のために復活しました。ですが、代りに、<code>skewX()</code> および <code>skewY()</code> 関数を利用することを勧めます。</li>
+</ul>
+
+<h3 id="DOM">DOM</h3>
+
+<ul>
+ <li>DOM Events Level 3 のメソッドであり、<code>Ctrl</code> <code><code>や</code> Shift </code>のような、モディファイアキーの状態を調べることができる、<a href="/ja/docs/DOM/KeyboardEvent#getModifierState%28%29" title="https://developer.mozilla.org/ja/docs/DOM/KeyboardEvent#getModifierState%28%29"><code>KeyboardEvent.getModifierState()</code></a> と <a href="/ja/docs/DOM/MouseEvent#getModifierState%28%29" title="https://developer.mozilla.org/ja/docs/DOM/MouseEvent#getModifierState%28%29"><code>MouseEvent.getModifierState()</code></a> が実装されました(bugs <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=630811" title="https://bugzilla.mozilla.org/show_bug.cgi?id=630811">630811</a> および <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=731878" title="https://bugzilla.mozilla.org/show_bug.cgi?id=731878">731878</a>)。ただし、その挙動は最新の D3E 草案に従っています。そのため、モディファイアキー名のいくつかが IE と異なります({{bug("769190")}})。</li>
+ <li>マウスイベントで、<a href="/ja/docs/DOM/MouseEvent" title="DOM/MouseEvent"><code>MouseEvent.buttons</code></a> 属性を用いたマウスボタンの状態を調べるためのサポートが実装されました。</li>
+ <li>キーボードイベントで、 <a href="/ja/docs/DOM/KeyboardEvent#Attributes_location" title="https://developer.mozilla.org/ja/docs/DOM/KeyboardEvent#Attributes_location">KeyboardEvent.location</a> 属性を用いたキーの位置(標準、モディファイアキーの左もしくは右、テンキー上)を調べるためのサポートが実装されました({{bug("166240")}})。</li>
+ <li><code>KeyboardEvent.keycode</code> の結果が Windows/Linux/Mac でほぼ同じであった従来のルールよりも優れたルールから算出されるようになりました。そして、それらは アラビア文字、キリル文字, タイ文字などのような、Linux と Mac での非 ASCII 入力可能レイアウトでも利用可能です。<a href="/ja/docs/DOM/KeyboardEvent#Virtual_key_codes" title="DOM/KeyboardEvent#Virtual_key_codes">仮想キーコードのための文書</a>を参照してください。</li>
+ <li><a href="/ja/docs/DOM/range.detach" title="https://developer.mozilla.org/ja/docs/DOM/range.detach"><code>range.detach()</code></a> メソッドは何もしないように変更されました。恐らく、将来的に削除されるでしょう。</li>
+ <li><code>HTMLVideoElement.mozHasAudio()<code><code><code> </code></code></code>メソッドが実装されました。与えられた video 要素に関連づけられた音声トラックがあるかどうかを示します(<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=480376" title="https://bugzilla.mozilla.org/show_bug.cgi?id=480376">bug </a><a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=480376" title="https://bugzilla.mozilla.org/show_bug.cgi?id=480376">480376</a>)。</code></li>
+ <li><code>Performance</code> API に新しいメソッド <code>now()</code> が追加されました。このメソッドは <code>DOMHighResTimeStamp</code> 型の高解像度タイマをサポートします(<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=539095" title="https://bugzilla.mozilla.org/show_bug.cgi?id=539095">bug 539095</a>)。</li>
+ <li><a href="/ja/docs/API/WebSMS" title="API/WebSMS">WebSMS API</a> が更新され、SMS テキストメッセージが既読か未読かのどちらかを示す <code>read</code> 属性がサポートされました。</li>
+ <li><a class="link-https" href="https://wiki.mozilla.org/WebAPI/FileHandleAPI" title="https://wiki.mozilla.org/WebAPI/FileHandleAPI">FileHandle API</a> が実装されました。</li>
+ <li><a href="/ja/docs/DOM/Blob" title="DOM/Blob"><code>Blob</code></a> コンストラクタが <code><var>blobParts</var></code> 引数の値として <code>ArrayBuffer</code> に加えて <code>ArrayBufferView</code> を取れるようになりました。 (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=752402">bug 752402</a>)</li>
+ <li><a href="http://www.w3.org/TR/ambient-light/" title="http://www.w3.org/TR/ambient-light/">Ambient Light Events Working Draft</a> で策定された {{domxref("DeviceLightEvent")}} が実装されました。</li>
+ <li>{{domxref("DeviceProximityEvent")}} および {{domxref("UserProximityEvent")}} <a href="http://www.w3.org/TR/proximity/" title="http://www.w3.org/TR/proximity/">Proximity Events</a> が実装されました。</li>
+ <li>{{domxref("File")}} <code>lastModifiedDate</code> プロパティが実装されました。 ({{bug("673586")}})</li>
+</ul>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>Typed Arrays 仕様由来の <a href="/ja/docs/javascript_typed_arrays/DataView" title="JavaScript_typed_arrays/DataView"><code>DataView</code></a> インタフェースのサポートが追加されました。これは <a href="/ja/docs/javascript_typed_arrays/ArrayBuffer" title="JavaScript_typed_arrays/ArrayBuffer"><code>ArrayBuffer</code></a> に含まれるデータへの低レベルアクセスを提供します。</li>
+ <li>ECMAScript Harmony の <code>Number.isNaN</code> のサポートが追加されました。(<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=749818" title="https://bugzilla.mozilla.org/show_bug.cgi?id=749818">bug 749818</a>)</li>
+ <li>ECMAScript Harmony のデフォルトパラメータが追加されました。 (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=757676" title="https://bugzilla.mozilla.org/show_bug.cgi?id=757676">bug 757676</a>)</li>
+ <li>ECMAScript Harmony のレストパラメータが追加されました。 (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=574132" title="https://bugzilla.mozilla.org/show_bug.cgi?id=574132">bug 574132</a>)</li>
+</ul>
+
+<h3 id="WebGL">WebGL</h3>
+
+<ul>
+ <li><a href="/ja/docs/WebGL/Using_Extensions#WEBGL_compressed_texture_s3tc" title="WebGL/Using_Extensions#WEBGL_compressed_texture_s3tc"><code>WEBGL_compressed_texture_s3tc</code></a> 拡張のサポートが追加されました。圧縮されたテクスチャは GPU 上でテクスチャを保持するために必要なメモリの量を減少させます。その結果、より高解像度なテクスチャや同解像度でもより多くのテクスチャを扱えます。</li>
+</ul>
+
+<h3 id="MathML">MathML</h3>
+
+<ul>
+ <li>数学演算記号で {{cssxref("@font-face")}} で指定したダウンローダブルフォントを利用できるようになりました。これにより、<a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/mathml-fonts/" title="https://addons.mozilla.org/en-US/firefox/addon/mathml-fonts/">MathML-fonts アドオン</a> で引き伸ばされた演算記号が正常に表示されるようになります。</li>
+ <li>{{MathMLElement("maction")}} の <code>selection</code> 属性が <code>actiontype</code> 属性の値が <code>toggle</code> のときにのみ考慮されるようになりました。</li>
+ <li><a class="external" href="http://www.w3.org/TR/MathML3/chapter3.html#id.3.3.4.2.1" title="http://www.w3.org/TR/MathML3/chapter3.html#id.3.3.4.2.1"><span id="summary_alias_container"><span id="short_desc_nonedit_display">非推奨の名前付き空白バインディング</span></span></a> が削除されました({{bug("673759")}})。</li>
+ <li><a href="/ja/docs/MathML/Attributes/Values" title="Values">Length</a> と {{MathMLElement("mpadded")}} の値でサポートされる構文が MathML3 仕様で指定されたものにより近くなりました。</li>
+ <li>New MathML mirrorable operators for Arabic math have been added to the operator dictionary ({{bug("757125")}}).</li>
+</ul>
+
+<h3 id="SVG">SVG</h3>
+
+<ul>
+ <li>{{SVGElement("view")}} 要素のサポートが追加されました ({{bug("512525")}})。</li>
+</ul>
+
+<h3 id="Network">Network</h3>
+
+<ul>
+ <li>SPDY v3 プロトコルのサポートが実装されました。既定では無効であり、<code>network.http.spdy.enabled.v3</code> の設定を <code>true</code> にすることで有効になります。 (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=737470">bug 737470</a>)</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">Mozilla 開発者とアドオン開発者向けの変更点</h2>
+
+<h3 id="Interface_changes" name="Interface_changes">インタフェースの変更点</h3>
+
+<dl>
+ <dt>{{interface("nsIDOMWindowUtils")}}</dt>
+ <dd><code>sendMouseEvent()</code>、<code>sendTouchEvent()</code>、<code>sendMouseEventToWindow()</code>、<code>sendMouseScrollEvent()</code> および <code>sendKeyEvent()</code> の <code>aModifiers</code> は <a href="/ja/docs/DOM/KeyboardEvent#getModifierState%28%29" title="https://developer.mozilla.org/ja/docs/DOM/KeyboardEvent#getModifierState%28%29"><code>KeyboardEvent.getModifierState()</code></a> でサポートされている修飾キーのすべてをサポートします。<code>MODIFIER_*</code> という値を利用してください。 また、<code>sendKeyEvent()</code> の第 5 引数が <code>boolean</code> から <code>unsigned long</code> に変更されました。後方互換性のために、呼び出し元がそれに対して <code>true</code> または false を渡している場合、挙動は変更されません。この変更によって呼び出し元がキーの位置を指定することができるようになります。</dd>
+ <dt>{{interface("nsIBrowserHistory")}}</dt>
+ <dd><code>hidePage()</code> メソッドは一度も実装されずに、かつ、このリリースで完全に削除されます。<a href="/ja/docs/Places" title="Places">Places</a> API のすべてを非同期化する進行中の作業の一部として、<code>addPageWithDetails()</code> メソッドも削除されます。代わりに {{ifmethod("mozIAsyncHistory", "updatePlaces")}} を利用してください。また、<code>count</code> 属性も削除されます。それはときどき実際のカウントを返していませんでした(代わりに、単純にエントリが存在したかどうかを返していました)。代わりに {{ifattribute("nsINavHistoryService", "hasHistoryEntries")}} を利用できます。</dd>
+ <dt>{{interface("inIDOMUtils")}}</dt>
+ <dd>{{ifmethod("inlDOMUtils", "parseStyleSheet")}} メソッドが追加され、CSS の (再) 解析ができるようになりました。</dd>
+ <dt>{{interface("nsIINIParserWriter")}}</dt>
+ <dd>{{ifmethod("nsIINIParserWriter", "writeFile")}} メソッドが <code>flags</code> プロパティを受け入れるようになりました。現在は 1 個のオプションのみを与えます: Windows および特定のインストーラーとの互換性のため、ファイルを UTF-8 形式の代わりに UTF-16 形式で書き込むことを知らせることができます。</dd>
+</dl>
+
+<h4 id="New_interfaces" name="New_interfaces">新しいインタフェース</h4>
+
+<dl>
+ <dt>{{interface("nsISpeculativeConnect")}}</dt>
+ <dd>近い将来のいつかに要求される可能性がある、与えられた URI への接続をオープンするネットワーキング層のヒントを与えるための方法を提供します。これによりネットワーク層が時として高レイテンシプロセスで前もっと新しいネットワーク接続を開き始めることを可能にします。</dd>
+</dl>
+
+<h4 id="Removed_interfaces" name="Removed_interfaces">削除されたインタフェース</h4>
+
+<p>以下のインタフェースが削除されました。</p>
+
+<ul>
+ <li>{{interface("nsIGlobalHistory")}}</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連記事</h2>
+
+<div>{{Firefox_for_developers('14')}}</div>
diff --git a/files/ja/mozilla/firefox/releases/16/index.html b/files/ja/mozilla/firefox/releases/16/index.html
new file mode 100644
index 0000000000..fc657bb94c
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/16/index.html
@@ -0,0 +1,105 @@
+---
+title: Firefox 16 for developers
+slug: Mozilla/Firefox/Releases/16
+tags:
+ - '2009'
+ - Firefox
+translation_of: Mozilla/Firefox/Releases/16
+---
+<p>Firefox 16 は、2012 年 10 月 9 日にリリースされました。この記事では、ウェブ開発者に知らせるだけでなく、Firefox や Gecko 開発者、アドオン開発者にも役立つ主な変更点のリストを掲載しています。</p>
+
+<h2 id="Web_開発者向けの変更点一覧">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("meter")}} 要素をサポートしました。</li>
+
+ <li>HTML Microdata API のサポートが追加されました。(<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=591467">bug 591467</a>)</li>
+ <li>{{ HTMLElement("canvas") }} が CSS の <code>currentColor</code> をすべての場合でサポートするようになりました。({{bug("629882")}})</li>
+ <li>{{HTMLElement("input")}} で、<code>accept</code> 属性の任意の MIME タイプに基づくフィルタリングが可能になりました。({{bug("565274")}})</li>
+ <li>2 個の属性 <code>width</code> および <code>height</code> が {{HTMLElement("input")}} 要素に追加されました (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=683855">bug 683855</a>)</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>標準の、接頭辞無しのバージョンの <a href="/ja/docs/CSS/Using_CSS_Animations" title="/ja/docs/CSS/Using_CSS_Animations">CSS Animations</a> が使えるようになりました。(<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=762302">bug 762302</a>)</li>
+ <li>アニメーションの方向の逆転({{ cssxref("animation-direction") }} プロパティの <code>reverse</code> と <code>alternate-reverse</code> キーワード)のサポートが追加されました。(<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=655920">bug 655920</a>)</li>
+ <li>CSS の {{cssxref("height")}} および {{cssxref("width")}} プロパティのアニメーションが可能になりました。</li>
+ <li>{{ cssxref("animation-duration") }} および {{ cssxref("transition-duration") }} の CSS プロパティが、負の値を拒絶するようになりました (さらに、そのような値はもはや <code>0s</code> として扱われません)。(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=773102" title="https://bugzilla.mozilla.org/show_bug.cgi?id=773102">bug 773102</a>)</li>
+ <li>標準の、接頭辞無しのバージョンの <a href="/ja/docs/CSS/Using_CSS_transforms" title="/ja/docs/CSS/Using_CSS_transforms">CSS Transforms</a> が使えるようになりました。(<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=745523">bug 745523</a>)</li>
+ <li>標準の、接頭辞無しのバージョンの <a href="/ja/docs/CSS/Using_CSS_gradients" title="/ja/docs/CSS/Using_CSS_gradients">CSS Gradients</a> が使えるようになりました。接頭辞付きのバージョンから構文がかなり変わっていますので、よく学んでおくとよいでしょう。 (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=752187">bug 752187</a>)</li>
+ <li>{{ cssxref("box-sizing", "-moz-box-sizing") }} の実装がテーブルのセルにも適用されるように更新されました。(<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=338554">bug 338554</a>)</li>
+ <li>標準の、接頭辞無しの {{ cssxref("calc") }} が使えるようになりました。(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=771678" title="https://bugzilla.mozilla.org/show_bug.cgi?id=771678">bug 771678</a>)</li>
+ <li>{{cssxref("&lt;resolution&gt;")}} CSS データタイプが拡張され、<code>dppx</code> がサポートされるようになりました。(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=741644" title="https://bugzilla.mozilla.org/show_bug.cgi?id=741644">bug 741644</a>)</li>
+ <li>画面上で、<a href="/ja/docs/CSS/Media_queries" title="/ja/docs/CSS/Media_queries">メディアクエリ</a> のために、<code>dppx</code>、<code>dpi</code>、および <code>dpcm</code> が物理単位ではなく、CSS ピクセル単位で再表現されるようになりました。 (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=771390" title="https://bugzilla.mozilla.org/show_bug.cgi?id=771390">bug 771390</a>)</li>
+ <li>特定の状態にある {{HTMLElement("meter")}} 要素へのアクセスやスタイル付けを行うため、新たに 3 つの疑似クラス <code>:-moz-meter-optimum</code>、<code>:-moz-meter-sub-optimum</code>、<code>:-moz-meter-sub-sub-optimum</code> を追加しました。(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=660238" title="https://bugzilla.mozilla.org/show_bug.cgi?id=660238">bug 660238</a>)</li>
+ <li>{{cssxref("-moz-appearance")}} プロパティが新たに 2 つの値を取り入れました : <code>meterbar</code> および <code>meterchunk</code>。これらは、{{HTMLElement("meter")}} 要素内部のコンポーネントを表します。(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=659999" title="https://bugzilla.mozilla.org/show_bug.cgi?id=659999">bug 659999</a>)</li>
+ <li>{{cssxref("min-width")}} および {{cssxref("min-height")}} で、flex item のための <code>auto</code> キーワードをサポートしました (他のアイテムでは <code>0</code> と解釈します)。({{bug("763689")}})</li>
+</ul>
+
+<h3 id="APIDOM">API/DOM</h3>
+
+<ul>
+ <li><code>width</code> と <code>height</code> の 2 つの新しいプロパティが {{ domxref("HTMLInputElement") }} インタフェースに追加されました。(<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=683855">bug 683855</a>)</li>
+ <li>IndexedDB プロパティとメソッドが接頭辞無しになりました。(<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=726378">bug 726378</a>)</li>
+ <li><a href="/ja/docs/DOM/window.navigator.battery" title="/ja/docs/DOM/window.navigator.battery">Battery API</a> が接頭辞なしになりました。</li>
+ <li>Vibration API が接頭辞なしになりました。</li>
+ <li>現在も接頭辞付きの <code>mozKeyboard</code> である {{domxref("Keyboard")}} インタフェースが、{{domxref("Keyboard.setSelectedOption()")}} および {{domxref("Keyboard.setValue()")}} メソッドと {{domxref("Keyboard.onfocuschange")}} プロパティを持つようになりました。</li>
+ <li><code>Window.java</code> および <code>Window.packages</code> 属性を削除しました。これらは文書化されたことがなく、おそらく皆さんは使用していないでしょう!</li>
+ <li>{{ domxref("CSSNamespaceRule") }} に結びつけられている <code>CSSRule.type</code> を、<code>UNKNOWN_RULE</code> (<code>0</code>) から <code>NAMESPACE_RULE</code> (<code>10</code>) に更新しました。(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=765590" title="https://bugzilla.mozilla.org/show_bug.cgi?id=765590">bug 765590</a>)</li>
+ <li>WebSMS API: {{domxref("SmsRequest")}} は、より一般的な {{domxref("DOMRequest")}} に置き換えられました。</li>
+ <li>非標準の {{domxref("Element.scrollTopMax")}} および {{domxref("Element.scrollLeftMax")}} 読み取り専用プロパティが追加されました ({{bug(766937)}})。</li>
+ <li>{{domxref("Blob.blob", "Blob()")}} の第 2 引数に <code>null</code> または <code>undefined</code> をセットした場合、空ディレクトリとして扱われるようになりました ({{bug(7691119)}})。</li>
+</ul>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><a href="/ja/docs/JavaScript/Reference/Global_Objects/Number" title="/ja/docs/JavaScript/Reference/Global_Objects/Number"><code>Number</code></a> オブジェクトに <code>isFinite()</code>、<code>toInteger()</code>、<code>isInteger()</code> メソッドを追加しました。(<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=761480">bug 761480</a>, <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=761495">bug 761495</a>)</li>
+ <li>Harmony の <a href="http://wiki.ecmascript.org/doku.php?id=harmony:spread" title="http://wiki.ecmascript.org/doku.php?id=harmony:spread">spread 演算子</a>を <a href="/ja/docs/JavaScript/Reference/Global_Objects/Array" title="/ja/docs/JavaScript/Reference/Global_Objects/Array"><code>Array</code></a> オブジェクトに追加しました。(<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=574130">bug 574130</a>)</li>
+ <li>実験的な {{jsxref("TypedArray.prototype.move()")}} メソッドが追加されました (Aurora および Nightly チャンネルのみで利用可能) ({{bug(730873)}})。</li>
+</ul>
+
+<h3 id="WebGL">WebGL</h3>
+
+<p><em>変更なし</em></p>
+
+<h3 id="SVG">SVG</h3>
+
+<p><em>変更なし</em></p>
+
+<h3 id="MathML">MathML</h3>
+
+<ul>
+ <li>{{ MathMLElement("mo") }} の <code>lspace</code> および <code>rspace</code> 属性の初期値が、正しく <code>thickmathspace</code> になります。</li>
+</ul>
+
+<h3 id="ネットワーク">ネットワーク</h3>
+
+<h3 id="Developer_tools" name="Developer_tools">開発者ツール</h3>
+
+<ul>
+ <li>便利な開発ツールバーを実装しており、ツール &gt; Web 開発 &gt; 開発ツールバー から、あるいは Ctrl-Shift-V (Mac OS X では Cmd-Opt-V) を押して呼び出すことができます。このツールバーは、ボタンと同じように便利なツールをすばやく呼び出せるコマンドラインインタフェースを提供します。Graphical command line interface (<a href="/ja/docs/Tools/GCLI" title="/ja/docs/Tools/GCLI">GCLI</a>) は、将来の拡張やコマンドの追加が容易であると期待されています。"help" と入力すると、サポートしているコマンドの一覧を得られます。</li>
+ <li>Web コンソールがエラーの回数を表示するようになり、この先あなたの作業がどれだけあるかをすばやく見ることができます。</li>
+ <li>スクラッチパッドが、最近開いたファイルの一覧を提供するようになりました。</li>
+</ul>
+
+<h2 id="Open_Web_App_開発者向けの変更点">Open Web App 開発者向けの変更点</h2>
+
+<ul>
+ <li>Initial <a href="https://developer.mozilla.org/en-US/docs/Apps/Getting_Started">Open Web App support</a> has been implemented in the desktop versions of Firefox (that is, on Windows, Mac OS X, and Linux).</li>
+</ul>
+
+<h2 id="アドオンと_Mozilla_開発者向け">アドオンと Mozilla 開発者向け</h2>
+
+<h3 id="インタフェースの変更点">インタフェースの変更点</h3>
+
+<p>{{interface("nsIPrivateDOMEvent")}} が {{interface("nsIDOMEvent")}} に併合されました ({{bug("761613")}})。</p>
+
+<h4 id="新しいインタフェース">新しいインタフェース</h4>
+
+<h4 id="削除されたインタフェース">削除されたインタフェース</h4>
+
+<p>以下のインタフェースが削除されました。</p>
diff --git a/files/ja/mozilla/firefox/releases/17/index.html b/files/ja/mozilla/firefox/releases/17/index.html
new file mode 100644
index 0000000000..f69a3b2809
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/17/index.html
@@ -0,0 +1,95 @@
+---
+title: Firefox 17 for developers
+slug: Mozilla/Firefox/Releases/17
+tags:
+ - Firefox
+translation_of: Mozilla/Firefox/Releases/17
+---
+<p>Gecko 17 を搭載した Firefox 17 は米国時間 2012 年 11 月 20 日にリリースされました。このページでは、開発者に影響する Firefox 17 の変更点をまとめています。</p>
+
+<p>Want to help document Firefox 17? See the <a class="external" href="http://beta.elchi3.de/doctracker/#list=fx&amp;version=17.0">list of bugs that need to be written about</a> and pitch in!</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("iframe")}} 要素で {{htmlattrxref("sandbox", "iframe") }} 属性をサポートしました。({{ bug("341604") }})</li>
+ <li>{{HTMLElement("input")}} 要素で <code>inputmode</code> 属性をサポートしました。(注意: 現在 Gecko が提供する値は、WHATWG HTML 仕様書のものと異なります。) ({{bug("746142")}})</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li><a href="http://dev.w3.org/csswg/css3-conditional/" title="http://dev.w3.org/csswg/css3-conditional/">CSS3 Conditional Rules 仕様書</a>で定義されている {{ cssxref("@supports") }} @-規則をサポートしました。これは既定で無効にされています。開発者の方は、<code>layout.css.supports-rule.enabled</code> を true に設定することで試すことができます (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=649740" title="https://bugzilla.mozilla.org/show_bug.cgi?id=649740">bug 649740</a>)。</li>
+ <li>要素の表記方向を基にした要素選択を可能にする、CSS Selectors Level 4 の {{ cssxref(":dir", ":dir()") }} 疑似クラスをサポートしました。(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=562169" title="https://bugzilla.mozilla.org/show_bug.cgi?id=562169">bug 562169</a>)</li>
+ <li>CSS の{{ cssxref("unicode-bidi") }} プロパティで新たに規定された値である <code>isolate-override</code> をサポートしました。(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=774335" title="https://bugzilla.mozilla.org/show_bug.cgi?id=774335">bug 774335</a>)</li>
+ <li>{{ cssxref("box-sizing") }} の接頭辞付き実装が、{{ cssxref("min-height") }} および {{ cssxref("max-height") }} を考慮するようになりました。接頭辞が不要な実装に近づくステップのひとつです。({{bug("308801")}})</li>
+</ul>
+
+<h3 id="DOM">DOM</h3>
+
+<ul>
+ <li><a href="http://dev.w3.org/csswg/css3-conditional/" title="http://dev.w3.org/csswg/css3-conditional/">CSS3 Conditional Rules 仕様書</a>で定義されている {{ domxref("CSSSupportsRule") }} インタフェースをサポートしました。(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=649740" title="https://bugzilla.mozilla.org/show_bug.cgi?id=649740">bug 649740</a>)</li>
+ <li>{{ domxref("WheelEvent") }} オブジェクトおよび  <code>wheel</code> イベントをサポートしました ({{ bug("719320") }})。</li>
+ <li>Linux において DOM Meta キーを再びサポートしました ({{bug("751749")}})。</li>
+ <li>{{ domxref("HTMLMediaElement") }} で、新たなメソッド <code>mozGetMetadata</code> をサポートしました ({{bug("763010")}})。これは、再生しているメディアのリソースから得たメタデータを {key: value} の組として表すプロパティを持つ、JavaScript オブジェクトを返します。</li>
+</ul>
+
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><a href="/ja/docs/JavaScript/Reference/Global_Objects/String"><code>String</code></a> オブジェクトが Harmony の <code>startsWith</code>、<code>endsWith</code>、および <code>contains</code> メソッドを提供します。(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=772733" title="https://bugzilla.mozilla.org/show_bug.cgi?id=772733">bug 772733</a>)</li>
+ <li>strawman <a href="/ja/docs/JavaScript/Reference/Global_Objects/ParallelArray" title="/ja/docs/JavaScript/Reference/Global_Objects/ParallelArray"><code>ParallelArray</code></a> オブジェクトが試験的に実装されました。({{ bug("778559") }})</li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Map" title="/ja/docs/JavaScript/Reference/Global_Objects/Map">Map</a></code>/<code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Set" title="/ja/docs/JavaScript/Reference/Global_Objects/Set">Set</a></code> のイテレートをサポートしました。({{ bug("725909") }})</li>
+ <li>Web コンテンツでは、デフォルトで <a href="/ja/docs/E4X" title="/ja/docs/E4X">E4X</a> を無効にしました。({{ bug("778851") }})</li>
+ <li>Chrome JavaScript オブジェクトを content に公開するには、<code>__exposedProps__</code> の設定が必要になりました。<code>__exposedProps__</code> の設定なしに content から Chrome オブジェクトへのアクセスを試みても失敗します ({{ bug("553102") }})。</li>
+</ul>
+
+<h3 id="WebGL">WebGL</h3>
+
+<h3 id="SVG">SVG</h3>
+
+<h3 id="MathML">MathML</h3>
+
+<ul>
+ <li>{{MathMLElement("mtable")}} 要素の <code>align</code> 属性のパース処理を、任意のスペースをより正しく扱うように更新しました。</li>
+</ul>
+
+<h3 id="XUL">XUL</h3>
+
+<ul>
+ <li>XUL の <a href="/ja/docs/XUL/key" title="/ja/docs/XUL/key">key</a> 要素で、Win キー (Super または Hyper キー) の "os" モディファイアをサポートしました ({{bug("751749")}})。</li>
+</ul>
+
+<h3 id="Network" name="Network">ネットワーク</h3>
+
+<h3 id="Developer_tools" name="Developer_tools">開発者ツール</h3>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="Interface_changes" name="Interface_changes">インタフェースの変更点</h3>
+
+<dl>
+ <dt>{{ interface("nsIInputStream") }}</dt>
+ <dd><code>available()</code> メソッドは 32 ビット長ではなく 64 ビット長で値を返します。({{bug("215450")}})</dd>
+ <dt>{{ interface("nsIDOMWindowUtils") }}</dt>
+ <dd><code>sendMouseScrollEvent()</code> メソッドは <code>sendWheelEvent()</code> に置き換えられました。({{bug("719320")}})</dd>
+ <dt>{{ interface("nsIFilePicker") }}</dt>
+ <dd>ファイルダイアログを非同期的に開くための <code>open()</code> メソッドを追加し、また <code>show()</code> メソッドは非推奨になりました。({{bug("731307")}})</dd>
+ <dt>{{ interface("nsIScriptSecurityManager") }}</dt>
+ <dd><code>checkLoadURIStr()</code> メソッドおよび <code>checkLoadURI()</code> メソッドが削除されました。({{bug("327244")}})</dd>
+ <dt>{{ interface("nsIRefreshURI") }}</dt>
+ <dd><code>setupRefreshURIFromHeader()</code> メソッドに引数 <code>principal</code> が追加されました。({{bug("327244")}})</dd>
+</dl>
+
+<h4 id="New_interfaces" name="New_interfaces">新しいインタフェース</h4>
+
+<h4 id="Removed_interfaces" name="Removed_interfaces">削除されたインタフェース</h4>
+
+<p>以下のインタフェースが削除されました。</p>
+
+<h2 id="See_also" name="See_also">関連記事</h2>
+
+<div>{{Firefox_for_developers('16')}}</div>
diff --git a/files/ja/mozilla/firefox/releases/17/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/17/site_compatibility/index.html
new file mode 100644
index 0000000000..a9ac33e9fb
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/17/site_compatibility/index.html
@@ -0,0 +1,12 @@
+---
+title: Firefox 17 サイト互換性情報
+slug: Mozilla/Firefox/Releases/17/Site_compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 17
+ - FxSiteCompat
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/17/Site_compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/17/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/18/index.html b/files/ja/mozilla/firefox/releases/18/index.html
new file mode 100644
index 0000000000..e09903f571
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/18/index.html
@@ -0,0 +1,102 @@
+---
+title: Firefox 18 for developers
+slug: Mozilla/Firefox/Releases/18
+tags:
+ - Firefox
+ - Firefox 18
+translation_of: Mozilla/Firefox/Releases/18
+---
+<p>{{ draft() }}</p>
+
+<p>Gecko 18 を搭載した Firefox 18 は米国時間 2013 年 1 月 8 日にリリースされました。このページでは、開発者に影響する Firefox 18 の変更点をまとめています。</p>
+
+<h2 id="Web開発者向けの変更点一覧">Web開発者向けの変更点一覧</h2>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("ol")}} 要素の {{htmlattrxref("reversed","ol")}}<code> 属性をサポートしました。</code>({{bug("601912")}})</li>
+ <li>{{HTMLElement("link")}} 要素の {{htmlattrxref("crossorigin","link")}} 属性をサポートしました。({{bug("786564")}})</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("min-width")}} と {{cssxref("min-height")}} の初期値が <code>auto</code> へ変更されました。(これは flex アイテムにのみ効果があります。なぜなら、他のアイテムでは従来の初期値である <code>0</code> になるためです) ({{bug("763689")}})</li>
+ <li><a href="/ja/docs/CSS/Using_CSS_animations" title="/ja/docs/CSS/Using_CSS_animations">CSS animations </a>にページ作者CSSにおける <code>!important</code> が適用されるようになりました。 ({{bug("783714")}})</li>
+ <li>{{cssxref("background")}} プロパティに CSS3 の{{cssxref("background-size")}} プロパティの指定が追加されました。 ({{bug("570326")}})</li>
+ <li>CSS Flexbox モジュールの初期実装が導入されました。デフォルトでは無効化されていますが、<code>layout.css.flexbox.enabled</code> 設定を true に設定すると有効化されます。({{bug('666041')}})</li>
+</ul>
+
+<h3 id="DOM">DOM</h3>
+
+<ul>
+ <li><code>navigator.mozPay</code> プロパティがサポートされました。 ({{bug("767818")}})</li>
+ <li><code>window.devicePixelRatio</code> プロパティがサポートされました。 ({{bug("564815")}})</li>
+ <li>MacOS Xにおいて <code>window.navigator.battery</code> がサポートされました。 ({{bug("696045")}})</li>
+ <li>{{domxref("BlobBuilder", "MozBlobBuilder")}} は削除されました。<code>Blob</code> オブジェクトを作るには {{domxref("Blob")}} コンストラクタを使ってください。({{bug("744907")}})</li>
+ <li>{{event("visibilitychange")}} イベントと <a href="/ja/docs/DOM/Using_the_Page_Visibility_API" title="/ja/docs/DOM/Using_the_Page_Visibility_API">Page Visibility API</a> の接頭辞が削除されました。({{bug("812086")}})</li>
+ <li><code>TextDecoder</code> と <code>TextEncoder</code> が追加されました。({{bug("764234")}})</li>
+ <li><code>HTMLMediaElement.src</code> が 2 つのプロパティに分離されました: ひとつは標準化された <code>src</code> プロパティで、 {{domxref("DOMString")}} を扱います。もうひとつは接頭辞つきの <code>mozSrcObject</code> プロパティで、<a href="/ja/docs/WebRTC/MediaStream_API" title="/ja/docs/WebRTC/MediaStream_API">media streams</a> を扱います。({{bug("792665")}})</li>
+ <li><a href="/ja/docs/DOM/Using_web_workers#.E6.89.80.E6.9C.89.E6.A8.A9.E3.81.AE.E8.AD.B2.E6.B8.A1_(Transferable_Objects)_.E3.81.AB.E3.82.88.E3.82.8B.E3.83.87.E3.83.BC.E3.82.BF.E3.81.AE.E5.BC.95.E3.81.8D.E6.B8.A1.E3.81.97" title="/ja/docs/DOM/Using_web_workers#.E6.89.80.E6.9C.89.E6.A8.A9.E3.81.AE.E8.AD.B2.E6.B8.A1_(Transferable_Objects)_.E3.81.AB.E3.82.88.E3.82.8B.E3.83.87.E3.83.BC.E3.82.BF.E3.81.AE.E5.BC.95.E3.81.8D.E6.B8.A1.E3.81.97">transferable objects</a> をサポートしました。</li>
+</ul>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><span class="st">ECMAScript Harmony</span> (EcmaScript 6) の Direct Proxies がサポートされました。({{bug("703537")}}) 注意: この実装には 2 つの既知の不具合、欠落している機能、現行仕様との不整合が含まれています。これを本番のコードで使用しないようにしてください。</li>
+ <li>ECMAScript 6 の <code>contains()</code> メソッドを、string に実装しました。これは残念ながら Mootools 1.2 とは互換性がなく、そして Mootools は string の <code>contains()</code> と異なる動作になると考えられますが、それは保証されません。より新しいバージョンの Mootools ではこの問題を修正しています。各サイトでは Mooltools のバージョンを、1.2 より新しいものに更新するとよいでしょう。</li>
+</ul>
+
+<h3 id="WebGL">WebGL</h3>
+
+<h3 id="SVG">SVG</h3>
+
+<h3 id="MathML">MathML</h3>
+
+<h3 id="XUL">XUL</h3>
+
+<h3 id="ネットワーク">ネットワーク</h3>
+
+<ul>
+ <li>HTTP <code>Accept-Language</code> ヘッダの Quality プロパティ ("q-values") は2桁に丸められるようになりました。 ({{bug("672448")}})</li>
+ <li><a href="/ja/docs/The_X-FRAME-OPTIONS_response_header" title="/ja/docs/The_X-FRAME-OPTIONS_response_header"><code>X-FRAME-OPTIONS</code></a> HTTP レスポンスヘッダの <code>ALLOW-FROM</code> 構文がサポートされました。({{bug("690168")}})</li>
+</ul>
+
+<h3 id="開発者ツール">開発者ツール</h3>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="インターフェース">インターフェース</h3>
+
+<dl>
+ <dt>{{ interface("nsIStreamListener") }}</dt>
+ <dd><code>onDataAvailable()の</code>4番目の引数 (aOffset) が unsigned long long 型に変更されました。 ({{bug("784912")}})</dd>
+ <dt>{{ interface("nsIUploadChannel") }}</dt>
+ <dd><code>setUploadStream()</code> が 2GB を超える content-length をサポートしました。({{bug("790617")}})</dd>
+ <dt>{{ interface("nsIEditor") }}</dt>
+ <dd><code>addEditorObserver()</code> が削除されました。代わりに <code>setEditorObserver()</code> を使ってください。<code>removeEditorObserver()</code> は {{ interface("nsIEditorObserver") }} パラメータを受け取らなくなります。({{bug("785091")}})</dd>
+ <dt>{{ interface("nsIHttpProtocolHandler") }}</dt>
+ <dd><code>http-on-modify-request</code> オブザーバが <code>nsIChannel.asyncOpen() </code>中に同期的に呼ばれる保証はなくなります。<code>asyncOpen()</code> 中に呼び出される必要のあるオブザーバには新しく <code>http-on-opening-request</code> オブザーバトピックが追加されています<code>。詳細は</code>({{bug("800799")}})をご覧ください。</dd>
+</dl>
+
+<h4 id="新しいインターフェース">新しいインターフェース</h4>
+
+<h4 id="削除されたインターフェース">削除されたインターフェース</h4>
+
+<p>以下のインターフェースが削除されました:</p>
+
+<ul>
+ <li>{{ interface("nsIEditorObserver") }}</li>
+</ul>
+
+<h2 id="関連記事">関連記事</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/18.0/releasenotes/">Firefox 18 リリースノート</a></li>
+ <li><a href="https://hacks.mozilla.org/2012/10/aurora-18-hidpi-touch-events/">Aurora 18: HiDPI &amp; Touch Events</a> (Mozilla Hacks)</li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/18/">Firefox 18 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2012/12/firefox-18-addon-compatibility/">Firefox 18 のアドオン互換性に関わる修正のまとめ</a></li>
+</ul>
+
+<p>{{Firefox_for_developers('17')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/18/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/18/site_compatibility/index.html
new file mode 100644
index 0000000000..d6fe6c7e05
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/18/site_compatibility/index.html
@@ -0,0 +1,12 @@
+---
+title: Firefox 18 サイト互換性情報
+slug: Mozilla/Firefox/Releases/18/Site_compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 18
+ - FxSiteCompat
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/18/Site_compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/18/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/19/index.html b/files/ja/mozilla/firefox/releases/19/index.html
new file mode 100644
index 0000000000..f5c7e7b1fb
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/19/index.html
@@ -0,0 +1,82 @@
+---
+title: Firefox 19 for developers
+slug: Mozilla/Firefox/Releases/19
+tags:
+ - Firefox
+ - Firefox 19
+ - NeedsContent
+translation_of: Mozilla/Firefox/Releases/19
+---
+<p>{{ draft() }}</p>
+
+<p>Gecko 19 を搭載した Firefox 19 は米国時間 2013 年 2 月 19 日にリリースされました。このページでは、開発者に影響する Firefox 19 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Map" title="/ja/docs/JavaScript/Reference/Global_Objects/Map">Map</a></code> オブジェクトおよび <code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Set" title="/ja/docs/JavaScript/Reference/Global_Objects/Set">Set</a></code> オブジェクトは、<code>size()</code> メソッドを持つオブジェクトから <code>size</code> プロパティを持つオブジェクトに変わりました。({{bug("807001")}})</li>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Map" title="/ja/docs/JavaScript/Reference/Global_Objects/Map">Map</a></code> オブジェクトおよび <code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Set" title="/ja/docs/JavaScript/Reference/Global_Objects/Set">Set</a></code> オブジェクトに <code>clear()</code> メソッドが追加されました。({{bug("805003")}})</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>Viewport に対して相対的な {{cssxref("&lt;length&gt;")}} の単位である <code>vh</code>、<code>vw</code>、<code>vmin</code>、および <code>vmax</code> をサポートしました ({{bug("503720")}})。</li>
+ <li>CSS Flexbox の接頭辞を外しましたが、引き続きデフォルトでは無効にしています ({{bug("801098")}})。</li>
+ <li><code>-moz-initial</code> 値の接頭辞を外しました ({{bug("806068")}})。<code>-moz-initial</code> は当分の間、エイリアスとして残します。しかし、Web 開発者は <code>initial</code> に移行することを強く推奨します。</li>
+ <li>CSS の {{ cssxref("text-transform")}} プロパティで、日本語や中国語など固定幅の表意文字を使用したテキスト内にラテン文字をなめらかに追加できるようにするためのキーワードである <code>full-width</code> をサポートしました({{bug("774560")}})。</li>
+ <li>CSS の {{ cssxref("page-break-inside")}} を実装しました ({{bug("685012")}})。</li>
+ <li>CSS の {{ cssxref("calc", "calc()")}} 関数を、({{cssxref("&lt;gradient&gt;")}} の) <code>&lt;color-stop&gt;</code> で使用できるようになりました。</li>
+ <li>CSS の {{ cssxref("@page") }} @-規則をサポートしました ({{bug("115199")}})。擬似クラス {{cssxref(":first")}}、{{cssxref(":right")}}、および {{cssxref(":left")}} はまだ実装されていないことに注意してください。</li>
+ <li>擬似クラス {{ cssxref(":-moz-placeholder") }} は、擬似<em>要素</em> {{ cssxref("::-moz-placeholder") }} に置き換えられました ({{ bug("737786") }})。</li>
+</ul>
+
+<h3 id="DOM">DOM</h3>
+
+<ul>
+ <li>{{ domxref("element.getElementsByTagName") }} メソッドは <code>HTMLCollection</code> を返すようになりました ({{bug("799464")}})。</li>
+ <li>{{domxref("File")}} に <code>mozLastModifiedDate</code> プロパティを実装しました ({{bug("793955")}})。</li>
+ <li>{{domxref("File")}} の <code>lastModifiedDate</code> プロパティは、最終更新日が不明である場合に現在の日付を返すようになりました。({{bug("793459")}})</li>
+ <li>{{domxref("CanvasRenderingContext2D")}} に <code>isPointInStroke</code> メソッドを実装しました ({{bug("803124")}})。</li>
+ <li>{{domxref("HTMLCanvasElement")}} の <code>toBlob</code> メソッドを実装しました ({{bug("648610")}})。</li>
+ <li>{{domxref("Node.isSupported")}} メソッドおよび {{domxref("document.implementation", "document.implementation.hasFeature()")}} メソッドは、常に <code>true</code> を返すように変更しました ({{bug("801425")}})。</li>
+ <li><code>document.createElement(null)</code> を呼び出すと、<code>null</code> は文字列化されて <code>document.createElement("null")</code> であるかのように動作します。</li>
+</ul>
+
+<h3 id="XForms">XForms</h3>
+
+<p>Firefox 19 で、<a href="/ja/docs/XForms" title="/ja/docs/XForms">XForms</a> のサポートを<a href="http://www.philipp-wagner.com/blog/2011/07/the-future-of-mozilla-xforms/" title="http://www.philipp-wagner.com/blog/2011/07/the-future-of-mozilla-xforms/"><strong>削除しました</strong></a>。</p>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<div class="note">
+<p><strong>注意:</strong> Firefox 19 での重要な変更点は、<a href="/ja/docs/XPCOM_API_Reference/nsresult" title="nsresult"><code>nsresult</code></a> が強い型付けになったことです。これは戻り値の処理ミスによって発生するバグの発見を容易にしますが、この点を誤って仮定している場合に既存のコードで不具合が発生する可能性があります。</p>
+</div>
+
+<ul>
+ <li><code>getBrowserSelection()</code> が、テキスト入力フィールドで選択されているテキストを返すようになりました。このため、ユーザがパスワードフィールドではないテキスト入力フィールドでテキストを選択したときに、<code>gContextMenu.isTextSelected</code> が <code>true</code> になります ({{bug("565717")}})。</li>
+ <li><a href="/ja/docs/Mozilla/JavaScript_code_modules/Dict.jsm" title="ja/docs/Mozilla/JavaScript_code_modules/Dict.jsm">Dict.jsm</a>: <a href="/ja/docs/Mozilla/JavaScript_code_modules/Dict.jsm#Creating_a_dictionary" title="ja/docs/Mozilla/JavaScript_code_modules/Dict.jsm#Creating_a_dictionary"><code>Dict()</code></a> が JSON 文字列を受け入れるようになりました。<a href="/ja/docs/Mozilla/JavaScript_code_modules/Dict.jsm#toJSON()" title="ja/docs/Mozilla/JavaScript_code_modules/Dict.jsm#toJSON()"><code>Dict.toJSON()</code></a> メソッドが追加され、これは JSON 文字列を返します ({{bug("727967")}})。</li>
+</ul>
+
+<h3 id="Interface_changes" name="Interface_changes">インタフェースの変更点</h3>
+
+<dl>
+ <dt>{{ interface("nsIImgLoadingContent") }}</dt>
+ <dd><code>addObserver()</code> メソッドのパラメータ (aObserver) が {{ interface("imgIDecoderObserver") }} から {{ interface("imgINotificationObserver") }} に替わりました。{{ interface("imgINotificationObserver") }} の <code>notify()</code> メソッドはスクリプト可能ではありませんので、{{ interface("imgITools") }} の <code>createScriptedObserver()</code> を使用しなければなりません。</dd>
+ <dt>{{ interface("nsIChannel") }}</dt>
+ <dd><code>contentLength</code> プロパティの型を <code>long</code> から <code>int64_t</code> に変更しました。</dd>
+</dl>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/19.0/releasenotes/">Firefox 19 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/19/">Firefox Firefox 19 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2013/02/firefox-19-addon-compatibility/">Firefox 19 のアドオン互換性に関わる修正のまとめ</a></li>
+</ul>
+
+<h3 id="Older_versions" name="Older_versions">過去のバージョン</h3>
+
+<p>{{Firefox_for_developers('18')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/19/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/19/site_compatibility/index.html
new file mode 100644
index 0000000000..f1ae772f26
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/19/site_compatibility/index.html
@@ -0,0 +1,12 @@
+---
+title: Firefox 19 サイト互換性情報
+slug: Mozilla/Firefox/Releases/19/Site_compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 19
+ - FxSiteCompat
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/19/Site_compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/19/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/2/index.html b/files/ja/mozilla/firefox/releases/2/index.html
new file mode 100644
index 0000000000..9b02b1ac1b
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/2/index.html
@@ -0,0 +1,100 @@
+---
+title: Firefox 2 for developers
+slug: Mozilla/Firefox/Releases/2
+tags:
+ - Firefox
+ - Firefox 2
+translation_of: Mozilla/Firefox/Releases/2
+---
+<h2 id=".E9.96.8B.E7.99.BA.E8.80.85.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE_Firefox_2_.E3.81.AE.E6.96.B0.E6.A9.9F.E8.83.BD" name=".E9.96.8B.E7.99.BA.E8.80.85.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE_Firefox_2_.E3.81.AE.E6.96.B0.E6.A9.9F.E8.83.BD">開発者のための Firefox 2 の新機能</h2>
+
+<p>Firefox 2 ではたくさんの新機能と能力を導入します。この記事は新機能を取り上げている記事へのリンクを提供します。</p>
+
+
+
+<h3 id=".E3.82.A6.E3.82.A7.E3.83.96.E3.82.B5.E3.82.A4.E3.83.88.E3.81.A8.E3.82.A6.E3.82.A7.E3.83.96.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E9.96.8B.E7.99.BA.E8.80.85.E5.90.91.E3.81.91" name=".E3.82.A6.E3.82.A7.E3.83.96.E3.82.B5.E3.82.A4.E3.83.88.E3.81.A8.E3.82.A6.E3.82.A7.E3.83.96.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E9.96.8B.E7.99.BA.E8.80.85.E5.90.91.E3.81.91">ウェブサイトとウェブアプリケーション開発者向け</h3>
+
+<dl>
+ <dt><a class="external" href="http://wiki.mozilla.org/Microsummaries">マイクロサマリ</a></dt>
+ <dd>マイクロサマリ (Microsummaries)とは Web ページの最も重要な情報の、定期的に更新される要約です。 Web サイトだけではなく第三者の開発者もマイクロサマリを提供することができます。 ユーザーがマイクロサマリの提供されたページをブックマークすると、通常の変化しないタイトルの代わりにマイクロサマリを表示させるかどうか選択できます。</dd>
+ <dt><a href="/ja/docs/Creating_a_Microsummary">マイクロサマリの作成</a></dt>
+ <dd>マイクロサマリジェネレータ (microsummary generator)の作り方のチュートリアル</dd>
+ <dt><a href="/ja/docs/Microsummary_XML_grammar_reference">マイクロサマリ XML 文法リファレンス</a></dt>
+ <dd>マイクロサマリジェネレータで使われる XML 文法のリファレンスガイド</dd>
+ <dt><a href="/ja/docs/Creating_OpenSearch_plugins_for_Firefox">Firefox 用 OpenSearch プラグインの作成</a></dt>
+ <dd>Firefox 2 は OpenSearch 検索エンジンフォーマットをサポートします。</dd>
+ <dt><a href="/ja/docs/Creating_MozSearch_plugins">MozSearch プラグインの作成</a></dt>
+ <dd>Firefox 2 は OpenSearch を元にした検索プラグインフォーマットの MozSearch をサポートしますが、しかし内部利用目的のみのものです。</dd>
+ <dt><a href="/ja/docs/Supporting_search_suggestions_in_search_plugins">検索プラグインでの検索サジェスト機能のサポート</a></dt>
+ <dd>検索バーで入力中にドロップダウンリストが現れる検索サジェスト機能 (search suggestions)をサポートした MozSearch プラグインの作り方。</dd>
+ <dt><a href="/ja/docs/New_in_JavaScript_1.7">New in JavaScript 1.7</a></dt>
+ <dd>Firefox 2 は JavaScript 1.7 をサポートします。JavaScript 1.7 には <code>let</code> や、分割代入 (destructuring assignment)、ジェネレータ (generator)とイテレータ (iterators)、配列内包 (array comprehensions)などの新機能が含まれます。</dd>
+ <dt><a href="/ja/docs/DOM/Storage">WHATWG のクライアントサイドのセッション及び永続ストレージ (DOM ストレージ)</a></dt>
+ <dd>クライアントサイドのセッション及び永続ストレージにより、Web アプリケーションは構造化されたデータをクライアントサイドに保存できるようになります。</dd>
+ <dt><a href="/ja/docs/SVG_in_Firefox">SVG in Firefox</a></dt>
+ <dd>Firefox 2 はスケーラブルベクタグラフィックス (SVG) のサポートを改善します。<code>&lt;textPath&gt;</code> 要素と以前にサポートされていなかったいくつかの属性を実装しました。</dd>
+ <dt><a href="/ja/docs/Controlling_spell_checking_in_HTML_forms">HTML フォームのスペルチェックを制御する</a></dt>
+ <dd>Firefox 2 ではテキストエリアとテキストフィールドでのインラインスペルチェックがサポートされます。この記事は個々のフォーム要素についてスペルチェックを有効、無効にする HTML の書きかたを説明します。</dd>
+</dl>
+
+
+
+<h3 id="XUL_.E3.81.A8.E6.8B.A1.E5.BC.B5.E6.A9.9F.E8.83.BD.E3.81.AE.E9.96.8B.E7.99.BA.E8.80.85.E5.90.91.E3.81.91" name="XUL_.E3.81.A8.E6.8B.A1.E5.BC.B5.E6.A9.9F.E8.83.BD.E3.81.AE.E9.96.8B.E7.99.BA.E8.80.85.E5.90.91.E3.81.91">XUL と拡張機能の開発者向け</h3>
+
+<dl>
+ <dt><a href="/ja/docs/Updating_extensions_for_Firefox_2">拡張機能を Firefox 2 用に更新する方法</a></dt>
+ <dd>既存の拡張機能を Firefox 2 で動くようにする方法を取り上げます。</dd>
+ <dt><a href="/ja/docs/Session_store_API">セッションストア API</a></dt>
+ <dd>Firefox のセッション全体を保存し復帰するための項目を提供します。</dd>
+ <dt><a href="/ja/docs/Feed_content_access_API">フィードコンテンツへアクセスする API</a></dt>
+ <dd>開発者が RSS および Atom フィードをアクセスおよびパースできる API。</dd>
+ <dt><a href="/ja/docs/SAX">SAX サポート</a></dt>
+ <dd>イベントベースの XML パーサ API.</dd>
+ <dt><a href="/ja/docs/Adding_search_engines_from_web_pages">ウェブページから検索エンジンを追加する</a></dt>
+ <dd>JavaScript コードは Firefox に新しい検索プラグインをインストールするように命令することができます。OpenSearch か Sherlock フォーマットのどちらかを利用して検索プラグインを書くことができます。</dd>
+ <dt><a href="/ja/docs/Using_spell_checking_in_XUL">XUL でのスペルチェック</a></dt>
+ <dd>コードから単語のスペルをチェックしたり、スペルの候補リストを得る方法。</dd>
+ <dt><a href="/ja/docs/Adding_phishing_protection_data_providers">フィッシング保護データプロバイダの追加</a></dt>
+ <dd>安全なブラウジングシステムのためにさらなるデータプロバイダを追加することで Firefox のフィッシング保護機能を改善することができます。</dd>
+ <dt><a href="/ja/docs/Adding_feed_readers_to_Firefox">Firefox へのフィードリーダーの追加</a></dt>
+ <dd>Firefox には、Web ベースかアプリケーションベースかに関わらず、フィードリーダーを新しく追加できます。</dd>
+ <dt><a href="/ja/docs/Storage">ストレージ</a></dt>
+ <dd>Firefox 2 は sqlite を基にしたデータベースアーキテクチャである mozStorage を導入します。</dd>
+ <dt><a href="/ja/docs/Theme_changes_in_Firefox_2">Firefox 2 のテーマ変更</a></dt>
+ <dd>既存のテーマを更新して Firefox 2 で動作させるために必要な変更についての説明。</dd>
+ <dt>Textbox の改良 (Firefox 2.0.0.1 以降のみ)</dt>
+ <dd><code>&lt;textbox&gt;</code> に、テキストボックスの値を既定値にリセットする <code>reset()</code> メソッドが追加されました。テキストボックスの既定値を取得および変更するには <code>defaultValue</code> プロパティを使用してください ({{ Bug(312867) }})。</dd>
+ <dd>テキストフィールド内部の <a href="/ja/docs/NsIEditor">nsIEditor</a> を取得するための <code>editor</code> プロパティがサポートされました ({{ Bug(312867) }})。</dd>
+</dl>
+
+
+
+<h2 id=".E5.88.A9.E7.94.A8.E8.80.85.E5.90.91.E3.81.91.E3.81.AE.E6.96.B0.E6.A9.9F.E8.83.BD" name=".E5.88.A9.E7.94.A8.E8.80.85.E5.90.91.E3.81.91.E3.81.AE.E6.96.B0.E6.A9.9F.E8.83.BD">利用者向けの新機能</h2>
+
+<p>Firefox 2.0 は前のバージョンと同じクリーンなインターフェースの強化版に加え、より安全でこれまで以上に便利なオンライン体験のための改良されたセキュリティ機能を提供します。</p>
+
+
+
+<h3 id=".E3.83.A6.E3.83.BC.E3.82.B6.E4.BD.93.E9.A8.93" name=".E3.83.A6.E3.83.BC.E3.82.B6.E4.BD.93.E9.A8.93">ユーザ体験</h3>
+
+<ul>
+ <li><strong>テキストエリアのインラインスペルチェック</strong> はあなたにウェブフォームで自信をもって編集させてくれます。</li>
+ <li><strong>マイクロサマリ</strong> は自動的に更新され、参照するサイトから引っ張てきた情報を表示するブックマークを作る方法を提供します。株式のティッカーやオークションの監視などに最適です。</li>
+ <li><strong>拡張機能マネージャのユーザインタフェース</strong>が改善されました。</li>
+ <li><strong>検索エンジンマネージャ</strong>は検索バーに示されたサーチエンジンを再配列し取り除かせてくれます。</li>
+ <li><strong>タブブラウザの強化</strong> にはそれぞれのタブに閉じるボタンの追加、タブを閉じたときにどのタブに移動するかを Firefox が判断する方法を調整、単純化されたタブの設定が含まれています。</li>
+ <li><strong>検索エンジンの自動検出</strong>は Firefox の検索バー用のプラグインを提供する検索エンジンにプラグインをインストールすることを可能にします。</li>
+ <li><strong>検索サジェスト</strong>は検索エンジンはあなたが検索バーに途中まで入力した語句に基づいてサジェストされた検索語句を提案します。</li>
+</ul>
+
+
+
+<h3 id=".E3.82.BB.E3.82.AD.E3.83.A5.E3.83.AA.E3.83.86.E3.82.A3.E3.81.A8.E3.83.97.E3.83.A9.E3.82.A4.E3.83.90.E3.82.B7.E3.83.BC" name=".E3.82.BB.E3.82.AD.E3.83.A5.E3.83.AA.E3.83.86.E3.82.A3.E3.81.A8.E3.83.97.E3.83.A9.E3.82.A4.E3.83.90.E3.82.B7.E3.83.BC">セキュリティとプライバシー</h3>
+
+<ul>
+ <li><strong>フィッシング保護</strong>はあなたが見ているウェブサイトが偽造されているように見える時にユーザに警告します。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">参考資料</h2>
+
+<div>{{Firefox_for_developers('1.5')}}</div>
diff --git a/files/ja/mozilla/firefox/releases/2/security_changes/index.html b/files/ja/mozilla/firefox/releases/2/security_changes/index.html
new file mode 100644
index 0000000000..656e573ba9
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/2/security_changes/index.html
@@ -0,0 +1,32 @@
+---
+title: Firefox 2 のセキュリティ
+slug: Mozilla/Firefox/Releases/2/Security_changes
+translation_of: Mozilla/Firefox/Releases/2/Security_changes
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p>この記事では、Firefox 2 のセキュリティに影響を与える変更点について説明しています。</p>
+
+<h2 id="Weak_ciphers_disabled_by_default" name="Weak_ciphers_disabled_by_default">Weak ciphers disabled by default</h2>
+
+<p><a href="/en/Firefox_2_for_developers" title="en/Firefox_2_for_developers">Firefox 2</a> disables SSLv2 and the weak "export" cipher suites (those with key lengths less than 64 bits) by default, in favor of SSLv3. This provides improved security.</p>
+
+<p>The preferred encryption methods are <code>TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA</code> and <code>TLS_RSA_WITH_3DES_EDE_CBC_SHA</code>. Some servers refer to these as <code>SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA</code> and <code>SSL_RSA_WITH_3DES_EDE_CBC_SHA</code>.</p>
+
+<p>If SSLv2 support must be enabled, it can be by setting the appropriate <code>security.ssl2.*</code> user preferences to <code>true</code>.</p>
+
+<h2 id="New_features" name="New_features">New features</h2>
+
+<ul>
+ <li>Firefox 2 supports <a class="external" href="http://en.wikipedia.org/wiki/Elliptic_curve_cryptography">Elliptic Curve Cryptography</a> in TLS. Support is presently limited to curves of 256, 384, and 521 (yes, 521) bits.</li>
+ <li>Firefox 2 supports the TLS server name indication extension to facilitate secure connections to servers hosting multiple virtual servers on a single underlying network address, as per <a class="external" href="http://tools.ietf.org/html/rfc3546" title="http://tools.ietf.org/html/rfc3546">RFC 3546</a>.</li>
+ <li>When Firefox 2 makes an <a class="external" href="http://en.wikipedia.org/wiki/Ocsp">OCSP</a> request to validate a web server's certificate, it now uses the proxy that has been configured for normal HTTP traffic.</li>
+</ul>
+
+<h2 id="Determining_what_ciphers_are_available" name="Determining_what_ciphers_are_available">Determining what ciphers are available</h2>
+
+<p>As always, you can find out what ciphers are supported -- and which are enabled or disabled -- by going to about:config and searching on "ssl" or "tls".</p>
+
+<h2 id="Security_improved_for_the_jar_protocol">Security improved for the jar: protocol</h2>
+
+<p>In order to correct a potential security problem when using the <code>jar:</code> protocol, it's now necessary to serve JAR files with the MIME type <code>application/java-archive</code>. See <a href="/en/Security_and_the_jar_protocol" title="en/Security and the jar protocol">Security and the jar protocol</a> for further details.</p>
diff --git a/files/ja/mozilla/firefox/releases/20/index.html b/files/ja/mozilla/firefox/releases/20/index.html
new file mode 100644
index 0000000000..3b2d5f3979
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/20/index.html
@@ -0,0 +1,78 @@
+---
+title: Firefox 20 for developers
+slug: Mozilla/Firefox/Releases/20
+tags:
+ - Firefox
+ - Firefox 20
+translation_of: Mozilla/Firefox/Releases/20
+---
+<p>Gecko 20 を搭載した Firefox 20 は米国時間 2013 年 4 月 2 日にリリースされました。このページでは、開発者に影響する Firefox 20 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("a")}} 要素および {{HTMLElement("area")}} 要素で {{htmlattrxref("download", "a") }} 属性をサポートしました ({{bug("676619")}})。</li>
+ <li><a href="/ja/docs/HTML/Global_attributes" title="/ja/docs/HTML/Global_attributes">グローバル属性</a> <a href="/ja/docs/HTML/Global_attributes#attr-dir" title="/ja/docs/HTML/Global_attributes"><code>dir</code></a> の値 <code>auto </code> を実装しました ({{bug("548206")}})。</li>
+</ul>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>Harmony (EcmaScript 6) の試案に最近追加された、<code><a href="/ja/docs/JavaScript/Reference/Global_Objects/WeakMap" title="/ja/docs/JavaScript/Reference/Global_Objects/WeakMap">Weakmap</a>.prototype.clear()</code> メソッドをサポートしました ({{bug("814562")}})。</li>
+ <li>C 言語スタイルの乗算関数である <code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Math/imul" title="/ja/docs/JavaScript/Reference/Global_Objects/Math/imul">Math.imul()</a></code> メソッドをサポートしました。ただし Harmony (EcmaScript 6) への提案はまだ受け入れられておらず、現在は非標準です ({{bug("808148")}})。</li>
+ <li>Kinetic 3.x と共にドラッグ可能なテキストを使用している Web アプリが、Canvas バックエンドとして Cairo を使用している場合でも動作するようになりました。({{bug("835064")}})</li>
+ <li><a href="/ja/docs/JavaScript/Reference/Statements/for_each...in" title="/ja/docs/JavaScript/Reference/Statements/for_each...in">for each...in</a> 文は非推奨になりましたので、使用するべきではありません。新たに <a href="/ja/docs/JavaScript/Reference/Statements/for...of" title="/ja/docs/JavaScript/Reference/Statements/for...of">for...of</a> 文の使用を検討してください ({{Bug("804834")}})。</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li><a href="/ja/docs/CSS/Using_CSS_flexible_boxes" title="/ja/docs/CSS/Using_CSS_flexible_boxes">CSS Flexbox</a> がデフォルトで、プレリリースビルドのみ (Beta を除く) で利用可能になりました。Release ビルドでは、about:config で設定を変更することで利用できます。</li>
+ <li><a href="https://dvcs.w3.org/hg/FXTF/raw-file/tip/masking/index.html" title="https://dvcs.w3.org/hg/FXTF/raw-file/tip/masking/index.html">CSS Masking specification</a> より、<code>mask-type</code> プロパティをサポートしました ({{bug("793617")}})。</li>
+</ul>
+
+<h3 id="DOM">DOM</h3>
+
+<ul>
+ <li>{{domxref("HTMLMediaElement")}} で <code>playbackRate</code> プロパティを (読み取り・書き込みともに)、ピッチ補正と合わせてサポートしました。ピッチ補正は <code>mozPreservesPitch</code> プロパティを使用して制御できます ({{bug('495040')}})。</li>
+ <li>CSSOM: 新たに {{domxref("CSSGroupingRule")}} および {{domxref("CSSConditionRule")}} をサポートしました ({{bug("814907")}})。</li>
+ <li>CSSOM: {{domxref("CSSRule")}} で、定数 <code>CSSRule.MOZ_KEYFRAME_RULE</code> および <code>CSSRule.MOZ_KEYFRAMES_RULE</code> の接頭辞が外れて <code>CSSRule.KEYFRAME_RULE</code> および <code>CSSRule.KEYFRAMES_RULE</code> になりました。接頭辞つきのものは Web 開発者によるコードの移行を支援するため、一時的に維持されています {{bug("816431")}})。</li>
+ <li>CSSOM: {{domxref("CSSMediaRule")}} に <code>conditionText</code> の値を設定することが可能になりました ({{bug("815021")}})。</li>
+ <li>{{domxref("DOMParser")}} の <code>parseFromStream</code> メソッドおよび <code>parseFromBuffer</code> メソッドは、Web Content から使用できなくなりました ({{bug('816410')}})。</li>
+ <li><code><a href="/ja/docs/XMLSerializer">XMLSerializer</a></code> の <code>serializeToStream</code> メソッドは、Web Content から使用できなくなりました ({{bug('816410')}})。</li>
+ <li><code>TextDecoder</code> インタフェースおよび <code>TextEncoder</code> インタフェースが、Worker で利用可能になりました ({{bug('795542')}})。</li>
+ <li><code>CSS.supports()</code> メソッドをサポートしました ({{bug("779917")}})。</li>
+ <li>UndoManager をサポートしました ({{bug("617532")}})。</li>
+ <li>CSSOM で、{{domxref("CaretPosition")}} を返す {{domxref("document.caretPositionFromPoint")}} メソッドを実装しました。</li>
+ <li>{{domxref("tableRow.insertCell")}} メソッドおよび {{domxref("table.insertRow")}} メソッドの引数 index は、HTML 仕様書のとおり省略可能になりました。</li>
+</ul>
+
+<h3 id="MathML">MathML</h3>
+
+<ul>
+ <li>MathML の記述者がドキュメントの "不正なマークアップ" エラーをデバッグすることを支援するため、MathML のパースエラー (子要素が過剰 / 不足など) や、非推奨の属性や誤った属性値の警告を<a href="/ja/docs/Error_Console" title="/ja/docs/Error_Console">エラーコンソール</a>に表示するようになりました。</li>
+ <li><code>scriptminsize</code> 属性が単位のない値やパーセント値を受け入れるようになりました。これらは、既定値 ("8pt") に対する倍数として解釈されます。</li>
+ <li>単位のない値は、<code>mathsize</code> 属性および <code>fontsize</code> 属性も受け入れます。これらの値は既定値に掛けられます。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<ul>
+ <li><a href="/ja/docs/E4X" title="/ja/docs/E4X">ECMAScript for XML (E4X)</a> はすべての chrome および content のスクリプトで無効になりました。content では先に Firefox 17 で無効にしており、Firefox 21 では完全に削除されます。代わりに DOMParser/DOMSerializer または非ネイティブの JXON アルゴリズムを使用してください。</li>
+ <li><code>nsIDOMParserJS</code> インタフェースを削除しました ({{bug('816410')}})。代替として <code><a href="/ja/docs/nsIDOMParser" title="/ja/docs/nsIDOMParser">nsIDOMParser</a></code> をご覧ください。</li>
+ <li>Content Preferences: {{Interface("nsIContentPrefService")}} インタフェースは非推奨になり、非同期の {{Interface("nsIContentPrefService2")}} storage API を実装しました。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/20.0/releasenotes/">Firefox 20 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/20/">Firefox 20 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2013/03/firefox-20-addon-compatibility/">Firefox 20 アドオン互換性情報</a></li>
+</ul>
+
+<h3 id="Older_versions" name="Older_versions">過去のバージョン</h3>
+
+<p>{{Firefox_for_developers('19')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/20/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/20/site_compatibility/index.html
new file mode 100644
index 0000000000..bea1dcb249
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/20/site_compatibility/index.html
@@ -0,0 +1,12 @@
+---
+title: Firefox 20 サイト互換性情報
+slug: Mozilla/Firefox/Releases/20/Site_compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 20
+ - FxSiteCompat
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/20/Site_compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/20/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/21/index.html b/files/ja/mozilla/firefox/releases/21/index.html
new file mode 100644
index 0000000000..ef849c8009
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/21/index.html
@@ -0,0 +1,139 @@
+---
+title: Firefox 21 for developers
+slug: Mozilla/Firefox/Releases/21
+tags:
+ - Firefox
+ - Firefox 21
+translation_of: Mozilla/Firefox/Releases/21
+---
+<p>Gecko 21 を搭載した Firefox 21 は米国時間 2013 年 5 月 14 日にリリースされました。このページでは、開発者に影響する Firefox 20 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("style")}} 要素に {{htmlattrxref("scoped", "style")}} 属性を追加しました。これは、ドキュメントの他の部分から隔離されたスタイルを含めることを可能にします。このようなスタイルは、Firefox 20 で導入した {{cssxref(":scope")}} CSS 擬似要素を使用して選択できます ({{bug("508725")}})。</li>
+ <li>新たな HTML 要素 {{HTMLElement("main")}} を実装しました ({{bug("820508")}})。</li>
+</ul>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>旧式の JavaScript 拡張である <a href="/ja/docs/E4X" title="/ja/docs/E4X">E4X</a> を削除しました。Gecko しか実装せず、有意な牽引力は得られませんでした ({{bug("788293")}})。</li>
+ <li><a href="https://developer.mozilla.org/ja/docs/JavaScript/Reference/Global_Objects/parseInt" title="JavaScript/Reference/Global_Objects/parseInt">parseInt</a> は、先頭が "0" の文字列を 8 進数として扱わないようになりました ({{bug("786135")}})。</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("user-select", "-moz-user-select")}} の値 <code>none</code> は、値 <code>-moz-none</code> と同じ動作になりました。Gecko が WebKit (Chrome, Safari)、Presto (Opera)、Trident (Internet Explorer) に合わせています ({{bug("816298")}})。</li>
+ <li>XHTML コンテンツで {{cssxref("hyphens", "-moz-hyphens")}} の値 <code>auto</code> は、言語が明示的に宣言されていないときに間違ったハイフネーションルールを適用していました。これは ({{bug("702121")}}) で修正されました。</li>
+ <li>CSS {{cssxref("-moz-orient")}} プロパティに値 <code>auto</code> を追加しました。値 <code>auto</code> は {{HTMLElement("meter")}} や {{HTMLElement("progress")}} に適用されたときに、<code>horizontal</code> と同等です ({{bug("835883")}})。</li>
+</ul>
+
+<h3 id="DOM">DOM</h3>
+
+<ul>
+ <li>{{domxref("window.location")}} に <code>origin</code> プロパティを追加しました ({{bug("828261")}})。</li>
+ <li><code>&lt;input type="time"&gt;</code> 向けに <code>valueAsDate</code> メソッドと <code>valueAsNumber</code> メソッドを追加しました ({{bug("781570")}})。</li>
+ <li><code>&lt;input type="time"&gt;</code> に <code>min</code> 属性と <code>max</code> 属性が適用されるようになりました ({{bug("781572")}})。</li>
+ <li>ボリュームコントロールのために、新たな keyCode をサポートしました ({{bug("674739")}})。</li>
+ <li>AS/400 など昔のキーボードのレイアウト向けに、新たな keyCode を Windows および Linux でサポートしました ({{bug("833719")}})。</li>
+ <li>Windows で、OEM 特有のキー向けのさまざまな keyCode 値を再びサポートしました ({{bug("833719")}})。</li>
+ <li>関数 <a href="/ja/docs/DOM/window.crypto.getRandomValues" title="/ja/docs/DOM/window.crypto.getRandomValues"><code>window.crypto.getRandomValues</code></a> を実装しました ({{bug("440046")}})。</li>
+</ul>
+
+<h3 id="SVG">SVG</h3>
+
+<ul>
+ <li>{{cssxref("paint-order")}} プロパティを実装しました ({{bug("828805")}})。</li>
+</ul>
+
+<h3 id="Networking">Networking</h3>
+
+<ul>
+ <li>CSP 実装を CSP 1.0 仕様 (勧告候補になりました) に準拠させるよう更新する作業を続けています:
+ <ul>
+ <li>仕様書に準拠した <code>Content-Security-Policy</code> HTTP ヘッダを (実験的な <code>X-Content-Security-Policy</code> に加えて) サポートしました ({{bug("783049")}}。<strong>注意</strong>: 新たなヘッダのパッチは Firefox 21 で投入しましたが、ビルド時は無効にしています ({{bug("842657")}})。</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="Worker">Worker</h3>
+
+<ul>
+ <li>{{domxref("window.URL.createObjectURL", "URL.createObjectURL")}} 関数と {{domxref("window.URL.revokeObjectURL", "URL.revokeObjectURL")}} 関数が、<a href="/ja/docs/DOM/Worker/Functions_available_to_workers" title="/ja/docs/DOM/Worker/Functions_available_to_workers">Worker で利用可能な関数</a>に加わりました。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<ul>
+ <li>FUEL アプリケーションは Livemark Service を利用できません ({{bug("834492")}})。Livemark Service は非推奨になり段階的に廃止され、新たな非同期インターフェイスを採用します。</li>
+ <li><code>resource:///modules/</code> と <code>resource://gre/modules/</code> は異なるものになりました ({{bug("755724")}})。これは、metro 版の Firefox における作業のために行った変更です。<code>resource:///modules/</code> を使用してモジュールを読み込んでいる場合は、そうではなく <code>resource://gre/modules/</code> を使用したいのではないかを確認するべきです。また、一部のモジュールが Firefox から Toolkit に移動したことに注意してください ({{bug("840287")}} および {{bug("811548")}} で、<code>NewTabUtils.jsm</code> および thumbnail モジュールがそれぞれ移動しました)。</li>
+ <li>Add-on SDK を Firefox に内蔵しました。({{bug("731779")}})</li>
+ <li>多くの非推奨 API を参照していた古い API を削除しました:
+ <ul>
+ <li><code>mozIAsyncFavicons</code> で置き換え:
+ <ul>
+ <li><code>nsIFaviconService::setFaviconUrlForPage</code></li>
+ <li><code>nsIFaviconService::setFaviconData</code></li>
+ <li><code>nsIFaviconService::getFaviconData</code></li>
+ <li><code>nsIFaviconService::getFaviconForPage</code></li>
+ <li><code>nsIFaviconService::setAndLoadFaviconForPage</code></li>
+ <li><code>nsIFaviconService::getFaviconImageForPage</code></li>
+ <li><code>nsIFaviconService::getFaviconDataAsDataURL</code></li>
+ </ul>
+ </li>
+ <li><code>mozIAsyncLivemarks</code> で置き換え:
+ <ul>
+ <li><code>nsILivemarkService::*</code></li>
+ <li><code>PlacesUtils.itemIsLivemark</code></li>
+ <li><code>PlacesUtils.nodeIsLivemarkContainer</code></li>
+ <li><code>PlacesUtils.nodeIsLivemarkItem</code></li>
+ </ul>
+ </li>
+ <li>第 3 引数のみ削除:
+ <ul>
+ <li><code>PlacesUIUtils.showBookmarkDialog</code></li>
+ </ul>
+ </li>
+ <li>Places でこれ以上の実装はありませんので、代わりに <code>mozIAsyncHistory</code> を使用してください:
+ <ul>
+ <li><code>nsIGlobalHistory2::addURI</code></li>
+ <li><code>nsIGlobalHistory2::isVisited</code></li>
+ <li><code>nsIGlobalHistory2::setPageTitle</code></li>
+ </ul>
+ </li>
+ <li>不要になりましたので、<code>onDeleteURI</code> または <code>onItemRemoved</code> を使用してください:
+ <ul>
+ <li><code>nsINavHistoryObserver::OnBeforeDeleteURI</code></li>
+ <li><code>nsINavBookmarkObserver::OnBeforeItemRemoved</code></li>
+ </ul>
+ </li>
+ <li>正しく実装されていません:
+ <ul>
+ <li><code>nsINavHistoryFullVisitResultNode</code></li>
+ </ul>
+ </li>
+ <li>非推奨であり、代わりに <code>mozIAsyncHistory::updatePlaces</code> を使用してください:
+ <ul>
+ <li><code>nsINavHistoryService::AddVisit</code></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>壊れやすいハックを行うことなく HTTP チャネルのリダイレクトを可能にする、nsIHttpChannel.redirectTo を追加しました。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/21.0/releasenotes/">Firefox 21 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/21/">Firefox 21 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2013/04/firefox-21-addon-compatibility/">Firefox 21 アドオン互換性情報</a></li>
+</ul>
+
+<h3 id="Older_versions" name="Older_versions">過去のバージョン</h3>
+
+<p>{{Firefox_for_developers('20')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/21/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/21/site_compatibility/index.html
new file mode 100644
index 0000000000..d2dd5f3718
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/21/site_compatibility/index.html
@@ -0,0 +1,12 @@
+---
+title: Firefox 21 サイト互換性情報
+slug: Mozilla/Firefox/Releases/21/Site_compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 21
+ - FxSiteCompat
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/21/Site_compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/21/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/22/index.html b/files/ja/mozilla/firefox/releases/22/index.html
new file mode 100644
index 0000000000..224dbe5cc4
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/22/index.html
@@ -0,0 +1,84 @@
+---
+title: Firefox 22 for developers
+slug: Mozilla/Firefox/Releases/22
+tags:
+ - Firefox
+ - Firefox 22
+translation_of: Mozilla/Firefox/Releases/22
+---
+<p>Gecko 22 を搭載した Firefox 22 は米国時間 2013 年 6 月 25 日にリリースされました。このページでは、開発者に影響する Firefox 22 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li>HTML5 の {{HTMLElement("data")}} 要素を実装しました ({{bug(839371)}})。</li>
+ <li>{{HTMLElement("input")}} 要素の <code>range</code> ステート (<code>&lt;input type="range"&gt;</code>) を実装しました。設定 <code>dom.experimental_forms_range</code> で制御されており、現在は Nightly および Aurora チャンネルのみ既定で有効にしています ({{bug(841948)}}).</li>
+ <li>Web component 仕様の一部である {{HTMLElement("template")}} 要素をサポートしました ({{bug(818976)}})。</li>
+</ul>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><a href="http://asmjs.org/spec/latest/" title="http://asmjs.org/spec/latest/">Asm.js</a> の最適化が有効になり、パフォーマンス向上のために C/C++ アプリケーションを JavaScript のサブセットにコンパイルすることが可能になります。</li>
+ <li>ES6 の <a href="/ja/docs/JavaScript/Reference/arrow_functions">Arrow Function</a> 構文を実装しました ({{bug(846406)}})。</li>
+ <li>新しい <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/is">Object.is</a> 関数が追加されました ({{bug(839979)}})。</li>
+</ul>
+
+<h3 id="DOM">DOM</h3>
+
+<ul>
+ <li><code>XMLHttpRequest</code> の <code>multipart</code> プロパティおよび <code>XMLHttpRequest</code> の <code>multipart/x-mixed-replace</code> レスポンスのサポートを削除しました。これは Gecko だけの機能であり、標準化されませんでした。<a href="/ja/docs/Server-sent_events" title="/ja/docs/Server-sent_events">Server-Sent Events</a>、<a href="/ja/docs/WebSockets" title="/ja/docs/WebSockets">Web Sockets</a>、あるいは progress イベントをもとに <code>responseText</code> を調べることを、代わりに使用できます。</li>
+ <li><a href="http://notifications.spec.whatwg.org/" title="http://notifications.spec.whatwg.org/">Web Notifications</a> をサポートしました ({{bug(782211)}})。</li>
+ <li>{{domxref("XMLHttpRequest/FormData", "FormData")}} の <code>append</code> メソッドが、省略可能な第 3 引数 <code>filename</code> を受け入れるようになりました ({{bug(690659)}})。</li>
+ <li>{{domxref("Node.isSupported")}} を削除しました ({{bug(801562)}})。</li>
+ <li>{{domxref("Node.setUserData")}} および {{domxref("Node.getUserData")}} を web content 向けには削除、chrome content 向けには非推奨としました ({{bug(842372)}})。</li>
+ <li>仕様書で求められたため、{{domxref("Element.attributes")}} プロパティを {{domxref("Node")}} から移転しました ({{bug("844134")}})。</li>
+ <li>{{domxref("DeviceLightEvent", "Ambient Light Events")}} の Mac OS X バックエンドを実装しました。</li>
+ <li>ローカルネームが {{HTMLElement("bgsound")}}、{{HTMLElement("multicol")}} および {{HTMLElement("image")}} である HTML ネームスペースの要素は、{{domxref("HTMLSpanElement")}} インターフェイスを実装しません。{{HTMLElement("bgsound")}} および {{HTMLElement("multicol")}} は {{domxref("HTMLUnknownElement")}} を、{{HTMLElement("image")}} は {{domxref("HTMLElement")}} を実装します。</li>
+ <li>{{ domxref("NodeIterator.detach") }} は何も行わないようになりました ({{bug("823549")}})。</li>
+ <li>{{domxref("BlobEvent")}} インターフェイスを実装しました ({{bug("834165")}})。</li>
+ <li>それぞれ {{domxref("HTMLMediaElement.crossOrigin")}} および <code>HTMLInputElement.inputMode</code> の仕様に合致させるため、<code>HTMLMediaElement.crossorigin</code> プロパティおよび <code>HTMLInputElement.inputmode</code> プロパティを削除しました ({{bug("847370")}} および {{bug("850346")}})。</li>
+ <li>WebRTC: Media Stream API および Peer Connection API をデフォルトでサポートします。</li>
+ <li>Web Components: {{domxref("Document.register")}} メソッドを実装しました ({{bug("783129")}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li><a href="/ja/docs/CSS/Tutorials/Using_CSS_flexible_boxes" title="/ja/docs/CSS/Tutorials/Using_CSS_flexible_boxes">CSS Flexbox layout</a> をデフォルトで有効にしました ({{bug("841876")}})。</li>
+ <li>仕様書の変更に従って、{{cssxref("min-width")}} および {{cssxref("min-height")}} の初期値を flexbox アイテムでも <code>0</code> に戻しました ({{bug("848539")}})。</li>
+ <li>CSS 条件文 ({{cssxref("@supports")}} および {{domxref("CSS.supports")}}) をデフォルトで有効にしました ({{bug("855455")}})。</li>
+ <li>{{cssxref("background")}} 短縮プロパティで {{cssxref("background-clip")}} および {{cssxref("background-origin")}} プロパティをサポートしました ({{bug("570896")}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<ul>
+ <li>{{interface('nsITreeView')}} のメソッド {{ifmethod('nsITreeView','getCellProperties')}}、{{ifmethod('nsITreeView','getColumnProperties')}} および {{ifmethod('nsITreeView','getRowProperties')}} から、引数 <code>properties</code> を削除しました。これらのメソッドは空白で区切られたプロパティ名の文字列を返すようになります。({{bug('407956')}})</li>
+ <li>{{ifmethod('inIDOMUtils', 'getCSSPropertyNames')}} メソッドを実装しました。これはサポートしているすべての <a href="/ja/docs/CSS/CSS_Reference" title="CSS/CSS_Reference">CSS プロパティ</a>名を返します。</li>
+ <li>さらなる変更点については <a href="https://blog.mozilla.org/addons/2013/06/03/compatibility-for-firefox-22/" title="https://blog.mozilla.org/addons/2013/06/03/compatibility-for-firefox-22/">こちら</a> (<a href="https://dev.mozilla.jp/2013/06/firefox-22-addon-compatibility/" title="https://dev.mozilla.jp/2013/06/firefox-22-addon-compatibility/">日本語訳</a>) をご覧ください。</li>
+</ul>
+
+<h3 id="Firefox_開発ツール">Firefox 開発ツール</h3>
+
+<ul>
+ <li><a href="https://hacks.mozilla.org/2013/04/developer-tools-update-firefox-22/" title="https://hacks.mozilla.org/2013/04/developer-tools-update-firefox-22/">フォントインスペクタ</a>が、コンピュータ内のどのフォントがページに適用されているかを表示します。</li>
+ <li>ハイライト表示によるフィードバックで、ページのどの領域がいつ再描画されたかを示します。</li>
+ <li>開発ツールをブラウザの下側だけでなく、右側にもドッキング可能になりました。</li>
+ <li>開発ツール内の一部ペインを <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=875727" title="https://bugzilla.mozilla.org/show_bug.cgi?id=875727">XUL から HTML</a> に切り替えました。例えば CSS ルールビューアは、<span class="comment-copy"><code>cssruleview.xul</code></span> ではなく chrome://browser/content/devtools/cssruleview.xhtml になりました。load listener を読み込んでこれらの HTML ドキュメントを変更するには、ペインの機能を拡張するために直接オーバーレイを追加するのではなく、外側の XUL ドキュメントにオーバーレイやスクリプトを追加します。</li>
+ <li>デバッガで、スタックトレースが上側にパンくずリストのように表示されるようになりました。またスクリプト一覧がパネルの左側に表示されるようになりました。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/22.0/releasenotes/">Firefox 22 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/22/">Firefox 22 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2013/06/firefox-22-addon-compatibility/">Firefox 22 アドオン互換性情報</a></li>
+</ul>
+
+<h3 id="Versions" name="Versions">バージョン</h3>
+
+<p>{{Firefox_for_developers('21')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/22/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/22/site_compatibility/index.html
new file mode 100644
index 0000000000..844077de07
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/22/site_compatibility/index.html
@@ -0,0 +1,12 @@
+---
+title: Firefox 22 サイト互換性情報
+slug: Mozilla/Firefox/Releases/22/Site_compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 22
+ - FxSiteCompat
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/22/Site_compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/22/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/23/index.html b/files/ja/mozilla/firefox/releases/23/index.html
new file mode 100644
index 0000000000..cd832325ac
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/23/index.html
@@ -0,0 +1,89 @@
+---
+title: Firefox 23 for developers
+slug: Mozilla/Firefox/Releases/23
+tags:
+ - Firefox
+ - Firefox 23
+translation_of: Mozilla/Firefox/Releases/23
+---
+<p>Gecko 23 を搭載した Firefox 23 は米国時間 2013 年 8 月 6 日にリリースされました。このページでは、開発者に影響する Firefox 23 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<ul>
+ <li>Mixed content のブロック。Firefox はセキュアな (https) ページでセキュアでない (http) リソースを読み込みません ({{bug(834836)}})。</li>
+ <li><a href="/ja/docs/Security/CSP" title="Security/CSP">CSP</a> 1.0 ポリシーの標準的な構文を実装して、デフォルトで施行します。</li>
+</ul>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>開発者ツールにネットワークパネルを追加しました。これは、Web コンソールの "ネットワーク" ビューより詳細なツールです。</li>
+ <li>Web コンソールを "コンソール" に改名して、セキュリティのエラーや警告をフィルタリングする設定を追加しました。</li>
+ <li>ツールボックスの新たな設定項目によって機能の無効化、Light/Dark テーマの切り替え、Chrome/Remote デバッグの有効化が可能になりました。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("blink")}} 要素のサポートを完全に廃止しました。<code>&lt;blink&gt;</code> タグは {{domxref("HTMLUnknownElement")}} インターフェイスを実装します ({{bug(857820)}})。</li>
+ <li>{{HTMLElement("input")}} 要素の <code>range</code> ステート (<code>&lt;input type="range"&gt;</code>) を、デフォルトで有効にしました ({{bug(841950)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty" title="Web/JavaScript/Reference/Global_Objects/Object/defineProperty"><code>Object.defineProperty</code></a> メソッドが、<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array" title="Web/JavaScript/Reference/Global_Objects/Array"><code>Array</code></a> オブジェクトの <code>length</code> プロパティの再定義に使用できるようになりました。</li>
+ <li>ウィンドウの移動やコンテキストメニューの置き換えを含む、JavaScript を無効化する選択項目を削除しました。about:config で設定項目 "javascript.enabled" をダブルクリックすることで、JavaScript を無効化できます。</li>
+</ul>
+
+<h3 id="DOM" name="DOM">DOM</h3>
+
+<ul>
+ <li>D3E の <a href="/ja/docs/DOM/KeyboardEvent#Key_names_and_Char_values"><code>KeyboardEvent.key</code></a> を、文字入力可能ではないキーについてのみサポートしました ({{bug(842927)}})。</li>
+ <li>{{domxref("DOMImplementation.createHTMLDocument")}} の引数 <code>title</code> は、更新された DOM 仕様書のとおり省略可能になりました。</li>
+ <li>サイドバーパネルを追加する機能 (<code>window.sidebar.addPanel</code>) を削除しました ({{bug(691647)}})。</li>
+ <li>接頭辞なしの {{domxref("window.requestAnimationFrame")}}、{{domxref("window.cancelAnimationFrame")}} メソッドが追加されました ({{bug(704063)}})。</li>
+ <li>接頭辞のない版で {{domxref("Window.requestAnimationFrame")}} のコールバックは、詳細度が低い {{domxref("DOMTimeStamp")}} に代わり {{domxref("DOMHighResTimeStamp")}} を引数として受け取ります ({{bug(753453)}})。</li>
+ <li>{{domxref("window.alert")}} および {{domxref("window.confirm")}} のテキスト引数が省略可能になりました ({{bug(861605)}})。</li>
+ <li>仕様書から削除された {{domxref("HTMLMediaElement.initialTime")}} プロパティのサポートを廃止しました ({{bug(742537)}})。</li>
+ <li>{{domxref("AnimationEvent.AnimationEvent", "AnimationEvent()")}} コンストラクタを追加しました ({{bug(848293)}})。</li>
+ <li>{{domxref("AnimationEvent.pseudoElement")}} プロパティを実装しました ({{bug(848293)}})。</li>
+ <li>{{domxref("TransitionEvent.TransitionEvent", "TransitionEvent()")}} コンストラクタを追加しました ({{bug(848291)}})。</li>
+ <li>{{domxref("TransitionEvent.pseudoElement")}} プロパティを実装しました ({{bug(848291)}})。</li>
+ <li>非標準の {{domxref("TransitionEvent.initTransitionEvent()")}} および {{domxref("AnimationEvent.initAnimationEvent()")}} を削除しました ({{bug(868751)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/CSS/text-decoration" title="CSS/text-decoration">text-decoration</a>: blink;</code> の点滅効果を廃止しましたが、値そのものは現在も有効です ({{bug(857820)}})。</li>
+ <li>フロー内の {{cssxref("::after")}} 疑似要素や {{cssxref("::before")}} 疑似要素は、flex アイテムになりました ({{bug(867454)}})。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<ul>
+ <li>{{MathMLElement("mspace")}} 要素でマイナスの幅を実装しました ({{bug(717546)}})。</li>
+ <li>{{MathMLElement("semantics")}} 要素は MathML3 仕様で述べられているとおりに、表示する子要素を決めるようになりました。</li>
+</ul>
+
+<h2 id="Changes_for_Addon_and_Mozilla_Developers" name="Changes_for_Addon_and_Mozilla_Developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="Firefox_Developer_Tools" name="Firefox_Developer_Tools">Firefox 開発者ツール</h3>
+
+<p>chrome://browser/content/debugger.xul にオーバーレイするアドオンは、chrome://browser/content/devtools/debugger.xul. へのオーバーレイが必要になりました。互換性のため、chrome.manifest でこれら両方への参照を追加してもさしつかえありません。</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/23.0/releasenotes/">Firefox 23 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/23/">Firefox 23 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2013/07/firefox-23-addon-compatibility/" title="https://dev.mozilla.jp/2013/07/firefox-23-addon-compatibility/">Firefox 23 アドオン互換性情報</a></li>
+</ul>
+
+<h3 id="Older_versions" name="Older_versions">過去のバージョン</h3>
+
+<p>{{Firefox_for_developers('22')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/23/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/23/site_compatibility/index.html
new file mode 100644
index 0000000000..2f17fba9c9
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/23/site_compatibility/index.html
@@ -0,0 +1,12 @@
+---
+title: Firefox 23 サイト互換性情報
+slug: Mozilla/Firefox/Releases/23/Site_compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 23
+ - FxSiteCompat
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/23/Site_compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/23/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/24/index.html b/files/ja/mozilla/firefox/releases/24/index.html
new file mode 100644
index 0000000000..cd56ca3bfa
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/24/index.html
@@ -0,0 +1,74 @@
+---
+title: Firefox 24 for developers
+slug: Mozilla/Firefox/Releases/24
+tags:
+ - Firefox
+ - Firefox 24
+ - NeedsContent
+translation_of: Mozilla/Firefox/Releases/24
+---
+<p>Gecko 24 を搭載した Firefox 24 は米国時間 2013 年 9 月 17 日にリリースされました。このページでは、開発者に影響する Firefox 24 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("cursor")}} プロパティの値のうち <code>-moz-zoom-in</code> と <code>-moz-zoom-out</code> の 2 つは、接頭辞を外して <code>zoom-in</code> および <code>zoom-out</code> になりました ({{bug("772153")}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li><code>media.webvtt.enabled</code> 設定のもとに、{{HTMLElement("track")}} 要素を実装しました ({{bug(833385)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><code>"use strict"</code> により明示的に要求される場合を除き、<a href="/ja/docs/Web/JavaScript/Reference/arrow_functions" title="Web/JavaScript/Reference/arrow_functions">Arrow functions</a> は自動的に strict モードにならないようにしました。({{bug(852762)}})</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/String/repeat" title="Web/JavaScript/Reference/Global_Objects/String/repeat"><code>String.prototype.repeat</code></a> JS メソッドを実装しました ({{bug(815431)}})。</li>
+</ul>
+
+<h3 id="DOM" name="DOM">DOM</h3>
+
+<ul>
+ <li>{{domxref("Range.Range", "Range()")}} コンストラクタをサポートしました ({{bug(868999)}})。</li>
+ <li>{{domxref("Text.Text", "Text()")}} コンストラクタをサポートしました ({{bug(869000)}})。</li>
+ <li>{{domxref("Comment.Comment", "Comment()")}} コンストラクタをサポートしました ({{bug(869006)}})。</li>
+ <li>{{domxref("DocumentFragment.DocumentFragment", "DocumentFragment()")}} コンストラクタをサポートしました ({{bug(869002)}})。</li>
+ <li>{{domxref("FocusEvent")}} インターフェイスを実装しました ({{bug(855741)}})。</li>
+ <li>{{domxref("ChildNode.remove()")}} メソッドをサポートしました ({{bug(856629)}})。</li>
+ <li>{{HTMLElement("track")}} 要素に関するインターフェイスである {{domxref("HTMLTrackElement")}}、{{domxref("TextTrack")}}、{{domxref("TextTrackCue")}}、{{domxref("TextTrackList")}}、{{domxref("TextTrackCueList")}} を、既定値が <code>false</code> である設定 <code>media.webvtt.enabled</code> のもとに実装しました ({{bug(833385)}})。</li>
+ <li>{{domxref("Gamepad")}} インターフェイスと {{domxref("Navigator.getGamepads")}} を、既定値が <code>false</code> である設定 <code>dom.gamepad.enabled</code> のもとに実装しました ({{bug(690935)}})。</li>
+ <li>デスクトップ版 Firefox に限り、<code>HTMLCanvasElement.getContext()</code> の値として <code>experimental-webgl</code> に加えて <code>webgl</code> をとれるようになりました ({{bug(870232)}})。</li>
+ <li>{{domxref("HTMLMediaElement")}} の非標準メソッド <code>mozLoadFrom()</code> を削除しました ({{bug(877135)}})。</li>
+</ul>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>ネットワークインスペクタで、コンテンツタイプ (CSS/画像/フォント など) による絞り込みと、絞り込み結果についてサイズや読み込み時間を確認できるようになりました。</li>
+ <li>左側にある開発ツールのオプションパネルで、JavaScript を一時的に無効化/有効化できるようになりました。</li>
+ <li>拡張機能の開発者は chrome レベルのスクリプトに対して、新たに<a href="http://www.robodesign.ro/mihai/blog/the-browser-console-is-replacing-the-error-console" title="http://www.robodesign.ro/mihai/blog/the-browser-console-is-replacing-the-error-console">ブラウザコンソール</a>を使用できるようになりました (エラーコンソールを置き換えます)。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<ul>
+ <li>例えば {{MathMLElement("math")}} 要素や {{MathMLElement("mrow")}} 要素で、式の書字方向を制御する <code>dir</code> 属性が、{{cssxref("direction")}} CSS プロパティを使用することと同等になりました。</li>
+ <li>等号 ("=") を<a href="/ja/docs/Web/MathML/Element/mo#attr-stretchy">引き延ばすことが可能</a>になりました。</li>
+ <li>{{MathMLElement("menclose")}} 要素で、<code>notation</code> 属性に値 "<code>updiagonalarrow</code>" を追加しました。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/24.0/releasenotes/">Firefox 24 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/24/">Firefox 24 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2013/09/firefox-24-addon-compatibility/">Firefox 24 アドオン互換性情報</a></li>
+</ul>
+
+<h3 id="Older_versions" name="Older_versions">過去のバージョン</h3>
+
+<p>{{Firefox_for_developers('23')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/24/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/24/site_compatibility/index.html
new file mode 100644
index 0000000000..9623f291d7
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/24/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 24 サイト互換性情報
+slug: Mozilla/Firefox/Releases/24/Site_compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 24
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/24/Site_compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/24/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/25/index.html b/files/ja/mozilla/firefox/releases/25/index.html
new file mode 100644
index 0000000000..fc657452d3
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/25/index.html
@@ -0,0 +1,87 @@
+---
+title: Firefox 25 for developers
+slug: Mozilla/Firefox/Releases/25
+tags:
+ - Firefox
+ - Firefox 25
+translation_of: Mozilla/Firefox/Releases/25
+---
+<p>Gecko 25 を搭載した Firefox 25 は米国時間 2013 年 10 月 29 日にリリースされました。このページでは、開発者に影響する Firefox 25 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="New_in_Firefox_DevTools" name="New_in_Firefox_DevTools">Firefox 開発ツールの新機能</h3>
+
+<ul>
+ <li>インスペクタに、CSS の名称や値のオートコンプリート機能を追加しました。</li>
+ <li>ブレークポイントがあなたのデバッグに関与しないライブラリ内で停止しないようにするため、デバッガで "ブラックボックス" スクリプトファイルが使用可能になりました。</li>
+ <li>プロファイラで、プロファイリング結果の保存やインポートが可能になりました。Firefox 開発ツールのオプションに、"Gecko プラットフォームのデータを表示" が加わりました。</li>
+ <li>ネットワークパネルに、URL コマンドのコピーや再送信を行うコンテキストメニューを搭載しました。</li>
+ <li>多数の内部変更により、開発ツールに手を加えるアドオンで書き換えが必要になるかもしれません。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("background-attachment")}} CSS プロパティの値として、キーワード <code>local</code> をサポートしました ({{bug("483446")}})。</li>
+ <li>オペレーティングシステムのバージョンを検出するための、非標準で Mozilla だけのメディアクエリをサポートしました: <code><a href="/ja/docs/Web/Guide/CSS/Media_queries#-moz-os-version" title="Web/Guide/CSS/Media_queries#-moz-os-version">-moz-os-version</a></code> ({{bug("810399")}})。現在このプロパティは、Windows のみで実装されています。</li>
+ <li>{{cssxref("-moz-osx-font-smoothing")}} CSS プロパティを実装しました ({{bug("857142")}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("iframe")}} の {{htmlattrxref("srcdoc", "iframe")}} 属性をサポートしました。これは、{{HTMLElement("iframe")}} のコンテンツをインラインで記載できる属性です ({{bug("802895")}})。</li>
+ <li><code>"image/jpeg"</code> タイプとともに使用するとき <code>HTMLCanvasElement.toBlob</code> メソッドは、画像の品質を指定する第 3 引数を受け入れます ({{bug("891884")}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla" title="Web/JavaScript/ECMAScript_6_support_in_Mozilla">EcmaScript 6</a> (Harmony) の実装が続いています!</p>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array" title="Web/JavaScript/Reference/Global_Objects/Array">Array</a></code> に {{jsxref("Array.of()")}} メソッドを実装しました ({{bug("866849")}})。</li>
+ <li>{{jsxref("Array.prototype.find()")}} メソッドおよび {{jsxref("Array.prototype.findIndex()")}} メソッドをサポートしました ({{bug("885553")}})。</li>
+ <li>{{jsxref("Global_Objects/Number/parseInt", "Number.parseInt()")}} および {{jsxref("Global_Objects/Number/parseFloat", "Number.parseFloat()")}} メソッドを実装しました ({{bug("886949")}})。</li>
+ <li><span id="summary_alias_container"><span id="short_desc_nonedit_display"><code>Map.prototype.forEach()</code> メソッドおよび <code>Set.prototype.forEach()</code> メソッドを実装しました ({{bug("866847")}})。</span></span></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Math" title="Web/JavaScript/Reference/Global_Objects/Math"><code>Math</code></a> へ新たに、数学的なメソッドを追加しました: <code>Math.log10()</code>, <code>Math.log2()</code>, <code>Math.log1p()</code>, <code>Math.expm1()</code>, <code>Math.cosh()</code>, <code>Math.sinh()</code>, <code>Math.tanh()</code>, <code>Math.acosh()</code>, <code>Math.asinh()</code>, <code>Math.atanh()</code>, <code>Math.trunc()</code>, <code>Math.sign()</code> and <code>Math.cbrt()</code> ({{bug("717379")}}).</li>
+ <li>2 進数および 8 進数の整数リテラルをサポートしました: <code>0b10101010</code>, <code>0B1010</code>, <code>0o777</code>, <code>0O237</code> が有効になりました ({{bug("894026")}})。</li>
+ <li>計算機イプシロン定数 (1 に追加することで 1 ではなくなる、表現可能な最小の値) を {{jsxref("Global_Objects/Number/EPSILON", "Number.EPSILON")}} として使用できます ({{bug("885798")}})。</li>
+</ul>
+
+<h3 id="Interfaces.2FAPIs.2FDOM" name="Interfaces.2FAPIs.2FDOM">インターフェイス/API/DOM</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web_Audio_API" title="Web_Audio_API">Web Audio API</a> をサポートしました。以前は不完全な実装を、設定のもとで使用できました ({{bug("779297")}})。</li>
+ <li>Windows の IME に関するキーの一部を <code>KeyboardEvent.key</code> でサポートしました ({{bug("865565")}})。詳しくは<a href="/ja/docs/Web/API/KeyboardEvent#Key_names_and_Char_values" title="Web/API/KeyboardEvent#keyname_table_win">キー名の表</a>をご覧ください。</li>
+ <li>Metro 版 Firefox が、デスクトップ版と同じ方法でキーイベントを発生させるようになりました ({{bug("843236")}})。</li>
+ <li>前の <code>keydown</code> イベントの <code>preventDefault()</code> が呼び出された場合は<code>keypress</code> イベントが発生しないようになりました ({{bug("501496")}})。詳しくは <a href="/ja/docs/Web/Reference/Events/keydown#preventDefault()_of_keydown_event" title="Web/Reference/Events/keydown#preventDefault()_of_keydown_event"><code>keydown</code> イベントのドキュメント</a>をご覧ください。</li>
+ <li><code>Future</code> インターフェイスの名称を <code>Promise</code> に変更しました ({{bug("884279")}})。</li>
+ <li>{{domxref("HTMLIFrameElement")}} インターフェイスで <code>srcDoc</code>プロパティをサポートしました。これは、{{HTMLElement("iframe")}} のコンテンツをインラインで記載できるプロパティです ({{bug("802895")}})。</li>
+ <li>{{domxref("HTMLTableElement")}} インターフェイスで <code>createTBody()</code> メソッドをサポートしました。これは、<code>createTBody()</code> の取得を可能にします ({{bug("813034")}})。</li>
+ <li>仕様書で定められているように、{{domxref("Range.collapse()")}} メソッドの引数 <code>toStart</code> は省略可能になり、また既定値が <code>false</code> になりました ({{bug("891340")}})。</li>
+ <li>{{domxref("Document")}} および {{domxref("DocumentFragment")}} で {{domxref("ParentNode")}} インターフェイスをサポートしました ({{bug("895974")}})。</li>
+ <li><code>previousElementSibling</code> および <code>nextElementSibling</code> を、{{domxref("Element")}} オブジェクトだけでなく {{domxref("CharacterData")}} オブジェクトや {{domxref("DocumentType")}} オブジェクトでも呼び出せるようにするため、{{domxref("ChildNode")}} に移転しました ({{bug("895974")}})。</li>
+ <li><code>navigator.geolocation</code> プロパティを、仕様書に合致するよう更新しました。<code>null</code> を返さないようになります。設定 <code>geo.enabled</code> が <code>false</code> であるときは、<code>undefined</code> を返します ({{bug("884921")}})。</li>
+ <li>{{domxref("HTMLVideoElement")}} インターフェイスの <code>videoPlaybackQuality</code> 属性を、<code>getVideoPlaybackQuality</code> メソッドに変更しました ({{bug(889205)}})。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/25.0/releasenotes/">Firefox 25 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/25/">Firefox 25 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2013/10/firefox-25-addon-compatibility/">Firefox 25 アドオン互換性情報</a></li>
+</ul>
+
+<h3 id="Older_versions" name="Older_versions">過去のバージョン</h3>
+
+<p>{{Firefox_for_developers('24')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/25/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/25/site_compatibility/index.html
new file mode 100644
index 0000000000..439d5824d3
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/25/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 25 サイト互換性情報
+slug: Mozilla/Firefox/Releases/25/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 25
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/25/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/25/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/26/index.html b/files/ja/mozilla/firefox/releases/26/index.html
new file mode 100644
index 0000000000..5eea5ce49b
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/26/index.html
@@ -0,0 +1,90 @@
+---
+title: Firefox 26 for developers
+slug: Mozilla/Firefox/Releases/26
+tags:
+ - Firefox
+ - Firefox 26
+translation_of: Mozilla/Firefox/Releases/26
+---
+<p>Gecko 26 を搭載した Firefox 26 は米国時間 2013 年 12 月 10 日にリリースされました。このページでは、開発者に影響する Firefox 26 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>現在も接頭辞付きである {{cssxref("text-decoration-line")}} プロパティは、<code>'blink'</code> を正しい値とみなすようになりました。ただし、コンテンツは点滅しません ({{bug("812995")}})。</li>
+ <li>非標準の {{cssxref("-moz-text-blink")}} プロパティを削除しました ({{bug("812995")}})。</li>
+ <li>CSS Images &amp; Values Level 4 バージョンにある、<code>from-image</code> キーワードと EXIF サポートを備えた {{cssxref("image-orientation")}} プロパティをサポートしました ({{bug(825771)}})。</li>
+ <li><code>position:sticky</code> を実験的にサポートしました。設定 <code>layout.css.sticky.enabled</code> で有効にできます ({{bug(886646)}})。</li>
+ <li>{{cssxref("text-align")}} プロパティを {{cssxref("::-moz-placeholder")}} 疑似要素へ適用可能になりました ({{bug(915551)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li><code>HTMLSelectElement.selectedOptions</code> プロパティを実装しました ({{bug("596681")}})。</li>
+ <li>type が <code>email</code> の {{HTMLElement("input")}} で、ドメインのラベルが 63 文字を超える値を正しいと考えないようになりました ({{bug("884332")}})。</li>
+ <li><code>HTMLInputElement.width</code> プロパティおよび <code>height</code> プロパティは、<code>type</code> が <code>image</code> ではない場合に <code>0</code> を返すようになりました ({{bug("905240")}})。</li>
+ <li>包含する要素のひとつが無効であるときに {{HTMLElement("fieldset")}} 要素が無効になり、{{cssxref(":invalid")}} 疑似クラスでスタイルを設定できます ({{bug("717181")}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla" title="Web/JavaScript/ECMAScript_6_support_in_Mozilla">EcmaScript 6</a> (Harmony) の実装が続いています!</p>
+
+<ul>
+ <li>ECMAScript 6 に準拠した構文の<a href="http://wiki.ecmascript.org/doku.php?id=harmony:generators">ジェネレータ (yield)</a> を実装しました ({{bug("666399")}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Math" title="Web/JavaScript/Reference/Global_Objects/Math"><code>Math</code></a> へ新たに、数学のメソッドを追加しました: <a href="/ja/docs/JavaScript/Reference/Global_Objects/Math/fround" title="JavaScript/Reference/Global_Objects/Math/fround"><code>Math.fround()</code></a> ({{bug("900125")}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Reserved_Words">予約語</a>を関数名に使用できません。使用すると <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError"><code>SyntaxError</code></a> が発生します ({{bug("907958")}})。</li>
+</ul>
+
+<h3 id="Interfaces.2FAPIs.2FDOM" name="Interfaces.2FAPIs.2FDOM">インターフェイス/API/DOM</h3>
+
+<ul>
+ <li>{{domxref("DOMImplementation.createDocument")}} の最後の引数 (doctype) を省略可能にしました ({{bug(909859)}})。</li>
+ <li>1 回の呼び出しで複数のクラスの追加や削除が可能な、新しい {{domxref("element.classList")}} の仕様を実装しました ({{bug(814014)}})。</li>
+ <li>{{domxref("URL")}} インタフェースに {{domxref("URL.URL", "URL()")}} コンストラクタを実装しました ({{bug("887364")}})。</li>
+ <li>{{domxref("URLUtils")}} を実装するすべてのインターフェイスで {{domxref("URLUtils.origin")}}、{{domxref("URLUtils.password")}}、{{domxref("URLUtils.username")}} の各プロパティが利用可能になりました: {{domxref("URL")}}、{{domxref("Location")}}、{{domxref("HTMLAnchorElement")}}、{{domxref("HTMLAreaElement")}} ({{bug("887364")}})。</li>
+ <li>{{domxref("URL")}} インタフェースは、Web Workers からアクセス可能になりました ({{bug("887364")}})。</li>
+ <li>一時的なストレージで、プロンプトを必要とせず LRU 方式でプールにデータを保存するように、IndexedDB を "{{原語併記("楽観的な", "optimistic")}}" ストレージエリアとして使用できるようになりました ({{bug("785884")}})。</li>
+ <li>永続的なストレージのパスを <code>&lt;profile&gt;/indexedDB</code> から <code>&lt;profile&gt;/storage/persistent</code> に変更しました (b2g では <code>/data/local/indexedDB</code> から <code>/data/local/storage/persistent</code> に変更)。</li>
+ <li>{{domxref("Screen.orientation")}} プロパティおよび {{domxref("Screen.lockOrientation()")}} メソッドで値 <code>default</code> をサポートしました。デバイスに応じて <code>portrait-primary</code> または <code>landscape-primary</code> が対応づけられます ({{bug(908058)}})。</li>
+ <li>{{domxref("Event")}} コンストラクタを Web workers で使用できます ({{bug(910910)}})。</li>
+ <li><code>sandbox</code> 属性がついた {{HTMLElement("iframe")}} 内に埋め込まれているページで {{domxref("Document.domain")}} プロパティを設定しようとすると、セキュリティエラーが発生するようになりました ({{bug(907892)}})。</li>
+ <li>{{domxref("MessageEvent")}} インタフェースを、最新の仕様に準拠するように更新しました。<code>initMessageEvent</code> メソッドを削除した一方で、インタフェースがコンストラクタを持つようになりました ({{bug(848294)}})。</li>
+ <li>設定 <code>dom.messageChannel.enabled</code> のもとで、HTML5 の <code>MessageChannel</code> API を実装しました ({{bug("677638")}})。</li>
+ <li>すべての WebVTT に関する実装と同様に、設定 <code>media.webvtt.enabled</code> のもとで <code>VTTCue</code> をサポートしました ({{bug("868509")}})。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<ul>
+ <li>{{MathMLElement("mmultiscripts")}}、{{MathMLElement("msub")}}、{{MathMLElement("msup")}}、{{MathMLElement("msubsup")}} の一貫性のないレンダリングを統一しました。また、これらの要素のエラー処理が改善しました ({{bug("827713")}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<ul>
+ <li>OpenType 内への SVG グリフの包含である <em>SVG-in-OpenType</em> を、現行バージョンの仕様に適合するよう更新しました ({{bug("906521")}})。</li>
+ <li><span id="summary_alias_container"><span id="short_desc_nonedit_display"><code>SVGElement.ownerSVGElement()</code> メソッドはエラーを発生させないようになりました ({{bug("835048")}})。</span></span></li>
+</ul>
+
+<h2 id="Development_tools" name="Development_tools">開発ツール</h2>
+
+<ul>
+ <li>インスペクタのリモートアクセスが可能になりました ({{bug(805526)}}).</li>
+ <li>このリリースで、Web コンソールのテキストが選択可能になる、{{cssxref("::before")}} および {{cssxref("::after")}} が調査可能になる、そしてデバッガやレスポンシブデザインビューの機能追加を計画しています。(<a href="https://hacks.mozilla.org/2013/09/new-features-in-the-firefox-developer-tools-episode-26/">https://hacks.mozilla.org/2013/09/new-features-in-the-firefox-developer-tools-episode-26/</a>)</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/26.0/releasenotes/">Firefox 26 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/26/">Firefox 26 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2013/11/firefox-26-addon-compatibility/">Firefox 26 アドオン互換性情報</a></li>
+</ul>
+
+<h3 id="Older_versions" name="Older_versions">過去のバージョン</h3>
+
+<p>{{Firefox_for_developers('25')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/26/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/26/site_compatibility/index.html
new file mode 100644
index 0000000000..8ab0bac247
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/26/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 26 サイト互換性情報
+slug: Mozilla/Firefox/Releases/26/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 26
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/26/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/26/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/27/index.html b/files/ja/mozilla/firefox/releases/27/index.html
new file mode 100644
index 0000000000..f337e05031
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/27/index.html
@@ -0,0 +1,115 @@
+---
+title: Firefox 27 for developers
+slug: Mozilla/Firefox/Releases/27
+tags:
+ - Firefox
+translation_of: Mozilla/Firefox/Releases/27
+---
+<p>Gecko 27 を搭載した Firefox 27 は米国時間 2014 年 2 月 4 日にリリースされました。このページでは、開発者に影響する Firefox 27 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>デバッガが、DOM イベントでブレーク可能になりました。</li>
+ <li>デバッガパネル内で、{ } ボタンを使用して JavaScript を整形できます。</li>
+ <li>インスペクタに、アドオンを必要とせずに要素の HTML を編集する機能を搭載しました。</li>
+ <li>インスペクタで、色や背景画像の URL をプレビュー表示します。canvas 要素にマウスポインタを載せた場合も、画像のプレビューを表示します。</li>
+ <li>リフローのログを取得します。</li>
+ <li>SVG 要素のスタイルが調査可能になりました。({{bug("921191")}})</li>
+ <li>CSS インスペクタで、url リンクをクリックしたときに画像を見つけられない現象を修正しました ({{Bug(921686)}})。</li>
+</ul>
+
+<p>詳しくは<a href="https://hacks.mozilla.org/2013/11/firefox-developer-tools-episode-27-edit-as-html-codemirror-more/">こちらの記事</a>をご覧ください。</p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>CSS {{cssxref("cursor")}} プロパティのキーワード <code>-moz-grab</code> および <code>-moz-grabbing</code> の接頭辞を外して <code>grab</code> および <code>grabbing</code> にしました ({{bug("880672")}})。</li>
+ <li><code>-moz-hsla()</code> および <code>-moz-rgba()</code> 表記のサポートを取りやめました。現在は接頭辞のない <code>hsla()</code> および <code>rgba()</code> のみサポートします ({{bug("893319")}})。</li>
+ <li>{{cssxref("text-align")}} で、値 "<code>true</code>" を実装しました ({{bug(929991)}})。</li>
+ <li>release 以外のビルドで、<code>position:sticky</code> の実験的な実装をデフォルトで有効にしました ({{bug("902992")}})。releases ビルドでは、設定項目 <code>layout.css.sticky.enabled</code> で <code>true</code> への変更が必要です。</li>
+ <li>ショートハンドプロパティ {{cssxref("all")}} をサポートしました ({{bug(920633)}})。</li>
+ <li>グローバル値 {{cssxref("unset")}} をサポートしました。どの CSS プロパティでもリセットできます ({{bug(921731)}})。</li>
+ <li>HTML の <code>style</code> 属性で、今後は中括弧が認められません。<code>&lt;div style="{ display: none }"&gt;</code> とした場合は Quirks モードで動作していましたが、今後は動作しません {{bug(915053)}}。</li>
+ <li>{{HTMLElement("fieldset")}} で {{cssxref("overflow")}} プロパティが動作するようになりました ({{bug(261037)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>デスクトッププラットフォームにおいて、{{HTMLElement("input")}} の {{htmlattrxref("type", "input")}} 属性で値 "color" を実装しました。これは、モバイルプラットフォームですでに利用できていました。</li>
+ <li>{{HTMLElement("iframe")}} 要素の {{htmlattrxref("sandbox", "iframe")}} 属性で、<code>allow-popups</code> ディレクティブをサポートしました ({{bug(766282)}})。</li>
+ <li>{{cssxref("mix-blend-mode")}} プロパティを使用した HTML 要素のブレンドを実装しました。設定項目 <code>layout.css.mix-blend-mode.enabled</code> を <code>true</code> に設定しなければなりません ({{bug(902525)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<p><a href="/ja/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla" title="Web/JavaScript/ECMAScript_6_support_in_Mozilla">EcmaScript 6</a> (Harmony) の実装が続いています!</p>
+
+<ul>
+ <li>Harmony の <a href="http://wiki.ecmascript.org/doku.php?id=harmony:spread" title="http://wiki.ecmascript.org/doku.php?id=harmony:spread">spread operator</a> を、関数呼び出しでサポートしました ({{bug("762363")}})。</li>
+ <li>数学関数 {{jsxref("Global_Objects/Math/hypot", "Math.hypot()")}} を実装しました ({{bug("896264")}})。</li>
+ <li><code>yield*</code> 演算子を実装しました ({{bug(666396)}})。</li>
+ <li><code>MapIterator</code>、<code>SetIterator</code>、<code>ArrayIterator</code> の各オブジェクトが、仕様書に一致するようになりました ({{bug("881226")}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of">for..of</a> ループが <code>StopIteration</code> を使用する SpiderMonkey の古い iterator protocol をやめて、ES6 の標準 <a href="/ja/docs/Web/JavaScript/Guide/The_Iterator_protocol">iterator protocol</a> に準拠するようになりました。</li>
+ <li>{{jsxref("String.match")}} および {{jsxref("String.replace")}} は、{{jsxref("RegExp.lastIndex")}} をリセットするようになりました ({{bug(501739)}})。</li>
+</ul>
+
+<h3 id="Interfaces.2FAPIs.2FDOM" name="Interfaces.2FAPIs.2FDOM">インターフェイス/API/DOM</h3>
+
+<ul>
+ <li>{{domxref("HTMLInputElement")}} インターフェイスで、2 つの <code>setRange()</code> メソッドをサポートしました ({{bug(850364)}})。</li>
+ <li>{{domxref("HTMLTextAreaElement")}} インターフェイスで、2 つの <code>setRange()</code> メソッドをサポートしました ({{bug(918940)}})。</li>
+ <li>{{domxref("IDBObjectStore")}} に <code>getAllKeys()</code> メソッドと <code>openKeyCursor()</code> メソッドを追加しました ({{bug(920633)}} および {{bug(920800)}})。</li>
+ <li>{{domxref("HTMLFormControlsCollection")}} インターフェイスを実装しました ({{bug(913920)}})。</li>
+ <li>{{domxref("CanvasRenderingContext2D")}} インターフェイスで、<code>getLineDash()</code> メソッドおよび <code>setLineDash()</code> メソッドをサポートしました ({{bug(768067)}})。</li>
+ <li>{{domxref("HTMLObjectElement")}} インターフェイスに <code>typeMustMatch</code> 属性を実装しました ({{bug(827160)}})。</li>
+ <li>{{domxref("AudioBuffer")}} に <code>copyFromChannel()</code> メソッドおよび <code>copyToChannel()</code> メソッドを追加しました ({{bug(915524)}})。</li>
+ <li><code>Event.isTrusted()</code> の偽造が不可能になりました ({{bug(637248)}})。</li>
+ <li>{{domxref("Navigator.vibrate()")}} メソッドが最終仕様に適合しました。リストが長すぎる、または項目が大きすぎる場合は例外発生ではなく <code>false</code> を返すようになりました ({{bug(884935)}})。</li>
+ <li>グローバルオブジェクトを標準化する取り組みの一環として <code>StyleRuleChangeEvent</code>、<code>StyleSheetApplicableStateChangeEvent</code>、<code>StyleSheetChangeEvent</code> といった非標準のスタイルシート変更イベントのインターフェイスを、Web content で使用不可にしました。また、{{domxref("CSSRuleList")}} の詳細実装である <code>CSSGroupRuleRuleList</code> インターフェイスを削除しました ({{Bug("872934")}} および {{bug(916871)}})。</li>
+ <li><code>atob</code> はホワイトスペースを無視するようになりました ({{bug(711180)}})。</li>
+ <li><a href="/ja/docs/Web/WebGL">WebGL</a>: <code>MOZ_</code> 接頭辞付きの拡張機能は非推奨になりました。これらは将来削除する予定です。接頭辞のない拡張機能のみを使用してください。草案段階の拡張機能を使用するには、<code>webgl.enable-draft-extensions</code> を設定してください ({{bug(924176)}})。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<ul>
+ <li>{{cssxref("mix-blend-mode")}} プロパティを使用した SVG 要素のブレンドを実装しました。設定項目 <code>layout.css.mix-blend-mode.enabled</code> を <code>true</code> に設定しなければなりません ({{bug(902525)}})。</li>
+</ul>
+
+<h3 id="Canvas" name="Canvas">Canvas</h3>
+
+<p>canvasRenderingContext2D.get/setLineDash を実装しました。({{bug("768067")}})</p>
+
+<h2 id="Changes_for_addon_and_Mozilla_developers" name="Changes_for_addon_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<ul>
+ <li><code>downloads-indicator</code> ボタンを削除しました。今後は <code>downloads-button</code> 要素を使用してください。オーバーレイにそれが読み込まれていることの確認が必要である場合は、ボタンの <code>indicator</code> 属性を確認してください。</li>
+ <li><code>chrome://browser/skin/downloads/indicator.css</code> スタイルシートは Firefox から参照されません。</li>
+</ul>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<ul>
+ <li>セキュリティ向上のため、TLS 1.2 を実装しました。({{bug("861266")}})</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/27.0/releasenotes/">Firefox 27 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/27/">Firefox 27 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2014/01/firefox-27-addon-compatibility/">Firefox 27 アドオン互換性情報</a></li>
+ <li>Firefox 27 での <a href="/ja/docs/Mozilla/QA/Marionette">Marionette</a> の<a href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;component=Marionette&amp;product=Testing&amp;target_milestone=mozilla27">変更点一覧</a></li>
+</ul>
+
+<h3 id="Older_versions" name="Older_versions">過去のバージョン</h3>
+
+<p>{{Firefox_for_developers('26')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/27/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/27/site_compatibility/index.html
new file mode 100644
index 0000000000..60b9447bb0
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/27/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 27 サイト互換性情報
+slug: Mozilla/Firefox/Releases/27/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 27
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/27/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/27/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/28/index.html b/files/ja/mozilla/firefox/releases/28/index.html
new file mode 100644
index 0000000000..4c60b3a14f
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/28/index.html
@@ -0,0 +1,116 @@
+---
+title: Firefox 28 for developers
+slug: Mozilla/Firefox/Releases/28
+tags:
+ - Firefox
+ - Firefox 28
+translation_of: Mozilla/Firefox/Releases/28
+---
+<p>Gecko 28 を搭載した Firefox 28 は米国時間 2014 年 3 月 18 日にリリースされました。このページでは、開発者に影響する Firefox 28 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>{{domxref("console.exception")}} プロパティを追加しました ({{bug("922214")}})。</li>
+ <li>{{domxref("console.assert")}} プロパティを追加しました ({{bug("760193")}})。</li>
+ <li>アプリマネージャ: 新しいマニフェストエディタを追加しました。</li>
+ <li>アプリマネージャ: アプリのデバッグ用のツールボックスを、アプリマネージャの UI 内に組み込みました。</li>
+ <li>Web コンソール: "スプリットコンソール" モードを追加しました。Escape キーを押すと、他のツール内にコンソールをすばやく開きます。</li>
+ <li>Web コンソール: 出力エリア用の Dark テーマを追加しました。</li>
+ <li>デバッガ: ミニファイされた JavaScript の整形。</li>
+ <li>デバッガ: 変数にマウスポインタを載せるか変数をクリックすると、現在の値をポップアップで表示します。</li>
+ <li>インスペクタ: ルールビューでのカラーピッカーや、さまざまなツールチップを追加しました。</li>
+ <li>ブラウザツールボックス: アドオンやプラットフォームの開発者が、ブラウザ自身を対象にしてほぼすべての開発ツールを使用できるようになりました。</li>
+</ul>
+
+<p>詳しくは<a href="https://hacks.mozilla.org/2013/12/split-console-pretty-print-minified-js-and-more-firefox-developer-tools-episode-28/" title="Split console, pretty-print minified JS and more – Firefox Developer Tools Episode 28">こちらの投稿</a>をご覧ください。</p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>マルチラインの <a href="/ja/docs/Web/Guide/CSS/Flexible_boxes">flexbox</a> をサポートしました ({{bug("939901")}})。</li>
+ <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">東アジア言語における{{原語併記("長い表記", "longhand")}}の<a href="/ja/docs/Web/CSS/list-style-type">カウンタースタイル</a></span></span>を実装しました ({{bug("934072")}})。</li>
+ <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">{{cssxref("background-blend-mode")}} プロパティをサポートしました</span></span> ({{bug("841601")}})。</li>
+ <li>{{cssxref("font-variant-ligatures")}} プロパティに値 <code>none</code> を追加しました ({{bug("913264")}})。</li>
+ <li>疑似要素で {{cssxref(":hover")}} ユーザアクション疑似クラスをサポートしました ({{bug("922669")}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li><code>&lt;input type=color&gt;</code> および <code>&lt;input type=number&gt;</code> を実装しましたが、デフォルトでは無効です。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla" title="Web/JavaScript/ECMAScript_6_support_in_Mozilla">ECMAScript 6</a> (Harmony) の実装が続いています:
+
+ <ul>
+ <li><code>Array</code> の新たなメソッドを実装しました: {{jsxref("Array.prototype.entries()")}} および {{jsxref("Array.prototype.keys()")}} ({{bug("894658")}})</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="Interfaces.2FAPIs.2FDOM" name="Interfaces.2FAPIs.2FDOM">インターフェイス/API/DOM</h3>
+
+<ul>
+ <li><span id="summary_alias_container"><span id="short_desc_nonedit_display"><code>HTMLVideoElement.canPlayType('video/webm')</code> が <code>maybe</code> を返すようになりました</span></span> ({{bug("884275")}})。</li>
+ <li>{{domxref("DocumentFragment.getElementById()")}} メソッドを実装しました。例: <code>document.createDocumentFragment().getElementById()</code> ({{bug("933193")}})</li>
+ <li>{{domxref("KeyboardEvent.repeat")}} 属性を実装しました ({{bug("600117")}})。</li>
+ <li>{{domxref("File")}} コンストラクタを実装しました。例: <code>new File(["foo"], "foo.txt")</code> ({{bug("819900")}})</li>
+ <li>プライバシーの理由により、{{domxref("NavigatorPlugins.plugins", "navigator.plugins")}} が enumerable ではなくなりました ({{bug(757726)}})。</li>
+ <li>{{domxref("Window.screenX")}} 属性および {{domxref("Window.screenY")}} 属性が CSS ピクセル値を返すようになりました (デバイスピクセル値は返しません) ({{bug(943668)}})。</li>
+ <li>{{domxref("CanvasRenderingContext2D.drawSystemFocusRing()")}} メソッドおよび {{domxref("CanvasRenderingContext2D.drawCustomFocusRing()")}} メソッドを実装しました。これらを有効にするには、設定項目 <code>canvas.focusring.enabled</code> を <code>true</code> に設定しなければなりません ({{bug(540456)}})。</li>
+ <li>以下の属性を {{domxref("NavigatorID")}} に追加しました: {{domxref("NavigatorID.appCodeName", "appCodeName")}} および {{domxref("NavigatorID.product", "product")}} ({{bug(925847)}})</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<ul>
+ <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">the </span></span><code>mathvariant</code> 属性をサポートしました ({{bug("114365")}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Audio.2FVideo" name="Audio.2FVideo">Audio/Video</h3>
+
+<ul>
+ <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">WebM で Opus</span></span> をサポートしました ({{bug("938686")}})。</li>
+ <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">VP9 ビデオデコーダ</span></span>をサポートしました ({{bug("833023")}})。</li>
+</ul>
+
+<h3 id="Network" name="Network">ネットワーク</h3>
+
+<ul>
+ <li><code>SPDY/2</code> のサポートを廃止しました。</li>
+</ul>
+
+<h2 id="Changes_for_addon_and_Mozilla_developers" name="Changes_for_addon_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/JavaScript_code_modules/DeferredTask.jsm">DeferredTask.jsm</a> のインターフェイスを変更しました。また <code>isPending()</code>、<code>start()</code>、<code>flush()</code>、<code>cancel()</code> の各メソッドを削除しました ({{bug("940408")}})。</li>
+</ul>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<ul>
+ <li>sandbox 化した iframe では、CSP が適用されていませんでした。これを修正しました ({{bug(886164)}})。</li>
+ <li>CSP 1.1 の試験的なディレクティブ <code>script-nonce</code> を実装しました。この機能を有効にするには、設定項目 <code>security.csp.experimentalEnabled</code> を <code>true</code> に設定してください ({{bug(855326)}})。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/28.0/releasenotes/">Firefox 28 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/28/">Firefox 28 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2014/02/firefox-28-addon-compatibility/">Firefox 28 アドオン互換性情報</a></li>
+</ul>
+
+<h3 id="Older_versions" name="Older_versions">過去のバージョン</h3>
+
+<p>{{Firefox_for_developers('27')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/28/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/28/site_compatibility/index.html
new file mode 100644
index 0000000000..0495557866
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/28/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 28 サイト互換性情報
+slug: Mozilla/Firefox/Releases/28/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 28
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/28/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/28/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/29/index.html b/files/ja/mozilla/firefox/releases/29/index.html
new file mode 100644
index 0000000000..d0d2b6da45
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/29/index.html
@@ -0,0 +1,133 @@
+---
+title: Firefox 29 for developers
+slug: Mozilla/Firefox/Releases/29
+tags:
+ - Firefox
+ - firefox developers
+ - firefox29
+translation_of: Mozilla/Firefox/Releases/29
+---
+<p>Gecko 29 を搭載した Firefox 29 は、米国時間 2014 年 4 月 29 日にリリースされました。このページでは、開発者に影響する Firefox 29 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p>主な変更点:</p>
+
+<ul>
+ <li>Web コンソールを大きく改善しました。Array の内容はクリックして調査ツールを起動しなくてもインラインで表示する、window オブジェクトで自身の URL を表示するなどです。</li>
+ <li>Web Worker に <a href="/ja/docs/Web/API/console">console API</a> を追加しました ({{bug(620935)}})。Web Worker から Web コンソールへのログ出力が可能になりました。</li>
+ <li><a href="/ja/docs/Tools/Network_Monitor">ネットワークモニタ</a>が、円グラフを使用してパフォーマンス統計を表示するようになりました ({{bug(846601)}})。</li>
+ <li><a href="/ja/docs/Tools/Page_Inspector">インスペクタ</a>で、CSS transform のプレビューツールチップが使用可能になりました ({{bug(726427)}})。</li>
+ <li>デバッガやコンソールでみられる DOM 要素は、変数リストの右側に新設したボタンを使用して直接削除または調査することが可能になりました。</li>
+ <li>CSS ソースマップを<a href="/ja/docs/Tools/Style_Editor">スタイルエディタ</a>でサポートしました ({{bug(926014)}})。</li>
+ <li>CSS プロパティおよび値のオートコンプリート機能を<a href="/ja/docs/Tools/Style_Editor">スタイルエディタ</a>に追加しました ({{bug(717369)}})。</li>
+</ul>
+
+<p><em>詳細および他の小規模な変更点については <a href="https://hacks.mozilla.org/2014/02/css-source-map-support-network-performance-analysis-more-firefox-developer-tools-episode-29/" title="CSS source map support, network performance analysis &amp; more – Firefox Developer Tools Episode 29 ✩ Mozilla Hacks – the Web developer blog">Mozilla Hacks ブログの記事</a>をご覧ください。</em></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/CSS/Using_CSS_variables">CSS variables</a> を実装しました ({{bug("773296")}})。この件に関する Mozilla Hacks の記事は<a href="https://hacks.mozilla.org/2013/12/css-variables-in-firefox-nightly/">こちら</a>です。これは Release ビルド以外でのみデフォルトで有効です (Release ビルドで使用したい場合は設定項目 <code>layout.css.variables.enabled</code> を <code>true</code> に変更してください)。</li>
+ <li>Flexbox で {{cssxref("visibility")}}<code>: collapse</code> をサポートしました ({{bug(783470)}})。</li>
+ <li>{{cssxref("box-sizing")}} プロパティの接頭辞を外しました ({{bug(243412)}})。</li>
+ <li>何かがアニメーションするであろうというヒントを与える、{{cssxref("will-change")}} プロパティを追加しました。有効化するには設定項目 <code>layout.css.will-change.enabled</code> を <code>true</code> に変更しなければなりません。({{bug(940842)}})</li>
+ <li><code>3e1</code> や <code>10e+0</code> といった指数表記を {{cssxref("&lt;number&gt;")}} 値でサポートしました ({{bug(964529)}})。</li>
+ <li>{{cssxref("&lt;gradient&gt;")}} タイプの画像を {{cssxref("border-image")}} でサポートしました ({{bug(709587)}})。</li>
+ <li>{{cssxref("touch-action")}} プロパティを実装しました。デフォルトでは無効であり、設定項目 <code>layout.css.touch_action.enabled</code> で制御します。({{bug(795567)}})</li>
+ <li>&lt;pre&gt; 要素用の冗長なデフォルトスタイルを quirk.css から削除しました ({{bug(948914)}})。</li>
+ <li>CSS Variables のフォールバックを正しく実装しました (基本的な循環参照) ({{bug(950497)}})。</li>
+ <li>宣言の優先度の後にトークンがある @supports の条件が、false に評価されるようになりました ({{bug(909170)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li><code>&lt;input type=color&gt;</code> および <code>&lt;input type=number&gt;</code> がデフォルトで有効になりました。</li>
+ <li>非標準である <code>&lt;pre cols&gt;</code> のサポート、および <code>&lt;pre wrap&gt;</code> のレイアウト効果を廃止しました。これらの効果は CSS で実現可能であり、また実現すべきです。({{bug("949879")}})</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>ECMAScript 6 の String の新たなメソッドである {{jsxref("String.prototype.codePointAt()")}} および {{jsxref("String.prototype.fromCodePoint()")}} を実装しました ({{bug("918879")}})。</li>
+ <li><a href="http://www.ecma-international.org/ecma-402/1.0/">ECMAScript Internationalization API (ECMA-402)</a> を実装しました。また、デスクトップ版 Firefox ではデフォルトで有効にしました ({{bug("853301")}}):
+ <ul>
+ <li>{{jsxref("Intl")}} オブジェクトネームスペースの新たなオブジェクト:
+ <ul>
+ <li>{{jsxref("Collator", "Intl.Collator")}}</li>
+ <li>{{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}</li>
+ <li>{{jsxref("NumberFormat", "Intl.NumberFormat")}}</li>
+ </ul>
+ </li>
+ <li>以下の {{jsxref("String")}}、{{jsxref("Number")}}、{{jsxref("Date")}} のメソッドを、ECMA-402 により引数 <code>locales</code> および <code>options</code> を持つように更新しました:
+ <ul>
+ <li>{{jsxref("String.prototype.localeCompare()")}}</li>
+ <li>{{jsxref("Number.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleString()")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li>
+ <li>{{jsxref("Date.prototype.toLocaleTimeString()")}}</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>更新された ECMAScript6 仕様草案に準拠するため、{{jsxref("Map")}} オブジェクトおよび {{jsxref("Set")}} オブジェクトがキーと値の同一性を確認するときは、<code>-0</code> と <code>+0</code> を同一として扱うようになりました。</li>
+ <li><code>Promise</code> をデフォルトで有効にしました ({{bug(918806)}})。</li>
+ <li>完了した Generator は例外を発生させるのではなく {{jsxref("IteratorResult")}} を返すようになりました ({{bug(958951)}})。</li>
+</ul>
+
+<h3 id="Interfaces.2FAPIs.2FDOM" name="Interfaces.2FAPIs.2FDOM">インターフェイス/API/DOM</h3>
+
+<ul>
+ <li>新たな種類の Worker である {{domxref("SharedWorker")}} をデフォルトで有効にしました ({{bug(924089)}})。</li>
+ <li>{{domxref("URLUtils")}} インターフェイスが、{{domxref("URLSearchParams")}} オブジェクトを返す {{domxref("URLUtils.searchParams", "searchParams")}} プロパティをサポートしました。URL の検索パラメータを変更できます ({{bug(887836)}})。{{domxref("URLSearchParams")}} コンストラクタにより、文字列のパースや検索が容易になります。</li>
+ <li>{{domxref("Worker.onLine")}} プロパティをサポートしました。Worker のオンライン/オフライン状況を知ることができます ({{bug(925437)}})。</li>
+ <li>Web Components の実装の一環として、{{domxref("HTMLShadowElement")}} インターフェイスを設定項目 <code>dom.webcomponents.enabled</code> のもとに実装しました。使用したい場合は値を <code>true</code> に変更してください。({{bug(887538)}})</li>
+ <li>読み取り専用の {{domxref("HTMLIFrameElement.sandbox")}} プロパティの型は {{domxref("string")}} ではなく {{domxref("HTMLSettableToken")}} になりました ({{bug(845057)}})。</li>
+ <li>{{domxref("HTMLCanvasElement.getContext()")}} で、値 <code>moz-webgl</code> のサポートを廃止しました。標準化された値 <code>webgl</code> を使用してください ({{bug(913597)}})。</li>
+ <li>{{domxref("ImageData")}} のコンストラクタを追加しました。このインターフェイスは {{domxref("Worker")}} で使用できます。({{bug(959958)}})</li>
+ <li>{{domxref("NavigatorLocation.origin", "location.origin")}} が Worker で使用可能になりました ({{bug(964148)}})。</li>
+ <li>{{domxref("ValidityState.badInput")}} プロパティを実装しました ({{bug(827161)}})。</li>
+ <li>非推奨である {{domxref("Window.pkcs11")}} プロパティを削除しました。これは Firefox 3.0.14 から <code>null</code> を返していました。({{bug(964964)}})</li>
+ <li>{{domxref("Node.cloneNode()")}} メソッドおよび {{domxref("Document.importNode()")}} メソッドは論理値の引数 <code>deep</code> をとります。これまでの引数を省略すると、メソッドは <code>deep</code> が <code>true</code> である場合の動作になりました。しかし最新の仕様により動作が変更され、省略した場合は値が <code>false</code> であるように動作します。({{bug(937461)}})</li>
+ <li>{{domxref("Window._content")}} は Web content で使用できなくなりました ({{bug(946564)}})。</li>
+ <li>{{domxref("URLUtils.port")}} の動作を若干変更しました。<code>''</code> を与えるとプロトコルに関連付けられたデフォルトのポートが設定されます。また <code>0</code> を与えると <code>0</code> が設定されます。({{bug(930450)}})</li>
+ <li>{{domxref("Document.referrer")}} は incumbent script に基づくようになりました ({{bug(887928)}})。</li>
+ <li><a href="/ja/docs/Web/Guide/API/Gamepad">Gamepad API</a> をデフォルトで有効にしました ({{bug(878828)}})。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<ul>
+ <li>CSP 1.1 の試験的なディレクティブ <code>hash-source</code> を実装しました。この機能を有効にするには、設定項目 <code>security.csp.experimentalEnabled</code> を <code>true</code> に設定してください ({{bug(883975)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<ul>
+ <li><a href="/en-US/Firefox/Australis_add-on_compat">Australis and add-on compatibility</a> - Firefox のユーザインターフェイスに関与する拡張機能のほとんどに影響する、Firefox テーマの主要な変更点です。</li>
+ <li><code>nsISecurityCheckedComponent</code> を削除しました ({{bug(794943)}})。利用者のほとんどは、インターフェイスの定義から nsISecurityCheckedComponent を単純に削除してかまいません。これで動作し続けるでしょう。</li>
+</ul>
+
+<p>Australis 以外の変更点は未定です。</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/29.0/releasenotes/">Firefox 29 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/29/">Firefox 29 サイト互換性情報</a></li>
+</ul>
+
+<h3 id="Older_versions" name="Older_versions">過去のバージョン</h3>
+
+<p>{{Firefox_for_developers('28')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/29/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/29/site_compatibility/index.html
new file mode 100644
index 0000000000..9ada6192ed
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/29/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 29 サイト互換性情報
+slug: Mozilla/Firefox/Releases/29/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 29
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/29/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/29/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/3.5/icc_color_correction_in_firefox/index.html b/files/ja/mozilla/firefox/releases/3.5/icc_color_correction_in_firefox/index.html
new file mode 100644
index 0000000000..4fb37dbd88
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/3.5/icc_color_correction_in_firefox/index.html
@@ -0,0 +1,105 @@
+---
+title: Firefox の ICC カラーコレクション
+slug: Mozilla/Firefox/Releases/3.5/ICC_color_correction_in_Firefox
+tags:
+ - Firefox
+ - Firefox 3
+ - Firefox 3.5
+translation_of: Mozilla/Firefox/Releases/3.5/ICC_color_correction_in_Firefox
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p>{{ fx_minversion_header(3) }}</p>
+
+<p>色補正のサポートはFirefox 3で導入されましたが、デフォルトでは無効になっています。これを有効にするには、about:config ウィンドウを少し修正する必要があります。 Firefox 3.5では、以前のバージョンではデフォルトで無効になっていた問題が解決されました。現在 <a href="http://www.color.org/">International Color Consortium</a> (ICC) タグの画像は、デフォルトで色補正されています。<br>
+ <br>
+ 下の画像は3つのセクションに分割されています。 左上隅には、Firefox 2でレンダリングされた画像が表示されます。右上隅には、Firefox 3での画像のレンダリング方法が表示されます。下には、Photoshopでレンダリングされた画像が表示されます。</p>
+
+<p><img alt="iccsample.jpg" class="default internal" src="/@api/deki/files/3218/=iccsample.jpg" style="height: 334px; width: 500px;"></p>
+
+<p>ご覧のように、Firefox 3 とPhotoshop は埋め込まれた色補正プロファイルをサポートしているため、イメージを同じようにレンダリングします。 Firefox 2 はプロファイルを無視し、色が一致しません。</p>
+
+<h2 id="カラーコレクションの設定">カラーコレクションの設定</h2>
+
+<p>色補正は次のように、<code>gfx.color_management.mode</code>プリファレンスの値を設定することで制御できます。</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">値</td>
+ <td class="header">詳細</td>
+ </tr>
+ <tr>
+ <td>0</td>
+ <td>カラーマネジメントは無効 <strong>(Firefox 3. のデフォルト)</strong></td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>フルカラー管理</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>タグづけされた画像のみカラーマネジメントを適用  <strong>( Firefox 3.5. のデフォルト)</strong></td>
+ </tr>
+ </tbody>
+</table>
+
+<p>フルカラー管理とは、プラグインを除いて、Firefoxでレンダリングされたすべての色が修正されたことを意味します。</p>
+
+<h3 id="カラープロファイルの指定">カラープロファイルの指定</h3>
+
+<p><code>gfx.color_management.display_profile</code>環境設定の値を、使用するカラープロファイルへのパスに設定することによって、ハードウェアに使用する特定のカラープロファイルを指定することもできます。<br>
+ <br>
+ カラープロファイルにパスが指定されていない場合、Firefoxはオペレーティングシステムを照会し、設定されたカラープロファイルを使用します。</p>
+
+<h3 id="デフォルトのレンダリングインテントの指定">デフォルトのレンダリングインテントの指定</h3>
+
+<p>さらに <code>gfx.color_management.rendering_intent</code> 環境設定の値を設定して、デフォルトのレンダリングインテントを指定することもできます。デフォルトでは、この値に-1を指定しない限り、imagesで指定されたインテントは無視されます。</p>
+
+<p>次の表に、使用可能な値を示します。</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">値</td>
+ <td class="header">詳細</td>
+ </tr>
+ <tr>
+ <td>-1</td>
+ <td>埋め込まれたインテントを使用する。 デフォルトでは、イメージの埋め込みインテントは無視されます。</td>
+ </tr>
+ <tr>
+ <td>0</td>
+ <td>知覚。 画像の色調範囲全体にわたって詳細を保持するように、画像をレンダリングするようにFirefoxに指示します。 典型的な場合、特に写真やその他の写真の場合、一般的な画像の表示に便利です。</td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>メディア相対比色。 これは、レンダリング媒体の白色点(表示画面など)が基準媒体の白色点にマッピングされるように、カラースペクトルを再スケーリングする。 これは、参照媒体より小さな色域を有する媒体にマッピングされた色に対して最も有用である。</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>飽和。 これは、色相の精度を保つことを犠牲にして、色の鮮やかさを維持する。 これは、チャートやダイアグラム、色調の正確な複製がそれほど重要ではないうちに、色が「ポップ」するその他のメディアに特に便利です。</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>ICC-絶対比色分析。 これは、スポットカラーや、色域内の色を変更しないので、あるメディアを別のものでシミュレートする場合に最も便利です。</td>
+ </tr>
+ </tbody>
+</table>
+
+<div class="note"><strong>Note:</strong> Firefox 3.5では、perceptual、media-relative、およびsaturationのインテントがすべて同じようにレンダリングされます。</div>
+
+<h3 id="警告">警告</h3>
+
+<p>Firefox 3.5で導入された新しいQCMSカラーマネジメントシステムは、バージョン4ではなく、ICC カラープロファイルのバージョン2のみをサポートしています。画像が暗すぎることがあります。<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=488800" title="https://bugzilla.mozilla.org/show_bug.cgi?id=488800">bug 488800</a> と<a class="external external-icon" href="http://www.color.org/version4html.xalter" title="http://www.color.org/version4html.xalter">ICC version 4 profile test</a> を参照してください。</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a class="external" href="http://bholley.wordpress.com/2008/09/12/so-many-colors/" title="http://bholley.wordpress.com/2008/09/12/so-many-colors/">So Many Colors</a> (blog post)</li>
+ <li><a class="external" href="http://www.dria.org/wordpress/archives/2008/04/29/633/" title="http://www.dria.org/wordpress/archives/2008/04/29/633/">Firefox 3: Color profile support</a> (blog post)</li>
+ <li><a class="external" href="http://ejohn.org/blog/color-profiles/" title="http://ejohn.org/blog/color-profiles/">Color Profiles in Firefox 3</a> (blog post)</li>
+ <li><a class="external" href="http://www.color.org/" title="http://www.color.org/">International Color Consortium</a></li>
+</ul>
+
+<p> </p>
diff --git a/files/ja/mozilla/firefox/releases/3.5/index.html b/files/ja/mozilla/firefox/releases/3.5/index.html
new file mode 100644
index 0000000000..55744118ea
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/3.5/index.html
@@ -0,0 +1,273 @@
+---
+title: Firefox 3.5 for developers
+slug: Mozilla/Firefox/Releases/3.5
+tags:
+ - CSS
+ - Firefox
+ - Firefox 3.5
+ - HTML
+ - JavaScript
+ - Storage
+ - XUL
+translation_of: Mozilla/Firefox/Releases/3.5
+---
+<p><a class="external" href="http://mozilla.jp/" title="http://mozilla.jp/">Firefox 3.5</a> では数多くの新機能が導入され、また、幅広い種類のWeb 標準に対するサポートが追加および改善されます。この記事は主な変更点をカバーする記事へのリンクを伴う広範囲に及ぶ一覧を提供します。</p>
+
+<div>{{ 英語版章題("New developer features in Firefox 3.5") }}</div>
+
+<h2 id="Firefox_3.5_の開発者向け新機能">Firefox 3.5 の開発者向け新機能</h2>
+
+<div>{{ 英語版章題("For web site and application developers") }}</div>
+
+<h3 id="Web_サイトと_Web_アプリケーション開発者向け">Web サイトと Web アプリケーション開発者向け</h3>
+
+<div>{{ 英語版章題("HTML5 support") }}</div>
+
+<h4 id="HTML5_サポート">HTML5 サポート</h4>
+
+<dl>
+ <dt><a href="/ja/docs/Using_audio_and_video_in_Firefox" title="Using audio and video in Firefox">Using audio and video in Firefox</a></dt>
+ <dd>Firefox 3.5 では HTML5 の <a href="/ja/docs/HTML/Element/Audio" title="HTML/Element/Audio">audio</a> および <a href="/ja/docs/HTML/Element/Video" title="HTML/Element/Video">video</a> 要素がサポートされます。</dd>
+ <dt><a href="/ja/docs/Offline_resources_in_Firefox" title="Offline resources in Firefox">Offline resources in Firefox</a></dt>
+ <dd>Firefox 3.5 では HTML5 のオフラインリソース仕様をすべてサポートしています。</dd>
+ <dt><a href="/ja/docs/DragDrop/Drag_and_Drop" title="DragDrop/Drag and Drop">ドラッグ&ドロップ</a></dt>
+ <dd>HTML5 のドラッグ&ドロップ API によって Web サイト内および Web サイト間のアイテムのドラッグ&ドロップがサポートされます。これにより、拡張や Mozilla ベースアプリケーションに対してもより単純な API が提供されます</dd>
+</dl>
+
+<div>{{ 英語版章題("Newly-supported CSS features") }}</div>
+
+<h4 id="新しくサポートされる_CSS_の機能">新しくサポートされる CSS の機能</h4>
+
+<dl>
+ <dt><a href="/ja/docs/CSS/@font-face" title="CSS/@font-face">ダウンロードフォントのサポート</a></dt>
+ <dd>新しい @規則である {{ cssxref("@font-face") }} を利用して Web ページでダウンロードフォントを提供できます。これにより、ページ作者が期待する通りにサイトが描画されるようになります。</dd>
+ <dt><a href="/ja/docs/CSS/Media_queries" title="CSS/Media queries">CSS メディアクエリー</a></dt>
+ <dd>Firefox 3.5 では CSS メディアクエリーをサポートしています。これはメディア依存スタイルシートを拡張するものです。</dd>
+ <dt>{{ cssxref(":before") }} および {{ cssxref(":after") }} の CSS 2.1 への更新</dt>
+ <dd><code>:before</code> および <code>:after</code> 疑似要素が CSS 2.1 サポートを満たすように更新されました。<code>position</code>、<code>float</code>、<code>list-style-*</code>、そして、いくつかの <code>display</code> プロパティのサポートが追加されています。</dd>
+ <dt>長さの単位 <code>ch</code></dt>
+ <dd>単位 <code>ch</code> が通常の<a href="/ja/docs/CSS/Length" title="CSS/length">長さの単位</a>として任意の場所で使えるようになりました。"1 ch" は文字 '0' の横幅です。</dd>
+ <dt>{{ cssxref("opacity") }}</dt>
+ <dd>標準の <code>opacity</code> プロパティの先行実装である <code>-moz-opacity</code> という CSS への Mozilla 拡張が削除されました。</dd>
+ <dt>{{ cssxref("text-shadow") }}</dt>
+ <dd>Web コンテンツにテキストとテキスト装飾に適用される影付き効果を指定できる <code>text-shadow</code> プロパティがサポートされました。</dd>
+ <dt>{{ cssxref("word-wrap") }}</dt>
+ <dd>この新しくサポートされたプロパティはコンテンツに単語内で改行するかどうかを指定できます。これは単語内で改行しないと 1 行に収まらないときに発生する文字あふれを防ぐためのものです。</dd>
+ <dt><code>white-space</code> プロパティが値 <code>pre-line</code> をサポート</dt>
+ <dd>{{ cssxref("white-space") }} プロパティの値に <code>pre-line</code> を指定できるようになりました。</dd>
+ <dt>{{ cssxref("-moz-box-shadow") }}</dt>
+ <dt>{{ cssxref("-moz-border-image") }}</dt>
+ <dt>{{ cssxref("-moz-column-rule") }}</dt>
+ <dt>{{ cssxref("-moz-column-rule-width") }}</dt>
+ <dt>{{ cssxref("-moz-column-rule-style") }}</dt>
+ <dt>{{ cssxref("-moz-column-rule-color") }}</dt>
+ <dd>Firefox 3.5 ではこれらの CSS への Mozilla 拡張に対するサポートが追加されます。</dd>
+ <dt>{{ cssxref("color_value#Mozilla_Extensions","-moz-nativehyperlinktext") }} カラー値</dt>
+ <dd>この新しいカラー値はユーザのシステムのデフォルトのハイパーリンクの色を表します。</dd>
+ <dt>{{ cssxref("-moz-window-shadow") }} プロパティおよび {{ cssxref(":-moz-system-metric(mac-graphite-theme)") }}<code> </code>擬似クラス</dt>
+ <dd>これらの新しい CSS 機能はテーマ作成を手助けするために追加されました。</dd>
+ <dt>{{ cssxref("-moz-appearance") }} 向けの新しい値</dt>
+ <dd><code>-moz-win-glass</code> および <code>-moz-mac-unified-toolbar</code> という値が <code>-moz-appearance</code> 向けに追加されました。</dd>
+ <dt><a href="/ja/docs/CSS/Using_CSS_transforms" title="CSS/Using CSS transforms">CSS transforms の利用</a></dt>
+ <dd>Firefox 3.5 では CSS Transform がサポートされます。詳細は {{ cssxref("-moz-transform") }} および {{ cssxref("-moz-transform-origin") }} を参照してください。</dd>
+ <dt>{{ cssxref(":nth-child") }}</dt>
+ <dt>{{ cssxref(":nth-last-child") }}</dt>
+ <dt>{{ cssxref(":nth-of-type") }}</dt>
+ <dt>{{ cssxref(":nth-last-of-type") }}</dt>
+ <dt>{{ cssxref(":first-of-type") }}</dt>
+ <dt>{{ cssxref(":last-of-type") }}</dt>
+ <dt>{{ cssxref(":only-of-type") }}</dt>
+ <dd>これらのセレクタがすべて Firefox 3.5 で新たにサポートされます。</dd>
+</dl>
+
+<div>{{ 英語版章題("New DOM features") }}</div>
+
+<h4 id="新しい_DOM_の機能">新しい DOM の機能</h4>
+
+<dl>
+ <dt><a href="/ja/docs/DOM/Storage#localStorage" title="DOM/Storage#localStorage">localStorage</a></dt>
+ <dd>Firefox 3.5 では Web Storage の <code>localStorage</code> プロパティをサポートします。これは Web アプリケーションがクライアントのコンピュータ上にローカルにデータを保存する方法を提供します。</dd>
+ <dt><a href="/ja/docs/Using_web_workers" title="Using web workers">Web Workers の使用</a></dt>
+ <dd>Firefox 3.5 では Web アプリケーションでの簡単なマルチスレッドサポートを可能にする Web Workers をサポートします。</dd>
+ <dt><a href="/ja/docs/Using_geolocation" title="Using geolocation">ジオロケーションの使用</a></dt>
+ <dd>Firefox 3.5 では Geolocation API をサポートします。これにより Web アプリケーションはユーザの現在位置についての情報を提供するプロバイダがインストールされ有効化されていれば、その情報を保持することができます。</dd>
+ <dt><a href="/ja/docs/DOM/Locating_DOM_elements_using_selectors" title="DOM/Locating DOM elements using selectors">セレクタを使用した DOM 要素の指定</a></dt>
+ <dd>Selectors API により与えられた選択ルールにマッチする要素を指定するために文書を検索できます。</dd>
+ <dt><a href="/ja/docs/DOM/Mouse_gesture_events" title="DOM/Mouse gesture events">マウスジェスチャイベント</a></dt>
+ <dd>Firefox 3.5 はトラックパッドスワイプのようなマウスジェスチャイベントをサポートします。</dd>
+ <dt><a href="/ja/docs/DOM/NodeIterator" title="DOM/NodeIterator">NodeIterator オブジェクト</a></dt>
+ <dd><code>NodeIterator</code> オブジェクトは DOM サブツリーのノードのリストを繰り返し処理するためのサポートを提供します。</dd>
+ <dt><a href="/ja/docs/Gecko-Specific_DOM_Events#MozAfterPaint" title="Gecko-Specific DOM Events#MozAfterPaint">MozAfterPaint イベント</a></dt>
+ <dd>この新しい DOM イベントはウィンドウで塗り直し後に送られます。</dd>
+ <dt><a href="/ja/docs/Gecko-Specific_DOM_Events#MozMousePixelScroll" title="Gecko-Specific DOM Events#MozMousePixelScroll">MozMousePixelScroll イベント</a></dt>
+ <dd>この新しい DOM イベントにより行ベースのスクロールイベントの代わりにピクセルベースのマウススクロールホイールイベントを検知できます。</dd>
+</dl>
+
+<div>{{ 英語版章題("New JavaScript features") }}</div>
+
+<h4 id="新しい_JavaScript_の機能">新しい JavaScript の機能</h4>
+
+<dl>
+ <dt><a href="/ja/docs/New_in_JavaScript_1.8.1" title="New in JavaScript 1.8.1">JavaScript 1.8.1 の新機能</a></dt>
+ <dd>JavaScript 1.8.1 における変更のすべての概要。</dd>
+ <dt><a href="/ja/docs/Core_JavaScript_1.5_Reference/Global_Objects/Object/GetPrototypeOf" title="Core JavaScript 1.5 Reference/Global Objects/Object/GetPrototypeOf">Object.getPrototypeOf()</a></dt>
+ <dd>このメソッドは指定されたオブジェクトのプロトタイプを返します。</dd>
+ <dt><a href="/ja/docs/Using_native_JSON" title="Using_native_JSON">ネイティブ JSON の使用</a></dt>
+ <dd>Firefox 3.5 は JSON をネイティブでサポートします。</dd>
+ <dt>String オブジェクトの新しい trim メソッド</dt>
+ <dd>String オブジェクトに <a href="/ja/docs/Core_JavaScript_1.5_Reference/Global_Objects/String/Trim" title="Core JavaScript 1.5 Reference/Global Objects/String/Trim">trim()</a>、<a href="/ja/docs/Core_JavaScript_1.5_Reference/Global_Objects/String/TrimLeft" title="Core JavaScript 1.5 Reference/Global Objects/String/TrimLeft">trimLeft()</a>、そして <a href="/ja/docs/Core_JavaScript_1.5_Reference/Global_Objects/String/TrimRight" title="Core JavaScript 1.5 Reference/Global Objects/String/TrimRight">trimRight()</a> メソッドが定義されました。</dd>
+</dl>
+
+<div>{{ 英語版章題("Networking") }}</div>
+
+<h4 id="ネットワーク機能">ネットワーク機能</h4>
+
+<dl>
+ <dt><a href="/ja/docs/HTTP_access_control" title="HTTP access control">HTTP 向けのクロスサイトアクセスコントロール</a></dt>
+ <dd>Firefox 3.5 では、サーバーがサポートする場合に、<code><a href="/ja/docs/XMLHttpRequest" title="XMLHttpRequest">XMLHttpRequest</a></code> によるものも含む HTTP リクエストでドメインを超える動作が可能になりました。</dd>
+ <dt><code><a href="/ja/docs/Using_XMLHttpRequest#Monitoring%20progress" title="Using XMLHttpRequest#Monitoring progress">XMLHttpRequest</a></code><a href="/ja/docs/Using_XMLHttpRequest#Monitoring%20progress" title="Using XMLHttpRequest#Monitoring progress"> のための Progress イベント</a></dt>
+ <dd>Progress イベントが拡張がリクエストの進捗を監視できるようにするために提供されるようになりました。</dd>
+ <dt>同期 <code>XMLHttpRequest</code>サポートの改善</dt>
+ <dd><a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=340345" title="https://bugzilla.mozilla.org/show_bug.cgi?id=340345">DOM Timeout</a> と <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=333198" title="https://bugzilla.mozilla.org/show_bug.cgi?id=333198">Input Events</a> が同期 <code>XMLHttpRequest中に抑制されるようになりました。</code></dd>
+ <dt><a href="/ja/docs/Controlling_DNS_prefetching" title="Controlling DNS prefetching">DNS プリフェッチの制御</a></dt>
+ <dd>Firefox 3.5 では DNS プリフェッチが提供され、それにより現在のページに含まれるリンクのドメイン名解決が事前に行われ、リンクが実際にクリックされたときの時間を節約しま す。この記事では Web サイト側でプリフェッチを無効にする、もしくは、プリフェッチの動作を調整する方法について説明しています。</dd>
+</dl>
+
+<div>{{ 英語版章題("New SVG features") }}</div>
+
+<h4 id="新しい_Canvas_の機能">新しい Canvas の機能</h4>
+
+<dl>
+ <dt><code><a href="/ja/docs/Drawing_text_using_a_canvas" title="Drawing text using a canvas">Canvas</a></code><a href="/ja/docs/Drawing_text_using_a_canvas" title="Drawing text using a canvas"> 要素向けの HTML5 テキスト API</a></dt>
+ <dd>Canvas 要素が HTML5 テキスト API をサポートするようになりました。</dd>
+ <dt><code><a href="/ja/docs/Canvas_tutorial/Applying_styles_and_colors#Shadows" title="Canvas tutorial/Applying styles and colors#Shadows">Canvas</a></code><a href="/ja/docs/Canvas_tutorial/Applying_styles_and_colors#Shadows" title="Canvas tutorial/Applying styles and colors#Shadows"> での影付き効果</a></dt>
+ <dd>Canvas での影付き効果がサポートされるようになりました。</dd>
+ <dt><a href="/ja/docs/HTML/Canvas/Pixel_manipulation_with_canvas#Creating_an_ImageData_object" title="En/HTML/Canvas/Pixel manipulation with canvas#Creating an ImageData object"><code>createImageData()</code></a></dt>
+ <dd>Canvas の <code>createImageData()</code> メソッドがサポートされるようになりました。こ<code>のメソッドを利用することで、ImageData</code> オブジェクトを必要なときに自動的に作成させるのではなく、コードで明示的に作成することができます。オブジェクトを作成する必要性を無くすことができるので、このメソッドで他の <code>ImageData</code> を扱うメソッドのパフォーマンスを改善することができます。</dd>
+ <dt><code>moz-opaque</code> 属性</dt>
+ <dd><code>moz-opaque</code> DOM 属性が追加されたことにより、Canvas は半透明な要素があるかどうか知ることができます。Canvas が半透明な要素がないことを知った場合、ペインティングパフォーマンスが最適化されます。</dd>
+</dl>
+
+<div>{{ 英語版章題("New SVG features") }}</div>
+
+<h4 id="新しい_SVG_の機能">新しい SVG の機能</h4>
+
+<dl>
+ <dt><a href="/ja/docs/Applying_SVG_effects_to_HTML_content" title="Applying SVG effects to HTML content">HTML の内容への SVG 効果の適用</a></dt>
+ <dd>SVG 効果を HTML および XHTML の内容に適用できるようになりました。この記事はその方法について説明しています。</dd>
+</dl>
+
+<div>{{ 英語版章題("Miscellaneous new features") }}</div>
+
+<h4 id="雑多な新機能">雑多な新機能</h4>
+
+<dl>
+ <dt><a href="/ja/docs/ICC_color_correction_in_Firefox" title="ICC color correction in Firefox">Firefox での ICC カラー補正</a></dt>
+ <dd>Firefox 3.5 では タグ付けられた画像に対して ICC カラー補正がサポートされています。</dd>
+ <dt><a href="/ja/docs/HTML/Element/Script" title="HTML/Element/Script">script</a> 要素で defer 属性がサポート</dt>
+ <dd>この属性はスクリプトが実行し終わるの待たずにブラウザにパースし描画し続けることを選択させます。</dd>
+</dl>
+
+<div>{{ 英語版章題("Other improvements") }}</div>
+
+<h3 id="その他の改善">その他の改善</h3>
+
+<ul>
+ <li>Text ノードの <a href="/ja/docs/DOM/Text.wholeText" title="DOM/Text.wholeText"><code>wholeText</code></a> プロパティ と <code><a href="/ja/docs/DOM/Text.replaceWholeText" title="DOM/Text.replaceWholeText">replaceWholeText()</a></code> メソッドが実装されました。</li>
+ <li><code><a href="/ja/docs/DOM/Element.children" title="DOM/Element.children">element.children</a></code> プロパティが追加されました。これは与えられた要素の子要素の<em>コレクション</em>を返します。</li>
+ <li>DOM <a href="/ja/docs/DOM/element" title="DOM/Element">Element</a> オブジェクトで Element Traversal API がサポートされました。</li>
+ <li>HTML document ノードを <code><a href="/ja/docs/DOM/Node.CloneNode" title="DOM/Node.cloneNode">cloneNode()</a></code> を用いて複製できるようになりました。</li>
+ <li>非標準であるDOM の <code>getBoxObjectFor()</code> メソッドが削除されました。代わりとして <a href="/ja/docs/DOM/element.getBoundingClientRect" title="DOM/Element.getBoundingClientRect"><code>getBoundingClientRect()</code></a> を利用すべきです。</li>
+ <li>伝達された DOM イベントを再伝達できるようになりました。これにより Firefox 3.5 は Acid 3 test 30 をパスします。</li>
+ <li>DOM 2 Range ハンドリングが改善されました。</li>
+ <li>非 Chrome スコープにおいて、例外でキャッチされるオブジェクトがスローされたオブジェクトを含む <a href="/ja/docs/XPConnect" title="XPConnect">XPConnect</a> ラッパーではなく実際にスローされたオブジェクトになりました。</li>
+ <li>SVG ID 参照が動的な変更に対応するようになりました。</li>
+ <li>SVG フィルターが <code>foreignObject</code> でも動作するようになりました。</li>
+ <li>互換性のために <code>GetSVGDocument()</code> メソッドが <a href="/ja/docs/HTML/Element/object" title="HTML/Element/object">object</a> および <a href="/ja/docs/HTML/Element/iframe" title="HTML/Element/iframe">iframe</a> 要素に追加されました。</li>
+ <li>JavaScript においてオブジェクトおよび配列の初期化子によるプロパティの暗黙的な設定ではセッターの定義を行わないようになりました。詳細は <a href="/web-tech/2009/04/29/object-and-array-initializers-should-not-invoke-setters-when-evaluated" title="https://developer.mozilla.org/editor/fckeditor/core/editor/web-tech/2009/04/29/object-and-array-initializers-should-not-invoke-setters-when-evaluated/">オブジェクトおよび配列の初期化子は評価時にセッターの定義を行うべきではない</a> というブログ投稿を参照してください。</li>
+ <li><code>gDownloadLastDir.path</code> 変数は、パスではなく {{ interface("nsIFile") }} を参照しているので、 <code>gDownloadLastDir.file</code> に名称変更されました。</li>
+ <li>Firefox 3.5 から、<code>XPCNativeWrapper</code> オートメーションを得る Chrome パッケージでの <code>data:</code> バインディングを利用することはできなくなります。</li>
+</ul>
+
+<div>{{ 英語版章題("For XUL and add-on developers") }}</div>
+
+<h3 id="XUL_とアドオン開発者向け">XUL とアドオン開発者向け</h3>
+
+<p>拡張開発者であるなら、<a href="/ja/docs/Updating_extensions_for_Firefox_3.1" title="Updating extensions for Firefox 3.1">Firefox 3.5 向けに拡張を更新する</a> から読み始めるべきです。その記事ではあなたの拡張に影響しうる変更を知る上で役立つ概観を提供しています。</p>
+
+<div>{{ 英語版章題("New components and functionality") }}</div>
+
+<h4 id="新しいコンポーネントと機能">新しいコンポーネントと機能</h4>
+
+<dl>
+ <dt><a href="/ja/docs/Supporting_private_browsing_mode" title="Supporting private browsing mode">プライベートブラウジングモードのサポート</a></dt>
+ <dd>Firefox 3.5 ではプライベートブラウジングモードが提供されます。これはユーザの活動を記録しません。拡張はこの記事で挙げるガイドラインに従ってプライベートブラウジングをサポートすることができます。</dd>
+ <dt><a href="/ja/docs/Security_changes_in_Firefox_3.5" title="Security changes in Firefox 3.5">Firefox 3.5 でのセキュリティの変更</a></dt>
+ <dd>この記事は Firefox 3.5 でのセキュリティ関連の変更をカバーしています。</dd>
+ <dt><a href="/ja/docs/Theme_changes_in_Firefox_3.5" title="Theme changes in Firefox 3.5">Firefox 3.5 でのテーマの変更</a></dt>
+ <dd>この記事は Firefox 3.5 でのテーマ関連の変更をカバーしています。</dd>
+ <dt><a href="/ja/docs/Monitoring_WiFi_access_points" title="Monitoring WiFi access points">WiFi アクセスポイントのモニタリング</a></dt>
+ <dd>UniversalXPConnect 特権を持つコードで有効なアクセスポイントの一覧がモニタリング可能になり、個々の SSIDs、MAC アドレス、シグナル強度の情報が取得できます。 これを Geolocation と連携して用いることで WiFi ベースのロケーションサービスを提供できます。</dd>
+</dl>
+
+<div>{{ 英語版章題("Notable changes and improvements") }}</div>
+
+<h4 id="注目すべき変更と改善">注目すべき変更と改善</h4>
+
+<ul>
+ <li>XUL <code><a href="../../../../en/XUL/textbox" rel="internal">textbox</a></code> ウィジェットが検索フィールドとして利用するための <code><a href="../../../../en/XUL/Attribute/textbox.type" rel="internal">search</a></code> type を提供するようになりました。</li>
+ <li>ウィンドウ間のタブのドラッグ&ドロップのサポートのために、<code><a href="/ja/docs/XUL/browser" rel="internal" title="XUL/browser">browser</a></code> ウィジェットに <code><span class="lang lang-en"><a href="/ja/docs/XUL/Method/SwapDocShells" title="XUL/Method/swapDocShells">swapDocShells()</a></span></code>メソッドが定義されました。</li>
+ <li><code><a href="/ja/docs/XUL/panel" rel="internal" title="XUL/panel">panel</a></code> 要素に <code><span class="lang lang-en"><a href="/ja/docs/XUL/Attribute/panel.level" rel="internal" title="XUL/Attribute/panel.level">level</a></span></code>属性が追加されました。 これは panel を他のアプリケーションの手前に表示するか、単純に panel が含まれるウィンドウの手前に表示するかどうかを指定できます。</li>
+ <li>XUL 要素が<code> clientHeight</code><span style="font-family: monospace;">、</span><code>clientWidth</code><span style="font-family: monospace;">、</span><code>scrollHeight</code>、および <code>scrollWidth </code>プロパティをサポートするようになりました。</li>
+ <li><code><a href="/ja/docs/XUL/keyset" title="XUL/Keyset">keyset</a></code> 要素に <code>disabled</code> 属性が追加されました。</li>
+ <li>加えて、<code>keyset</code> 要素はノードの <code><a href="/ja/docs/DOM/Node.removeChild" title="DOM/Node.removeChild">removeChild()</a></code> メソッドを用いて削除可能になりました。</li>
+ <li>{{ Interface("mozIStorageStatement") }} には <code>initialize()</code> メソッドがありましたが、削除されました。利用者は新しいステートメントオブジェクトを得るための代替として {{ Ifmethod("mozIStorageConnection", "createStatement") }} メソッドを使うべきです。</li>
+ <li><a href="/ja/docs/Storage" title="Storage">Storage</a> API が非同期リクエストのサポートを提供するようになりました。</li>
+ <li>{{ Interface("nsICookie2") }} インターフェースに新しく <code>creationTime</code> 属性が追加され、Cookie が作成された時間を取得できるようになりました。</li>
+ <li>プロトコルが登録することを許可されることを保証するために Chrome 登録の間にチェックされる{{ Interface("nsIProtocolHandler") }} へのフラグが追加されました (<code>URI_IS_LOCAL_RESOURCE</code>)。</li>
+ <li>Linux で Firefox がプラグインを探すために <code>/usr/lib/mozilla/plugins</code> を見るようになりました。以前にサポートされていた場所も同様に検索対象です。</li>
+ <li>プラグイン API がプライベートブラウジングモードのサポートを含むために更新されました。これにより、<code>NPNprivateModeBool</code> を用いているプライベートブラウジングモードの状態を調べるために、<a href="/ja/docs/NPN_GetValue" title="NPN GetValue">NPN_GetValue()</a> を使用できるようになりました。</li>
+</ul>
+
+<div>{{ 英語版章題("New features for end users") }}</div>
+
+<h2 id="エンドユーザ向け新機能">エンドユーザ向け新機能</h2>
+
+<div>{{ 英語版章題("User experience") }}</div>
+
+<h3 id="ユーザエクスペリエンス">ユーザエクスペリエンス</h3>
+
+<dl>
+ <dt>ロケーションアウェアブラウジング</dt>
+ <dd>あなたが選択するなら、Firefox 3.5 が Web サイトと現在の位置についての情報を共有することを許可できます。Firefox 3.5 はあなたが接続しているネットワークについての情報をあなたの位置を共有するために用いることができます。もちろん、プライバシーを確保するために、そう する前にあなたに許可を求めます。</dd>
+ <dt>オープンなオーディオとビデオのサポート</dt>
+ <dd>Firefox 3.5 は、オーディオのための WAV 同様、オープンな Ogg フォーマットを用いた埋め込みビデオおよびオーディオをサポートします。プラグインは必要なく、何かあるいはどうやってもあなたのプラットフォームで利用出来ないものをインストールする必要があるという旨のエラーメッセージに混乱することはありません。</dd>
+ <dt>ローカルデータストレージ</dt>
+ <dd>Web アプリケーションはあなたのコンピュータにデータを保存するために Web Storage のローカルストレージ機能を利用できるようになります。これはサイト設定からより複雑なデータまであらゆるものにとって素晴らしく役立つものです。</dd>
+</dl>
+
+<div>{{ 英語版章題("Security and privacy") }}</div>
+
+<h3 id="セキュリティとプライバシー">セキュリティとプライバシー</h3>
+
+<dl>
+ <dt>プライベートブラウジング</dt>
+ <dd>他人のコンピュータを利用する必要がありますか?プライベートブラウジングモードに切り替えることで、Cookie、履歴、その他のあらゆる潜在的なプライベートな情報を含んだあなたのセッションは全く記録されなくなります。</dd>
+ <dt>より良いプライバシーコントロール</dt>
+ <dd>プライバシー設定画面はユーザがプライベート情報をより細かくコントロールできるようにするために完全にデザインし直されました。ユー ザは履歴、Cookie、ダウンロード、フォーム入力のような情報を保持、破棄するかどうか選択できます。 さらに、ユーザは履歴とブックマークの内容をそれぞれアドレスバーの自動サジェストに含むかどうか指定できます。 ですから、アドレスバーでタイプ中に意図せずプライベートな Web アドレスがポップアップすることを防ぐことができます。</dd>
+</dl>
+
+<div>{{ 英語版章題("Performance") }}</div>
+
+<h3 id="パフォーマンス">パフォーマンス</h3>
+
+<dl>
+ <dt>より速い JavaScript パフォーマンス</dt>
+ <dd>新しい TraceMonkey JavaScript エンジンを持つ Firefox 3.5 では "AJAX" の "J" である、JavaScript が劇的にスピードアップしています。Web アプリケーションは Firefox 3 よりももっとより速くなります。</dd>
+ <dt>より速いページレンダリング</dt>
+ <dd>"Speculative parsing(投機的解釈)" のような技術のおかげで、 Firefox 3.5 では Web コンテンツがより速く描画されます。あなたのユーザは「Firefox 3.5 ではコンテンツがより速く描画される」ということ以外は知る必要がありません。</dd>
+</dl>
+
+<h2 id="See_also" name="See_also">参照</h2>
+
+<div>{{Firefox_for_developers('3')}}</div>
diff --git a/files/ja/mozilla/firefox/releases/3.6/index.html b/files/ja/mozilla/firefox/releases/3.6/index.html
new file mode 100644
index 0000000000..b9ce15d6b3
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/3.6/index.html
@@ -0,0 +1,250 @@
+---
+title: Firefox 3.6 for developers
+slug: Mozilla/Firefox/Releases/3.6
+tags:
+ - CSS
+ - Firefox
+ - Firefox 3.6
+ - Gecko
+ - Gecko 1.9.2
+ - HTML
+ - JavaScript
+ - XUL
+translation_of: Mozilla/Firefox/Releases/3.6
+---
+<p>Firefox 3.6 では新規あるいは開発中のウェブ標準のサポート、性能の向上、ウェブユーザと開発者にとってより良い体験が提供されます。このページは Firefox 3.6 で新しく利用出来るようになった機能に関する記事のリンクを提供します。</p>
+
+<div> </div>
+
+<h2 id="Web_サイトとアプリケーション開発者向け">Web サイトとアプリケーション開発者向け</h2>
+
+<h3 id="CSS">CSS</h3>
+
+<dl>
+ <dt><a href="/ja/docs/Using_gradients" title="Using gradients">グラデーションの利用</a></dt>
+ <dd>Firefox 3.6 では <a href="/ja/docs/Web/CSS/background" title="CSS の background 一括指定プロパティは、色、画像、原点と寸法、反復方法、その他の機能など、背景に関するすべてのスタイルプロパティを一括で設定します。"><code>background</code></a> において、Mozilla が提案中の <a href="/ja/docs/Web/CSS/-moz-linear-gradient" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-linear-gradient</code></a> と <a href="/ja/docs/Web/CSS/-moz-radial-gradient" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-radial-gradient</code></a> プロパティのサポートが追加されました。</dd>
+ <dt><a href="/ja/docs/CSS/Multiple_backgrounds" title="CSS/Multiple backgrounds">複数の背景</a></dt>
+ <dd><a href="/ja/docs/Web/CSS/background" title="CSS の background 一括指定プロパティは、色、画像、原点と寸法、反復方法、その他の機能など、背景に関するすべてのスタイルプロパティを一括で設定します。"><code>background</code></a> プロパティ(および <a href="/ja/docs/Web/CSS/background-color" title="CSS の background-color プロパティは、要素の背景色を設定します。"><code>background-color</code></a>、<a href="/ja/docs/Web/CSS/background-image" title="CSS の background-image プロパティは、要素に1つ以上の背景画像を設定します。"><code>background-image</code></a>、<a href="/ja/docs/Web/CSS/background-position" title="CSS の background-position プロパティは、それぞれの背景画像の初期位置を設定します。位置は background-origin で設定された位置レイヤーからの相対です。"><code>background-position</code></a>、<a href="/ja/docs/Web/CSS/background-repeat" title="CSS の background-repeat プロパティは、背景画像をどのように繰り返すかを設定します。背景画像は水平軸方向と垂直軸方向に繰り返したり、まったく繰り返さないようにしたりすることができます。"><code>background-repeat</code></a>、<a href="/ja/docs/Web/CSS/background-attachment" title="CSS の background-attachment プロパティは、背景画像の位置をビューポートの中に固定するか、包含ブロックと一緒にスクロールするかを設定します。"><code>background-attachment</code></a>)が複数の背景をサポートしました。これによりひとつのレイヤーの中で他に重なるような背景を指定できます。</dd>
+ <dt><a href="/ja/docs/CSS/Media_queries#Mozilla-specific_media_features" title="CSS/Media queries#Mozilla-specific media features">Mozilla 独自のメディア特性</a></dt>
+ <dd>Mozilla 独自のシステムメトリックスに複数のメディア特性が追加されました。このメディア特性により、タッチサポートのような機能の有効性の確認を、<a href="/ja/docs/CSS/Media_queries" title="CSS/Media queries">media queries</a> を使用してより安全に行えるようになりました。</dd>
+ <dt><a href="/ja/docs/CSS/Scaling_background_images" title="CSS/Scaling background images">背景画像のスケーリング</a></dt>
+ <dd><a class="external" href="http://dev.w3.org/csswg/css3-background/" title="http://dev.w3.org/csswg/css3-background/#the-background-size-property">CSS 3 Backgrounds and Borders 草案</a>の <code>background-size<span style="font-family: Verdana,Tahoma,sans-serif;"> プロパティが</span></code> <a href="/ja/docs/Web/CSS/-moz-background-size" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-background-size</code></a> としてサポートされました。</dd>
+ <dt><a href="/ja/docs/About_WOFF" title="About WOFF">WOFF フォントのサポート</a></dt>
+ <dd><a href="/ja/docs/Web/CSS/@font-face" title="CSS の @font-face @-規則は、テキストを表示するための独自フォントを指定します。フォントはリモートサーバーまたはユーザー自身のコンピューターのどちらかから読み込むことができます。"><code>@font-face</code></a> が新しい WOFF ウェブフォントファイルフォーマットをサポートしました。</dd>
+ <dt><a href="/ja/docs/CSS/pointer-events" title="CSS/pointer-events">ポインタイベント</a></dt>
+ <dd><a href="/ja/docs/Web/CSS/pointer-events" title="CSS の pointer-events プロパティは、特定のグラフィック要素がマウスイベントの対象になる可能性のある環境 (存在する場合) を設定します。"><code>pointer-events</code></a> プロパティにより、要素がマウスポインタのイベントのターゲットであるかどうかをコンテンツが指定できるようになります。</dd>
+</dl>
+
+<h4 id="その他の_CSS_の変更">その他の CSS の変更</h4>
+
+<ul>
+ <li><a class="external" href="http://www.w3.org/TR/css3-values/#lengths" title="http://www.w3.org/TR/css3-values/#lengths">CSS3 Values and Units</a> で定義されている長さの単位 <a href="/ja/docs/CSS/Length#Relative_length_units" title="CSS/length#Relative length units"><code>rem</code></a> がサポートされました。 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=472195" title="FIXED: support css3 root em ('rem' or 're') units">バグ 472195</a></li>
+ <li><a href="/ja/docs/Web/CSS/image-rendering" title="CSS の image-rendering プロパティは、画像を拡大縮小するアルゴリズムを設定します。このプロパティは要素自身に適用され、他のプロパティで設定されるあらゆる画像、子孫要素に適用されます。"><code>image-rendering</code></a> が画像、背景画像、ビデオ、canvas でサポートされました。 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=423756" title="FIXED: Request: Switch for authors to turn on/off bilinear filtering when enlarging images">バグ 423756</a></li>
+ <li><a href="/ja/docs/Web/CSS/text-align" title="CSS の text-align プロパティは、インラインまたは表セルボックスの水平方向の配置を設定します。つまり、 vertical-align のように、ただし水平方向に動作します。"><code>text-align</code></a>:end がサポートされました。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=299837" title="FIXED: [FIX]add support for text-align: end">バグ 299837</a></li>
+ <li>table <a href="/ja/docs/Web/CSS/display" title="CSS の display プロパティは、要素の表示種別を指定し、これは要素がボックスを生成する方法の二つの基本的な品質から成ります。 — 外部表示種別はボックスがフローレイアウトにどのように加わるのかを定義し、内部表示種別はボックスの子がどのように配置されるのかを定義します。"><code>display</code></a> タイプの要素に対する DOM の変更がより良く動作するようになりました。</li>
+ <li><code>indeterminate</code> 属性が <code>true</code> である <code>checkbox</code> <a class="internal" href="/ja/docs/HTML/Element/Input" title="HTML/Element/Input"><code>input</code></a> 要素にマッチする <a href="/ja/docs/Web/CSS/:indeterminate" title="CSS の :indeterminate 疑似クラス は、中間の状態にあるフォームの要素を表します。"><code>:indeterminate</code></a> 擬似クラスのサポートが追加されました。</li>
+ <li><a href="/ja/docs/Web/CSS/:-moz-locale-dir(ltr)" title='CSS の :-moz-locale-dir(ltr) 疑似クラスは Mozilla 拡張であり、ユーザーインターフェイスが左から右へ向けて表示される要素に一致します。これは設定の intl.uidirection.locale (locale は現在のロケール) が "ltr" に設定されていることで特定されます。'><code>:-moz-locale-dir(ltr)</code></a> と <a href="/ja/docs/Web/CSS/:-moz-locale-dir(rtl)" title='CSS の :-moz-locale-dir(ltr) 疑似クラスは Mozilla 拡張であり、ユーザーインターフェイスが右から左へ向けて表示される要素に一致します。これは設定の intl.uidirection.locale (locale は現在のロケール) が "rtl" に設定されていることで特定されます。'><code>:-moz-locale-dir(rtl)</code></a> が追加され、ユーザインタフェースが left-to-right または right-to-left のどちらで描画されるかに応じて、容易にレイアウトをカスタマイズできるようになりました。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=478416" title="FIXED: Replace chromedir with something more sane">バグ 478416</a></li>
+ <li>ウィンドウ化されたプラグインは CSS transforms の中では表示されなくなりました。これはコンポジターによって正しく変換されないためです。</li>
+</ul>
+
+<h3 id="HTML">HTML</h3>
+
+<dl>
+ <dt><a href="/ja/docs/Using_files_from_web_applications" title="Using files from web applications">ウェブアプリケーションからファイルを扱う</a></dt>
+ <dd>新しい HTML5 File API のサポートが Gecko に追加され、ウェブアプリケーションがユーザの選択したローカルファイルにアクセス出来るようになりました。これには <code>input type="file"</code> HTML 要素において複数のファイルを選択する <code>multiple</code> 属性のサポートが含まれます。</dd>
+</dl>
+
+<dl>
+ <dt>HTML5 video がポスター・フレームをサポート</dt>
+ <dd><a class="internal" href="/ja/docs/HTML/Element/Video" title="HTML/Element/Video"><code>video</code></a> 要素で <code>poster</code> 属性がサポートされ、コンテンツがビデオの再生が開始されるまでに表示されるポスター・フレームを指定できるようになりました。</dd>
+ <dt>チェックボックスとラジオボタンが <code>indeterminate</code> 属性をサポート</dt>
+ <dd><code>checkbox</code> と <code>radio</code> タイプの HTML <a class="internal" href="/ja/docs/HTML/Element/Input" title="HTML/Element/Input"><code>input</code></a> 要素が indeterminate 属性をサポートし、3番目の "indeterminate" 状態を持てるようになりました。</dd>
+ <dt>Canvas 画像のスムージングが制御可能に</dt>
+ <dd><a class="internal" href="/ja/docs/HTML/Canvas" title="HTML/canvas"><code>canvas</code></a> 要素のスケーリング時に、新しい <a class="internal" href="/ja/docs/Canvas_tutorial/Using_images#Controlling_image_scaling_behavior" title="Canvas tutorial/Using images#Controlling image scaling behavior"><code>mozImageSmoothingEnabled</code></a> プロパティでスムージングの有無を指定できるようになりました。</dd>
+</dl>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<p>Gecko 1.9.2 は JavaScript 1.8.2 を採用し、<a href="/En/JavaScript/ECMAScript_5_support_in_Mozilla" title="https://developer.mozilla.org/En/JavaScript/ECMAScript_5_support_in_Mozilla">ECMAScript 5 standard</a> から多くの言語機能が追加されました:</p>
+
+<ul>
+ <li><a href="/ja/docs/JavaScript/Reference/Global_Objects/Date/parse" title="Core JavaScript 1.5 Reference/Global Objects/Date/parse"><code>Date.parse()</code></a> は YYYY-MM-DD のような ISO 8601 dates をデコードできるようになりました。</li>
+ <li>function インスタンスの <a href="/ja/docs/JavaScript/Reference/Global_Objects/Function/prototype" title="Core JavaScript 1.5 Reference/Global Objects/Function/prototype"><code>prototype</code></a> プロパティは列挙可能 (enumerable)ではなくなりました。</li>
+</ul>
+
+<h3 id="DOM">DOM</h3>
+
+<dl>
+ <dt>Web workers が自己終了可能に</dt>
+ <dd>Workers が <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWorkerScope#close()">nsIWorkerScope.close()</a></code> メソッドをサポートし、自分自身で終了できるようになりました。</dd>
+ <dt>ドラッグ&ドロップがファイルをサポート</dt>
+ <dd>ドラッグリスナーで提供される <a href="/ja/docs/DragDrop/DataTransfer" title="DragDrop/DataTransfer"><code>DataTransfer</code></a> オブジェクトがドラッグされたファイルを含むようになりました。</dd>
+ <dt><a href="/ja/docs/Detecting_device_orientation" title="Detecting device orientation">デバイスの傾きの検出</a></dt>
+ <dd>コンテンツはデバイスが加速度センサー(accelerometer)をサポートしていれば <a href="/ja/docs/DOM/MozOrientation" title="DOM/MozOrientation"><code>MozOrientation</code></a> イベントによりその傾きを検出できるようになりました。Firefox 3.6 は Mac のノートブックで加速度センサーをサポートします。</dd>
+ <dt><a href="/ja/docs/DOM/Detecting_document_width_and_height_changes" title="DOM/Detecting document width and height changes">document の幅と高さの変化の検出</a></dt>
+ <dd>document の <code>scrollWidth</code> または <code>scrollHeight</code> プロパティが変化すると、 <code>MozScrollAreaChanged</code> イベントが発動します。</dd>
+</dl>
+
+<h4 id="その他の_DOM_の変更">その他の DOM の変更</h4>
+
+<ul>
+ <li><code>getBoxObjectFor()</code> メソッドが<strong>削除されました</strong>。このメソッドは非標準であり、さらに非標準なものを Web にさらすことになるからです。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=340571" title="FIXED: getBoxObjectFor leaking-onto-the-Web disaster">バグ 340571</a> を参照してください。これはまた、Gecko の検出にこのメソッドをコールする MooTools にも影響します。これは最新の MooTools で修正されたのでいずれ更新されるでしょう。</li>
+ <li>DOM windows に新しい <a class="internal" href="/ja/docs/DOM/window.mozInnerScreenX" title="DOM/window.mozInnerScreenX"><code>mozInnerScreenX</code></a> と <a class="internal" href="/ja/docs/DOM/window.mozInnerScreenY" title="DOM/window.mozInnerScreenY"><code>mozInnerScreenY</code></a> プロパティが追加されました。これらはウィンドウ表示領域の左上コーナーを基準にしたスクリーンの座標を返します。</li>
+ <li>chrome に対してのみアクセス可能な新しい <a class="internal" href="/ja/docs/DOM/window.mozScreenPixelsPerCSSPixel" title="DOM/window.mozScreenPixelsPerCSSPixel"><code>mozScreenPixelsPerCSSPixel</code></a> プロパティは CSS ピクセルとスクリーン・ピクセルの変換率を提供します。この値はコンテンツのズームレベルに応じて変化します。</li>
+ <li>ページ URI の文書フラグメント識別子("#" (ハッシュ) 文字の後の部分)が変更になったとき、新たな <code>hashchange</code> イベントがページに送られます。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=385434" title="FIXED: Add support for HTML5 onhashchange (event for named anchor changes)">バグ 385434</a>、<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=504837" title="FIXED: hashchange event should not be restricted to firing only when the document's ready state is &quot;complete&quot;">バグ 504837</a>、および <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=504220" title="FIXED: document.body and window should contain onhashchange attribute">バグ 504220</a> を参照してください。</li>
+ <li><code>document.readystate で</code> <code>complete </code>属性がサポートされました。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=347174" title='FIXED: Implement document.readystate == "complete"'>バグ 347174</a>。</li>
+ <li>HTML5 の <code><a class="internal" href="/en/DOM/element.classList" title="element.classList">element.classList</a></code> がサポートされ、クラス属性の処理が容易になりました。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=501257" title="FIXED: Implement HTML 5's HTMLElement.classList property">バグ 501257</a></li>
+ <li>HTML 文書の <code>localName</code> と <code>namespaceURI</code> が XHTML 文書と同じように振舞うようになりました。<code>localName</code> は小文字で値を返し、HTML 要素の <code>namespaceURI</code> は <code>"<a class="external" href="http://www.w3.org/1999/xhtml" rel="freelink">http://www.w3.org/1999/xhtml</a>"</code> です。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMGeoPositionAddress" title="">nsIDOMGeoPositionAddress</a></code> インタフェースによりジオロケーションの address がサポートされ、新しいフィールドが <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMGeoPosition" title="">nsIDOMGeoPosition</a></code> に追加されました。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=503942" title="FIXED: Implement Geolocation Addresses">バグ 503942</a></li>
+ <li><a href="/ja/docs/Web/API/Window/getComputedStyle" title="要素の算出スタイルを返します。算出スタイルは、要素に対して適用される全ての CSS プロパティにおいて最終的に算出された値です。"><code>window.getComputedStyle</code></a> 関数は <code>url()</code> 値の中をクォートして返すようになりました。</li>
+</ul>
+
+<h3 id="XPath">XPath</h3>
+
+<dl>
+ <dt>choose() XPath メソッドをサポート</dt>
+ <dd><a href="/ja/docs/XPath/Functions/choose" title="XPath/Functions/choose"><code>choose()</code></a> メソッドが <a href="/ja/docs/XPath" title="XPath">XPath</a> でサポートされました。</dd>
+</dl>
+
+<h2 id="XUL_とアドオン開発者向け">XUL とアドオン開発者向け</h2>
+
+<p>あなたが拡張機能の開発者なら、あなたの拡張機能に影響するかもしれない変更点の役に立つ概要を記した <a class="internal" href="/ja/docs/Updating_extensions_for_Firefox_3.6" title="Updating extensions for Firefox 3.6">Updating extensions for Firefox 3.6</a> を読むことから始めてください。プラグインの開発者は <a class="internal" href="/ja/docs/Updating_plug-ins_for_Firefox_3.6" title="Updating plug-ins for Firefox 3.6">Updating plug-ins for Firefox 3.6</a> を読んでください。</p>
+
+<h3 id="新機能">新機能</h3>
+
+<dl>
+ <dt><a href="/ja/docs/Detecting_device_orientation" title="Detecting device orientation">デバイスの傾きの検出</a></dt>
+ <dd>コンテンツはデバイスが加速度センサー(accelerometer)をサポートしていれば <a href="/ja/docs/DOM/MozOrientation" title="DOM/MozOrientation"><code>MozOrientation</code></a> イベントによりその傾きを検出できるようになりました。Firefox 3.6 は Mac のノートブックで加速度センサーをサポートします。</dd>
+ <dt><a href="/ja/docs/Monitoring_HTTP_activity" title="Monitoring HTTP activity">HTTP アクティビティのモニタリング</a></dt>
+ <dd>HTTP トランザクションをモニタし、リアルタイムでリクエストとレスポンスを観察できます。</dd>
+ <dt><a href="/ja/docs/Working_with_the_Windows_taskbar" title="Working with the Windows taskbar">Windows のタスクバーとの協調</a></dt>
+ <dd>Windows 7 またはそれ以降のタスクバー内で、ウィンドウの設定の変更が可能になりました。<em>Firefox 3.6 ではこの機能はデフォルトで無効になっています。</em></dd>
+</dl>
+
+<h3 id="Places">Places</h3>
+
+<ul>
+ <li>Places のクエリーは結果にリダイレクトされたページが含んでいるかどうかを特定できるように <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryQueryOptions" title="">nsINavHistoryQueryOptions</a></code> インタフェースで <code>redirectsMode</code> を利用できるようになりました。</li>
+ <li>新しい <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIFaviconService#expireAllFavicons()">nsIFaviconService.expireAllFavicons()</a></code> メソッドが <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFaviconService" title="">nsIFaviconService</a></code> インターフェースに追加されました。</li>
+</ul>
+
+<h3 id="Storage">Storage</h3>
+
+<dl>
+ <dt><a href="/ja/docs/Storage#Collation_(sorting)" title="Storage#Collation (sorting)">Storage API でデータのロケールを考慮した照合がサポートされました</a></dt>
+ <dd>Gecko 1.9.2 にロケールを考慮した技術を用いて最適化された照合を提供する複数の新しい(ソート付き)照合メソッドが追加されました。</dd>
+ <dt><a href="/ja/docs/mozIStorageStatementParams#Enumeration_of_properties" title="mozIStorageStatementParams#Enumeration of properties">ステートメントのプロパティが列挙可能になりました</a></dt>
+ <dd>ステートメントのすべてのプロパティを列挙する <code><a class="internal" href="/ja/docs/JavaScript/Reference/Statements/for...in" title="Core JavaScript 1.5 Reference/Statements/for...in">for..in</a></code> enumeration が利用できるようになりました。</dd>
+ <dt>mozIStorageStatement の getParameterIndex の動作が 3.5 と 3.6 の間で変更された</dt>
+ <dd>詳細は <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=528166" title="mozIStorageStatement getParameterIndex causes NS_ERROR_ILLEGAL_VALUE">バグ 528166</a> を参照してください。</dd>
+ <dt>複数のパラメータのセットを非同期バインドしてステートメントを実行</dt>
+ <dd>詳細は <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490085" title="FIXED: Add ability to bind multiple sets of parameters and execute asynchronously">バグ 490085</a> を参照してください。ドキュメント準備中です。</dd>
+</dl>
+
+<h3 id="Preferences">Preferences</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPrefService" title="">nsIContentPrefService</a></code> インタフェースが新しく二つのメソッドを持ちました: <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIContentPrefService#getPrefsByName()">nsIContentPrefService.getPrefsByName()</a></code> と <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIContentPrefService#removePrefsByName()">nsIContentPrefService.removePrefsByName()</a></code>。</li>
+</ul>
+
+<h3 id="テーマ">テーマ</h3>
+
+<p>テーマに関する変更の詳細は <a class="internal" href="/ja/docs/Updating_themes_for_Firefox_3.6" title="Updating themes for Firefox 3.6">Updating themes for Firefox 3.6</a> を参照してください。</p>
+
+<dl>
+ <dt><a href="/ja/docs/Themes/Lightweight_themes" title="Themes/Lightweight themes">軽量テーマ</a></dt>
+ <dd>Firefox 3.6 は軽量テーマをサポートします。これは作成するのが簡単なテーマで、ブラウザウィンドウの上部(URL バーとボタンバー)と下部(ステータスバー)に単純に画像を適用します。これは既存の <a class="external" href="http://www.getpersonas.com/" title="http://www.getpersonas.com/">Personas</a> テーマ構造の Firefox への統合です。</dd>
+</dl>
+
+<h3 id="その他">その他</h3>
+
+<ul>
+ <li>Firefox は components ディレクトリ内にインストールされたサードパーティのコンポーネントをロードしなくなりました。これはバグのあるサードパーティコンポーネントが実行されるのを防止することによる安定性の向上に貢献します。このやり方でコンポーネントをインストールする開発者は標準的なアドオンとしてインストールできるように<a href="/ja/docs/Migrating_raw_components_to_add-ons" title="Migrating raw components to add-ons">それらコンポーネントを XPI パッケージとして再パッケージする必要があります</a>。</li>
+ <li>拡張において chrome を登録するために用いていた <code>contents.rdf は利用できなくなりました</code>。 <a class="internal" href="/ja/docs/Install_Manifests" title="Install Manifests"><code>chrome.manifest</code></a> ファイルを代わりに利用しなければなりません。 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=492008" title="FIXED: Drop support for contents.rdf chrome registrations">バグ 492008</a> を参照してください。</li>
+ <li>メニューバーを自動的に隠すためのサポートが追加されました。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=477256" title="FIXED: Implement menubar auto-hiding in toolkit">バグ 477256</a> を参照してください。</li>
+ <li>オブジェクトに対して <code>container-live-role</code> 属性を持たせるためのサポートが追加されました。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=391829" title="FIXED: Add support for container-live-role to object attributes">バグ 391829</a> を参照してください。</li>
+ <li><code>tabs-closebutton</code> バインディングが削除されました。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=500971" title="FIXED: Remove obsolete tabs-closebutton binding">バグ 500971</a> を参照してください。</li>
+ <li>発生したイベントに基づいて音を鳴らすための <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISound" title="">nsISound</a></code> に対するサポートが追加されました。 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=502799" title="FIXED: add new nsISound method for the event sounds">バグ 502799</a> を参照してください。</li>
+ <li>Gecko 1.9 での新しいドラッグ&ドロップ API をサポートするために <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsITreeView" title="">nsITreeView</a></code> のメソッドである <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsITreeView#canDrop()">nsITreeView.canDrop()</a></code> および <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsITreeView#drop()">nsITreeView.drop()</a></code> の構文が変更になりました。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=455590" title="FIXED: Allow new dnd api with tree views">バグ 455590</a> を参照してください。</li>
+ <li>Windows のダイアログとウィザードのデフォルトボタンへのマウスカーソルの移動がサポートされました。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=76053" title='FIXED: Windows mouse integration: "Snap to default button in dialog boxes"'>バグ 76053</a> を参照してください。これはダイアログとウィザード要素によって自動的に行われます。ただし、XUL アプリケーションが <code>window</code> 要素のウィンドウを生成し、それがデフォルトボタンを持つ場合は、ウィンドウの onload イベントで <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIDOMChromeWindow#notifyDefaultButtonLoaded()">nsIDOMChromeWindow.notifyDefaultButtonLoaded()</a></code> をコールする必要があります。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsILocalFileMac" title="">nsILocalFileMac</a></code> インタフェースが二つのメソッドを持ちました: <code>setFileTypeAndCreatorFromMIMEType()</code> と <code>setFileTypeAndCreatorFromExtension()</code>。</li>
+ <li>新しい <a class="internal" href="/ja/docs/JavaScript_code_modules/NetUtil.jsm" title="JavaScript code modules/NetUtil.jsm"><code>NetUtils.jsm</code></a> コードモジュールは、入力ストリームから出力ストリームに非同期にデータをコピーする簡単に利用できるメソッドを提供します。</li>
+ <li>新しい <a class="internal" href="/ja/docs/JavaScript_code_modules/openLocationLastURL.jsm" title="JavaScript code modules/openLocationLastURL.jsm"><code>openLocationLastURL.jsm</code></a> コードモジュールは、プライベートブラウジングモードであるかを正しく判断して、"Open Location" ダイアログボックスの記憶された URL データの読み込みと変更を容易にします。</li>
+ <li>Windows では、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIScreen" title="">nsIScreen</a></code> インタフェースは、グラフィックスドライバーが32ビットをサポートしていても、ピクセルごとに 24 ビットカラーをレポートします。これは24ビットは実際に利用されているカラーピクセルの数をより正確に表現するためです。</li>
+ <li>Window では <code><a href="/ja/docs/Mozilla/Tech/XUL/toolbar" title="toolbar">toolbar</a></code> XUL 要素の新しい <code id="a-autohide"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/autohide">autohide</a></code> アトリビュートを用いてメニューバーを隠すことができます。</li>
+ <li><span id="m-loadOneTab"><code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Method/loadOneTab">loadOneTab</a></code></span> と <span id="m-addTab"><code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Method/addTab">addTab</a></code></span> メソッドは新しい <code>relatedToCurrent</code> パラメータをサポートし、加えて、多くのパラメータが省略可能であるために名前によるパラメータの指定ができます。</li>
+ <li>インストール manifests で "hidden" プロパティはサポートされなくなりました。アドオンマネージャウィンドウ上でユーザが見ることのできないアドオンは不可能になりました。</li>
+ <li>@mozilla.org/webshell;1 コンポーネントはもう存在しません。代わりに @mozilla.org/docshell;1 を使う必要があります。</li>
+ <li>タイマーイベントをスケジュールするために、タイマーがコールするオブジェクトをインスタンシエイトすることなく update-timer カテゴリで登録できるようになりました。代わりに必要になったときにインスタンシエイトされます。詳細は <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIUpdateTimerManager#registerTimer()">nsIUpdateTimerManager.registerTimer()</a></code> を参照してください。</li>
+ <li>The <a href="/en/NPN_GetValue" title="en/NPN GetValue"><code>NPN_GetValue()</code></a> 関数はもはや変数値 <code>NPNVserviceManager</code>, <code>NPNVDOMelement</code>, <code>NPNVDOMWindow </code>を経由した XPCOM へのアクセスを提供しません。これは将来のバージョンの Gecko バージョンでプラグインを分離したプロセスで動作させるための作業の一部です。</li>
+</ul>
+
+<h2 id="FirefoxGecko_開発者向け">Firefox/Gecko 開発者向け</h2>
+
+<p>いくつかの変更はあなたが Firefox そのものの内部で作業している場合にだけ興味を持つことでしょう。</p>
+
+<h3 id="マージされたインタフェース">マージされたインタフェース</h3>
+
+<p>以下のインタフェースは統合されました:</p>
+
+<ul>
+ <li><code>nsIPluginTagInfo2</code> は <code>nsIPluginTagInfo</code> にマージされました。</li>
+ <li><code>nsIPluginInstanceInternal</code>, <code>nsIPPluginInstancePeer</code>, <code>nsIPluginInstancePeer1</code>, <code>nsIPluginInstancePeer2</code>, <code>nsIPluginInstancePeer3</code> はすべて <code>nsIPluginInstance</code> にマージされました。</li>
+ <li><code>nsIWindowlessPlugInstPeer</code> は <code>nsIPluginInstance</code> にマージされました。</li>
+ <li><code>nsIPluginManager</code> と <code>nsIPluginManager2</code> は <code>nsIPluginHost</code> にマージされました。</li>
+</ul>
+
+<h3 id="削除されたインタフェース">削除されたインタフェース</h3>
+
+<p>以下のインタフェースは利用されていない、実装されていないまたは旧式であるためにすべて削除されました:</p>
+
+<ul>
+ <li><code>nsIFullScreen</code></li>
+ <li><code>nsIDOMSVGListener</code></li>
+ <li><code>nsIDOMSVGZoomListener</code></li>
+ <li><code>nsIInternetConfigService</code></li>
+ <li><code>nsIDKey</code></li>
+ <li><code>nsIEventHandler</code></li>
+ <li><code>nsIJRILiveConnectPIPeer</code></li>
+ <li><code>nsIJRILiveConnectPlugin</code></li>
+ <li><code>nsIScriptablePlugin</code></li>
+ <li><code>nsIClassicPluginFactory</code></li>
+ <li><code>nsIFileUtilities</code></li>
+</ul>
+
+<h3 id="移動されたインタフェース">移動されたインタフェース</h3>
+
+<p>以下のインタフェースは以前の IDL ファイルから新しい場所に移動されました:</p>
+
+<ul>
+ <li><code>nsIDOMNSCSS2Properties</code> は専用の IDL ファイル (<code>dom/interfaces/css/nsIDOMCSS2Properties.idl</code>) に移動されました。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIUpdateTimerManager" title="">nsIUpdateTimerManager</a></code> はそれ自身の IDL ファイル内に配置されます。</li>
+</ul>
+
+<p>多くのインタフェースが移動されました。完全なリストは <a href="/ja/docs/Interfaces_moved_in_Firefox_3.6" title="Interfaces moved in Firefox 3.6">Interfaces moved in Firefox 3.6</a> を参照してください。</p>
+
+<h3 id="その他のインタフェースの変更">その他のインタフェースの変更</h3>
+
+<p>以下のようなさまざまな変更が行われました:</p>
+
+<ul>
+ <li><code>nsIPlugin</code> インタフェースは <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFactory" title="">nsIFactory</a></code> ではなく <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> から継承します。</li>
+ <li><code>nsIPluginHost</code> インタフェースは <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFactory" title="">nsIFactory</a></code> ではなく <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> から継承しますす。</li>
+ <li><code>nsIFrame</code> インタフェースは <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> ではなく <code>nsQueryFrame</code> から継承します。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDeviceContext" title="">nsIDeviceContext</a></code> メソッド <code>getPaletteInfo()</code> は今まで実装されてことがないので削除されました。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIScriptContext" title="">nsIScriptContext</a></code> メソッド <code>reportPendingException()</code> はもう利用されていないので削除されました。</li>
+</ul>
+
+<h3 id="アクセシビリティコードの変更">アクセシビリティコードの変更</h3>
+
+<ul>
+ <li>メインドキュメントの子どもが変更された時と同様に、frame と iframe の子どもが変更されたときに <span style="font-family: monospace;">EVENT</span><code>_REORDER</code> <a href="/ja/docs/XPCOM_Interface_Reference/nsIAccessibleEvent" title="XPCOM Interface Reference/nsIAccessibleEvent">アクセシビリティイベント</a> が送信されます。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=420845" title="FIXED: Fire event_reorder on any embedded frames/iframes whos document has just loaded.">バグ 420845</a> を参照してください。</li>
+ <li><code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIAccessibleTable#selectRow()">nsIAccessibleTable.selectRow()</a></code> は指定された列が選択される前にどんなカレントの選択であっても正しく削除します。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">参照</h2>
+
+<div><div class="multiColumnList">
+<ul>
+<li><a href="/ja/docs/Mozilla/Firefox/Releases/3.5">Firefox 3.5 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/3">Firefox 3 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/2">Firefox 2 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/1.5">Firefox 1.5 for developers</a></li></ul>
+</div></div>
diff --git a/files/ja/mozilla/firefox/releases/3/index.html b/files/ja/mozilla/firefox/releases/3/index.html
new file mode 100644
index 0000000000..606e463b3b
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/3/index.html
@@ -0,0 +1,181 @@
+---
+title: Firefox 3 for developers
+slug: Mozilla/Firefox/Releases/3
+tags:
+ - Firefox
+ - Firefox 3
+translation_of: Mozilla/Firefox/Releases/3
+---
+<p>もしあなたが開発者で、Firefox 3 におけるすべての新機能について情報を得ようとしているなら、ここは理解を深めるのに最も適した場所です。この記事は、Firefox 3 に追加された機能をカバーする新しい記事の一覧を提供します。小さな変更が必ずしもすべてカバーされているわけではありませんが、主要な改善を学ぶ助けにはなるでしょう。</p>
+
+<h2 id="New_developer_features_in_Firefox_3" name="New_developer_features_in_Firefox_3">Firefox 3 の開発者向け新機能</h2>
+
+
+
+<h3 id="For_web_site_and_application_developers" name="For_web_site_and_application_developers">Web サイトと Web アプリケーション開発者向け</h3>
+<dl>
+ <dt><a href="/ja/docs/Updating_web_applications_for_Firefox_3" title="Updating_web_applications_for_Firefox_3">Updating web applications for Firefox 3</a></dt>
+ <dd>Firefox 3 における新機能を活用するために Web サイトや Web アプリケーションで必要となるかもしれない変更についての情報を提供します。</dd>
+ <dt><a href="/ja/docs/Online_and_offline_events" title="Online_and_offline_events">Online and offline events</a></dt>
+ <dd>Firefox 3 は WHATWG のオンライン・オフラインイベントをサポートします。これは、Web アプリケーションや拡張機能から、インターネットに接続しているかどうかや、接続開始・終了のタイミングを検出できるようにします。</dd>
+ <dt><a href="/ja/docs/Web-based_protocol_handlers" title="Web-based_protocol_handlers">Web-based protocol handlers</a></dt>
+ <dd><code>navigator.registerProtocolHandler()</code> メソッドを利用して、Web アプリケーションをプロトコルハンドラとして登録できるようになりました。</dd>
+ <dt><a href="/ja/docs/Drawing_text_using_a_canvas" title="Drawing_text_using_a_canvas">Drawing text using a canvas</a></dt>
+ <dd>Firefox 3 でサポートされた標準化されていない API を利用して、Canvas 内にテキストを描画できるようになりました。</dd>
+ <dt><a href="/ja/docs/Canvas_tutorial/Transformations#Transforms" title="Canvas_tutorial/Transformations#Transforms">Transform support for canvas</a></dt>
+ <dd>Firefox が Canvas の <code>transform()</code> と <code>setTransform()</code> メソッドをサポートするようになりました。</dd>
+ <dt><a href="/ja/docs/Using_microformats" title="Using_microformats">Using microformats</a></dt>
+ <dd>Firefox に Microformats を扱うための API が実装されました。</dd>
+ <dt><a href="/ja/docs/Drag_and_drop_events" title="Drag_and_drop_events">Drag and drop events</a></dt>
+ <dd>Firefox 3 は、ドラッグが開始されるときと終了したときにドラッグ操作に対するソースノードへ送られる新しいイベントをサポートします。</dd>
+ <dt><a href="/ja/docs/Focus_management_in_HTML" title="Focus_management_in_HTML">Focus management in HTML</a></dt>
+ <dd>新しい HTML 5 の <code>activeElement</code> 及び <code>hasFocus</code> 属性がサポートされます。</dd>
+ <dt><a href="/ja/docs/Offline_resources_in_Firefox" title="Offline_resources_in_Firefox">Offline resources in Firefox</a></dt>
+ <dd>Firefox で、Web アプリケーションがオフラインの間でも使えるようにするキャッシュリソースをリクエストできるようになりました。</dd>
+ <dt><a href="/ja/docs/CSS_improvements_in_Firefox_3" title="CSS_improvements_in_Firefox_3">CSS improvements in Firefox 3</a></dt>
+ <dd>Firefox 3 は、CSS サポートにおける数々の改善を行っています。</dd>
+ <dt><a href="/ja/docs/DOM_improvements_in_Firefox_3" title="DOM_improvements_in_Firefox_3">DOM improvements in Firefox 3</a></dt>
+ <dd>Firefox 3 は、DOM 実装において、いくつかの Internet Explorer 独自拡張を含む、多くの新機能を提供します。</dd>
+ <dt><a href="/ja/docs/New_in_JavaScript_1.8" title="New_in_JavaScript_1.8">JavaScript 1.8 support</a></dt>
+ <dd>Firefox 3 は JavaScript 1.8 をサポートします。</dd>
+ <dt><a href="/ja/docs/EXSLT" title="EXSLT">EXSLT support</a></dt>
+ <dd>Firefox 3 は、<a href="/ja/docs/XSLT" title="XSLT">XSLT</a> の拡張となる <a href="/ja/docs/EXSLT" title="EXSLT">EXSLT</a> の実質的なサブセットのサポートを提供します。</dd>
+ <dt><a href="/ja/docs/SVG_improvements_in_Firefox_3" title="SVG_improvements_in_Firefox_3">SVG improvements in Firefox 3</a></dt>
+ <dd>Firefox 3 での SVG サポートは、24 を超える新しいフィルタ、いくつかの新しい要素と属性、そして、その他の改良を含み、大幅に強化されました。</dd>
+ <dt><a href="/ja/docs/Animated_PNG_graphics" title="Animated_PNG_graphics">Animated PNG graphics</a></dt>
+ <dd>Firefox 3 は、アニメーション PNG (APNG) 画像フォーマットをサポートしています。</dd>
+</dl>
+
+
+
+
+<h3 id="For_XUL_and_extension_developers" name="For_XUL_and_extension_developers">XUL と拡張開発者向け</h3>
+
+
+<h4 id=".E9.87.8D.E8.A6.81.E3.81.AA.E5.A4.89.E6.9B.B4.E3.81.A8.E6.94.B9.E8.89.AF" name=".E9.87.8D.E8.A6.81.E3.81.AA.E5.A4.89.E6.9B.B4.E3.81.A8.E6.94.B9.E8.89.AF">重要な変更と改良</h4>
+<dl>
+ <dt><a href="/ja/docs/Updating_extensions_for_Firefox_3" title="Updating_extensions_for_Firefox_3">Updating extensions for Firefox 3</a></dt>
+ <dd>拡張機能を Firefox 3 に対応させるにあたって必要となることのガイドを提供します。</dd>
+ <dt><a href="/ja/docs/XUL_improvements_in_Firefox_3" title="XUL_improvements_in_Firefox_3">XUL improvements in Firefox 3</a></dt>
+ <dd>Firefox 3 は、新しいスライドスケール、日付と時刻の選択ウィジェット、スピンボタンを含む、多くの新しい XUL 要素を提供します。</dd>
+ <dt><a href="/ja/docs/Templates_in_Firefox_3" title="Templates_in_Firefox_3">Templates in Firefox 3</a></dt>
+ <dd>テンプレートは Firefox 3 で大幅に改善されました。主な改善は、独自のクエリプロセッサを使って、RDF 以外の種類のデータソースも扱えるようになったことです。</dd>
+ <dt><a href="/ja/docs/Extension_Versioning,_Update_and_Compatibility#Securing_Updates" title="Extension_Versioning,_Update_and_Compatibility#Securing_Updates">Securing updates</a></dt>
+ <dd>ユーザにより安全な更新を提供するため、アドオンの更新をインストールする前に、安全な手段を使って更新情報を取得することが必須となりました。<a href="http://addons.mozilla.org">Firefox Add-ons</a> に登録されているアドオンは、自動でこの手段を提供します。</dd>
+ <dt><a href="/ja/docs/Places_migration_guide" title="Places_migration_guide">Places migration guide</a></dt>
+ <dd>既存の拡張機能を Places API に対応させる方法についての記事。</dd>
+ <dt><a href="/ja/docs/Download_Manager_improvements_in_Firefox_3" title="Download_Manager_improvements_in_Firefox_3">Download Manager improvements in Firefox 3</a></dt>
+ <dd>Firefox 3 のダウンロードマネージャには、複数のプログレスリスナーへのサポートを含む、新たな API や改善された API が含まれています。</dd>
+ <dt><a href="/ja/docs/Using_nsILoginManager" title="Using_nsILoginManager">Using nsILoginManager</a></dt>
+ <dd>パスワードマネージャは、新しいログインマネージャに置き換えられました。</dd>
+ <dt><a href="/ja/docs/XBL/XBL_1.0_Reference/Elements#binding" title="XBL/XBL_1.0_Reference/Elements#binding">Embedding XBL bindings</a></dt>
+ <dd>XBL バインディングを、別の XML ファイルから読み込む代わりに、Chrome コードから <code>data:</code> URL スキーマを使って直接組み込むことができるようになりました。</dd>
+ <dt><a href="/ja/docs/Localizing_extension_descriptions" title="Localizing_extension_descriptions">Localizing extension descriptions</a></dt>
+ <dd>Firefox 3 では、アドオンのメタデータをローカライズする新しい方法がサポートされました。これにより、アドオンのダウンロード直後や無効時にローカライズされた詳細説明が表示されるようになりました。</dd>
+ <dt><a href="/ja/docs/Localization_and_Plurals" title="Localization_and_Plurals">Localization and Plurals</a></dt>
+ <dd>Firefox 3 では、新しい PluralForm モジュールがサポートされました。このモジュールは、複数のローカライゼーションで複数形の単語を正しく扱うためのツールを提供します。</dd>
+ <dt><a href="/ja/docs/Theme_changes_in_Firefox_3" title="Theme_changes_in_Firefox_3">Theme changes in Firefox 3</a></dt>
+ <dd>Firefox 3 向けのテーマを作成したい方々にとって役立つ注意と情報です。</dd>
+</dl>
+<h4 id=".E6.96.B0.E3.81.97.E3.81.84.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.A8.E6.A9.9F.E8.83.BD" name=".E6.96.B0.E3.81.97.E3.81.84.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.A8.E6.A9.9F.E8.83.BD">新しいコンポーネントと機能</h4>
+<dl>
+ <dt><a href="/ja/docs/FUEL" title="FUEL">FUEL Library</a></dt>
+ <dd>FUEL は、XPCOM の形式的な部分を少なくし、いくつかの "モダンな" JavaScript のアイデアを追加することによって、拡張機能の開発をより生産的にします。</dd>
+ <dt><a href="/ja/docs/Places" title="Places">Places</a></dt>
+ <dd>履歴とブックマークの API は、新しい <a href="/ja/docs/Places" title="Places">Places</a> API で完全に置き換えられます。</dd>
+ <dt><a href="/ja/docs/nsIIdleService" title="nsIIdleService">Idle service</a></dt>
+ <dd>Firefox 3 では、ユーザが最後にキーを入力、もしくは、マウスを動かしてからどのくらいの時間が経過しているかを拡張機能が測定できるようにする、新しい {{Interface("nsIIdleService")}} インタフェースが追加されました。</dd>
+ <dt><a href="/ja/docs/nsIZipWriter" title="nsIZipWriter">ZIP writer</a></dt>
+ <dd>新しい {{Interface("nsIZipWriter")}} インタフェースによって拡張機能は ZIP アーカイブを作れるようになります。</dd>
+ <dt><a href="/ja/docs/Full_page_zoom" title="Full_page_zoom">Full page zoom</a></dt>
+ <dd>Firefox 3 では、テキストのみのズームに加えて、フルページズームが追加されたことで、ユーザ体験が改善されています。</dd>
+ <dt><a href="/ja/docs/Interfacing_with_the_XPCOM_cycle_collector" title="Interfacing_with_the_XPCOM_cycle_collector">Interfacing with the XPCOM cycle collector</a></dt>
+ <dd>XPCOM コードが、使われていないメモリをリークする代わりに解放させるようにする「サイクルコレクタ」を活用できるようになりました。</dd>
+ <dt><a href="/ja/docs/The_Thread_Manager" title="The_Thread_Manager">The Thread Manager</a></dt>
+ <dd>Firefox 3 は、自作コードの中でスレッドを作成、管理する際に役立つ便利な方法を提供する、スレッドとスレッドイベント関連の新しいインタフェースとともに、新たな {{Interface("nsIThreadManager")}} インタフェースを提供します。</dd>
+ <dt><a href="/ja/docs/JavaScript_modules" title="JavaScript_modules">JavaScript modules</a></dt>
+ <dd>Firefox 3 は、共有ライブラリのように、拡張機能や Web アプリケーションから読み込んで利用できる JavaScript モジュールを簡単に作成できるようにする、新たな共有コードモジュール機構を提供します。</dd>
+ <dt><a href="/ja/docs/nsIJSON" title="nsIJSON">The <code>nsIJSON</code> interface</a></dt>
+ <dd>Firefox 3 は、<a href="/ja/docs/JSON" title="JSON">JSON</a> 文字列の高パフォーマンスなエンコードとデコードを提供する、新しい {{Interface("nsIJSON")}} インタフェースを提供します。</dd>
+ <dt><a href="/ja/docs/NsIParentalControlsService" title="NsIParentalControlsService">The nsIParentalControlsService interface</a></dt>
+ <dd>Firefox 3 では、Microsoft Windows Vista の保護者による制限機能がサポートされ、その機能とやり取りするためのコードが使用できるようになります。</dd>
+ <dt><a href="/ja/docs/Using_content_preferences" title="Using_content_preferences">Using content preferences</a></dt>
+ <dd>Firefox 3 には、拡張機能およびコアコードが各サイト用のユーザ設定を保存するために利用できる、任意のサイトごとの設定を取得または設定する新しいサービスが含まれています。</dd>
+ <dt><a href="/ja/docs/Monitoring_plugins" title="Monitoring_plugins">Plug-in Monitoring</a></dt>
+ <dd>プラグインシステムの新しいコンポーネントとして、プラグイン(例えば、Macromedia Flash) がどのくらい実行されているかを調べることができるコンポーネントが利用可能になりました。</dd>
+</dl>
+
+
+
+<h4 id=".E4.BF.AE.E6.AD.A3.E3.81.95.E3.82.8C.E3.81.9F.E3.83.90.E3.82.B0" name=".E4.BF.AE.E6.AD.A3.E3.81.95.E3.82.8C.E3.81.9F.E3.83.90.E3.82.B0">修正されたバグ</h4>
+<dl>
+ <dt><a href="/ja/docs/Notable_bugs_fixed_in_Firefox_3" title="Notable_bugs_fixed_in_Firefox_3">Notable bugs fixed in Firefox 3</a></dt>
+ <dd>この記事は、Firefox 3 で修正されたバグについての情報を提供します。</dd>
+</dl>
+
+
+
+
+
+<h2 id="New_features_for_end_users" name="New_features_for_end_users">エンドユーザ向け新機能</h2>
+
+
+
+
+<h3 id="User_experience" name="User_experience">ユーザ体験</h3>
+<ul>
+ <li><strong>より簡単なパスワード管理</strong> - コンテンツ上部に表示される情報バーを使って、ログインが成功した後にパスワードを保存できるようになりました。</li>
+ <li><strong>簡素化されたアドオンのインストール</strong> - アドオンダウンロードサイトのホワイトリストが削除されたおかげで、サードパーティのダウンロードサイトからも、より少ないクリック回数で拡張機能をインストールできるようになりました。</li>
+ <li><strong>新しいダウンロードマネージャ</strong> - ダウンロードしたファイルを見つけやすくなりました。</li>
+ <li><strong>再開可能なダウンロード</strong> - ブラウザの再起動後や、ネットワーク接続をリセットした後、ダウンロードを再開できるようになりました。</li>
+ <li><strong>フルページズーム</strong> - {{mediawiki.external('表示')}} メニューから、あるいはキーボードショートカットを使って、ページのコンテンツ全体を拡大・縮小できるようになりました。文字だけでなく、レイアウト全体や画像も併せて拡大・縮小できます。</li>
+ <li><strong>タブのスクロールとクイックメニュー</strong> - 新しいタブのスクロールとクイックメニュー機能で、目的のタブをより簡単に探せるようになりました。</li>
+ <li><strong>作業の保存と復元</strong> - Firefox 3 は、終了時に開いているタブの状態を保存するかどうか尋ねるダイアログを表示します。</li>
+ <li><strong>タブを開く動作の最適化</strong> - ブックマークフォルダをタブに開く際、既存のタブを置き換える代わりに、新しいタブを追加するようになりました。</li>
+ <li><strong>ロケーションバーと検索バーのサイズ調整</strong> - ロケーションバーと検索バーの幅を、間にある小さなリサイズハンドルを使って簡単に変えられるようになりました。</li>
+ <li><strong>文字列選択の改良</strong> - Ctrl キー (Mac では Command キー) を使って、複数の文字列範囲を選択できるようになりました。また、文字列をダブルクリックした後にドラッグを開始すると、単語ごとに選択範囲が拡大・縮小されます。トリプルクリックした場合は段落全体が選択されます。</li>
+ <li><strong>ページ内検索バー</strong> - ページ内検索が、現在の選択範囲から開始されるようになりました。</li>
+ <li><strong>プラグイン管理</strong> - アドオンマネージャでプラグインを個別に無効化できるようになりました。</li>
+ <li><strong>Windows Vista との統合</strong> - Firefox のメニューが Vista のネイティブテーマで表示されるようになりました。</li>
+ <li><strong>Mac OS X との統合</strong> - ダウンロード完了や更新の通知に <a href="http://growl.info/">Growl</a> をサポートしました。</li>
+ <li><strong>スターボタン</strong> - ロケーションバーに表示される新しいスターボタンを使って、ワンクリックでブックマークを追加できるようになりました。もう一度クリックすると、その新しいブックマークを指定の場所に保存したり、タグを付けることができます。</li>
+ <li><strong>タグ</strong> - ブックマークにタグを関連付けて、トピックごとに簡単に分類できるようになりました。</li>
+ <li><strong>ロケーションバーの自動補完</strong> - ロケーションバーにページのタイトルやタグを入力するだけで、履歴やブックマークから目的のページをすばやく探し出せるようになりました。お気に入りアイコン、ブックマーク、タグも併せて表示されるので、それぞれの項目がどこから検索されたのかが分かりやすくなっています。</li>
+ <li><strong>スマートブックマークフォルダ</strong> - Firefox の新しい「スマートブックマークフォルダ」から、最近ブックマークしたりタグを付けたページ、あるいはよく訪れるページにすばやくアクセスできます。</li>
+ <li><strong>ブックマークと履歴の整理</strong> - 統合された新しいブックマークと履歴の管理画面では、複数の表示形式や、よく使う検索語を保存できるスマートフォルダを使って、履歴やブックマークを簡単に検索できます。</li>
+ <li><strong>Web ベースのプロトコルハンドラ</strong> - ページ上の <code>mailto:</code> リンクを開く際、デスクトップアプリケーションの代わりに、お気に入りの Web メールサービスなど、Web アプリケーションを使えるようになりました。他のプロトコルについても同様のサポートが提供されます。(なお、Web アプリケーションを連携させるには、最初にそれらを Firefox に登録する必要があります)</li>
+ <li><strong>より便利になったダウンロードアクション</strong> - 新しい「アプリケーション」設定画面は、様々なファイル形式やプロトコルスキーマの処理方法を設定するための、改良されたユーザインタフェースを提供します。</li>
+ <li><strong>ルック&フィールの改善</strong> - グラフィックとフォント処理が改良され、Web ページが画面上でより美しく表示されるようになりました。例えば、テキストの描画がよりシャープになり、リガチャや複雑な筆記体活字を含むフォントのサポートも改善されています。さらに、Mac と Linux (Gnome) では、新たなネイティブテーマが採用されたことで、Firefox の見た目がかつてなくネイティブアプリケーションに近づきました。</li>
+ <li><strong>カラーマネジメントのサポート</strong> - <code>{{mediawiki.external('about:config')}}</code> 画面で <code>gfx.color_management.enabled</code> を設定すると、画像に埋め込まれたカラープロファイルを使って、コンピュータの画面に適したカラー調節が行われます。</li>
+ <li><strong>オフラインサポート</strong> - Web アプリケーションが、インターネットに接続していないときでも利用できるようにした新機能を活用できるようになりました。</li>
+</ul>
+
+
+
+<h3 id="Security_and_privacy" name="Security_and_privacy">プライバシーとセキュリティ</h3>
+<ul>
+ <li><strong>サイト情報をワンクリックで表示</strong> - 訪れたサイトに関する詳しい情報を知りたいときは、ロケーションバーに表示されるサイトアイコンをクリックすれば、サイトの所有者を確認することができます。識別情報がはっきりと表示され、前より分かりやすくなりました。</li>
+ <li><strong>悪意のあるソフトウェアからの保護</strong> - ウイルス、スパイウェア、トロイの木馬などの危険なソフトウェア (総称してマルウェア=悪意のあるソフトウェアと呼ばれます) をインストールさせようとすることが知られているサイトを訪れてしまった場合、Firefox 3 は警告を表示します。どのような形で警告が表示されるかは、<a class="link-https" href="https://www.mozilla.com/firefox/its-an-attack.html">このテスト用ページ</a> で確認できます。</li>
+ <li><strong>フィッシング詐欺サイトからの保護の改良</strong> - フィッシング詐欺 (偽装) サイトと思われるページを開いてしまった場合、ページの内容とともに警告が表示されるのではなく、特別なページが表示されるようになりました。どのような形で警告が表示されるかは、<a class="link-https" href="https://www.mozilla.com/firefox/its-a-trap.html">このテスト用ページ</a> で確認できます。</li>
+ <li><strong>より分かりやすくなった SSL エラー</strong> - 不正な SSL 証明書に遭遇したときに表示されるエラーの内容がより明確になり、どのような問題が起きているのか分かりやすくなりました。</li>
+ <li><strong>古いアドオンからの保護</strong> - Firefox 3 は、アドオンやプラグインのバージョンを自動的に確認し、古い安全でないバージョンを無効化します。</li>
+ <li><strong>安全なアドオンの更新</strong> - 安全でない更新方法を用いているアドオンのインストールを禁止することで、アドオンの更新を行う際の安全性が向上しました。</li>
+ <li><strong>ウイルス対策ソフトの統合</strong> - Firefox 3 は、実行可能ファイルをダウンロードした際、ウイルス対策ソフトに通知を行い、即座にスキャンを開始できるようにします。</li>
+ <li><strong>Windows Vista の保護者による制限機能のサポート</strong> - Firefox 3 は、ファイルダウンロードの無効化に、Vista のシステム全体の保護者による制限 (ペアレンタルコントロール) 設定をサポートしました。</li>
+</ul>
+
+<h3 id="Performance" name="Performance">パフォーマンス</h3>
+<ul>
+ <li><strong>信頼性</strong> - Firefox 3 は、ブックマーク、履歴、Cookie、個人設定をトランザクション上安全なデータベース形式で保存します。つまり、システムがクラッシュした場合も、プロファイルデータが失われずに済みます。</li>
+ <li><strong>高速化</strong> - Firefox 3 では、画面上の描画処理と、ページレイアウトの処理を行う部分を完全に書き換えることで、パフォーマンスが劇的に向上しました。</li>
+ <li><strong>メモリ使用量の削減</strong> - Firefox 3 では、300 以上のメモリ「リーク」バグの修正に加えて、リークしたメモリブロックを自動的に特定、処理する新機能によって、メモリ効率が大幅に向上しました。</li>
+</ul>
+
+
+<h2 id="See_also" name="See_also">関連記事</h2>
+<ul>
+ <li><a href="/ja/docs/Updating_extensions_for_Firefox_3" title="Updating_extensions_for_Firefox_3">Updating extensions for Firefox 3</a></li>
+ <li><a href="/ja/docs/Updating_web_applications_for_Firefox_3" title="Updating_web_applications_for_Firefox_3">Updating web applications for Firefox 3</a></li>
+</ul>
+
+<div>{{Firefox_for_developers('2')}}</div>
diff --git a/files/ja/mozilla/firefox/releases/30/index.html b/files/ja/mozilla/firefox/releases/30/index.html
new file mode 100644
index 0000000000..fd10bb6bbd
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/30/index.html
@@ -0,0 +1,95 @@
+---
+title: Firefox 30 for developers
+slug: Mozilla/Firefox/Releases/30
+tags:
+ - Firefox
+ - Firefox for Developers
+translation_of: Mozilla/Firefox/Releases/30
+---
+<p>Gecko 30 を搭載した Firefox 30 は、米国時間 2014 年 6 月 10 日にリリースされました。このページでは、開発者に影響する Firefox 30 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>ボックスモデルのハイライト表示機能を実装しました ({{bug(663778)}})。</li>
+ <li>コンソールの出力に DOM ノードがあるとき、その出力にマウスポインタを載せるとノードをハイライト表示します ({{bug(757866)}})。同様に、すべての JS 関数やオブジェクトをコンソールの出力でハイライトします ({{bug(584733)}})。コンソールの改善点について、詳しくは<a href="http://www.robodesign.ro/mihai/blog/web-console-improvements-episode-30">こちらのブログ投稿</a>をご覧ください。</li>
+ <li>{{domxref("Console.count()")}} をサポートしました ({{bug(922208)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("background-blend-mode")}} プロパティをデフォルトで有効にしました ({{bug(970600)}})。</li>
+ <li>非標準である {{cssxref("overflow-clip-box")}} プロパティを、UI スタイルシートでの使用に限り実装しました ({{bug(966992)}})。</li>
+ <li>{{cssxref("line-height")}} プロパティが単一行のテキスト入力 (<code>&lt;input type=text|password|email|search|tel|url|unknown&gt;</code>) に作用します。ただし <code>1.0</code> を下回る line-height に縮小することはできません ({{bug(349259)}})。</li>
+ <li>{{cssxref("line-height")}} プロパティは <code>type=button</code> にも、制限なく作用します ({{bug(697451)}})。</li>
+ <li>キーフレームの名前を変更しても既存の要素に反映されない問題を修正しました ({{bug(978648)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>ES6 互換の新たな<a href="/ja/docs/Web/JavaScript/Reference/Operators/Array_comprehensions">配列内包</a> <code>[for (item of iterable) item]</code> および <a href="/ja/docs/Web/JavaScript/Reference/Operators/Generator_comprehensions">Generator 内包</a> <code>(for (item of iterable) item)</code> を実装しました ({{bug(979865)}})。</li>
+ <li>Typed arrays が拡張可能になり、新たな名前のプロパティをサポートしました ({{bug(695438)}})。</li>
+ <li>{{jsxref("Error.prototype.stack")}} プロパティがカラム番号を含むようになり ({{bug(762556)}})、<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Error/Stack#Stack_of_eval'ed_code"><code>Function()</code> や <code>eval()</code> を呼び出す</a>際の動作が向上しました。ミニファイされた、あるいは生成された JavaScript コードのデバッグを改善する助けになります。</li>
+</ul>
+
+<h3 id="Interfaces.2FAPIs.2FDOM" name="Interfaces.2FAPIs.2FDOM">インターフェイス/API/DOM</h3>
+
+<ul>
+ <li>テレメトリーの収集を容易にする {{domxref("Navigator.sendBeacon")}} を実装しました ({{bug(936340)}})。</li>
+ <li>{{domxref("HTMLLinkElement")}}、{{domxref("HTMLAreaElement")}}、{{domxref("HTMLAnchorElement")}} に、{{domxref("DOMTokenList")}} を返す <code>relList</code> プロパティを追加しました ({{bug(968637)}})。</li>
+ <li>最新の仕様により、{{domxref("OscillatorNode.start")}} および {{domxref("OscillatorNode.stop")}} の第 1 引数は省略可能および既定値が <code>0</code> になりました ({{bug(982541)}})。</li>
+ <li>{{domxref("Navigator.requestWakeLock()")}} メソッドおよび非標準である {{domxref("MozWakeLock")}} メソッドは、デスクトップ版 Firefox で使用できなくなりました ({{bug(963366)}})。</li>
+ <li><code>DOM_VK_ENTER</code> 定数を {{domxref("KeyboardEvent")}} から削除しました ({{bug(969247)}})。</li>
+ <li>Web components の {{domxref("Document.register")}} を、最新版の仕様で説明されている動作に従うよう修正しました ({{bug(856140)}})。</li>
+ <li>Canvas の Hit resion の基本的なサポートを追加: {{domxref("CanvasRenderingContext2D.addHitRegion()")}} メソッドおよび {{domxref("CanvasRenderingContext2D.removeHitRegion()")}} メソッドを追加しました。これらはデフォルトで無効です。有効化するには設定項目 <code>canvas.hitregions.enabled</code> を <code>true</code> に変更してください。({{bug(966591)}})</li>
+ <li>非標準であり Firefox 15 から非推奨であった {{domxref("Blob.mozSlice")}} を廃止しました ({{bug(961804)}})。</li>
+ <li>非標準である {{domxref("ArchiveReader")}} および {{domxref("ArchiveRequest")}} は Web 向けに公開しないようになりました ({{bug(968883)}})。</li>
+ <li><a href="http://dxr.mozilla.org/mozilla-central/source/dom/webidl/">WebIDL コンストラクタ</a>を関数として呼び出すことが不可になりました。キーワード <code>new</code> を前につけることが必要です。({{bug(916644)}})</li>
+ <li>{{domxref("Canvas.getContext()")}} メソッドで、アルファブレンディングを保存しなければならないか否かを定義可能にする、省略可能な第 2 引数 (<code>alpha</code>) をサポートしました。設定しない場合、ピクセルごとのアルファ値は常に <code>1.0</code> になります。これによりバックエンドでファストトラックの実装が可能になります。({{bug(982480)}})</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<ul>
+ <li>Filter Effects Module より、{{SVGElement("feDropShadow")}} およびそのインターフェイスである {{domxref("SVGFEDropShadowElement")}} をサポートしました ({{bug(964200)}})。</li>
+</ul>
+
+<h3 id="Audio.2FVideo" name="Audio.2FVideo">Audio/Video</h3>
+
+<ul>
+ <li>Linux において、Gstreamer 1.0 をサポートしました (0.10 に代わり) ({{bug(806917)}})。</li>
+</ul>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<ul>
+ <li><code>nsIDOMWindowUtils</code> インターフェイスで、ウィンドウ (任意のタブまたは iframe) から生じた音声の制御を可能にする論理属性 <code>audioMuted</code> および <code>[0.0</code> ,  <code>1.0]</code> の範囲の浮動小数点数値をとる <code>audioVolume</code> 属性をサポートしました。UI はありませんが、アドオンで使用できます。({{bug(923247)}})</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/30.0/releasenotes/">Firefox 30 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/30/">Firefox 30 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2014/05/firefox-30-addon-compatibility/">Firefox 30 アドオン互換性情報</a></li>
+</ul>
+
+<h3 id="Older_versions" name="Older_versions">過去のバージョン</h3>
+
+<p>{{Firefox_for_developers('29')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/30/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/30/site_compatibility/index.html
new file mode 100644
index 0000000000..f78295e0f5
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/30/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 30 サイト互換性情報
+slug: Mozilla/Firefox/Releases/30/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 30
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/30/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/30/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/31/index.html b/files/ja/mozilla/firefox/releases/31/index.html
new file mode 100644
index 0000000000..c42f578904
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/31/index.html
@@ -0,0 +1,128 @@
+---
+title: Firefox 31 for developers
+slug: Mozilla/Firefox/Releases/31
+tags:
+ - Firefox
+ - Firefox 31
+ - Firefox for Developers
+translation_of: Mozilla/Firefox/Releases/31
+---
+<p>Gecko 31 を搭載した Firefox 31 は、米国時間 2014 年 7 月 22 日にリリースされました。このページでは、開発者に影響する Firefox 31 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p>ハイライト:</p>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Eyedropper">Web ページから色を選択するスポイトツール</a></li>
+ <li><a href="/ja/docs/Tools/Web_Console#Error_messages">コンソールのエラーメッセージでフルスタックトレースを表示</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector#Box_model_view">ボックスモデルビューで編集が可能</a></li>
+ <li><a href="/ja/docs/Tools/Web_Console#Styling_messages">コンソールのメッセージにスタイルを設定する %c 書式</a></li>
+ <li><a href="/ja/docs/Tools/Network_Monitor#Copy_as_cURL">ネットワークモニタの "cURL としてコピー" コマンド</a></li>
+ <li><a href="/ja/docs/tools/Keyboard_shortcuts#Source_editor">ソースエディタで Sublime Text のキーバインドをサポート</a></li>
+ <li><a href="/ja/docs/Tools/Network_Monitor#Network_request_list">ネットワークモニタのログを残し続けるオプション</a></li>
+ <li><a href="/ja/docs/Tools/Web_Console#JavaScript_errors_and_warnings">Web コンソールで、JavaScript の警告をデフォルトで表示するように変更</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector#HTML_pane_2">Alt+クリックでノードの子孫をすべて展開</a></li>
+</ul>
+
+<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Client%20Software&amp;chfieldto=2014-04-28&amp;chfield=resolution&amp;query_format=advanced&amp;chfieldfrom=2014-03-17&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;component=Developer%20Tools&amp;component=Developer%20Tools%3A%203D%20View&amp;component=Developer%20Tools%3A%20App%20Manager&amp;component=Developer%20Tools%3A%20Canvas%20Debugger&amp;component=Developer%20Tools%3A%20Console&amp;component=Developer%20Tools%3A%20Debugger&amp;component=Developer%20Tools%3A%20Framework&amp;component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&amp;component=Developer%20Tools%3A%20Inspector&amp;component=Developer%20Tools%3A%20Memory&amp;component=Developer%20Tools%3A%20Netmonitor&amp;component=Developer%20Tools%3A%20Object%20Inspector&amp;component=Developer%20Tools%3A%20Profiler&amp;component=Developer%20Tools%3A%20Responsive%20Mode&amp;component=Developer%20Tools%3A%20Scratchpad&amp;component=Developer%20Tools%3A%20Source%20Editor&amp;component=Developer%20Tools%3A%20Style%20Editor&amp;component=Developer%20Tools%3A%20User%20Stories&amp;component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&amp;product=Firefox&amp;list_id=10022921">Firefox 30 から Firefox 31 の間に解決した開発ツール関連のバグ一覧</a></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>最新の仕様の変更を反映して、CSS Variables の接頭辞 <code>var-</code> を <code>--</code> に変更しました ({{Bug(985838)}})。</li>
+ <li>{{cssxref("hyphens")}} プロパティでポーランド語のハイフネーション規則をサポートしました ({{Bug(987668)}})。</li>
+ <li>韓国語のカウンタスタイルで、10,000 の倍数に不要なホワイトスペースがある問題を修正しました ({{Bug(985186)}})。</li>
+ <li>親の :before 疑似要素が存在して overflow が auto である場合に、CSS opacity のトランジションが機能しない問題を修正しました ({{Bug(990340)}})。</li>
+ <li><code>::-moz-math-stretchy</code> 疑似要素を削除しました ({{Bug(1000879)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("track")}} を実装しました ({{Bug(629350)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<p>新たな ECMAScript 6 の機能を実装しました:</p>
+
+<ul>
+ <li>新たな <code>Array</code> のメソッド: {{jsxref("Array.prototype.fill()")}} ({{Bug(911147)}})</li>
+ <li>新たな <code>Math</code> の関数: {{jsxref("Math.clz32()")}} ({{Bug(925123)}})</li>
+ <li>新たな <code>String</code> のメソッド: デスクトップ版 Firefox で {{jsxref("String.prototype.normalize()")}} が利用可能になりました ({{Bug(918987)}})。</li>
+ <li>新たな <code>Object</code> のメソッド: {{jsxref("Object.setPrototypeOf()")}}</li>
+ <li>新たな <code>Number</code> 定数: {{jsxref("Number.MAX_SAFE_INTEGER")}} および {{jsxref("Number.MIN_SAFE_INTEGER")}}。</li>
+</ul>
+
+<h3 id="Interfaces.2FAPIs.2FDOM" name="Interfaces.2FAPIs.2FDOM">インターフェイス/API/DOM</h3>
+
+<ul>
+ <li><code>KeyboardEvent</code> のコンストラクタを実装しました ({{Bug(930893)}})。</li>
+ <li>Resource Timing API を実装しました ({{Bug("822480")}})。</li>
+ <li><code>KeyboardEvent.isComposing</code> 属性を実装しました ({{Bug(993234)}})。</li>
+ <li><code>InputEvent</code> インターフェイスを実装しました ({{Bug(993253)}})。</li>
+ <li><code>InputEvent.isComposing</code> 属性を実装しました ({{Bug(993253)}})。</li>
+ <li>{{domxref("CSS.escape", "CSS.escape()")}} を実装しました ({{Bug(955860)}})。</li>
+ <li>他のブラウザと同様に {{event("mousemove")}} がキャンセル可能になりました ({{Bug(704423)}})。<code>preventDefault()</code> の呼び出しは <code>defaultPrevented</code> 属性に <code>true</code> を設定するだけであり、他の動作は変わりません。たとえば、<code>:hover</code> ステートの設定を抑止することはできません。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<ul>
+ <li>ISO/IEC CD 14496-22 3rd edtion のセクション 6.3.6 にある <a href="http://mpeg.chiariglione.org/standards/mpeg-4/open-font-format/text-isoiec-cd-14496-22-3rd-edition">OpenType MATH table</a> を部分的に実装しました ({{Bug(407059)}})。詳しくは <a href="/ja/docs/Mozilla/MathML_Project/Fonts">Fonts for Mozilla's MathML engine</a> をご覧ください。また <a href="/ja/docs/Mozilla/MathML_Project/MathML_Torture_Test">MathML torture test</a> をお試しください。</li>
+ <li><code>::-moz-math-stretchy</code> 疑似要素を削除しました ({{Bug(1000879)}})。</li>
+ <li>可能であれば、mathvaliant が bold、italic、bold-italic である場合に Unicode の数学用英数字記号を使用するようになりました ({{Bug(930504)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Audio.2FVideo" name="Audio.2FVideo">Audio/Video</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<ul>
+ <li><a href="/ja/docs/Xray_vision#Xrays_for_JavaScript_objects">特権コードは <code>Date</code> のインスタンスで Xray vision が適用されるようになりました</a>。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<ul>
+ <li><a href="http://bonsai.mozilla.org/cvsview2.cgi?diff_mode=context&amp;whitespace_mode=show&amp;root=/cvsroot&amp;subdir=mozilla/browser/base/content&amp;command=DIFF_FRAMESET&amp;file=browser.xul&amp;rev2=1.10&amp;rev1=1.9">昔から</a> "<code>center</code>" に設定されていた、<code>urlbar-wrapper</code> (以前は <code>urlbar-container</code>) の "<code>align</code>" 属性を削除しました。これはサードパーティーのテーマに影響を与えることがわかっています。それぞれのテーマにおける正しい修正法は何かを注意深く探るべきですが、同等の効果を維持するのであればテーマに以下の CSS 規則を追加してください:<br>
+ <code>#urlbar-wrapper {<br>
+   -moz-box-align: center;<br>
+ }</code></li>
+ <li><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMWindowUtils#sendQueryContentEvent()"><code>nsIDOMWindowUtils.sendQueryContentEvent()</code></a> および <a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMWindowUtils#sendSelectionSetEvent%28%29"><code>nsIDOMWindowUtils.sendSelectionSetEvent()</code></a> が、省略可能な引数 <code>aAdditionalFlags</code> を持ちます。<code>aReverse</code> を <code>true</code> にして <code>nsIDOMWindowUtils.sendSelectionSetEvent()</code> を呼び出している場合、この変更により動作に問題が発生します。<code>aAdditionalFlags</code> について詳しくは、<a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMWindowUtils#Constants">各フラグの説明</a> (<code>QUERY_CONTENT_FLAG_*</code> および <code>SELECTION_SET_FLAG_*</code>) をご覧ください。</li>
+</ul>
+
+<h3 id="Add-on_SDK" name="Add-on_SDK">Add-on SDK</h3>
+
+<p>ハイライト:</p>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/Add-on_Debugger">アドオンデバッガ</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/SDK/High-Level_APIs/windows#Converting_to_DOM_windows">高水準な BrowserWindow オブジェクトと DOM の windows との間の変換</a>および<a href="/ja/docs/Mozilla/Add-ons/SDK/High-Level_APIs/tabs#Converting_to_XUL_tabs">高水準な Tab オブジェクトと XUL の tabs との間の変換</a>を行う機能を追加しました。</li>
+ <li>Mac OS X の panel で使用するデフォルトテーマを更新しました。</li>
+ <li>panel に <a href="/ja/docs/Mozilla/Add-ons/SDK/High-Level_APIs/panel#Styling_panel_content">contentStyle および contentStyleFile</a> オプションを追加しました。</li>
+</ul>
+
+<p><a class="external external-icon" href="https://github.com/mozilla/addon-sdk/compare/firefox30...firefox31">Firefox 30 から Firefox 31 の間に行われた GitHub コミット</a>。この一覧は Aurora 移行後に上流で行われた内容が含まれていないでしょう。</p>
+
+<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;chfieldto=2014-04-29&amp;chfield=resolution&amp;query_format=advanced&amp;chfieldfrom=2014-03-18&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;product=Add-on%20SDK&amp;list_id=10493962">Firefox 30 から Firefox 31 の間に解決したバグ</a>。この一覧は Aurora 移行後に上流で行われた内容が含まれていないでしょう。</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/31.0/releasenotes/">Firefox 31 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/31Update the site compat doc URLUpdate the site compat doc URL/">Firefox 31 サイト互換性情報</a></li>
+</ul>
+
+<h3 id="Older_versions" name="Older_versions">過去のバージョン</h3>
+
+<p>{{Firefox_for_developers('30')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/31/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/31/site_compatibility/index.html
new file mode 100644
index 0000000000..2752aa6347
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/31/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 31 サイト互換性情報
+slug: Mozilla/Firefox/Releases/31/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 31
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/31/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/31/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/32/index.html b/files/ja/mozilla/firefox/releases/32/index.html
new file mode 100644
index 0000000000..74e5ad8fb4
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/32/index.html
@@ -0,0 +1,135 @@
+---
+title: Firefox 32 for developers
+slug: Mozilla/Firefox/Releases/32
+tags:
+ - Firefox
+translation_of: Mozilla/Firefox/Releases/32
+---
+<p>Gecko 32 を搭載した Firefox 32 は、米国時間 2014 年 9 月 2 日にリリースされました。このページでは、開発者に影響する Firefox 32 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p>ハイライト:</p>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Web_Audio_Editor">Web Audio Editor</a></li>
+ <li><a href="/ja/docs/Tools/Scratchpad#Code_completion_and_inline_documentation">スクラッチパッドのコード補完とインラインドキュメント</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector#Rules_view">インスペクタのルールビューでユーザエージェントのスタイルを表示</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector#Firefox_32_onwards_2">要素選択ボタンを移動</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector#Firefox_32_onwards">インスペクタの情報バーにノードの寸法を追加</a></li>
+ <li><a href="/ja/docs/Tools/Tools_Toolbox#Extra_tools">ページ全体のスクリーンショットボタンを追加</a></li>
+ <li>ツールに HiDPI 画像を追加</li>
+ <li>インスペクタで、<code>display:none</code> が設定されているノードを異なる書式で表示</li>
+</ul>
+
+<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Client%20Software&amp;chfieldto=2014-06-09&amp;chfield=resolution&amp;query_format=advanced&amp;chfieldfrom=2014-04-28&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;component=Developer%20Tools&amp;component=Developer%20Tools%3A%203D%20View&amp;component=Developer%20Tools%3A%20App%20Manager&amp;component=Developer%20Tools%3A%20Canvas%20Debugger&amp;component=Developer%20Tools%3A%20Console&amp;component=Developer%20Tools%3A%20Debugger&amp;component=Developer%20Tools%3A%20Framework&amp;component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&amp;component=Developer%20Tools%3A%20Inspector&amp;component=Developer%20Tools%3A%20Memory&amp;component=Developer%20Tools%3A%20Netmonitor&amp;component=Developer%20Tools%3A%20Object%20Inspector&amp;component=Developer%20Tools%3A%20Profiler&amp;component=Developer%20Tools%3A%20Responsive%20Mode&amp;component=Developer%20Tools%3A%20Scratchpad&amp;component=Developer%20Tools%3A%20Source%20Editor&amp;component=Developer%20Tools%3A%20Style%20Editor&amp;component=Developer%20Tools%3A%20User%20Stories&amp;component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&amp;product=Firefox">Firefox 31 から Firefox 32 の間に解決した開発ツール関連のバグ一覧</a></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("mix-blend-mode")}} をデフォルトで有効にしました ({{Bug(952643)}})。</li>
+ <li>release ビルドで、position:sticky をデフォルトで有効にしました (以前は Nightly および Aurora のみ有効) ({{Bug(916315)}})。</li>
+ <li>{{cssxref("box-decoration-break")}} を実装して、非標準の {{cssxref("-moz-background-inline-policy")}} を削除しました ({{Bug(613659)}})。</li>
+ <li>{{cssxref("flex-grow")}} および {{cssxref("flex-shrink")}} が、0 と 0 以外の値との間でトランジションすることが可能になりました ({{Bug(996945)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("img")}} 要素の {{HTMLattrxref("srcset", "img")}} プロパティを試験的に実装しました。<code>dom.image.srcset.enable</code> を <code>true</code> に設定すると有効になります ({{Bug(870021)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>新たな ECMAScript 6 の組み込みメソッドを実装しました:
+ <ul>
+ <li>{{jsxref("Array.from()")}} ({{bug(904723)}})</li>
+ <li>{{jsxref("Array.prototype.copyWithin()")}} ({{bug(934423)}})</li>
+ <li>{{jsxref("Number.isSafeInteger()")}} ({{bug(1003764)}})</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="Interfaces.2FAPIs.2FDOM" name="Interfaces.2FAPIs.2FDOM">インターフェイス/API/DOM</h3>
+
+<ul>
+ <li>{{domxref("NavigatorLanguage.languages", "navigator.languages")}} プロパティおよび {{event("languagechange")}} イベントを実装しました ({{Bug(889335)}})。</li>
+ <li>{{domxref("Navigator.vibrate()")}} メソッドの動作が最新の仕様に適合するようになりました。長すぎる振動は切り詰められます ({{bug(1014581)}})。</li>
+ <li>{{domxref("KeyboardEvent.getModifierState()")}} メソッドおよび {{domxref("MouseEvent.getModifierState()")}} メソッドを、<code>Accel</code> 仮想モディファイアをサポートするように拡張しました ({{Bug(1009388)}})。</li>
+ <li>{{domxref("KeyboardEvent.code")}} プロパティを試験的に実装しました。ただし、release ビルドでは無効化しています ({{Bug(865649)}})。</li>
+ <li>{{domxref("Document.querySelector()")}} および {{domxref("Document.querySelectorAll()")}} で scope が設定されたセレクタ (例えば <code>querySelector(":scope &gt; li")</code>) を実装しました ({{Bug(528456)}})。</li>
+ <li><a href="http://dev.w3.org/fxtf/web-animations/">Web Animation API</a> に関して、{{domxref("Document.timeline")}} インターフェイスを実験的に実装しました ({{bug("998246")}})。これは設定項目 <code>layout.web-animations.api.enabled</code> で制御されており、現在は Nightly および Aurora のみで有効化しています。</li>
+ <li><a href="/ja/docs/Web/API/Data_Store_API">Data Store API</a> が <a href="/ja/docs/Web/Guide/Performance/Using_web_workers">Web Workers</a> で使用可能になりました ({{bug("949325")}})。ただし、認定アプリケーションにのみ有効化されています。</li>
+ <li><a href="/ja/docs/Web/API/ServiceWorker_API">ServiceWorker</a> の {{domxref("InstallPhaseEvent")}} インターフェイスおよび {{domxref("InstallEvent")}} インターフェイスを実装しました ({{Bug("967264")}})。</li>
+ <li><a href="/ja/docs/Web/API/MSISDN_Verification_API">MSISDN Verification API</a> を追加しました。特権アプリに対してのみ有効化されています ({{Bug("988469")}})。</li>
+ <li>仕様や CSS 構文の発展に適合するよう、{{domxref("CSS.escape()")}} を若干変更しました。識別子を <code>'--'</code> から始めることが可能になり、2 番目のダッシュ記号はエスケープされません。また、ベンダー識別子はエスケープしません。({{bug(1008719)}})</li>
+ <li>ストリームのサイズやフレームレートを制限するため、<a href="/ja/docs/Glossary/WebRTC">WebRTC</a> の {{domxref("NavigatorUserMedia.getUserMedia", "getUserMedia()")}}、<code>width</code>、<code>height</code>、<code>framerate</code> に新たな制約を与えました ({{bug("907352")}}):
+ <pre class="brush: json">{
+ mandatory: {
+ width: { min: 640 },
+ height: { min: 480 }
+ },
+ optional: [
+ { width: 650 },
+ { width: { min: 650}},
+ { frameRate: 60 },
+ { width: { max: 800}},
+ ]
+}</pre>
+ </li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<ul>
+ <li>{{MathMLElement("menclose")}} 要素の notation 属性で <code>phasorangle</code> をサポートしました。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Audio.2FVideo" name="Audio.2FVideo">Audio/Video</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<ul>
+ <li><a href="/ja/docs/Xray_vision#Xray_semantics_for_Object_and_Array">特権コードは JavaScript の <code>Object</code> および <code>Array</code> のインスタンスで Xray vision が適用されるようになりました</a>。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<p>DOM オブジェクトではない JavaScript オブジェクトに、Xray vision を適用するようになりました: <a href="/ja/docs/Xray_vision#Xrays_for_JavaScript_objects">Xrays for JavaScript objects</a>。</p>
+
+<h3 id="Add-on_SDK" name="Add-on_SDK">Add-on SDK</h3>
+
+<h4 id="Highlights" name="Highlights">ハイライト</h4>
+
+<ul>
+ <li><code>PageMod</code> に <a href="/ja/docs/Mozilla/Add-ons/SDK/High-Level_APIs/page-mod#PageMod%28options%29"><code>exclude</code></a> オプションを追加しました。</li>
+ <li><code>Request</code> に <a href="/ja/docs/Mozilla/Add-ons/SDK/High-Level_APIs/request#Request%28options%29"><code>anonymous</code></a> オプションを追加しました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/Add-on_Debugger">アドオンデバッガ</a>がコンソールとスクラッチパッドを含むようになりました。</li>
+</ul>
+
+<h4 id="Details" name="Details">詳細</h4>
+
+<p><a class="external external-icon" href="https://github.com/mozilla/addon-sdk/compare/firefox31...firefox32">Firefox 31 から Firefox 32 の間に行われた GitHub コミット</a>。この一覧は Aurora 移行後に上流で行われた内容が含まれていないでしょう。</p>
+
+<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;chfieldto=2014-06-09&amp;chfield=resolution&amp;query_format=advanced&amp;chfieldfrom=2014-04-28&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;product=Add-on%20SDK&amp;list_id=10493962">Firefox 31 から Firefox 32 の間に解決したバグ</a>。この一覧は Aurora 移行後に上流で行われた内容が含まれていないでしょう。</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/32.0/releasenotes/">Firefox 32 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/32/">Firefox 32 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2014/08/firefox-32-addon-compatibility/">Firefox 32 アドオン互換性情報</a></li>
+</ul>
+
+<h3 id="Older_versions" name="Older_versions">過去のバージョン</h3>
+
+<p>{{Firefox_for_developers('31')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/32/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/32/site_compatibility/index.html
new file mode 100644
index 0000000000..704e054076
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/32/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 32 サイト互換性情報
+slug: Mozilla/Firefox/Releases/32/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 32
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/32/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/32/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/33/index.html b/files/ja/mozilla/firefox/releases/33/index.html
new file mode 100644
index 0000000000..f040205a9b
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/33/index.html
@@ -0,0 +1,145 @@
+---
+title: Firefox 33 for developers
+slug: Mozilla/Firefox/Releases/33
+tags:
+ - Firefox
+translation_of: Mozilla/Firefox/Releases/33
+---
+<p>Gecko 33 を搭載した Firefox 33 は、米国時間 2014 年 10 月 14 日にリリースされました。このページでは、開発者に影響する Firefox 33 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p>ハイライト</p>
+
+<ul>
+ <li>イベントリスナのポップアップ</li>
+ <li>@media サイドバー</li>
+ <li>新たな CSS 規則の追加</li>
+ <li>keyframes の編集</li>
+ <li>3 次ベジェ曲線エディタ</li>
+ <li>Transform のハイライト表示</li>
+ <li>持続的にキャッシュを無効化</li>
+ <li>新たなコマンド</li>
+ <li>エディタの設定</li>
+ <li>WebIDE</li>
+</ul>
+
+<p>詳しくは <a href="https://hacks.mozilla.org/2014/07/event-listeners-popup-media-sidebar-cubic-bezier-editor-more-firefox-developer-tools-episode-33/">hacks ブログの記事</a>をご覧ください。このリリースで<a href="http://mzl.la/1pGLFDs">機能追加や修正</a>を行った 33 名の貢献者に感謝します。</p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("@counter-style")}} 規則を実装しました ({{bug(966166)}})。</li>
+ <li>{{cssxref("list-style-type")}} の <code>ethiopic-numeric</code>, <code>persian</code>, <code>arabic-indic</code>, <code>devanagari</code>, <code>bengali</code>, <code>gurmukhi</code>, <code>gujarati</code>, <code>oriya</code>, <code>tamil</code>, <code>telugu</code>, <code>kannada</code>, <code>malayalam</code>, <code>thai</code>, <code>lao</code>, <code>myanmar</code>, <code>khmer</code>, <code>cjk-heavenly-stem</code>, <code>cjk-earthly-branch</code> から接頭辞を削除しました ({{bug(985825)}} および {{bug(1063856)}})。</li>
+ <li>{{cssxref("list-style-type")}} のカウンタスタイルで <code>mongolian</code>、<code>disclosure-open</code> および <code>disclosure-closed</code> をサポートしました ({{bug(982355)}})。</li>
+ <li>内容がないキーフレーム規則を持つ CSS アニメーションでイベントが発生するように修正しました ({{bug(1004377)}})。</li>
+ <li>CSS Colors level 4 で新たに定義された {{cssxref("&lt;color&gt;")}} である <code>rebeccapurple</code> をサポートしました ({{bug(1024642)}})。</li>
+ <li>CSS Fonts Level 3 の実験的な実装を進めています。これらを有効にするかは設定項目 <code>layout.css.font-features.enabled</code> で制御されており、Nightly ではデフォルトで有効です。以下の機能を新たに実装しました:
+ <ul>
+ <li>{{cssxref("font-variant-caps")}} のフォールバックアルゴリズム。不足しているグリフを代替するものを生成します ({{bug(961558)}})。</li>
+ <li>{{cssxref("font-synthesis")}} CSS プロパティを実装しました ({{bug(871453)}})。</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{htmlelement("picture")}} 要素を実験的にサポートしました ({{bug(870022)}})。設定項目 <code>dom.image.picture.enabled</code> で制御されます (デフォルトは無効)。</li>
+ <li>{{HTMLElement("label")}} 要素、特に {{htmlattrxref("for", "label")}} 属性を持たない label 要素が <code>&lt;input type=hidden&gt;</code> フィールドに適用されないようになりました ({{bug(597650)}})。以前は仕様に準拠していない動作でした。</li>
+ <li>{{HTMLElement("a")}} 要素で、リンクの注釈 <code>noreferrer</code> を実装しました。<code>&lt;a rel="noreferrer"&gt;</code> で、リンクをたどる際の HTTP リクエストにリファラの URL が含まれないようになります ({{bug(530396)}})。これはページ内でのリンクでのみ動作するものであり、コンテキストメニューによるリンクなど UI を通してクリックされたリンクでは動作しません。</li>
+ <li>Android において、{{HTMLElement("meta")}} の {{htmlattrxref("name", "meta")}} 属性で新たに 2 つの値をサポートしました。<code>msapplication-TileImage</code> と <code>msapplication-TileColor</code> です ({{bug(1014712)}})。<br>
+ 例:<br>
+ <code>&lt;meta name="msapplication-TileImage" content="images/benthepcguy-144.png"/&gt;<br>
+ &lt;meta name="msapplication-TileColor" content="#d83434"/&gt;</code></li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>非標準の {{jsxref("Number.toInteger()")}} メソッドを削除しました ({{bug(1022396)}})。</li>
+ <li>{{jsxref("Map.prototype.set()")}}、{{jsxref("WeakMap.prototype.set()")}}、{{jsxref("Set.prototype.add()")}} の各メソッドがチェイン可能になり、<code>undefined</code> ではなく同等のオブジェクトを返すようになりました ({{bug(1031632)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions/Default_parameters">デフォルトパラメータ</a>は関数のボディにある関数宣言より先に評価されますので、これらの関数はデフォルトパラメータから参照できなくなりました ({{bug(1022962)}})。</li>
+ <li>オブジェクトリテラルで短縮プロパティを許容するようになりました。明示的に定義されていない場合は、プロパティのキーは同名の変数で初期化されます。例: <code>function f(x, y) { return {x, y}; }</code> は <code>function f(x, y) { return {x: x, y: y}; }</code> と等価です ({{bug(875002)}})。</li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Operators/yield">yield</a></code> および <code><a href="/ja/docs/Web/JavaScript/Reference/Operators/yield*">yield*</a></code> の構文解析を、最新の ES6 仕様に準拠するよう更新しました ({{bug(981599)}})。</li>
+ <li>非標準の <code>hasOwn</code> トラップを削除しました ({{bug(980565)}})。</li>
+</ul>
+
+<h3 id="Interfaces.2FAPIs.2FDOM" name="Interfaces.2FAPIs.2FDOM">インターフェイス/API/DOM</h3>
+
+<ul>
+ <li>{{domxref("RadioNodeList")}} API が実装され、{{domxref("RadioNodeList.value")}} で選択しているラジオボタンにアクセスできます ({{bug(779723)}})。</li>
+ <li>{{domxref("DOMMatrix")}} を追加しました ({{bug(1018497)}})。</li>
+ <li>非標準の (ただし他のブラウザで実装されている) <code>DOMException.stack</code> プロパティを追加しました。これはスタックを可読性の高い書式 (既存の非標準プロパティ {{jsxref("Error.stack")}} と同じ書式) で表した文字列を返します ({{bug(857648)}})。</li>
+ <li>{{HTMLElement("canvas")}} 向けに、一次 Transform を {{domxref("SVGMatrix")}} 表記によりパターンを変更することが可能な {{domxref("CanvasPattern.setTransform()")}} メソッドを追加しました ({{bug(1019257)}})。</li>
+ <li>設定項目 <code>media.mediasource.enabled</code> で制御しており Nightly および Aurora のみで有効化している Media Source Extensions の実験的な実装で、MP4 をサポートしました ({{bug(1000686)}})。</li>
+ <li>{{domxref("HTMLMediaElement.audioTracks")}} プロパティおよび {{domxref("HTMLMediaElement.videoTracks")}} プロパティを実験的に実装しました。これらは設定項目 <code>media.track.enabled</code> で制御されており、デフォルトは無効です ({{bug(744896)}})。</li>
+ <li>非標準の <code>XMLHttpRequest.mozBackgroundRequest()</code> は Web サイトからアクセス不可になりました。Firefox 内部のコード (Chrome コード) のみ使用できます ({{bug(1035242)}})。</li>
+ <li>仕様から削除された {{event("touchenter")}} イベントおよび {{event("touchleave")}} イベントを削除しました ({{bug(1036444)}})。</li>
+ <li>{{domxref("HTMLTrackElement")}} が発生させる、以前は <code>loaded</code> と呼ばれていたイベントを仕様に合致するよう {{event("load")}} にリネームしました ({{bug(1035505)}})。</li>
+ <li>IndexedDB の {{domxref("FileHandle")}} インターフェイスを {{domxref("IDBMutableFile")}} にリネームしました ({{bug(1006485)}})。</li>
+ <li>IndexedDB の {{domxref("LockedFile")}} インターフェイスを {{domxref("IDBFileHandle")}} にリネームしました ({{bug(1006485)}})。</li>
+ <li><a href="/ja/docs/Web/API/ServiceWorker">ServiceWorker</a> インターフェイスを実装しました。設定項目 <code>dom.serviceWorkers.enabled</code> で制御されます ({{bug(903441)}} で総括しています)。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<ul>
+ <li>{{MathMLElement("mtable")}} 要素で <code>columnspacing</code>、<code>framespacing</code>、<code>rowspacing</code> の各属性をサポートしました ({{bug(330964)}})。</li>
+ <li>fraction、stack、radical、script 用の <a href="https://wiki.mozilla.org/MathML:Open_Type_MATH_Table#Implementation_Status">Open Type MATH</a> constant を使用するようになりました ({{bug(961365)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Audio.2FVideo" name="Audio.2FVideo">Audio/Video</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="WebGL" name="WebGL">WebGL</h3>
+
+<ul>
+ <li><a href="http://www.khronos.org/registry/webgl/extensions/EXT_blend_minmax/"><code>EXT_blend_minmax</code></a> を公開しました。これはブレンド元の色とブレンド先の最小および最大の色成分を生成する新たなブレンド方程式を 2 つ追加することで、ブレンド機能を拡張します ({{bug(973815)}})。</li>
+</ul>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<ul>
+ <li>新たな <a href="/ja/docs/Tools/Debugger-API">Debugger API</a> が好ましいため、<a href="/ja/docs/Mozilla/Add-ons/Code_snippets/JavaScript_Debugger_Service">JavaScript Debugger Service (JSD)</a> を削除しました ({{bug(800200)}})。</li>
+ <li>nsIX509CertDB2 インターフェイスを削除しました。また、このインターフェイス由来のメソッドを nsIX509CertDB インターフェイスに移しました。</li>
+</ul>
+
+<h3 id="Add-on_SDK" name="Add-on_SDK">Add-on SDK</h3>
+
+<h4 id="Highlights" name="Highlights">ハイライト</h4>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/SDK/High-Level_APIs/panel#Panel(options)"><code>Panel</code> コンストラクタ</a>の新たなオプションにより、パネルのコンテキストメニューをサポートしました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/SDK/High-Level_APIs/tabs#readyState"><code>tab.readyState</code></a> をサポートしました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_sidebar#show(window)"><code>sidebar.show()</code></a> および <a href="/ja/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/ui_sidebar#hide(window)"><code>sidebar.hide()</code></a> にパラメータ <a href="/ja/docs/Mozilla/Add-ons/SDK/High-Level_APIs/windows#BrowserWindow"><code>BrowserWindow</code></a> を追加しました。サイドバーを表示または非表示にするウィンドウを制御するためのパラメータです。</li>
+</ul>
+
+<h4 id="Details" name="Details">詳細</h4>
+
+<p><a href="https://github.com/mozilla/addon-sdk/compare/firefox32...firefox33">Firefox 32 から Firefox 33 の間に行われた GitHub コミット</a>。この一覧は Aurora 移行後に上流で行われた内容が含まれていないでしょう。</p>
+
+<p><a href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;chfieldto=2014-07-21&amp;chfield=resolution&amp;query_format=advanced&amp;chfieldfrom=2014-06-09&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;product=Add-on%20SDK&amp;list_id=10493962">Firefox 32 から Firefox 33 の間に解決したバグ</a>。この一覧は Aurora 移行後に上流で行われた内容が含まれていないでしょう。</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/33.0/releasenotes/">Firefox 33 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/33/">Firefox 33 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2014/10/firefox-33-addon-compatibility/">Firefox 33 アドオン互換性情報</a></li>
+</ul>
+
+<h3 id="Older_versions" name="Older_versions">過去のバージョン</h3>
+
+<p>{{Firefox_for_developers('32')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/33/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/33/site_compatibility/index.html
new file mode 100644
index 0000000000..aff6d261b1
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/33/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 33 サイト互換性情報
+slug: Mozilla/Firefox/Releases/33/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 33
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/33/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/33/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/34/index.html b/files/ja/mozilla/firefox/releases/34/index.html
new file mode 100644
index 0000000000..db8b45c641
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/34/index.html
@@ -0,0 +1,155 @@
+---
+title: Firefox 34 for developers
+slug: Mozilla/Firefox/Releases/34
+tags:
+ - Firefox
+ - Releases
+translation_of: Mozilla/Firefox/Releases/34
+---
+<p>Gecko 34 を搭載した Firefox 34 は、米国時間 2014 年 12 月 1 日にリリースされました。このページでは、開発者に影響する Firefox 34 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p>ハイライト:</p>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Storage_Inspector">Storage Inspector: Web ページが保存したデータを確認できる新ツール</a></li>
+ <li><a href="/ja/docs/Tools/Performance">Performance tool: プロファイラの UI の改良とフレームレートのタイムライン</a></li>
+ <li><a href="/ja/docs/tools/Working_with_iframes">Frame switching: 開発ツールがページ内の特定の iframe を指すようにする</a></li>
+ <li><a href="/ja/docs/Web/API/Console.table">console.table をサポート</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector#Examining_event_listeners">インスペクタで jQuery のイベントの確認が可能</a></li>
+</ul>
+
+<p><a class="external-icon external" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;chfieldto=2014-09-02&amp;chfield=resolution&amp;query_format=advanced&amp;chfieldfrom=2014-07-21&amp;chfieldvalue=FIXED&amp;component=Developer%20Tools&amp;component=Developer%20Tools%3A%203D%20View&amp;component=Developer%20Tools%3A%20Canvas%20Debugger&amp;component=Developer%20Tools%3A%20Console&amp;component=Developer%20Tools%3A%20Debugger&amp;component=Developer%20Tools%3A%20Framework&amp;component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&amp;component=Developer%20Tools%3A%20Inspector&amp;component=Developer%20Tools%3A%20Memory&amp;component=Developer%20Tools%3A%20Netmonitor&amp;component=Developer%20Tools%3A%20Object%20Inspector&amp;component=Developer%20Tools%3A%20Profiler&amp;component=Developer%20Tools%3A%20Responsive%20Mode&amp;component=Developer%20Tools%3A%20Scratchpad&amp;component=Developer%20Tools%3A%20Source%20Editor&amp;component=Developer%20Tools%3A%20Storage%20Inspector&amp;component=Developer%20Tools%3A%20Style%20Editor&amp;component=Developer%20Tools%3A%20Timeline&amp;component=Developer%20Tools%3A%20User%20Stories&amp;component=Developer%20Tools%3A%20Web%20Audio%20Editor&amp;component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&amp;component=Developer%20Tools%3A%20WebIDE&amp;component=Simulator&amp;product=Firefox&amp;product=Firefox%20OS&amp;list_id=11184176">Firefox 33 から Firefox 34 の間に解決した開発ツール関連のバグ一覧</a></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>CSS Fonts Level 3 の実験的な実装を進めています。以下の機能を新たに実装しました:
+ <ul>
+ <li>{{cssxref("font-variant-position")}} のフォールバックアルゴリズム。フォントから与えられる上付き文字および下付き文字のメトリックを基に、不足しているグリフの代替を生成します ({{bug(1024804)}})。</li>
+ <li>設定項目 <code>layout.css.font-features.enabled</code> を削除しました。以下のプロパティはデフォルトで有効になります:
+ <ul>
+ <li>短縮プロパティになった、CSS Font Level 3 版の {{cssxref("font-variant")}}。</li>
+ <li>個別のプロパティである {{cssxref("font-variant-caps")}}、{{cssxref("font-variant-numeric")}}、{{cssxref("font-variant-position")}}、{{cssxref("font-variant-east-asian")}}、{{cssxref("font-variant-ligatures")}}、{{cssxref("font-variant-alternates")}}。</li>
+ <li>{{cssxref("font-kerning")}} プロパティおよび {{cssxref("font-synthesis")}} プロパティ。</li>
+ <li>{{cssxref("font-feature-settings")}} プロパティおよび {{cssxref("font-language-override")}} プロパティの接頭辞を削除。接頭辞つきのプロパティも、移行を容易にするためしばらく使用可能です。</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>{{cssxref("min-width")}} および {{cssxref("min-height")}} に、以前とは異なる動作で値 <code>auto</code> を追加しました ({{bug(984711)}} および {{bug(1015474)}})。</li>
+ <li>{{cssxref("filter")}} プロパティの関数タイプの値を、実験的に実装しました。ただし、デフォルトで無効です。これは設定項目 <code>layout.css.filters.enabled</code> で制御します ({{bug(948265)}})。</li>
+ <li>{{cssxref("display")}}、{{cssxref("position")}}、{{cssxref("overflow")}} および類似のプロパティの変更とともに開始する CSS Transitions の開始処理を修正しました ({{bug(887541)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>ES6 の<a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names">オブジェクトリテラルにおける computed property names</a> の構文を実装しました ({{bug(924688)}})。
+
+ <ul>
+ <li>これは <a href="/ja/docs/Web/JavaScript/Reference/Functions/get">getter</a> および <a href="/ja/docs/Web/JavaScript/Reference/Functions/set">setter</a> のメソッド名も同様に含まれており ({{bug(1048384)}})、また <a href="/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Computed_object_property_names_and_destructuring">destructuring</a> と共に使用することもできます。</li>
+ </ul>
+ </li>
+ <li>ES6 の、オブジェクトの<a href="/ja/docs/Web/JavaScript/Reference/Functions/Method_definitions">メソッド定義における短縮記法</a>を実装しました ({{bug(924672)}})。</li>
+ <li>ES6 の <code>Object</code> のメソッドである {{jsxref("Object.assign", "Object.assign()")}} を実装しました ({{bug(937855)}})。</li>
+ <li>ES6 の <a href="/ja/docs/Web/JavaScript/Reference/template_strings">template strings</a> および {{jsxref("String.raw()")}} メソッドをサポートしました ({{bug(1038259)}}、{{bug(1039774)}})。</li>
+ <li>ES6 の新たなオブジェクトである {{jsxref("WeakSet")}} を実装しました ({{bug(792439)}})。</li>
+ <li>最近の仕様の変更に合致するよう、ES6 の <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol">Symbol</a> (Nightly チャンネルのみ有効) を更新しました ({{bug(1042602)}}):
+ <ul>
+ <li>symbol を数値に変換しようとしたときに、<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypeError" title="The TypeError object represents an error when a value is not of the expected type."><code>TypeError</code></a> が発生するようになりました。</li>
+ <li>寛容な等価性を使用するとき、<code>Object(sym) == sym</code> は <code>true</code> を返すようになりました。</li>
+ </ul>
+ </li>
+ <li>実験的な実装であった {{jsxref("TypedArray.prototype.move()")}} メソッド (以前の Nightly および Aurora チャンネルでのみ有効) を、ES6 標準の {{jsxref("TypedArray.prototype.copyWithin()")}} メソッドの実装で置き換えました ({{bug(1021379)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">Strict モード</a>で、ES6 の仕様に応じて<a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer#Duplicate_property_names">オブジェクトリテラルでの重複するプロパティ名</a>に対して <code>SyntaxError</code> が発生しないようになりました ({{bug(1041128)}})。</li>
+ <li>正規表現において (<code>String.replace</code> を含む)、量指定子が妨げたために捕獲式集合が調査されなかったときのマッチ文字列が、空文字列から <code>undefined</code> に変わりました ({{bug(369778)}} および<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp#Gecko_specific_notes">サンプルコード</a>を参照)。Web 互換性のため、RegExp.$N は引き続き空文字列を返します ({{bug(1053944)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">Destructuring</a> で、ES6 の <a href="/ja/docs/Web/JavaScript/Reference/Operators/Spread_operator">Spread Operator</a>をサポートしました ({{bug(933276)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">Destructuring</a> で、配列のような手順に代わりイテレータの手順を使用するようになりました ({{bug(933276)}})。</li>
+ <li>{{jsxref("Proxy.revocable()")}} を実装しました ({{bug(978279)}})。</li>
+</ul>
+
+<h3 id="Interfaces.2FAPIs.2FDOM" name="Interfaces.2FAPIs.2FDOM">インターフェイス/API/DOM</h3>
+
+<ul>
+ <li>{{domxref("Element.matches()")}} メソッドを追加しました。このメソッドの機能は、非標準の <code>mozMatchesSelector()</code> と同じです ({{bug(886308)}})。</li>
+ <li>{{domxref("Performance.now()")}} メソッドを Web workers で使用可能になりました ({{bug(908390)}})。</li>
+ <li>非標準の <code>MozNamedAttrMap</code> インターフェイスを標準の {{domxref("NamedNodeMap")}} に改名しました。また、{{domxref("Element.attributes")}} はこれを使用するように改造しました ({{bug(1055467)}})。</li>
+ <li>{{domxref("Path2D.addPath()")}} メソッドを追加しました ({{bug(985801)}})。</li>
+ <li>非標準の <a href="/ja/docs/Web/API/Device_Storage_API">Device Storage API</a> を、Android にインストールされた特権アプリ向けにも有効化しました ({{bug(886627)}})。</li>
+ <li>Web Crypto API をデフォルトで有効にしました ({{bug(1074001)}})。</li>
+ <li>{{domxref("MediaStreamTrack.stop()")}} メソッドを追加しました ({{bug(1057955)}})。</li>
+ <li>EME の実験的な実装を続けています。{{domxref("MediaKeySession.getUsableKeyIds()")}} メソッドを追加しました ({{bug(1057171)}})。</li>
+ <li><a href="/ja/docs/Web/Guide/API/WebRTC">WebRTC</a> に関する変更点:
+ <ul>
+ <li>{{domxref("RTCPeerConnection")}} とともに動作する、{{domxref("RTPSender")}} および {{domxref("RTPReceiver")}} を試験的に実装しました ({{bug(1032835)}})。</li>
+ <li>{{domxref("Navigation.getUserMedia()")}} に、アプリケーションウィンドウの共有機能を追加しました ({{bug(1036653)}})。また、{{domxref("MediaTrackConstraintSet")}} で <code>browserWindow</code> および <code>scrollWithPage</code> をサポートしました。これは、タブ選択ダイアログを表示せずに共有しなければならないウィンドウの、タブを選択可能にします ({{bug(1041700)}})。</li>
+ <li>MediaSourceEnum で制限を定義するために使用する値として、<code>"browser"</code> をサポートしました ({{bug(1041493)}})。</li>
+ </ul>
+ </li>
+ <li>Web Components で、イベントのリターゲティングを実装しました ({{bug(887541)}})。</li>
+ <li>{{domxref("Headers")}} インターフェイスを実装しました ({{bug(1029620)}})。設定項目 <code>dom.fetch.enabled</code> で制御されており、初期値は <code>false</code> です。</li>
+ <li>Web Animations の実験的な実装について、{{domxref("AnimationEffect")}} インターフェイスを実装しました。{{domxref("AnimationEffect.name")}} プロパティを持ちます ({{bug(1045993)}})。Web Animations は既定で無効であり、設定項目 <code>dom.animations-api.core.enabled</code> で制御しています。</li>
+ <li>CSSOM View のスムーズスクロールメソッドを追加しました: {{domxref("Window.scroll()")}}、{{domxref("Window.scrollTo()")}}、{{domxref("Window.scrollBy()")}} ({{bug(1022818)}})。</li>
+ <li>非標準の <code>MozSmsSegmentInfo</code> は、グローバルオブジェクトで不可視になりました ({{bug(916607)}})。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Audio.2FVideo" name="Audio.2FVideo">Audio/Video</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Security_and_Networking" name="Security_and_Networking">セキュリティとネットワーク</h2>
+
+<ul>
+ <li>SSLv3 がデフォルトで無効になりました ({{bug(1030963)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<ul>
+ <li>localstore.rdf を削除しました ({{bug(559505)}})。</li>
+</ul>
+
+<h3 id="Add-on_SDK" name="Add-on_SDK">Add-on SDK</h3>
+
+<h4 id="Highlights" name="Highlights">ハイライト</h4>
+
+<ul>
+ <li>新規 API: <a href="/ja/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/dev_panel">dev/panel</a> で Firefox の開発ツールを拡張できます。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/SDK/Tools/jpm">jpm</a> のベータ版をリリースしました。</li>
+ <li><code>require("sdk/self").data.url("my-file")</code> の別名として、<code>"./my-file"</code> を全面的に導入しました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/SDK/High-Level_APIs/tabs#Attaching_stylesheets">個々のタブにスタイルシートを適用する</a>機能を追加しました。</li>
+</ul>
+
+<h4 id="Details" name="Details">詳細</h4>
+
+<p><a class="external external-icon" href="https://github.com/mozilla/addon-sdk/compare/firefox33...firefox34">Firefox 33 から Firefox 34 の間に行われた GitHub コミット</a>。この一覧は Aurora 移行後に上流で行われた内容が含まれていないでしょう。</p>
+
+<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;chfieldto=2014-09-02&amp;chfield=resolution&amp;query_format=advanced&amp;chfieldfrom=2014-07-21&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;product=Add-on%20SDK&amp;list_id=11562840">Firefox 33 から Firefox 34 の間に解決したバグ</a>. この一覧は Aurora 移行後に上流で行われた内容が含まれていないでしょう。</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/34.0/releasenotes/">Firefox 34 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/34/">Firefox 34 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2014/11/firefox-34-addon-compatibility/">Firefox 34 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers('33')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/34/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/34/site_compatibility/index.html
new file mode 100644
index 0000000000..7e5f447018
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/34/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 34 サイト互換性情報
+slug: Mozilla/Firefox/Releases/34/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 34
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/34/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/34/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/35/index.html b/files/ja/mozilla/firefox/releases/35/index.html
new file mode 100644
index 0000000000..30d15251ab
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/35/index.html
@@ -0,0 +1,154 @@
+---
+title: Firefox 35 for developers
+slug: Mozilla/Firefox/Releases/35
+tags:
+ - Firefox
+ - Guide
+ - Mozilla
+translation_of: Mozilla/Firefox/Releases/35
+---
+<p>Gecko 35 を搭載した Firefox 35 は、米国時間 2015 年 1 月 13 日にリリースされました。このページでは、開発者に影響する Firefox 35 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p>ハイライト:</p>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Page_Inspector#.3A.3Abefore_and_.3A.3Aafter">インスペクタで ::before および ::after 疑似要素を確認できるようになりました</a>。</li>
+ <li><a href="/ja/docs/Tools/Style_Editor#Source_map_support">CSS ソースマップがデフォルトで有効になりました</a>。</li>
+ <li><a href="/ja/docs/Tools/Page_Inspector#Element_popup_menu_2">インスペクタから "DOM プロパティの表示" が可能になりました</a>。</li>
+</ul>
+
+<p><a class="external-icon external" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;chfieldto=2014-10-13&amp;chfield=resolution&amp;query_format=advanced&amp;chfieldfrom=2014-09-02&amp;chfieldvalue=FIXED&amp;component=Developer%20Tools&amp;component=Developer%20Tools%3A%203D%20View&amp;component=Developer%20Tools%3A%20Canvas%20Debugger&amp;component=Developer%20Tools%3A%20Console&amp;component=Developer%20Tools%3A%20Debugger&amp;component=Developer%20Tools%3A%20Framework&amp;component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&amp;component=Developer%20Tools%3A%20Inspector&amp;component=Developer%20Tools%3A%20Memory&amp;component=Developer%20Tools%3A%20Netmonitor&amp;component=Developer%20Tools%3A%20Object%20Inspector&amp;component=Developer%20Tools%3A%20Profiler&amp;component=Developer%20Tools%3A%20Responsive%20Mode&amp;component=Developer%20Tools%3A%20Scratchpad&amp;component=Developer%20Tools%3A%20Source%20Editor&amp;component=Developer%20Tools%3A%20Storage%20Inspector&amp;component=Developer%20Tools%3A%20Style%20Editor&amp;component=Developer%20Tools%3A%20Timeline&amp;component=Developer%20Tools%3A%20User%20Stories&amp;component=Developer%20Tools%3A%20Web%20Audio%20Editor&amp;component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&amp;component=Developer%20Tools%3A%20WebIDE&amp;component=Simulator&amp;product=Firefox&amp;product=Firefox%20OS&amp;list_id=11184176">Firefox 34 から Firefox 35 の間に解決した開発ツール関連のバグ一覧</a></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/CSS/mask-type" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>mask-type</code></a> プロパティをデフォルトで有効にしました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1058519" title="FIXED: Ship mask-type CSS property">バグ 1058519</a>)。</li>
+ <li><a href="/ja/docs/Web/CSS/filter" title="CSS の filter プロパティは、ぼかしや色変化などのグラフィック効果を要素に適用します。フィルターは画像、背景、境界の描画を調整するためによく使われます。"><code>filter</code></a> プロパティをデフォルトで有効にしました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1057180" title="FIXED: Turn on CSS Filters by default (by enabling about:config pref)">バグ 1057180</a>)。</li>
+ <li><a href="/ja/docs/Web/CSS/@font-face" title="CSS の @font-face @-規則は、テキストを表示するための独自フォントを指定します。フォントはリモートサーバーまたはユーザー自身のコンピューターのどちらかから読み込むことができます。"><code>@font-face</code></a> @ 規則で WOFF2 フォントをサポートしました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1064737" title="FIXED: support WOFF2 fonts via @font-face">バグ 1064737</a>)。</li>
+ <li><a href="/ja/docs/Web/CSS/symbols()" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>symbols()</code></a> 関数記法をサポートしました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=966168" title="FIXED: Implement symbols() CSS function">バグ 966168</a>)。</li>
+ <li>CSS Font Loading API を実装しました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1028497" title="FIXED: implement the CSS Font Loading API">バグ 1028497</a>)。</li>
+ <li>コンボボックスで <a href="/ja/docs/Web/CSS/-moz-appearance" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-appearance</code></a> に値 <code>none</code> を指定すると、ドロップダウンボタンを表示しないようになりました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=649849" title="FIXED: Make -moz-appearance:none on a combobox remove the dropdown button">バグ 649849</a>)。</li>
+ <li>他ブラウザに合致させるため、プロパティへのアクセス手段である <code>element.style["css-property-name"]</code> を追加しました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=958887" title='FIXED: Add support for element.style["css-property-name"] non-standard extension'>バグ 958887</a>)。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/HTML/Element/body" title="HTML の &lt;body> 要素は、HTML 文書のコンテンツを示す要素です。&lt;body> 要素は文書中に一つだけ配置できます。"><code>&lt;body&gt;</code></a>要素において廃止済みであり仕様に適合しない <code>bottommargin</code>、<code>leftmargin</code>、<code>rightmargin</code>、<code>topmargin</code> の各属性を Quirks モード以外でも有効にしました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=95530" title="FIXED: topmargin and leftmargin attributes on the BODY element should be honored in all modes (not just Quirks mode)">バグ 95530</a>)。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/let"><code>let</code></a> 宣言の "<a href="/ja/docs/Web/JavaScript/Reference/Statements/let#Temporal_dead_zone_and_errors_with_let">temporal dead zone</a>" を実装しました。ES6 の <code>let</code> のセマンティクスに合わせて、以下の状況ではエラーが発生します。<a href="https://groups.google.com/forum/#!topic/mozilla.dev.platform/tezdW299Zds">ニュースグループでの発表</a>や <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1001090" title='FIXED: Implement ES6 "temporal dead zone" for let'>バグ 1001090</a> もご覧ください。
+
+ <ul>
+ <li>関数ボディの同一スコープ内で、<code>let</code> を使用して既存の変数や引数を再度宣言すると構文エラーになります。</li>
+ <li>関数ボディで <code>let</code> を使用して宣言した変数を、その宣言に到達して評価される前に使用すると、実行時エラーが発生します。</li>
+ </ul>
+ </li>
+ <li>最近の仕様の変更に合致するよう、ES6 の <a href="/ja/docs/Web/JavaScript/Reference/Symbols" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>Symbols</code></a> (Nightly チャンネルのみ有効) を更新しました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1042602" title="FIXED: Symbol behavior changes in ES6 draft rev 26">バグ 1042602</a>):
+ <ul>
+ <li><code>String(Symbol("1"))</code> で <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypeError" title="TypeError オブジェクトは、値が期待される型でない場合のエラーを表します。"><code>TypeError</code></a> が発生しないようになりました。代わりに文字列 (<code>"Symbol(1)"</code>) が返ります (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1058396" title="FIXED: String(aSymbol) now returns the symbol’s description in ES6 draft rev 27">バグ 1058396</a>)。</li>
+ </ul>
+ </li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#TypedArray_objects"><em>TypedArray</em> のさまざまなコンストラクタ</a>が <code>[[Prototype]]</code> として、ES6 で <code>%TypedArray%</code> と示されている単一の関数を持つようになりました (しかし、他には直接公開されません)。各 Typed Array のプロトタイプは、<code>%TypedArray%.prototype</code> から継承します。(<code>%TypedArray%</code> および <code>%TypedArray%.prototype</code> は、それぞれ <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/prototype"><code>Function.prototype</code></a> および <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype"><code>Object.prototype</code></a> から継承しますので、Typed Array のコンストラクタやインスタンスはこれらのオブジェクトに存在するプロパティを持ちます) Typed Array 関数のプロパティは <code>%TypedArray%.prototype</code> 上に存在して、Typed Array で動作するようになります。詳しくは <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Description"><em>TypedArray</em></a> や <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=896116" title="FIXED: Implement ES6 %TypedArray% superclass that all ArrayBufferViews inherit from">バグ 896116</a> をご覧ください。</li>
+ <li>ES6 の、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Object_initializer#Prototype_mutation">オブジェクトリテラルを使用して行うプロトタイプミューテーション</a>を実装しました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1061853" title="FIXED: Implement ES6 object-literal __proto__ restrictions/semantics">バグ 1061853</a>)。
+ <ul>
+ <li>オブジェクトリテラル構文内では、<code>__proto__:value</code> として指定するメンバーが 1 つだけであれば <code>[[Prototype]]</code> のミューテーションを行うようになりました。</li>
+ <li><code>__proto__() {}</code> のようなメソッドメンバーは、<code>[[Prototype]]</code> をオーバーライトしないようになりました。</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="Interfaces.2FAPIs.2FDOM" name="Interfaces.2FAPIs.2FDOM">インターフェイス/API/DOM</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/NavigatorLanguage" title="NavigatorLanguage contains methods and properties related to the language of the navigator."><code>NavigatorLanguage</code></a> インターフェイスが、<a href="/ja/docs/Web/API/WorkerNavigator" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>WorkerNavigator</code></a> によって Workers から使用可能になりました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=925849" title="FIXED: WorkerNavigator does not implement NavigatorLanguage">バグ 925849</a>)。</li>
+ <li><a href="/ja/docs/Web/API/Element/closest" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>Element.closest()</code></a> メソッドは、カレント要素にもっとも近い祖先要素を返します (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1055533" title="FIXED: Implement Element.closest()">バグ 1055533</a>)。</li>
+ <li><a href="/ja/docs/Web/API/CanvasRenderingContext2D/filter" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>CanvasRenderingContext2D.filter</code></a> プロパティを実験的にサポートしました。設定項目 <code>canvas.filters.enabled</code> で制御されます (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=927892" title="FIXED: Exposing the CSS/SVG Filters as Canvas APIs">バグ 927892</a>)。</li>
+ <li><a href="/ja/docs/Web/API/Animation/target" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>Animation.target</code></a> プロパティの実装により、Web Animations の実験的にな実装が進展しました。設定項目 <code>dom.animations-api.core.enabled</code> で制御されており、デフォルトで無効化されています (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1067701" title="FIXED: Implement Animation.target">バグ 1067701</a>)。</li>
+ <li>仕様書の定めにより、<a href="/ja/docs/Web/API/Element/hasAttributes" title="hasAttributes は現在の要素が何らかの属性を持つか否かを示す真偽値を返します。"><code>hasAttributes()</code></a> メソッドを <a href="/ja/docs/Web/API/Node" title="Node はいくつもの DOM API オブジェクトタイプが継承しているインターフェイスで、それらのさまざまなタイプを同じように扱える (同じメソッドのセットを継承する、または同じ方法でテストできる) ようにします。"><code>Node</code></a> から <a href="/ja/docs/Web/API/Element" title="Element は Document の中にあるすべての要素が継承する、もっとも一般的な基底クラスです。このインターフェイスは、すべての種類の要素に共通するメソッドとプロパティを記述するだけのものです。多くの具体的なクラスが Element を継承します。"><code>Element</code></a> に移しました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1055773" title="FIXED: Move hasAttributes() to Element">バグ 1055773</a>)。</li>
+ <li><a href="/ja/docs/Web/API/HTMLImageElement" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>HTMLImageElement</code></a>、<a href="/ja/docs/Web/API/HTMLLinkElement" title="HTMLLinkElement インターフェイスは、外部リソースの参照情報、およびそれらのリソースとドキュメントの関係 (またはその逆) を表します。このオブジェクトは、HTMLElement インターフェイスのすべてのプロパティとメソッドを継承します。"><code>HTMLLinkElement</code></a>、<a href="/ja/docs/Web/API/HTMLMediaElement" title="HTMLMediaElement は HTMLElement に音声や動画といったメディア関連機能の属性とメソッドを追加します。HTMLVideoElement と HTMLAudioElement はこのインタフェースを継承しています。"><code>HTMLMediaElement</code></a>、<a href="/ja/docs/Web/API/HTMLScriptElement" title="DOMの ScriptオブジェクトはHTMLScriptElement (または HTML 4 HTMLScriptElement)インターフェイスに具現化されます.それは通常のelementオブジェクトインターフェイスに加えて(継承によって利用可能),&lt;script> 要素のレイアウトおよび表現を扱う特別なプロパティとメソッドを提供します."><code>HTMLScriptElement</code></a>、<a href="/ja/docs/Web/API/SVGScriptElement" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>SVGScriptElement</code></a> の <code>crossOrigin</code> 属性は有効な値のみを受け入れるようになりました。<code>""</code> は有効ではなく、代わりに <code>null</code> を使用します (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=880997" title="FIXED: Reflect crossOrigin as a limited enumerated attribute">バグ 880997</a>)。</li>
+ <li>Resource Timing API をデフォルトで有効にしました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1002855" title="FIXED: Turn on Resource Timing">バグ 1002855</a>)。</li>
+ <li>仕様に合致させるため、<a href="/ja/docs/Web/API/Selection/containsNode" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>Selection.containsNode()</code></a> の第一引数を <code>null</code> にすることはできなくなりました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1068058" title="FIXED: Update Selection.containsNode according to the spec">バグ 1068058</a>)。</li>
+ <li><a href="/ja/docs/Web/API/ImageCapture" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>ImageCapture</code></a> API を新たに実装しました。<a href="/ja/docs/Web/API/ImageCapture/takePhoto" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>ImageCapture.takePhoto()</code></a> を使用できます (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=916643" title="FIXED: ImageCapture - Implement WebIDL and takePhoto()">バグ 916643</a>)。</li>
+ <li>HTTP 以外の <a href="/ja/docs/Web/API/XMLHttpRequest" title="XMLHttpRequest (XHR) オブジェクトを使用すると、サーバーと対話することができます。ページ全体を更新する必要なしに、データを受け取ることができます。これでユーザーの作業を中断させることなく、ウェブページの一部を更新することができます。"><code>XMLHttpRequest</code></a> 要求が成功した場合は (誤りである <code>0</code> に代わり) <code>200</code> を返すようになりました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=716491" title="FIXED: Investigate the status code for non-HTTP XHR.">バグ 716491</a>)。</li>
+ <li><a href="/ja/docs/Web/API/XMLHttpRequest/responseURL" title="XMLHttpRequest.responseURL プロパティは読み取り専用で、レスポンスのシリアライズされた URL を返します。 URL が null の場合は、空文字を返します。 URL に存在する URL フラグメントはすべて取り除かれます。 responseURL の値は、任意のリダイレクト後に得られる最後の URL になります。"><code>XMLHttpRequest.responseURL</code></a> を最新の仕様に適合させて、URL のフラグメント (<code>'#xyz'</code>) は存在しても含めないようになりました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1073882" title="FIXED: XMLHttpRequest.prototype.responseURL should not have fragment per latest spec">バグ 1073882</a>)。</li>
+ <li>内部で使用している非標準の <a href="/ja/docs/Web/API/File/mozFullPath" title="File インターフェイスに対する特権的な拡張として、mozFullPath プロパティには、表現されたファイルの絶対パス名が含まれます。"><code>File.mozFullPath</code></a> プロパティは content から参照できなくなりました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1048293" title="FIXED: File::mozFullPath attribute should not be exposed to content.">バグ 1048293</a>)。</li>
+ <li><a href="/ja/docs/Web/API/File" title="File インターフェイスは、ファイルについての情報を提供したり、ウェブページ内の JavaScript でその内容にアクセスできるようにしたりします。"><code>File</code></a> のコンストラクタを、仕様に準拠するよう拡張しました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1047483" title="FIXED: Porting DOMFile/DOMBlob to WebIDL">バグ 1047483</a>)。</li>
+ <li>自身を生成したものとは別のエンティティによってアボートされることが可能な Promise である、<a href="/ja/docs/Web/API/AbortablePromise" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>AbortablePromise</code></a> を実験的に実装しました。接頭辞 <code>Moz</code> を付加しており、設定項目 <code>dom.abortablepromise.enabled</code> (既定値は <code>false</code>) で制御されます (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1035060" title="FIXED: Implement AbortablePromise">バグ 1035060</a>)。</li>
+ <li>非標準の <a href="/ja/docs/Web/API/Navigator/mozIsLocallyAvailable" title="Navigator.mozIsLocallyAvailable() メソッドは、アドオンが指定されたリソースが両可能かどうかを判断できるようにします。"><code>Navigator.mozIsLocallyAvailable</code></a> プロパティを削除しました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1066826" title="FIXED: Remove Navigator::MozisLocallyAvailable API">バグ 1066826</a>)。</li>
+ <li>設定項目 <code>network.websocket.enabled</code> (既定値は <code>true</code>) を削除しました。今後は <a href="/ja/docs/WebSockets">Websocket</a> API を無効化できません (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1091016" title="FIXED: Pref network.websocket.enabled is no longer reasonable">バグ 1091016</a>)。</li>
+ <li><a href="/ja/docs/Web/API/Window/crypto" title="Window.crypto 読み取り専用プロパティは、グローバルオブジェクトに関連付けられた Crypto オブジェクトを返します。このオブジェクトは、ウェブページが暗号に関連したサービスにアクセスできるようにします。"><code>Window.crypto</code></a> の非標準メソッドおよび非標準プロパティを削除しました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1030963" title="FIXED: remove proprietary window.crypto functions/properties">バグ 1030963</a>)。標準の WebCrypto API で定義されているメソッドおよびプロパティのみが残ります。</li>
+ <li>WebGL 2.0 の実験的な実装を進めています!
+ <ul>
+ <li><a href="/ja/docs/Web/API/WebGL2RenderingContext/copyBufferSubData" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>WebGL2RenderingContext.copyBufferSubData()</code></a> メソッドを実装しました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1048668" title="FIXED: WebGL2 - Implement CopyBufferSubData">バグ 1048668</a>)。</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<ul>
+ <li>文字が重ねて置かれる場合 (例えば数学のハット記号がついた、ドットがない i) に、OpenType の <code>dtls</code> 機能 (デフォルト CSS スタイルシートの <a href="/ja/docs/Web/CSS/font-feature-settings" title="CSS の font-feature-settings プロパティは、 OpenType フォントの拡張タイポグラフィの特性を制御します。"><code>font-feature-settings</code></a> による) が MathML 要素へ自動的に適用されるようになりました。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Audio.2FVideo" name="Audio.2FVideo">Audio/Video</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Network_.26_Security" name="Network_.26_Security">ネットワークおよびセキュリティ</h2>
+
+<ul>
+ <li>AEAD 暗号化方式を使用する場合に限り、HTTP/2 を実装および有効化しました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1027720" title="FIXED: Restrict HTTP/2 connections to AEAD ciphers only">バグ 1027720</a> および <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1047594" title="FIXED: Enable http/2 (and alpn) by default">バグ 1047594</a>)。</li>
+ <li>HTTP/2 の <code>alt-svc</code> ヘッダをサポートしました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1003448" title="FIXED: http/2 alt-svc support">バグ 1003448</a>)。</li>
+ <li>HTTP の <a href="/ja/docs/Web/Security/Public_Key_Pinning">Public Key Pinning</a> 拡張 (HPKP) を実装しました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=787133" title="FIXED: Implement Public Key Pinning Extension for HTTP (HPKP)">バグ 787133</a>)。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="XUL_.26_Add-ons" name="XUL_.26_Add-ons">XUL およびアドオン</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/tabbrowser" title="tabbrowser">tabbrowser</a></code> のプライベートなメソッドである <code>_getTabForBrowser()</code> が非推奨になりました。代わりに、パブリックなメソッドである <span id="m-getTabForBrowser"><code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Method/getTabForBrowser">getTabForBrowser</a></code></span> を新たに追加しました。予想されているとおり、このメソッドは指定した <code><a href="/ja/docs/Mozilla/Tech/XUL/browser" title="browser">browser</a></code> を包含する <code><a href="/ja/docs/Mozilla/Tech/XUL/tab" title="tab">tab</a></code> 要素を返します。</li>
+ <li><a href="/ja/docs/Web/API/Performance/now" title="performance.now() メソッドは、ミリ秒単位で計測された DOMHighResTimeStamp を返します。"><code>Performance.now()</code></a> と対等である <code>Components.utils.now()</code> を、window 以外の chrome コード向けに実装しました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=969490" title="FIXED: Implement Components.utils.now() to match Performance.now() for non-window chrome code">バグ 969490</a>)。</li>
+</ul>
+
+<h3 id="Add-on_SDK" name="Add-on_SDK">Add-on SDK</h3>
+
+<h4 id="Highlights" name="Highlights">ハイライト</h4>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/SDK/Tutorials/Add_a_Context_Menu_Item#Adding_an_access_key">コンテキストメニューのアクセスキー</a>を追加できます。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/SDK/High-Level_APIs/windows#BrowserWindow"><code>BrowserWindow</code></a> から <code>isPrivateBrowsing</code> を削除しました。</li>
+</ul>
+
+<h4 id="Details" name="Details">詳細</h4>
+
+<p><a class="external external-icon" href="https://github.com/mozilla/addon-sdk/compare/firefox34...firefox35">Firefox 34 から Firefox 35 の間に行われた GitHub コミット</a>。この一覧は Aurora 移行後に上流で行われた内容が含まれていないでしょう。</p>
+
+<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;chfieldto=2014-10-13&amp;chfield=resolution&amp;query_format=advanced&amp;chfieldfrom=2014-09-02&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;product=Add-on%20SDK&amp;list_id=11562840">Firefox 34 から Firefox 35 の間に解決したバグ</a>。この一覧は Aurora 移行後に上流で行われた内容が含まれていないでしょう。</p>
+
+<h2 id="関連情報">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/35.0/releasenotes/">Firefox 35 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/35/">Firefox 35 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2014/12/firefox-35-addon-compatibility/">Firefox 35 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<div class="multiColumnList">
+<ul>
+<li><a href="/ja/docs/Mozilla/Firefox/Releases/34">Firefox 34 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/33">Firefox 33 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/32">Firefox 32 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/31">Firefox 31 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/30">Firefox 30 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/29">Firefox 29 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/28">Firefox 28 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/27">Firefox 27 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/26">Firefox 26 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/25">Firefox 25 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/24">Firefox 24 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/23">Firefox 23 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/22">Firefox 22 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/21">Firefox 21 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/20">Firefox 20 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/19">Firefox 19 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/18">Firefox 18 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/17">Firefox 17 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/16">Firefox 16 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/15">Firefox 15 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/14">Firefox 14 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/13">Firefox 13 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/12">Firefox 12 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/11">Firefox 11 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/10">Firefox 10 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/9">Firefox 9 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/8">Firefox 8 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/7">Firefox 7 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/6">Firefox 6 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/5">Firefox 5 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/4">Firefox 4 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/3.6">Firefox 3.6 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/3.5">Firefox 3.5 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/3">Firefox 3 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/2">Firefox 2 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/1.5">Firefox 1.5 for developers</a></li></ul>
+</div>
diff --git a/files/ja/mozilla/firefox/releases/35/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/35/site_compatibility/index.html
new file mode 100644
index 0000000000..c695667497
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/35/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 35 サイト互換性情報
+slug: Mozilla/Firefox/Releases/35/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 35
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/35/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/35/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/36/index.html b/files/ja/mozilla/firefox/releases/36/index.html
new file mode 100644
index 0000000000..53c70b77ba
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/36/index.html
@@ -0,0 +1,179 @@
+---
+title: Firefox 36 for developers
+slug: Mozilla/Firefox/Releases/36
+tags:
+ - Firefox
+translation_of: Mozilla/Firefox/Releases/36
+---
+<p>Firefox 36 は、米国時間 2015 年 2 月 24 日にリリースされました。このページでは、開発者に影響する Firefox 36 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p>ハイライト:</p>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Debugger#Debug_eval_sources">eval で評価されるソースをデバッガで表示</a></li>
+ <li><a href="/ja/docs/Tools/Remote_Debugging/Debugging_Firefox_for_Android_with_WebIDE">Android 版 Firefox への接続手順を簡素化</a></li>
+ <li>リモートでボックスモデルのハイライト表示が動作</li>
+ <li><a href="/ja/docs/Tools/Performance#Inverting_the_call_tree">プロファイラの "呼び出しツリーを反転" オプション</a></li>
+ <li><a href="/ja/docs/Tools/Web_Console#Type-specific_rich_output">コンソールで DOM Promise を調査</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector#Element_popup_menu_2">インスペクタで "貼り付け" 方法を追加</a></li>
+</ul>
+
+<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Client%20Software&amp;chfieldto=2014-11-28&amp;chfield=resolution&amp;query_format=advanced&amp;chfieldfrom=2014-10-13&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;component=Developer%20Tools&amp;component=Developer%20Tools%3A%203D%20View&amp;component=Developer%20Tools%3A%20Canvas%20Debugger&amp;component=Developer%20Tools%3A%20Console&amp;component=Developer%20Tools%3A%20Debugger&amp;component=Developer%20Tools%3A%20Framework&amp;component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&amp;component=Developer%20Tools%3A%20Inspector&amp;component=Developer%20Tools%3A%20Memory&amp;component=Developer%20Tools%3A%20Netmonitor&amp;component=Developer%20Tools%3A%20Object%20Inspector&amp;component=Developer%20Tools%3A%20Profiler&amp;component=Developer%20Tools%3A%20Responsive%20Mode&amp;component=Developer%20Tools%3A%20Scratchpad&amp;component=Developer%20Tools%3A%20Source%20Editor&amp;component=Developer%20Tools%3A%20Storage%20Inspector&amp;component=Developer%20Tools%3A%20Style%20Editor&amp;component=Developer%20Tools%3A%20Timeline&amp;component=Developer%20Tools%3A%20User%20Stories&amp;component=Developer%20Tools%3A%20Web%20Audio%20Editor&amp;component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&amp;component=Developer%20Tools%3A%20WebIDE&amp;product=Firefox&amp;list_id=11736454">Firefox 35 から Firefox 36 の間に解決した開発ツール関連のバグ一覧</a></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("will-change")}} プロパティをデフォルトで有効にしました ({{bug(961871)}})。</li>
+ <li>{{cssxref("white-space")}} プロパティが {{HTMLElement("textarea")}} HTML 要素で動作するようになりました ({{bug(82711)}})。</li>
+ <li>{{cssxref("@font-face")}} で {{cssxref("unicode-range")}} ディスクリプタをサポートしました ({{bug(475891)}})。ただし、デフォルトで無効です。</li>
+ <li>{{cssxref("text-decoration-color")}}、{{cssxref("text-decoration-line")}}、{{cssxref("text-decoration-style")}} の各プロパティの接頭辞を削除しました ({{bug(825004)}})。接頭辞つきのプロパティも、移行をスムーズにするためしばらく使用可能です ({{bug(1097922)}})。</li>
+ <li>{{cssxref("text-decoration")}} プロパティを、短縮プロパティに変更しました ({{bug(1039488)}})。</li>
+ <li>{{cssxref("object-fit")}} プロパティおよび {{cssxref("object-position")}} プロパティをサポートしました ({{bug(624647)}})。</li>
+ <li>{{cssxref("display")}} プロパティの値 <code>contents</code> を実験的に実装しました。デフォルトで無効に設定しています ({{bug(907396)}})。</li>
+ <li><a href="/ja/docs/Quirks_Mode_and_Standards_Mode">Quirks モード</a>で、<a href="/ja/docs/Mozilla_Quirks_Mode_Behavior#Miscellaneous_.26_Style"><code>:active</code> および <code>:hover</code> の Quirk</a> の適用対象を削減しました。リンクにのみ、および要素内に擬似要素や他の擬似クラスがない場合や擬似クラスの要素の一部ではない場合に限り適用されます ({{bug(783213)}})。</li>
+ <li>{{cssxref("isolation")}} プロパティを実装しました ({{bug(1077872)}})。</li>
+ <li>CSS の {{cssxref("&lt;gradient&gt;")}} が乗算済み色に適用されるようになり、仕様書や他ブラウザと合致しました。また、途中に予期しない灰色が現れないようになりました ({{bug(591600)}})。</li>
+ <li>{{cssxref("&lt;gradient&gt;")}} に、補間法のヒントを与える構文を追加しました ({{bug(1074056)}})。</li>
+ <li>{{cssxref("scroll-behavior")}} プロパティを実装しました ({{bug(1010538)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/HTML/Element/meta"><code>&lt;meta name="referrer"&gt;</code></a> をサポートしました ({{bug(704320)}})。</li>
+ <li>Firefox では {{HTMLElement("input")}} 要素の {{htmlattrxref("accept", "input")}} 属性で指定したフィルタが未知の値、すなわち未知の MIME タイプや不正な形式の値でない限り、常にデフォルトで選択されるようになりました。以前は <code>image/*</code>、<code>video/*</code>、<code>audio/*</code> が指定された場合に限り、デフォルトで選択されていました ({{bug(826185)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_6_support_in_Mozilla">ECMAScript 6</a> の Symbol データ型をデフォルトで有効にしました (Firefox 33 より、Nightly チャンネルでは使用できていました) ({{bug(1066322)}}):
+
+ <ul>
+ <li>{{jsxref("Symbol")}}</li>
+ <li>{{jsxref("Symbol.for()")}}</li>
+ <li>{{jsxref("Symbol.keyFor()")}}</li>
+ <li>{{jsxref("Object.getOwnPropertySymbols()")}}</li>
+ </ul>
+ </li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/iterable">イテレート可能</a>なインターフェイスのプロパティキーのための、旧来のプレースホルダ文字列である <code>"@@iterator"</code> を、ES6 で周知のシンボルである {{jsxref("Symbol.iterator")}} に置き換えました ({{bug(918828)}})。</li>
+ <li>仕様内部の抽象的な演算である <code>ToNumber(string)</code> で 2 進 (<code>0b</code>) および 8 進 (<code>0o</code>) リテラルをサポートしました。これは潜在的に、ES5 からの破壊的な変更になります ({{bug(1079120)}})。
+ <ul>
+ <li><code>Number("0b11")</code> は、<code>NaN</code> ではなく <code>3</code> を返します。</li>
+ <li><code>"0o11" == 9</code> は、<code>false</code> ではなく <code>true</code> を返します。</li>
+ </ul>
+ </li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/const"><code>const</code></a> 宣言はブロックスコープが設定されるようになりました。また、初期化子が必要になりました ({{bug(611388)}})。さらに、再宣言が不可になりました ({{bug(1095439)}})。
+ <ul>
+ <li><code>{const a=1}; a;</code> は <code>1</code> が返らずに {{jsxref("ReferenceError")}} が発生します。これはブロックスコープがあるためです。</li>
+ <li><code>const a;</code> は {{jsxref("SyntaxError")}} ("missing = in const declaration") が発生します。初期化子が必要です。</li>
+ <li><code>const a = 1; a = 2;</code> は {{jsxref("SyntaxError")}} ("invalid assignment to const a") が発生します。</li>
+ </ul>
+ </li>
+ <li>ES7 の {{jsxref("Array.prototype.includes")}} メソッドを実装しました。ただし、現在は Nightly ビルドのみで有効です ({{bug(1069063)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/let"><code>let</code></a> および <a href="/ja/docs/Web/JavaScript/Reference/Statements/const"><code>const</code></a> とともに <a href="/ja/docs/Web/JavaScript/Reference/Operators/delete"><code>delete</code></a> 演算子を使用すると、"<a href="/ja/docs/Web/JavaScript/Reference/Statements/let#Temporal_dead_zone_and_errors_with_let">temporal dead zone</a>" が発生するようになりました ({{bug(1074571)}})。</li>
+ <li>非標準の <a href="/ja/docs/Web/JavaScript/Reference/Statements/let#Non-standard_let_extensions"><code>let</code> ブロックおよび <code>let</code> 式</a>は非推奨になり、コンソールに警告が表示されます。将来削除する予定であるため、今後は使用しないようにしてください。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/WeakMap">WeakMap</a> コンストラクタで、省略可能な引数 iterable を扱うようになりました ({{bug(1092537)}})。</li>
+</ul>
+
+<h3 id="Interfaces.2FAPIs.2FDOM" name="Interfaces.2FAPIs.2FDOM">インターフェイス/API/DOM</h3>
+
+<ul>
+ <li>Canvas API の {{domxref("CanvasRenderingContext2D.resetTransform()")}} メソッドを実装しました ({{bug(1099148)}})。</li>
+ <li>Web Crypto API で ECDSA をサポートしました ({{bug(1034854)}})。</li>
+ <li>WebGL 2.0 の実験的な実装を進めています!
+ <ul>
+ <li>{{domxref("WebGLQuery")}} インターフェイスが利用可能になりました ({{bug(1048719)}})。</li>
+ <li>{{domxref("WebGL2RenderingContext.invalidateFrameBuffer()")}} メソッドを実装しました ({{bug(1076456)}})。</li>
+ </ul>
+ </li>
+ <li>{{jsxref("Promise")}} ベースの {{domxref("MediaDevices.getUserMedia()", "getUserMedia()")}} を持つ、{{domxref("MediaDevices")}} インターフェイスを追加しました。{{domxref("Navigator.mediaDevices")}} を通して使用できます ({{bug(1033885)}})。</li>
+ <li>EME 関連の {{domxref("Navigator.requestMediaKeySystemAccess()")}} メソッドおよび {{domxref("MediaKeySystemAccess")}} をサポートしました ({{bug(1095257)}})。</li>
+ <li>セッション中で EME 関連の CDM が鍵情報を変更したときに、{{event("keyschange")}} イベントが発生するようになりました ({{bug(1081755)}})。</li>
+ <li>バーチャルリアリティデバイスを、設定項目 <code>dom.vr.enabled</code> の元で実験的にサポートしました。既定では無効です ({{bug(1036604)}})。</li>
+ <li>仕様書に基づき {{domxref("RTCPeerConnection.onsignalingstatechange")}} に関連づけられた関数は、イベントをパラメータとして受け取るようになりました ({{bug(1075133)}})。</li>
+ <li>Web Animations の実験的な実装を続けています。メソッド {{domxref("AnimationPlayer.play()")}}、{{domxref("AnimationPlayer.pause()")}} ({{bug(1070745)}}) および {{domxref("AnimationPlayer.playState")}} ({{bug(1037321)}}) をサポートしました。</li>
+ <li>非標準の {{domxref("DOMRequest")}} インターフェイスが {{domxref("DOMRequest.then()", "then()")}} メソッドを持つようになりました ({{bug(839838)}})。</li>
+ <li>CSSOM View のスクロール動作を制御するメソッドである {{domxref("Element.scroll()")}}、{{domxref("Element.scrollTo()")}}、{{domxref("Element.scrollBy()")}}、{{domxref("Element.scrollIntoView()")}} を実装または拡張しました ({{bug(1045754)}} および {{bug(1087559)}})。</li>
+ <li>{{domxref("SVGElement")}} に {{domxref("Element.innerHTML")}} を割り当ていると、SVG ネームスペース内に要素を作成するようになりました ({{bug(886390)}})。</li>
+ <li><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebBrowserPersist#saveURI()"><code>nsIWebBrowserPersist.saveURI()</code></a> メソッドは、以前のリリースとは互換性のない順序で 8 個の引数が必要になりました。</li>
+ <li>Media Source Extensions (MSE) を、non-build 版 (Nightly および Developer Edition ) ではデフォルトで有効にしました ({{bug(1000686)}})。Beta および Release では、引き続き無効です。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Audio.2FVideo" name="Audio.2FVideo">Audio/Video</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Networking" name="Networking">ネットワーク</h2>
+
+<ul>
+ <li>SPDY/3 のサポートを廃止しました。SPDY/3.1 は引き続き使用可能です ({{bug(1097944)}})。</li>
+</ul>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<ul>
+ <li>RC4 は安全でないとみなすようになり、すべての UI インジケータがそのように対応します。また SSLv3 は Firefox 34 からデフォルトで無効になっていますが、何が起きているかをユーザが理解しやすくなるように UI を変更しました ({{bug(1093595)}})。</li>
+ <li>TLS の初期ハンドシェイクで RC4 を提示しないようになりました ({{bug(1088915)}})。</li>
+ <li>CSP 1.1 の <a href="/ja/docs/Web/Security/CSP/CSP_policy_directives#form-action"><code>form-action</code></a> ディレクティブをサポートしました ({{bug(529697)}})。</li>
+ <li>Firefox のオプションで、<a href="/ja/docs/Web/Security/Do_not_track_field_guide">Do not track</a> の設定ウィジェットを有効/無効の切り替えに戻しました ({{bug(1071747)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="Add-on_SDK" name="Add-on_SDK">Add-on SDK</h3>
+
+<h4 id="Highlights" name="Highlights">ハイライト</h4>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/test_httpd">sdk/test/httpd</a></code> モジュールを <a href="/ja/Firefox/Releases/36">Firefox 36</a> で削除しました。代わりに <a href="https://www.npmjs.com/package/addon-httpd">addon-httpd</a> npm モジュールを使用してください。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/SDK/High-Level_APIs/ui">sdk/ui</a></code> ボタンにバッジを付加できます ({{bug(994280)}})。</li>
+ <li>どこででも sdk モジュールにアクセスできるグローバル関数 <code>require</code> を実装しました ({{bug(1070927)}})。使用方法は以下のとおりです:</li>
+</ul>
+
+<pre>var { require } = Cu.import("resource://gre/modules/commonjs/toolkit/require.js", {});</pre>
+
+<h4 id="Details" name="Details">詳細</h4>
+
+<p><a href="https://github.com/mozilla/addon-sdk/compare/firefox35...firefox36">Firefox 35 から Firefox 36 の間に行われた GitHub コミット</a>。</p>
+
+<h3 id="JavaScript_code_modules" name="JavaScript_code_modules">JavaScript コードモジュール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/JavaScript_code_modules/PromiseUtils.jsm#resolveOrTimeout()" title="PromiseUtils.resolveOrTimeout">PromiseUtils.resolveOrTimeout</a> を実装しました ({{bug(1080466)}})。</li>
+ <li><a href="/ja/docs/Mozilla/JavaScript_code_modules/PromiseUtils.jsm#defer()" title="PromiseUtils.defer">PromiseUtils.defer</a> (<a href="/ja/docs/Mozilla/JavaScript_code_modules/Promise.jsm#defer()" title="Promise.defer">Promise.defer</a> を置き換えるもの) を実装しました ({{bug(1093021)}})。</li>
+</ul>
+
+<h3 id="XUL" name="XUL">XUL</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<ul>
+ <li>Firefox の <code>-remote</code> <a href="/ja/docs/Mozilla/Command_Line_Options">コマンドラインオプション</a>を廃止しました ({{bug(1080319)}})。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/36.0/releasenotes/">Firefox 36 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/36/">Firefox 36 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2015/01/firefox-36-addon-compatibility/">Firefox 36 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers('35')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/36/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/36/site_compatibility/index.html
new file mode 100644
index 0000000000..0e50099fa9
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/36/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 36 サイト互換性情報
+slug: Mozilla/Firefox/Releases/36/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 36
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/36/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/36/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/37/index.html b/files/ja/mozilla/firefox/releases/37/index.html
new file mode 100644
index 0000000000..1951881c9e
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/37/index.html
@@ -0,0 +1,128 @@
+---
+title: Firefox 37 for developers
+slug: Mozilla/Firefox/Releases/37
+tags:
+ - Firefox
+ - Release Notes
+translation_of: Mozilla/Firefox/Releases/37
+---
+<p>Firefox 37 は、米国時間 2015 年 3 月 31 日にリリースされました。このページでは、開発者に影響する Firefox 37 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p>ハイライト:</p>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Network_Monitor#Security">ネットワークモニタの Security パネル</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Work_with_animations#Firefox_37">インスペクタのアニメーションパネル</a></li>
+ <li><a href="/ja/docs/Tools/WebIDE/Running_and_debugging_apps#Running_a_custom_build_step">WebIDE でカスタムビルドステップの実行をサポート</a></li>
+</ul>
+
+<p><a class="external-icon external" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Client%20Software&amp;chfieldto=2015-01-12&amp;chfield=resolution&amp;query_format=advanced&amp;chfieldfrom=2014-11-28&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;component=Developer%20Tools&amp;component=Developer%20Tools%3A%203D%20View&amp;component=Developer%20Tools%3A%20Canvas%20Debugger&amp;component=Developer%20Tools%3A%20Console&amp;component=Developer%20Tools%3A%20Debugger&amp;component=Developer%20Tools%3A%20Framework&amp;component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&amp;component=Developer%20Tools%3A%20Inspector&amp;component=Developer%20Tools%3A%20Memory&amp;component=Developer%20Tools%3A%20Netmonitor&amp;component=Developer%20Tools%3A%20Object%20Inspector&amp;component=Developer%20Tools%3A%20Profiler&amp;component=Developer%20Tools%3A%20Responsive%20Mode&amp;component=Developer%20Tools%3A%20Scratchpad&amp;component=Developer%20Tools%3A%20Source%20Editor&amp;component=Developer%20Tools%3A%20Storage%20Inspector&amp;component=Developer%20Tools%3A%20Style%20Editor&amp;component=Developer%20Tools%3A%20Timeline&amp;component=Developer%20Tools%3A%20User%20Stories&amp;component=Developer%20Tools%3A%20Web%20Audio%20Editor&amp;component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&amp;component=Developer%20Tools%3A%20WebIDE&amp;product=Firefox&amp;list_id=11892733">Firefox 36 から Firefox 37 の間に解決した開発ツール関連のバグ一覧</a></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("display")}}<code>: contents</code> をデフォルトで有効にしました ({{bug(1102374)}} および {{bug(1105369)}})。</li>
+ <li><a href="/ja/docs/Web/Guide/CSS/Using_multi-column_layouts">CSS マルチカラムレイアウト</a>が、{{cssxref("display")}}<code>: table-caption</code> を適用した要素で動作するようになりました ({{bug(1109571)}})。</li>
+ <li>テーブルセルの相対配置 ({{cssxref("position")}}<code>: relative</code>) を実装しました ({{bug(35168)}})。</li>
+ <li>Quirks モードで、{{cssxref("empty-cells")}} の動作を削除しました。Standard モードと同様に、デフォルトが <code>show</code> になります ({{bug(1020400)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>リンクを新しいタブで開く場合でも、<code>&lt;a rel="noreferrer"&gt;</code> が機能するようになりました ({{bug(1031264)}})。</li>
+ <li><code>&lt;input accept&gt;</code> で、<code>'.'</code> の後に拡張子を記載する形式を受け入れるようになりました。これを指定するとファイル選択ダイアログをユーザに提示するとき、指定した拡張子でフィルタします ({{bug(826176)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("Map")}}、{{jsxref("Set")}}、{{jsxref("WeakMap")}}、{{jsxref("WeakSet")}} コンストラクタは、引数 iterable で値 null を無視するようになりました ({{bug(1092538)}})。</li>
+ <li>{{jsxref("Map")}}、{{jsxref("Set")}}、{{jsxref("WeakMap")}}、{{jsxref("WeakSet")}} コンストラクタで、モンキーパッチを使用した <code>prototype.set</code> または <code>prototype.add</code> をサポートしました ({{bug(804279)}})。</li>
+ <li>非標準の {{jsxref("String.quote","String.prototype.quote()")}} メソッドを削除しました ({{bug(1103181)}})。</li>
+ <li>{{jsxref("RegExp.prototype.flags")}} プロパティを実装しました ({{bug(1108467)}})。</li>
+ <li>{{jsxref("Array")}} のメソッドのいくつかを、<a href="/ja/docs/Web/JavaScript/Typed_arrays">Typed Array</a> にも実装しました:
+ <ul>
+ <li>{{jsxref("TypedArray.every", "every()")}} および {{jsxref("TypedArray.some", "some()")}} メソッド ({{bug(1116390)}})。</li>
+ <li>{{jsxref("TypedArray.find", "find()")}} および {{jsxref("TypedArray.findIndex", "findIndex()")}} メソッド ({{bug(1078975)}})。</li>
+ <li>{{jsxref("TypedArray.fill", "fill()")}} メソッド ({{bug(1113722)}})。</li>
+ <li>{{jsxref("TypedArray.indexOf", "indexOf()")}} および {{jsxref("TypedArray.lastIndexOf", "lastIndexOf()")}} メソッド ({{bug(1107601)}})。</li>
+ <li>{{jsxref("TypedArray.join", "join()")}} メソッド ({{bug(1115817)}})。</li>
+ <li>{{jsxref("TypedArray.reduce", "reduce()")}} および {{jsxref("TypedArray.reduceRight", "reduceRight()")}} メソッド ({{bug(1117350)}})。</li>
+ <li>{{jsxref("TypedArray.reverse", "reverse()")}} メソッド ({{bug(1111516)}})。</li>
+ <li>{{jsxref("TypedArray.keys", "keys()")}}、{{jsxref("TypedArray.values", "values()")}}、{{jsxref("TypedArray.entries", "entries()")}} メソッド ({{bug(1119217)}})。</li>
+ </ul>
+ </li>
+ <li>ES6 Proxy の {{jsxref("Global_Objects/Proxy/handler/enumerate", "enumerate")}} トラップを実装しました ({{bug(783829)}})。</li>
+ <li>ES6 仕様書に基づき、{{jsxref("Function.length")}} プロパティの <code>configurable</code> 属性を <code>true</code> に変更しました ({{bug(911142)}})。</li>
+ <li><a href="http://wiki.ecmascript.org/doku.php?id=strawman:data_parallelism">ParallelJS (PJS)</a> の開発を中止しました。将来性の乏しさ、関心の薄さ、コードの複雑さが理由です。<code>Array.prototype.mapPar</code>、<code>filterPar</code>、<code>reducePar</code> メソッドといった、Nightly チャンネルのみで有効であった実験的な実装は全面的に削除しました。</li>
+</ul>
+
+<h3 id="Interfaces.2FAPIs.2FDOM" name="Interfaces.2FAPIs.2FDOM">インターフェイス/API/DOM</h3>
+
+<ul>
+ <li>{{domxref("StereoPannerNode")}} <a href="/ja/docs/Web/API/Web_Audio_API">Web Audio</a> ノードを実装しました ({{bug(1100349)}})。</li>
+ <li>{{jsxref("Promise")}} ベースの {{domxref("OfflineAudioContext")}} が使用可能になりました ({{bug(1087944)}})。</li>
+ <li><a href="/ja/docs/Web/API/ServiceWorker_API">Service Worker</a> の実験的な実装 (デフォルトで無効) を進めています。{{domxref("ServiceWorkerGlobalScope.update()")}} を実装しました ({{bug(1065366)}})。</li>
+ <li><a href="/ja/docs/Web/API/Web_Workers_API">Web workers</a> で <a href="/ja/docs/Web/API/IndexedDB_API">IndexedDB API</a> を使用できるようになりました ({{bug(701634)}})。</li>
+ <li>WebGL 2.0 の実験的な実装を進めています!
+ <ul>
+ <li>バッファオブジェクトへのアクセス機能を提供する、{{domxref("WebGL2RenderingContext.getBufferSubData()")}} メソッドを実装しました ({{bug(1048731)}})。</li>
+ </ul>
+ </li>
+ <li><code>KeyboardEvent.key</code> のキー名の一部を、<a href="https://dvcs.w3.org/hg/dom3events/raw-file/tip/html/DOM3Events-key.html">最新の DOM Level 3 Events 仕様</a>に準拠するよう変更しました。<a href="/ja/docs/Web/API/KeyboardEvent.key#Key_values">MDN で KeyboardEvent.key の値の一覧表</a>をご覧ください。緑色のセルが新たな値です。また、紫色の値は変更される可能性があります。これらの値を使用する場合は注意してください (キー名の変更に関するメタバグは {{bug(900372)}} です)。</li>
+ <li>{{domxref("Console")}} インターフェイスが {{domxref("ServiceWorker")}} および {{domxref("SharedWorker")}} で動作するようになりました。これらは以前から使用できましたが、動作しない状態でした ({{bug(1058644)}})。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<ul>
+ <li>SVG2 の <code>&lt;marker orient="auto-start-reverse"&gt;</code> を実装しました ({{bug(1107584)}})。</li>
+</ul>
+
+<h3 id="Audio.2FVideo" name="Audio.2FVideo">Audio/Video</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Networking" name="Networking">ネットワーク</h2>
+
+<ul>
+ <li>WebSockets で <code>permessage</code> 圧縮法をサポートしました ({{bug(792831)}})。サーバが対応していれば使用できます。</li>
+</ul>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<ul>
+ <li>SSL 3.0 や RC4 といった弱いプロトコルや暗号方式をサイトで使用していることを警告するため、それらが使用されたことをコンソールに記録するようになりました ({{bug(1092835)}})。</li>
+ <li><a href="/ja/docs/Web/Security/CSP">CSP</a> 1.1 の <code>referrer</code> <a href="/ja/docs/Web/Security/CSP/CSP_policy_directives">ディレクティブ</a>をサポートしました ({{bug(965727)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="Add-on_SDK" name="Add-on_SDK">Add-on SDK</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="XUL" name="XUL">XUL</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/37.0/releasenotes/">Firefox 37 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/37/">Firefox 37 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2015/02/firefox-37-addon-compatibility/">Firefox 37 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers('36')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/37/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/37/site_compatibility/index.html
new file mode 100644
index 0000000000..895ef5f546
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/37/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 37 サイト互換性情報
+slug: Mozilla/Firefox/Releases/37/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 37
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/37/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/37/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/38/index.html b/files/ja/mozilla/firefox/releases/38/index.html
new file mode 100644
index 0000000000..db87fd5329
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/38/index.html
@@ -0,0 +1,190 @@
+---
+title: Firefox 38 for developers
+slug: Mozilla/Firefox/Releases/38
+tags:
+ - Firefox
+ - Firefox 38
+ - Gecko
+ - Gecko 38
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/38
+---
+<p>Firefox 38 は、米国時間 2015 年 5 月 12 日にリリースされました。このページでは、開発者に影響する Firefox 38 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p>ハイライト:</p>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Web_Audio_Editor#Bypassing_nodes">Web Audio Editor でオーディオノードをバイパス</a></li>
+ <li><a href="/ja/docs/Tools/Web_Console#Helper_commands">Web コンソールの "コピー" コマンド</a></li>
+ <li><a href="/ja/docs/Tools/Web_Console#XHR">Web コンソールで XmlHttpRequest をハイライトおよびフィルタ</a></li>
+ <li><a href="/ja/docs/Tools/Debugger/How_to/Examine,_modify,_and_watch_variables">デバッガで、最適化により削除された変数を確認</a></li>
+ <li><a href="/ja/docs/Tools/Network_Monitor#Security">ネットワークモニタでセキュリティの警告を確認</a></li>
+ <li><a href="/ja/docs/Tools/Network_Monitor#Network_request_fields">ネットワークモニタで伝送サイズを確認</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Work_with_animations#Animations_view">ページのアニメーションを再生/停止</a></li>
+</ul>
+
+<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Client%20Software&amp;chfieldto=2015-02-23&amp;query_format=advanced&amp;chfield=resolution&amp;chfieldfrom=2015-01-12&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;component=Developer%20Tools&amp;component=Developer%20Tools%3A%203D%20View&amp;component=Developer%20Tools%3A%20Canvas%20Debugger&amp;component=Developer%20Tools%3A%20Console&amp;component=Developer%20Tools%3A%20Debugger&amp;component=Developer%20Tools%3A%20Framework&amp;component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&amp;component=Developer%20Tools%3A%20Inspector&amp;component=Developer%20Tools%3A%20Memory&amp;component=Developer%20Tools%3A%20Netmonitor&amp;component=Developer%20Tools%3A%20Object%20Inspector&amp;component=Developer%20Tools%3A%20Profiler&amp;component=Developer%20Tools%3A%20Responsive%20Mode&amp;component=Developer%20Tools%3A%20Scratchpad&amp;component=Developer%20Tools%3A%20Source%20Editor&amp;component=Developer%20Tools%3A%20Storage%20Inspector&amp;component=Developer%20Tools%3A%20Style%20Editor&amp;component=Developer%20Tools%3A%20Timeline&amp;component=Developer%20Tools%3A%20User%20Stories&amp;component=Developer%20Tools%3A%20Web%20Audio%20Editor&amp;component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&amp;component=Developer%20Tools%3A%20WebIDE&amp;product=Firefox&amp;list_id=12076303">Firefox 37 から Firefox 38 の間に解決した開発ツール関連のバグ一覧</a></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("ruby-position")}} および {{cssxref("ruby-align")}} をサポートして、デフォルトで有効にしました ({{bug(1055676)}}、{{bug(1123917)}}、{{bug(1039006)}})。</li>
+ <li>Custom Elements 向けに {{cssxref(":unresolved")}} 疑似クラスを実装しました ({{bug(1111633)}})。</li>
+ <li>定義済みスタイル {{cssxref("list-style-type", "ethiopic-numeric")}} の接尾辞は最近の仕様書の変更に合わせて、ドットに代わり空白文字を使用するようになりました ({{bug(1120721)}})。</li>
+ <li>インライン要素とブロック要素の両方に分けて生成した Generated Content ({{cssxref("::before")}} や {{cssxref("::after")}} による) の CSS Transitions が、仕様書で要求されているとおりに動作するようになりました ({{bug(1110277)}})。</li>
+ <li>CSS Logical Properties の実装が大きく前進しました。{{pref("layout.css.vertical-text.enabled")}} フラグの設定 (既定値は <code>false</code>) により、以下のプロパティを使用できます:
+ <ul>
+ <li>方向に依存しない {{cssxref("width")}} および {{cssxref("height")}}: {{cssxref("block-size")}} および {{cssxref("inline-size")}} ({{bug(1117983)}})。</li>
+ <li>方向に依存しない {{cssxref("min-width")}} および {{cssxref("min-height")}}: {{cssxref("min-block-size")}} および {{cssxref("min-inline-size")}} ({{bug(1117983)}})。</li>
+ <li>方向に依存しない {{cssxref("max-width")}} および {{cssxref("max-height")}}: {{cssxref("max-block-size")}} および {{cssxref("max-block-size")}} ({{bug(1117983)}})。</li>
+ <li>方向に依存しない {{cssxref("margin-top")}}、{{cssxref("margin-right")}}、{{cssxref("margin-bottom")}}、{{cssxref("margin-left")}}: {{cssxref("margin-block-start")}}、{{cssxref("margin-block-end")}}、{{cssxref("margin-inline-start")}}、{{cssxref("margin-inline-end")}} ({{bug(649142)}})。</li>
+ <li>方向に依存しない {{cssxref("padding-top")}}、{{cssxref("padding-right")}}、{{cssxref("padding-bottom")}}、{{cssxref("padding-left")}}: {{cssxref("padding-block-start")}}、{{cssxref("padding-block-end")}}、{{cssxref("padding-inline-start")}}、{{cssxref("padding-inline-end")}} ({{bug(649142)}})。</li>
+ <li>方向に依存しない {{cssxref("border-top")}}、{{cssxref("border-right")}}、{{cssxref("border-bottom")}}、{{cssxref("border-left")}} および幅、スタイル、色を個別に示すプロパティ: {{cssxref("border-block-start")}}、{{cssxref("border-block-start-width")}}、{{cssxref("border-block-start-style")}}、{{cssxref("border-block-start-color")}}、{{cssxref("border-block-end")}}、{{cssxref("border-block-end-width")}}、{{cssxref("border-block-end-style")}}、{{cssxref("border-block-end-color")}}、{{cssxref("border-inline-start")}}、{{cssxref("border-inline-start-width")}}、{{cssxref("border-inline-start-style")}}、{{cssxref("border-inline-start-color")}}、{{cssxref("border-inline-end")}}、{{cssxref("border-inline-end-width")}}、{{cssxref("border-inline-end-style")}}、{{cssxref("border-inline-end-color")}} ({{bug(649142)}})。</li>
+ <li>方向に依存しない {{cssxref("top")}}、{{cssxref("right")}}、{{cssxref("bottom")}}、{{cssxref("left")}}: {{cssxref("offset-block-start")}}、{{cssxref("offset-block-end")}}、{{cssxref("offset-inline-start")}}、{{cssxref("offset-inline-end")}} ({{bug(1120283)}})。</li>
+ </ul>
+ </li>
+ <li>ブラウザ間で相互運用性がある動作を目指して、<a href="/ja/docs/Web/Guide/CSS/Using_CSS_transitions">CSS Transitions</a> の始まり方を、最近の仕様変更に合致するよう変更しました ({{bug(960465)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("label")}} 要素でイベントターゲットとラベルの間にインタラクティブコンテンツがある場合は、イベントをターゲット要素に発行しないようになりました ({{bug(229925)}})。</li>
+ <li>{{HTMLElement("picture")}} 要素をデフォルトで有効にしました ({{bug(1017875)}})。</li>
+ <li>コンテキストメニューや中クリックによるナビゲーションで、<code>&lt;meta name="referrer"&gt;</code> をサポートしました ({{bug(1113431)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("Generator/return", "Generator.prototype.return()")}} を実装しました ({{bug(1115868)}})。</li>
+ <li>{{jsxref("Functions/rest_parameters", "Rest Parameter", "", 1)}} を持つ {{jsxref("Functions/set", "Setter")}} は、{{jsxref("SyntaxError")}} が発生するようになりました ({{bug(1089632)}})。</li>
+ <li>Function の {{jsxref("Function/name", "name")}} プロパティが configurable になりました ({{bug(1084019)}})。</li>
+ <li>{{jsxref("Array")}} のメソッドのいくつかを、<a href="/ja/docs/Web/JavaScript/Typed_arrays">Typed Array</a> にも実装しました:
+ <ul>
+ <li>{{jsxref("TypedArray.of", "of()")}} メソッドと {{jsxref("TypedArray.from", "from()")}} メソッド ({{bug(896608)}})。</li>
+ <li>{{jsxref("TypedArray.forEach", "forEach()")}} メソッド ({{bug(1107645)}})。</li>
+ <li>{{jsxref("TypedArray.filter", "filter()")}} メソッドと {{jsxref("TypedArray.map", "map()")}} メソッド ({{bug(1121936)}})。</li>
+ <li>{{jsxref("TypedArray.slice", "slice()")}} メソッド ({{bug(1121935)}})。</li>
+ </ul>
+ </li>
+ <li>Rest Parameter を使用する場合は、パラメータ名の重複が不可になりました ({{bug(1096376)}})。</li>
+ <li>Arrow Function を使用する場合は、パラメータ名の重複が不可になりました ({{bug(1096377)}})。</li>
+ <li>簡潔なメソッド定義では、パラメータ名の重複が不可になりました ({{bug(1096378)}})。</li>
+ <li>{{jsxref("Operators/new", "new")}} を伴わずに {{jsxref("Map")}}/{{jsxref("Set")}}/{{jsxref("WeakMap")}} コンストラクタを呼び出すと、警告が発生するようになりました ({{bug(1108930)}})。</li>
+ <li>{{jsxref("WeakMap")}} オブジェクトの {{jsxref("WeakMap.get", "get")}}、{{jsxref("WeakMap.has", "has")}}、{{jsxref("WeakMap.delete", "delete")}} メソッドは、引数 <code>key</code> がオブジェクトではない場合に、例外が発生しないようになりました ({{bug(1127827)}})。</li>
+ <li>{{jsxref("WeakMap.prototype.get()")}} メソッドの、省略可能な非標準の引数 <code>fallback</code> を削除しました ({{bug(1127827)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions/Method_definitions">Generator メソッド</a> を定義するとき、"<code>set</code>" および "<code>get</code>" は有効な名前として扱うようになりました ({{bug(1073809)}})。</li>
+ <li>正規表現が存在しないとき、{{jsxref("RegExp.prototype.source")}} は空文字列に代わり "(?:)" を返すようになりました ({{bug(1130798)}})。</li>
+ <li>{{jsxref("RegExp.prototype.source")}} および {{jsxref("RegExp.prototype.toString()")}} は、正規表現のパターンを適切にエスケープするようになりました (例えば、行末の "\n") ({{bug(1130860)}})。</li>
+ <li>{{jsxref("Regexp")}} の {{jsxref("Regexp.global", "global")}}、{{jsxref("Regexp.ignoreCase", "ignoreCase")}}、{{jsxref("Regexp.multiline", "multiline")}}、{{jsxref("Regexp.sticky", "sticky")}} プロパティは、<code>RegExp</code> インスタンスのデータのプロパティから、プロトタイプのアクセサプロパティに変わりました ({{bug(1120169)}})。</li>
+ <li>{{jsxref("RegExp.prototype.source")}} プロパティが、<code>RegExp</code> のインスタンス自体のデータプロパティから、プロトタイプのアクセサプロパティに変わりました ({{bug(1120169)}})。{{bug(1150297)}} のため、Release 以外のバージョンに限り使用できます。</li>
+ <li>{{jsxref("Function.prototype.toString()")}} は、{{jsxref("Proxy")}} オブジェクトに対して例外が発生するようになりました ({{bug(1100936)}})。</li>
+</ul>
+
+<h3 id="Interfaces.2FAPIs.2FDOM" name="Interfaces.2FAPIs.2FDOM">インターフェイス/API/DOM</h3>
+
+<ul>
+ <li>Fetch API の {{domxref("fetch()")}} メソッドを実装しました ({{bug(1039846)}})。</li>
+ <li>{{domxref("BroadcastChannel")}} API を実装して、<a href="/ja/docs/Web/API/Web_Workers_API">Web Workers</a> で使用可能にしました ({{bug(966439)}} および {{bug(1121420)}})。</li>
+ <li>Console API が <a href="/ja/docs/Web/API/Web_Workers_API">Web Workers</a> で使用可能になりました。</li>
+ <li>{{domxref("CanvasRenderingContext2D.clearHitRegions()")}} を実装しました ({{bug(1119527)}})。</li>
+ <li>{{domxref("KeyboardEvent.location")}} の定数 <code>DOM_KEY_LOCATION_MOBILE</code> および DOM_KEY_LOCATION_JOYSTICK を削除しました。DOM Level 3 仕様から削除されたためです ({{bug(936313)}}。</li>
+ <li>{{domxref("KeyboardEvent.code")}} を Release ビルドで有効にしました。以前はプレリリース版のみで有効でした({{bug(1126673)}})。</li>
+ <li>{{domxref("KeyboardEvent.code")}} で Linux 環境の Sun キーボード、Android、Firefox OS の特殊キーをサポートしました({{bug(1020139)}})。</li>
+ <li>{{domxref("TextEncoder.TextEncoder", "TextEncoder()")}} コンストラクタを、仕様に合致するよう変更しました。無効な引数を渡した場合に発生する例外が、誤りである {{exception("TypeError")}} ではなく {{exception("RangeError")}} になりました ({{bug(1125766)}})。</li>
+ <li>User Timing API の {{domxref("Performance.mark()")}}、{{domxref("Performance.clearMarks()")}}、{{domxref("Performance.measure()")}}、{{domxref("Performance.clearMeasures()")}} を実装しました ({{bug(782751)}})。</li>
+ <li>接頭辞付きの {{domxref("Window.indexedDB", "indexedDB")}} である <code>mozIndexedDB</code> を削除しました ({{bug(975699)}})。</li>
+ <li>{{event("DOMContentLoaded")}} イベントはキャンセル不可になりました ({{bug(1134559)}})。</li>
+ <li><a href="/ja/docs/Web/API/Web_Workers_API">Worker</a> で <a href="/ja/docs/WebSockets">WebSocket</a> を使用できるようになりました ({{bug(504553)}})。</li>
+ <li>{{domxref("XMLHttpRequest.responseType")}} および {{domxref("XMLHttpRequest.withCredentials")}} プロパティが、{{domxref("XMLHttpRequest.open()")}} を呼び出す前に設定できるようになりました ({{bug(707484)}})。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Audio.2FVideo" name="Audio.2FVideo">Audio/Video</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Networking" name="Networking">ネットワーク</h2>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<ul>
+ <li>Firefox では、ログインフォームを扱う際に {{htmlattrxref("autocomplete", "input")}}<code>=false</code> 属性を無視するようになりました ({{bug(1025703)}})。これはパスワードマネージャがより確実に動作できるようにすることで、より安全なパスワードの使用を促進しようとするものです。</li>
+ <li>ホワイトリストで明示された Web サイトを除き、TLS を使用する際は RC4 が無効になりました。このホワイトリストは、Web サイトが修正されるまでの経過措置です ({{bug(1124039)}})。このフォールバック機能は設定項目 <code>security.tls.unrestricted_rc4_fallback</code> で制御されており、現在の既定値は <code>true</code> です ({{bug(1138882)}})。</li>
+ <li>安全でないバージョンの TLS へのフォールバックが必要な Web サイトを、ハードコードされたホワイトリストに記載します。これは次第に削減する予定です ({{bug(1114816)}})。{{pref("security.tls.insecure_fallback_hosts.use_static_list")}} を <code>false</code> に設定すると、ホワイトリストを無効化できます。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="Add-on_SDK" name="Add-on_SDK">Add-on SDK</h3>
+
+<h4 id="Highlights" name="Highlights">ハイライト</h4>
+
+<ul>
+ <li><code>sdk/context-menu@2</code> を実装しました ({{bug(1070952)}})。</li>
+ <li><code>sdk/addon/bootstrap</code> を実装しました ({{bug(1075541)}})。</li>
+ <li><code>sdk/windows/loader</code> を削除しました ({{bug(970135)}})。</li>
+ <li>Linux での、既定言語の検出機能を修正しました ({{bug(1114712)}})。</li>
+ <li><code>toolkit/loader</code> に、オプトインモジュールの互換性検証機能を搭載しました。これはすべての jpm アドオンに対して有効です ({{bug(1037235)}})。</li>
+</ul>
+
+<h4 id="Electrolysis_(E10s)_updates" name="Electrolysis_(E10s)_updates">Electrolysis (E10s) 対応</h4>
+
+<ul>
+ <li><code>sdk/page-worker</code> が e10s に対応しました ({{bug(1116004)}})。</li>
+ <li><code>sdk/content/worker</code> が e10s に対応しました ({{bug(1116544)}})。</li>
+ <li><code>sdk/tabs</code> が e10s に対応しました ({{bug(1033838)}})。</li>
+</ul>
+
+<h4 id="Details" name="Details">詳細</h4>
+
+<ul>
+ <li><a href="https://github.com/mozilla/addon-sdk/compare/firefox36...firefox38">Firefox 37 から Firefox 38 の間に行われた GitHub コミット</a>.</li>
+</ul>
+
+<h3 id="XUL" name="XUL">XUL</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript_code_modules" name="JavaScript_code_modules">JavaScript コードモジュール</h3>
+
+<h4 id="Downloads.jsm" name="Downloads.jsm">Downloads.jsm</h4>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadTarget">DownloadTarget</a></code> オブジェクトが <code>exists</code> および <code>size</code> プロパティを持つようになりました。ダウンロード先のファイルがディスクに存在するかや、ファイルのサイズを確認できます。また、新規メソッド <code><a href="/ja/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadTarget#refresh()">refresh()</a></code> で、これらの値の更新を求めます。</li>
+</ul>
+
+<h3 id="XPCOM" name="XPCOM">XPCOM</h3>
+
+<ul>
+ <li><code>"@mozilla.org/network/atomic-file-output-stream;1"</code> および <code>"@mozilla.org/network/safe-file-output-stream;1"</code> は、<code>PR_TRUNCATE</code> を伴わずに <code>PR_APPEND</code> を渡した場合に例外が発生するようになりました ({{bug(1117580)}})。</li>
+ <li>{{interface("nsICompositionStringSynthesizer")}} および {{ifmethod("nsIDOMWindowUtils", "sendCompositionEvent")}} を削除しました。代わりに {{interface("nsITextInputProcessor")}} を使用してください({{bug(917322)}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMWindowUtils#sendKeyEvent%28%29">nsIDOMWindowUtils.sendKeyEvent()</a></code> は非推奨になりました。代わりに {{interface("nsITextInputProcessor")}} を使用してください ({{bug(1119609)}})。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/38.0/releasenotes/">Firefox 38.0 リリースノート</a></li>
+ <li><a href="/ja/docs/Mozilla/Firefox/Releases/38/Site_Compatibility">Firefox 38 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2015/03/firefox-38-addon-compatibility/">Firefox 38 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers('37')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/38/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/38/site_compatibility/index.html
new file mode 100644
index 0000000000..240f702256
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/38/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 38 サイト互換性情報
+slug: Mozilla/Firefox/Releases/38/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 38
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/38/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/38/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/39/index.html b/files/ja/mozilla/firefox/releases/39/index.html
new file mode 100644
index 0000000000..bc55b2d7aa
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/39/index.html
@@ -0,0 +1,120 @@
+---
+title: Firefox 39 for developers
+slug: Mozilla/Firefox/Releases/39
+tags:
+ - Firefox
+ - Releases
+translation_of: Mozilla/Firefox/Releases/39
+---
+<p>Firefox 39 は、米国時間 2015 年 6 月 30 日にリリースされました。このページでは、開発者に影響する Firefox 39 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p>ハイライト:</p>
+
+<ul>
+ <li><a href="/ja/docs/Tools/WebIDE/Setting_up_runtimes#Connecting_over_WiFi">WebIDE で、Wi-Fi 経由で Firefox OS デバイスのデバッグが可能になりました</a></li>
+ <li><a href="/ja/docs/Tools/WebIDE/Working_with_Cordova_apps_in_WebIDE">WebIDE で Cordova のプロジェクトをサポートしました</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Work_with_animations#Firefox_39">アニメーションビューで早戻し、早送り、特定の時間へのジャンプが可能になりました</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Work_with_animations#Firefox_39">3 次ベジェ曲線エディタにプリセットを 31 個搭載しました</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Drag_and_drop">インスペクタで要素のドラッグ・アンド・ドロップが可能になりました</a></li>
+ <li><a href="/ja/docs/Tools/Web_Console#Command_history">Web コンソールのコマンド履歴が、セッションをまたいで維持されるようになりました</a></li>
+ <li><a href="/ja/docs/Tools/Web_Console#Helper_commands">コンソールで最後に評価された式の結果を表示する $_ コマンド</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_the_box_model#Firefox_39">インライン要素のボックスモデルのハイライト機能を改善</a></li>
+</ul>
+
+<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Client%20Software&amp;query_based_on=devtools_resolved_week&amp;chfieldto=2015-03-31&amp;chfield=resolution&amp;query_format=advanced&amp;chfieldfrom=2015-02-22&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;bug_status=CLOSED&amp;component=Developer%20Tools&amp;component=Developer%20Tools%3A%203D%20View&amp;component=Developer%20Tools%3A%20Canvas%20Debugger&amp;component=Developer%20Tools%3A%20Console&amp;component=Developer%20Tools%3A%20Debugger&amp;component=Developer%20Tools%3A%20Framework&amp;component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&amp;component=Developer%20Tools%3A%20Inspector&amp;component=Developer%20Tools%3A%20Memory&amp;component=Developer%20Tools%3A%20Netmonitor&amp;component=Developer%20Tools%3A%20Object%20Inspector&amp;component=Developer%20Tools%3A%20Performance%20Tools%20%28Profiler%2FTimeline%29&amp;component=Developer%20Tools%3A%20Responsive%20Mode&amp;component=Developer%20Tools%3A%20Scratchpad&amp;component=Developer%20Tools%3A%20Source%20Editor&amp;component=Developer%20Tools%3A%20Storage%20Inspector&amp;component=Developer%20Tools%3A%20Style%20Editor&amp;component=Developer%20Tools%3A%20User%20Stories&amp;component=Developer%20Tools%3A%20Web%20Audio%20Editor&amp;component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&amp;component=Developer%20Tools%3A%20WebIDE&amp;product=Firefox&amp;known_name=devtools_resolved_week&amp;list_id=12157026">Firefox 38 から Firefox 39 の間に解決した開発ツール関連のバグ一覧</a></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("list-style-type")}} プロパティと短縮プロパティである {{cssxref("list-style")}} で、{{cssxref("&lt;string&gt;")}} 型をサポートしました ({{bug(1144607)}})。</li>
+ <li>CSS Scroll Snapping を実装しました ({{bug(945584)}} および {{bug(1138658)}})。</li>
+ <li>CSS Animations と CSS Transitions のカスケーディングを、最新の仕様に合致するよう修正しました ({{bug(1125455)}})。</li>
+ <li>{{cssxref("writing-mode")}} の縦書きをサポートしました。Nightly および Developer Edition ではデフォルトで有効ですが、Beta および Release では無効化しています ({{bug(1099032)}})。現在の実装は不完全であり、またテーブルなど一部のウィジェットでは対応していない値があります。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{glossary("ARIA")}} の新たなロールである <code>switch</code> をサポートしました ({{bug(1136563)}})。</li>
+ <li>情報を一切明らかにせずに将来の接続を先に始めることを可能にする、<code>&lt;link rel="preconnect"&gt;</code> を実装しました ({{bug(1135160)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/RegExp"><code>RegExp</code> コンストラクタ</a>は第 1 引数に <code>RegExp</code>、また第 2 引数に <code>flags</code> を指定した場合に、例外が発生しないようになりました ({{bug(1108949)}})。</li>
+ <li>{{jsxref("Object.noSuchMethod", "Object.prototype.__noSuchMethod__")}} プロパティは非推奨になり、コンソールに警告を表示します ({{bug(1140428)}} および <a href="https://groups.google.com/forum/#!topic/mozilla.dev.platform/0EkHgphxUo8">platform でのアナウンス</a>をご覧ください)。</li>
+ <li>{{jsxref("Proxy")}} オブジェクトの実装を、ES6 仕様へさらに準拠するよう更新しました:
+ <ul>
+ <li>{{jsxref("Global_Objects/Proxy/handler/defineProperty", "defineProperty")}} ハンドラおよび {{jsxref("Global_Objects/Proxy/handler/set", "set")}} ハンドラは、成功時に <code>true</code> を、strict モードで成功しない場合は {{jsxref("TypeError")}} 例外を明示的に返すことが必要になりました ({{bug(1132522)}})。</li>
+ <li>{{domxref("window")}} をターゲットとして設定した場合、これらのハンドラで <code>TypeError</code> 例外が発生します ({{bug(828137)}})。</li>
+ </ul>
+ </li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">アロー関数</a> (<code>=&gt;</code>) を使用する際、行末 (<code>\n</code>) をアロー関数の引数の後ろに置くことができなくなりました (<code>() \n =&gt; {}</code>) ({{bug(1141392)}})。</li>
+ <li>{{jsxref("RegExp.prototype.toString")}} がジェネリック関数になりました ({{bug(1079919)}})。</li>
+ <li>{{jsxref("String.prototype.match()")}}、{{jsxref("String.prototype.search()")}}、{{jsxref("String.prototype.replace()")}} の非標準引数 <code>flags</code> が非推奨になり、コンソールに警告を表示します({{bug(1142351)}})。</li>
+ <li>最新の ES6 ドラフトに準拠させるため、{{jsxref("Object.assign()")}} の try/catch の動作を削除しました ({{bug(1103344)}})。</li>
+</ul>
+
+<h3 id="Interfaces.2FAPIs.2FDOM" name="Interfaces.2FAPIs.2FDOM">インターフェイス/API/DOM</h3>
+
+<ul>
+ <li>実験的機能である {{domxref("CanvasRenderingContext2D.addHitRegion()")}} メソッドで、<code>path</code> オプションをサポートしました。これは <a href="/ja/docs/Web/API/Canvas_API/Tutorial/Hit_regions_and_accessibility#Hit_regions">hit region</a> を {{domxref("Path2D")}} オブジェクトに追加できます ({{bug(1129147)}})。</li>
+ <li>{{domxref("FormData")}} オブジェクトを操作する新たなメソッドを追加しました ({{bug(1085283)}})。また、Web workers で <code>FormData</code> をサポートしました ({{bug(739173)}})。</li>
+ <li>非標準の {{domxref("XMLHttpRequest.sendAsBinary()")}} メソッドを削除しました ({{bug(853162)}})。</li>
+ <li>Web Animations の実験的な実装を続けています。{{domxref("AnimationPlayer.startTime")}} が書き込み可能になりました ({{bug(1073379)}})。</li>
+ <li><a href="/ja/docs/Web/API/ServiceWorker_API">Service Worker</a> の実験的な実装を進めています。{{domxref("Cache")}} インターフェイスおよび {{domxref("CacheStorage")}} インターフェイスを実装しました ({{bug(940273)}})。</li>
+ <li><a href="/ja/docs/Web/API/Fetch_API">Fetch API</a> の実験的な実装をデフォルトで有効にしました ({{bug(1133861)}})。</li>
+ <li>WebGL2 の実験的な実装を続けています。{{domxref("WebGLSync")}} を実装しました ({{bug(1048721)}})。</li>
+ <li>デスクトップ版 Firefox で {{domxref("MouseEvent.offsetX")}} および {{domxref("MouseEvent.offsetY")}} をサポートしました ({{bug(69787)}}。Android 版 Firefox および Firefox OS ではサポートしていません (<a href="/ja/docs/Mozilla/Firefox/Releases/43">Firefox 43</a> でサポート予定)。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Audio.2FVideo" name="Audio.2FVideo">Audio/Video</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Miscelleanous" name="Miscelleanous">その他</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/Guide/WOFF">WOFF2</a> フォントのサポートを Release バージョンの Firefox でも、デフォルトで有効にしました (Nightly や Developer Edition に加えて、Beta や Release も有効) ({{bug(1084026)}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Command_Line_Options#-remote_remote_command">-remote</a></code> コマンドラインオプションを削除しました ({{bug(1080319)}})。</li>
+ <li>新たに <a href="http://www.bbc.co.uk/newsbeat/article/32220611/diverse-thumbs-up-emojis-with-different-skin-tones-finally-here">Unicode 8.0 skin tone emoji</a> サポートしました ({{bug(1153460)}})。</li>
+</ul>
+
+<h2 id="Networking" name="Networking">ネットワーク</h2>
+
+<ul>
+ <li>SSLv3 のサポートを完全に廃止しました ({{bug(1106470)}})。</li>
+</ul>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/39.0/releasenotes/">Firefox 39 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/39/">Firefox 39 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2015/05/firefox-39-addon-compatibility/">Firefox 39 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers('38')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/39/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/39/site_compatibility/index.html
new file mode 100644
index 0000000000..a544e0c9cb
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/39/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 39 サイト互換性情報
+slug: Mozilla/Firefox/Releases/39/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 39
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/39/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/39/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/4/index.html b/files/ja/mozilla/firefox/releases/4/index.html
new file mode 100644
index 0000000000..bad241c386
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/4/index.html
@@ -0,0 +1,583 @@
+---
+title: Firefox 4 for developers
+slug: Mozilla/Firefox/Releases/4
+tags:
+ - CSS
+ - Firefox
+ - Firefox 4
+ - Gecko
+ - Gecko 2.0
+ - HTML
+ - JavaScript
+ - XPCOM
+ - XUL
+ - 要更新
+translation_of: Mozilla/Firefox/Releases/4
+---
+<p>Firefox 4 (6 月後半にベータ版リリースが予定されています)では、パフォーマンスが向上し、 HTML 5 やその他の革新的な Web 技術のさらなるサポートが追加され、さらには、セキュリティも改善しています。 この記事では、この次期リリースについてのとっかかりの情報と、 Web 開発者、アドオン開発者、そして、Gecko プラットフォーム開発者向けに利用可能になる機能の一覧を提供します。</p>
+
+<p>これらの機能の多くはすでに <a href="http://www.mozilla.com/en-US/firefox/beta/">Firefox 4 beta</a> リリース、もしくは(冒険心にあふれているなら)<a href="http://nightly.mozilla.org/">ナイトリー trunk ビルド</a> で試すことできます。</p>
+
+<div class="note"><strong>註:</strong>この記事は作成中であり、このページからリンクされている記事もまた同様です。多くの記事名が仮名であり、いくつかのトピックは複数の記事に分割されるかもしれません。</div>
+
+<h2 id="Features_for_web_developers" name="Features_for_web_developers">Web 開発者向け機能</h2>
+
+<p>Gecko は現在 <a href="/ja/docs/HTML/HTML5">HTML5</a> パーサーを利用しています。それはバグが修正され、相互運用性が改善され、また、パフォーマンスが向上されたものです。また、HTML マークアップでコンテンツに <a href="/ja/docs/SVG">SVG</a> と <a href="/ja/docs/MathML">MathML</a> を直接埋め込むことも可能にします。</p>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<dl>
+ <dt><a href="/ja/docs/HTML/HTML5/HTML5_Parser">HTML5 パーサー入門</a></dt>
+ <dd>HTML5 パーサーが意味することと、どのように SVG と MathML をコンテンツにインラインで埋め込むかの概説。</dd>
+ <dt><a href="/ja/docs/HTML/HTML5/Forms_in_HTML5">HTML5 におけるフォーム</a></dt>
+ <dd>HTML5 における Web フォームの改善の概説。これらの変更点には <a href="/ja/docs/Web/HTML/Element/input" title="HTML の &lt;input> 要素は、ユーザーからデータを受け取るための、ウェブベースのフォーム用の対話的なコントロールを作成するために使用します。"><code>&lt;input&gt;</code></a> 要素における入力種類の追加、データバリデーションなどが含まれています。</dd>
+ <dt><a href="/ja/docs/Sections_and_outlines_of_an_HTML5_document">HTML5 Sections</a></dt>
+ <dd>Gecko は文書におけるセクションに関する新しい HTML5 要素をサポートします。: <a href="/ja/docs/Web/HTML/Element/article" title="HTML の &lt;article> 要素は文書、ページ、アプリケーション、サイトなどの中で自己完結しており、 (集合したものの中で) 個別に配信や再利用を行うことを意図した構成物を表します。"><code>&lt;article&gt;</code></a>、<a href="/ja/docs/Web/HTML/Element/section" title="HTML の &lt;section> 要素は、 HTML 文書の中で単独のセクション (区間) を表します。セクションを表現するより意味的に具体的な要素がない場合に使用します。"><code>&lt;section&gt;</code></a>、<a href="/ja/docs/Web/HTML/Element/nav" title="HTML の &lt;nav> 要素は、現在の文書内の他の部分や他の文書へのナビゲーションリンクを提供するためのセクションを表します。ナビゲーションセクションの一般的な例としてメニュー、目次、索引などがあります。"><code>&lt;nav&gt;</code></a>、<a href="/ja/docs/Web/HTML/Element/aside" title="HTML の &lt;aside> 要素は、文書のメインコンテンツと間接的な関係しか持っていない文書の部分を表現します。"><code>&lt;aside&gt;</code></a>、 <a href="/ja/docs/Web/HTML/Element/hgroup" title="HTML の &lt;hgroup> 要素は、文書のセクションの、複数レベルの見出しを表します。これは &lt;h1>–&lt;h6> 要素のセットをグループ化します。"><code>&lt;hgroup&gt;</code></a>、<a href="/ja/docs/Web/HTML/Element/header" title="HTML の &lt;header> 要素は、導入的なコンテンツ、ふつうは導入部やナビゲーション等のグループを表します。見出し要素だけでなく、ロゴ、検索フォーム、作者名、その他の要素を含むこともできます。"><code>&lt;header&gt;</code></a> および <a href="/ja/docs/Web/HTML/Element/footer" title="HTML の &lt;footer> 要素 は、直近の区分コンテンツまたは区分化ルート要素のフッターを表します。フッターには通常、そのセクションの著作者に関する情報、関連文書へのリンク、著作権情報等を含めます。"><code>&lt;footer&gt;</code></a>。</dd>
+ <dt><a href="/ja/docs/HTML/Global_attributes#attr-hidden">HTML5 の hidden 属性</a></dt>
+ <dd>この属性は、すべての要素に共通であり、Web ページでユーザに現在は関係しないコンテントを隠すために用いられます。</dd>
+ <dt>その他の HTML5 要素</dt>
+ <dd>Gecko は次の新しい HTML5 要素もサポートします。: <a href="/ja/docs/Web/HTML/Element/mark" title="HTML の文字列マーク要素 (&lt;mark>) は、周囲の文脈の中でマークを付けた部分の関連性や重要性のために、参照や記述の目的で目立たせたり強調したりする文字列を表します。"><code>&lt;mark&gt;</code></a>、<a href="/ja/docs/Web/HTML/Element/figure" title="HTML の &lt;figure> (任意のキャプション付きの図) 要素は、図表などの自己完結型のコンテンツを表し、任意で (&lt;figcaption>) 要素を使用して表されるキャプションを伴います。"><code>&lt;figure&gt;</code></a> および <a href="/ja/docs/Web/HTML/Element/figcaption" title="HTML の &lt;figcaption> 要素または図キャプション要素は、親の &lt;figure> 要素内にあるその他のコンテンツを説明するキャプションや凡例を表します。"><code>&lt;figcaption&gt;</code></a>。</dd>
+ <dt><a href="/ja/docs/WebSockets">WebSocket</a></dt>
+ <dd>Web アプリケーションとサーバーの間でリアルタイムコミュニケーションを行うための WebSocket API を利用するためのガイド。</dd>
+</dl>
+
+<h4 id="Canvas_improvements" name="Canvas_improvements">Canvas improvements</h4>
+
+<p>The following changes were made to the <a href="/ja/docs/Web/API/CanvasRenderingContext2D" title="Canvas API の CanvasRenderingContext2D インターフェイスは、&lt;canvas> 要素に描画するための 2D レンダリングコンテキストを提供します。図形、文字、画像、その他のオブジェクトを描画するのに使用します。"><code>CanvasRenderingContext2D</code></a> interface to bring our <a href="/ja/docs/Web/HTML/Element/canvas" title="HTML の &lt;canvas> 要素 と Canvas スクリプティング API や WebGL API を使用して、グラフィックやアニメーションを描画することができます。"><code>&lt;canvas&gt;</code></a> implementation closer to being in line with the specification:</p>
+
+<ul>
+ <li>Specifying a negative radius when calling <code>arc()</code> now correctly throws an <code>INDEX_SIZE_ERR</code> exception.</li>
+ <li>Specifying non-finite values when calling <code>createLinearGradient()</code> and <code>createRadialGradient()</code> now throws <code>NOT_SUPPORTED_ERR</code> instead of <code>SYNTAX_ERR</code>.</li>
+ <li>Setting <code>miterLimit</code> to a negative value no longer throws an exception; instead, it properly ignores non-positive values.</li>
+ <li>Setting <code>lineWidth</code> to a negative value no longer throws an exception; instead, it properly ignores non-positive values.</li>
+ <li>The <code>putImageData()</code> method now supports the optional parameters <code>dirtyX</code>, <code>dirtyY</code>, <code>dirtyWidth</code>, and <code>dirtyHeight</code>.</li>
+</ul>
+
+<h4 id="Miscellaneous_HTML_changes" name="Miscellaneous_HTML_changes">小さな HTML の変更</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/HTML/Element/textarea" title="HTML の &lt;textarea> 要素は、複数行のプレーンテキスト編集コントロールを表し、レビューのコメントやお問い合わせフォーム等のように、ユーザーが大量の自由記述テキストを入力できるようにするときに便利です。"><code>&lt;textarea&gt;</code></a> 要素をデフォルトでサイズ変更できるようになりました。これを無効にするために <a href="/ja/docs/Web/CSS/resize" title="CSS の resize プロパティは、要素の寸法を変更できるかどうか、もしそうなら、どの方向に変更できるかを設定します。"><code>resize</code></a> CSS プロパティが利用できます。</li>
+ <li><code>canvas.getContext</code> および <code>canvas.toDataURL</code> が認識できない引数を指定して呼び出したときに例外を投げなくなりました。</li>
+ <li><a href="/ja/docs/Web/HTML/Element/canvas" title="HTML の &lt;canvas> 要素 と Canvas スクリプティング API や WebGL API を使用して、グラフィックやアニメーションを描画することができます。"><code>&lt;canvas&gt;</code></a> 要素に Mozilla 固有の <code>mozGetAsFile()</code> メソッドが追加されました。これを用いることで、Canvas の内容である画像を含んだメモリベースのファイルを保持できます。詳細は <a href="/ja/docs/Web/API/HTMLCanvasElement" title="HTMLCanvasElementインタフェースはcanvas要素のレイアウトや表現の操作のための属性やメソッドを提供します。HTMLCanvasElementはHTMLElementインタフェースのプロパティやメソッドも利用可能です。"><code>HTMLCanvasElement</code></a> を参照してください。</li>
+ <li><code>canvas2dcontext.lineCap</code> および <code>canvas2dcontext.lineJoin</code> が認識できない値を設定したときに例外を投げなくなりました。</li>
+ <li><code>canvas2dcontext.globalCompositeOperation</code> が認識できない値を設定したときに例外を投げなくなりました。また、非標準の値 <code>darker</code> をサポートしなくなりました。</li>
+ <li>他のブラウザでは実装されておらず、非推奨 な要素である <a href="/ja/docs/Web/HTML/Element/spacer" title="&lt;spacer> は、ウェブページにホワイトスペースを挿入するための廃止された HTML 要素です。ウェブデザイナーによって用いられていた 1px の透過 GIF 画像 (いわゆるスペーサー GIF) の挿入と同様の効果を実現するために Netscape 社が実装したものです。しかし &lt;spacer> はほとんどの主要ブラウザーで対応されず、また、同様の効果は CSS を用いて実現可能です。"><code>&lt;spacer&gt;</code></a> 要素のサポートが無くなりました。</li>
+ <li>The <a href="/ja/docs/Web/HTML/Element/isindex" title="&lt;isindex> は廃止された HTML 要素であり、文書に問い合わせを行うためのテキストフィールドをページに追加します。"><code>&lt;isindex&gt;</code></a> 要素が、<a href="/ja/docs/Web/API/Document/createElement" title="HTML ドキュメントにおいて Document.createElement() メソッドは、tagName で指定した HTML 要素を生成する、あるいは tagName を認識できない場合に HTMLUnknownElement を生成します。XUL ドキュメントでは、指定した XUL 要素を生成します。その他のドキュメントでは、null 名前空間 URI の要素を生成します。"><code>document.createElement()</code></a> メソッドによって作成されたときに、 一切プロパティもメソッドも持たない単純な要素として作成されるようになりました。</li>
+ <li>Gecko に <a href="/ja/docs/Web/HTML/Element/input" title="HTML の &lt;input> 要素は、ユーザーからデータを受け取るための、ウェブベースのフォーム用の対話的なコントロールを作成するために使用します。"><code>&lt;input&gt;</code></a> 要素での <code>click() </code>メソッドの呼び出しが追加されました。このメソッドを用いることでファイル選択ダイアログが開けます。<a href="/ja/docs/Using_files_from_web_applications">Web アプリケーションからファイルを利用する</a> の記事内の <a href="/ja/docs/Using_files_from_web_applications#Using_hidden_file_input_elements_using_the_click%28%29_method">例</a> を参照してください。</li>
+ <li><a href="/ja/docs/Web/HTML/Element/input" title="HTML の &lt;input> 要素は、ユーザーからデータを受け取るための、ウェブベースのフォーム用の対話的なコントロールを作成するために使用します。"><code>&lt;input&gt;</code></a> 要素に新しい <a href="/ja/docs/HTML/Element/Input#attr-mozactionhint"><code>mozactionhint</code></a> 属性が追加されました。これを用いることで仮想キーボード上でのエンターキーのラベルを指定できます。</li>
+ <li><a href="/ja/docs/Web/HTML/Element/iframe" title="HTML のインラインフレーム要素 (&lt;iframe>) は、入れ子になった閲覧コンテキストを表現し、現在の HTML ページに他のページを埋め込むことができます。"><code>&lt;iframe&gt;</code></a>、<a href="/ja/docs/Web/HTML/Element/noembed" title="&lt;noembed> 要素は廃止された、標準外の方法であり、&lt;embed> 要素に対応していないブラウザーや、ユーザーが仕様とした種類の埋め込みコンテンツに対応していないブラウザーで代替または「フォールバック」コンテンツを提供するものです。"><code>&lt;noembed&gt;</code></a>、および <a href="/ja/docs/Web/HTML/Element/noframes" title="&lt;noframes> は、古い HTML における No Frames または frame fallback 要素であり、 &lt;frame> 要素に対応していない(または対応を無効化した)ブラウザーのためのコンテンツを提供します。"><code>&lt;noframes&gt;</code></a> 要素内の <a href="/ja/docs/Web/HTML/Element/script" title="HTML の &lt;script> 要素は、実行できるコードを埋め込んだり参照したりするために使用されます。ふつうは JavaScript のコードの埋め込みや参照に使用されます。"><code>&lt;script&gt;</code></a> 要素が実行されるようになりました。以前のバージョンの Firefox ではこれらの要素内での実行はされませんでした。これは仕様準拠であり、他のブラウザの挙動と合致します。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<dl>
+ <dt><a href="/ja/docs/CSS/CSS_transitions">CSS transitions</a></dt>
+ <dd>新しい CSS transitions サポートが Firefox 4 では利用できるようになりました。</dd>
+ <dt>CSS での算出値</dt>
+ <dd><a href="/ja/docs/Web/CSS/-moz-calc" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-calc</code></a> のサポートが追加されました。これを用いることで、<a href="/ja/docs/Web/CSS/length" title="CSS の &lt;length> データ型は、長さの値を表します。長さは width, height, margin, padding, border-width, font-size, text-shadow など数多くの CSS プロパティで使用されています。"><code>&lt;length&gt;</code></a> の値を数式で指定できます。</dd>
+ <dt>セレクタのグルーピング</dt>
+ <dd>セレクタをグループ化しコンビネータを分解する <a href="/ja/docs/Web/CSS/:-moz-any" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>:-moz-any</code></a> がサポートされました。</dd>
+ <dt>背景画像の部分領域のサポート</dt>
+ <dd><a href="/ja/docs/Web/CSS/-moz-image-rect" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-image-rect</code></a> 関数を用いることで、画像の一部分の領域 (subrectangle)を背景画像として利用できるようになります。</dd>
+ <dt>CSS touch プロパティ群</dt>
+ <dd>touch プロパティ群が追加されました。詳細と正式な記事名は後日追記予定です。</dd>
+ <dt><a href="/ja/docs/CSS/-moz-element">CSS 背景として任意の要素を使用する</a></dt>
+ <dd><a href="/ja/docs/Web/CSS/-moz-element" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-element</code></a> CSS 関数と <a href="/ja/docs/Web/API/Document/mozSetImageElement" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>document.mozSetImageElement()</code></a> DOM 関数を用いることで、任意の HTML 要素を背景として使用することができます。</dd>
+ <dt><a href="/ja/docs/CSS/Privacy_and_the_:visited_selector">プライバシーと :visited セレクタ</a></dt>
+ <dd>CSS セレクタを用いた訪問済みリンクのスタイルについて取得できる情報が変更されました。これはいくつかの Web アプリケーションに影響するかもしれません。</dd>
+</dl>
+
+<h4 id="New_CSS_properties" name="New_CSS_properties">新しい CSS プロパティ</h4>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">プロパティ</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/CSS/-moz-font-feature-settings" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-font-feature-settings</code></a></td>
+ <td>OpenType フォントの高度な機能を変更できます。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/CSS/-moz-tab-size" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-tab-size</code></a></td>
+ <td>テキストを描画するときのタブ文字 (U+0009) の幅を空白文字数で指定します。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/CSS/resize" title="CSS の resize プロパティは、要素の寸法を変更できるかどうか、もしそうなら、どの方向に変更できるかを設定します。"><code>resize</code></a></td>
+ <td>サイズ変更可能な要素の方向を制御できます。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h4 id="New_CSS_pseudo-classes" name="New_CSS_pseudo-classes">新しい CSS 擬似クラス</h4>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">擬似クラス</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/CSS/:-moz-handler-crashed" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>:-moz-handler-crashed</code></a></td>
+ <td>プラグインがクラッシュした要素の表示に用いられます。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/CSS/:-moz-placeholder" title=":-moz-placeholder はプレースホルダを表示するフォーム要素にマッチします。この擬似クラスにより、Web 開発者やテーマデザイナーがプレースホルダの表示 (デフォルトは薄い灰色) をカスタマイズすることができます。"><code>:-moz-placeholder</code></a></td>
+ <td>フォームフィールドのガイドテキストに適用されます。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/CSS/:-moz-submit-invalid" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>:-moz-submit-invalid</code></a></td>
+ <td>1 つ、もしくは、複数のフォームフィールドの入力が妥当でないときのフォームの送信ボタンに適用されます。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/CSS/:-moz-window-inactive" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>:-moz-window-inactive</code></a></td>
+ <td>アクティブでないウィンドウの要素に適用されます。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/CSS/:invalid" title="CSS の :invalid 疑似クラスは、内容の検証に失敗した &lt;input> 要素 や &lt;form> 要素を表します。"><code>:invalid</code></a></td>
+ <td>入力が妥当でない <a href="/ja/docs/Web/HTML/Element/input" title="HTML の &lt;input> 要素は、ユーザーからデータを受け取るための、ウェブベースのフォーム用の対話的なコントロールを作成するために使用します。"><code>&lt;input&gt;</code></a> フィールドに自動的に適用されます。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/CSS/:optional" title="CSS の :optional 疑似クラスは、 required 属性が設定されていない &lt;input>, &lt;select>, &lt;textarea> 要素を表します。"><code>:optional</code></a></td>
+ <td><code>required</code> 属性を指定していない <a href="/ja/docs/Web/HTML/Element/input" title="HTML の &lt;input> 要素は、ユーザーからデータを受け取るための、ウェブベースのフォーム用の対話的なコントロールを作成するために使用します。"><code>&lt;input&gt;</code></a> フィールドに自動的に適用されます。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/CSS/:required" title="CSS の :required 疑似クラスは、 required 属性が設定されている &lt;input>, &lt;select>, &lt;textarea> 要素を表します。"><code>:required</code></a></td>
+ <td><code>required</code> 属性を指定している <a href="/ja/docs/Web/HTML/Element/input" title="HTML の &lt;input> 要素は、ユーザーからデータを受け取るための、ウェブベースのフォーム用の対話的なコントロールを作成するために使用します。"><code>&lt;input&gt;</code></a> フィールドに自動的に適用されます。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/CSS/:valid" title="CSS の :invalid 疑似クラスは、内容の検証に成功した &lt;input> 要素 やその他の &lt;form> 要素を表します。これにより、有効な入力欄に、データの形式が適切であることをユーザーが確認しやすくなる外観を簡単に適用できるようになります。"><code>:valid</code></a></td>
+ <td>入力が妥当であると判断された <a href="/ja/docs/Web/HTML/Element/input" title="HTML の &lt;input> 要素は、ユーザーからデータを受け取るための、ウェブベースのフォーム用の対話的なコントロールを作成するために使用します。"><code>&lt;input&gt;</code></a> フィールドに自動的に適用されます。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h4 id="New_CSS_pseudo-selectors" name="New_CSS_pseudo-selectors">新しい CSS 擬似セレクタ</h4>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">擬似セレクタ</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/CSS/:-moz-focusring" title="CSS の :-moz-focusring 疑似クラスは、 :focus 疑似クラスに似た Mozilla 拡張ですが、現在フォーカスが当たっていて、かつフォーカスリングやその他のインジケーターがその周りに描かれる場合のみ一致します。"><code>:-moz-focusring</code></a></td>
+ <td>Gecko がフォーカスインジケータを描画すべきとしている要素の見え方を指定できます。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h4 id="New_CSS_functions" name="New_CSS_functions">新しい CSS 関数</h4>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">関数</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/CSS/:-moz-any" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>:-moz-any</code></a></td>
+ <td>セレクタをグループ化しコンビネータを分解できます。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/CSS/-moz-calc" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-calc</code></a></td>
+ <td><code><span style="font-family: verdana,tahoma,sans-serif;"><a href="/ja/docs/Web/CSS/length" title="CSS の &lt;length> データ型は、長さの値を表します。長さは width, height, margin, padding, border-width, font-size, text-shadow など数多くの CSS プロパティで使用されています。"><code>&lt;length&gt;</code></a> の値を数式で指定できます。</span></code></td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/CSS/-moz-element" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-element</code></a></td>
+ <td>任意の要素を <a href="/ja/docs/Web/CSS/background-image" title="CSS の background-image プロパティは、要素に1つ以上の背景画像を設定します。"><code>background-image</code></a> および <a href="/ja/docs/Web/CSS/background" title="CSS の background 一括指定プロパティは、色、画像、原点と寸法、反復方法など、背景に関するすべてのスタイルプロパティを一括で設定します。"><code>background</code></a> の背景として使用できます。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/CSS/-moz-image-rect" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-image-rect</code></a></td>
+ <td>画像の一部分を <a href="/ja/docs/Web/CSS/background-image" title="CSS の background-image プロパティは、要素に1つ以上の背景画像を設定します。"><code>background-image</code></a> もしくは <a href="/ja/docs/Web/CSS/background" title="CSS の background 一括指定プロパティは、色、画像、原点と寸法、反復方法など、背景に関するすべてのスタイルプロパティを一括で設定します。"><code>background</code></a>で利用できます。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h4 id="Renamed_CSS_properties" name="Renamed_CSS_properties">改名された CSS プロパティ</h4>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <td class="header">旧名称</td>
+ <td class="header">新名称</td>
+ <td class="header">備考</td>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>-moz-background-size</code></td>
+ <td><a href="/ja/docs/Web/CSS/background-size" title="CSS の background-size プロパティは、要素の背景画像の寸法を設定します。画像は自然な寸法になったり、引き伸ばされたり、利用可能な領域に収まるように縮小されたりします。"><code>background-size</code></a></td>
+ <td><code>-moz-background-size</code> という名称はサポートされません。</td>
+ </tr>
+ <tr>
+ <td><code>-moz-border-radius</code></td>
+ <td><a href="/ja/docs/Web/CSS/border-radius" title="CSS の border-radius プロパティは、要素の境界の外側の角を丸めます。1つの半径を設定すると円の角になり、2つの半径を設定すると楕円の角になります。"><code>border-radius</code></a></td>
+ <td>旧名称は、サイトを更新するための時間を考慮して、限られた期間サポートされます。描画の変更も仕様の最新版に適合するようになります。</td>
+ </tr>
+ <tr>
+ <td><code>-moz-box-shadow</code></td>
+ <td><a href="/ja/docs/Web/CSS/box-shadow" title="CSS の box-shadow プロパティは、要素のフレームの周囲にシャドウ効果を追加します。コンマで区切ることで、複数の効果を指定することができます。"><code>box-shadow</code></a></td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<h4 id="Miscellaneous_CSS_changes" name="Miscellaneous_CSS_changes">小さな CSS の変更</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/CSS/text-shadow" title="CSS の text-shadow プロパティはテキストに影を追加します。文字列及びその装飾に適用される影のコンマで区切られたリストを受け付けます。"><code>text-shadow</code></a> プロパティのぼかし範囲が 300 までに制限されるようになりました。これは健全さとパフォーマンスの理由によるものです。</li>
+ <li><a href="/ja/docs/Web/CSS/overflow" title="CSS の overflow プロパティは、要素の内容が多すぎてブロック整形コンテキストに収まらない場合にどうするかを設定します。これは overflow-x および overflow-y の一括指定です。"><code>overflow</code></a> プロパティがテーブルグループ要素 (<code>&lt;thead&gt;</code>、<code>&lt;tbody&gt;</code>、および <code>&lt;tfoot&gt;</code>) に適用されなくなりました。</li>
+ <li><a href="/ja/docs/Web/CSS/-moz-appearance" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-appearance</code></a> プロパティが要素に境界のない Aero Glass の見た目を適用する <code>-moz-win-borderless-glass 値をサポートするようになりました。</code></li>
+ <li><code><a href="/ja/docs/CSS/Media_queries#-moz-device-pixel-ratio">-moz-device-pixel-ratio</a></code> メディア機能が追加されました。これを用いることで、<a href="/ja/docs/CSS/Media_queries">Media Query</a> で用いられる、CSS ピクセルを基準としたデバイスのピクセル比率を指定できます。</li>
+ <li>Gecko の <a href="/ja/docs/CSS-2_Quick_Reference/Units">CSS 単位の</a> 扱いが他のブラウザにより良く適合するように、また、絶対的長さをデバイスの DPI を基準にした画面ピクセル数により的確に変換するように修正されました。</li>
+</ul>
+
+<h3 id="Graphics_and_video" name="Graphics_and_video">グラフィックとビデオ</h3>
+
+<dl>
+ <dt><a href="/ja/docs/WebGL">WebGL</a></dt>
+ <dd>開発中の WebGL 標準が Firefox でサポートされました。</dd>
+ <dt><a href="/ja/docs/Optimizing_graphics_performance">グラフィックパフォーマンスの最適化</a></dt>
+ <dd>Firefox 4 でグラフィックとビデオのパフォーマンスを最大限引き出すための Tips &amp; Tricks。</dd>
+ <dt><a href="/ja/docs/Media_formats_supported_by_the_audio_and_video_elements#WebM">WebM ビデオのサポート</a></dt>
+ <dd>新しいオープンな <a href="http://www.webmproject.org/">WebM</a> ビデオフォーマットが Gecko2.0 でサポートされます。このサポートは 6 月 9 日以降のナイトリーに含まれています。</dd>
+ <dt><a href="/ja/docs/SVG/SVG_animation_with_SMIL">SMIL による SVG アニメーション</a></dt>
+ <dd>SVG の SMIL アニメーションのサポートが利用できるようになりました。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=482402" title='FIXED: Enable "svg.smil.enabled" pref by default'>バグ 482402</a> を参照してください。</dd>
+ <dt>画像と CSS 背景としての SVG の利用</dt>
+ <dd>SVG を <a href="/ja/docs/Web/HTML/Element/img" title="HTML の &lt;img> 要素は、文書に画像を埋め込みます。"><code>&lt;img&gt;</code></a> 要素とともに、また、CSS の <a href="/ja/docs/Web/CSS/background-image" title="CSS の background-image プロパティは、要素に1つ以上の背景画像を設定します。"><code>background-image</code></a> で利用することができるようになりました。</dd>
+ <dt>メディア要素での <code>buffered</code> 属性サポート</dt>
+ <dd><a href="/ja/docs/Web/HTML/Element/video" title="HTML の映像要素 (&lt;video>) は、文書中に映像再生に対応するメディアプレイヤーを埋め込みます。"><code>&lt;video&gt;</code></a> および <a href="/ja/docs/Web/HTML/Element/audio" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>&lt;audio&gt;</code></a> 要素での <code>buffered</code> 属性がサポートされました。これを用いることでメディアファイルでバッファリングされた範囲が判断可能になります。これをサポートするために <a href="/ja/docs/Web/API/TimeRanges" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>TimeRanges</code></a> DOM インタフェースが実装されました。</dd>
+ <dt>メディア要素での <code>preload</code> 属性</dt>
+ <dd>HTML5 仕様から <code>preload</code> 属性が実装されました。これは以前実装された(そしてもうサポートされない)<code>autobuffer</code> 属性を置き換えものです。これは <a href="/ja/docs/Web/HTML/Element/video" title="HTML の映像要素 (&lt;video>) は、文書中に映像再生に対応するメディアプレイヤーを埋め込みます。"><code>&lt;video&gt;</code></a> および <a href="/ja/docs/Web/HTML/Element/audio" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>&lt;audio&gt;</code></a> 要素、同様に<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMHTMLMediaElement" title="">nsIDOMHTMLMediaElement</a></code> インタフェースを実装した要素で利用できます。</dd>
+ <dt>SVG text 位置指定の改善</dt>
+ <dd>SVG <a href="/ja/docs/Web/SVG/Element/text" title="SVG &lt;text> 要素は、テキストからなるグラフィクス要素を定義します。&lt;text> には、他の SVG グラフィクス要素と同じように、グラデーション、パターン、クリッピングパス、マスク、またはフィルターを適用することができます。"><code>&lt;text&gt;</code></a> and <a href="/ja/docs/Web/SVG/Element/tspan" title="&lt;text> 要素の中に &lt;tspan> 要素を組み込むことで、テキストとフォントのプロパティ及び現在のテキストの位置を絶対値または相対値を用いた座標で調節することができます。"><code>&lt;tspan&gt;</code></a> 要素で <code>x</code>、<code>y</code>、<code>dx</code>、および <code>dy</code> プロパティの値のためのリストを指定できるようになりました。これを用いることで、文字列中の各文字の位置を個別に制御できます。</dd>
+</dl>
+
+<h3 id="DOM" name="DOM">DOM</h3>
+
+<dl>
+ <dt><a href="/ja/docs/JavaScript_typed_arrays">JavaScript 型付き配列</a></dt>
+ <dd>JavaScript 型付き配列 (typed arrays) のサポートが追加されました。これを用いることで、ネイティブデータ型を用いた生のデータを含むバッファを扱えます。 <a href="/ja/docs/DOM/File">File API</a>、<a href="/ja/docs/WebGL">WebGL</a>、および <a href="/ja/docs/WebSockets">WebSockets</a> を含む、いくつかの API でこれを用いることができます。</dd>
+ <dt>範囲の境界領域の保持</dt>
+ <dd><a href="/ja/docs/Web/API/Range" title="Range インターフェイスとは document の断片で、ある document 中のノードやテキストノードの一部を含むことのできるものです。"><code>Range</code></a> オブジェクトに <a href="/ja/docs/Web/API/Range/getClientRects" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>range.getClientRects()</code></a> および <a href="/ja/docs/Web/API/Range/getBoundingClientRect" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>range.getBoundingClientRect()</code></a> メソッドが追加されました。</dd>
+ <dt>任意の要素上でのマウスイベントのキャプチャ</dt>
+ <dd>Internet Explorer 由来の <code>setCapture()</code> と <code>releaseCapture() </code>API のサポートが追加されました。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=503943" title="FIXED: Need a way to grab mouse events on arbitrary elements (implement setCapture/releaseCapture)">バグ 503943</a> を参照してください。</dd>
+ <dt><a href="/ja/docs/DOM/Manipulating_the_browser_history">ブラウザ履歴の操作</a></dt>
+ <dd><a href="/ja/docs/Web/API/Window/history" title="The Window.history read-only property returns a reference to the History object, which provides an interface for manipulating the browser session history (pages visited in the tab or frame that the current page is loaded in)."><code>window.history</code></a> オブジェクトを通して利用できる、既存のドキュメント履歴オブジェクトが新しい HTML5 の <code>pushState()</code> と <code>replaceState()</code> メソッドをサポートするようになりました。</dd>
+ <dt><a href="/ja/docs/DOM/Animations_using_MozBeforePaint">MozBeforePaint を用いたアニメーション</a></dt>
+ <dd>追加された新しいイベントと <a href="/ja/docs/Web/API/Window/mozRequestAnimationFrame" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>window.mozRequestAnimationFrame()</code></a> メソッドおよび <a href="/ja/docs/Web/API/Window/mozAnimationStartTime" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>window.mozAnimationStartTime</code></a> プロパティを組み合わせることで、互いに同期したアニメーションを作成する方法が提供されます。</dd>
+ <dt>タッチイベントとマルチタッチイベント</dt>
+ <dd>タッチイベントとマルチタッチイベントのサポートが追加されました。</dd>
+</dl>
+
+<h4 id="HTML_elements_DOM_interfaces_have_changed" name="HTML_elements'_DOM_interfaces_have_changed">HTML 要素の DOM インタフェースが変更されました</h4>
+
+<p>いくつかの HTML 要素に関連づけられた DOM インタフェースが、以下のように、 HTML5 仕様で要求されるひとつのインタフェースに変更されました。</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">Firefox 3.6 でのインタフェース</td>
+ <td class="header">Firefox 4 でのインタフェース</td>
+ <td class="header">HTML 要素</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Web/API/HTMLSpanElement" title="HTMLSpanElement インターフェイスは &lt;span> 要素を表し、 HTMLElement から派生していますが、それ以外のプロパティやメソッドを追加していません。"><code>HTMLSpanElement</code></a></td>
+ <td><code><a href="/ja/docs/DOM/HTMLElement">HTMLElement</a></code></td>
+ <td><a href="/ja/docs/Web/HTML/Element/abbr" title="HTML の略語要素 (&lt;abbr>) は略語や頭字語を表します。任意で title 属性で、略語の完全形または説明を提供することができます。"><code>&lt;abbr&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/acronym" title="HTML の頭字語要素 (&lt;acronym>) は、頭字語または略語の単語を構成する文字の並びを明示することができます。この要素は HTML5 で削除されました。 &lt;abbr> 要素を使用してください。"><code>&lt;acronym&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/address" title="HTML の &lt;address> 要素は、これを含んでいる HTML が個人、団体、組織の連絡先を提供していることを示します。"><code>&lt;address&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/b" title="HTML の注目付け要素 (&lt;b>) は、要素の内容に読み手の注意を惹きたい場合で、他の特別な重要性が与えられないものに使用します。"><code>&lt;b&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/bdo" title="HTML の双方向文字列上書き要素 (&lt;bdo>) は、現在の文字列の方向を上書きし、中の文字列が異なる方向に描画されるようにします。"><code>&lt;bdo&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/big" title="廃止された HTML の Big 要素 (&lt;big>) は、内包するテキストを周りの文字列よりも1段階大きいフォントの大きさで描画します(例えば medium が large になります)。"><code>&lt;big&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/blink" title="HTML の点滅要素 (&lt;blink>) は内包するテキストをゆっくり点滅させるための、標準外の要素です。"><code>&lt;blink&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/center" title="廃止済みの HTML の中央揃え要素 (&lt;center>) は、中に含まれるブロックレベルまたはインラインコンテンツを中央揃えして表示するブロックレベル要素です。"><code>&lt;center&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/cite" title="HTML の引用元要素 (&lt;cite>) は、引用された創作物の参照を表し、作品のタイトルを含む必要があります。参照は、引用メタデータに関する利用場面に合わせた慣習に応じて省略形が用いられることがあります。"><code>&lt;cite&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/code" title="HTML の &lt;code> 要素は、コンピューターコードの短い断片の文字列であると識別できるような外見のコンテンツを表示します。"><code>&lt;code&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/dd" title="HTML の &lt;dd> 要素は、定義リスト要素 (&lt;dl>) 内で、先行する用語 (&lt;dt>) の説明、定義、値などを示します。"><code>&lt;dd&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/dfn" title="HTML の定義要素 (&lt;dfn>) は、定義句や文の文脈の中で定義している用語を示すために用いられます。"><code>&lt;dfn&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/dt" title="HTML の &lt;dt> 要素は、説明又は定義リストの中で用語を表す部分であり、 &lt;dl> の子要素としてのみ用いることができます。"><code>&lt;dt&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/em" title="HTML の &lt;em> 要素は、強調されたテキストを示します。&lt;em> 要素は入れ子にすることができ、入れ子の段階に応じてより強い程度の強調を表すことができます。"><code>&lt;em&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/i" title="HTML の &lt;i> 要素は、何らかの理由で他のテキストと区別されるテキストの範囲を表します。例えば、技術用語、外国語のフレーズ、架空の人物の思考などです。英文においてはよく斜体で表示されるものです。"><code>&lt;i&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/kbd" title="HTML のキーボード入力要素 (&lt;kbd>) はキーボード、音声入力、その他の入力端末からのユーザーによる文字入力を表す行内の文字列の区間を表します。"><code>&lt;kbd&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/listing" title="HTML の Listing 要素 (&lt;listing>) は、開始タグと終了タグの間にあるテキストを HTML として解釈せず、等幅フォントを使用して表示します。HTML 2 標準では、1 行が 132 文字を超えない場合は改行すべきではないと勧告しています。"><code>&lt;listing&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/nobr" title="標準外かつ廃止された HTML の &lt;nobr> 要素は、その内包する文字列の自動改行を無効化します。行内におさまらない文字列は、領域からはみ出てレンダリングされるか、スクロールバーを伴って表示されます。"><code>&lt;nobr&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/plaintext" title="プレーンテキスト要素 (&lt;plaintext>) は、開始タグ以降のすべてを生のテキストとして表示し、それ以降の HTML を無視します。"><code>&lt;plaintext&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/s" title="HTML の &lt;s> 要素は取り消し線を引いた文字列を表示します。 &lt;s> 要素はすでに適切または正確ではなくなった事柄を表現します。しかし、文書の修正を示す場合、 &lt;s> 要素は適切ではありません。この場合は &lt;del> と &lt;ins> の方が適しているので、こちらを使用してください。"><code>&lt;s&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/samp" title="HTML のサンプル要素 (&lt;samp>) は、コンピュータープログラムからのサンプル出力を表す行内文字列を含めるために使用されます。"><code>&lt;samp&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/small" title="HTML の &lt;small> 要素は、表示上のスタイルとは関係なく、著作権表示や法的表記のような、注釈や小さく表示される文を表します。既定では、 small から x-small のように、一段階小さいフォントでテキストが表示されます。"><code>&lt;small&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/strike" title="HTML の &lt;strike> 要素 (または HTML 取り消し線要素) は、テキストの上に取り消し線 (水平線) を配置します。"><code>&lt;strike&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/strong" title="HTML の強い重要性要素 (&lt;strong>) は、内容の重要性、重大性、または緊急性が高いテキストを表します。ブラウザーは一般的に太字で描画します。"><code>&lt;strong&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/sub" title="HTML の 下付き文字要素 (&lt;sub>) は、表記上の理由で下付き文字として表示するべき行内文字列を指定します。"><code>&lt;sub&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/sup" title="HTML の 上付き文字要素 (&lt;sup>) は、表記上の理由で上付き文字として表示するべき行内文字列を指定します。"><code>&lt;sup&gt;</code></a>, , <a href="/ja/docs/Web/HTML/Element/tt" title="廃止された HTML テレタイプテキスト要素 (&lt;tt>) は、ユーザーエージェントの既定の等幅フォントで表示される行内文字列を生成します。"><code>&lt;tt&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/u" title="HTML の非言語的注釈要素 (&lt;u>) は、非言語的に注釈があることを示す方法で表示する行内テキストの区間を示します。"><code>&lt;u&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/var" title="HTML の変数要素 (&lt;var>) は、数式やプログラムコード内の変数の名前を表します。"><code>&lt;var&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/xmp" title="xmp (Example) 要素 (&lt;xmp>) は、その開始タグから終了タグまでの間の HTML タグを HTML として解釈せず、等幅フォントでレンダリングします。HTML2 はこれが 1 行当たり 80 文字を表示するのに充分な幅でレンダリングするよう推奨しています。"><code>&lt;xmp&gt;</code></a></td>
+ </tr>
+ <tr>
+ <td><code><a href="/ja/docs/DOM/HTMLDivElement">HTMLDivElement</a></code></td>
+ <td><code><a href="/ja/docs/DOM/HTMLElement">HTMLElement</a></code></td>
+ <td><a href="/ja/docs/Web/HTML/Element/noembed" title="&lt;noembed> 要素は廃止された、標準外の方法であり、&lt;embed> 要素に対応していないブラウザーや、ユーザーが仕様とした種類の埋め込みコンテンツに対応していないブラウザーで代替または「フォールバック」コンテンツを提供するものです。"><code>&lt;noembed&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/noframes" title="&lt;noframes> は、古い HTML における No Frames または frame fallback 要素であり、 &lt;frame> 要素に対応していない(または対応を無効化した)ブラウザーのためのコンテンツを提供します。"><code>&lt;noframes&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/noscript" title="HTML の &lt;noscript> 要素は、このページ上のスクリプトの種類に対応していない場合や、スクリプトの実行がブラウザーで無効にされている場合に表示する HTML の部分を定義します。"><code>&lt;noscript&gt;</code></a></td>
+ </tr>
+ <tr>
+ <td><code><a href="/ja/docs/DOM/HTMLWBRElement">HTMLWBRElement</a></code></td>
+ <td><code><a href="/ja/docs/DOM/HTMLElement">HTMLElement</a></code></td>
+ <td><a href="/ja/docs/Web/HTML/Element/wbr" title="HTML の &lt;wbr> 要素は、改行可能位置 — テキスト内でブラウザーが任意で改行してよい位置を表しますが、この改行規則は必要のない場合は改行を行いません。"><code>&lt;wbr&gt;</code></a></td>
+ </tr>
+ </tbody>
+</table>
+
+<h4 id="Miscellaneous_DOM_changes" name="Miscellaneous_DOM_changes">小さな DOM の変更</h4>
+
+<ul>
+ <li><code>wrap</code> DOM 属性を利用することで、<a href="/ja/docs/Web/HTML/Element/textarea" title="HTML の &lt;textarea> 要素は、複数行のプレーンテキスト編集コントロールを表し、レビューのコメントやお問い合わせフォーム等のように、ユーザーが大量の自由記述テキストを入力できるようにするときに便利です。"><code>&lt;textarea&gt;</code></a> <code>要素の折り返しを </code>DOM によってコントロールできるようになりました。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=41464" title="FIXED: textarea.wrap not exposed through DOM (IE compatability)">バグ 41464</a></li>
+ <li><a href="/ja/docs/Web/API/Document/createElement" title="HTML ドキュメントにおいて Document.createElement() メソッドは、tagName で指定した HTML 要素を生成する、あるいは tagName を認識できない場合に HTMLUnknownElement を生成します。XUL ドキュメントでは、指定した XUL 要素を生成します。その他のドキュメントでは、null 名前空間 URI の要素を生成します。"><code>document.createElement()</code></a> を用いて作成されてドキュメントに追加された <a href="/ja/docs/Web/HTML/Element/script" title="HTML の &lt;script> 要素は、実行できるコードを埋め込んだり参照したりするために使用されます。ふつうは JavaScript のコードの埋め込みや参照に使用されます。"><code>&lt;script&gt;</code></a> 要素が、標準で HTML5 仕様に従って動作するようになりました。 <code>src</code> 属性で指定されたスクリプトは(順番を調整することはせずに)実行可能になりしだい実行され、<code>src</code> 属性で指定されていないスクリプトは同期的に実行されます。<code>src</code> 属性を持つ挿入されたスクリプトを挿入された順番で実行するには、<code>それらに .async=false を指定します。</code></li>
+ <li>DOM の <a href="/ja/docs/Web/API/File" title="File インターフェイスは、ファイルについての情報を提供したり、ウェブページ内の JavaScript でその内容にアクセスできるようにしたりします。"><code>file</code></a> オブジェクトが url プロパティを提供するようになりました。</li>
+ <li>DOM の <a href="/ja/docs/Web/API/File" title="File インターフェイスは、ファイルについての情報を提供したり、ウェブページ内の JavaScript でその内容にアクセスできるようにしたりします。"><code>file</code></a> オブジェクトに<code>新しく click()</code> メソッドが追加されました。</li>
+ <li>XMLHttpRequest で <a href="/ja/docs/XMLHttpRequest/Using_XMLHttpRequest#Using_FormData_objects">FormData</a> がサポートされました。</li>
+ <li><a href="/ja/docs/Web/API/Element/isContentEditable" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>element.isContentEditable</code></a> プロパティが実装されました。</li>
+ <li><a href="/ja/docs/Web/API/Document/currentScript" title="Document.currentScript プロパティは、現在処理中のスクリプトの &lt;script> 要素を返します。"><code>document.currentScript</code></a> プロパティを用いることで、現在実行されている <a href="/ja/docs/Web/HTML/Element/script" title="HTML の &lt;script> 要素は、実行できるコードを埋め込んだり参照したりするために使用されます。ふつうは JavaScript のコードの埋め込みや参照に使用されます。"><code>&lt;script&gt;</code></a> 要素のスクリプトを判別できます。新しく追加された <a href="/ja/docs/Web/API/Element/onbeforescriptexecute" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>element.onbeforescriptexecute</code></a> および <a href="/ja/docs/Web/API/Element/onafterscriptexecute" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>element.onafterscriptexecute</code></a> イベントは script 要素の実行前後に発生します。</li>
+ <li><a href="/ja/docs/DragDrop/DataTransfer"><code>DragTransfer</code></a> オブジェクトに <a href="/ja/docs/DragDrop/DataTransfer#mozSourceNode"><code>mozSourceNode</code></a> プロパティが追加されました。</li>
+ <li><a href="/ja/docs/Web/API/Selection" title="このオブジェクトのクラスは window.getSelection() やその他のメソッドによって返されるものです。"><code>Selection</code></a> オブジェクトに <a href="/ja/docs/DOM/Selection/modify"><code>selection.modify()</code></a> メソッドが追加されました。このメソッドを用いると、ブラウザウィンドウでの現在のテキスト選択範囲あるいはカーソル位置を簡単に変更できます。</li>
+ <li><code>window.directories</code> オブジェクトと <a href="/ja/docs/Web/API/Window/open" title="指定された名前のブラウザコンテキスト(ウィンドウや &lt;iframe>、タブ)に、指定されたリソースをロードします。該当の名前のコンテキストがない場合、新しいウィンドウを開いてそこにリソースをロードします。"><code>window.open</code></a> の <code>directories</code> 特性(これらは他のブラウザではサポートされていません)が 削除されました。代わりに <code>personalbar</code> を利用してください。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=474058" title="FIXED: Drop support for window.directories">バグ 474058</a></li>
+ <li><a href="/ja/docs/Web/API/Event/mozInputSource" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>event.mozInputSource</code></a> プロパティが DOM ユーザインタフェースイベントに追加されました。この非標準プロパティを用いると、イベントを生成したデバイスのタイプを判別できます。</li>
+ <li><a href="/ja/docs/Web/API/Document/onreadystatechange" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>document.onreadystatechange</code></a> イベントが実装されました。</li>
+ <li><a href="/ja/docs/Web/API/Document/createElement" title="HTML ドキュメントにおいて Document.createElement() メソッドは、tagName で指定した HTML 要素を生成する、あるいは tagName を認識できない場合に HTMLUnknownElement を生成します。XUL ドキュメントでは、指定した XUL 要素を生成します。その他のドキュメントでは、null 名前空間 URI の要素を生成します。"><code>document.createElement</code></a> メソッドが Quirks モードでタグ名の前後の <code>&lt;</code> と <code>&gt;</code> を受け入れないようになりました。</li>
+ <li><a href="/ja/docs/Web/API/Element/setCapture" title="mousedownイベントの処理中にこのメソッドを呼び出すと、マウスボタンが離されるか、document.releaseCapture()が呼び出されるまで、すべてのマウスイベントをこの要素にリターゲットします。"><code>element.setCapture()</code></a> および<a href="/ja/docs/Web/API/Document/releaseCapture" title="releaseCapture() メソッドは、この文書内の要素で現在有効になっているマウスキャプチャを解放します。要素におけるマウスキャプチャの有効化は element.setCapture() を呼び出すことで実行できます。"><code>document.releaseCapture()</code></a> メソッドが追加され、これらを用いることで、<code>指定要素で mousedown</code> イベントが発生した後にマウスが通常の追跡領域を越えても、マウスイベントを追い続けることができます。</li>
+ <li>The <a href="/ja/docs/Web/API/Window/mozPaintCount" title="この window で現在の document が画面に描画された回数を返します。"><code>window.mozPaintCount</code></a> プロパティが追加されました。これを用いることで、何回ドキュメントが描画されたかを判定できます。これは Web アプリケーションのパフォーマンスをテストするときに役立ちます。</li>
+ <li><a href="/ja/docs/Web/API/Window/navigator/appVersion" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>window.navigator.appVersion</code></a> および <a href="/ja/docs/Web/API/Window/navigator/userAgent" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>window.navigator.userAgent</code></a> から言語トークンが削除されました。代わりに <a href="/ja/docs/Web/API/Window/navigator/language" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>window.navigator.language</code></a> もしくは <a href="/ja/docs/Content_negotiation">Accept-Language ヘッダ</a> を利用してください。 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=572656" title="FIXED: Remove the UI language from the UA string and navigator.appVersion">バグ 572656</a></li>
+ <li><a href="/ja/docs/XMLHttpRequest">XMLHttpRequest</a> オブジェクトに追加された Gecko 固有の <code>mozResponseArrayBuffer </code>プロパティを用いると、レスポンスを文字列と同様 に JavaScript Typed Array として扱えます。</li>
+ <li><a href="/ja/docs/DOM/Event/UIEvent/MouseEvent">Mouse イベント</a> に <code>mozPressure</code> プロパティが追加されました。このプロパティは圧力感知をサポートする入力デバイスでの圧力を示します。</li>
+ <li><del>window.createBlobURL()</del> <ins><a href="/ja/docs/Web/API/Window/URL/createObjectURL" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>window.URL.createObjectURL()</code></a></ins> および <a href="/ja/docs/Web/API/Window/URL/revokeObjectURL" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>window.URL.revokeObjectURL()</code></a> メソッドを用いることで、ローカルファイルを参照する BLOB ("Binary Large OBject") URL を作成できます。</li>
+ <li><a href="/ja/docs/Web/API/DOMImplementation/createHTMLDocument" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>DOMImplementation.createHTMLDocument()</code></a> メソッドを用いることで、新しい HTML 文書を作成できます。</li>
+ <li><a href="/ja/docs/Web/API/Node/mozMatchesSelector" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>Node.mozMatchesSelector()</code></a> が指定セレクタ文字列が妥当ではない場合に正しくない <code>false</code> を返すのではなく、<code>SYNTAX_ERR</code> 例外を投げるようになりました。</li>
+ <li>CSS 同様の省略構文を用いて 要素の SVG プロパティの値を設定できるようになりました。例: <code>element.style.fill = 'lime'</code>。詳細は <a href="/ja/docs/Web/API/Element/style" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>element.style</code></a> を参照してください。</li>
+ <li>ドキュメントルートに <a href="/ja/docs/Supporting_private_browsing_mode#Detecting_whether_private_browsing_mode_is_permanent"><code>privatebrowsingmode</code> 属性</a> が追加されました。これはプライベートブラウジングがセッションで一時的であるか永続的であるかの状態を含む、プライベートブラウジングモードの状態を示します。</li>
+ <li><a href="/ja/docs/Web/API/Window/getComputedStyle" title="window.getComputedStyle() メソッドは、要素に適用されたスタイルの値を基本的な値に計算し直した後、すべてのCSSプロパティの値を返します。"><code>window.getComputedStyle()</code></a> メソッドの 2 番目のパラメータが、他の主なブラウザと同様に省略可能になりました。</li>
+ <li>DOM の <a href="/ja/docs/DOM/event/StorageEvent"><code>StorageEvent</code></a> オブジェクトが仕様の最新版に合致するようになりました。</li>
+ <li><a href="/ja/docs/Web/API/Window/setTimeout" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>window.setTimeout()</code></a> メソッドの最小遅延時間を設定するための <code>dom.min_timeout_value が追加されました。</code></li>
+ <li><a href="/ja/docs/Gecko-Specific_DOM_Events#MozAfterPaint"><code>MozAfterPaint</code></a> イベントは、潜在的なセキュリティ問題があるため、デフォルトでは送られなくなりました。設定を変更することで有効にできます。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<dl>
+ <dt><a href="/ja/docs/Introducing_Content_Security_Policy">Content Security Policy (CSP)</a></dt>
+ <dd>Content Security Policy (CSP) は Mozilla が提案する Web デザイナーとサーバー管理者が Web サイトの相互利用でどのようなコンテンツを指定するかの仕様です。目的はクロスサイトスクリプティングを含む攻撃とデータインジェクション攻撃を判定し、軽減することです。</dd>
+ <dt><a href="/ja/docs/Security/HTTP_Strict_Transport_Security">HTTP Strict Transport Security</a></dt>
+ <dd>HTTP Strict Transport Security は Web サイトがブラウザに HTTP を用いる代わりに HTTPS を用いてのみやり取りすべきであることを伝えるセキュリティ機能です。</dd>
+ <dt><a href="/ja/docs/The_X-FRAME-OPTIONS_response_header">X-FRAME-OPTIONS レスポンスヘッダ</a></dt>
+ <dd>Internet Explorer 8 で導入された X-FRAME-OPTIONS HTTP レスポンスヘッダが Firefox でサポートされるようになりました。これを用いることでサイトがページをフレーム内で用いることができるかどうか、フレーム内で利用可能ならば、同じドメイン内に限定するかどうかを指示することができます。</dd>
+ <dt><a href="/ja/docs/User_Agent_Strings_Reference">User Agent 文字列</a> の変更</dt>
+ <dd><a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=572650">HTTP リクエストで送ったデータとエントロピーの総量を減少させるべき</a>にあるように、 ユーザエージェント文字列から暗号の強度を表す文字列と言語を表す文字列が削除されました。</dd>
+</dl>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<p>JavaScript 1.8.5 で実装される変更の概要については、<a href="/ja/docs/New_in_JavaScript_1.8.5">JavaScript 1.8.5の新機能</a> を参照してください。Firefox 4 における JavaScript は ECMASCript 5 標準へのさらなる順守となる予定です。</p>
+
+<h3 id="Developer_tools" name="Developer_tools">開発者ツール</h3>
+
+<dl>
+ <dt><a href="/ja/docs/Using_the_Web_Console">Web コンソールの利用</a></dt>
+ <dd>Web コンソールツールは Web 開発者および拡張開発者のデバッグ作業の補助に役立ちます。</dd>
+</dl>
+
+<div class="geckoVersionNote">
+<div class="geckoVersionHeading">
+Gecko 2.0 note
+<div style="font-size: 9px; line-height: 1; font-style: italic;">(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)</div>
+</div>
+
+<p>エラーコンソールは Firefox 4 からデフォルトで無効化されます。<code>devtools.errorconsole.enabled 設定を</code> <code>true</code> に変更し、ブラウザを再起動することで再び有効にすることができます。</p>
+</div>
+
+<h2 id="Changes_for_Mozilla_and_add-on_developers" name="Changes_for_Mozilla_and_add-on_developers">Mozilla およびアドオン開発者向けの変更</h2>
+
+<p>Firefox 4 向けに既存の拡張を更新する上で役立つ Tips は、<a href="/ja/docs/Extensions/Updating_extensions_for_Firefox_4">Updating extensions for Firefox 4</a> を参照してください。ここでは既存のアドオンの互換性を破壊する主な変更点のいくつかを取り上げているだけです。ですから、上記記事も必ず読んでください。</p>
+
+<p>テーマ開発者であるならば、注意する必要がある重要な変更点を理解するために <a href="/ja/docs/Theme_changes_in_Firefox_4">Theme changes in Firefox 4</a> を読むべきです。</p>
+
+<h3 id="New_JavaScript_code_modules" name="New_JavaScript_code_modules">新しいJavaScript コードモジュール</h3>
+
+<dl>
+ <dt><a href="/ja/docs/JavaScript_code_modules/Services.jsm">Services.jsm</a></dt>
+ <dd><code>Services.jsm</code> コードモジュールは preferences service や window mediator などのよく用いられているサービスへの参照を簡単に取得できるようにするゲッターを提供します。</dd>
+ <dt><a href="/ja/docs/JavaScript_code_modules/ctypes.jsm">JS-ctypes API</a></dt>
+ <dd>JS-ctypes API は C 互換外部ライブラリ関数を XPCOM を利用すること無しに呼び出せるようにします。</dd>
+ <dt><a href="/ja/docs/Addons/Add-on_Manager">Add-ons Manager</a></dt>
+ <dd>新しい Add-ons Manager はインストールされたアドオンについての情報の提供、それらの管理のためのサポート、および、アドオンのインストールと削除の方法を提供します。</dd>
+ <dt><a href="/ja/docs/JavaScript_code_modules/PopupNotifications.jsm">PopupNotifications.jsm</a></dt>
+ <dd>新しいポップアップ通知モジュールを用いることで簡単に魅力的な非モーダルな通知をユーザに提供できます。この API の使い方は<a href="/ja/docs/Using_popup_notifications">ポップアップ通知の利用</a>で参照できます。</dd>
+ <dt><a href="/ja/docs/JavaScript_code_modules/Using#Locating_the_code_module">chrome: URL からコードモジュールを読み込む</a></dt>
+ <dd><strong>chrome:</strong> URL を用いて JavaScript コードモジュールを読め込むことができるようになりました。JAR ファイルの中でも可能です。</dd>
+ <dt>DownloadLastDir.jsm</dt>
+ <dd><a href="/ja/docs/JavaScript_code_modules/DownloadLastDir.jsm"><code>DownloadLastDir.jsm</code></a> コードモジュールは <code>gDownloadLastDir</code> グローバル変数を提供します。この変数には最後のダウンロードが行われたディレクトリのパスを知るために利用可能な文字列が含まれています。このモジュールはプライベートブラウジングに対応しています。</dd>
+ <dt><a href="/ja/docs/Performance/Measuring_performance_using_the_PerfMeasurement.jsm_code_module">PerfMeasurement.jsm コードモジュールを用いたパフォーマンスの測定</a></dt>
+ <dd><a href="/ja/docs/JavaScript_code_modules/PerfMeasurement.jsm"><code>PerfMeasurement.jsm</code></a> コードモジュールは JavaScript コードにおける CPU レベルでのパフォーマンスデータを測定するための API を提供します。</dd>
+</dl>
+
+<h4 id="Miscellaneous_changes_to_code_modules" name="Miscellaneous_changes_to_code_modules">小さなコードモジュールの変更</h4>
+
+<ul>
+ <li><code>NetUtil.jsm</code> コードモジュールが <a href="/ja/docs/JavaScript_code_modules/NetUtil.jsm#readInputStreamToString()"><code>readInputStreamToString()</code></a> メソッドを提供するようになりました。これを用いることで、ストリームが null 文字を含んでいても、ストリームから文字列に任意のバイトを読み出せます。</li>
+ <li><a href="/ja/docs/JavaScript_code_modules/Using_workers_in_JavaScript_code_modules">JavaScript コードモジュール内で Worker を利用</a>できるようになりました。</li>
+</ul>
+
+<h3 id="DOM_changes" name="DOM_changes">DOM の変更</h3>
+
+<dl>
+ <dt><a href="/ja/docs/Web/API/ChromeWorker" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>ChromeWorker</code></a></dt>
+ <dd>特権コード向けの新しいタイプの Worker です。これを用いると、拡張およびアプリケーションコードで Worker から <a href="/ja/docs/js-ctypes">js-ctypes</a> のようなものを用いることができます。</dd>
+ <dt><a href="/ja/docs/DOM/Touch_events">タッチイベント</a></dt>
+ <dd>(非標準の) タッチイベントのサポートが追加されました。これを用いると、タッチスクリーン上で同時に複数の指でトラックできます。</dd>
+</dl>
+
+<h3 id="XUL" name="XUL">XUL</h3>
+
+<h4 id="Changes_to_the_tabbrowser_element" name="Changes_to_the_tabbrowser_element">Tabbrowser (gBrowser) の変更</h4>
+
+<p>いくつかの変更が &lt;tabbrowser&gt; 要素になされており、タブ機能の拡張に影響があります。アイコンタブのサポートに加えて、タブバーが標準ツールバーに統合されたという変更もあります。この変更によって、ユーザがツールバーボタンをそこへドラッグできるようになっています。</p>
+
+<ul>
+ <li>TabClose/TabSelect/TabOpen イベントはもはや tabbrowser 要素 (gBrowser) にバブルアップしません。これらのイベントのためのイベントリスナーは gBrowser 直接ではなく gBrowser.tabContainer に追加すべきです。</li>
+ <li>タブコンテキストメニューはもはや tabbrowser の無名の子要素ではありません。それゆえ <a href="/ja/docs/XUL_Overlays">XUL オーバーレイ</a>で直接オーバレイできるようになります。gBrowser.tabContextMenu 経由で JavaScript でより直接的にアクセスすることもできます。詳細は<a href="http://www.gavinsharp.com/blog/2010/03/31/accessingmodifying-the-firefox-tab-context-menu-from-extensions/">このブログ投稿</a>を参照してください。</li>
+ <li>新たに <code><span><a href="https://developer.mozilla.org/ja/docs/XUL/Property/visibleTabs">visibleTabs</a></span></code> プロパティが追加され、これを用いると、現在表示されているタブの配列を取得することができます。このことにより、現在のタブセットでどのタブが表示されているかを知ることができます。これは例えば、Firefox Panorama で利用されています。</li>
+ <li>新たに <span id="m-showOnlyTheseTabs"><code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Method/showOnlyTheseTabs">showOnlyTheseTabs</a></code></span> メソッドが追加されました。これは Firefox Panorama で用いられています。</li>
+ <li>新たに <span id="m-getIcon"><code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Method/getIcon">getIcon</a></code></span> メソッドが追加されました。これを用いると、<code><a href="/ja/docs/Mozilla/Tech/XUL/browser">&lt;xul:browser&gt;</a></code> 要素から引っ張り出す必要無しに、 タブのファビコンを得ることができます。</li>
+ <li>新たに <code><span><a href="https://developer.mozilla.org/ja/docs/XUL/Property/tabbrowser.tabs">tabbrowser.tabs</a></span></code> プロパティが追加されました。これを用いると、簡単に <code><a href="/ja/docs/Mozilla/Tech/XUL/tabbrowser">&lt;xul:tabbrowser&gt;</a></code> 要素内のタブの一覧を取得できます。</li>
+ <li>新たに <span id="m-pinTab"><code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Method/pinTab">pinTab</a></code></span> と <span id="m-unpinTab"><code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Method/unpinTab">unpinTab</a></code></span> メソッドが追加されました。これを用いると、タブのアイコン化およびタブのアイコン化の解除ができます(つまり、アイコンタブと通常タブを切り替えます)。</li>
+ <li><span id="m-getTabModalPromptBox"><code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Method/getTabModalPromptBox">getTabModalPromptBox</a></code></span> メソッドと <code><a href="/ja/docs/Mozilla/Tech/XUL/tabbrowser">&lt;xul:tabbrowser&gt;</a></code> 要素の <code id="a-tabmodalPromptShowing"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/tabmodalPromptShowing">tabmodalPromptShowing</a></code> 属性がタブモーダルアラートのサポートのために追加されました。</li>
+</ul>
+
+<h4 id="Changes_to_popups" name="Changes_to_popups">ポップアップに対する変更点</h4>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/popup">&lt;xul:popup&gt;</a></code> 要素がサポートされなくなりました。代わりに <code><a href="/ja/docs/Mozilla/Tech/XUL/menupopup">&lt;xul:menupopup&gt;</a></code> 要素を使うべきです。(<code>popup</code> 要素を用い続けた場合、その要素にはもはや何の特別な意味もないため、不具合に遭遇するでしょう。例えば、<code><a href="/ja/docs/Mozilla/Tech/XUL/menuseparator">&lt;xul:menuseparator&gt;</a></code> 要素は <code><a href="/ja/docs/Mozilla/Tech/XUL/popup">&lt;xul:popup&gt;</a></code> 要素内で用いたときに透明で表示される可能性があります。)</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/menupopup">&lt;xul:menupopup&gt;</a></code> XUL 要素に <code><span><a href="https://developer.mozilla.org/ja/docs/XUL/Property/triggerNode">triggerNode</a></span></code> プロパティが追加されました。このプロパティはポップアップを開くイベントが起こったノードを示します。これは <span id="m-openPopup"><code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Method/openPopup">openPopup</a></code></span> メソッドに対するトリガーイベント引数の追加も必要とします。また、 <code><span><a href="https://developer.mozilla.org/ja/docs/XUL/Property/anchorNode">anchorNode</a></span></code> プロパティも追加されました。このプロパティはポップアップが作成されたときに指定されたアンカーを返します。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/panel">&lt;xul:panel&gt;</a></code> 要素に <code id="a-fade"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/fade">fade</a></code> および <code id="a-flip"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/flip">flip</a></code> 属性が追加されました。これらの属性は新しい "arrow" スタイル通知パネルの挙動を設定するために用いられます。</li>
+</ul>
+
+<h4 id="Remote_XUL_support_removed" name="Remote_XUL_support_removed">リモート XUL サポートの削除</h4>
+
+<p>リモート XUL <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=546857">がサポートされなくなりました</a>。 これは HTTP を経由して供給される XUL ドキュメントにのみ影響します。 また、<code>dom.</code><code>allow_XUL_XBL_for_file</code> の設定を作成して、その値を <code>true に設定しない限り、</code><span class="nowiki"><code>file://</code></span> URL 形式を用いた XUL 文書の読み込みも行えなくなります。しかしながら、ホワイトリスト機能を用いることで、特定ドメインのリモート XUL を読み込むことを許可できます。<a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/235281/">Remote XUL Manager 拡張</a> を用いると、このホワイトリストを管理できます。</p>
+
+<h4 id="Miscellaneous_XUL_changes" name="Miscellaneous_XUL_changes">小さな XUL の変更</h4>
+
+<ul>
+ <li><code id="a-readonly"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/readonly">readonly</a></code> 属性がフィールドで正しく動作するようになりました。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/resizer">&lt;xul:resizer&gt;</a></code> 要素でウィンドウをリサイズする代わりにリサイズする要素を指定できる <code id="a-element"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/element">element</a></code> 属性を用いることができるようになりました。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/resizer">&lt;xul:resizer&gt;</a></code> 要素に <code id="a-resizer.type"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/resizer.type">type</a></code> 属性が追加され、これを用いることで、要素の変わりにウィンドウのリサイズグリップを指定し、ウィンドウのリサイズグリップが 2 度描画されることを防ぐことができます。</li>
+ <li>"active" 属性は XUL ウィンドウでは設定されません。背景ウィンドウに異なるスタイルを指定するための新しい <a href="/ja/docs/Web/CSS/:-moz-window-inactive" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>:-moz-window-inactive</code></a> 擬似クラスを利用してください。</li>
+ <li><code id="a-emptytext"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/emptytext">emptytext</a></code> 属性は非推奨になりました。代わりに <code id="a-placeholder"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/placeholder">placeholder</a></code> を用いるべきです。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/popup">&lt;xul:popup&gt;</a></code> 要素はサポートされません。代わりに <code><a href="/ja/docs/Mozilla/Tech/XUL/menupopup">&lt;xul:menupopup&gt;</a></code> を持ちいるべきです。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/window">&lt;xul:window&gt;</a></code> 要素が <code id="a-accelerated"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/accelerated">accelerated</a></code> 属性を提供するようになりました。true の場合、ハードウェアレイヤーマネージャがウィンドウをアクセラレーションすることが許可されます。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/stack">&lt;xul:stack&gt;</a></code> 要素が <code id="a-bottom"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/bottom">bottom</a></code> と <code id="a-right"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/right">right</a></code> 要素をサポートするようになりました。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/tree">&lt;xul:tree&gt;</a></code> 要素での <code id="a-alternatingbackground"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/alternatingbackground">alternatingbackground</a></code> 属性はサポートされません。代わりに <a href="/ja/docs/Web/CSS/:-moz-tree-row" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>:-moz-tree-row</code></a> 擬似クラスを利用できます。</li>
+ <li>anonid chevronPopup を持っていたブックマークツールバーのオーバーフローボタンは無名になりました。それは PlacesChevron の id を持っています。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/tabs">&lt;xul:tabs&gt;</a></code> 要素に <code><span><a href="https://developer.mozilla.org/ja/docs/XUL/Property/tabbox">tabbox</a></span></code> プロパティが追加されました。これは古い <code>_tabbox</code> プロパティを置き換えます。古い方のプロパティは非推奨です(そして決してドキュメント化されません)。</li>
+ <li>XUL <code><a href="/ja/docs/Mozilla/Tech/XUL/window">&lt;xul:window&gt;</a></code> 要素に <code id="a-drawintitlebar"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/drawintitlebar">drawintitlebar</a></code> 属性が追加されました。この値が <code>true であれば、</code>ウィンドウのコンテント領域にはタイトルバーが含まれており、タイトルバー内に描画することを許可します。</li>
+ <li>新たに <code>TabPinned</code> および <code>TabUnpinned</code> イベントが追加され、これを用いることで、<a href="/ja/docs/Code_snippets/Tabbed_browser#Notification_when_a_tab_is_pinned_or_unpinned">タブがアイコン化したかアイコン化が解除されたかを検知できます</a>。</li>
+ <li>新しい <a href="/ja/docs/Code_snippets/Tabbed_browser#Notification_when_a_tab%27s_attributes_change"><code>TabAttrModified</code> イベント</a> はタブの <code id="a-label"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/label">label</a></code>、<code id="a-crop"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/crop">crop</a></code>、<code id="a-busy"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/busy">busy</a></code>、 <code id="a-image"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/image">image</a></code>、あるいは、<code id="a-selected"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/selected">selected</a></code> 属性のいずれかが変化したときに送られます。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/tab">&lt;xul:tab&gt;</a></code> 要素に <code id="a-pinned"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/pinned">pinned</a></code> 属性が追加されました。これを用いることで、タブが現在アイコン化されているかどうか判定できます。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/tree">&lt;xul:tree&gt;</a></code> 要素上の <code>setDirectionIndicator</code> クラスは何もしないことがありましたが、一切利用されないようになりました。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/window">&lt;xul:window&gt;</a></code> 要素に <code id="a-chromemargin"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/chromemargin">chromemargin</a></code> 属性が追加され、これを用いることで、ウィンドウの両端のChrome とコンテントのマージンを設定できます。例えば、タイトルバーに描画するためにこれを用いることができます。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/window">&lt;xul:window&gt;</a></code> 要素に <code id="a-disablechrome"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/disablechrome">disablechrome</a></code> 属性が追加されました。これは <code>about:addons のように</code>ブラウザ内 UI に表示するために用いるときにウィンドウで Chrome のほどんどを隠すために用いることができます。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/window">&lt;xul:window&gt;</a></code> 要素に <code id="a-disablefastfind"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/disablefastfind">disablefastfind</a></code> 属性が追加されました。これを用いることで、ウィンドウ内のページ内検索バーを無効にできます。このときコンテント内でページ検索バーはサポートされません。例えば、これはアドオンパネルで使われています。</li>
+ <li>ツールバーをツールボックスの外部に置けるようになりました。<code><a href="/ja/docs/Mozilla/Tech/XUL/toolbar">&lt;xul:toolbar&gt;</a></code> 要素の <code><span><a href="https://developer.mozilla.org/ja/docs/XUL/Property/toolboxid">toolboxid</a></span></code> プロパティを設定することで、以前のように <code><a href="/ja/docs/Mozilla/Tech/XUL/toolbox">&lt;xul:toolbox&gt;</a></code> 要素のメンバーとして扱うことができます。また、<code><a href="/ja/docs/Mozilla/Tech/XUL/toolbox">&lt;xul:toolbox&gt;</a></code> 要素に <code><span><a href="https://developer.mozilla.org/ja/docs/XUL/Property/externalToolbars">externalToolbars</a></span></code> プロパティが追加されました。このプロパティによって、そのツールボックスのメンバーとして扱われるツールバーのすべての一覧を取得できます。</li>
+ <li>デバッグ目的向けに <a href="/ja/docs/XUL/Template_Guide/Template_Logging">logging XUL テンプレートのロギング</a> のサポートが追加されました。</li>
+</ul>
+
+<h3 id="UI_changes_affecting_developers" name="UI_changes_affecting_developers">開発者に影響がある UI の変更</h3>
+
+<dl>
+ <dt><a href="/ja/docs/The_add-on_bar">アドオンバー</a></dt>
+ <dd>ステータスバーが削除され、新しいアドオンバーに置き換えられました。以前にステータスバーに UI を追加していた拡張は更新する必要があります。</dd>
+ <dt><a href="/ja/docs/Hiding_browser_chrome">ブラウザのクロームを隠す</a></dt>
+ <dd>ブラウザのクロームを隠したいときに、隠せるようになりました。例えば、<code>about:addons</code> がこれを用いています。</dd>
+</dl>
+
+<h3 id="Storage" name="Storage">Storage</h3>
+
+<h4 id="Miscellaneous_storage_API_changes" name="Miscellaneous_storage_API_changes">小さなストレージ API の変更</h4>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageBindingParamsArray" title="">mozIStorageBindingParamsArray</a></code> インタフェースが 配列である<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageBindingParams" title="">mozIStorageBindingParams</a></code> オブジェクトの数を示す length 属性を持つようになりました。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatement " title="">mozIStorageStatement </a></code> の メソッド <a href="/ja/docs/mozIStorageStatemt#bindPrameters">bindParameters</a> が 指定された <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageBindingParamsArray" title="">mozIStorageBindingParamsArray</a></code> が空のときにエラーを返すようになりました。</li>
+ <li><code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#clone()">mozIStorageConnection.clone()</a></code> メソッドが追加されました。これを用いると、存在するデータベース接続を複製できます。</li>
+ <li><code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#asyncClose()">mozIStorageConnection.asyncClose()</a></code> が追加されました。これを用いると、非同期にデータベース接続を閉じることができます。クローズ処理が完了したときに通知されるコールバックを指定します。</li>
+ <li><code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#setGrowthIncrement()">mozIStorageConnection.setGrowthIncrement()</a></code> メソッドが追加されました。これを用いると、SQLite のフラグメンテーションを減らすことを助けるために、データベースファイルでの一度の増加量を指定できます。</li>
+ <li><code>SQLITE_CONSTRAINT</code> エラーが <code>NS_ERROR_FAILURE</code> の代わりに <code>NS_ERROR_STORAGE_CONSTRAINT</code> を報告するようになりました。</li>
+</ul>
+
+<h3 id="XPCOM" name="XPCOM">XPCOM</h3>
+
+<p>以下から参照できる特定の変更に加えて、凍結されたインタフェースが一切無くなったという重要な変更もあります。すべてのインタフェースは非凍結となっています。ドキュメンテーションに書いていることに関わらずです。ドキュメンテーションを後ほど更新する予定です。</p>
+
+<dl>
+ <dt><a href="/ja/docs/XPCOM/XPCOM_changes_in_Gecko_2.0">Gecko 2.0 における XPCOM の変更</a></dt>
+ <dd>Firefox 4 で互換性に影響を与える XPCOM への変更についての詳細。</dd>
+ <dt><a href="/ja/docs/Components.utils.getGlobalForObject">Components.utils.getGlobalForObject()</a></dt>
+ <dd>この新しいメソッドはオブジェクトが属しているグローバルオブジェクトを返します。これは現在削除された <code>__parent__ の一般的用途を置き換えます。</code></dd>
+</dl>
+
+<h3 id="Places" name="Places">Places</h3>
+
+<ul>
+ <li>Places クエリの結果が複数のオブザーバによって提供されるようになり、それらのクエリは非同期で実行される可能性があります。このことにより、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryResult" title="">nsINavHistoryResult</a></code>、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryQueryOptions" title="">nsINavHistoryQueryOptions</a></code>、および<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryContainerResultNode" title="">nsINavHistoryContainerResultNode</a></code> インタフェースにいくつかの変更があります。より大きな変更は、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryResultViewer" title="">nsINavHistoryResultViewer</a></code> インタフェースが <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryResultObserver" title="">nsINavHistoryResultObserver</a></code> に改名されたことです。</li>
+ <li>いくつかの <a href="/ja/docs/Observer_Notifications#Places">新しい通知</a> が追加されました。この通知を用いると、ブラウザが Places サービスのシャットダウンプロセスをより確実に追跡できます。これらのうち、ほとんどは内部での利用のためにのみ用意されたものですが、<code>places-connection-closed</code> 通知は Places サービスが自身のシャットダウンプロセスを完了したときを知るために利用可能です。</li>
+ <li>いくつかの Places のメソッドで配列サイズ出力を指定する引数がオプションになりました。</li>
+ <li><code>&lt;menupopup type="places"&gt;</code> のサポートが削除されました。代わりに、以前は自動で行なわれていた Places の情報を持つメニューを手動で作成して配置する必要があります。詳細は<a href="/ja/docs/Displaying_Places_information_using_views#Menu_view">メニュービューを用いて Places 情報を表示する</a>を参照してください。</li>
+</ul>
+
+<h3 id="Interface_changes" name="Interface_changes">インタフェースの変更</h3>
+
+<ul>
+ <li>The <code><a href="/ja/docs/XPCOM_Interface_Reference/nsIDocShell">nsIDocShell</a></code> and <code><a href="/ja/docs/XPCOM_Interface_Reference/nsIWebBrowser">nsIWebBrowser</a></code> interfaces now have a new <code>isActive</code> attribute, which is used to allow optimization of code paths for documents that aren't currently visible.</li>
+ <li>The <code><a href="/ja/docs/XPCOM_Interface_Reference/nsIMemory">nsIMemory</a></code> method <code><a href="/ja/docs/en-US/XPCOM_Interface_Reference/nsIMemory#isLowMemory()">nsIMemory.isLowMemory()</a></code> has been deprecated. You should use <a href="/ja/docs/XPCOM_Interface_Reference/nsIMemory#Low_memory_notifications">"memory-pressure" notifications</a> to watch for low memory situations instead.</li>
+ <li>The API for handling redirects on HTTP channels has changed to let them be processed asynchronously. Any code that implements redirect handling using <code><a href="/ja/docs/en-US/XPCOM_Interface_Reference/nsIChannelEventSink#onChannelRedirect()">nsIChannelEventSink.onChannelRedirect()</a></code> needs to be updated to use <code><a href="/ja/docs/en-US/XPCOM_Interface_Reference/nsIChannelEventSink#asyncOnChannelRedirect()">nsIChannelEventSink.asyncOnChannelRedirect()</a></code> instead. This accepts a callback handler that must be called when a redirect is successfully completed.</li>
+ <li>The <code><a href="/ja/docs/en-US/XPCOM_Interface_Reference/nsINavHistoryResultObserver#batching()">nsINavHistoryResultObserver.batching()</a></code> method has been added, providing a way to group Places operations into batches, reducing the number of update notifications delivered, which can improve performance when observers are performing relatively involved tasks (such as refreshing views).</li>
+ <li>The long-obsolete <code>nsIPref</code> interface has finally been removed. If you haven't already switched to <code><a href="/ja/docs/XPCOM_Interface_Reference/nsIPrefService">nsIPrefService</a></code>, now is the time.</li>
+ <li>The <code><a href="/ja/docs/XPCOM_Interface_Reference/nsISessionStore">nsISessionStore</a></code> and <code><a href="/ja/docs/XPCOM_Interface_Reference/nsISessionStartup">nsISessionStartup</a></code> interfaces received changes to support on-demand session restore. See the <code><a href="/ja/docs/en-US/XPCOM_Interface_Reference/nsISessionStore#restoreLastSession()">nsISessionStore.restoreLastSession()</a></code> method.</li>
+ <li>The <code><a href="/ja/docs/XPCOM_Interface_Reference/nsIPrincipal">nsIPrincipal</a></code> methods <code><a href="/ja/docs/en-US/XPCOM_Interface_Reference/nsIPrincipal#subsumes()">nsIPrincipal.subsumes()</a></code> and <code><a href="/ja/docs/en-US/XPCOM_Interface_Reference/nsIPrincipal#checkMayLoad()">nsIPrincipal.checkMayLoad()</a></code>, as well as its <code>origin</code>, <code>csp</code>, and <code>URI</code> attributes, are now available from script; previously they were only available from native code.</li>
+ <li>The <code><a href="/ja/docs/XPCOM_Interface_Reference/nsIPrompt">nsIPrompt</a></code> interface now supports tab-modal alerts; see <a href="/ja/docs/Using_tab-modal_prompts">Using tab-modal prompts</a> for details.</li>
+ <li>The <code><a href="/ja/docs/en-US/XPCOM_Interface_Reference/nsIEffectiveTLDService#getPublicSuffixFromHost()">nsIEffectiveTLDService.getPublicSuffixFromHost()</a></code> method now correctly rejects host name starting with a period (".").</li>
+ <li>The <code><a href="/ja/docs/en-US/XPCOM_Interface_Reference/mozIJSSubScriptLoader#loadSubScript()">mozIJSSubScriptLoader.loadSubScript()</a></code> method now has an optional argument allowing you to specify the character set of the script; if one is not provided, ASCII is assumed (as was always assumed previously).</li>
+ <li>The <code>nsIAccessProxy</code> interface has been removed. It was an implementation detail that has outlived its usefulness.</li>
+ <li>The <code><a href="/ja/docs/XPCOM_Interface_Reference/nsIContentView">nsIContentView</a></code> and <code><a href="/ja/docs/XPCOM_Interface_Reference/nsIContentViewManager">nsIContentViewManager</a></code> interfaces have been added for Firefox Mobile. It represents a scrollable content view whose contents are actually drawn by a separate process.</li>
+ <li>The <code><a href="/ja/docs/XPCOM_Interface_Reference/nsIDiskCacheStreamInternal">nsIDiskCacheStreamInternal</a></code> interface has been added.</li>
+ <li>The <code><a href="/ja/docs/XPCOM_Interface_Reference/nsIExternalURLHandlerService">nsIExternalURLHandlerService</a></code> interface has been added.</li>
+ <li>The <code><a href="/ja/docs/XPCOM_Interface_Reference/nsISyncJPAKE">nsISyncJPAKE</a></code> interface has been added. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=601645">bug 601645</a>.</li>
+</ul>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDocShell" title="">nsIDocShell</a></code> および <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebBrowser" title="">nsIWebBrowser</a></code> インタフェースに新しく <code>isActive</code> 属性が追加されました。これは現在表示されていないドキュメントのためにコードパスを最適化することを許可するために用いることができます。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMemory" title="">nsIMemory</a></code> のメソッドである <a href="/ja/docs/XPCOM_Interface_Reference/nsIMemory/isLowMemory"><code>isLowMemory()</code></a> は非推奨になりました。低メモリ状況を監視するには <a href="/ja/docs/XPCOM_Interface_Reference/nsIMemory#Low_memory_notifications">"memory-pressure" 通知</a> を用いることが推奨されます。</li>
+ <li>HTTP チャンネル上でリダイレクトを扱う API が非同期で動作できるように変更されました。<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIChannelEventSink#onChannelRedirect()">nsIChannelEventSink.onChannelRedirect()</a></code> を用いてリダイレクトを扱う実装を行なっているコードは {ifmethod("nsIChannelEventSink", "asyncOnChannelRedirect")} } を代わりに用いて更新する必要があります。これはリダイレクトが正常に完了したときに呼び出されるコールバックハンドラを受け入れます。</li>
+ <li><code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsINavHistoryResultObserver#batching()">nsINavHistoryResultObserver.batching()</a></code> メソッドが追加されました。このメソッドは Places 操作をバッチにグループ化する方法を提供し、送られてくる更新通知の数を減少させ、その結果、オブザーバが(ビューをリフレッシュするような)相対的にタスクを追加するときのパフォーマンスを向上させます。</li>
+ <li>長い間廃止状態であった <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIPref" title="">nsIPref</a></code> インタフェースがついに削除されました。まだ <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIPrefService" title="">nsIPrefService</a></code> に移行していないなら、今がそのときです。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISessionStore" title="">nsISessionStore</a></code> および <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISessionStartup" title="">nsISessionStartup</a></code> インタフェースがユーザの要求に応じたセッションリストアのサポートへの変更を受けとるようになりました。<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsISessionStore#restoreLastSession()">nsISessionStore.restoreLastSession()</a></code> メソッドを参照してください。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIPrincipal" title="">nsIPrincipal</a></code> のメソッドである <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIPrincipal#subsumes()">nsIPrincipal.subsumes()</a></code> および <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIPrincipal#checkMayLoad()">nsIPrincipal.checkMayLoad()</a></code> が <code>origin</code>、<code>csp、</code> および <code>URI</code> 属性同様に、スクリプトから利用可能になりました。以前はこれらはネイティブコードからのみ利用可能でした。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIPrompt" title="">nsIPrompt</a></code> インタフェースがタブモーダルアラートをサポートするようになりました。詳細は<a href="/ja/docs/Using_tab-modal_prompts">タブモーダルプロンプトの利用</a>を参照してください。</li>
+ <li><code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIEffectiveTLDService#getPublicSuffixFromHost()">nsIEffectiveTLDService.getPublicSuffixFromHost()</a></code> メソッドがピリオド (".") で始まるホスト名を正しく拒否するようになりました。</li>
+</ul>
+
+<h3 id="Memory_management" name="Memory_management">メモリ管理</h3>
+
+<dl>
+ <dt><a href="/ja/docs/Infallible_memory_allocation">確実なメモリアロケーション</a></dt>
+ <dd>Mozilla は null を返さないことを保証する確実なメモリアロケータを複数提供するようになりました。この記事を読んでそれらがどのように動作し、どのようにして不確実な、あるいは、確実なメモリアロケーションを明確に指定して呼び出すのかを学んでください。</dd>
+</dl>
+
+<h3 id="Other_changes" name="Other_changes">その他の変更</h3>
+
+<ul>
+ <li>Firefox 内に含まれるリソースのほとんどが単一の JAR アーカイブである <code>omni.jar</code> にまとめられました。これにより、 I/O が減少し、その結果、起動パフォーマンスが向上しています。詳細は <a href="/ja/docs/About_omni.jar">omni.jar について</a>を読んでください。</li>
+ <li><code>accessibility.disablecache</code> 設定はサポートされなくなりました。これはデバッグ目的で公開されており、もはや用いられません。</li>
+ <li>バージョンアップによって GUID が変更になるアドオンが正しく更新されるようになりました。</li>
+ <li>プラットフォーム固有のディレクトリを削除した副作用として、各プラットフォーム向けに異なった設定を提供することができなくなりました。</li>
+ <li>デフォルトで、拡張はインストール時に展開されなくなりました。その代わりに XPI ファイルから直接実行されます。拡張は古い挙動を選択するために<a href="/ja/docs/Install_Manifests">インストールマニフェスト</a>内で <a href="/ja/docs/Install_Manifests#unpack">unpack</a> プロパティを使用できます。バイナリコンポーネントや、<a href="/ja/docs/js-ctypes">js-ctypes</a> を利用して読み込まれる DLL、<a href="/ja/docs/Creating_OpenSearch_plugins_for_Firefox">検索プラグイン</a>、辞書、ウィンドウアイコンは展開される必要があるように指定しなければなりません。<a href="/ja/docs/XUL/School_tutorial/Local_Storage#SQLite">SQLite データベースを生成する</a>拡張や、拡張ディレクトリからファイルシステムへ相対的に何かをコピーする拡張も、それらのコードを変更する必要があるかもしれません。</li>
+ <li>カスタマイズされた Firefox に<a href="/ja/docs/Developer_Guide/Customizing_Firefox#Including_extensions_with_your_distribution_of_Firefox">アプリケーションスタートアップ時に自動でインストールされる</a>拡張を含められるようになりました。</li>
+</ul>
+
+<h2 id="Other_changes_2" name="Other_changes_2">その他の変更</h2>
+
+<dl>
+ <dt>ルートの chrome.manifest ファイルだけが読み込まれるように</dt>
+ <dd>ルートの <code>chrome.manifest</code> ファイルだけが読み込まれるようになりました。 2 つ以上のマニフェストファイルを読み込む必要がある場合は、ルートの <code>chrome.manifest</code> でそれらを読み込むために <a href="/ja/docs/Chrome_Registration#manifest"><code>manifest</code></a> コマンドを使用できます。</dd>
+ <dt>Gopher サポートの削除</dt>
+ <dd>Gopher プロトコルがネイティブでサポートされなくなりました。継続してサポートを受けるには <a class="link-https" href="https://addons.mozilla.org/addon/7685/">OverbiteFF</a> 拡張を利用できます。</dd>
+ <dt><a href="/ja/docs/The_message_manager">コンテントプロセスイベントハンドリング</a></dt>
+ <dd>out-of-process プラグインのサポートとその他の multiple-process 機能をサポートするために、プロセス間でメッセージを送ることをサポートするための新しい API が導入されました。</dd>
+ <dt><a href="/ja/docs/Extensions/Bootstrapped_extensions">ブートストラップ拡張</a></dt>
+ <dd>ブラウザを再起動せずにインストール、アンインストール、更新(またはダウングレード)できる拡張を作成できるようになりました。</dd>
+ <dt>デフォルトプラグイン の削除</dt>
+ <dd>デフォルトプラグインが削除されました。アプリケーションプラグインフォルダもデフォルトで削除されますが、このフォルダ経由でプラグインをインストールするためのサポートはまだ存在します。<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=533891">bug 533891</a> を参照してください。</dd>
+ <dt>Extension Manager の AddonManager への置き換え</dt>
+ <dd><a href="/ja/docs/XPCOM_Interface_Reference/nsIExtensionManager">nsIExtensionManager</a> は <a href="/ja/docs/Addons/Add-on_Manager/AddonManager">AddonManager</a> に置き換えられました。 指定した拡張 ID からインストール場所を取得するための方法は現在のところ存在しないと思われるので、それに最も近い回避策はプロファイルディレクトリを見つけるためにディレクトリサービスを用い、それに "extensions" を追加することです(この手段ではプロファイルディレクトリ外あるいは他の位置にエイリアスされている拡張は取得できません)。</dd>
+ <dt>子 HWND はもはや利用されません</dt>
+ <dd>Firefox は Windows で内部利用していた 子 HWND を作成しないようになりました。これらの HWND を扱うネィティブコードを用いる拡張を書いていた場合、その拡張は Firefox 4 では動作しないでしょう。HWND を用いることを止めるか、<a href="/ja/docs/NPAPI">NPAPI</a> プラグインで HWND に依存するコードをラップする必要があります。それは多大な作業であり、HWND を直接用いることを避けられるならば、そうすべきです。</dd>
+ <dt>ジェスチャの変更</dt>
+ <dd>トラックパッド上の 3 本指の上下スワイプジェスチャが、デフォルトで、Firefox Panorama (旧称 TabCandy) の開閉に変更されました。これらの変更を以前の scroll-to-top および scroll-to-bottom コマンドに戻すには、about:config を開き、<code>browser.gesture.swipe.down</code> を <code>cmd_scrollBottom</code> にし、<code>browser.gesture.swipe.up</code> を <code>cmd_scrollTop</code> に設定してください。</dd>
+</dl>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<div><div class="multiColumnList">
+<ul>
+<li><a href="/ja/docs/Mozilla/Firefox/Releases/5">Firefox 5 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/4">Firefox 4 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/3.6">Firefox 3.6 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/3.5">Firefox 3.5 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/3">Firefox 3 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/2">Firefox 2 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/1.5">Firefox 1.5 for developers</a></li></ul>
+</div></div>
diff --git a/files/ja/mozilla/firefox/releases/40/index.html b/files/ja/mozilla/firefox/releases/40/index.html
new file mode 100644
index 0000000000..5752b421be
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/40/index.html
@@ -0,0 +1,215 @@
+---
+title: Firefox 40 for developers
+slug: Mozilla/Firefox/Releases/40
+tags:
+ - Firefox
+ - Releases
+translation_of: Mozilla/Firefox/Releases/40
+---
+<p>Firefox 40 は、米国時間 2015 年 8 月 11 日にリリースされました。このページでは、開発者に影響する Firefox 40 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p>ハイライト:</p>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Work_with_animations#Firefox_40">アニメーションビューを改良</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Get_help_for_CSS_properties">CSS プロパティの構文のヘルプを MDN から取得</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Edit_CSS_filters">インスペクタでフィルタを編集</a></li>
+ <li><a href="/ja/docs/Tools/Web_Console#console_API_messages">Worker が発したメッセージを Web コンソールで表示</a></li>
+ <li><a href="/ja/docs/Tools/Network_Monitor#Filtering_by_URL">ネットワークモニタで、要求を URL でフィルタリング</a></li>
+ <li><a href="/ja/docs/Tools/Network_Monitor#Context_menu">ネットワークモニタで、多くの新たなコンテキストメニュー項目を追加</a></li>
+ <li><a href="/ja/docs/Tools/Network_Monitor#Network_request_fields">ネットワークリソースがブラウザのキャッシュから取得されたことを示す</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Filtering_rules">ページインスペクタで、ルールをフィルタリング</a></li>
+</ul>
+
+<p>さらに:</p>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Debugger/How_to/Debug_eval_sources">無名の eval ソース内で、debugger; 構文でブレーク</a></li>
+ <li><a href="/ja/docs/Tools/Debugger/UI_Tour#Source_list_pane">デバッガのソースリストペインで、Copy URL および Open in New Tab コンテキストメニュー項目を追加</a></li>
+ <li><a href="/ja/docs/Tools/Web_Console#Log_messages">Web コンソールで console.dirxml をサポート</a></li>
+ <li><a href="/ja/docs/Tools/Style_Editor#The_style_sheet_pane">スタイルエディタで、スタイルシートリストのコンテキストメニューに "Open Link In New Tab" を追加</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Searching">インスペクタのセレクタ検索で、CSS 接頭辞をつけなくても class や id を検索結果に表示</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_the_box_model#The_Box_Model_view">ボックスモデルビューのツールチップで、どの CSS ルールによって値が決まったかを表示</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Inspect_and_select_colors">インスペクタで、Shift + クリックで色単位を切り替え</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Element_popup_menu">インスペクタで、"Scroll Into View" メニュー項目を実装</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Element_popup_menu">インスペクタで、url/id/resource 属性をリンクとして扱う</a></li>
+ <li><a href="/ja/docs/Tools/Network_Monitor#Network_request_fields">ネットワークモニタで、IP アドレスをツールチップで表示</a></li>
+</ul>
+
+<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Client%20Software&amp;chfieldto=2015-05-11&amp;query_format=advanced&amp;chfield=resolution&amp;chfieldfrom=2015-03-31&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;component=Developer%20Tools&amp;component=Developer%20Tools%3A%203D%20View&amp;component=Developer%20Tools%3A%20Canvas%20Debugger&amp;component=Developer%20Tools%3A%20Console&amp;component=Developer%20Tools%3A%20Debugger&amp;component=Developer%20Tools%3A%20Framework&amp;component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&amp;component=Developer%20Tools%3A%20Inspector&amp;component=Developer%20Tools%3A%20Memory&amp;component=Developer%20Tools%3A%20Netmonitor&amp;component=Developer%20Tools%3A%20Object%20Inspector&amp;component=Developer%20Tools%3A%20Performance%20Tools%20%28Profiler%2FTimeline%29&amp;component=Developer%20Tools%3A%20Responsive%20Mode&amp;component=Developer%20Tools%3A%20Scratchpad&amp;component=Developer%20Tools%3A%20Source%20Editor&amp;component=Developer%20Tools%3A%20Storage%20Inspector&amp;component=Developer%20Tools%3A%20Style%20Editor&amp;component=Developer%20Tools%3A%20User%20Stories&amp;component=Developer%20Tools%3A%20Web%20Audio%20Editor&amp;component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&amp;component=Developer%20Tools%3A%20WebIDE&amp;product=Firefox&amp;list_id=12283503">Firefox 39 から Firefox 40 の間に解決した開発ツール関連のバグ一覧</a></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>接頭辞 (<code>-moz-</code>) 付きの {{cssxref("text-decoration-color")}}、{{cssxref("text-decoration-line")}}、{{cssxref("text-decoration-style")}} を削除しました ({{bug(1097922)}})。</li>
+ <li>{{cssxref("text-align")}} プロパティで <code>match-parent</code> 値をサポートしました ({{bug(645642)}})。</li>
+ <li>Quirks モードで {{cssxref("empty-cells")}} の既定値が、Standard モードと同様に <code>show</code> になりました ({{bug(1020400)}})。</li>
+ <li>{{HTMLElement('meter')}} および {{HTMLElement('progress')}} 要素で使用している非標準の {{cssxref("-moz-orient")}} プロパティが、writing-modes の縦書きに対応しました。<code>auto</code> を削除して、<code>inline</code> および <code>block</code> を追加しました。新たな既定値は <code>inline</code> です ({{bug(1028716)}})。</li>
+ <li>{{cssxref("font-size-adjust")}} プロパティで、値 <code>0</code> は <code>none</code> (調整を行わない、または値 <code>1.0</code> になる) と同じではなく、倍数 (高さが <code>0</code> になるため、表示されない) として扱うように修正しました ({{bug(1144885)}})。</li>
+ <li>縦書きモードで text-overflow が動作しない問題を修正しました ({{bug(1117227)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("Statements/return", "return")}} 文の後方にある到達できないコード ({{jsxref("Statements/return", "セミコロンがない return 文", "#Automatic_semicolon_insertion", 1)}} の後方にある、到達できない式を含む) について、コンソールに警告を表示します ({{bug(1005110)}}、{{bug(1151931)}})。</li>
+ <li>{{jsxref("Symbol.match")}} を追加しました ({{bug(1054755)}})。</li>
+ <li>{{jsxref("Symbol.match")}} プロパティが {{Glossary("truthy")}} な値であるオブジェクトを {{jsxref("String.prototype.startsWith")}}、{{jsxref("String.prototype.endsWith")}}、{{jsxref("String.prototype.contains")}} に渡すと、{{jsxref("TypeError")}} が発生するようになりました ({{bug(1054755)}})。</li>
+ <li>{{jsxref("Symbol.match")}} プロパティが {{Glossary("truthy")}} な値であるパターンオブジェクトを使用して {{jsxref("Operators/new", "new")}} を伴わずに {{jsxref("RegExp")}} 関数を呼び出すと、パターンそのものが返るようになりました。また、パターンオブジェクトの <code>constructor</code> プロパティは {{jsxref("RegExp")}} 関数に等しくなります ({{bug(1147817)}})。</li>
+ <li>JS1.7の、for-in を使用する非標準の分割代入を廃止しました ({{bug(1083498)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...in">for...in</a> ループで、<a href="/ja/docs/Web/JavaScript/Reference/Statements/for...in#Firefox-specific_notes">非標準の初期化式</a>を無視してコンソールに警告を表示するようになりました ({{bug(748550)}} および {{bug(1164741)}})。</li>
+ <li>Unicode コードポイントのエスケープ書式 <code><a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar#Unicode_code_point_escapes">\u{xxxxxx}</a></code> をサポートしました ({{bug(320500)}})。</li>
+ <li>{{jsxref("String.prototype.includes", "String.prototype.contains", "#String.prototype.contains")}} は、{{jsxref("String.prototype.includes")}} に置き換えられました。<code>String.prototype.contains</code> はエイリアスとして維持します ({{bug(1102219)}})。</li>
+ <li>{{jsxref("Operators/new", "new")}} 演算子を伴わない関数として {{jsxref("DataView")}} コンストラクタを呼び出した場合、ES6 に従って {{jsxref("TypeError")}} が発生するようになりました。</li>
+ <li>Firefox 21 のリグレッションである、<code>get</code> トラップを持たずに配列から作成した Proxy が正常に動作しない問題を修正しました。{{jsxref("Proxy")}} で <code>get</code> トラップを定義していない場合は、{{jsxref("Array.length")}} が <code>0</code> を返します。また <code>set</code> トラップは呼び出されません。この問題の回避策は、必要ない場合でも <code>get</code> トラップを追加することでした。この問題は解決されました ({{bug(895223)}})。</li>
+ <li>ES6 仕様に従い、{{jsxref("WeakMap.prototype")}} および {{jsxref("WeakSet.prototype")}} は通常のオブジェクトに変更しました ({{bug(1055473)}})。</li>
+</ul>
+
+<h3 id="InterfacesAPIsDOM" name="InterfacesAPIsDOM">インターフェイス/API/DOM</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Push_API">Push API</a> を、実験的に実装しました ({{bug(1038811)}})。設定項目 <code>services.push.enabled</code> で制御しており、デフォルトは無効にしています。</li>
+</ul>
+
+<h4 id="Web_Animations_API" name="Web_Animations_API">Web Animations API</h4>
+
+<p>主に最新の仕様変更に合わせて、Web Animations の実験的な実装を改良しました:</p>
+
+<ul>
+ <li>{{domxref("AnimationPlayer.currentTime")}} が設定可能になりました ({{bug(1072037)}})。</li>
+ <li>{{domxref("Element")}} で使用できる <code>Animatable.getAnimationPlayers()</code> を、{{domxref("Element.getAnimations()")}} に改名しました ({{bug(1145246)}})。</li>
+ <li><code>Animation</code> および <code>AnimationEffect</code> を、新たに作成した {{domxref("KeyframeEffectReadOnly")}} に統合しました ({{bug(1153734)}})。</li>
+ <li><code>AnimationPlayer</code> を {{domxref("Animation")}} に改名しました ({{bug(1154615)}})。</li>
+ <li>{{domxref("AnimationTimeline")}} は、{{domxref("DocumentTimeline")}} を唯一実装する抽象クラスになりました ({{bug(1152171)}})。</li>
+</ul>
+
+<h4 id="CSSOM" name="CSSOM">CSSOM</h4>
+
+<ul>
+ <li>CSS Font Loading API を、Nightly および Developer Edition ではデフォルトで有効にしました ({{bug(1088437)}})。Beta および Release では、引き続き無効です。</li>
+ <li><code>CSSCharsetRule</code> インターフェイスを削除しました。このオブジェクトは CSSOM で使用できなくなりました ({{bug(1148694)}})。これは仕様書 (最近の変更) および Chrome の動作に合致します。</li>
+</ul>
+
+<h4 id="WebRTC" name="WebRTC">WebRTC</h4>
+
+<ul>
+ <li>WebRTC の {{event("negotiationneeded")}} イベントは、再ネゴシエーション時だけでなく初期ネゴシエーション時にも送るようになりました ({{bug(1149838)}})。</li>
+</ul>
+
+<h4 id="DOM_HTML_DOM" name="DOM_HTML_DOM">DOM &amp; HTML DOM</h4>
+
+<ul>
+ <li>最新の仕様書の要求に従い、{{htmlattrxref("srcset", "image")}} をパースできないときに {{domxref("HTMLImageElement.currentSrc")}} メソッドは <code>null</code> ではなく <code>""</code> を返すようになりました ({{bug(1139560)}})。</li>
+ <li>画像と同様に、Firefox は非表示の {{HTMLElement("iframe")}} に対して {{domxref("Window.requestAnimationFrame()")}} を抑制するようになりました ({{bug(1145439)}})。</li>
+ <li>{{domxref("Navigator.taintEnabled")}} は Web workers で使用できなくなりました ({{bug(1154878)}})。</li>
+</ul>
+
+<h4 id="Web_Audio_API" name="Web_Audio_API">Web Audio API</h4>
+
+<p><a href="/ja/docs/Web/API/Web_Audio_API">Web Audio API</a> の新たな拡張:</p>
+
+<ul>
+ <li>{{domxref("AudioContext.state")}}、{{domxref("AudioContext.onstatechange")}} プロパティと {{domxref("AudioContext.suspend()")}}、{{domxref("AudioContext.resume()")}}、{{domxref("AudioContext.close()")}} メソッドを実装しました ({{bug(1094764)}})。</li>
+ <li>{{domxref("AudioBufferSourceNode")}} に {{domxref("AudioBufferSourceNode.detune")}} <a href="/ja/docs/DOM/AudioParam#k-rate">k-rate</a> 属性を実装しました ({{bug(1153783)}})。</li>
+</ul>
+
+<h4 id="Web_Workers" name="Web_Workers">Web Workers</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/ServiceWorker_API">Service Worker API</a> を少々改良しました。{{domxref("ServiceWorkerRegistration.update()", "update()")}} メソッドを、{{domxref("ServiceWorkerGlobalScope")}} から {{domxref("ServiceWorkerRegistration")}} に移動しました ({{bug(1131350)}})。</li>
+ <li>{{domxref("ServiceWorkerRegistration")}} を Web workers で使用できます ({{bug("1131327")}})。</li>
+ <li>{{domxref("DataStore")}} を Web workers で使用できます ({{bug(916196)}})。</li>
+</ul>
+
+<h4 id="IndexedDB" name="IndexedDB">IndexedDB</h4>
+
+<ul>
+ <li>{{domxref("IDBTransaction")}} は、デフォルトで永続的ではなくなりました ({{bug(1112702)}})。これは信頼性よりパフォーマンスを重視するものであり、また他のブラウザの動作に合致します。詳しくは <a href="/ja/docs/Web/API/IndexedDB_API/Basic_Concepts_Behind_IndexedDB#durable">durability の定義</a>をご覧ください。</li>
+</ul>
+
+<h4 id="Dev_Tools" name="Dev_Tools">Dev Tools</h4>
+
+<ul>
+ <li>{{domxref("Console.timeStamp")}} プロパティを追加しました ({{bug(922221)}})。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="AudioVideo" name="AudioVideo">Audio/Video</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Networking" name="Networking">ネットワーク</h2>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<ul>
+ <li>{{Glossary("CSP")}} でアスタリスク (<code>*</code>) を使用した場合に、<code>data:</code>、<code>blob:</code>、<code>:filesystem</code> の各スキーマは提供元のマッチング対象に含まれなくなりました。これらのスキーマを CSP でマッチさせるには、関連するヘッダで明示的に定義しなければなりません ({{bug(1086999)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="XUL" name="XUL">XUL</h3>
+
+<ul>
+ <li>透過したトップレベル window を生成することができなくなりました ({{bug(1162649)}})。</li>
+</ul>
+
+<h3 id="JavaScript_code_modules" name="JavaScript_code_modules">JavaScript コードモジュール</h3>
+
+<ul>
+ <li>Dict.jsm を削除しました ({{bug(1123309)}})。代わりに {{jsxref("Map")}} を使用してください。</li>
+</ul>
+
+<h3 id="XPCOM" name="XPCOM">XPCOM</h3>
+
+<ul>
+ <li><code>nsClassInfo::GetImplementationLanguage()</code> 関数とともに <code>nsIClassInfo.implementationLanguage</code> 属性を削除しました。</li>
+ <li>以下の XPCOM インターフェイスを削除しました。代わりに標準 HTML インターフェイスを使用してください:
+ <ul>
+ <li><code>nsIDOMHTMLBRElement</code></li>
+ <li><code>nsIDOMDivElement</code></li>
+ <li><code>nsIDOMHTMLHeadingElement</code></li>
+ <li><code>nsIDOMHTMLTableCaptionElement</code></li>
+ <li><code>nsIDOMHTMLTableElement</code></li>
+ <li><code>nsIDOMHTMLTitleElement</code></li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<ul>
+ <li>Keywords API は非推奨になりました。まもなく削除します ({{bug(1140395)}})。</li>
+ <li>自動テストシステムで、個体テスト関数のスキップをサポートしました。{{SectionOnPage("/en-US/docs/Mozilla/QA/Writing_xpcshell-based_unit_tests", "Conditional test functions")}} をご覧ください。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/40.0/releasenotes/">Firefox 40.0 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/40/">Firefox 40 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2015/06/firefox-40-addon-compatibility/">Firefox 40 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers('39')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/40/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/40/site_compatibility/index.html
new file mode 100644
index 0000000000..bbd9e9a646
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/40/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 40 サイト互換性情報
+slug: Mozilla/Firefox/Releases/40/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 40
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/40/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/40/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/41/index.html b/files/ja/mozilla/firefox/releases/41/index.html
new file mode 100644
index 0000000000..57e4a6817b
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/41/index.html
@@ -0,0 +1,208 @@
+---
+title: Firefox 41 for developers
+slug: Mozilla/Firefox/Releases/41
+tags:
+ - Firefox
+ - Releases
+translation_of: Mozilla/Firefox/Releases/41
+---
+<p>Firefox 41 は、米国時間 2015 年 9 月 22 日にリリースされました。このページでは、開発者に影響する Firefox 41 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p>ハイライト:</p>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Element_popup_menu">DOM ノードのスクリーンショットを撮影する</a></li>
+ <li><a href="/ja/docs/Tools/Network_Monitor#CopySave_All_As_HAR">HAR としてコピー/HAR として保存</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Add_rules">ルールビューの "Add Rule" ボタン</a></li>
+ <li><a href="/ja/docs/Tools/View_source">タブでソースを表示</a> (デフォルトは無効)</li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Copy_rules">CSS ルールのコピー方法を追加</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/View_background_images">ルールビューで画像を data: URI としてコピー</a></li>
+ <li><a href="/ja/docs/Tools/GCLI/Display_security_information">CSP の情報を表示するコマンドを GCLI に追加</a></li>
+</ul>
+
+<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Client%20Software&amp;chfieldto=2015-06-29&amp;query_format=advanced&amp;chfield=resolution&amp;chfieldfrom=2015-05-11&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;component=Developer%20Tools&amp;component=Developer%20Tools%3A%203D%20View&amp;component=Developer%20Tools%3A%20Canvas%20Debugger&amp;component=Developer%20Tools%3A%20Console&amp;component=Developer%20Tools%3A%20Debugger&amp;component=Developer%20Tools%3A%20Framework&amp;component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&amp;component=Developer%20Tools%3A%20Inspector&amp;component=Developer%20Tools%3A%20Memory&amp;component=Developer%20Tools%3A%20Netmonitor&amp;component=Developer%20Tools%3A%20Object%20Inspector&amp;component=Developer%20Tools%3A%20Performance%20Tools%20%28Profiler%2FTimeline%29&amp;component=Developer%20Tools%3A%20Responsive%20Mode&amp;component=Developer%20Tools%3A%20Scratchpad&amp;component=Developer%20Tools%3A%20Source%20Editor&amp;component=Developer%20Tools%3A%20Storage%20Inspector&amp;component=Developer%20Tools%3A%20Style%20Editor&amp;component=Developer%20Tools%3A%20User%20Stories&amp;component=Developer%20Tools%3A%20Web%20Audio%20Editor&amp;component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&amp;component=Developer%20Tools%3A%20WebIDE&amp;product=Firefox&amp;list_id=12283503">Firefox 40 から Firefox 41 の間に解決した開発ツール関連のバグ一覧</a>: これらのバグの多く (特にパフォーマンスツールに関するバグ) の修正は Firefox 40 に前倒しされました。</p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>縦書き文章のレイアウト機能を、デフォルトで有効にしました ({{bug(1138384)}})。以下の CSS プロパティが使用可能になりました:
+ <ul>
+ <li>書字方向を選択する: {{cssxref("writing-mode")}}</li>
+ <li>文字の向きを制御する: {{cssxref("text-orientation")}}.</li>
+ <li>方向に依存しない {{cssxref("width")}} および {{cssxref("height")}}: {{cssxref("block-size")}} および {{cssxref("inline-size")}}</li>
+ <li>方向に依存しない {{cssxref("min-width")}} および {{cssxref("min-height")}}: {{cssxref("min-block-size")}} および {{cssxref("min-inline-size")}}</li>
+ <li>方向に依存しない {{cssxref("max-width")}} および {{cssxref("max-height")}}: {{cssxref("max-block-size")}} および {{cssxref("max-block-size")}}</li>
+ <li>方向に依存しない {{cssxref("margin-top")}}、{{cssxref("margin-right")}}、{{cssxref("margin-bottom")}}、{{cssxref("margin-left")}}: {{cssxref("margin-block-start")}}、{{cssxref("margin-block-end")}}、{{cssxref("margin-inline-start")}}、{{cssxref("margin-inline-end")}}</li>
+ <li>方向に依存しない {{cssxref("padding-top")}}、{{cssxref("padding-right")}}、{{cssxref("padding-bottom")}}、{{cssxref("padding-left")}}: {{cssxref("padding-block-start")}}、{{cssxref("padding-block-end")}}、{{cssxref("padding-inline-start")}}、{{cssxref("padding-inline-end")}}</li>
+ <li>方向に依存しない {{cssxref("border-top")}}、{{cssxref("border-right")}}、{{cssxref("border-bottom")}}、{{cssxref("border-left")}} および幅、スタイル、色を個別に指定するプロパティ: {{cssxref("border-block-start")}}、{{cssxref("border-block-start-width")}}、{{cssxref("border-block-start-style")}}、{{cssxref("border-block-start-color")}}、{{cssxref("border-block-end")}}、{{cssxref("border-block-end-width")}}、{{cssxref("border-block-end-style")}}、{{cssxref("border-block-end-color")}}、{{cssxref("border-inline-start")}}、{{cssxref("border-inline-start-width")}}、{{cssxref("border-inline-start-style")}}、{{cssxref("border-inline-start-color")}}、{{cssxref("border-inline-end")}}、{{cssxref("border-inline-end-width")}}、{{cssxref("border-inline-end-style")}}、{{cssxref("border-inline-end-color")}}</li>
+ <li>方向に依存しない {{cssxref("top")}}、{{cssxref("right")}}、{{cssxref("bottom")}}、{{cssxref("left")}}: {{cssxref("offset-block-start")}}、{{cssxref("offset-block-end")}}、{{cssxref("offset-inline-start")}}、{{cssxref("offset-inline-end")}}</li>
+ </ul>
+ </li>
+ <li>SVG で {{cssxref("transform-origin")}} プロパティをサポートしました。また、{{cssxref("transform-box")}} プロパティを実装しました ({{bug(923193)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li><code>href</code> 属性を持たない {{HTMLElement("a")}} は、インタラクティブコンテンツとして分類しないようになりました。{{HTMLElement("label")}} 要素内でクリックすると、ラベル付けされたコンテンツがアクティブになります ({{bug(1167816)}})。</li>
+ <li>サイトアイコン (favicon およびショートカットアイコン) で、SVG アイコンをサポートしました ({{bug(366324)}})。</li>
+ <li><a href="/ja/docs/Web/HTML/Element/link">&lt;link rel='preconnect'&gt;</a> で、{{htmlattrxref('crossorigin', 'link')}} 属性をサポートしました ({{bug(1174152)}})。</li>
+ <li>picture 要素がリサイズやビューポートの変化に反応しない問題を修正しました ({{bug(1135812)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("Date.prototype")}} は {{jsxref("Date")}} のインスタンスではなく、通常のオブジェクトになりました ({{bug(861219)}})。</li>
+ <li>{{jsxref("Date.prototype.toString")}} は、ジェネリックなメソッドになりました ({{bug(861219)}}).</li>
+ <li>{{jsxref("Symbol.species")}} を追加しました ({{bug(1131043)}})。</li>
+ <li>{{jsxref("Map.@@species", "Map[@@species]")}} および {{jsxref("Set.@@species", "Set[@@species]")}} ゲッタを追加しました ({{bug(1131043)}})。</li>
+ <li>非標準の {{jsxref("Statements/let", "let 式", "#let_expressions", 1)}}を廃止しました ({{bug(1023609)}})。</li>
+ <li>{{jsxref("Functions/Default_parameters", "既定値の代入を含む、分割されたパラメータ", "#Destructured_parameter_with_default_value_assignment", 1)}}をサポートしました ({{bug(1018628)}})。</li>
+ <li>ES6 に従い、<a href="/ja/docs/Web/JavaScript/Reference/Functions/Method_definitions">メソッドの定義</a>で波括弧が必要になりました。波括弧を欠いた構文はエラーになります ({{bug(1150855)}})。</li>
+ <li>コンストラクタ形式の<a href="/ja/docs/Web/JavaScript/Reference/Functions/Method_definitions">メソッド定義</a> (ジェネレータメソッドを除く) は不可になりました ({{bug(1059908)}} および {{bug(1166950)}})。</li>
+ <li>ES6 使用への準拠の一環として <code>([a, b]) = [1, 2]</code> や <code>({a, b}) = { a: 1, b: 2 }</code> といった、括弧でくくるパターンの <a href="/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">destructuring</a> 構文は無効と判断され、{{jsxref("SyntaxError")}} が発生するようになりました。詳しくは <a href="http://whereswalden.com/2015/06/20/new-changes-to-make-spidermonkeys-and-firefoxs-parsing-of-destructuring-patterns-more-spec-compliant/">Jeff Walden のブログ記事</a> をご覧ください。</li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Operators/new.target">new.target</a></code> 構文をサポートしました ({{bug(1141865)}})。</li>
+</ul>
+
+<h3 id="InterfacesAPIsDOM" name="InterfacesAPIsDOM">インターフェイス/API/DOM</h3>
+
+<h4 id="HTML_Editing_API" name="HTML_Editing_API">HTML Editing API</h4>
+
+<ul>
+ <li>切り取り、コピー、貼り付けのコマンド制御を改良して、JS プログラムから Web コンテンツのコピーや切り取りが可能になりました:
+ <ul>
+ <li>{{domxref("Document.queryCommandSupported()")}} に引数として <code>'paste'</code> コマンドを与えると、実際に操作を行うための十分な権限がない場合に <code>false</code> を返します ({{bug(1161721)}})。</li>
+ <li>{{domxref("Document.queryCommandSupported()")}} に引数として <code>'cut'</code> または <code>'copy'</code> を与えると、ユーザが起動したコードや権限を持つコードのコンテキスト内で呼び出された場合に <code>true</code> を返すようになりました ({{bug(1162952)}})。</li>
+ <li>引数として <code>'cut'</code> または <code>'copy'</code> を与えた {{domxref("Document.execCommand()")}} は動作しますが、ユーザが起動したコードや権限を持つコードのコンテキスト内で呼び出された場合に限ります ({{bug(1012662)}})。</li>
+ <li>{{domxref("Document.execCommand()")}} でコマンドが未サポートまたは無効である場合に、例外が発生しないようになりました ({{bug(1027560)}})。</li>
+ </ul>
+ </li>
+</ul>
+
+<h4 id="Events" name="Events">イベント</h4>
+
+<ul>
+ <li>非標準の {{domxref("CloseEvent.initCloseEvent()")}} メソッド、および {{domxref("Event.createEvent", "Event.createEvent('CloseEvent')")}} メソッドを使用して {{domxref("CloseEvent")}} を生成する機能を削除しました。代わりに、標準のコンストラクタである {{domxref("CloseEvent.CloseEvent", "CloseEvent()")}} を使用してください ({{bug(1161950)}})。</li>
+ <li>デスクトップ版の Nightly で、{{domxref("PointerEvent")}} がデフォルトで有効になりました。Developer Edition、Beta、Release では無効であり、少なくともいくつかのバージョンの間は有効化しない予定です。({{bug(1166347)}})</li>
+ <li>接頭辞なしの {{domxref("MouseEvent.movementX")}} および {{domxref("MouseEvent.movementY")}}}} を追加しました。接頭辞つきのプロパティは非推奨になり、将来のある時点で削除する予定です ({{bug(1164981)}})。</li>
+</ul>
+
+<h4 id="Web_Crypto" name="Web_Crypto">Web Crypto</h4>
+
+<ul>
+ <li>{{domxref("SubtleCrypto.importKey()")}} および {{domxref("SubtleCrypto.exportKey()")}} で <code>ECDH</code> 鍵をサポートしました ({{bug(1050175)}})。</li>
+</ul>
+
+<h4 id="Canvas_API" name="Canvas_API">Canvas API</h4>
+
+<ul>
+ <li>{{domxref("HTMLCanvasElement.captureStream()")}} および {{domxref("CanvasCaptureMediaStream")}} を追加して、{{HTMLElement("canvas")}} の表示内容をリアルタイムに流すことが可能になりました ({{bug(1032848)}})。</li>
+ <li>{{domxref("MediaStream.id")}} が、ストリームのユニークな ID を返すようになりました ({{bug(1089798)}})。</li>
+ <li>{{domxref("CanvasRenderingContext2D.filter")}} の初期値が、正しく <code>none</code> が設定されるようになりました ({{bug(1163124)}})。</li>
+</ul>
+
+<h4 id="Service_Workers" name="Service_Workers">Service Worker</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/ServiceWorker_API">Service Worker</a> の実験的な実装を改良しました:
+
+ <ul>
+ <li>{{domxref("ServiceWorkerGlobalScope.skipWaiting()")}} を実装しました ({{bug(1131352)}})。</li>
+ <li>{{domxref("Clients.claim()")}} を追加しました ({{bug(1130684)}})。</li>
+ <li>Service Worker で機能する上記以外のイベントは {{domxref("ExtendableEvent")}} から継承しており、{{domxref("ExtendableEvent.waitUntil","waitUntil()")}} メソッドにアクセスできます ({{bug("1160527")}})。</li>
+ </ul>
+ </li>
+ <li>{{domxref("CacheStorage")}} および {{domxref("Cache")}} インターフェイスをサポートしました ({{bug("1110144")}})。</li>
+</ul>
+
+<h4 id="WebGL" name="WebGL">WebGL</h4>
+
+<ul>
+ <li>WebGL コンテキスト属性 <code>failIfMajorPerformanceCaveat</code> を追加しました。また、システムのパフォーマンスが低い場合にコンテキスト生成を失敗させることを示すために、{{domxref("HTMLCanvasElement.getContext()")}} で WebGL コンテキストを生成する際にこの属性を設定できるようになりました ({{bug(1164970)}})。</li>
+</ul>
+
+<h4 id="Miscellaneous" name="Miscellaneous">その他</h4>
+
+<ul>
+ <li>OS X および Windows で、{{domxref("NavigatorOnLine.onLine", "Navigator.onLine")}} はネットワーク接続の状態に応じて変化するようになりました (以前は "オフライン作業" モードを選択しなければ常に <code>true</code> を返していました) ({{bug(654579)}})。</li>
+ <li>{{domxref("MessagePort")}} および {{domxref("MessageChannel")}} が <a href="/ja/docs/Web/API/Web_Workers_API">Web workers</a> で使用可能になりました。また、デフォルトですべての状況で有効になりました ({{bug(952139)}} および {{bug(911972)}})。</li>
+ <li>User Timing API が <a href="/ja/docs/Web/API/Web_Workers_API">Web workers</a> で使用可能になりました ({{bug(1155761)}})。</li>
+ <li><a href="/ja/docs/Web/API/Notifications_API">Notifications API</a> が <a href="/ja/docs/Web/API/Web_Workers_API">Web workers</a> で使用可能になりました ({{bug(916893)}})。</li>
+ <li>{{domxref("DOMRequest")}} および {{domxref("DOMCursor")}} が <a href="/ja/docs/Web/API/Web_Workers_API">Web workers</a> で使用可能になりました ({{bug(1167650)}})。</li>
+ <li><a href="/ja/docs/Web/API/CSSFontLoading_API">CSS Font Loading API</a> を全面的に実装して、デフォルトで有効にしました ({{bug(1149381)}})。</li>
+ <li>Shared workers が、プライベートドキュメント (すなわち、プライベートウィンドウで開いているドキュメント) と非プライベートドキュメントとの間で共有されないようになりました ({{bug(1177621)}})。</li>
+ <li>{{domxref("URLUtilsSearchParams.searchParams")}} プロパティが読み取り専用になりました ({{bug(1174731)}})。</li>
+ <li>{{domxref('URLUtils.hash')}} プロパティが、URL フラグメントをデコードしないようになりました ({{bug(1093611)}})。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<h4 id="New_default_and_fallback_font_handling" name="New_default_and_fallback_font_handling">新たな既定フォントとフォールバックフォントの制御</h4>
+
+<p>数式では特別なフォントが必要です。これまで、そのフォントは <code>mathml.css</code> ユーザエージェントスタイルシート ({{MathMLElement("math")}} タグに font-family を設定) および設定項目 <code>font.mathfont-family</code> (伸縮する大型演算子で使用するフォールバックフォントを設定) でハードコードされていました。Firefox 41 より <code>&lt;math&gt;</code> タグへ自動的に設定される <code>x-math</code> 内部言語と、それに対応する設定項目 (例えば <code>font.name.serif.x-math</code>) を導入しました。ユーザエージェントスタイルシートでは <code>&lt;math&gt;</code> タグの font-family を serif に設定して、設定項目 <code>font.mathfont-family</code> を <code>font.name.serif.x-math</code> で置き換えました。また、すべてのプラットフォームで、フォールバックフォントは基本的に "Latin Modern Math" が先頭にある同一のリストを使用するようになりました。既定フォント/フォールバックフォントは、標準の言語別フォント設定メニューで設定できます。詳しくは {{bug(947654)}} および {{bug(1160456)}} をご覧ください。</p>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<ul>
+ <li>サイトアイコン (favicon、ショートカットアイコン) で SVG をサポートしました ({{bug(366324)}})。</li>
+</ul>
+
+<h3 id="AudioVideo" name="AudioVideo">Audio/Video</h3>
+
+<ul>
+ <li>設定項目 <code>media.autoplay.enabled</code> が、信頼されていない {{domxref("HTMLMediaElement.play()")}} の起動 (ユーザ以外が作動したスクリプトから呼び出される場合) に対しても適用されるようになりました ({{bug(659285)}})。</li>
+</ul>
+
+<h2 id="Networking" name="Networking">ネットワーク</h2>
+
+<ul>
+ <li><code>X-Content-Duration</code> ヘッダのサポートを廃止しました ({{Bug(1160695)}})。</li>
+ <li>HTTP/2 プロトコルの草案版のサポートを廃止しました ({{bug(1132357)}})。</li>
+</ul>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/Security/CSP">CSP</a> 1.1 の <code>manifest-src</code> <a href="/ja/docs/Web/Security/CSP/CSP_policy_directives">ディレクティブ</a>をサポートしました ({{bug(1089255)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="XUL" name="XUL">XUL</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript_code_modules" name="JavaScript_code_modules">JavaScript コードモジュール</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="XPCOM" name="XPCOM">XPCOM</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Interfaces" name="Interfaces">インターフェイス</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<ul>
+ <li>window のルートウィジェットを {{HTMLElement("canvas")}} に描画するための、新たな chrome コンテキスト限定の内部 API である {{domxref("CanvasRenderingContext2D.drawWidgetAsOnScreen()")}} を追加しました。この API は、オンスクリーンのウィジェットを取得するために OS を使用します。詳しくは {{bug(1167477)}} をご覧ください。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/41.0/releasenotes/">Firefox 41.0 リリースノート</a></li>
+ <li><a href="/ja/docs/Mozilla/Firefox/Releases/41/Site_Compatibility">Firefox 41 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2015/08/firefox-41-addon-compatibility/">Firefox 41 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers('40')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/41/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/41/site_compatibility/index.html
new file mode 100644
index 0000000000..a9292387cb
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/41/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 41 サイト互換性情報
+slug: Mozilla/Firefox/Releases/41/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 41
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/41/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/41/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/42/index.html b/files/ja/mozilla/firefox/releases/42/index.html
new file mode 100644
index 0000000000..ff45c40ba0
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/42/index.html
@@ -0,0 +1,196 @@
+---
+title: Firefox 42 for developers
+slug: Mozilla/Firefox/Releases/42
+tags:
+ - Firefox
+ - Release
+ - Release Notes
+translation_of: Mozilla/Firefox/Releases/42
+---
+<p>Firefox 42 は、米国時間 2015 年 11 月 3 日にリリースされました。このページでは、開発者に影響する Firefox 42 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p>ハイライト:</p>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Remote_Debugging/Debugging_Firefox_for_Android_over_Wifi">Wi-Fi 経由で Android 版 Firefox のデバッグを行う</a></li>
+ <li><a href="/ja/docs/Tools/WebIDE/Setting_up_runtimes#Configuring_Simulators">WebIDE で Firefox OS シミュレータの設定を行う</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Edit_CSS_filters#Saving_filter_presets">CSS filter のプリセット</a></li>
+</ul>
+
+<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Client%20Software&amp;chfieldto=2015-08-10&amp;query_format=advanced&amp;chfield=resolution&amp;chfieldfrom=2015-06-29&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;component=Developer%20Tools&amp;component=Developer%20Tools%3A%203D%20View&amp;component=Developer%20Tools%3A%20Canvas%20Debugger&amp;component=Developer%20Tools%3A%20Console&amp;component=Developer%20Tools%3A%20Debugger&amp;component=Developer%20Tools%3A%20Framework&amp;component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&amp;component=Developer%20Tools%3A%20Inspector&amp;component=Developer%20Tools%3A%20Memory&amp;component=Developer%20Tools%3A%20Netmonitor&amp;component=Developer%20Tools%3A%20Object%20Inspector&amp;component=Developer%20Tools%3A%20Performance%20Tools%20%28Profiler%2FTimeline%29&amp;component=Developer%20Tools%3A%20Responsive%20Mode&amp;component=Developer%20Tools%3A%20Scratchpad&amp;component=Developer%20Tools%3A%20Source%20Editor&amp;component=Developer%20Tools%3A%20Storage%20Inspector&amp;component=Developer%20Tools%3A%20Style%20Editor&amp;component=Developer%20Tools%3A%20User%20Stories&amp;component=Developer%20Tools%3A%20Web%20Audio%20Editor&amp;component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&amp;component=Developer%20Tools%3A%20WebIDE&amp;product=Firefox&amp;list_id=12478437">Firefox 41 から Firefox 42 の間に解決した開発ツール関連のバグ一覧</a>。</p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>rtl 表記の文字で、{{cssxref('writing-mode')}} の縦書きをサポートしました ({{bug(1131451)}})。</li>
+ <li>{{cssxref("caption-side")}} の値はテーブルに対して相対的になり、また{{cssxref("writing-mode")}} の値に従って実際の意味が変わります ({{bug(1202993)}})。</li>
+ <li>{{cssxref('-moz-margin-start')}} などの非標準プロパティが、対になる標準プロパティ ({{cssxref('margin-inline-start')}} など) のエイリアスになりました。以前は逆になっていました。これは {{domxref('CSSStyleDeclaration.cssText')}} が返す値やスタイルルール内のプロパティに対するイテレーションに対して影響があり、どちらも標準的な形式を使用します ({{bug(1118103)}})。</li>
+ <li>接頭辞付きの CSS gradients は、設定項目 <code>layout.css.prefixes.gradients</code> を <code>false</code> にすることで無効化できるようになりました。</li>
+ <li>{{cssxref("float")}} とマージンの相殺の動作に関する古くからのバグを、いくつか修正しました ({{bug(478834)}}, {{bug(538194)}}, and {{bug(451791)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("img")}} ({{bug(1166910)}})、{{htmlElement("iframe")}} ({{bug(1175736)}})、{{HTMLElement("a")}} および {{HTMLElement("area")}} ({{bug(1174913)}}) 要素の {{htmlattrxref("referrer", "input")}} 属性を実験的にサポートしました。<code>network.http.enablePerElementReferrer</code> の既定値が <code>false</code> であるため、デフォルトでは効力がありません。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("Reflect")}} オブジェクトを実装しました ({{bug(987514)}})。</li>
+ <li>{{jsxref("Proxy")}} {{jsxref("Global_Objects/Proxy/handler/ownKeys", "handler.ownKeys()")}} トラップの実装を、ES2015 の確定仕様に準拠するよう更新しました ({{bug(1049662)}})。</li>
+ <li>{{jsxref('Operators', 'new')}} を伴わずに {{jsxref("Map")}}、{{jsxref("Set")}}、{{jsxref("WeakMap")}} を呼び出すと {{jsxref("TypeError")}} が発生するようになりました ({{bug(1083752)}})。</li>
+</ul>
+
+<h3 id="InterfacesAPIsDOM" name="InterfacesAPIsDOM">インターフェイス/API/DOM</h3>
+
+<h4 id="DOM_HTML_DOM" name="DOM_HTML_DOM">DOM &amp; HTML DOM</h4>
+
+<ul>
+ <li>{{HTMLattrxref('id', 'img')}} を伴う画像が、{{domxref("Window")}} インターフェイスのプロパティのリストに入らないようになりました。<code>&lt;img id="login"&gt;</code> は <code>window.login</code> としてアクセスできません。この動作は Firefox 26 で導入しており、その後変更された仕様書に合致させるために削除しました ({{bug(959992)}})。</li>
+ <li>{{domxref('MouseEvent.offsetX')}} および {{domxref('MouseEvent.offsetY')}} を追加しました ({{bug(69787)}})。</li>
+ <li>{{domxref("HTMLInputElement")}} インターフェイスを、ディレクトリのアップロードを扱うよう実験的に拡張しました ({{bug(1164310)}})。以下 4 つのメンバーは、設定項目 <code>dom.input.dirpicker</code> を <code>true</code> に設定すると使用できます:
+ <ul>
+ <li>{{domxref("HTMLInputElement.directory")}}</li>
+ <li>{{domxref("HTMLInputElement.isFilesAndDirectoriesSupported")}}</li>
+ <li>{{domxref("HTMLInputElement.getFilesAndDirectories()")}}</li>
+ <li>{{domxref("HTMLInputElement.chooseDirectory()")}}</li>
+ </ul>
+ </li>
+ <li>{{domxref("Directory")}} インターフェイスを実験的に拡張しました ({{bug(1177688)}})。{{domxref("Directory.path")}} および {{domxref("Directory.getContents")}} の 2 つのメンバーは、設定項目 <code>dom.input.dirpicker</code> を <code>true</code> に設定すると使用できます。</li>
+ <li><code>HTMLMediaElement.mozSrcObject</code> を {{domxref('HTMLMediaElement.srcObject')}} に改名しました ({{bug(1175523)}})。</li>
+</ul>
+
+<h4 id="Service_Workers" name="Service_Workers">Service Worker</h4>
+
+<ul>
+ <li>{{domxref('Request.context')}} を削除しました ({{bug(1188062)}})。</li>
+ <li>デスクトップ版 Firefox で <a href="/ja/docs/Web/API/Push_API">Push API</a> をデフォルトで有効にしました ({{bug(1153499)}}) が、Nightly/Dev Edition/Beta チャンネルのみで有効です。コンシューマの UX およびデバッグ機能が適切に実装されるまで、Release チャンネルではデフォルトで無効化しています ({{bug(1207875)}})。なお、<a>about:config</a> の設定項目 <code>dom.push.enabled</code> で有効化できます。</li>
+ <li>{{domxref("PushManager.hasPermission()")}} メソッドが仕様書で非推奨になり、{{domxref("PushManager.permissionState()")}} メソッドに置き換えられました。Firefox でこれを反映するように、実装を更新しました ({{bug("1183853")}})。</li>
+ <li><a href="/ja/docs/Web/API/Notifications_API">Notifications API</a> で、Service Worker に関する追加実装を行いました ({{bug(1114554)}})。ただし、Release 版では無効化しています。</li>
+</ul>
+
+<h4 id="Web_Animations_API" name="Web_Animations_API">Web Animations API</h4>
+
+<p><a href="/ja/docs/Web/API/Web_Animations_API">Web Animations API</a> の実験的な実装で、サポート範囲が広がりました:</p>
+
+<ul>
+ <li>{{domxref('AnimationPlayer.playbackRate')}} プロパティ ({{bug(1127380)}})。</li>
+ <li>{{domxref('CSSAnimation')}} and {{domxref('CSSTransition')}} インターフェイス ({{bug(1178186)}})。</li>
+ <li>{{domxref('Animation.reverse()')}} メソッド ({{bug(1150808)}})。</li>
+ <li>{{domxref('AnimationPlaybackEvent')}} インターフェイスを実装して、{{domxref('Animation')}} で {{event('cancel')}} および {{event('finish')}} イベントが発生するようになりました ({{bug(1178664)}})。</li>
+</ul>
+
+<h4 id="Web_Components" name="Web_Components">Web Components</h4>
+
+<p><a href="/ja/docs/Web/Web_Components/Shadow_DOM">Shadow DOM</a> の実験的な実装を変更しました:</p>
+
+<ul>
+ <li>{{domxref('ShadowRoot')}} で {{domxref('Node.cloneNode()')}} を実行しようとすると、<code>DataCloneError</code> 例外が発生します ({{bug(1176757)}})。</li>
+ <li>{{domxref('ShadowRoot')}} を引数として {{domxref('Document.importNode()')}} を実行すると、<code>NotSupportedError</code> 例外が発生します ({{bug(1177914)}})。</li>
+ <li>{{domxref('ShadowRoot')}} を引数として {{domxref('Document.adoptNode()')}} を実行すると、<code>HierarchyRequestError</code> 例外が発生します ({{bug(1177991)}})。</li>
+</ul>
+
+<h4 id="WebGL" name="WebGL">WebGL</h4>
+
+<ul>
+ <li>WebGL2 の {{domxref('WebGLTransformFeedback')}} を実装しました ({{bug(1048724)}})。</li>
+ <li><code>WEBGL_debug_renderer_info</code> 拡張をデフォルトで有効にしました ({{bug(1171228)}})。</li>
+ <li>WebGL2 のコンテキストを得るため、{{domxref('HTMLCanvasElement.getContext()')}} は以前の <code>experimental-webgl2</code> に代わり <code>webgl2</code> を使用するようになりました ({{bug(1187174)}})。</li>
+</ul>
+
+<h4 id="WebRTC" name="WebRTC">WebRTC</h4>
+
+<ul>
+ <li><code>RTCICECandidatePairStats.mozPriority</code> を {{domxref('RTCICECandidatePairStats.priority')}} に改名しました ({{bug(1184426)}})。</li>
+</ul>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li>{{domxref("ImageBitmap")}} インターフェイスおよび {{domxref("ImageBitmapFactories.createImageBitmap","createImageBitmap()")}} メソッドを実装しました。これらは通常の window スクリプトおよび Web workers で有効であり、window や worker のコンテキスト間で効率よく画像を渡すことができます ({{bug(1044102)}})。</li>
+</ul>
+
+<h4 id="Miscellaneous" name="Miscellaneous">その他</h4>
+
+<ul>
+ <li>{{domxref('IDBCursorWithValue')}} インターフェイスが <a href="/ja/docs/Web/API/Web_Workers_API">Web workers</a> で使用可能になりました ({{bug(1188115)}})。</li>
+ <li><a href="/ja/docs/Web/API/Web_Workers_API">Web workers</a> が発したエラーイベントが{{原語併記("伝播", "bubble")}}しないようになりました ({{bug(1188141)}})。</li>
+ <li><a href="/ja/docs/Web/API/Media_Source_Extensions_API">Media Source Extensions</a> (MSE) がホワイトリストに記載されたサイトだけでなく、すべての Web サイトで有効になりました ({{bug(1185611)}})。</li>
+ <li>非標準かつ非推奨である {{domxref('Window.mozRequestAnimationFrame()')}} を削除しました ({{bug(909154)}})。代わりに、標準の {{domxref('Window.requestAnimationFrame()')}} を使用してください。</li>
+ <li>音声合成 (text-to-speech) を Windows 向けのデスクトップ版 Firefox に実装しました。ただし、<code>about:config</code> の <code>media.webspeech.synth.enabled</code> フラグで無効化しています ({{bug("1003457")}})。詳しくは <a href="/ja/docs/Web/API/Web_Speech_API">Web Speech API</a> をご覧ください。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="AudioVideo" name="AudioVideo">Audio/Video</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="HTTP" name="HTTP">HTTP</h2>
+
+<ul>
+ <li>Firefox 41 まで、HTTP/2 レスポンスに含まれる未定義または無効な疑似ヘッダフィールドを、誤って受け入れていました。これが修正され、Firefox 42 より受け入れる疑似ヘッダフィールドは仕様書に従い <em>:status</em> のみになります。独自のフィールドを含むレスポンスヘッダは、異常なものであると判断します ({{bug(1136727)}})。</li>
+</ul>
+
+<h2 id="Networking" name="Networking">ネットワーク</h2>
+
+<ul>
+ <li>CSP の <code><a href="/Web/Security/CSP/CSP_policy_directives#upgrade-insecure-requests">upgrade-insecure-requests</a></code> ディレクティブを実装しました ({{bug(1139297)}})。</li>
+</ul>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<ul>
+ <li>有効期間が 39 か月を超える EV 証明書は、DV 証明書として判断および取り扱われるようになりました ({{bug(1145679)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="Interfaces" name="Interfaces">インターフェイス</h3>
+
+<h4 id="nsIContentPolicy" name="nsIContentPolicy">nsIContentPolicy</h4>
+
+<ul>
+ <li>Gecko 内部やアドオンのコードがさまざまなタイプの要求をより区別できるようにするため、<code><strong>TYPE_EMBED</strong></code> 定数を <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPolicy" title="">nsIContentPolicy</a></code> に追加しました。以前はこのような場合に、<code><strong>TYPE_OBJECT</strong></code> を使用していました ({{bug(1148030)}})。</li>
+ <li>同様に、<strong><code>TYPE_SUBDOCUMENT</code></strong> 定数を <code><strong>TYPE_FRAME</strong></code> および <strong><code>TYPE_IFRAME</code></strong> に分割しました ({{bug(1148044)}})。</li>
+</ul>
+
+<h3 id="XUL" name="XUL">XUL</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript_code_modules" name="JavaScript_code_modules">JavaScript コードモジュール</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="XPCOM" name="XPCOM">XPCOM</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/42.0/releasenotes/">Firefox 42 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/42/">Firefox 42 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2015/10/firefox-42-addon-compatibility/">Firefox 42 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers('41')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/42/site_compatibility/index.html b/files/ja/mozilla/firefox/releases/42/site_compatibility/index.html
new file mode 100644
index 0000000000..5efe640da5
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/42/site_compatibility/index.html
@@ -0,0 +1,13 @@
+---
+title: Firefox 42 サイト互換性情報
+slug: Mozilla/Firefox/Releases/42/Site_Compatibility
+tags:
+ - Compatibility
+ - Firefox
+ - Firefox 42
+ - FxSiteCompat
+ - Guide
+ - Web Development
+translation_of: Mozilla/Firefox/Releases/42/Site_Compatibility
+---
+このページは <a class="redirect" href="https://www.fxsitecompat.com/ja/versions/42/">FxSiteCompat.com</a> へ移動しました。
diff --git a/files/ja/mozilla/firefox/releases/43/index.html b/files/ja/mozilla/firefox/releases/43/index.html
new file mode 100644
index 0000000000..1698d5bf1e
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/43/index.html
@@ -0,0 +1,174 @@
+---
+title: Firefox 43 for developers
+slug: Mozilla/Firefox/Releases/43
+tags:
+ - Firefox
+translation_of: Mozilla/Firefox/Releases/43
+---
+<p>Firefox 43 は、米国時間 2015 年 12 月 15 日にリリースされました。このページでは、開発者に影響する Firefox 43 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p>ハイライト:</p>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Web_Console/Console_messages#Server">Web コンソールでサーバ側のログを記録</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Overridden_declarations">CSS 宣言をオーバーライドしたルールをすばやく見つける</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Element_popup_menu">インスペクタのコンテキストメニュー項目 "Use in Console"</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Strict_search">ルールビューで "厳密に" フィルタリング</a></li>
+ <li><a href="/ja/docs/Tools/Web_Console/Console_messages#Network">コンソールのネットワーク項目にネットワークモニタへのリンクを追加</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Setting_hover_active_focus">マークアップビューで、疑似クラスを強制的に適用していることを示すインジケータを表示</a></li>
+ <li>WebIDE の新たなサイドバー UI</li>
+</ul>
+
+<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Client%20Software&amp;chfieldto=2015-09-19&amp;query_format=advanced&amp;chfield=resolution&amp;chfieldfrom=2015-08-10&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;component=Developer%20Tools&amp;component=Developer%20Tools%3A%203D%20View&amp;component=Developer%20Tools%3A%20Canvas%20Debugger&amp;component=Developer%20Tools%3A%20Console&amp;component=Developer%20Tools%3A%20Debugger&amp;component=Developer%20Tools%3A%20Framework&amp;component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&amp;component=Developer%20Tools%3A%20Inspector&amp;component=Developer%20Tools%3A%20Memory&amp;component=Developer%20Tools%3A%20Netmonitor&amp;component=Developer%20Tools%3A%20Object%20Inspector&amp;component=Developer%20Tools%3A%20Performance%20Tools%20%28Profiler%2FTimeline%29&amp;component=Developer%20Tools%3A%20Responsive%20Mode&amp;component=Developer%20Tools%3A%20Scratchpad&amp;component=Developer%20Tools%3A%20Source%20Editor&amp;component=Developer%20Tools%3A%20Storage%20Inspector&amp;component=Developer%20Tools%3A%20Style%20Editor&amp;component=Developer%20Tools%3A%20User%20Stories&amp;component=Developer%20Tools%3A%20Web%20Audio%20Editor&amp;component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&amp;component=Developer%20Tools%3A%20WebIDE&amp;product=Firefox&amp;list_id=12582678">Firefox 42 から Firefox 43 の間に解決した開発ツール関連のバグ一覧</a></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>接頭辞がない標準仕様の {{Cssxref("hyphens")}} をサポートしました ({{bug(953408)}})。</li>
+ <li>{{cssxref("font")}} ショートハンドプロパティを、{{cssxref("font-stretch")}} の値を受け入れるように更新しました ({{bug(1057680)}})。</li>
+ <li>最新の仕様の更新に合致するよう、{{cssxref(":fullscreen")}} 疑似クラスはフルスクリーン時に、トップレベル要素だけでなく要素の集合全体を選択するようになりました ({{bug(1199522)}})。</li>
+ <li>{{cssxref("writing-mode")}} において非推奨な SVG 向けの値である <code>lr</code>、<code>lr-tb</code>、<code>rl</code>、<code>tb</code>、<code>tb-rl</code> を、標準プロパティのエイリアスとして CSS に追加しました ({{bug(1205787)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>複数のフレームを持つ ICO 画像を指定した {{htmlelement("img")}} 要素で、画像固有の寸法は最小フレームではなく最大フレームの寸法を設定するようになりました ({{bug(1201796)}})。</li>
+ <li>ドキュメントのビューポートの値 (<code>&lt;<a href="/ja/docs/Web/HTML/Element/meta">meta</a> name="viewport&gt;</code> で定義) を、JavaScript で動的に変更できるようになりました ({{bug(976616)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li>ES2016 の新規メソッドである {{jsxref("Array.prototype.includes()")}} および {{jsxref("TypedArray.prototype.includes()")}} を、デフォルトで有効にしました ({{bug(1070767)}})。</li>
+</ul>
+
+<h4 id="Changes_regarding_the_arguments_object" name="Changes_regarding_the_arguments_object"><code>arguments</code> オブジェクトに関する変更点</h4>
+
+<ul>
+ <li>ES2015 仕様に合致するよう、<a href="/ja/docs/Web/JavaScript/Reference/Functions/Arrow_functions">Arrow Functions</a> は自身の <code><a href="/ja/docs/Web/JavaScript/Reference/Functions/arguments">arguments</a></code> オブジェクトを持たないようになりました。<code>arguments</code> オブジェクトは Lexical にバインドされます (外側の関数から継承)。たいていの場合、<a href="/ja/docs/Web/JavaScript/Reference/Functions/rest_parameters">Rest Parameters</a> が <code>(...args) =&gt; args[i]</code> のよい代替になります。{{bug(889158)}} をご覧ください。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions/arguments">arguments</a> オブジェクトは、<a href="/ja/docs/Web/JavaScript/Reference/Functions/rest_parameters">Rest Parameters</a> と共に使用できるようになりました ({{bug(1133298)}})。</li>
+ <li>Strict ではない関数にマップされた <code><a href="/ja/docs/Web/JavaScript/Reference/Functions/arguments">arguments</a></code> オブジェクトは、関数が <a href="/ja/docs/Web/JavaScript/Reference/Functions/rest_parameters">Rest Parameters</a>、<a href="/ja/docs/Web/JavaScript/Reference/Functions/Default_parameters">Default Parameters</a>、<a href="/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">Destructured Parameters</a> のいずれも<strong>含まない</strong>場合に限り提供されるようになりました ({{bug(1175394)}})。</li>
+</ul>
+
+<h4 id="Other_changes" name="Other_changes">その他の変更点</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/function*">ジェネレータ</a>および<a href="/ja/docs/Web/JavaScript/Reference/Functions/Method_definitions">ジェネレータメソッド</a>は、ES2016/ES7 に従ってコンストラクタブルではなくなりました ({{bug(1191486)}})。</li>
+</ul>
+
+<h3 id="InterfacesAPIsDOM" name="InterfacesAPIsDOM">インターフェイス/API/DOM</h3>
+
+<h4 id="DOM_HTML_DOM" name="DOM_HTML_DOM">DOM &amp; HTML DOM</h4>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="IndexedDB" name="IndexedDB">IndexedDB</h4>
+
+<ul>
+ <li>ロケールを明示したインデックスの作成を可能にする、<a href="/ja/docs/Web/API/IndexedDB_API/Using_IndexedDB#Locale-aware_sorting">Locale-aware Sorting</a> と呼ばれる新機能を追加しました。ロケールの規則に従ってデータをソートするために使用できます ({{bug(871846)}})。これは、非標準の Firefox 独自機能です。</li>
+</ul>
+
+<h4 id="Service_Workers" name="Service_Workers">Service Worker</h4>
+
+<ul>
+ <li>仕様に従い、{{domxref("ExtendableEvent.waitUntil()")}} が {{domxref("ExtendableEvent")}} ハンドラの外部で呼び出された場合に、Firefox は <code>InvalidStateError</code> を発生するようになりました。加えて、複数回呼び出した {{domxref("ExtendableEvent.waitUntil","waitUntil()")}} は積み上げられ、結果的に promise は <a href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/index.html#dfn-extend-lifetime-promises">Extend Lifetime Promises</a> のリストに追加されます ({{bug(1180274)}})。</li>
+ <li>{{domxref("PushMessageData")}} メソッドを実装しました ({{bug(1149195)}})。</li>
+</ul>
+
+<h4 id="WebRTC" name="WebRTC">WebRTC</h4>
+
+<ul>
+ <li>{{domxref("HTMLCanvasElement.captureStream()")}} メソッドを、デフォルトで有効にしました ({{bug(1177276)}})。</li>
+ <li>{{domxref("RTCOfferOptions")}} の、非標準である制約的なオプションリストを非推奨にしました。これは Firefox 44 で完全に削除する予定です。詳しくは、<a href="https://www.fxsitecompat.com/ja/docs/2015/constraint-like-rtcofferoptions-are-no-longer-supported/">こちらのサイト互換性情報</a>をご覧ください。</li>
+</ul>
+
+<h4 id="Miscellaneous" name="Miscellaneous">その他</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Battery_Status_API">Battery Status API</a> で、最近更新された仕様で指定された {{domxref("Navigator.getBattery()")}} 向けの Promise 構文を使用するようになりました ({{bug(1050749)}})。</li>
+ <li><code>User-Agent</code> ヘッダが {{Glossary("Forbidden_header_name", "forbidden header names", 1)}} のリストから外れましたので、XHR の {{domxref("XMLHttpRequest.setRequestHeader()")}} などで、<a href="/ja/docs/Web/API/Fetch_API">Fetch</a> {{domxref("Headers")}} オブジェクトを設定できるようになりました ({{bug(1188932)}})。</li>
+ <li>{{domxref("MediaRecorder.MediaRecorder()")}} コンストラクタが options Dictionary を引数としてサポートしました。記録するオーディオ/ビデオのビットレートを設定できます ({{bug("1161276")}})。</li>
+ <li><a href="/ja/docs/Web/API/Performance_Timeline_API">Performance Timeline API</a> の {{domxref("PerformanceObserver")}} インターフェイスを実装しました ({{bug(1165796)}})。</li>
+ <li><a href="/ja/docs/Web/API/Frame Timing API">Frame Timing API</a> を追加しました。{{domxref("PerformanceRenderTiming")}} および {{domxref("PerformanceCompositeTiming")}} インターフェイスを使用できます ({{bug(1191178)}})。</li>
+ <li>最新の <a href="/ja/docs/Web/API/Screen_Orientation_API">Screen Orientation API</a> を実装しました。接頭辞がない {{domxref("Screen.orientation")}} および {{domxref("ScreenOrientation")}} インターフェイスを使用できます ({{bug("1131470")}})。非標準の {{domxref("Screen.mozOrientation")}}、{{domxref("Screen.onmozorientationchange")}}、{{domxref("Screen.mozLockOrientation()")}}、{{domxref("Screen.mozUnlockOrientation()")}} は将来削除する予定です。</li>
+ <li>Linux 環境で、Windows 環境と同様に {{domxref("Event.timeStamp")}} が {{domxref("DOMHighResTimeStamp")}} を返すようになりました ({{bug(1026803)}})。</li>
+ <li>{{domxref("Document.onselectionchange")}}、{{domxref("GlobalEventHandlers.onselectstart")}} イベントハンドラプロパティおよび {{domxref("Selection")}} イベント {{event("selectionchange")}}、{{event("selectstart")}} を実験的にサポートしました ({{bug(571294)}})。<code>selectionchange</code> イベントは、関連付けられた <code>Selection</code> オブジェクトが関与している場合に {{domxref("Document")}} または特定の {{domxref("HTMLInputElement")}} や {{domxref("HTMLTextAreaElement")}} で発生します ({{bug(1196479)}})。この機能は設定項目 <code>dom.select_events.enabled</code> で制御しており、既定値は Nightly を除き <code>false</code> です。</li>
+ <li>Android 版 Firefox および Firefox OS で、{{domxref("MouseEvent.offsetX")}} および {{domxref("MouseEvent.offsetY")}} のサポートを有効化しました ({{bug(1204841)}})。</li>
+ <li>{{domxref("HTMLCanvasElement.mozFetchAsStream()")}} メソッドを削除しました ({{bug(1206030)}})。</li>
+ <li>{{domxref("Request.Request", "Request()")}} コンストラクタは {{domxref("Window.fetch", "fetch()")}} と同様に、ユーザ名やパスワードを含む URL を使用した場合に {{exception("TypeError")}} 例外が発生するようになりました ({{bug(1195820)}})。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="AudioVideo" name="AudioVideo">Audio/Video</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="HTTP" name="HTTP">HTTP</h2>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Networking" name="Networking">ネットワーク</h2>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<ul>
+ <li>サードパーティの iframe から Web Storage (すなわち <code>localStorage</code> および <code>sessionStorage</code>) へのアクセスは、ユーザが<a href="https://support.mozilla.org/ja/kb/disable-third-party-cookies">サードパーティ Cookie を禁止している</a>場合に拒否されるようになりました ({{bug("536509")}})。</li>
+ <li>ホワイトリストを Nightly および Aurora/Dev Edition 版のブラウザで削除しました ({{bug(1201023)}})。現状では、次のバージョン (Firefox 44) の Beta および Release 版でもホワイトリストを削除する予定です。</li>
+ <li>{{htmlelement("script")}} およびスタイルシートにリンクする {{htmlelement("link")}} に、Subresource integrity を実装しました ({{bug("992096")}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="Interfaces" name="Interfaces">インターフェイス</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="XUL" name="XUL">XUL</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript_code_modules" name="JavaScript_code_modules">JavaScript コードモジュール</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="XPCOM" name="XPCOM">XPCOM</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Plugins" name="Plugins">プラグイン</h3>
+
+<ul>
+ <li>content をマルチプロセスに切り替える将来のリリースへの準備として、<a href="/ja/Add-ons/Plugins">NPAPI</a> プラグインをページ content と同じプロセスで実行できなくなりました。<code>dom.ipc.plugins</code> から始まる設定項目は使用しません。</li>
+</ul>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="http://www.mozilla.jp/firefox/43.0/releasenotes/">Firefox 43 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/43/">Firefox 43 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2015/11/firefox-43-addon-compatibility/">Firefox 43 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers('42')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/44/index.html b/files/ja/mozilla/firefox/releases/44/index.html
new file mode 100644
index 0000000000..642d0b949f
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/44/index.html
@@ -0,0 +1,262 @@
+---
+title: Firefox 44 for developers
+slug: Mozilla/Firefox/Releases/44
+tags:
+ - Firefox
+translation_of: Mozilla/Firefox/Releases/44
+---
+<p>Firefox 44 は、米国時間 2016 年 1 月 26 日にリリースされました。このページでは、開発者に影響する Firefox 44 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p>{{page('/ja/docs/Tools/Release_notes', 'Firefox_44')}}</p>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/HTTP/Link_prefetching_FAQ">&lt;link rel="prefetch"&gt;</a></code> が、{{htmlattrxref("crossorigin", "link")}} 属性に従うようになりました ({{bug(1214819)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li><code>position: fixed;</code> は、常に新たな stacking context を生成するようになりました ({{bug(1179288)}})。</li>
+ <li>{{cssxref('unicode-range')}} のサポートを、デフォルトで有効にしました ({{bug(1119062)}})。</li>
+ <li>CSS Writing Modes の実験的な実装を更新して、最新の仕様を反映しました:
+ <ul>
+ <li>{{cssxref("text-orientation")}} プロパティの値 <code>sideways</code> を実装して、<code>sideways-right</code> をこの値の別名にしました ({{bug(1193488)}})。</li>
+ <li>{{cssxref("writing-mode")}} プロパティの値 <code>sideways-rl</code> および <code>sideways-lr</code> を実装しました ({{bug(1193488)}} および {{bug(1193519)}})。</li>
+ </ul>
+ </li>
+ <li>非標準のプロパティ {{cssxref("-moz-math-display")}} および {{cssxref("-moz-window-shadow")}} は、Web コンテンツで使用できなくなりました ({{bug(1207002)}}、{{bug(1211040)}}、{{bug(1212607)}})。</li>
+ <li>{{cssxref("font-style")}} で、<code>oblique</code> と <code>italic</code> の両方を使用できる場合は、両者を区別するようになりました ({{bug(543715)}})。</li>
+ <li>未サポートであるにもかかわらず {{cssxref("marks")}}、{{cssxref("orphans")}}、{{cssxref("page")}}、{{cssxref("size")}}、{{cssxref("widows")}} の各プロパティがパースされ、{{cssxref("@supports")}} で誤ってサポート済みであると報告していました。この問題を修正してパースしないように、またサポート済みとしないようになりました ({{bug(1215702)}})。</li>
+ <li>内部で使用する値 <code>-moz-mac-unified-toolbar</code> を、{{cssxref("-moz-appearance")}} プロパティで使用できる値から外しました ({{bug(1206468)}})。</li>
+ <li>いくつかの <code>-webkit</code> 接頭辞付きプロパティおよび値を、web 互換性のためにサポートしました。設定項目 <code>layout.css.prefixes.webkit</code> で制御しており、既定値は <code>false</code> です ({{bug(837211)}}):
+ <ul>
+ <li>{{cssxref("-webkit-animation")}}</li>
+ <li>{{cssxref("-webkit-animation-delay")}}</li>
+ <li>{{cssxref("-webkit-animation-direction")}}</li>
+ <li>{{cssxref("-webkit-animation-duration")}}</li>
+ <li>{{cssxref("-webkit-animation-fill-mode")}}</li>
+ <li>{{cssxref("-webkit-animation-iteration-count")}}</li>
+ <li>{{cssxref("-webkit-animation-name")}}</li>
+ <li>{{cssxref("-webkit-animation-play-state")}}</li>
+ <li>{{cssxref("-webkit-animation-timing-function")}}</li>
+ <li>{{cssxref("-webkit-text-size-adjust")}}</li>
+ <li>{{cssxref("-webkit-transform")}}</li>
+ <li>{{cssxref("-webkit-transform-origin")}}</li>
+ <li>{{cssxref("-webkit-transform-style")}}</li>
+ <li>{{cssxref("-webkit-transition")}}</li>
+ <li>{{cssxref("-webkit-transition-delay")}}</li>
+ <li>{{cssxref("-webkit-transition-duration")}}</li>
+ <li>{{cssxref("-webkit-transition-property")}}</li>
+ <li>{{cssxref("-webkit-transition-timing-function")}}</li>
+ <li>{{cssxref("-webkit-border-radius")}}</li>
+ <li>{{cssxref("-webkit-border-top-left-radius")}}</li>
+ <li>{{cssxref("-webkit-border-top-right-radius")}}</li>
+ <li>{{cssxref("-webkit-border-bottom-left-radius")}}</li>
+ <li>{{cssxref("-webkit-border-bottom-right-radius")}}</li>
+ <li>{{cssxref("-webkit-appearance")}}</li>
+ <li>{{cssxref("-webkit-background-clip")}}</li>
+ <li>{{cssxref("-webkit-background-origin")}}</li>
+ <li>{{cssxref("-webkit-background-size")}}</li>
+ <li>{{cssxref("-webkit-border-image")}}</li>
+ <li>{{cssxref("-webkit-box-shadow")}}</li>
+ <li>{{cssxref("-webkit-box-sizing")}}</li>
+ <li>{{cssxref("-webkit-user-select")}}</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li>{{jsxref("Symbol.toPrimitive")}}、{{jsxref("Symbol.prototype.@@toPrimitive", "Symbol.prototype[@@toPrimitive]")}}、{{jsxref("Date.prototype.@@toPrimitive", "Date.prototype[@@toPrimitive]")}} を実装しました ({{bug(1054756)}})。</li>
+</ul>
+
+<h4 id="Changes" name="Changes">変更点</h4>
+
+<ul>
+ <li>グローバルレベルにおける <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/let">let</a></code> および <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/const">const</a></code> のバインディングを、ES2015 に準拠させました。{{bug(589199)}} およびブログ記事 <a href="https://blog.mozilla.org/addons/2015/10/14/breaking-changes-let-const-firefox-nightly-44/">"Breaking changes in let and const in Firefox Nightly 44"</a> をご覧ください。また、<code>let</code> がデフォルトで Web JavaScript (strict モードおよび 非 strict モード) で使用できるようになり、バージョンのオプトインが不要になりました ({{bug(932517)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">型付き配列</a> ({{jsxref("Int8Array", "Int8Array")}} や {{jsxref("ArrayBuffer", "ArrayBuffer")}} など) のコンストラクタを {{jsxref("Operators/new", "new")}} 演算子をつけずに関数として呼び出した場合に、ES6 仕様に従って {{jsxref("TypeError")}} が発生するようになりました ({{bug(980945)}}、{{bug(1214936)}})。</li>
+ <li>{{jsxref("RegExp")}} のスティッキーフラグが、ES2015 標準の <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/sticky#Anchored_sticky_flag">anchored sticky regular expressions</a> に従うようになりました ({{bug(773687)}})。</li>
+ <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell">JavaScript シェル</a> (SpiderMonkey の REPL) のデフォルト JS バージョンが、Web 互換の JS バージョンになりました (JS1.7 以降ではありません) ({{bug(1192329)}})。</li>
+</ul>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<ul>
+ <li>非標準の <a href="/ja/docs/Web/JavaScript/Reference/Statements/let#let_blocks"><code>let</code> ブロック</a>を廃止しました ({{bug(1167029)}})。</li>
+ <li>非標準かつ非推奨である {{jsxref("Object.noSuchMethod", "Object.prototype.__noSuchMethod__")}} プロパティを削除しました ({{bug(683218)}})。</li>
+</ul>
+
+<h3 id="InterfacesAPIsDOM" name="InterfacesAPIsDOM">インターフェイス/API/DOM</h3>
+
+<h4 id="DOM_HTML_DOM" name="DOM_HTML_DOM">DOM &amp; HTML DOM</h4>
+
+<ul>
+ <li>既存のサイトとの互換性を確保するため、{{domxref("Document.characterSet")}} のエイリアスとして {{domxref("Document.charset")}} を実装しました ({{bug(647621)}})。</li>
+ <li>Web ページから Sherlock プラグインをインストールすることを可能にする <code><a href="/ja/docs/Adding_search_engines_from_web_pages#Installing_Sherlock_plugins">window.sidebar.addSearchEngine()</a></code> メソッドのサポートを廃止して、Web コンソールに警告を出力するようになりました ({{bug(862148)}})。</li>
+ <li>望まないポップアップに対抗するため、対話がないページでは {{domxref("Window.onbeforeunload")}} で要求されたプロンプトを表示しないようになりました ({{bug(636905)}})。</li>
+ <li>非推奨メソッド {{domxref("MessageEvent.initMessageEvent()")}} を、後方互換性のために再実装しました ({{bug(949376)}})。</li>
+ <li>廃止した <code>DocumentType.internalSubset</code> プロパティを削除しました ({{bug(801545)}})。</li>
+ <li>既存のサイトとの互換性を確保するため {{domxref("Window.orientation")}} プロパティ、{{domxref("Window.onorientationchange")}} プロパティおよび {{event("orientationchange")}} イベントを実装しました ({{bug(920734)}})。</li>
+ <li>明示的にフルスクリーンを要求した {{HTMLElement("iframe")}} は、暗黙的にフルスクリーンが解除されないようになりました ({{bug(1187801)}})。</li>
+ <li>イベント {{event("mouseover")}}、{{event("mouseout")}}、{{event("mouseenter")}}、{{event("mouseleave")}}、{{event("pointermove")}}、{{event("pointerover")}}、{{event("pointerout")}}、{{event("pointerenter")}}、{{event("pointerleave")}} が、無効化したフォーム要素で発生するようになりました ({{bug(218093)}})。</li>
+ <li>相互運用性を高めるため、{{domxref("Element.webkitMatchesSelector()")}} メソッドを追加しました ({{bug(1216193)}})。</li>
+ <li>仕様書に合致させるため、{{domxref("Document.createAttribute()")}} は入力内容を小文字に変換するようになりました ({{bug(1176313)}})。</li>
+ <li>{{domxref("Window.open()")}} の非標準機能である <code>dialog</code> は Web コンテンツで使用できなくなりました。拡張機能や chrome 特権を持つコードでは引き続き使用可能です ({{bug(1095236)}})。</li>
+</ul>
+
+<h4 id="Canvas" name="Canvas">Canvas</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Web_Workers_API">Web Workers</a> 内で実行するレンダリングコンテキスト (<a href="/ja/docs/Web/API/WebGL_API">WebGL</a> など) を可能にする、{{domxref("OffscreenCanvas")}} API の実験的な実装を追加しました。この実験的な API を使用するには、about:config で <code>gfx.offscreencanvas.enabled</code> を <code>true</code> に設定します ({{bug(709490)}})。この API に含まれるものは以下のとおりです:
+
+ <ul>
+ <li>{{domxref("OffscreenCanvas")}} インターフェイス</li>
+ <li>{{domxref("HTMLCanvasElement.transferControlToOffscreen()")}}</li>
+ <li>{{domxref("WebGLRenderingContext.commit()")}}</li>
+ <li>この API を有効にすると、いくつかの WebGL インターフェイスも worker で使用可能になります。</li>
+ </ul>
+ </li>
+</ul>
+
+<h4 id="WebGL" name="WebGL">WebGL</h4>
+
+<ul>
+ <li>Uniform Buffer Objects を実装しました ({{bug(1048747)}})。</li>
+</ul>
+
+<h4 id="IndexedDB" name="IndexedDB">IndexedDB</h4>
+
+<ul>
+ <li>{{domxref("IDBIndex.getAll()")}} および {{domxref("IDBIndex.getAllKeys()")}} を、デフォルトで有効にしました ({{bug(1196841)}})。</li>
+</ul>
+
+<h4 id="Service_Workers" name="Service_Workers">Service Worker</h4>
+
+<ul>
+ <li>{{domxref("ServiceWorkerMessageEvent")}} インターフェイスおよび {{domxref("ExtendableMessageEvent")}} インターフェイスを実装しました ({{bug(1143717)}} および {{bug(1207068)}})。</li>
+ <li>{{domxref("Headers")}} オブジェクトでペアイテレータをサポートしました。{{domxref("Headers.entries()")}}、{{domxref("Headers.keys()")}}、{{domxref("Headers.values()")}} の各メソッドを使用できます。また {{jsxref("Symbol.iterator")}} は、デフォルトのイテレータを返すようになりました ({{bug(1108181)}})。</li>
+ <li>{{domxref('XMLHttpRequest')}} API を Service Workers で無効にしました ({{bug(931243)}})。</li>
+ <li>{{domxref("ExtendableEvent.waitUntil()")}} メソッドにアクセスするため、{{domxref("FetchEvent")}} インターフェイスは {{domxref("ExtendableEvent")}} を拡張するようになりました ({{bug(1214772)}})。</li>
+ <li>最近の仕様書の変更に従い、{{domxref("FetchEvent.client")}} を削除しました ({{bug(1218135)}})。</li>
+ <li>最新の仕様書に合致させるため、{{domxref("ServiceWorkerContainer.onreloadpage")}} を削除しました ({{bug(1218139)}})。</li>
+ <li>仕様書に準拠していないため、イベントハンドラ {{domxref("ServiceWorkerGlobalScope.onbeforeevicted")}} および {{domxref("ServiceWorkerGlobalScope.onevicted")}} を削除しました。将来再導入する可能性がありますが、今回の削除により機能検出が期待どおりに動作するようになります ({{bug(1218142)}})。</li>
+ <li>{{domxref("FetchEvent.FetchEvent", "FetchEvent()")}} コンストラクタで、オプションのうち <code>isReload</code> メンバが与えられていない場合のデフォルト値が <code>false</code> になりました ({{bug(1216401)}})。</li>
+ <li>{{domxref("Client.frameType")}} プロパティを正しいインターフェイスに実装しました。以前は {{domxref("WindowClient")}} に実装していました ({{bug(1218146)}})。</li>
+ <li>ページのオフラインサポートを提供するために <a href="/ja/docs/Web/HTML/Using_the_application_cache">AppCache</a> を使用している場合は、代わりに <a href="/ja/docs/Web/API/Service_Worker_API/Using_Service_Workers">Service workers</a> を使用するようアドバイスする警告メッセージをコンソールに表示するようになりました ({{bug("1204581")}})。</li>
+ <li>Gecko で、Service workers をデフォルトで有効にしました。</li>
+</ul>
+
+<h4 id="WebRTC" name="WebRTC">WebRTC</h4>
+
+<ul>
+ <li>WebRTC インターフェイスの<em>接頭辞を削除しましたunprefixed</em> ({{bug(1155923)}})。特に、以下のとおり変更します:
+
+ <ul>
+ <li><code>mozRTCPeerConnection</code> が {{domxref("RTCPeerConnection")}} になります。</li>
+ <li><code>mozRTCIceCandidate</code> が {{domxref("RTCIceCandidate")}}になります。</li>
+ <li><code>mozRTCSessionDescription</code> が {{domxref("RTCSessionDescription")}} になります。</li>
+ </ul>
+ </li>
+ <li>{{domxref("RTCDataChannel.bufferedAmountLowThreshold")}}、{{domxref("RTCDataChannel.onbufferedamountlow")}} プロパティおよび {{event("bufferedamountlow")}} イベントを実装しました ({{bug(1178091)}})。</li>
+ <li>{{domxref("RTCPeerConnection.canTrickleIceCandidates")}} 属性を追加して、非標準メソッド {{domxref("RTCPeerConnection.updateIce()")}} を削除しました ({{bug(1209744)}})。</li>
+ <li>{{domxref("MediaStream")}} インターフェイスで {{domxref("MediaStream.addTrack()")}} および {{domxref("MediaStream.removeTrack()")}} メソッドをサポートしました ({{bug(1103188)}})。</li>
+ <li>{{domxref("MediaStream.MediaStream", "MediaStream()")}} コンストラクタを実装しました ({{bug(1070216)}})。</li>
+ <li>{{domxref("RTCOfferOptions")}} の、非標準である制約的なオプションリストのサポートを廃止しました。詳しくは、<a href="https://www.fxsitecompat.com/ja/docs/2015/constraint-like-rtcofferoptions-are-no-longer-supported/">こちらのサイト互換性情報</a>をご覧ください。</li>
+</ul>
+
+<h4 id="New_APIs_2" name="New_APIs_2">新規 API</h4>
+
+<ul>
+ <li>Workers での Canvas API を実験的に実装しました: {{domxref("OfflineCanvas")}} および {{domxref("HTMLCanvasElement.transferControlToOffscreen()")}} を使用できます。設定項目 <code>gfx.offscreencanvas.enabled</code> で制御しており、現在はデフォルトで無効化しています ({{bug(709490)}})。</li>
+ <li>Web Speech API の一部である Text2Speech API で、OS X のバックエンドに対応しました。ただし、デフォルトで無効化しています ({{bug(1003452)}})。</li>
+</ul>
+
+<h4 id="Miscellaneous" name="Miscellaneous">その他</h4>
+
+<ul>
+ <li>{{domxref("URLSearchParams")}} オブジェクトでペアイテレータをサポートしました。{{domxref("URLSearchParams.entries()")}}、{{domxref("URLSearchParams.keys()")}}、{{domxref("URLSearchParams.values()")}} の各メソッドを使用できます。また {{jsxref("Symbol.iterator")}} は、デフォルトのイテレータを返すようになりました ({{bug(1085284)}})。</li>
+ <li>{{domxref("FormData")}} オブジェクトでペアイテレータをサポートしました。{{domxref("FormData.entries()")}}、{{domxref("FormData.keys()")}}、{{domxref("FormData.values()")}} の各メソッドを使用できます。また {{jsxref("Symbol.iterator")}} は、デフォルトのイテレータを返すようになりました ({{bug(1127703)}})。</li>
+ <li>{{domxref("XMLHttpRequest.send()")}} を HTML ドキュメントで使用したとき、<code>application/xml</code> に代わり <code>text/html</code> を使用するようになりました ({{bug(918771)}})。</li>
+ <li>音声合成 (text-to-speech) を Mac および Linux 向けのデスクトップ版 Firefox に実装しました。ただし、<code>about:config</code> の <code>media.webspeech.synth.enabled</code> フラグで無効化しています ({{bug("1003452")}}、{{bug("1003464")}})。詳しくは <a href="/ja/docs/Web/API/Web_Speech_API">Web Speech API</a> をご覧ください。</li>
+ <li>{{HTMLElement("frame")}} または {{HTMLElement('object')}} の内部にある要素は、フルスクリーン表示できないようになりました ({{bug(1212299)}})。</li>
+ <li>WOFF フォントのサニタイズ処理を、少々強化しました。誤りがあるフォントをより多く拒否するようになりましたが、Firefox 46 でやや緩和しました ({{bug(1193050)}} および {{bug (1244693)}})。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="AudioVideo" name="AudioVideo">Audio/Video</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="HTTP" name="HTTP">HTTP</h2>
+
+<ul>
+ <li><a href="https://en.wikipedia.org/wiki/Brotli">Brotli</a> アルゴリズムをサポートしました。また、<code><a href="/ja/docs/Web/HTTP/Content_negotiation#The_Accept-Encoding_header">Accept-Encoding</a></code> および <code><a href="/ja/docs/Web/HTTP/Headers/Content-Encoding">Content-Encoding</a></code> ヘッダで値 <code>br</code> をサポートしました ({{bug(366559)}} および {{bug(1211916)}})。</li>
+ <li>改行 (<code>'/n'</code>) を含む HTTP/2 ヘッダについて、HTTP/1 とは異なり仕様書で許可されていないため、誤ってサポートしていた箇所を削除しました ({{bug(1197847)}})。</li>
+</ul>
+
+<h2 id="Networking" name="Networking">ネットワーク</h2>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<ul>
+ <li>Beta および Release 版のブラウザでも、RC4 がデフォルトで無効になりました ({{bug(1201025)}})。また、ホワイトリストがデフォルトで空になりました ({{bug(1215796)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="Interfaces" name="Interfaces">インターフェイス</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="XUL" name="XUL">XUL</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript_code_modules" name="JavaScript_code_modules">JavaScript コードモジュール</h3>
+
+<ul>
+ <li>Sqlite.jsm で <code>LIKE</code> をサポートしました ({{bug(1188760)}})。</li>
+ <li><a href="/ja/docs/Mozilla/Firefox_for_Android" title="Mozilla/Firefox_for_Android">Android 版 Firefox</a> に <a href="/ja/docs/Mozilla/Add-ons/Firefox_for_Android/API/Snackbars.jsm">Snackbars.jsm</a> モジュールを追加しました ({{bug(1215026)}})。</li>
+</ul>
+
+<h3 id="XPCOM" name="XPCOM">XPCOM</h3>
+
+<ul>
+ <li>{{interface("nsIDOMWindow")}} インターフェイスが空になりました。存在していたアイテムは使用されない、他のインターフェイスに移転、あるいは C++ に限り使用するものになりました。C++ コードから利用できるアイテムは、<code>{{source("dom/base/nsPIDOMWindow.h", "nsPIDOMWindow")}}</code> インターフェイスに存在しています ({{bug(1216401)}})。</li>
+</ul>
+
+<h3 id="Other_2" name="Other_2">その他</h3>
+
+<ul>
+ <li>Firefox 44 での破壊的な変更 (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1202902">bug 1202902</a>) により、<a href="/ja/docs/Mozilla/Add-ons/SDK/Tools/cfx">cfx</a> でパックしたアドオンが動作しなくなります。再びアドオンが互換性を持つようにするために、<a href="/ja/docs/Mozilla/Add-ons/SDK/Tools/jpm">jpm</a> を使用してください。<em>cfx</em> から <em>jpm</em> に移行する手順は<a href="/ja/docs/Mozilla/Add-ons/SDK/Tools/cfx_to_jpm">こちらに記載しています</a>。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.jp/firefox/44.0/releasenotes/">Firefox 44.0 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/44/">Firefox 44 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2015/12/firefox-44-addon-compatibility/">Firefox 44 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers('43')}}</p>
diff --git a/files/ja/mozilla/firefox/releases/45/index.html b/files/ja/mozilla/firefox/releases/45/index.html
new file mode 100644
index 0000000000..1782d31c31
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/45/index.html
@@ -0,0 +1,184 @@
+---
+title: Firefox 45 for developers
+slug: Mozilla/Firefox/Releases/45
+tags:
+ - Firefox
+translation_of: Mozilla/Firefox/Releases/45
+---
+<p>Firefox 45 は、米国時間 2016 年 3 月 8 日にリリースされました。このページでは、開発者に影響する Firefox 45 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p>{{page('/ja/docs/Tools/Release_notes', 'Firefox_45')}}</p>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>Content Security Policy を {{HTMLElement("meta")}} 要素で直接設定できるようになりました ({{bug(663570)}})。</li>
+ <li>{{HTMLElement("img")}} 要素、{{HTMLElement("area")}} 要素、{{HTMLElement("a")}} 要素、{{HTMLElement("iframe")}} 要素の <code>referrer</code> 属性を、<code>referrerpolicy</code> に改名しました ({{bug(1187357)}})。</li>
+ <li>ビューポートの変化やリサイズにより、<code>&lt;img srcset&gt;</code> のレスポンシブ画像の再選択が発生するようになりました ({{bug(1166138)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("word-spacing")}} でパーセンテージをサポートしました ({{bug(1038663)}})。</li>
+ <li>CSS Grids の実装が向上し、実験的な状態ではないと判断しました。これらを Nightly および Developer Edition でデフォルトで有効にしましたが、Beta および Release では無効です ({{bug(1000592)}}):
+ <ul>
+ <li>Gutters ({{cssxref("grid-column-gap")}}、{{cssxref("grid-row-gap")}}、{{cssxref("grid-gap")}} プロパティ) を実装しました ({{bug(1176792)}})。</li>
+ <li>"Implied Minimum Size of Grid Items" ({{cssxref("min-width")}} や {{cssxref("min-height")}} の値 auto の特殊な動作) を実装しました ({{bug(1176775)}})。</li>
+ <li>グリッドレイアウトで {{cssxref("align-self")}} および {{cssxref("justify-self")}} をサポートしました ({{bug(1151213)}})。</li>
+ <li>グリッドレイアウトで {{cssxref("align-content")}} および {{cssxref("justify-content")}} をサポートしました ({{bug(1151214)}})。</li>
+ <li>grid-template-columns、grid-template-rows の resolved value の単位がピクセルになりました ({{bug(978212)}})。</li>
+ <li>Grid に関連する機能として、{{cssxref("display")}} : contents を <a href="/ja/docs/Mozilla/Firefox/Releases/37">Firefox 37</a> からサポートしています。</li>
+ </ul>
+ </li>
+ <li>CSS Grid 向けの CSS Box Alignment をフルサポートするため、欠落していた以下の値をサポートしました: <code>start</code>、<code>end</code>、<code>self-start</code>、<code>self-end</code>、<code>left</code>、<code>right</code>、<code>last-baseline</code>、<code>space-evenly</code> ({{bug(1176782)}})。現在、CSS Box Alignment は CSS Flexbox および CSS Grid にのみ適用します。</li>
+ <li>[css-grid][css-flexbox] &lt;fieldset&gt; のグリッドレイアウトおよびフレキシブルレイアウトを実装しました ({{bug(1230207)}})。</li>
+ <li>{{cssxref("float")}} および {{cssxref("clear")}} で、値 <code>inline-start</code> および <code>inline-end</code> をサポートしました ({{bug(1122918)}})。Nightly、Aurora (Dev edition)、Firefox OS では、デフォルトで有効です。Release および Beta で有効化するには設定項目 <code>layout.css.float-logical-values.enabled</code> を <code>true</code> に変更してください。</li>
+ <li>{{cssxref("text-emphasis")}}、{{cssxref("text-emphasis-style")}}、{{cssxref("text-emphasis-color")}}、{{cssxref("text-emphasis-position")}} を実装しました。デフォルトは無効です (有効化するには <code>layout.css.text-emphasis.enabled</code> を true に設定します) ({{bug(1040668)}})。</li>
+ <li>いくつかの <code>-webkit</code> 接頭辞付きプロパティおよび値を、ウェブ互換性のためにサポートしました。設定項目 <code>layout.css.prefixes.webkit</code> で制御しており、既定値は <code>false</code> です:
+ <ul>
+ <li>ウェブ互換性のため、{{cssxref("-webkit-backface-visibility")}}、{{cssxref("-webkit-perspective")}}、{{cssxref("-webkit-perspective-origin")}} を追加しました。設定項目 <code>layout.css.prefixes.webkit</code> で制御しており、既定値は <code>false</code> です ({{bug(1179444)}})。</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>ES2015 (ES6) の <a href="/ja/docs/Web/JavaScript/Reference/Classes">クラス</a> をデフォルトで有効にしました ({{bug(1197932)}})。</li>
+ <li>{{jsxref("Operators/Expression_closures", "式クロージャ", "", 1)}} が非推奨になり、コンソールに警告を表示するようになりました ({{bug(995610)}})。</li>
+ <li>{{jsxref("String.prototype.replace")}} は関数のパラメータを実行した後、{{jsxref("Global_Objects/RegExp/n", "RegExp の静的プロパティ", "", 1)}} に値を復元しないようになりました ({{bug(1226936)}})。</li>
+ <li>{{jsxref("Math.random()")}} を XorShift128+ アルゴリズムにアップグレードしました ({{bug(322529)}})。</li>
+</ul>
+
+<h3 id="InterfacesAPIsDOM" name="InterfacesAPIsDOM">インターフェイス/API/DOM</h3>
+
+<h4 id="DOM_HTML_DOM" name="DOM_HTML_DOM">DOM &amp; HTML DOM</h4>
+
+<ul>
+ <li>互換性のため、非標準プロパティ <code><a href="/ja/docs/Web/API/Node/innerText">Node.innerText</a></code> を実装しました ({{bug(264412)}})。</li>
+ <li>{{domxref("HTMLImageElement.srcset")}} がリサイズやビューポートの変化に反応しない問題を修正しました ({{bug(1166138)}})。</li>
+</ul>
+
+<h4 id="WebGL" name="WebGL">WebGL</h4>
+
+<p>WebGL2 の実装が進展しました:</p>
+
+<ul>
+ <li>Program や Shader をサポートしました ({{bug(1048743)}})。</li>
+ <li>Uniform や Attribute をサポートしました ({{bug(1048745)}})。</li>
+ <li>Framebuffer オブジェクトを実装しました ({{bug(1048732)}})。</li>
+ <li>Renderbuffer オブジェクトを実装しました ({{bug(1048733)}})。</li>
+</ul>
+
+<h4 id="IndexedDB" name="IndexedDB">IndexedDB</h4>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="Service_Workers" name="Service_Workers">Service Worker</h4>
+
+<ul>
+ <li>{{domxref("Clients.get()")}} および {{domxref("FetchEvent.clientId")}} を実装しました ({{bug(1222464)}})。</li>
+ <li>{{domxref("Clients.openWindow()")}} を実装しました ({{bug(1172870)}})。</li>
+ <li>{{domxref("Clients.matchAll()")}} を呼び出す際にパラメーターとして渡すことができる options オブジェクトに、<code>includeUncontrolled</code> プロパティを含めることが可能になりました。これは {{domxref("Boolean")}} です。<code>true</code> を設定するとマッチングにより、カレントの Service Worker と同じオリジンを共有するすべての Service Worker クライアントを返します。それ以外の場合は、カレントの Service Worker によって制御される Service Worker クライアントのみを返します。既定値は <code>false</code> です。</li>
+</ul>
+
+<h4 id="WebRTC" name="WebRTC">WebRTC</h4>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="Miscellaneous" name="Miscellaneous">その他</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Web_Speech_API">Web Speech Synthesis API</a> を、デスクトップ版 Firefox で実装しました ({{bug(1003439)}})。</li>
+ <li>{{domxref("Window.onstorage")}} イベントハンドラを追加しました。</li>
+ <li><a href="/ja/docs/Web/API/Web_Animations_API">Web Animations API</a> の実験的な実装で、{{domxref("ComputedTiming")}} インターフェイスを追加しました ({{bug(1108055)}})。</li>
+ <li>{{domxref("Document.onselectionchange")}} イベントハンドラーを追加しました ({{bug(1231193)}})。</li>
+ <li>{{domxref("MediaStream.removeTrack()")}} を呼び出してメディアストリームからビデオトラックを削除した後に、{{domxref("MediaStream.addTrack()")}} を使用して別のビデオトラックを追加して、再生することが可能になりました ({{bug(1223696)}})。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<ul>
+ <li>Moz2D のバックエンドが cairo であるときに、SVG stroke hit-testing でバグが多い問題を修正しました ({{bug(676001)}})。</li>
+ <li>transform / translate の値が大きい要素と対話できない問題を修正しました ({{bug(1217012)}})。</li>
+</ul>
+
+<h3 id="AudioVideo" name="AudioVideo">Audio/Video</h3>
+
+<ul>
+ <li>Firefox 41 のリグレッションである、継続時間の丸めエラーによりオーディオ再生で途切れが発生する問題を修正しました ({{bug(1222866)}}。</li>
+</ul>
+
+<h2 id="HTTP" name="HTTP">HTTP</h2>
+
+<ul>
+ <li>ウェブコンテンツにアクセスした際は、<code>jar:</code> プロトコルがデフォルトで無効になりました。<code>jar:</code> プロトコルを有効化したい場合は、設定項目 {{pref("network.jar.block-remote-files")}} を <code>false</code> に変更してください ({{bug(1215235)}})。</li>
+</ul>
+
+<h2 id="Networking" name="Networking">ネットワーク</h2>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/Security/CSP/CSP_policy_directives">CSP ポリシーディレクティブ</a> <code>child-src</code> を実装しました ({{bug(1045891)}})。</li>
+ <li>有効期間が 27 か月を超える EV 証明書は、DV 証明書として判断および取り扱われるようになりました ({{bug(1222903)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="Interfaces" name="Interfaces">インターフェイス</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="XUL" name="XUL">XUL</h3>
+
+<ul>
+ <li>タブグループを <a href="https://support.mozilla.org/kb/tab-groups-removal">削除しました</a>。</li>
+</ul>
+
+<h3 id="JavaScript_code_modules" name="JavaScript_code_modules">JavaScript コードモジュール</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="XPCOM" name="XPCOM">XPCOM</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Search_plugins" name="Search_plugins">検索プラグイン</h3>
+
+<ul>
+ <li>Firefox 45 より、ユーザープロファイルの <code>searchplugins</code> ディレクトリー内にある検索プラグインは起動時に自動的に読み込みません。代わりにユーザーがインストールしたプラグインの一覧が整備され、リスト内にあるプラグインのみ読み込みます。事実上、新たな検索プラグインをインストールする方法は、Firefox の UX でユーザーがインストールする (例えば <a href="/ja/docs/Mozilla/Add-ons/Creating_OpenSearch_plugins_for_Firefox">OpenSearch による検出</a>) か、アドオンによるインストールに限られます。また新しいプラグインをインストールしたとき、プロファイルのデバッグやクリーニングツールで将来使用するために、プラグインのインストール元に関する付加情報を記録します。</li>
+</ul>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<ul>
+ <li>chrome コンテキストでは、WebIDL コンストラクターを <a href="/ja/docs/Web/JavaScript/Reference/Operators/new"><code>new</code></a> 演算子なしで呼び出せます。Firefox 30 より、ウェブコンテンツではそのようなコードで <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/TypeError"><code>TypeError</code></a> が発生します。例えば <code>var req = XMLHttpRequest();</code> は <code>var req = new XMLHttpRequest();</code> としなければなりません。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.jp/firefox/45.0/releasenotes/">Firefox 45.0 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/45/">Firefox 45 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2016/02/firefox-45-addon-compatibility/">Firefox 45 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(44)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/46/index.html b/files/ja/mozilla/firefox/releases/46/index.html
new file mode 100644
index 0000000000..c021deba76
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/46/index.html
@@ -0,0 +1,180 @@
+---
+title: Firefox 46 for developers
+slug: Mozilla/Firefox/Releases/46
+tags:
+ - Firefox
+translation_of: Mozilla/Firefox/Releases/46
+---
+<p>Firefox 46 は、米国時間 2016 年 4 月 26 日にリリースされました。このページでは、開発者に影響する Firefox 46 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p>{{page('/ja/docs/Tools/Release_notes', 'Firefox_46')}}</p>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("ul")}} で <code>type</code> の値が無効であるときは <code>decimal</code> を割り付けず、<code>type</code> の値が指定されていないとみなすようになりました ({{bug(241719)}})。</li>
+ <li>{{HTMLElement("input")}} の <code>pattern</code> 属性は、<code>"u"</code> (unicode) フラグを付与した{{jsxref("RegExp", "正規表現", "", 1)}}として扱うようになりました ({{bug(1227906)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>CSS Grids の実装を更新しました:
+ <ul>
+ <li>キーワード <code>auto-fill</code> および <code>auto-fit</code> を、<code>repeat()</code> 関数内で使用できるようになりました ({{bug(1118820)}})。</li>
+ <li>値 <code>true</code> を <code>unsafe</code> に改名しました。これは {{cssxref("justify-content")}}、{{cssxref("align-content")}}、{{cssxref("justify-self")}}、{{cssxref("align-self")}}、{{cssxref("justify-items")}}、{{cssxref("align-items")}} の各プロパティに影響します ({{bug(1230478)}})。</li>
+ </ul>
+ </li>
+ <li>{{cssxref("text-emphasis")}}、{{cssxref("text-emphasis-style")}}、{{cssxref("text-emphasis-color")}}、{{cssxref("text-emphasis-position")}} の各プロパティを、デフォルトで有効にしました ({{bug(1231485)}})。</li>
+ <li>Gecko が、<code>-webkit-</code> 接頭辞を付加した <a href="https://wiki.mozilla.org/Compatibility/Mobile/Non_Standard_Compatibility">数種類のプロパティ</a> を受け入れるようになりました。ただし <code>layout.css.prefixes.webkit</code> を <code>true</code> に切り替えなければなりません ({{bug(1213126)}})。</li>
+ <li>({{cssxref("@font")}} の) {{cssxref("@font/font-display", "font-display")}} ディスクリプターを実験的に実装しました。使用するには <code>layout.css.font-display.enabled</code> を <code>true</code> に切り替えなければなりません ({{bug(1157064)}})。</li>
+ <li>3D Transform のサポートを表すメディアクエリーとして <a href="/ja/docs/Web/CSS/@media/-webkit-transform-3d"><code>@media (-webkit-transform-3d)</code></a> をサポートしました。ただし about:config の設定 <code>layout.css.prefixes.webkit</code> を <code>true</code> に切り替えなければなりません ({{bug(1239799)}})。</li>
+ <li>{{cssxref("linear-gradient()")}} で、<code>0deg</code> の単位を省略した表記をサポートしました ({{bug(1239153)}})。</li>
+ <li>ウェブ互換性のため、{{cssxref("-webkit-filter")}} を追加しました。設定項目 <code>layout.css.prefixes.webkit</code> で制御しており、既定値は <code>false</code> です ({{bug(1236506)}})。</li>
+ <li>[css-align] "unsafe start" (以前は "true start") を "start" などにシリアライズするようになりました ({{bug(1230398)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>ES2015 (ES6) の、{{jsxref("RegExp.prototype.unicode", "RegExp の unicode (u) フラグ", "", 1)}}を実装しました ({{bug(1135377)}})。</li>
+ <li>ES2015 (ES6) のブロックレベル関数を実装しました ({{bug(1071646)}})。</li>
+ <li>ES2015 (ES6) の {{jsxref("TypedArray.prototype.sort()")}} メソッドを実装しました ({{bug(1121937)}})。</li>
+ <li>ES2015 (ES6) の {{jsxref("Functions/arguments/@@iterator", "arguments[@@iterator]")}} を実装しました ({{bug(1067049)}})。</li>
+ <li><a href="http://tc39.github.io/ecmascript_sharedmem/shmem.html">EcmaScript Shared Memory API</a> を実験的に実装しました。{{jsxref("SharedArrayBuffer")}} および {{jsxref("Atomics")}} オブジェクトをご覧ください。この実験的な API を使用するには、about:config で <code>javascript.options.shared_memory</code> に <code>true</code> を設定します。</li>
+ <li>ECMAScript 仕様に従い、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/let">let</a></code> および <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/const">const</a></code> によって変数を再宣言すると {{jsxref("TypeError")}} ではなく {{jsxref("SyntaxError")}} が発生するようになりました ({{bug(1198833)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Strict_mode">Strict モード</a> において、{{Glossary("primitive", "プリミティブ")}}値にプロパティを設定すると {{jsxref("TypeError")}} が発生するようになりました ({{bug(603201)}})。</li>
+ <li>非標準の {{jsxref("WeakMap.prototype.clear()")}} および {{jsxref("WeakSet.prototype.clear()")}} メソッドを削除しました ({{bug(1101817)}})。</li>
+ <li>非標準の <code>RegExp.multiline</code> プロパティが非推奨になりました ({{bug(1220457)}})。</li>
+ <li>組み込みアクセサー関数の名称に "get" または "set" 接頭辞を付加しました ({{bug(1180290)}}、{{bug(1235656)}})。</li>
+ <li>{{jsxref("Operators/Array_comprehensions", "JS1.7/JS1.8 (旧式) の配列内包", "#Differences_to_the_older_JS1.7JS1.8_comprehensions", 1)}} および {{jsxref("Operators/Generator_comprehensions", "JS1.7/JS1.8 (旧式) のジェネレーター内包", "#Differences_to_the_older_JS1.7JS1.8_comprehensions", 1)}} を削除しました ({{bug(1220564)}})。</li>
+</ul>
+
+<h3 id="InterfacesAPIsDOM" name="InterfacesAPIsDOM">インターフェイス/API/DOM</h3>
+
+<h4 id="DOM_HTML_DOM" name="DOM_HTML_DOM">DOM &amp; HTML DOM</h4>
+
+<ul>
+ <li>非推奨の {{domxref("Window.showModalDialog()")}} メソッドが、マルチプロセスモード (e10s) の Firefox で使用できなくなりました ({{bug(1234700)}})。</li>
+ <li>{{domxref("Document.elementsFromPoint")}} をサポートしました ({{bug(1164427)}})。</li>
+ <li>{{HTMLElement("select")}} 要素に存在しない option をプログラムで選択したときに誤って何も変更しないままにしていましたが、{{htmlattrxref("selectedIndex", "select")}} の値を <code>-1</code> に、{{htmlattrxref("selectedOptions", "select")}} を空の {{domxref("HTMLCollection")}} に、そして {{htmlattrxref("value", "select")}} を空文字列に変更するようになりました ({{bug(1203668)}})。</li>
+</ul>
+
+<h4 id="Canvas" name="Canvas">Canvas</h4>
+
+<ul>
+ <li>実験的な {{domxref("OffscreenCanvas")}} API で未実装であった部分を実装しました。新機能: {{domxref("OffscreenCanvas.OffscreenCanvas", "OffscreenCanvas()")}} コンストラクター、{{domxref("OffscreenCanvas.toBlob()")}}、{{domxref("OffscreenCanvas.transferToImageBitmap()")}}。これらの実験的な API を使用するには、about:config で <code>gfx.offscreencanvas.enabled</code> を <code>true</code> に設定します ({{bug(1172796)}})。</li>
+ <li>{{domxref("ImageBitmap.close()")}} メソッドをサポートしました ({{bug(1172796)}})。</li>
+ <li>新たなレンダリングコンテキスト {{domxref("ImageBitmapRenderingContext")}} を実装しました。このコンテキストを得るには、{{domxref("OffscreenCanvas.getContext()")}} または {{domxref("HTMLCanvasElement.getContext()")}} で <code>"bitmaprenderer"</code> を指定します ({{bug(1172796)}})。</li>
+</ul>
+
+<h4 id="WebGL" name="WebGL">WebGL</h4>
+
+<ul>
+ <li>{{domxref("WEBGL_compressed_texture_es3")}} 拡張を実装しました。<a href="https://en.wikipedia.org/wiki/Ericsson_Texture_Compression">ETC2 テクスチャ圧縮方式</a> を使用できます ({{bug(917505)}})。この拡張を使用するには、about:config で <code>webgl.enable-draft-extensions</code> を <code>true</code> に設定してください。</li>
+</ul>
+
+<h4 id="IndexedDB" name="IndexedDB">IndexedDB</h4>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="Service_Workers" name="Service_Workers">Service Worker</h4>
+
+<ul>
+ <li>{{domxref("FetchEvent.request")}} を、null にしてはいけないようにしました ({{bug("1238213")}})。</li>
+ <li>{{domxref("Navigator.serviceWorker")}} を SameObject としてマークしました ({{bug("1238205")}})。</li>
+ <li>{{domxref("ExtendableMessageEvent.ports")}} を SameObject としてマークしました ({{bug("1238225")}})。</li>
+</ul>
+
+<h4 id="Fetch" name="Fetch">Fetch</h4>
+
+<ul>
+ <li>{{domxref("Request.mode")}} で、新しい値 <code>navigate</code> が使用可能になりました。ドキュメント間のナビゲート中のリクエスト生成をサポートします ({{bug("1209081")}})。</li>
+</ul>
+
+<h4 id="WebRTC" name="WebRTC">WebRTC</h4>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li>SVG で、{{domxref("SVGStyleElement")}} インターフェイスに {{domxref("LinkStyle")}} を実装しました ({{bug(1239128)}})。</li>
+</ul>
+
+<h4 id="Miscellaneous" name="Miscellaneous">その他</h4>
+
+<ul>
+ <li>非同期の {{domxref("FileReader")}} を、Web workers で使用できるようになりました ({{bug(901097)}})。</li>
+ <li><a href="/ja/docs/Web/API/Web_Animations_API">Web Animations API</a> の実験的な実装を更新しました:
+ <ul>
+ <li>{{domxref("AnimationEffectTimingReadOnly")}} および {{domxref("AnimationEffectReadOnly.timing")}} を実装しました ({{bug(1214536)}})。</li>
+ </ul>
+ </li>
+ <li><a href="/ja/docs/Web/API/Permissions_API">Permissions API</a> が、Nightly だけでなくすべてのリリース版で、デフォルトで有効になりました ({{bug(1221106)}})。</li>
+ <li>WOFF フォントのサニタイズ処理を、少々緩和しました ({{bug (1244693)}})。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="AudioVideo" name="AudioVideo">Audio/Video</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="HTTP" name="HTTP">HTTP</h2>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Networking" name="Networking">ネットワーク</h2>
+
+<ul>
+ <li>{{rfc(7686)}} をサポートしました。デフォルトでは、TLD が <code>.onion</code> であるドメインの名前解決を試みません。これは設定項目 <code>network.dns.blockDotOnion</code> で制御します。Tor をサポートするアドオンは、この設定を変更できます ({{bug(1228457)}})。</li>
+</ul>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="Interfaces" name="Interfaces">インターフェイス</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="XUL" name="XUL">XUL</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript_code_modules" name="JavaScript_code_modules">JavaScript コードモジュール</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="XPCOM" name="XPCOM">XPCOM</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.jp/firefox/46.0/releasenotes/">Firefox 46.0 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/46/">Firefox 46 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2016/02/firefox-46-addon-compatibility/">Firefox 46 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(45)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/47/index.html b/files/ja/mozilla/firefox/releases/47/index.html
new file mode 100644
index 0000000000..40e4b38b5d
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/47/index.html
@@ -0,0 +1,176 @@
+---
+title: Firefox 47 for developers
+slug: Mozilla/Firefox/Releases/47
+tags:
+ - Firefox
+ - Release Notes
+translation_of: Mozilla/Firefox/Releases/47
+---
+<p>Firefox 47 は、米国時間 2016 年 6 月 7 日にリリースされました。このページでは、開発者に影響する Firefox 47 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Responsive_Design_Mode">レスポンシブデザインモード</a> で <a href="/ja/docs/Browser_detection_using_the_user_agent">ユーザーエージェントをスプーフィング</a> する</li>
+ <li>メモリーツールの <a href="/ja/docs/Tools/Memory/Dominators_view#Retaining_Paths_panel">Retaining paths パネル</a></li>
+ <li><a href="/ja/docs/Web/API/ServiceWorker">Service Worker</a> と <a href="/ja/docs/Web/API/Push_API">Push API</a> のデバッグ
+ <ul>
+ <li>Worker 用の <a href="/ja/docs/Tools/about:debugging">about:debugging</a> ダッシュボード</li>
+ <li>キャッシュされたリクエストを <a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a> で表示</li>
+ <li><a href="/ja/docs/Web/API/Cache">キャッシュストレージ</a> を <a href="/ja/docs/Tools/Storage_Inspector">ストレージインスペクター</a> でサポート</li>
+ </ul>
+ </li>
+ <li><a href="/ja/docs/Tools/Storage_Inspector">ストレージインスペクター</a> で項目をフィルターする機能</li>
+ <li><a href="/ja/docs/Tools/Web_Console">コンソール</a> が不完全なコマンド入力を検出して、自動的に複数行モードに切り替える</li>
+ <li><a href="/ja/docs/Tools/Debugger">デバッガー</a> でブレークポイントのスタイルを更新</li>
+ <li>ブラウザーやアドオンのデバッグを支援するため、<a href="/ja/docs/Tools/Browser_Toolbox">ブラウザーツールボックス</a> の使用中はパネルを自動的に閉じないようにする</li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/UI_Tour#Fonts_view">フォントインスペクター</a> をデフォルトで無効化 ({{bug(1247723)}})</li>
+ <li><a href="/ja/docs/Tools/3D_View">3D ビュー</a> を削除</li>
+ <li>開発ツールのテーマを更新</li>
+ <li>フォントパネルを無効化 ({{bug(1247723)}})</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("::backdrop")}} 疑似要素をサポートしました ({{bug(1064843)}})。</li>
+ <li><a href="/ja/docs/Web/CSS/Attribute_selectors">属性セレクター</a> で大文字・小文字を区別しないことを示す修飾子 <code>i</code> (例: <code>[foo=bar i]</code>) を実装しました ({{bug(888190)}})。</li>
+ <li>CSS Mask Image プロパティを実験的に実装しました。現在は Nightly 版の Firefox のみで使用できます。{{cssxref("mask-repeat")}}、{{cssxref("mask-position")}}、{{cssxref("mask-size")}}、およびショートハンドの {{cssxref("mask")}} を使用できます ({{bug(686281)}})。</li>
+ <li>HTML 要素において、{{cssxref("clip-path")}} プロパティで <code>polygon()</code>, <code>ellipse()</code>, <code>circle()</code> を実験的にサポートしました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1246762">inset()</a> および <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1246764">path()</a> はサポートしていません)。設定項目 <code>layout.css.clip-path-shapes.enabled</code> で制御しており、既定値は <code>false</code> です ({{bug(1075457)}})。値の変更は (従ってアニメーションも) 未サポートです。</li>
+ <li>CSS Grid の実験的な実装を更新しました:
+ <ul>
+ <li>グリッドコンテナーで、{{cssxref("align-content")}}<code>: normal</code> は <code>stretch</code> と同じ動作になりました ({{bug(1237754)}})。</li>
+ <li>{{cssxref('grid')}}、{{cssxref('grid-template')}}、{{cssxref('grid-gap')}} プロパティで、列と行の値の順序を入れ替えました ({{bug(1251999)}})。</li>
+ </ul>
+ </li>
+ <li>{{cssxref("@media/display-mode", "display-mode")}} メディア特性をサポートしました ({{bug("1104916")}})。</li>
+ <li>{{cssxref("text-align")}} および {{cssxref("text-align-last")}} の値 <code>true</code> を、<code>unsafe</code> に改名しました ({{bug("1250342")}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>ES2017 の {{jsxref("Object.values()")}} および {{jsxref("Object.entries()")}} メソッドを実装しました ({{bug(1232639)}})。</li>
+ <li>非推奨の <a href="/ja/docs/Archive/Web/Old_Proxy_API">古い Proxy API</a> (<code>Proxy.create</code> および <code>Proxy.createFunction</code>) は、コンソールで警告を表示するようになりました。また、将来のバージョンで削除する予定です。代わりに標準の {{jsxref("Proxy")}} オブジェクトを使用してください ({{bug(892903)}})。</li>
+ <li>非推奨かつ非標準である、<code>String.prototype.</code>{{jsxref("String.prototype.match", "match")}}/{{jsxref("String.prototype.search", "search")}}/{{jsxref("String.prototype.replace", "replace")}} の <code>flags</code> 引数をリリース版以外の以外のビルドで廃止しました ({{bug(1245801)}})。</li>
+ <li>新たな ES2016 仕様に従い、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...in">for...in</a></code> 用の {{jsxref("Proxy")}} <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/enumerate">enumerate</a> トラップを削除しました ({{bug(1246318)}})。</li>
+ <li>ECMAScript 仕様に従い、{{jsxref("Array.prototype.indexOf()")}} および {{jsxref("Array.prototype.lastIndexOf()")}} メソッド (および {{jsxref("TypedArray")}} の同等メソッド) を、<code>-0</code> を返さないように更新しました ({{bug(1242043)}})。</li>
+</ul>
+
+<h3 id="InterfacesAPIsDOM" name="InterfacesAPIsDOM">インターフェイス/API/DOM</h3>
+
+<h4 id="DOM_HTML_DOM" name="DOM_HTML_DOM">DOM &amp; HTML DOM</h4>
+
+<ul>
+ <li>{{domxref("Document.scrollingElement")}} プロパティを実装しました。設定項目 <code>dom.document.scrollingElement.enabled</code> で制御しており、既定値は <code>false</code> です ({{bug(1153322)}})。</li>
+</ul>
+
+<h4 id="WebGL" name="WebGL">WebGL</h4>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="IndexedDB" name="IndexedDB">IndexedDB</h4>
+
+<ul>
+ <li>{{domxref("IDBKeyRange.includes()")}} メソッドを実装しました ({{bug("1251498")}})。</li>
+</ul>
+
+<h4 id="Service_Worker_and_related_APIs" name="Service_Worker_and_related_APIs">Service Worker と関連 API</h4>
+
+<ul>
+ <li>{{domxref("Request.Request()")}} コンストラクターで、init オプションとして referrer を受け入れるようになりました ({{bug(1251448)}})。</li>
+ <li>{{domxref("Request.referrerPolicy")}} プロパティをサポートしました ({{bug(1251872)}})。</li>
+ <li><a href="/ja/docs/Web/API/Service_Worker_API">Service workers</a> および <a href="/ja/docs/Web/API/Push_API">Push</a> を、<a class="external external-icon" href="https://www.mozilla.org/ja/firefox/organizations/">Firefox 45 Extended Support Release</a> (ESR) で無効にしました ({{bug(1232029)}})。</li>
+</ul>
+
+<h4 id="WebRTC" name="WebRTC">WebRTC</h4>
+
+<ul>
+ <li>{{domxref("RTCIceServer")}} 辞書のサポートを、{{domxref("RTCIceServer.credentialType", "credentialType")}} プロパティをサポートすることにより WebRTC 1.0 仕様に合わせて更新しました。このプロパティは、クレデンシャルがパスワードかトークンかを指定する文字列です。現在、Firefox は <code>"password"</code> のみサポートしています。</li>
+</ul>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="Others" name="Others">その他</h4>
+
+<ul>
+ <li>{{domxref("Cache.add()")}} および {{domxref("Cache.addAll()")}} で、レスポンスステータスが <code>200</code> 番台ではない場合に <code>TypeError</code> 例外が発生するようになりました ({{bug(1244764)}})。</li>
+ <li><a href="/ja/docs/Mozilla/Firefox_OS/API/App_installation_and_management_APIs">アプリのインストールと管理の API</a> (<code>navigator.mozApps.*</code>) を、Firefox OS 以外のプラットフォームでは公開しないようになりました ({{bug("1238576")}})。</li>
+ <li><a href="/ja/docs/Web/API/Web_Crypto_API">Web Crypto API</a> のメソッドで、RSA-PSS 暗号化アルゴリズムが使用可能になりました ({{bug (1191936)}})。</li>
+ <li><a href="/ja/docs/Web/API/Permissions_API">Permissions API</a> の {{domxref("Permissions.revoke()")}} メソッドを追加しました ({{bug("1197461")}})。</li>
+ <li>HTML を使用してウェブコンテンツを表示するフレームを作成できるようにするため {{htmlelement("iframe")}} の機能を拡張する、<a href="/ja/docs/Web/API/Browser_API">Browser API</a> (以前は Firefox OS のみサポートしていました) が、デスクトップ版の chrome コードでも使用可能になりました ({{bug(1238160)}})。</li>
+ <li><a href="/ja/docs/Web/API/notification">Notification API</a> の {{domxref("Notification.requestPermission()","requestPermission()")}} メソッドを、コールバックベースの構文から Promise ベースの構文に更新しました ({{bug(1241278)}})。</li>
+ <li><a href="/ja/docs/Web/API/Fullscreen_API">Fullscreen API</a> を最新の仕様に合わせて更新して、接頭辞を削除しました。一部のメソッドは改名および大文字・小文字を変更しました ({{bug(743198)}})。これは設定項目 <code>full-screen-api.unprefix.enabled</code> で制御されており、デフォルトで無効化していることに注意してください ({{bug(1268749)}})。</li>
+</ul>
+
+<h3 id="AudioVideo" name="AudioVideo">Audio/Video</h3>
+
+<ul>
+ <li>u-law 圧縮の WAV ファイルが再生可能になりました ({{bug(851530)}})。</li>
+ <li>Google Inc. が提供する <a href="https://www.widevine.com/">Widevine</a> Content Decryption Module が、Windows Vista 以降および Mac OS X で MP4との組み合わせにより <a href="/ja/docs/Web/API/Encrypted_Media_Extensions_API">Encrypted Media Extensions API</a> で使用可能になりました (MP4 限定。EME と WebM のサポートについては {{bug(1257716)}} をご覧ください)。Silverlight から移行することができます ({{bug(1265270)}})。</li>
+</ul>
+
+<h2 id="HTTP" name="HTTP">HTTP</h2>
+
+<ul>
+ <li>{{HTTPHeader("Accept")}} ヘッダーの、画像用の既定値を <code>image/png,image/*;q=0.8,*/*;q=0.5</code> から <code>*/*</code> に変更しました ({{bug(1249474)}})。</li>
+</ul>
+
+<h2 id="Networking" name="Networking">ネットワーク</h2>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<ul>
+ <li><code>view-source:</code> プロトコルの URL をウェブページから使用したときに、<a href="/ja/docs/Tools/View_source">ソース表示</a> ツールを開かないようになりました ({{bug(1172165)}})。</li>
+ <li>Firefox の <a href="https://blog.mozilla.org/futurereleases/2013/09/24/plugin-activation-in-firefox/">click-to-activate プラグインのホワイトリスト</a> を削除しました。アクティブにするためクリックする必要がないプラグインは、Flash だけです。 ({{bug(1263630)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="Interfaces" name="Interfaces">インターフェイス</h3>
+
+<ul>
+ <li>アドオン向けに、JavaScript で CSS トークナイザーが使用可能になりました ({{bug(1152033)}})。</li>
+</ul>
+
+<h3 id="FUEL" name="FUEL">FUEL</h3>
+
+<p>Firefox 3 で導入された <a href="/ja/docs/Mozilla/Tech/Toolkit_API/FUEL">FUEL</a> JavaScript ライブラリーを<strong>削除しました</strong>。このライブラリーはアドオンの開発を支援するように設計されましたが、<a href="/ja/docs/Mozilla/Add-ons/SDK">Add-on SDK</a> の導入や <a href="/ja/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a> のサポートにより、役に立つものではなくなりました ({{bug(1090880)}})。</p>
+
+<h3 id="XUL" name="XUL">XUL</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript_code_modules" name="JavaScript_code_modules">JavaScript コードモジュール</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="XPCOM" name="XPCOM">XPCOM</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.jp/firefox/47.0/releasenotes/">Firefox 47 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/47/">Firefox 47 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2016/04/firefox-47-addon-compatibility/">Firefox 47 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(46)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/48/index.html b/files/ja/mozilla/firefox/releases/48/index.html
new file mode 100644
index 0000000000..aa0a6f97c8
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/48/index.html
@@ -0,0 +1,170 @@
+---
+title: Firefox 48 for developers
+slug: Mozilla/Firefox/Releases/48
+tags:
+ - Firefox
+ - Release Notes
+translation_of: Mozilla/Firefox/Releases/48
+---
+<p>Firefox 48 は、米国時間 2016 年 8 月 2 日にリリースされました。このページでは、開発者に影響する Firefox 48 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>コンテンツ内で要素の位置を変更できるようになりました ({{bug(1139187)}})。</li>
+ <li>コンソールの出力を消去するための {{domxref("console.clear()")}} を実装しました ({{bug(659625)}})。</li>
+ <li>Web コンソールに <a href="/ja/docs/Tools/Web_Console/Console_messages#Viewing_network_request_details">HTTP ログの調査機能</a> を追加しました ({{bug(1211525)}})。</li>
+ <li><a href="/ja/docs/Tools/Tools_Toolbox#Choose_DevTools_theme">Firebug のテーマ</a> を追加しました ({{bug(1244054)}})。</li>
+ <li><a href="/ja/docs/Tools/DOM_Property_Viewer">DOM 調査ツール</a> を追加しました ({{bug(1201475)}})。</li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/UI_Tour#Fonts_view">フォントインスペクター</a> を、再びデフォルトで有効にしました ({{bug(1280121)}})。</li>
+ <li>CSS プロパティの <a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Edit_rules">補完機能を改良しました</a> ({{bug(1168246)}})。</li>
+ <li>Cookie、ローカルストレージ、セッションストレージの項目を、ダブルクリックして編集できます ({{bug(1231154)}}、{{bug(1231179)}}、{{bug(1231155)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("details")}} および {{HTMLElement("summary")}} 要素を、Nightly および Aurora (DevTools) でデフォルトで有効にしました。Beta および Release では無効です:
+ <ul>
+ <li>これらの要素のデフォルトのスタイルが、仕様書に合致するようになりました ({{bug(1258657)}})。</li>
+ <li>{{HTMLElement("details")}} 要素を開いたり閉じたりしたときに、{{event("toggle")}} イベントを送るようになりました ({{bug(1225412)}})。</li>
+ </ul>
+ </li>
+ <li>{{htmlattrxref("referrer", "meta")}} 属性で、値 <code>no-referrer-when-downgrade</code> および <code>origin-when-cross-origin</code> をサポートしました ({{bug(1178337)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>仕様書に準拠するよう、{{cssxref("calc()")}} を改良しました:
+ <ul>
+ <li>{{cssxref("line-height")}} プロパティで {{cssxref("calc()")}} をサポートしました ({{bug(594933)}})。</li>
+ <li>CSS {{cssxref("calc()")}} の入れ子をサポートしました ({{bug(968761)}})。</li>
+ </ul>
+ </li>
+ <li>CSS Grids の実験的な実装を更新しました:
+ <ul>
+ <li>Grid レイアウトでフラグメンテーションを実装しました ({{bug(1144096)}})。</li>
+ <li>[css-grid] グリッドコンテナーのサイズが不定である場合は、パーセンテージ指定されたトラックのサイズを <code>auto</code> として扱うようになりました ({{bug(1264607)}})。</li>
+ <li>{{HTMLElement("fieldset")}} で grid および flex レイアウトをサポートしました ({{bug(1230207)}})。</li>
+ </ul>
+ </li>
+ <li>{{cssxref("mask-mode")}} で値 <code>luminance</code> をサポートしました。また、仕様書に合わせて値 <code>auto</code> を <code>match-source</code> に改名しました ({{bug(1228354)}})。</li>
+ <li>CSS Animation および CSS Transition で、clip-path の basic shape の補間処理をサポートしました ({{bug(1110460)}})。</li>
+ <li>{{cssxref("text-combine-upright")}} プロパティの値 <code>all</code> で縦中横 (<em>horizontal-in-vertical</em>) テキストをサポートしました ({{bug(1097499)}}).</li>
+ <li>画像や背景の印刷をページから許可できるようにするための {{cssxref("color-adjust")}} プロパティを実験的にサポートしました ({{bug(1209273)}})。</li>
+ <li>{{cssxref("::first-letter")}} 疑似要素が、実際の先頭文字の前または直後にあるタイプ Pd の句読点にもマッチするようになりました。これは CSS Pseudo-element module level 4 の新たな要求です ({{bug(1260366)}})。</li>
+ <li>いくつかの <code>-webkit</code> 接頭辞付きプロパティおよび値を、web 互換性のためにサポートしました。設定項目 <code>layout.css.prefixes.webkit</code> で制御しており、既定値は <code>false</code> です:
+ <ul>
+ <li>{{cssxref("-webkit-text-fill-color")}} ({{bug(1247777)}})</li>
+ <li>{{cssxref("-webkit-text-stroke")}}, {{cssxref("-webkit-text-stroke-color")}}, {{cssxref("-webkit-text-stroke-width")}} ({{bug(1248708)}})</li>
+ <li>{{cssxref("-webkit-background-clip")}} (background-clip として) の値 text ({{bug(759568)}}).</li>
+ <li>{{cssxref("-webkit-box-direction")}}, {{cssxref("-webkit-box-orient")}} ({{bug(1262049)}}.</li>
+ <li>{{cssxref("display")}} プロパティの値 <code>-webkit-inline-box</code> を、<code>inline-flex</code> の別名としてサポートしました ({{bug(1257661)}})。</li>
+ <li>{{cssxref("-webkit-flex-direction")}}、{{cssxref("-webkit-flex-wrap")}}、{{cssxref("-webkit-flex-flow")}}、{{cssxref("-webkit-order")}}、{{cssxref("-webkit-flex")}}、{{cssxref("-webkit-flex-grow")}}、{{cssxref("-webkit-flex-shrink")}}、{{cssxref("-webkit-flex-basis")}}、{{cssxref("-webkit-justify-content")}}、{{cssxref("-webkit-align-items")}}、{{cssxref("-webkit-align-self")}}、{{cssxref("-webkit-align-content")}} を接頭辞なしプロパティの別名として、また {{cssxref("display")}} プロパティの値 <code>-webkit-flex</code> および <code>-webkit-inline-flex</code> を接頭辞なし値の別名として追加しました ({{bug(1274096)}})。</li>
+ <li>{{cssxref("-webkit-box-flex")}}、{{cssxref("-webkit-box-ordinal-group")}}、{{cssxref("-webkit-box-align")}}、{{cssxref("-webkit-box-pack")}} プロパティおよび {{cssxref("display")}} プロパティの値 <code>-webkit-box</code> を、最新の <a href="/ja/docs/Web/CSS/CSS_Flexible_Box_Layout/Using_flexbox_to_lay_out_web_applications">CSS Flexbox</a> の別名として追加しました ({{bug(1208635)}})。</li>
+ </ul>
+ </li>
+ <li>{{cssxref("background-clip")}} の値 <code>text</code> が、(Release 以外のビルドだけでなく) すべてのタイプの Firefox で使用可能になりました ({{bug(1263516)}})。</li>
+ <li>{{cssxref("position")}} プロパティの値 <code>absolute</code> を、最上位レイヤーの要素でサポートしました ({{bug(1236828)}})。</li>
+ <li>設定を検出するため、{{domxref("@supports")}} の内部利用限定の構文をサポートしました ({{bug(1259889)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li>{{jsxref("String.prototype.padStart()")}} および {{jsxref("String.prototype.padEnd()")}} メソッドを実装しました ({{bug(1260509)}})。</li>
+ <li>ES2015 (ES6) の {{jsxref("Symbol.unscopables")}} および {{jsxref("Array.@@unscopables", "Array.prototype[@@unscopables]")}} プロパティを実装しました ({{bug(1054759)}} および {{bug(1258163)}})。</li>
+ <li>ES2015 (ES6) の {{jsxref("Symbol.isConcatSpreadable")}} シンボルを実装しました ({{bug(1041586)}})。</li>
+ <li>ES2015 (ES6) の {{jsxref("Array.@@species", "Array[@@species]")}} getter を実装しました ({{bug(1165052)}})。</li>
+ <li>ES2015 (ES6) の {{jsxref("ArrayBuffer.@@species", "ArrayBuffer[@@species]")}} getter および {{jsxref("TypedArray.@@species", "%TypedArray%[@@species]")}} getter を実装しました ({{bug(1165053)}})。</li>
+ <li>ECMAScript Internationalization API 草案の {{jsxref("Intl.getCanonicalLocales()")}} メソッドを実装しました ({{bug(1263040)}})。</li>
+</ul>
+
+<h4 id="Deprecations_and_removals" name="Deprecations_and_removals">非推奨化および削除</h4>
+
+<ul>
+ <li>非推奨の <a href="/ja/docs/Archive/Web/Old_Proxy_API">古い Proxy API</a> (<code>Proxy.create</code> および <code>Proxy.createFunction()</code>) を廃止しました。代わりに標準の {{jsxref("Proxy")}} オブジェクトを使用してください ({{bug(892903)}})。</li>
+ <li><code>String.prototype.contains()</code> メソッドを削除しました (バージョン 40 より非推奨でした)。代わりに {{jsxref("String.prototype.includes()")}} メソッドを使用してください ({{bug(1103588)}})。</li>
+ <li>非標準の <code>RegExp.multiline</code> プロパティ ({{jsxref("RegExp.prototype.multiline")}} ではありません) を削除しました。代わりに標準の <a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions#Advanced_searching_with_flags">m フラグ</a> を使用してください ({{bug(1219757)}})。</li>
+ <li>{{jsxref("Object.__defineGetter__", "__defineGetter__")}} および {{jsxref("Object.__defineSetter__", "__defineSetter__")}} メソッドは、オブジェクトを伴わないグローバルスコープでは呼び出すことができなくなりました ({{bug(1253016)}})。</li>
+</ul>
+
+<h3 id="InterfacesAPIsDOM" name="InterfacesAPIsDOM">インターフェイス/API/DOM</h3>
+
+<h4 id="DOM_HTML_DOM" name="DOM_HTML_DOM">DOM &amp; HTML DOM</h4>
+
+<ul>
+ <li>{{domxref("CSSKeyframeRule")}} および {{domxref("CSSKeyframesRule")}} インターフェイスから "Moz" 接頭辞を削除しました ({{bug(1256178)}})。</li>
+ <li>{{domxref("NavigatorConcurrentHardware")}} {{Glossary("mixin")}} を実装しました。これは、{{domxref("Navigator")}} インターフェイスに {{domxref("NavigatorConcurrentHardware.hardwareConcurrency", "window.navigator.hardwareConcurrency")}} プロパティを追加します。このプロパティにより、{{domxref("Worker")}} を実行できるプロセッシングコアがいくつあるか (少なくとも概算値) をウェブサイトやアプリが取得できます ({{bug(1008453)}})。</li>
+ <li>Firefox 10 で削除した {{domxref("Node.isSameNode()")}} メソッドを再追加しました。仕様書に長く存在していませんでしたが、再び追加されました ({{bug(1256299)}})。</li>
+ <li>{{domxref("Navigator.registerProtocolHandler()")}} を呼び出す際に誤りがあった場合に、Firefox が数値ではなく適切な例外を返すようになりました。</li>
+ <li>{{domxref("Element.animate()")}} をデフォルトで有効にしました ({{bug(1245000)}})。</li>
+ <li>{{domxref("Element.insertAdjacentText()")}} および {{domxref("Element.insertAdjacentElement()")}} メソッドを実装しました ({{bug(811259)}})。</li>
+ <li>{{domxref("Document.scrollingElement")}} をデフォルトで有効にしました ({{bug(1265032)}})。</li>
+ <li>{{domxref("Node.localName")}}、{{domxref("Node.namespaceURI")}}、{{domxref("Node.prefix")}} を {{domxref("Element")}} および {{domxref("Attr")}} API に移動しました ({{bug(1055776)}})。</li>
+ <li>最新の仕様書に従って、以下のキーについて {{domxref("KeyboardEvent.code")}} が返す値を変更しました ({{bug(1264150)}} を参照):
+ <ul>
+ <li><code>"OSLeft"</code> および <code>"OSRight"</code> が <code>"MetaLeft"</code> および <code>"MetaRight"</code> になりました。</li>
+ <li><code>"VolumeDown"</code>、<code>"VolumeUp"</code>、<code>"VolumeMute"</code> が <code>"AudioVolumeDown"</code>、<code>"AudioVolumeUp"</code>、<code>"AudoVolumeMute"</code> になりました。</li>
+ <li><code>"IntlHash"</code> を削除しました。</li>
+ <li>以前のバージョンの Firefox で <code>code</code> の値が "" になっていたすべてのキーが、"Unidentified" を知らせるようになりました。</li>
+ </ul>
+ </li>
+</ul>
+
+<h4 id="Canvas_2D" name="Canvas_2D">Canvas 2D</h4>
+
+<ul>
+ <li>{{domxref("CanvasRenderingContext2D.ellipse()")}} メソッドを実装しました ({{bug(910138)}})。</li>
+</ul>
+
+<h4 id="WebRTC" name="WebRTC">WebRTC</h4>
+
+<ul>
+ <li>{{domxref("MediaStream.clone()")}} および {{domxref("MediaStreamTrack.clone()")}} メソッドを実装しました ({{bug(1208371)}})。</li>
+ <li><code>RTCOfferOptions</code> で、ICE の再開や更新を可能にする <code>iceRestart</code> をサポートしました ({{bug(906986)}})。</li>
+ <li>{{domxref("RTCPeerConnection.createOffer()")}} メソッドが、デフォルトで VP9 動画コーデックを選択するようになりました。以前は VP8 を選択していました ({{bug(1242324)}})。</li>
+</ul>
+
+<h4 id="Others" name="Others">その他</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Web_Crypto_API">Web Crypto API</a> が <a href="/ja/docs/Web/API/Web_Workers_API">Web workers</a> で使用可能になりました ({{bug(842818)}})。</li>
+ <li>{{domxref("CustomEvent")}} インターフェイスが <a href="/ja/docs/Web/API/Web_Workers_API">Web Workers</a> で使用可能になりました ({{bug(1003432)}})。</li>
+ <li><code>DOMApplicationsManager.getNotInstalled()</code> メソッドを削除しました ({{bug("1255036")}})。</li>
+ <li>誤ってウェブに公開されていた Firefox OS の API を、本来すべきであったとおりに隠蔽しました。対象は {{domxref("mozContact")}}、{{domxref("MozContactChangeEvent")}}、{{domxref("navigator.mozContacts")}}、{{domxref("MozPowerManager")}}、{{domxref("MozSettingsEvent")}} です ({{bug("1043562")}}、{{bug("1256414")}}、{{bug("1256046")}})。</li>
+ <li>{{domxref("TextEncoder")}} で UTF-16 のサポートを廃止しました ({{bug(1257877)}})。</li>
+ <li>{{domxref("RTCStatsReport")}} が真に <code>maplike</code> なインターフェイスになりました。{{domxref("RTCStatsReport.forEach()", "forEach()")}}、{{domxref("RTCStatsReport.get()", "get()")}}、{{domxref("RTCStatsReport.has()", "has()")}} に加えて、{{domxref("RTCStatsReport.entries", "entries()")}}、{{domxref("RTCStatsReport.values", "values()")}}、{{domxref("RTCStatsReport.keys()", "keys()")}} メソッド、および {{domxref("RTCStatsReport.size", "size")}} ゲッターを実装しました ({{bug(906986)}})。</li>
+ <li><a href="https://hacks.mozilla.org/2016/03/referrer-and-cache-control-apis-for-fetch/">キャッシュの動作</a> を制御できるようにするため、{{domxref("Request.cache")}} プロパティを追加しました ({{bug(1120715)}})。</li>
+ <li>Mac OS X におけるデッドキーの扱いを、他のプラットフォームと同じ動作に変更しました。フォーカスがある要素が編集可能ではなく、テキストが生成されなかったときに {{event("keypress")}} イベントは発生しません (フォーカスがある要素が編集可能であるとき、Mac OS X ではデッドキーでキーボードイベントではなく composition イベントが発生します)。また他のプラットフォームと同様に、ほかの状況でテキストを生成しないデッドキー押下について、{{domxref("KeyboardEvent.key")}} の値が <code>"Dead"</code> になりました。</li>
+</ul>
+
+<h2 id="HTTP" name="HTTP">HTTP</h2>
+
+<ul>
+ <li>{{HTTPHeader("Upgrade-Insecure-Requests")}} ヘッダーをサポートしました ({{bug(1243586)}})。</li>
+ <li>CSP ディレクティブ {{CSP("block-all-mixed-content")}} を実装しました ({{bug(1122236)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Projects/Social_API/Service_worker_API_reference">Social Worker API</a> を削除しました。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.jp/firefox/48.0/releasenotes/">Firefox 48.0 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/48/">Firefox 48 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2016/05/firefox-48-addon-compatibility/">Firefox 48 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(47)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/49/index.html b/files/ja/mozilla/firefox/releases/49/index.html
new file mode 100644
index 0000000000..3b428cc01f
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/49/index.html
@@ -0,0 +1,350 @@
+---
+title: Firefox 49 for developers
+slug: Mozilla/Firefox/Releases/49
+tags:
+ - Firefox
+ - Release Notes
+translation_of: Mozilla/Firefox/Releases/49
+---
+<p>Firefox 49 は、米国時間 2016 年 9 月 20 日にリリースされました。このページでは、開発者に影響する Firefox 49 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>コンソールに記録された JavaScript のエラーで、デバッグのためのヒントを <a href="https://hacks.mozilla.org/2016/06/helping-web-developers-with-javascript-errors/">[Learn more] リンクで提供します</a> ({{bug("1179876")}})。</li>
+ <li>CSS オートコンプリート: オートコンプリートのポップアップで、より多くの候補を表示します ({{bug("1260419")}})。</li>
+ <li>アニメーションインスペクターで、<a href="/ja/docs/Tools/Page_Inspector/How_to/Work_with_animations#Further_information_about_animation_compositing">アニメーションのパフォーマンス情報を提供する</a> ようになりました ({{bug("1254408")}})。</li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Element_popup_context_menu">インスペクターのコンテキストメニュー</a> を、よりきれいで使いやすくなるように再編しました ({{bug("1211613")}})。</li>
+ <li>インスペクターで、<code>#RRGGBBAA</code> および <code>#RGBA</code> 構文の色の値をサポートしました ({{bug("1271191")}})。</li>
+ <li>HTML のページでは開発ツールで、self-closing タグ ({{HTMLElement("br")}} や {{HTMLElement("img")}} など) が終了タグを持つかのように表示しないようになりました。XHTML ページではこの動作を変更していません ({{bug("820926")}})。</li>
+ <li>アクセシビリティが向上しました。
+ <ul>
+ <li>ツールボックスで、キーボードフォーカスが見やすくなるように対処しました ({{bug(1242851)}})。</li>
+ <li>アクセシビリティのラベルがついていないコントロールに、ラベルを追加しました ({{bug(1242715)}})。</li>
+ <li>インスペクターのマークアップビューに、適切なツリービューの意味とキーボードナビゲーションを追加しました ({{bug(1242694)}})。</li>
+ </ul>
+ </li>
+ <li><a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a> に Cause 列を追加しました。個々のネットワークリクエストを発生させたのは何かを示します ({{bug(1134073)}})。</li>
+ <li><em>about:debugging</em> のアドオンページで、再読み込みボタンは一時的なアドオンに限り使用できるようになりました。他のアドオンでは無効になります ({{bug(1273184)}})。</li>
+ <li><em>about:debugging</em> の Workers ページで、現在のブラウザーの設定に対して <a href="/ja/docs/Tools/about:debugging#Service_workers_not_compatible">互換性がない service worker</a> について、警告メッセージを Service Workers セクションに表示するようになりました ({{bug(1266415)}})。</li>
+ <li><em>about:debugging</em> で、新たに <a href="/ja/docs/Tools/about:debugging#Tabs">Tabs ページ</a> が使用可能になりました。現在の Firefox のインスタンスで開いている、デバッグ可能なタブを一覧表示します ({{bug(1266128)}})。</li>
+ <li><a href="/ja/docs/Tools/Settings#Advanced_settings">ツールボックスの詳細設定</a> の [<em>キャッシュを無効化</em>] を、[HTTP キャッシュを無効化] に改名しました。HTTP キャッシュに影響があり、<a href="/ja/docs/Web/API/Service_Worker_API">Service Workers</a> や <a href="/ja/docs/Web/API/Cache">Cache API</a> には影響がないことを明確にするためです (bug(1253018))。</li>
+ <li>ストレージインスペクターのコンテキストメニューで <a href="/ja/docs/Tools/Storage_Inspector#IndexedDB">IndexedDB データベースを削除できるようになりました</a> ({{bug("1205123")}})。また、何らかの理由で IndexedDB が削除できない (例えばアクティブな接続が存在する) 場合に警告メッセージを表示します ({{bug(1268460)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("details")}} 要素および {{HTMLElement("summary")}} 要素をサポートしました ({{bug(1226455)}})。</li>
+ <li>{{HTMLElement("input")}} 要素の {{htmlattrxref("pattern", "input")}} 属性は、背後の JavaScript {{jsxref("RegExp")}} で <code>'u'</code> パラメーターを使用するようになりました ({{bug(1227906)}})。</li>
+ <li>仕様書の変更に合わせて、{{HTMLElement('track')}} 要素の {{htmlattrxref("kind", "track")}} 属性で無効な値は、<code>'subtitles'</code> ではなく <code>'metadata'</code> と同様に扱うようになりました ({{bug(1269712)}})。</li>
+ <li>{{HTMLElement("iframe")}} 要素の {{htmlattrxref("sandbox", "iframe")}} 属性で値 <code>'allow-popups-to-escape-sandbox'</code> および <code>'allow-modals'</code> をサポートしました ({{bug(1190641)}})。</li>
+ <li>microdata 属性および Microdata API のサポートを廃止しました ({{bug(909633)}})。</li>
+ <li>{{HTMLElement("a")}} 要素の {{htmlattrxref("referrerpolicy", "a")}} 属性で値 <code>'no-referrer-when-downgrade</code>' および <code>'origin-when-cross-origin'</code> をサポートしました ({{bug(1178337)}})。</li>
+ <li>{{HTMLElement("label")}} 要素の {{htmlattrxref("form", "label")}} コンテンツ属性を削除しました。{{domxref("HTMLLabelElement.form")}} はまだ存在していますが、コントロールが存在する (およびそのコントロールがフォームに関連付けられている) 場合に、ラベルのコントロールが関連付けられているフォームを返すようになりました ({{bug(1268852)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>背景画像を描画する位置のオフセットを水平方向および垂直方向に分けて指定できる、{{cssxref("background-position-x")}} プロパティおよび {{cssxref("background-position-y")}} プロパティをサポートしました。これらは {{cssxref("background-position")}} を構成します ({{bug("550426")}})。</li>
+ <li>{{cssxref("background-repeat")}} で、キーワード <code>round</code> および <code>space</code> をサポートしました ({{bug("548372")}})。</li>
+ <li>{{cssxref("background-clip")}} で、キーワード <code>text</code> をデフォルトで有効化しました ({{bug(1264905)}})。</li>
+ <li>4 桁および 8 桁の 16 進数による CSS <a href="/ja/docs/Web/CSS/color_value">色</a> の値 (#RRGGBBAA や #RGBA) による、アルファチャンネルを含む色の指定をサポートしました ({{bug("567283")}})。</li>
+ <li>{{cssxref(":dir()")}} 疑似クラスの接頭辞を外しました ({{bug(859301)}})。</li>
+ <li>{{cssxref("clip-path")}} の実験的な実装 (デフォルトで有効化していません) で、複数の {{cssxref("&lt;basic-shape&gt;")}} 値の間で補間処理が可能になりました ({{bug(1110460)}})。</li>
+ <li><a href="/ja/docs/Web/CSS/length#q">長さの単位 <code>q</code></a> をサポートしました ({{bug(1274526)}})。</li>
+ <li>{{cssxref("text-align-last")}} プロパティの接頭辞を削除しました ({{bug(1039541)}})。</li>
+ <li>{{cssxref("overflow-wrap")}} をサポートしました。{{cssxref("word-wrap")}} を置き換えるものですが、こちらも別名としてサポートを続けます ({{bug(955857)}})。</li>
+ <li><a href="/ja/docs/Web/CSS/CSS_Grid_Layout">CSS Grids</a> の実験的な実装が進展しました:
+ <ul>
+ <li>{{cssxref("grid-gap")}}、{{cssxref("grid-row-gap")}}、{{cssxref("grid-column-gap")}} プロパティで {{cssxref("&lt;percentage&gt;")}} をサポートしました ({{bug(1266268)}})。</li>
+ <li>{{cssxref("align")}}、{{cssxref("justify-self")}}<code>:baseline</code>、<code>last-baseline</code> ("baseline self-alignment" として知られる) でグリッドレイアウトをサポートしました ({{bug(1221525)}})。</li>
+ <li>グリッドアイテムの Baseline Content Alignment を実装しました ({{bug(1256429)}})。</li>
+ </ul>
+ </li>
+ <li><a href="/ja/docs/Web/CSS/CSS_Masks">CSS Masks</a> の実験的な実装が進展しました:
+ <ul>
+ <li>{{cssxref("mask-origin")}} プロパティの初期値を、仕様書に合わせて <code>padding-box</code> から <code>border-box</code> に変更しました ({{bug(1258286)}})。</li>
+ <li>{{cssxref("mask-repeat")}} プロパティで値 <code>space</code> および <code>round</code> をサポートしました ({{bug(1258626)}})。</li>
+ <li>{{cssxref("mask-position")}} 属性でアニメーションを行えない問題を修正しました ({{bug(1273804)}})。</li>
+ </ul>
+ </li>
+ <li>{{cssxref("text-emphasis")}} を制御する設定項目を削除しました。このプロパティを無効化することはできません ({{bug(1229609)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>ES2015 (ES6) の {{jsxref("Proxy")}} のトラップである {{jsxref("Global_Objects/Proxy/handler/getPrototypeOf", "getPrototypeOf()")}} および {{jsxref("Global_Objects/Proxy/handler/setPrototypeOf", "setPrototypeOf()")}} を実装しました ({{bug(888969)}})。</li>
+ <li>ES2015 (ES6) の {{jsxref("RegExp.prototype.@@match()", "RegExp.prototype[@@match]()")}}、{{jsxref("RegExp.prototype.@@replace()", "RegExp.prototype[@@replace]()")}}、{{jsxref("RegExp.prototype.@@search()", "RegExp.prototype[@@search]()")}}、{{jsxref("RegExp.prototype.@@split()", "RegExp.prototype[@@split]()")}} メソッドおよび {{jsxref("RegExp.@@species", "RegExp[@@species]")}} getter を実装しました ({{bug(887016)}})。</li>
+ <li>非推奨かつ非標準である、<code>String.prototype.</code>{{jsxref("String.prototype.match", "match")}}/{{jsxref("String.prototype.search", "search")}}/{{jsxref("String.prototype.replace", "replace")}} の <code>flags</code> 引数を廃止しました ({{bug(1108382)}})。</li>
+ <li>Google Chrome ブラウザとの相互運用性を高めるため {{jsxref("Date.parse()")}} で、2 桁で表す年の処理を変更しました ({{bug(1265136)}})。</li>
+</ul>
+
+<h3 id="InterfacesAPIsDOM" name="InterfacesAPIsDOM">インターフェイス/API/DOM</h3>
+
+<h4 id="DOM_HTML_DOM" name="DOM_HTML_DOM">DOM &amp; HTML DOM</h4>
+
+<ul>
+ <li>{{domxref("DOMTokenList.supports()")}} メソッドを追加しました ({{bug(1257849)}})。</li>
+ <li>{{domxref("DOMTokenList.replace()")}} メソッドを追加しました ({{bug(1224186)}})。</li>
+ <li>{{domxref("URLSearchParams.URLSearchParams", "URLSearchParams()")}} コンストラクタのパラメータで、先頭の <code>'?'</code> 文字は無視するようになりました ({{bug(1268361)}})。</li>
+ <li>{{domxref("URL.origin")}}、{{domxref("HTMLAnchorElement.origin")}}、{{domxref("HTMLAreaElement.origin")}} で <code>blob:</code> スキームの URL を使用した場合の戻り値が、誤った値である <code>null</code> ではなく、先頭の <code>blob:</code> を除いた URL のオリジンになりました ({{bug(1270451)}})。</li>
+ <li>プリレンダリングモードで、{{domxref('Document.visibilityState')}} プロパティが <code>'prerender'</code> を返すようになりました ({{bug(1069772)}})。</li>
+ <li>{{domxref("Window.isSecureContext")}} プロパティを実装しました ({{bug(1162772)}})。</li>
+ <li>DOM4 の {{domxref("ChildNode.before()")}}、{{domxref("ChildNode.after()")}}、{{domxref("ChildNode.replaceWith()")}}、{{domxref("ParentNode.append()")}}、{{domxref("ParentNode.prepend()")}} メソッドを実装しました ({{bug(911477)}})。</li>
+ <li>{{domxref("TouchList.identifiedTouch()")}} メソッドを削除しました ({{bug(1188539)}})。</li>
+ <li>{{domxref("Window.open()")}} を呼び出した際に、{{domxref("Window")}} の <code>scrollbars</code> 特性をデフォルトで有効にしました。従来から、これは有効化することが強く推奨されていましたが、デフォルトでは有効化していませんでした ({{bug(1257887)}})。</li>
+ <li>動画コンテンツの frame-by-frame シークを可能にする、<em>実験的</em>かつ<em>非標準</em>の {{domxref("HTMLMediaElement.seekToNextFrame()")}} メソッドを追加しました ({{bug(1235301)}}。これがどれだけ役に立つかを私たちが理解するのを助けるために試用することをお勧めしますが、<em>製品版のコードでは使用しないでください!</em></li>
+ <li>{{domxref("HTMLLabelElement.form")}} プロパティが、コントロールが存在する (およびそのコントロールがフォームに関連付けられている) 場合に、ラベルのコントロールが関連付けられているフォームを返すようになりました。以前は、このプロパティを使用して label を直接フォームに関連付けていました ({{bug(1268852)}})。</li>
+ <li>{{domxref("EventTarget.addEventListener()")}} の第 3 引数でサポートする値に、{{jsxref("Boolean")}} および {{interface("EventListenerOptions")}} を追加しました ({{bug(1266164)}} および {{bug(1266066)}})。</li>
+ <li>{{domxref("KeyboardEvent.key")}} で、音量に関する値を改名しました。<code>"VolumeDown"</code> は <code>"AudioVolumeDown"</code> に、<code>"VolumeUp"</code> は <code>"AudioVolumeUp"</code> に、<code>"VolumeMute"</code> は <code>"AudioVolumeMute"</code> に変わりました。この変更により、Firefox が UI Events 仕様の最新ドラフトに準拠しました ({{bug(1272578)}})。使用可能なすべてのキーコードについては、{{SectionOnPage("/en-US/docs/Web/API/KeyboardEvent/code", "Code values")}} をご覧ください。</li>
+ <li>以前は <code>"MozHomeScreen"</code>、<code>"MozCameraFocusAdjust"</code>、<code>"MozPhoneCall"</code> として参照されていたキーに、UI Events 仕様で公式な名称がつきました。<code>"GoHome"</code>、<code>"CameraFocus"</code>、<code>"Call"</code> になります。Firefox 49 で、新しい名称を使用するように更新しました ({{bug(1272599)}})。使用可能なすべてのキーコードについては、{{SectionOnPage("/en-US/docs/Web/API/KeyboardEvent/code", "Code values")}} をご覧ください。</li>
+ <li>キーの値 <code>"Separator"</code> および <code>"MediaSkip"</code> は、非推奨になったうえに使用されていませんので、削除しました ({{bug(1232919)}})。</li>
+ <li>キーの値 <code>"Hyper"</code> および <code>"Super"</code> とそれらに対応するキーコードを、過去のモディファイアキーを表すように追加しました ({{bug(1232919)}})。</li>
+ <li>マルチメディア数値キーパッド用に、2 つのキーの値を追加しました: <code>"Key11"</code>、<code>"Key12"</code> ({{bug(1232919)}})。</li>
+ <li>オーディオコントロールキー用に、以下の新たなキーの値を追加しました: <code>"AudioBassBoostToggle"</code>、<code>"AudioTrebleDown"</code>、<code>"AudioTrebleUp"</code> ({{bug(123919)}})。</li>
+ <li>マイクコントロールキー用に、以下のキーの値を追加しました: <code>"MicrophoneToggle"</code>、<code>"MicrophoneVolumeDown"</code>、<code>"MicrophoneVolumeUp"</code>、<code>"MicrophoneVolumeMute"</code> ({{bug(123919)}})。</li>
+ <li>音声認識デバイス用に、以下の新たなキーの値を追加しました: "<code>SpeechCorrectionList"</code>、<code>"SpeechInputToggle"</code> ({{bug(1232919)}})。</li>
+ <li>電話機の特殊キーをサポートするため、以下のキーの値を追加しました: <code>"AppSwitch"</code>、<code>"Call"</code>、<code>"CameraFocus"</code>、<code>"EndCall"</code>、<code>"GoBack"</code>、<code>"GoHome"</code>、<code>"HeadsetHook"</code>、<code>"LastNumberRedial"</code>、<code>"Notification"</code>、<code>"MannerMode"</code>、<code>"VoiceDial"</code> ({{bug(1232919)}})。</li>
+ <li>アプリケーションキー用に、以下のキーの値を追加しました: <code>"LaunchContacts"</code>、<code>"LaunchPhone"</code> ({{bug(1232919)}})。</li>
+ <li>テレビデバイス用に、以下の新たなキーの値を追加しました: <code>"TV3DMode"</code>、<code>"TVAntennaCable"</code>、<code>"TVAudioDescription"</code>、<code>"TVAudioDescriptionMixDown"</code>、<code>"TVAudioDescriptionMixUp"</code>、<code>"TVContentsMenu"</code>、<code>"TVDataService"</code>、<code>"TVInput"</code>、<code>"TVInputComponent1"</code>、<code>"TVInputComponent2"</code>、<code>"TVInputComposite1"</code>、<code>"TVInputComposite2"</code>、<code>"TVInputHDMI1"</code>、<code>"TVInputHDMI2"</code>、<code>"TVInputHDMI3"</code>、<code>"TVInputHDMI4"</code>、<code>"TVInputVGA1"</code>、<code>"TVMediaContext"</code>、<code>"TVNetwork"</code>、<code>"TVNumberEntry"</code>、<code>"TVRadioService"</code>、<code>"TVSatellite"</code>、<code>"TVSatelliteBS"</code>、<code>"TVSatelliteCS"</code>、<code>"TVSatelliteToggle"</code>、<code>"TVTerrestrialAnalog"</code>、<code>"TVTerrestrialDigital"</code>、<code>"TVTimer"</code>、<code>"DVR"</code> ({{bug(1232919)}})。</li>
+ <li>キーの値 <code>"MediaSelect"</code> を、標準のキーの値である <code>"LaunchMediaPlayer"</code> に置き換えました ({{bug(1272592)}})。</li>
+ <li>メディアプレイヤーの付加機能キーの値を追加しました。<code>"MediaAudioTrack"</code>、<code>"MediaSkipBackward"</code>、<code>"MediaSkipForward"</code>、<code>"MediaStepBackward"</code>、<code>"MediaStepForward"</code>、<code>"MediaTopMenu"</code>、<code>"NavigateIn"</code>、<code>"NavigateNext"</code>、<code>"NavigateOut"</code>、<code>"NavigatePrevious"</code> です ({{bug(1232919)}})。</li>
+</ul>
+
+<h4 id="Canvas" name="Canvas">Canvas</h4>
+
+<ul>
+ <li>Canvas にフィルターを追加する機能を提供する {{domxref("CanvasRenderingContext2D.filter")}} プロパティがデフォルトで有効になり、設定の切り替えが不要になりました ({{bug(1173545)}})。</li>
+</ul>
+
+<h4 id="WebGL" name="WebGL">WebGL</h4>
+
+<ul>
+ <li>{{domxref("WebGL2RenderingContext", "WebGL 2", "", 1)}} の {{domxref("EXT_color_buffer_float")}} 拡張を実装しました ({{bug(1129332)}})。</li>
+ <li>WebGL コンテキストの作成が失敗したときに発生する、{{Event("webglcontextcreationerror")}} イベントを実装しました ({{bug(1271478)}})。デバッグや製品版のエラー制御において、何が誤っているかの理解を助けるために使用してください。</li>
+</ul>
+
+<h4 id="IndexedDB" name="IndexedDB">IndexedDB</h4>
+
+<ul>
+ <li>IndexedDB のインデックスがリネーム可能になりました。{{domxref("IDBIndex.name")}} プロパティが読み書き可能になっています ({{bug(1118028)}})。</li>
+ <li>{{domxref("IDBObjectStore")}} もリネーム可能になりました。{{domxref("IDBObjectStore.name")}} プロパティが読み書き可能になっています ({{bug(1118028)}})。</li>
+</ul>
+
+<h4 id="Service_Workers_and_related" name="Service_Workers_and_related">Service Worker 関連</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Fetch_API">Fetch API</a> の {{domxref("Response")}} オブジェクトに、リダイレクトされたリクエストのレスポンスであるかを示す {{domxref("Response.redirected", "redirected")}} プロパティを実装しました。このプロパティを使用する前に、ドキュメントでセキュリティ関連の注意事項を確認してください ({{bug(1243792)}})。</li>
+ <li><a href="/ja/docs/Web/API/Permissions_API">Permissions API</a> で、Firefox は <code>PermissionDescriptor</code> ディクショナリータイプの 'push' のサポートを廃止しました (仕様書では <code>PushPermissionDescriptor</code> として言及されています)。Firefox は <code>userVisibleOnly</code> ステータスの制御で代わりにクォータシステムに依存しており、<code>PushPermissionDescriptor</code> インスタンスに出くわしたときにエラーが発生していたためです ({{bug(1266821)}})。このディクショナリの削除により、Firefox は単に無視するようになりました。</li>
+</ul>
+
+<h4 id="Media_Streams" name="Media_Streams">Media Stream</h4>
+
+<ul>
+ <li>以前はユーザーが 2 種類のハードウェアのうち一方しか使用できない状況で、音声および映像を要求する {{domxref("MediaDevices.getUserMedia()")}} の呼び出しが成功していました。この問題を修正しました ({{bug(802326)}})。</li>
+ <li>以前のバージョンの Firefox では、合致するデバイスのうち (両方ではなく) 一方のアクセスが拒否されたにもかかわらず、音声および映像を要求する {{domxref("MediaDevices.getUserMedia()")}} の呼び出しが成功していました。この問題を修正しました ({{bug(802326)}})。これはユーザーインターフェイスを若干変更させており、ユーザーが許可を求められる際の選択肢で "No audio" や "No video" を削除しました。</li>
+ <li>{{domxref("MediaStream.getTrackById()")}} メソッドを実装しました ({{bug(1208390)}})。</li>
+</ul>
+
+<h4 id="WebRTC" name="WebRTC">WebRTC</h4>
+
+<ul>
+ <li>指定したストリームを構成していないトラックをコネクションへ追加できるように、{{domxref("RTCPeerConnection.addTrack()")}} メソッドを更新しました。代わりに、コネクションの受信側でトラックをまとめるためにストリームが使用されます ({{bug(1271669)}})。</li>
+</ul>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li>{{domxref("PerformanceObserver")}} API を、Nightly でデフォルトで有効にしました ({{bug(1271487)}})。他のバージョンの Firefox 49 では、デフォルトで無効化しています ({{bug(1271487)}})。</li>
+</ul>
+
+<h4 id="Others" name="Others">その他</h4>
+
+<ul>
+ <li>{{domxref("XMLHttpRequest.getResponseHeader()")}} および {{domxref("XMLHttpRequest.getAllResponseHeaders()")}} で、設定項目 <code>network.http.keep_empty_response_headers_as_empty_string</code> が <code>true</code> に設定されている場合は、空のヘッダーを返すようになりました ({{bug(669259)}})。</li>
+ <li>Firefox OS 限定の <a href="/ja/docs/Archive/Firefox_OS/API/Data_Store_API">Data Store API</a> を削除しました ({{bug(1261009)}})。</li>
+ <li><a href="/ja/docs/Web/API/Fullscreen_API">Fullscreen API</a> の {{domxref("Document.onfullscreenchange")}}、{{domxref("Document.onfullscreenerror")}} イベントハンドラーを、 {{domxref("Element")}} から削除しました。そこでは発生していなかったためです。ただし、接頭辞付きのイベントハンドラーは互換性のために維持しています ({{bug(1270386)}})。これは設定項目 <code>full-screen-api.unprefix.enabled</code> で制御されており、デフォルトで有効化していないことに注意してください ({{bug(1268749)}})。</li>
+ <li>廃止済みの {{domxref("Document.mozFullScreen")}} プロパティの接頭辞を削除して、{{domxref("Document.fullscreen")}} としました ({{bug(1269157)}}}。これは設定項目 <code>full-screen-api.unprefix.enabled</code> で制御されており、デフォルトで有効化していないことに注意してください ({{bug(1268749)}})。</li>
+ <li>読み取り専用の {{domxref("Document.fullscreenElement")}} および {{domxref("Document.fullscreenEnabled")}} プロパティで、値を変更しようとしても例外が発生しないようになりました。代わりに新しい値は暗黙的に無視され、setter 関数は何も行いません ({{bug(1269798)}})。</li>
+ <li>{{domxref("DataTransfer.getData()")}} で、どのような種類のデータでもクリップボードから取り出せるようになりました。以前は、特定の MIME タイプのデータのみ取り出し可能でした ({{bug(860857)}})。</li>
+ <li><code>PerformanceCompositeTiming</code> および <code>PerformanceRenderTiming</code> の 2 つのインターフェイスで構成される、<a href="/ja/docs/Web/API/Frame_Timing_API">Frame Timing API</a> の実装を削除しました。仕様書が全面的に書き直されたためです ({{bug(1271846)}})。</li>
+ <li>仕様書に合わせて、{{domxref("VTTCue.positionAlign")}} プロパティが <code>Align</code> 列挙型ではなく <code>PositionAlign</code> 列挙型を返すようになりました ({{bug(1276129)}})。</li>
+ <li><a href="/ja/docs/Web/API/Web_Speech_API#Speech_synthesis">Web Speech API</a> の、音声合成の部分をサポートしました ({{bug(1268633)}})。</li>
+ <li><a href="/ja/docs/Web/API/Performance_Timeline">Performance Timeline API</a> を、Nightly でデフォルトで有効化しました (Aurora、Beta、Release では無効です)。</li>
+ <li>{{event("install")}} イベントおよび {{domxref("Window.oninstall")}} イベントハンドラーを <a href="/ja/docs/Web/Manifest">Web Manifests</a> 向けにサポートしました ({{bug(1265279)}})。</li>
+ <li><a href="/ja/docs/Web/API/Web_Audio_API">Web Audio API</a> の {{domxref("AudioContext.createPeriodicWave()")}} メソッドを使用するとき、結果の周期的な波形をノーマライズすべきかを、第 3 引数にディクショナリーオブジェクトを含めることで指定可能になりました。このオブジェクトにはひとつのパラメータを含めて <code>{disableNormalization: true}</code> のようにします ({{bug(1265405)}})。</li>
+ <li>WebVTT API で {{domxref("VTTCue.positionAlign")}} が、仕様書どおりに正しく <code>PositionAlignSetting</code> 列挙型を返すようになりました。以前は <code>AlignSetting</code> 列挙型を返していました ({{bug(1276129)}})。</li>
+ <li>Web Speech API の音声合成の部分を、すべてのデスクトップブラウザーでデフォルトで有効にしました ({{bug(1268633)}})。</li>
+ <li><a href="/ja/docs/Web/API/Web_Animations_API">Web Animations API</a> の {{domxref("Animation.Animation()", "Animation()")}} コンストラクターが、null タイムラインを受け入れるようになりました ({{bug(1096776)}})。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<ul>
+ <li>非推奨の {{SVGElement('altGlyph')}}、{{SVGElement('altGlyphDef')}}、{{SVGElement('altGlyphItem')}} 要素のサポートを廃止しました ({{bug(1260032)}})。</li>
+</ul>
+
+<h3 id="AudioVideo" name="AudioVideo">Audio/Video</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Plugins_and_Flash" name="Plugins_and_Flash">プラグインと Flash</h3>
+
+<p>Firefox 49 より、サイトが正しく機能するために必要ではない特定の種類の Flash コンテンツをデフォルトでブロックするようになりました。この動作は設定項目 <code>browser.safebrowsing.blockedURIs.enabled</code> で制御しており、サイトのユーザービリティに大きな影響を与えることなく、一般的にはサイトや Firefox のパフォーマンスを向上する助けになります。また、クラッシュの主要な原因を取り除くことにより、ブラウジング体験の安定性を向上する助けにもなります。ブロックされる Flash モジュールにはフィンガープリンティングのためだけに使用されるものやいくつかの "スーパー Cookie" モジュールが含まれまており、将来はより多くの種類のモジュールをブロックするように拡張するでしょう。詳しくは {{bug(1275591)}} をご覧ください。</p>
+
+<p>これはプラグインがない未来への行程の、次のステップになります。機能を果たすためにプラグインを必要としない段階に、HTML はとても近づいています。</p>
+
+<h2 id="HTTP" name="HTTP">HTTP</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/HTTP/Headers/Cache-Control">Cache-Control: immutable</a></code> ディレクティブを実装しました ({{bug(1267474)}})。詳しくは <a href="https://bitsup.blogspot.de/2016/05/cache-control-immutable.html">ブログ記事</a> もご覧ください。</li>
+ <li>{{HTTPHeader("Content-Security-Policy")}} の {{CSP("require-sri-for")}} を実装しました ({{bug(1265318)}})。</li>
+</ul>
+
+<h2 id="Networking" name="Networking">ネットワーク</h2>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Projects/Necko/Proxy_Auto-Configuration_(PAC)_file">Proxy Auto-Configuration (PAC)</a> の実装を更新しました。<code>weekdayRange</code>、<code>dateRange</code>、<code>timeRange</code> で "リバースレンジ" をサポートしました。例えば <code>weekdayRange("SAT", "MON")</code> は、当日が土曜日、日曜日、月曜日である場合に <code>true</code> になります ({{bug(1251332)}})。</li>
+</ul>
+
+<h2 id="Security" name="Security">セキュリティ</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/Security/Secure_Contexts">secure contexts</a> を必要とする機能を使用できるコンテキストであるかを示す、{{domxref("Window.isSecureContext")}} プロパティを実装しました ({{bug(1162772)}})。</li>
+</ul>
+
+<h2 id="Compatibility" name="Compatibility">互換性</h2>
+
+<p>既存のコンテンツとの互換性を高めるために、一部の webkit 接頭辞つきプロパティおよび属性を Firefox で受け入れるようになりました。</p>
+
+<ul>
+ <li>以下のプロパティは、<code>-webkit</code> 接頭辞がついていても動作します:
+
+ <ul>
+ <li>{{cssxref("-webkit-align-items")}}</li>
+ <li>{{cssxref("-webkit-align-content")}}</li>
+ <li>{{cssxref("-webkit-align-self")}}</li>
+ <li>{{cssxref("-webkit-animation")}}</li>
+ <li>{{cssxref("-webkit-animation-delay")}}</li>
+ <li>{{cssxref("-webkit-animation-direction")}}</li>
+ <li>{{cssxref("-webkit-animation-duration")}}</li>
+ <li>{{cssxref("-webkit-animation-fill-mode")}}</li>
+ <li>{{cssxref("-webkit-animation-iteration-count")}}</li>
+ <li>{{cssxref("-webkit-animation-name")}}</li>
+ <li>{{cssxref("-webkit-animation-play-state")}}</li>
+ <li>{{cssxref("-webkit-animation-timing-function")}}</li>
+ <li>{{cssxref("-webkit-backface-visibility")}}</li>
+ <li>{{cssxref("-webkit-background-clip")}}</li>
+ <li>{{cssxref("-webkit-background-origin")}}</li>
+ <li>{{cssxref("-webkit-background-size")}}</li>
+ <li>{{cssxref("-webkit-border-bottom-left-radius")}}</li>
+ <li>{{cssxref("-webkit-border-bottom-right-radius")}}</li>
+ <li>{{cssxref("-webkit-border-image")}}</li>
+ <li>{{cssxref("-webkit-border-top-left-radius")}}</li>
+ <li>{{cssxref("-webkit-border-top-right-radius")}}</li>
+ <li>{{cssxref("-webkit-border-radius")}}</li>
+ <li>{{cssxref("-webkit-box-shadow")}}</li>
+ <li>{{cssxref("-webkit-filter")}}</li>
+ <li>{{cssxref("-webkit-flex")}}</li>
+ <li>{{cssxref("-webkit-flex-basis")}}</li>
+ <li>{{cssxref("-webkit-flex-direction")}}</li>
+ <li>{{cssxref("-webkit-flex-flow")}}</li>
+ <li>{{cssxref("-webkit-flex-grow")}}</li>
+ <li>{{cssxref("-webkit-flex-shrink")}}</li>
+ <li>{{cssxref("-webkit-flex-wrap")}}</li>
+ <li>{{cssxref("-webkit-justify-content")}}</li>
+ <li>{{cssxref("-webkit-order")}}</li>
+ <li>{{cssxref("-webkit-perspective")}}</li>
+ <li>{{cssxref("-webkit-perspective-origin")}}</li>
+ <li>{{cssxref("-webkit-text-size-adjust")}}</li>
+ <li>{{cssxref("-webkit-transform")}}</li>
+ <li>{{cssxref("-webkit-transform-origin")}}</li>
+ <li>{{cssxref("-webkit-transform-style")}}</li>
+ <li>{{cssxref("-webkit-transition")}}</li>
+ <li>{{cssxref("-webkit-transition-delay")}}</li>
+ <li>{{cssxref("-webkit-transition-duration")}}</li>
+ <li>{{cssxref("-webkit-transition-property")}}</li>
+ <li>{{cssxref("-webkit-transition-timing-function")}}</li>
+ <li>{{cssxref("-webkit-user-select")}}</li>
+ </ul>
+ </li>
+ <li>以下のプロパティは、同等の接頭辞つきプロパティに紐づけています:
+ <ul>
+ <li>{{cssxref("-webkit-box-flex")}}</li>
+ <li>{{cssxref("-webkit-box-ordinal-group")}}</li>
+ <li>{{cssxref("-webkit-box-orient")}}</li>
+ <li>{{cssxref("-webkit-box-align")}}</li>
+ <li>{{cssxref("-webkit-box-pack")}}</li>
+ </ul>
+ </li>
+ <li>{{cssxref("&lt;image&gt;")}} の値について:
+ <ul>
+ <li>以下の関数は、接頭辞なしの同等物に紐づけています: {{cssxref("-webkit-linear-gradient", "-webkit-linear-gradient()")}}、{{cssxref("-webkit-radial-gradient", "-webkit-radial-gradient()")}}、{{cssxref("-webkit-repeating-linear-gradient", "-webkit-repeating-linear-gradient()")}}、{{cssxref("-webkit-repeating-radial-gradient","-webkit-repeating-radial-gradient()")}}。</li>
+ <li>旧式の <code>-webkit-gradient</code> をサポートします (また、正規のグラデーションに変換します)。</li>
+ </ul>
+ </li>
+ <li>以下の {{cssxref("display")}} の値を変換します:
+ <ul>
+ <li><code>-webkit-box</code> を <code>-moz-box</code> に変換</li>
+ <li><code>-webkit-flex</code> を <code>flex</code> に変換</li>
+ <li><code>-webkit-inline-box</code> を <code>inline-flex</code> に変換</li>
+ <li><code>-webkit-inline-flex</code> を <code>-moz-inline-flex</code> に変換</li>
+ </ul>
+ </li>
+ <li>以下のプロパティをサポートします (接頭辞なしの同等物に紐づけません):
+ <ul>
+ <li>{{cssxref("-webkit-text-fill-color")}}</li>
+ <li>{{cssxref("-webkit-text-stroke-color")}}</li>
+ <li>{{cssxref("-webkit-text-stroke-width")}}</li>
+ <li>{{cssxref("-webkit-text-stroke")}}</li>
+ </ul>
+ </li>
+ <li>{{domxref("WebKitCSSMatrix")}} インターフェイスを {{domxref("DOMMatrix")}} の別名にしました。</li>
+ <li>以下のメディアクエリー特性を実装しました:
+ <ul>
+ <li><code>-webkit-min-device-pixel-ratio</code> を <code><a href="/ja/docs/Web/CSS/Media_Queries/Using_media_queries#resolution">min-resolution</a></code> の別名として、同じ値 (<code>dppx</code>) で実装しました。ただし、この機能は <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1237720">デフォルトで無効</a> です (about:config の設定 <code>layout.css.prefixes.device-pixel-ratio-webkit</code> で制御)。</li>
+ <li><code>-webkit-max-device-pixel-ratio</code> を <code><a href="/ja/docs/Web/CSS/Media_Queries/Using_media_queries#resolution">max-resolution</a></code> の別名として、同じ値 (<code>dppx</code>) で実装しました。この機能も about:config の同じ設定で、デフォルトで無効にしています。</li>
+ <li><code><a href="/ja/docs/Web/CSS/Media_Queries/Using_media_queries#-webkit-transform-3d">-webkit-transform-3d</a></code> がマッチするようになりました。3D Transform をサポートすることを示します。</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="WebExtensions" name="WebExtensions">WebExtensions</h3>
+
+<ul>
+ <li>{{WebExtAPIRef("history")}} をサポートしました。この機能でブラウザーの履歴にアクセスでき、履歴の検索、以前アクセスしたページの情報を取得、履歴項目の追加や削除を可能にするメソッドがあります。</li>
+ <li>tabs API に {{WebExtAPIRef("tabs.removeCSS()")}} メソッドを追加しました。このメソッドで、以前に {{WebExtAPIRef("tabs.insertCSS()")}} を呼び出して挿入した CSS を削除できます。</li>
+</ul>
+
+<h3 id="Interfaces" name="Interfaces">インターフェイス</h3>
+
+<ul>
+ <li>{{domxref("EventTarget.addEventListener()")}} で、XBL または Firefox の chrome で実行するコードに限り有効化されている値 <code>mozSystemGroup</code> をサポートしました。これは、リスナーがシステムグループに追加されるかを示す {{jsxref("Boolean")}} です ({{bug(1274520)}})。</li>
+</ul>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.jp/firefox/49.0/releasenotes/">Firefox 49.0 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/49">Firefox 49 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2016/07/firefox-49-addon-compatibility/">Firefox 49 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(48)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/5/index.html b/files/ja/mozilla/firefox/releases/5/index.html
new file mode 100644
index 0000000000..e87012955e
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/5/index.html
@@ -0,0 +1,171 @@
+---
+title: Firefox 5 for developers
+slug: Mozilla/Firefox/Releases/5
+tags:
+ - Firefox
+ - Firefox 5
+ - Gecko 5.0
+translation_of: Mozilla/Firefox/Releases/5
+---
+<p>Firefox 5 は Gecko 5.0 ベースのブラウザで、2011 年 6 月 21 日にリリースされました。このページは Firefox 5 のリリースにあたり、開発者に影響する変更について情報をまとめたものです。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li>すべての HTML 要素が {{ domxref("element.accessKey", "accessKey") }} 属性を持つようになりました。また、{{ domxref("element.blur()", "blur()") }}, {{ domxref("element.click()", "click()") }}, {{ domxref("element.focus()", "focus()") }} メソッドもすべての要素に定義されました。これらの属性やメソッドは {{ domxref("HTMLElement") }} に定義されています。</li>
+ <li>HTML5 仕様への準拠により、<a href="/ja/docs/Character_Sets_Supported_by_Gecko">文字エンコーディング</a> UTF-7 と UTF-32 のサポートが削除されました。</li>
+ <li>Quirks モードにおいて、空の {{ HTMLElement("map") }} がマッチされず、空でない <code>&lt;map&gt;</code> にスキップしてしまう問題が修正されました。詳細は {{ HTMLElement("map") }} 要素のページにある <a href="/ja/docs/HTML/Element/map#Gecko_notes">Gecko の実装に関する注意書き</a> をご覧ください。</li>
+ <li>Android 版 Firefox mobile が {{ cssxref("@font-face") }} で WOFF を利用できるようになりました。</li>
+ <li>セキュリティ対策により、WebGL で <a href="/ja/docs/WebGL/Cross-Domain_Textures">もとのドメイン外からのテクスチャが読み込まれなくなりました</a>。将来的に <a href="/ja/docs/HTTP_access_control">HTTP access control</a> のサポートが行われ、セキュリティを確保したかたちでクロステクスチャが実現できるでしょう。</li>
+</ul>
+
+<h4 id="Canvas_improvements" name="Canvas_improvements">Canvas の修正</h4>
+
+<ul>
+ <li>{{ HTMLElement("canvas") }} 2D コンテキストの <code>createImageData()</code> メソッドに <code>ImageData</code> オブジェクト指定できるようになりました。このメソッドは指定したオブジェクトと同じ大きさの <a href="/ja/docs/HTML/Canvas/Pixel_manipulation_with_canvas#Creating_an_ImageData_object">新しい <code>ImageData</code> オブジェクトを作成</a> しますが、すべてのピクセルが透明な黒で描画されます。これは実装されたと書かれていたのですが、そうではありませんでした。</li>
+ <li>{{ domxref("CanvasGradient") }} の <code>addColorStop()</code> メソッドの呼び出しで非有限なカラーストップが指定された際、<code>INDEX_SIZE_ERR</code> が適切に投げられるようになりました (これまでは <code>SYNTAX_ERR</code> が投げられていました)。</li>
+ <li>{{ domxref("HTMLCanvasElement") }} の <code>toDataURL()</code> メソッド実装が修正され、指定した MIME 型をマッチングの前に小文字に変換するようになりました。</li>
+ <li><code>getImageData()</code> が修正され、canvas の境界を超えた矩形を受け入れるようになりました。canvas 外にあるピクセルは透明な黒として返されます。</li>
+ <li><code>drawImage()</code> と <code>createImageData()</code> が仕様に準拠し、負の引数を処理するようになりました。この処理は、適切な軸にそって矩形を反転させます。<strong>We need an article about <a class="external" href="http://dev.w3.org/csswg/css3-images/#default-sizing">CSS sizing</a> and how this works.</strong></li>
+ <li><code>createImageData()</code> の呼び出しで非有限な値が指定された際、<code>NOT_SUPPORTED_ERR</code> が適切に投げられるようになりました。</li>
+ <li>1px より小さな矩形が指定された際、<code>createImageData()</code> と <code>getImageData()</code> は適切に 1px 相当の ImageData を返すようになりました。</li>
+ <li><code>createRadialGradient()</code> の半径に負の値を指定した際、<code>INDEX_SIZE_ERR</code> が適切に投げられるようになりました。</li>
+ <li><code>createPattern()</code> や <code>drawImage()</code> の呼び出しで、画像に <code>null</code> や <code>undefined</code> が指定された際、<code>TYPE_MISMATCH_ERR</code> が適切に投げられるようになりました。</li>
+ <li><code>globalAlpha</code> に不正な値が指定されても <code>SYNTAX_ERR</code> が投げられないようになりました。このような場合は適切にただ無視されます。</li>
+ <li><code>translate()</code>, <code>transform()</code>, <code>rect()</code>, <code>clearRect()</code>, <code>fillRect()</code>, <code>strokeRect()</code>, <code>lineTo()</code>, <code>moveTo()</code>, <code>quadraticCurveTo()</code>, <code>arc()</code> に不正な値が指定されても例外が投げられないようになりました。このような場合は適切にただ無視されます。</li>
+ <li><code>shadowOffsetX</code>, <code>shadowOffsetY</code>, <code>shadowBlur</code> に不正な値が指定された際、それらはただ無視されるようになりました。</li>
+ <li><code>rotate</code>, <code>scale</code> に不正な値が指定された際、それらはただ無視されるようになりました。</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<dl>
+ <dt><a href="/ja/docs/CSS/CSS_animations">CSS Animations</a></dt>
+ <dd>CSS Animations がサポートされました。<code>-moz-</code> 接頭辞をつければ利用可能です。</dd>
+</dl>
+
+<h3 id="DOM">DOM</h3>
+
+<ul>
+ <li>{{ domxref("selection") }} オブジェクトの <a href="/ja/docs/DOM/Selection/modify"><code>modify()</code></a> メソッドが変更され、単語の選択で単語の後にある空白を含まなくなりました。この変更はプラットフォームごとの一貫性を向上させ、また WebKit の挙動とも一致します。</li>
+ <li>アクティブでないタブにおいて {{ domxref("window.setTimeout()") }} メソッドのタイムアウトが 1 秒に 1 回 を超えないようになりました。また、入れ子のタイムアウトが HTML5 仕様で定められた最小値 4ms になりました (これまでは 10ms でした)。</li>
+ <li>上記と同様に、アクティブでないタブにおける {{ domxref("window.setInterval()") }} も 1 秒に 1 回以下になりました。</li>
+ <li><a href="/ja/docs/DOM/XMLHttpRequest"><code>XMLHttpRequest</code></a> が <a href="/ja/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest#Detecting_any_load_end_condition"><code>loadend</code> イベントをサポート</a> for progress listeners. このイベントはすべての転送が終了した際 (つまり、<code>abort</code>, <code>error</code>, <code>load</code> イベントの後) に発生します。このイベントを利用すると、転送の成功・失敗に関わらず実行されるタスクを処理できます。</li>
+ <li>{{ domxref("Blob") }} オブジェクトと {{ domxref("File") }} オブジェクトの <code>slice()</code> メソッドが削除され、代わりに提案中のメソッドに置き換えられました。提案中のメソッドは JavaScript の <a href="/ja/docs/JavaScript/Reference/Global_Objects/Array/slice"><code>Array.slice()</code></a>, <a href="/ja/docs/JavaScript/Reference/Global_Objects/String/slice"><code>String.slice()</code></a> メソッドにより近いものです。現時点では <a href="/ja/docs/DOM/Blob#mozSlice()"><code>mozSlice()</code></a> という名前がつけられています。</li>
+ <li>{{ domxref("window.navigator.language") }} の値が <code>Accept-Language</code> <a href="/ja/docs/HTTP/Headers">HTTP ヘッダ</a> の値から決定されるようになりました。</li>
+ <li>DOM 仕様の要件により、{{ domxref("Node.prefix") }} プロパティが readonly になりました。</li>
+</ul>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>正規表現を関数のように呼び出せなくなりました。この変更は WebKit チームと互換性の確保について話し合った結果行われたものです。({{ WebkitBug(28285) }} をお読みください。この機能は長いこと存在していたものの、少なくとも MDC ではドキュメント化されていませんでした。)</li>
+ <li><a href="/ja/docs/JavaScript/Reference/Global_Objects/Function/isGenerator"><code>Function.prototype.isGenerator()</code></a> メソッドがサポートされました。個のメソッドによってある関数が <a href="/ja/docs/JavaScript/Guide/Iterators_and_Generators#Generators.3a_a_better_way_to_build_Iterators">generator</a> であるかを調べられます。</li>
+ <li>chrome コード内に生成された DOM 文書が sandbox 内のスクリプトに現れなくなりました。</li>
+ <li><a href="/ja/docs/JavaScript/Reference/Reserved_Words">予約語</a> <code>class</code>, <code>enum</code>, <code>export</code>, <code>extends</code>, <code>import</code>, <code>super</code> はこれまで Strict Mode のみで予約されていましたが、Strict Mode ではない通常のモードでも予約語扱いになりました。</li>
+ <li>JSON パーサが書き直され、スピードと準拠度が向上しました。この書き直しには {{ bug("572279") }} の修正も含まれています。</li>
+</ul>
+
+<h3 id="SVG">SVG</h3>
+
+<ul>
+ <li>{{ SVGAttr("class") }} SVG アトリビュートを動的に変化させられるようになりました。</li>
+ <li>{{ domxref("SVGLengthList") }}, {{ domxref("SVGNumberList") }}, {{ domxref("SVGPathSegList") }}, {{ domxref("SVGPointList") }} など、オブジェクトのリストを表す SVG DOM インターフェースがインデックスされ、配列のようにアクセス可能となりました。加えて、リスト中の項目数を表す <code>length</code> も持ちます。</li>
+</ul>
+
+<h3 id="HTTP">HTTP</h3>
+
+<ul>
+ <li>Firefox は <code>Keep-Alive</code> HTTP ヘッダを送信しないようになります。私たちはこのヘッダを正しく整形していませんでした。また、{{ httpheader("Connection") }} や {{ httpheader("Proxy-Connection") }} ヘッダに "keep-alive" を指定していたため重複しており、意味がなかったのです。</li>
+ <li>HTTP のトランザクションモデルを変更し、持続的接続プール内の接続を再利用するというより高度なものになりました。Necko はプールを {{ interwiki("wikipedia", "FIFO") }} と扱うのではなく、プール内の接続を {{ interwiki("wikipedia", "congestion window") }} (CWND) の大きい順に並べ替えます。Window のサイズ拡大を避けることで、多くのケースで HTTP トランザクションの確認応答時間 (RTT) を減少させることができるでしょう。</li>
+ <li>Firefox は <code>Content-Disposition</code> HTTP レスポンスヘッダについて、<code>filename</code>, <code>filename*</code> パラメタがどちらも与えられている場合にそれらをより効果的に処理するようになりました。これは <code>filename</code> が先に与えられている場合でも <code>filename*</code> をまず調べすべての名前を読み取ることで実現しています。これまでは最初にマッチしたパラメタが使われており、後により適切な名前が与えられていた場合でもそれが使われなかったのです。詳細は {{ bug(588781) }} をお読みください。</li>
+</ul>
+
+<h3 id="MathML">MathML</h3>
+
+<ul>
+ <li><a class="external" href="http://www.w3.org/TR/MathML3/chapter3.html#id.3.2.5.7.3">embellished operators</a> がサポートされました。</li>
+</ul>
+
+<h3 id="Developer_tools" name="Developer_tools">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Using_the_Web_Console#The_console_object">Web コンソールの <code>Console</code> オブジェクト</a> に <code>debug()</code> メソッドが導入されました。これは <code>log()</code> のエイリアスで、導入によっていくつかの Web サイトとの互換性が向上します。</li>
+</ul>
+
+<h2 id="アドオン開発者向けの変更点一覧">アドオン開発者向けの変更点一覧</h2>
+
+<p>すでに開発済みのアドオンを Firefox 5 向けにアップデートを行う方法については <a href="/ja/docs/Firefox/Updating_add-ons_for_Firefox_5">Firefox 5 へのアドオンのアップデート方法</a>をご覧ください。</p>
+
+<div class="note">注意:Firefox 5 は他のメジャーリリース版の Firefox と同様に、再コンパイルされたバイナリコンポーネントが必要となります。詳しくは<a href="/ja/docs/Developer_Guide/Interface_Compatibility#Binary_Interfaces">バイナリインターフェース</a>をご覧ください。</div>
+
+<h3 id="JavaScriptコードモジュールに対する変更点">JavaScriptコードモジュールに対する変更点</h3>
+
+<h4 id="新しいJavaScriptコードモジュール">新しいJavaScriptコードモジュール</h4>
+
+<ul>
+ <li><a href="/ja/docs/JavaScript_code_modules/Dict.jsm"><code>Dict.jsm</code></a>コードモジュールが追加されました。このモジュールはキーと値のペアの辞書に対する API を提供します。</li>
+</ul>
+
+<h4 id="NetUtil.jsm">NetUtil.jsm</h4>
+
+<ul>
+ <li><a href="/ja/docs/JavaScript_code_modules/NetUtil.jsm#asyncFetch()"><code>asyncFetch()</code></a> メソッドは今回から{{ interface("nsIInputStream") }} として入力ソースの特定をサポートします。</li>
+</ul>
+
+<h3 id="インターフェースの変更点">インターフェースの変更点</h3>
+
+<ul>
+ <li>{{ interface("nsIHttpChannelInternal") }} インターフェースはチャネルの端点のアドレスとポートの情報にアクセスする新しい属性を持っています。この情報は主にデバッグに用いることができます。</li>
+ <li>{{ HTMLElement("canvas") }} エレメントの {{ htmlattrxref("width", "canvas") }} と {{ htmlattrxref("height", "canvas") }} 属性は今回から符号付き整数から符合なし整数に変わり、IDLにおけるリフレクトを行います(<a href="/ja/docs/DOM/HTMLCanvasElement"><code>HTMLCanvasElement</code></a> をご覧ください)。</li>
+ <li><code>nsIAppStartup2</code> と {{ interface("nsIAppStartup_MOZILLA_2_0") }} インターフェースは{{ interface("nsIAppStartup") }} インターフェースに統合されました。</li>
+ <li><code>nsIDocShell_MOZILLA_2_0_BRANCH は</code> {{ interface("nsIDocShell") }} インターフェースに統合されました。</li>
+ <li><code>nsIFocusManager_MOZILLA_2_0_BRANCH インターフェースは </code>{{ interface("<code><code>nsIFocusManager</code></code>") }} インターフェースに統合されました。</li>
+ <li><code>nsIHTMLEditor_MOZILLA_2_0_BRANCH</code> インターフェースは {{ interface("nsIHTMLEditor") }} インターフェースに統合されました。</li>
+</ul>
+
+<h4 id="新しいインターフェース">新しいインターフェース</h4>
+
+<ul>
+ <li><code>nsIDOMAnimationEvent</code> が追加されました。 {{domxref("AnimationEvent")}}</li>
+</ul>
+
+<h4 id="削除されたインターフェース">削除されたインターフェース</h4>
+
+<p>次にあげるインターフェースはもはや必要がないと判断されました。</p>
+
+<ul>
+ <li><code>nsICiter</code> ({{ bug("633066") }} をご覧ください)</li>
+ <li><code>nsIDOM3Document</code> ({{ bug("639849") }} をご覧ください。)</li>
+ <li><code>nsIFIXptrEvaluator</code></li>
+ <li><code>nsISelectElement</code> ({{ bug("619996") }} をご覧ください。)</li>
+</ul>
+
+<h3 id="デバッグの補助">デバッグの補助</h3>
+
+<ul>
+ <li>新しい<a href="/ja/docs/Namespace/Mozilla/DebugOnly%3CT%3E"><code> DebugOnly&lt;T&gt;</code></a> ヘルパーはデバッグモードにおけるビルドにおいてのみ変数の定義を可能にしました。</li>
+</ul>
+
+<h3 id="JavaScript_API_(SpiderMonkey)">JavaScript API (SpiderMonkey)</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/SpiderMonkey/JSAPI_Reference/jsdouble">jsdouble</a></code><code> の値を C の符号付き整数型と符合なし整数型に変換するために <a href="/ja/docs/SpiderMonkey/JSAPI_Reference/JS_DoubleToInt32">JS_DoubleToInt32()</a></code> と <a href="/ja/docs/SpiderMonkey/JSAPI_Reference/JS_DoubleToInt32"><code>JS_DoubleToUint32()</code></a> が追加されました。</li>
+</ul>
+
+<h3 id="ビルドシステムの変更点">ビルドシステムの変更点</h3>
+
+<ul>
+ <li><code>mozconfig</code> ファイルがなくても Firefox をビルドできるようになり、 <a href="/ja/docs/Configuring_Build_Options#Choose_an_application"><code>--enable-application</code> setting</a> が "browser" のデフォルトになりました。コードをダウンロード後、<code>configure &amp;&amp; make</code> (or <code>make -f client.mk</code>) を行うだけで Firefox をビルドできます。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">参考</h2>
+
+<ul>
+ <li><a class="link-https" href="https://dev.mozilla.jp/2011/06/firefox5-backward-compatibility/">Firefox 5 の後方互換性に関わる修正のまとめ</a></li>
+ <li><a class="external" href="http://mozilla.jp/firefox/preview/faq/">高速リリースサイクルに関するよくある質問</a></li>
+</ul>
+
+<div>{{Firefox_for_developers('4')}}</div>
diff --git a/files/ja/mozilla/firefox/releases/50/index.html b/files/ja/mozilla/firefox/releases/50/index.html
new file mode 100644
index 0000000000..9526ed3419
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/50/index.html
@@ -0,0 +1,203 @@
+---
+title: Firefox 50 for developers
+slug: Mozilla/Firefox/Releases/50
+tags:
+ - Firefox
+ - Release Notes
+translation_of: Mozilla/Firefox/Releases/50
+---
+<p>Firefox 50 は、米国時間 2016 年 11 月 15 日にリリースされました。このページでは、開発者に影響する Firefox 50 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<ul>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("bdo")}} のデフォルトスタイルで、{{cssxref("unicode-bidi")}} の値が <code>isolate-override</code> になりました ({{bug(1249497)}})。</li>
+ <li>{{HTMLElement("track")}} 要素の {{htmlattrxref("src", "track")}} 属性の設定が正しく動作するようになりました ({{bug(1281418)}})。</li>
+ <li>{{HTMLElement("area")}}、{{HTMLElement("a")}}、{{HTMLElement("img")}}、{{HTMLElement("iframe")}}、{{HTMLElement("link")}} 要素の <code>referrerpolicy</code> 属性を、デフォルトで有効化しました ({{bug(1223838)}}、{{bug(1264165)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>dashed および dotted スタイルのボーダーに border-radius を設定したとき、角の部分を solid スタイルではなく指定したスタイルで描画するようになりました ({{bug(382721)}})。</li>
+ <li>非標準の {{cssxref(":-moz-full-screen-ancestor")}} 疑似クラスセレクターを削除しました ({{bug(1199529)}})。</li>
+ <li>仕様書から削除されたため、および実装していた主要ブラウザーが Firefox だけであったため、{{cssxref("box-sizing")}}<code>: padding-box</code> を削除しました ({{bug(1166728)}})。</li>
+ <li>{{cssxref("unicode-bidi")}} プロパティの値 <code>isolate</code>、<code>isolate-override</code>、<code>plaintext</code> の接頭辞を削除しました ({{bug(1141895)}})。</li>
+ <li>Quirk モードでリストのビュレットが、標準準拠モードと同様にリストのサイズを継承するようになりました ({{bug(648331)}})。</li>
+ <li>{{cssxref(":in-range")}} および {{cssxref(":out-of-range")}} 疑似クラスが、無効状態または読み取り専用の input にマッチしないように動作を変更しました ({{bug(1264157)}})。</li>
+ <li>{{cssxref(":any-link")}} 疑似クラスの接頭辞を削除しました ({{bug(843579)}})。</li>
+ <li>{{cssxref("border-image-repeat")}} で、値 <code>space</code> を実装しました ({{bug(720531)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>ES2015 の {{jsxref("Symbol.hasInstance")}} プロパティを実装しました ({{bug(1054906)}})。</li>
+ <li>ES2017 の {{jsxref("Object.getOwnPropertyDescriptors()")}} メソッドを実装しました ({{bug(1245024)}})。</li>
+ <li>Unicode および ignoreCase フラグを使用する {{jsxref("RegExp")}} の、\W の動作を最新の仕様草案に合わせて変更しました。K、S、k、s、KELVIN SIGN (U+212A)、LATIN SMALL LETTER LONG S (U+017F) にマッチしないようになりました ({{bug(1281739)}})。</li>
+</ul>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Web_Console/Console_messages#Source_maps">ウェブコンソールがソースマップを理解するようになりました。</a></li>
+ <li><a href="/ja/docs/Tools/Storage_Inspector#IndexedDB">ストレージインスペクターで、IndexedDB のオブジェクトストアから個々のアイテムを削除できるようになりました。</a></li>
+ <li><a href="/ja/docs/Tools/Memory">メモリーツールをデフォルトで有効化しました。</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/UI_Tour#Computed_view">ボックスモデルビューを計算済みビューに移動しました。</a></li>
+ <li><a href="/ja/docs/Tools/Web_Console/Console_messages#Viewing_network_request_details">ウェブコンソールで、XHR や Fetch() によるネットワークリクエストのスタックトレースを表示します。</a></li>
+</ul>
+
+<p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?list_id=13263766&amp;chfield=resolution&amp;chfieldfrom=2016-06-06&amp;chfieldvalue=FIXED&amp;resolution=FIXED&amp;classification=Client%20Software&amp;chfieldto=2016-08-01&amp;query_format=advanced&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;component=Developer%20Tools&amp;component=Developer%20Tools%3A%20about%3Adebugging&amp;component=Developer%20Tools%3A%20Animation%20Inspector&amp;component=Developer%20Tools%3A%20Canvas%20Debugger&amp;component=Developer%20Tools%3A%20Computed%20Styles%20Inspector&amp;component=Developer%20Tools%3A%20Console&amp;component=Developer%20Tools%3A%20CSS%20Rules%20Inspector&amp;component=Developer%20Tools%3A%20Debugger&amp;component=Developer%20Tools%3A%20DOM&amp;component=Developer%20Tools%3A%20Font%20Inspector&amp;component=Developer%20Tools%3A%20Framework&amp;component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&amp;component=Developer%20Tools%3A%20Inspector&amp;component=Developer%20Tools%3A%20JSON%20Viewer&amp;component=Developer%20Tools%3A%20Memory&amp;component=Developer%20Tools%3A%20Netmonitor&amp;component=Developer%20Tools%3A%20Object%20Inspector&amp;component=Developer%20Tools%3A%20Performance%20Tools%20%28Profiler%2FTimeline%29&amp;component=Developer%20Tools%3A%20Responsive%20Design%20Mode&amp;component=Developer%20Tools%3A%20Scratchpad&amp;component=Developer%20Tools%3A%20Shared%20Components&amp;component=Developer%20Tools%3A%20Source%20Editor&amp;component=Developer%20Tools%3A%20Storage%20Inspector&amp;component=Developer%20Tools%3A%20Style%20Editor&amp;component=Developer%20Tools%3A%20User%20Stories&amp;component=Developer%20Tools%3A%20Web%20Audio%20Editor&amp;component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&amp;component=Developer%20Tools%3A%20WebIDE&amp;product=Firefox">Firefox 49 から Firefox 50 の間に解決した開発ツール関連のバグ一覧</a></p>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<ul>
+ <li>実験的 (および非推奨) な <a href="https://en.wikipedia.org/wiki/SPDY">SPDY</a> 3.1 をデフォルトで無効にしました ({{bug(1287132)}})。</li>
+ <li>{{HTTPHeader("X-Content-Type-Options")}} をサポートしました ({{bug(471020)}})。</li>
+ <li>cookie の <strong><code>__Host-</code></strong> および <strong><code>__Secure-</code></strong> 接頭辞を実装しました。{{HTTPHeader("Set-Cookie")}} および {{bug(1283368)}} をご覧ください。</li>
+ <li>{{HTTPHeader("Referrer-Policy")}} ヘッダーを実装しました ({{bug(1264164)}})。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<ul>
+ <li>{{htmlelement("a")}} 要素の {{htmlattrxref("ping", "a")}} 属性が、<code><a href="/ja/docs/Web/Security/CSP/CSP_policy_directives#connect-src">connect-src</a></code> <a href="/ja/docs/Web/Security/CSP/CSP_policy_directives">CSP 1.1 ポリシーディレクティブ</a> に従うようになりました ({{bug(1100181)}})。</li>
+ <li><code><a href="/ja/docs/Web/Security/CSP/CSP_policy_directives#sandbox">sandbox</a></code> <a href="/ja/docs/Web/Security/CSP">CSP</a> ディレクティブをサポートしました ({{bug(671389)}})。</li>
+ <li><a href="/ja/docs/Web/API/Web_Workers_API/Using_web_workers#Content_security_policy">workers に content security policy を設定する</a> ことが可能になりました ({{bug (959388)}})。</li>
+ <li><a href="/ja/docs/Web/Security/CSP">Content Security Policy</a> の制限によりビーコンデータを送信できなかったとき、{{domxref("Navigator.sendBeacon()")}} メソッドで例外が発生しないようになりました。代わりに、想定どおり <code>false</code> を返します ({{bug(1234813)}})。</li>
+ <li>RC4 暗号のサポートは Firefox 36 から非推奨にしており、Firefox 44 では既定で無効にしました。1 年間の猶予期間が終了しましたので、Firefox 50 で RC4 のサポートを全面的に廃止しました (Google Chrome は 2016 年 8 月に RC4 のサポートを廃止しました)。今後、Firefox は RC4 暗号に出くわすと常に <code>SSL_ERROR_NO_CYPHER_OVERLAP</code> エラーが発生します。</li>
+</ul>
+
+<h3 id="Networking" name="Networking">ネットワーク</h3>
+
+<ul>
+ <li>非同期 {{domxref("XMLHttpRequest")}} でエラーが発生したとき、{{domxref("XMLHttpRequest.getAllResponseHeaders()")}} メソッドが空文字列を返すようになりました ({{bug(1286744)}})。</li>
+ <li>CORS または他のネットワークの制約により失敗した非同期 {{domxref("XMLHttpRequest")}} は <code>NetworkError</code> を返すのではなく、他のエラーと同様にキャッチ可能な {{event("error")}} が発生するようになりました ({{bug(709991)}})。</li>
+ <li>{{domxref("XMLHttpRequest.getResponseHeader()")}} および {{domxref("XMLHttpRequest.getAllResponseHeaders()")}} が、デフォルトで空のヘッダーを返すようになりました。これは設定項目 <code>network.http.keep_empty_response_headers_as_empty_string</code> で制御しています ({{bug(918721)}})。</li>
+ <li><code><a href="/ja/docs/Web/API/Request/cache">Request.cache</a></code> に <code>only-if-cached</code> オプションを追加しました ({{bug(1272436)}})。</li>
+</ul>
+
+<h3 id="DOM" name="DOM">DOM</h3>
+
+<ul>
+ <li>{{domxref("EventTarget.addEventListener()")}} の <code>once</code> オプションをサポートしました ({{bug(1287706)}})。</li>
+ <li>{{domxref("NodeList")}} インターフェイスがイテレート可能になり、{{domxref("NodeList.forEach()", "forEach()")}}、{{domxref("NodeList.values()", "values()")}}、{{domxref("NodeList.entries()")}}、{{domxref("NodeList.keys()")}} の各メソッドが使用可能になりました ({{bug(1290636)}})。</li>
+ <li>{{domxref("DOMTokenList")}} インターフェイスがイテレート可能になり、{{domxref("DOMTokenList.forEach()", "forEach()")}}、{{domxref("DOMTokenList.values()", "values()")}}、{{domxref("DOMTokenList.entries()")}}、{{domxref("DOMTokenList.keys()")}} の各メソッドが使用可能になりました ({{bug(1290636)}})。</li>
+ <li>{{domxref("Document.createElement()")}} および {{domxref("Document.createElementNS()")}} メソッドで、<a href="/ja/docs/Web/Web_Components/Custom_Elements">custom elements</a> を作成するための省略可能な引数 <code>options</code> を追加しました ({{bug(1276579)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<ul>
+ <li><code>allowReorder</code> 属性を廃止して、この属性に設定されていた動作を SVG {{SVGElement("switch")}} 要素の既定の動作にしました ({{bug(1279690)}})。</li>
+ <li>最新の SVG2 仕様に従って、SVG {{SVGElement("image")}} 要素の {{SVGAttr("preserveAspectRatio")}} 属性のキーワード <code>defer</code> を削除しました ({{bug(1280425)}})。</li>
+</ul>
+
+<h3 id="Drag_and_Drop_API" name="Drag_and_Drop_API">Drag and Drop API</h3>
+
+<ul>
+ <li>HTML Drag and Drop API を使用してドラッグアンドドロップしている複数のアイテムにアクセスできる、{{domxref("DataTransfer.items")}} プロパティを実装しました。これを可能にするため、{{domxref("DataTransferItem")}} および {{domxref("DataTransferItemList")}} インターフェイスもサポートしました({{bug(906420)}})。これはデフォルトで有効です。</li>
+ <li>古く廃止済みである、Firefox 固有の drag and drop API イベント <code>dragdrop</code> および <code>draggesture</code> のサポートを廃止しました。これらを使用し続けているコードは、 <a href="/ja/docs/Web/API/HTML_Drag_and_Drop_API">HTML drag and drop API</a> を使用するように更新してください ({{bug(1162050)}}。</li>
+</ul>
+
+<h3 id="Pointer_Lock_API" name="Pointer_Lock_API">Pointer Lock API</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Pointer_Lock_API">Pointer Lock API</a> の接頭辞を削除しました ({{bug(991899)}})。</li>
+ <li>Firefox 50 より前のバージョンではドアハンガーを使用して <code><a href="/ja/docs/Web/API/Element/requestPointerLock">requestPointerLock()</a></code> を許可するかを問い合わせており、ユーザーが許可するまで pointer lock を有効化しませんでした。Firefox 50 より、pointer lock は <a href="/ja/docs/Web/API/Fullscreen_API">fullscreen API</a> と同様に即座に許可されますが、終了方法をユーザーに説明する通知を表示します ({{bug(1273351)}})。</li>
+</ul>
+
+<h3 id="IndexedDB" name="IndexedDB">IndexedDB</h3>
+
+<ul>
+ <li>{{domxref("IDBDatabase")}} オブジェクトで対応するデータベースが意図せず閉じられたときに、{{event("close")}} イベントが送信されるようになりました ({{bug(1151017)}})。</li>
+</ul>
+
+<h3 id="Service_Workers" name="Service_Workers">Service Workers</h3>
+
+<ul>
+ <li>{{domxref("WindowClient.navigate()")}} メソッドを実装しました。このメソッドで、Service Worker で制御されているクライアントウィンドウに、指定した URL を開くことができます ({{bug(1218148)}})。</li>
+</ul>
+
+<h3 id="WebGL" name="WebGL">WebGL</h3>
+
+<ul>
+ <li>{{domxref("EXT_shader_texture_lod")}} WebGL 拡張を実装しました ({{bug(1111689)}})。</li>
+ <li>PBO (<code>PIXEL_UNPACK_BUFFER</code>) を実装するため、<a href="/ja/docs/Web/API/WebGL2RenderingContext">WebGL 2</a> 向けに texImage 関係のメソッドを更新しました ({{bug(1280499)}})。</li>
+</ul>
+
+<h3 id="WebRTC" name="WebRTC">WebRTC</h3>
+
+<ul>
+ <li>{{domxref("MediaStream")}} にトラックを追加すると、仕様書で示されているように {{event("addtrack")}} イベントが発生するようになりました。このイベントは {{domxref("MediaStreamTrackEvent")}} タイプであり、トラックが追加されたストリームで発生します。<code>"addtrack"</code> イベントを扱うために、{{domxref("EventTarget.addEventListener", "MediaStream.addEventListener('addtrack', ...)")}} または {{domxref("MediaStream.onaddtrack")}} プロパティを使用できます。</li>
+ <li>{{domxref("MediaStreamTrack")}} インターフェイスが、{{event("ended")}} イベントおよび {{domxref("MediaStreamTrack.onended")}} イベントハンドラをサポートしました。</li>
+ <li>Firefox で {{domxref("MediaStreamTrack.readyState")}} プロパティをサポートしました。これは、トラックが生存中であるか永久に終了した状態であるかを示します。</li>
+ <li>{{domxref("MediaStreamTrack")}} の {{domxref("MediaStreamTrack.getConstraints", "getConstraints()")}} および {{domxref("MediaStreamTrack.getSettings", "getSettings()")}} メソッドを実装しました。それぞれ、カスタマイズしたプロパティ制約で直近に適用された値のセットを取得する、およびトラックで制限可能なすべてのプロパティの実際の値を取得するメソッドです。付随するデータ型もドキュメントに記載しています。</li>
+ <li>{{domxref("RTCDataChannel.stream")}} プロパティを削除しました。これは <a href="/ja/docs/Mozilla/Firefox/Releases/24">Firefox 24</a> で {{domxref("RTCDataChannel.id")}} に置き換えられましたが、後方互換性のためにサポートしていました。まだ <code>id</code> プロパティを使用するようにコードを更新していない場合は、必ず更新してください。</li>
+</ul>
+
+<h3 id="Web_Audio_API" name="Web_Audio_API">Web Audio API</h3>
+
+<ul>
+ <li>{{domxref("PannerNode")}} インターフェイスで、オーディオソースの位置 ({{domxref("PannerNode.positionX")}}、{{domxref("PannerNode.positionY")}}、{{domxref("PannerNode.positionZ")}}) や方向性 ({{domxref("PannerNode.orientationX")}}、{{domxref("PannerNode.orientationY")}}、{{domxref("PannerNode.orientationZ")}}) に関する 3D 直交座標系のプロパティをサポートしました。</li>
+ <li>一般的な {{interwiki("wikipedia", "無限インパルス応答")}} (IIR) フィルターを生成する、{{domxref("IIRFilterNode")}} インターフェイスを実装しました。</li>
+ <li>{{domxref("WindowTimers.setInterval", "Window.setInterval()")}} および {{domxref("WindowTimers.setTimeout", "Window.setTimeout()")}} で作成したタイマーをバッググラウンドのタブで抑制する機能は、<a href="/ja/docs/Web/API/Web_Audio_API">Web Audio API</a> の {{domxref("AudioContext")}} がアクティブで音声を再生しているときに実施しないようになりました。これは、タイミングに敏感な音声再生 (タイマーを使用して個々の音を生成する音楽プレイヤーなど) をバックグラウンドで行う際の問題を避ける助けになります ({{bug(1181073)}})。</li>
+</ul>
+
+<h3 id="AudioVideo" name="AudioVideo">Audio/Video</h3>
+
+<ul>
+ <li><code>AlignSetting</code> 列挙型 ({{domxref("VTTCue.align")}} で使用可能な値を表す) が以前、誤って <code>"center"</code> ではなく <code>"middle"</code> を含んでいました。この問題を修正しました ({{bug(1276130)}})。</li>
+ <li>非標準かつ実験的な {{domxref("HTMLMediaElement.seekToNextFrame()")}} メソッドが、メディア内の次のフレームを同期的ではなく非同期的にシークするようになりました。また、シークが完了すると fullfill になる {{jsxref("Promise")}} を返します。</li>
+ <li>{{domxref("HTMLTrackElement")}} の実装を、ドキュメント内にない場合でも {{HTMLElement("track")}} 要素がリソースを読み込めるように修正しました ({{bug(871747)}})。</li>
+</ul>
+
+<h3 id="Battery_API" name="Battery_API">Battery API</h3>
+
+<ul>
+ <li>Firefox 43 から非推奨にしていた {{domxref("navigator.battery")}} プロパティを廃止および削除しました。代わりに、バッテリーの {{jsxref("Promise")}} を取得する {{domxref("navigator.getBattery()")}} メソッドを使用してください。これは {{domxref("BatteryManager")}} が使用可能になったときに完了します。{{domxref("BatteryManager")}} は、promise が成功した場合のハンドラに渡されます ({{bug(12593355)}})。</li>
+</ul>
+
+<h3 id="Files_and_directories" name="Files_and_directories">ファイルとディレクトリー</h3>
+
+<ul>
+ <li>以前は Google Chrome との互換性しか有していなかったサイトとの互換性を向上するため、<a href="/ja/docs/Web/API/File_and_Directory_Entries_API">File and Directory Entries API</a> のサブセットを実装しました ({{bug(1265767)}})。
+
+ <ul>
+ <li>非同期 API インターフェイスを実装しましたが、ファイルの読み取りしかサポートしませんので注意してください。例えば {{domxref("FileSystemFileEntry.createWriter()")}} メソッドは何も行いません。</li>
+ <li>以下のインターフェイスを実装しました:
+ <ul>
+ <li>{{domxref("FileSystem")}}</li>
+ <li>{{domxref("FileSystemEntry")}} (プロパティのみ。メソッドは未実装)</li>
+ <li>{{domxref("FileSystemFileEntry")}} ({{domxref("FileSystemFileEntry.createWriter", "createWriter()")}} を除く)</li>
+ <li>{{domxref("FileSystemDirectoryEntry")}} ({{domxref("FileSystemDirectoryEntry.removeRecursively", "removeRecursively()")}} を除く)</li>
+ <li>{{domxref("FileSystemDirectoryReader")}}</li>
+ </ul>
+ </li>
+ <li>{{HTMLElement("input")}} 要素の {{HTMLattrxref("webkitdirectory", "input")}} 属性および {{domxref("HTMLInputElement.webkitdirectory")}} を実装しました。ファイルではなくディレクトリーを受け入れるように、file 型の input を設定できます ({{bug(1258489)}})。</li>
+ <li>{{domxref("HTMLInputElement.webkitEntries")}} を実装しました。これは、選択されたアイテムを表す {{domxref("FileSystemEntry")}} ベースのオブジェクトの配列を返します。</li>
+ <li>{{domxref("File.webkitRelativePath")}} を実装しました。これは、{{domxref("HTMLInputElement.webkitGetEntries()")}} が返すリスト内のアイテムのひとつである {{domxref("FileSystemDirectoryEntry")}} に含まれているルートに対して相対的な、ファイルのパスを持ちます。</li>
+ <li>この API で何をサポートしているかについて、詳しくは <a href="/ja/docs/Web/API/File_and_Directory_Entries_API/Firefox_support">File and Directory Entries API support in Firefox</a> をご覧ください。</li>
+ <li>これらの API はデフォルトで有効です。一部の API は以前から使用できましたが、設定で無効化されていました ({{bug(1288683)}})。</li>
+ </ul>
+ </li>
+ <li><a href="/ja/docs/Web/API/File_and_Directory_Entries_API">File and Directory Entries API</a> の一部として、{{domxref("DataTransferItem.webkitGetAsEntry()")}} を実装しました。これは、ドロップされたファイルを表す {{domxref("FileSystemEntry")}} を取得できます ({{bug(1289255)}})。これはデフォルトで有効です。</li>
+ <li><a href="https://wicg.github.io/directory-upload/proposal.html">Directory Upload API</a> 提案の一部である <code>HTMLInputElement.directory</code> プロパティを <code>allowdirs</code> に改名しました ({{bug(1288681)}})。このプロパティは設定で無効化しています。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.jp/firefox/50.0/releasenotes/">Firefox 50.0 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/50/">Firefox 50 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2016/09/firefox-50-addon-compatibility/">Firefox 50 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(49)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/51/index.html b/files/ja/mozilla/firefox/releases/51/index.html
new file mode 100644
index 0000000000..a403bb460b
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/51/index.html
@@ -0,0 +1,234 @@
+---
+title: Firefox 51 for developers
+slug: Mozilla/Firefox/Releases/51
+tags:
+ - Firefox
+ - Mozilla
+ - Release Notes
+translation_of: Mozilla/Firefox/Releases/51
+---
+<p>Firefox 51 は、米国時間 2017 年 1 月 24 日にリリースされました。このページでは、開発者に影響する Firefox 51 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("menu")}} 要素内でセパレーターとして {{HTMLElement("hr")}} が使用可能になりました ({{bug(870388)}})。</li>
+ <li>{{HTMLElement("input")}} および {{HTMLElement("textarea")}} 要素の <code>selectionStart</code> および <code>selectionEnd</code> 属性が、テキストが選択されていない場合に 0 ではなく、現在のテキスト入力カーソルの位置を正しく返すようになりました ({{bug(1287655)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>&lt;input type="radio"&gt; 向けに {{cssxref(":indeterminate")}} を実装しました({{bug(885359)}})。</li>
+ <li><code>&lt;input type="text"&gt;</code> 向けに {{cssxref(":placeholder-shown")}} を実装しました ({{bug(1069015)}})。</li>
+ <li>{{cssxref("::placeholder")}} 疑似要素の接頭辞を削除しました ({{bug(1069012)}})。</li>
+ <li>{{cssxref(":valid")}} CSS 疑似クラスが有効な {{HTMLElement("form")}} 要素にマッチしない問題を修正しました ({{bug(1285425)}})。</li>
+ <li>{{cssxref("unicode-bidi")}} の値 <code>plaintext</code> が、縦書きモードでも動作するようになりました ({{bug(1302734)}})。</li>
+ <li>{{cssxref("clip-path")}} の値 <code>fill-box</code> および <code>stroke-box</code> を正式にサポートしました。以前は <code>border-box</code> の別名でした ({{bug(1289011)}})。</li>
+ <li>max-height が指定された、単一行で高さが自動の flex コンテナ内で、flex ラインの高さを抑える (引き延ばされた flex アイテムを抑える) ようになりました (仕様変更) ({{bug(1000957)}})。</li>
+ <li>Firefox の添え字付き子要素疑似クラス ({{cssxref(":nth-child()")}} や {{cssxref(":first-child")}} など) の実装を、CSS4 使用に準拠するよう更新しました。これらの疑似クラスは親要素の子ではなく、適切な兄弟要素にマッチするようになりました。これにより親が存在しない場合や親が {{domxref("Element")}} ではない場合でも、疑似クラスを使用できます ({{bug(1300374)}}。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>ES2015 の {{jsxref("Symbol.toStringTag")}} プロパティを実装しました ({{bug(1114580)}})。</li>
+ <li>ES2015 の {{jsxref("TypedArray.prototype.toString()")}} および {{jsxref("TypedArray.prototype.toLocaleString()")}} メソッドを実装しました ({{bug(1121938)}})。</li>
+ <li>{{jsxref("DateTimeFormat.prototype.formatToParts()")}} メソッドが使用可能になりました ({{bug(1289340)}})。</li>
+ <li>{{jsxref("Statements/const", "const")}} および {{jsxref("Statements/let", "let")}} が ES2015 に完全準拠しました ({{bug(950547)}})。</li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a></code> ループ内で {{jsxref("Statements/const", "const")}} を使用すると {{jsxref("SyntaxError")}} が発生せず、イテレーションのたびに新たなバインディングを行うようになりました ({{bug(1101653)}})。</li>
+ <li>非推奨の <a href="/ja/docs/Web/JavaScript/Reference/Statements/for_each...in">for each...in</a> ループは、<a href="/ja/docs/Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated">コンソールで警告が発生する</a> ようになりました ({{bug(1293205)}})。標準化された <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a></code> ループを使用するように、コードを移行してください。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Statements/function*">ジェネレーター関数</a> は <a href="/ja/docs/Web/JavaScript/Reference/Statements/label">label</a> を持つことができなくなりました。また、ラベル名として "<code>let</code>" が許可されなくなりました ({{bug(1288459)}})。</li>
+ <li>非推奨の <a href="/ja/docs/Web/JavaScript/Reference/Statements/Legacy_generator_function">古いジェネレーター関数</a> を <a href="/ja/docs/Web/JavaScript/Reference/Functions/Method_definitions">メソッド定義</a> 内で使用すると、エラーが発生するようになりました ({{bug(1199296)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols#The_iterator_protocol">iterator プロトコル</a> の <code>next()</code> メソッドは、戻り値がオブジェクトではない場合に {{jsxref("TypeError")}} が発生するようになりました ({{bug(1016936)}})。</li>
+</ul>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Network_Monitor#Timings">ネットワークモニターで、ネットワーク要求の "ブロック" 状態を表示するようになりました。</a></li>
+ <li><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?list_id=13263768&amp;resolution=FIXED&amp;classification=Client%20Software&amp;chfieldto=2016-09-19&amp;query_format=advanced&amp;chfield=resolution&amp;chfieldfrom=2016-08-01&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;component=Developer%20Tools&amp;component=Developer%20Tools%3A%20about%3Adebugging&amp;component=Developer%20Tools%3A%20Animation%20Inspector&amp;component=Developer%20Tools%3A%20Canvas%20Debugger&amp;component=Developer%20Tools%3A%20Computed%20Styles%20Inspector&amp;component=Developer%20Tools%3A%20Console&amp;component=Developer%20Tools%3A%20CSS%20Rules%20Inspector&amp;component=Developer%20Tools%3A%20Debugger&amp;component=Developer%20Tools%3A%20DOM&amp;component=Developer%20Tools%3A%20Font%20Inspector&amp;component=Developer%20Tools%3A%20Framework&amp;component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&amp;component=Developer%20Tools%3A%20Inspector&amp;component=Developer%20Tools%3A%20JSON%20Viewer&amp;component=Developer%20Tools%3A%20Memory&amp;component=Developer%20Tools%3A%20Netmonitor&amp;component=Developer%20Tools%3A%20Object%20Inspector&amp;component=Developer%20Tools%3A%20Performance%20Tools%20%28Profiler%2FTimeline%29&amp;component=Developer%20Tools%3A%20Responsive%20Design%20Mode&amp;component=Developer%20Tools%3A%20Scratchpad&amp;component=Developer%20Tools%3A%20Shared%20Components&amp;component=Developer%20Tools%3A%20Source%20Editor&amp;component=Developer%20Tools%3A%20Storage%20Inspector&amp;component=Developer%20Tools%3A%20Style%20Editor&amp;component=Developer%20Tools%3A%20User%20Stories&amp;component=Developer%20Tools%3A%20Web%20Audio%20Editor&amp;component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&amp;component=Developer%20Tools%3A%20WebIDE&amp;product=Firefox">Firefox 50 から Firefox 51 の間に解決した開発ツール関連のバグ一覧</a></li>
+</ul>
+
+<h3 id="WebGL" name="WebGL">WebGL</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/WebGL_API">WebGL 2</a> をデフォルトで有効化しました。<a href="http://webglsamples.org/WebGL2Samples/">webglsamples.org/WebGL2Samples</a> でいくつかのデモをご覧ください。
+
+ <ul>
+ <li>WebGL 2 は、{{HTMLElement("canvas")}} 要素に OpenGL ES 3.0 をもたらす {{domxref("WebGL2RenderingContext")}} インターフェイスを提供します。</li>
+ <li>新機能:
+ <ul>
+ <li><a href="/ja/docs/Web/API/WebGL2RenderingContext/texImage3D">3D テクスチャ</a>、</li>
+ <li><a href="/ja/docs/Web/API/WebGLSampler">Sampler object</a>、</li>
+ <li><a href="/ja/docs/Web/API/WebGL2RenderingContext#Uniform_buffer_objects">Uniform Buffer object</a>、</li>
+ <li><a href="/ja/docs/Web/API/WebGLSync">Sync object</a>、</li>
+ <li><a href="/ja/docs/Web/API/WebGLQuery">Query object</a>、</li>
+ <li><a href="/ja/docs/Web/API/WebGLTransformFeedback">Tranform Feedback object</a>、</li>
+ <li>WebGL 2 のコア機能に昇格した拡張: <a href="/ja/docs/Web/API/WebGLVertexArrayObject">Vertex Array object</a>、<a href="/ja/docs/Web/API/WebGL2RenderingContext/drawArraysInstanced">instancing</a>、<a href="/ja/docs/Web/API/WebGL2RenderingContext/drawBuffers">Multiple Render Targets</a>、<a href="/ja/docs/Web/API/EXT_frag_depth">fragment depth</a>。</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li><code>WEBGL_compressed_texture_es3</code> 拡張 (Firefox 46 で実装) を {{domxref("WEBGL_compressed_texture_etc")}} に改名して ({{bug(1316778)}})、WebGL 2 コンテキストにデフォルトで含まれないようになりました ({{bug(1306174)}})。</li>
+ <li>{{domxref("EXT_disjoint_timer_query")}} 拡張を、<code>WebGLTimerQuery</code> オブジェクトではなく {{domxref("WebGLQuery")}} オブジェクトを使用するように更新しました ({{bug(1308057)}})。</li>
+ <li>{{domxref("OES_vertex_array_object")}} 拡張が、独自の <code>WebGLVertexArrayObjectOES</code> オブジェクトではなく WebGL 2 の {{domxref("WebGLVertexArrayObject")}} オブジェクトを使用するようになりました ({{bug(1318523)}})。</li>
+ <li>{{domxref("WebGLRenderingContext.texImage2D()")}}、{{domxref("WebGLRenderingContext.texSubImage2D()")}}、{{domxref("WebGL2RenderingContext.texImage3D()")}}、{{domxref("WebGL2RenderingContext.texSubImage3D()")}} といったメソッドで、テクスチャ画像のソースとして {{domxref("ImageBitmap")}} が使用可能になりました ({{bug(1324924)}})。</li>
+</ul>
+
+<h3 id="IndexedDB_v2" name="IndexedDB_v2">IndexedDB v2</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/IndexedDB_API">IndexedDB</a> バージョン 2 の実装が完了しました:
+
+ <ul>
+ <li>{{domxref("IDBObjectStore.getKey()")}} メソッドをサポートしました ({{bug(1271506)}})。</li>
+ <li>{{domxref("IDBCursor.continuePrimaryKey()")}} メソッドをサポートしました ({{bug(1271505)}})。</li>
+ <li>バイナリーキーをサポートしました ({{bug(1271500)}})。</li>
+ <li><a href="https://hacks.mozilla.org/2016/10/whats-new-in-indexeddb-2-0/">"What’s new in IndexedDB 2.0?" – Mozilla hacks</a> もご覧ください。</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="Canvas" name="Canvas">Canvas</h3>
+
+<ul>
+ <li>非標準の <code>CanvasRenderingContext2D.mozFillRule</code>() メソッドを削除しました。塗りつぶし規則は、標準の {{domxref("CanvasRenderingContext2D.fill()")}} メソッドの引数で定義できます ({{bug(826619)}})。</li>
+ <li>{{domxref("CanvasRenderingContext2D.imageSmoothingEnabled")}} の接頭辞を削除しました ({{bug(768072)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<ul>
+ <li>{{SVGAttr("tabindex")}} 属性を追加しました ({{bug(778654)}})。</li>
+ <li>{{SVGAttr("xlink:href")}} を不要にさせる、{{SVGAttr("href")}} 属性を追加しました ({{bug(1245751)}})。</li>
+ <li>{{domxref("SVGElement.dataset")}} プロパティと {{SVGAttr("data-*")}} SVG 属性一式を使用して、SVG 要素でカスタムデータ属性を使用できるようになりました ({{bug(921834)}})。</li>
+ <li>{{HTMLElement("img")}} 要素内の SVG で使用する CSS アニメーションが、再び動作するようになりました。これは、過去のリグレッションでした ({{bug(1190881)}})。</li>
+</ul>
+
+<h3 id="Web_Workers" name="Web_Workers">Web Workers</h3>
+
+<ul>
+ <li>非標準かつ廃止扱いの {{domxref("WorkerGlobalScope.onclose")}} イベントハンドラと、{{event("close")}} イベントを {{domxref("Worker")}} で使用する機能を Firefox から削除しました。</li>
+</ul>
+
+<h3 id="Networking" name="Networking">ネットワーク</h3>
+
+<ul>
+ <li>MIME タイプ <code>image/*</code>、<code>video/*</code>、<code>audio/*</code>、<code>text/csv</code> で提供されるスクリプトをブロックして、読み込みおよび実行しないようになりました。{{HTMLElement("script")}} 要素を使用して宣言したとき、あるいは {{domxref("Worker.importScripts()")}}、{{domxref("Worker.Worker","Worker()")}}、{{domxref("SharedWorker.SharedWorker", "SharedWorker()")}} を使用して読み込んだときに発生します ({{bug(1229267)}} and {{bug(1288361)}})。</li>
+ <li>公式に信頼された認証局から、SHA-1 証明書のサポートを削除しました ({{bug(1302140)}})。詳しくは、<a href="https://blog.mozilla.org/security/2016/10/18/phasing-out-sha-1-on-the-public-web/">Phasing Out SHA-1 on the Public Web</a> もご覧ください。</li>
+ <li>WoSign および StartCom の新たな証明書は、今後受け入れません ({{bug(1309707)}})。詳しくは <a href="https://blog.mozilla.org/security/2016/10/24/distrusting-new-wosign-and-startcom-certificates/">Distrusting New WoSign and StartCom Certificates</a> をご覧ください。</li>
+ <li>情報漏えいを避けるために <a href="/ja/docs/Mozilla/Projects/Necko/Proxy_Auto-Configuration_(PAC)_file">PAC</a> の <code>FindProxyForURL(url, host)</code> 関数は、https:// URL からパスおよびクエリーを取り除くようになりました ({{bug(1255474)}}、<a href="https://www.contextis.com//resources/blog/leaking-https-urls-20-year-old-vulnerability/">Sniffing HTTPS URLS with malicious PAC files</a>、<code>CVE-2017-5384</code> をご覧ください)。</li>
+</ul>
+
+<h3 id="XHR" name="XHR">XHR</h3>
+
+<ul>
+ <li>{{domxref("XMLHttpRequest.responseXML")}} プロパティは、受信したデータを解析する際にパースエラーが発生した場合に、先頭に &lt;parsererror&gt; ノードを置いた部分的な {{domxref("Document")}} を返さないようになりました。代わりに、正しく <code>null</code> を返します ({{bug(289714)}})。</li>
+ <li>最新の仕様書に合わせて、{{domxref("XMLHttpRequest.setRequestHeader()", "setRequestHeader()")}} で {{HTTPHeader("Accept")}} ヘッダーを設定していない {{domxref("XMLHttpRequest")}} は、値として <code>*/*</code> を設定した Accept ヘッダーを送信するようになりました ({{bug(918752)}})。</li>
+ <li>{{domxref("XMLHttpRequest.open()")}} で、パラメーター <code>username</code> および <code>password</code> を省略した場合の既定値を、仕様書に従って <code>null</code> にするよう修正しました ({{bug(933759)}})。</li>
+</ul>
+
+<h3 id="WebRTC" name="WebRTC">WebRTC</h3>
+
+<ul>
+ <li>{{domxref("RTCPeerConnection.removeStream()")}} メソッドを削除しました。これは Firefox 22 から非推奨であり、長い間 <code>NotSupportedError</code> が発生していました。代わりに、ストリームの各トラックで {{domxref("RTCPeerConnection.removeTrack()")}} を使用しなければなりません。</li>
+ <li>WebRTC で、デフォルトで VP9 コーデックをサポートします。Firefox 46 で VP9 を追加したときはデフォルトで無効化していましたが、有効化すれば優先的に選択するコーデックになりました。ただし、CPU 使用率のために第 2 の選択肢 (VP8 より後) になることがありました。</li>
+ <li>{{domxref("HTMLMediaElement.captureStream()")}} メソッドは、指定した {{HTMLElement("video")}} または {{HTMLElement("audio")}} のコンテンツを含む {{domxref("MediaStream")}} を返します。このメソッドはまだ <code>mozCaptureStream()</code> として接頭辞がついており、仕様書に完全には準拠していないことに注意が必要です。</li>
+</ul>
+
+<h3 id="Audiovideo" name="Audiovideo">Audio/video</h3>
+
+<ul>
+ <li>FLAC コンテナーおよび Ogg コンテナーの FLAC (<a href="https://xiph.org/flac/index.html">FLAC コーデック</a>) をサポートしました ({{bug(1195723)}})。サポートする FLAC の MIME タイプは、<code>audio/flac</code> および <code>audio/x-flac</code> です。Ogg コンテナーの FLAC でサポートする MIME タイプは、<code>audio/ogg; codecs=flac</code> および <code>video/ogg; codecs=flac</code> です。</li>
+ <li>MP4 で FLAC をサポートしました (MSE の有無にかかわらず) ({{bug(1303888)}})。</li>
+ <li>Firefox 50 で、{{domxref("WindowTimers.setInterval", "Window.setInterval()")}} および {{domxref("WindowTimers.setTimeout", "Window.setTimeout()")}} で作成したタイマーをバッググラウンドのタブで抑制する機能は、<a href="/ja/docs/Web/API/Web_Audio_API">Web Audio API</a> の {{domxref("AudioContext")}} がアクティブで音声を再生しているときに実施しないようになりました。しかし、これはタイミングに敏感な音声再生 (タイマーを使用して個々の音を生成する音楽プレイヤーなど) が正しく動作しない問題を、すべての状況では解決できませんでした。このため、Firefox 51 では音声を再生していない場合でも {{domxref("AudioContext")}} が存在するバックグラウンドタブで抑制しないようになりました。</li>
+</ul>
+
+<h3 id="DOM" name="DOM">DOM</h3>
+
+<ul>
+ <li>{{domxref("DOMImplementation.hasFeature()")}} は、どのような場合でも <code>true</code> を返すようになりました ({{bug(984778)}})。</li>
+ <li>{{domxref("HTMLInputElement")}} および {{domxref("HTMLTextAreaElement")}} の <code>selectionStart</code> および <code>selectionEnd</code> プロパティが、テキストが選択されていない場合に 0 ではなく、現在のテキスト入力カーソルの位置を正しく返すようになりました ({{bug(1287655)}})。</li>
+ <li>{{domxref("HTMLImageElement")}} インターフェイスと対応する {{HTMLElement("img")}} 要素で {{htmlattrxref("onerror")}} イベントハンドラーをサポートしました。<a href="/ja/docs/Web/API/HTMLImageElement#Errors">画像の読み込みや解釈を行おうとしてエラーが発生</a> すると、{{event("error")}} イベントを要素に送信します。</li>
+ <li>{{domxref("Animation.effect", "effect")}} プロパティに値を設定して、Web {{domxref("Animation")}} のエフェクトを変更できるようになりました。以前は、このプロパティが読み取り専用でした ({{bug(1049975)}})。</li>
+ <li>Permissions API の {{domxref("Permissions.revoke()")}} メソッドを追加しました。設定項目 (<code>dom.permissions.revoke.enable</code>) で制御しており、設計や存在自体について <a href="https://www.w3.org/2011/webappsec/">Web Application Security Working Group</a> で議論されているため、デフォルトで無効化しています。</li>
+ <li><a href="/ja/docs/Web/API/Storage_API">Storage API</a> の {{domxref("NavigatorStorage.storage", "navigator.storage")}} プロパティおよび {{domxref("StorageManager.estimate()")}} メソッドを、必要なサポートコードと共に実装しました。ストレージユニットの永続化機能は未実装です。{{bug(1267941)}} をご覧ください。</li>
+ <li>セキュリティ上の理由で、{{domxref("BatteryManager.chargingTime")}} および {{domxref("BatteryManager.dischargingTime")}} は戻り値をもっとも近い 15 分単位の値に丸めるようになりました ({{bug(1292655)}})。</li>
+</ul>
+
+<h3 id="Events" name="Events">イベント</h3>
+
+<ul>
+ <li>Firefox で {{domxref("GlobalEventHandlers.onanimationstart", "onanimationstart")}}、{{domxref("GlobalEventHandlers.onanimationiteration", "onanimationiteration")}}、{{domxref("GlobalEventHandlers.onanimationstart", "onanimationstart")}} イベントハンドラーと、{{domxref("EventTarget.addEventListener", "addEventListener()")}} でそれらに対応するイベントをサポートしました ({{bug(911987)}})。</li>
+ <li>Firefox で {{domxref("GlobalEventHandlers.ontransitionend", "ontransitionend")}} イベントハンドラーをサポートしました ({{bug(911987)}})。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<ul>
+ <li>ログインページ (すなわち <code><a href="/ja/docs/Web/HTML/Element/input/password">&lt;input type="password"&gt;</a></code> フィールドを含むページ) でログイン情報が安全でない方法で送信されると思われる場合に、Firefox はユーザーに警告するため、アドレスバーに打ち消し線付きの錠前のアイコンを表示します ({{bug(1319119)}})。詳しくは <a href="/ja/docs/Web/Security/Insecure_passwords">安全でないパスワード</a> をご覧ください。</li>
+</ul>
+
+<h3 id="Removals" name="Removals">廃止</h3>
+
+<ul>
+ <li>非標準の <a href="/ja/docs/Archive/Firefox_OS/API/Simple_Push_API">Simple Push API</a> を、Gecko から完全に削除しました。これは主に Firefox OS 用の API であり、<a href="/ja/docs/Web/API/Push_API">W3C Push API</a> に置き換えられました ({{bug(1296579)}})。</li>
+ <li>非標準の <a href="/ja/docs/Archive/Firefox_OS/API/Alarm_API">Alarms API</a> を Gecko から完全に削除しました。これは主に Firefox OS 用の API でした ({{bug(1300884)}})。</li>
+ <li><a href="/ja/docs/Web/API/Page_Visibility_API">Page Visibility API</a> で、接頭辞のサポートを廃止しました ({{bug(812701)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="WebExtensions" name="WebExtensions">WebExtensions</h3>
+
+<ul>
+ <li>新規 API:
+ <ul>
+ <li>{{WebExtAPIRef("idle.queryState()")}} ({{bug(1299846)}})</li>
+ <li>{{WebExtAPIRef("idle.onStateChanged")}} ({{bug(1299775)}})</li>
+ <li>{{WebExtAPIRef("management.getSelf()")}} ({{bug(1283116)}})</li>
+ <li>{{WebExtAPIRef("management.uninstallSelf()")}} ({{bug(1220136)}})</li>
+ <li>{{WebExtAPIRef("runtime.getBrowserInfo()")}} ({{bug(1268399)}})</li>
+ <li>{{WebExtAPIRef("runtime.reload()")}} および {{WebExtAPIRef("runtime.onUpdateAvailable()")}} ({{bug(1279012)}})</li>
+ </ul>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Embedded_WebExtensions">レガシーアドオンに WebExtension を埋め込む</a> ことが可能になりました ({{bug(1252215)}})。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard">クリップボードへのアクセス</a> をサポートしました ({{bug(1197451)}})。</li>
+ <li>{{WebExtAPIRef("tabs.executeScript()")}} のコールバックに渡す引数を修正しました ({{bug(1290157)}})。</li>
+ <li>WebExtension をアンインストールするとき、<a href="/ja/docs/Web/API/Storage/LocalStorage">localStorage</a> を消去するようになりました ({{bug(1213990)}})。</li>
+ <li>Web Extensions で変更された {{HTTPHeader("Content-Type")}} ヘッダーを考慮するようになりました ({{bug(1304331)}})。</li>
+</ul>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<ul>
+ <li>アドオンがインストールされるときに Firefox でマルチプロセスの有効化を避けるために、<a href="/ja/Add-ons/Install_Manifests#multiprocessCompatible"><code>install.rdf</code> の <code>multiprocessCompatible</code></a> プロパティで明示的に <code>false</code> を設定することが必要になりました。</li>
+ <li>Mozilla 特有の <a href="/ja/docs/Mozilla/Projects/Social_API">Social API</a> を、以下のとおり大きく変更しました (主に、もはや使用されていない API を削除しました):
+ <ul>
+ <li>{{domxref("MozSocial")}} インターフェイスと、これをサポートする {{domxref("navigator.mozSocial")}} プロパティを削除しました。</li>
+ <li><a href="/ja/docs/Mozilla/Projects/Social_API/Bookmarks">Social Bookmarks API</a> を削除しました。</li>
+ <li>ソーシャルチャット機能を削除しました。</li>
+ <li>Social Status API を削除しました。</li>
+ <li>Share panel を除く、すべての <a href="/ja/docs/Mozilla/Projects/Social_API/Widgets">ソーシャルウィジェット</a> を削除しました。social sidebar や flyover panel などが含まれます。</li>
+ <li>削除した API のためにサポートしていたユーザインターフェイスや機能も、同様に削除しました。</li>
+ <li>削除した機能をサポートする、<a href="/ja/docs/Mozilla/Projects/Social_API/Manifest">Social service provider manifest</a> のプロパティを廃止しました。</li>
+ </ul>
+ </li>
+ <li>ファイル拡張子と MIME タイプの関連付けを与えるために <code>mimeTypes.rdf</code> をアドオンが使用する場合に、<code>"ext-to-type-mapping"</code> カテゴリーで項目を登録することが必要になりました ({{bug(306471)}})。</li>
+ <li><a href="/ja/docs/Mozilla/Gecko/Chrome/API/Browser_API">Browser API</a> が、<code><a href="/ja/docs/Web/Events/mozbrowserlocationchange">mozbrowserlocationchange</a></code> イベントのイベントオブジェクトで <code>detail</code> オブジェクトを含むようになりました。<code>canGoForward</code>/<code>canGoBack</code> プロパティを持っており、mozBrowser の戻る/進む の状態を同期的に取得できます ({{bug(1279635)}})。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.jp/firefox/51.0/releasenotes/">Firefox 51.0 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/51/">Firefox 51 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2016/10/firefox-51-addon-compatibility/">Firefox 51 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(50)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/52/index.html b/files/ja/mozilla/firefox/releases/52/index.html
new file mode 100644
index 0000000000..bae93b39da
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/52/index.html
@@ -0,0 +1,252 @@
+---
+title: Firefox 52 for developers
+slug: Mozilla/Firefox/Releases/52
+tags:
+ - Firefox
+ - Mozilla
+ - Release Notes
+translation_of: Mozilla/Firefox/Releases/52
+---
+<p>Firefox 52 は、米国時間 2017 年 3 月 7 日にリリースされました。このページでは、開発者に影響する Firefox 52 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Responsive_Design_Mode">UA の選択やネットワークの調整など、レスポンシブデザインモードを全面的に改良しました。</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Work_with_animations">アニメーションインスペクターで、タイミング関数を表示するようになりました。</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_grid_layouts">インスペクターに CSS グリッドの調査機能を搭載しました。</a></li>
+ <li><a href="/ja/docs/Tools/about:debugging#Service_worker_state">about:debugging で Service Worker の状態を表示するようになりました。</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#element_rule">インスペクターで、選択した要素を簡単に強調表示できるようになりました。</a></li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Whitespace-only_text_nodes">インスペクターで、ホワイトスペースのみのテキストノードを表示するようになりました。</a></li>
+</ul>
+
+<p><a href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Client%20Software&amp;chfieldto=2016-11-14&amp;query_format=advanced&amp;chfield=resolution&amp;chfieldfrom=2016-09-19&amp;chfieldvalue=FIXED&amp;bug_status=RESOLVED&amp;bug_status=VERIFIED&amp;component=Developer%20Tools&amp;component=Developer%20Tools%3A%20about%3Adebugging&amp;component=Developer%20Tools%3A%20Animation%20Inspector&amp;component=Developer%20Tools%3A%20Canvas%20Debugger&amp;component=Developer%20Tools%3A%20Computed%20Styles%20Inspector&amp;component=Developer%20Tools%3A%20Console&amp;component=Developer%20Tools%3A%20CSS%20Rules%20Inspector&amp;component=Developer%20Tools%3A%20Debugger&amp;component=Developer%20Tools%3A%20DOM&amp;component=Developer%20Tools%3A%20Font%20Inspector&amp;component=Developer%20Tools%3A%20Framework&amp;component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&amp;component=Developer%20Tools%3A%20Inspector&amp;component=Developer%20Tools%3A%20JSON%20Viewer&amp;component=Developer%20Tools%3A%20Memory&amp;component=Developer%20Tools%3A%20Netmonitor&amp;component=Developer%20Tools%3A%20Object%20Inspector&amp;component=Developer%20Tools%3A%20Performance%20Tools%20%28Profiler%2FTimeline%29&amp;component=Developer%20Tools%3A%20Responsive%20Design%20Mode&amp;component=Developer%20Tools%3A%20Scratchpad&amp;component=Developer%20Tools%3A%20Shared%20Components&amp;component=Developer%20Tools%3A%20Source%20Editor&amp;component=Developer%20Tools%3A%20Storage%20Inspector&amp;component=Developer%20Tools%3A%20Style%20Editor&amp;component=Developer%20Tools%3A%20User%20Stories&amp;component=Developer%20Tools%3A%20Web%20Audio%20Editor&amp;component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&amp;component=Developer%20Tools%3A%20WebIDE&amp;product=Firefox&amp;list_id=13333174">Firefox 51 から Firefox 52 の間に解決した開発ツール関連のバグ一覧</a></p>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li><code>rel="noopener"</code> <a href="/ja/docs/Web/HTML/Link_types">リンクタイプ</a> を実装しました ({{bug(1222516)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<h4 id="New_features" name="New_features">新機能</h4>
+
+<ul>
+ <li>{{cssxref(":focus-within")}} 疑似クラスを追加しました ({{bug(1176997)}})。</li>
+ <li>{{HTMLElement("button")}} 要素内で <code>display:flex/grid</code> およびマルチカラムレイアウトをサポートしました ({{bug(984869)}})。</li>
+ <li>数値で表した色と <a href="/ja/docs/Web/CSS/color_value#currentColor_keyword">currentcolor</a> との間の補完処理を実装しました ({{bug(1299741)}})。</li>
+ <li><code>{{cssxref("justify-content")}}: space-evenly</code> および <code>{{cssxref("align-content")}}: space-evenly</code> 向けに flexbox レイアウトを実装しました ({{bug(1235922)}})。</li>
+ <li>CSS {{cssxref("mask")}} / {{cssxref("clip-path")}} でサブピクセルアンチエイリアシングをサポートしました ({{bug(1305259)}})。</li>
+ <li>CSS Text 3 の、区分分断の変換規則を実装しました ({{bug(1081858)}})。</li>
+ <li>SVG コンテンツで、({{cssxref("clip-path")}} プロパティで適用する) 基本的な図形のクリッピングをサポートしました ({{bug(1246741)}})。</li>
+ <li>{{cssxref("align-self")}}|{{cssxref("justify-self")}}: [ first | last ]? baseline 向けの Flexbox レイアウトを実装しました ({{bug(1221524)}})。</li>
+ <li>{{cssxref("touch-action")}} プロパティを、すべてのプラットフォームにおいてデフォルトで有効にしました。(詳しくは <a href="https://groups.google.com/forum/#!topic/mozilla.dev.platform/6CGjsm1XpD4">intent to ship mail #1</a> および <a href="https://groups.google.com/forum/#!topic/mozilla.dev.platform/SYEzvXJKw9M">intent to ship mail #2</a> をご覧ください)</li>
+ <li>Flexbox の {{cssxref("align-content")}} の処理および単一ラインのサイズ調整が、ラインの数ではなく {{cssxref("flex-wrap")}} に依存するようになりました ({{bug(1090031)}})。</li>
+ <li>補間処理ができないプロパティのアニメーションに <a href="/ja/docs/Web/CSS/CSS_Animations">CSS Animations</a> を使用できるようになりました ({{bug("1064937")}})。</li>
+ <li><code>baseline|last-baseline</code> を <code>[ first | last ]? baseline</code> に変更しました ({{bug(1313254)}}).</li>
+ <li>block-axis について、<code>left</code>/<code>right</code> の使用値を <code>start</code> にしました ({{bug(1221565)}})。</li>
+ <li>包含ブロックの長さが不定である、flexible tracks を伸長する際に、最小サイズや最大サイズを重視するようになりました ({{bug(1309407)}})。</li>
+ <li>{{cssxref("mask-position")}} および {{cssxref("mask-repeat")}} の初期値を、それぞれ <code>0% 0%</code> および <code>repeat</code> に変更しました ({{bug(1308963)}})。</li>
+ <li>CSS の {{cssxref("&lt;color&gt;")}} 値に対していくつか変更を施しました ({{bug(1295456)}}):
+ <ul>
+ <li><code>rgba()</code> および <code>hsla()</code> を、<code>rgb()</code> および <code>hsl()</code> の別名として再定義しました。どちらも同じ引数構文を受け入れます。</li>
+ <li><code>rgb(</code>) および <code>hsl()</code> が、アルファ値 (省略可能) を受け入れるようになりました。例: <code>rgb(255, 0, 0, 0.5)</code></li>
+ <li>色関数が、カンマ区切りではなく空白区切りの引数を受け入れるようになりました。例: <code>rgb(255 0 0 / 0.5)</code></li>
+ <li>アルファ値を、数値だけでなくパーセンテージでも指定できるようになりました。例: <code>rgb(255 0 0 / 50%)</code></li>
+ <li><code>hsl()</code> 色の色相を、数値だけでなく角度でも指定できるようになりました。例: <code>hsl(120deg, 60%, 70%)</code></li>
+ </ul>
+ </li>
+</ul>
+
+<h4 id="CSS_Grids" name="CSS_Grids">CSS Grid</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/CSS/CSS_Grid_Layout">CSS Grid</a> を実装しました。</li>
+</ul>
+
+<h4 id="Changes_and_removals" name="Changes_and_removals">変更および削除</h4>
+
+<ul>
+ <li>CSS3 マルチカラム関連プロパティの接頭辞を削除しました (また、<code>-moz</code> 接頭辞付きのプロパティを別名として再追加しました) ({{bug(1300895)}})。</li>
+ <li>無名の flex アイテム内で、flex コンテナの絶対配置の子を折り返さないようになりました ({{bug(1269045)}})。</li>
+ <li>グリッドコンテナーのベースラインを実装しました。 ({{bug(1151204)}})。</li>
+ <li>スタイルシステムから、<code>&lt;flex&gt;</code> 値を最小値として使用する箇所を削除しました ({{bug(1305244)}})。</li>
+ <li>設定項目 <code>layout.css.masking.enabled</code> を削除しました ({{bug(1308239)}})。</li>
+ <li>独自の <a href="/ja/docs/Web/CSS/Media_Queries/Using_media_queries#Media_features">メディアタイプ</a> である <code>-moz-images-in-menus</code> および <code>-moz-images-in-buttons</code> を削除しました ({{bug(1302157)}})。</li>
+ <li>色のプロパティから <code>-moz-use-text-color</code> を削除しました。代わりに <code><a href="/ja/docs/Web/CSS/color_value#currentColor_keyword">currentColor</a></code> を使用してください ({{bug(1306214)}})。</li>
+ <li>[css-grid] グリッドアイテムに 'max-width' を設定するとテキストがはみ出す問題を修正しました ({{bug(1330380)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<h4 id="New_features_2" name="New_features_2">新機能</h4>
+
+<ul>
+ <li>async functions をサポートしました。{{jsxref("Statements/async_function", "async function")}}、{{jsxref("Operators/async_function", "async function expression")}}、{{jsxref("Operators/await", "await")}} キーワードを追加しました ({{bug(1185106)}})。</li>
+ <li>関数に対して、ES2017 の <a href="/ja/docs/Web/JavaScript/Reference/Trailing_commas">trailing commas</a> を実装しました ({{bug(1303788)}})。</li>
+ <li>{{jsxref("Functions/rest_parameters", "rest parameter の分割代入", "#Destructuring_rest_parameters", 1)}} を実装しました ({{bug(1243717)}})。</li>
+ <li>{{jsxref("Operators/Arithmetic_Operators", "べき乗演算子 (**)", "#Exponentiation_(**)", 1)}} をデフォルトで有効にしました ({{bug(1291212)}})。</li>
+ <li>{{jsxref("DateTimeFormat")}} や {{jsxref("Date.toLocaleString()")}} といった日付関連の API の <code>timeZone</code> オプションで、<a href="http://www.iana.org/time-zones">IANA タイムゾーン名称</a> が使用可能になりました ({{bug(837961)}})。</li>
+</ul>
+
+<h4 id="Changes_and_removals_2" name="Changes_and_removals_2">変更および削除</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Assigning_the_rest_of_an_array_to_a_variable">配列の分割代入</a> で、trailing comma を持つ rest parameters を使用した場合に {{jsxref("SyntaxError")}} が発生するようになりました ({{bug(1041341)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">オブジェクトの分割代入</a> で、<code>__proto__</code> プロパティの重複が可能になりました ({{bug(1204024)}})。</li>
+ <li>{{jsxref("Array.prototype.toLocaleString()")}} を、Intl API のパラメーター "<code>locales</code>" および "<code>options</code>" をサポートするように再実装しました ({{bug(1130636)}})。</li>
+ <li>{{jsxref("TypedArray")}} コンストラクターで、新しい typed array を生成するため <a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols">iterable</a> を受け入れるようになりました ({{bug(1232266)}})。</li>
+ <li>{{jsxref("TypedArray.from()")}}、{{jsxref("TypedArray.of()")}}、{{jsxref("TypedArray.prototype.filter()")}}、{{jsxref("TypedArray.prototype.map()")}}、{{jsxref("TypedArray.prototype.slice()")}}、{{jsxref("TypedArray.prototype.subarray()")}} が、値 <code>this</code> が有効な Typed Array のコンストラクターであることを要求するようになりました ({{bug(1122396)}})。</li>
+ <li>非標準の {{jsxref("ArrayBuffer.slice()")}} メソッド ({{jsxref("ArrayBuffer.prototype.slice()")}} ではありません) が非推奨になり、使用すると警告が発生します ({{bug(1316913)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar#Unicode_code_point_escapes">Unicode コードポイントエスケープ</a> が、識別子として使用可能になりました (例: "<code>let \u{61} = 123</code>"。{{bug(1314037)}} をご覧ください)。</li>
+ <li>ES2015 に従って、<code>\u2e2f</code> および <code>ⸯ</code> を識別子として使用したときに例外が発生するようになりました。詳しくは {{bug(917436)}} および {{bug(1197230)}} をご覧ください。</li>
+</ul>
+
+<h3 id="WebAssembly" name="WebAssembly">WebAssembly</h3>
+
+<ul>
+ <li>Gecko で <a href="/ja/docs/WebAssembly">WebAssembly</a> をサポートしました。</li>
+</ul>
+
+<h3 id="DOM" name="DOM">DOM</h3>
+
+<ul>
+ <li>新たに {{Event("selectstart")}} および {{Event("selectionchange")}} イベント ({{domxref("GlobalEventHandlers.onselectstart")}}、{{domxref("GlobalEventHandlers.onselectionchange")}} をご覧ください) を含む、<a href="/ja/docs/Web/API/Selection_API">Selection API</a> を全面的に提供します ({{bug(1309612)}})。</li>
+ <li>{{domxref("Event.composed")}} プロパティをサポートしました。この論理値は、イベントが shadow root を経由して標準 DOM に伝達できるかを示します ({{bug(1292063)}})。</li>
+ <li>HTML 要素、{{HTMLElement("svg")}} 要素、{{HTMLElement("math")}} 要素に限り、{{domxref("Element.requestFullScreen()")}} を呼び出してフルスクリーンモードに移行できるようになりました ({{bug(1305928)}})。</li>
+ <li><a href="/ja/docs/Web/API/Touch_events">Touch event</a> を、Windows デスクトップ環境で再び有効化しました ({{bug(1244402)}})。これはいくつかの主要サイトで問題が発生したため、Firefox 24 で無効化していました ({{bug(888304)}})。</li>
+ <li>{{event("focusin")}} および {{event("focusout")}} イベントを実装しました ({{bug("687787")}})。</li>
+ <li>{{domxref("WindowOrWorkerGlobalScope.isSecureContext")}} プロパティを実装しました ({{bug(1269052)}})。</li>
+ <li>service worker のインストールイベント ({{domxref("ServiceWorkerGlobalScope.oninstall")}} をご覧ください) との混同を避けるため、<a href="/ja/docs/Web/Manifest">Web App Manifest</a> のインストールイベントを appinstalled に改名しました ({{domxref("Window.onappinstalled")}}、{{event("appinstalled")}} をご覧ください)。詳しくは {{bug(1309099)}} をご覧ください。</li>
+ <li><a href="/ja/docs/Web/API/HTML_Drag_and_Drop_API">Drag and drop API</a> の {{domxref("DataTransfer.types")}} プロパティが、{{domxref("DOMStringList")}} ではなく {{domxref("DOMString")}} の凍結された配列を返すようになりました ({{bug(1298243)}})。</li>
+ <li>{{Event("loadstart")}} および {{Event("loadend")}} イベントが {{htmlelement("img")}} 要素で発生するようになりました ({{bug(1264769)}}、{{domxref("GlobalEventHandlers.onloadstart")}}、{{domxref("GlobalEventHandlers.onloadend")}} をご覧ください)。</li>
+ <li><a href="/ja/docs/Web/API/Notifications_API">Notifications API</a> の {{domxref("Notification.requireInteraction")}} を実装しました ({{bug(862395)}})。</li>
+ <li>{{domxref("Window.open()")}} メソッドで、<code>noopener</code> <a href="/ja/docs/Web/API/Window/open#Window_functionality_features">ウィンドウ機能特性</a> が使用可能になりました ({{bug(1267339)}})。これは、<code>rel="noopener"</code> <a href="/ja/docs/Web/HTML/Link_types">リンクタイプ</a> の機能を反映します。</li>
+ <li><a href="/ja/docs/Web/Web_Components">Web Components API</a> の {{domxref("CustomElementRegistry.get()")}} メソッドを実装しました ({{bug(1275838)}})。</li>
+ <li><a href="/ja/docs/Web/API/Pointer_events">Pointer Event</a> の {{domxref("PointerEvent.width","width")}} および {{domxref("PointerEvent.height","height")}} プロパティのデフォルト値が 1 になりました ({{bug(1304315)}})。</li>
+ <li><a href="https://wicg.github.io/entries-api/">最新の仕様書</a> における変更点を含むように、<a href="/ja/docs/Web/API/File_and_Directory_Entries_API">File and Directory Entries API</a> を更新しました (詳しくは {{bug(1284987)}} をご覧ください)。</li>
+ <li>{{domxref("UIEvent")}} で定義されていた {{domxref("Event.cancelBubble", "cancelBubble")}} プロパティが、{{domxref("Event")}} インターフェイスで定義するようになりました。詳しくは {{bug(1298970)}} をご覧ください。</li>
+</ul>
+
+<h4 id="Changes_and_removals_3" name="Changes_and_removals_3">変更および削除</h4>
+
+<ul>
+ <li>通話を制御する Firefox OS の API (Contacts、MobileConnection、Icc など) を削除しました ({{bug(1311206)}})。</li>
+ <li>Firefox OS の <code>Identity</code> インターフェイスを削除しました ({{bug(1309030)}})。</li>
+ <li>Firefox OS の Voicemail API (<code><a href="/ja/docs/Archive/B2G_OS/API/MozVoicemail">MozVoicemail</a></code>、<code><a href="/ja/docs/Archive/B2G_OS/API/MozVoicemailEvent">MozVoicemailEvent</a></code>、<code><a href="/ja/docs/Archive/B2G_OS/API/MozVoicemailStatus">MozVoicemailStatus</a></code>、<code><a href="/ja/docs/Archive/B2G_OS/API/Navigator/mozVoicemail">Navigator.mozVoicemail</a></code>) を削除しました ({{bug(1309723)}})。</li>
+ <li>Firefox OS の Cell Broadcast API (<code>MozCellBroadcast</code>、<code>MozCellBroadcastEvent</code>、<code>MozCellBroadcastMessage</code>、<code>Navigator.mozCellBroadcast</code>) を削除しました ({{bug(1306772)}})。</li>
+ <li>Firefox OS の TV broadcast 関連 API を削除しました ({{bug(1306778)}})。</li>
+ <li>Firefox OS の FM Radio API (<code><a href="/ja/docs/Archive/B2G_OS/API/FMRadio">FMRadio</a></code>、<code><a href="/ja/docs/Archive/B2G_OS/API/Navigator/mozFMRadio">Navigator.mozFMRadio</a></code>) を削除しました ({{bug(1306779)}})。</li>
+</ul>
+
+<h3 id="Service_Workers_and_Fetch" name="Service_Workers_and_Fetch">Service Workers と Fetch</h3>
+
+<ul>
+ <li>{{domxref("Headers.getAll()")}} を削除しました。また {{domxref("Headers.get()")}} が、指定したヘッダーの (最初の値だけではなく) すべての値を取り出すようになりました ({{bug(1278275)}})。これは、最新の Fetch API 仕様の更新内容に準拠しています。</li>
+</ul>
+
+<h3 id="Web_Audio_API" name="Web_Audio_API">Web Audio API</h3>
+
+<ul>
+ <li>{{domxref("ConstantSourceNode")}} インターフェイスを追加しました。これは、すべて同じ値であるサンプルのストリームを常に出力するオーディオソースを表します。複雑なオーディオフローを単純化するためにこのインターフェイスをどのように使用するかを示す例を、<a href="/ja/docs/Web/API/Web_Audio_API/Controlling_multiple_parameters_with_ConstantSourceNode">Controlling multiple parameters with ConstantSourceNode</a> でご覧ください。</li>
+</ul>
+
+<h3 id="WebRTC" name="WebRTC">WebRTC</h3>
+
+<ul>
+ <li>ICE 接続が一時的に不通になったとき、{{domxref("RTCPeerConnection.iceConnectionState")}} プロパティが <code>"disconnected"</code> に設定されるようになりました。これは一時的な問題で間もなく解決する見込みであり、後に接続が <code>"connected"</code> 状態に戻ることを示します ({{bug(852665)}})。</li>
+ <li>{{domxref("MediaDevices.ondevicechange")}} イベントハンドラーと、これに対応する {{event("devicechange")}} イベントは Firefox 51 で Mac に限り実装してデフォルトで無効化していましたが、Windows および Linux でも実装して、すべてのプラットフォームでデフォルトで有効にしました。</li>
+ <li>{{domxref("MediaStream.active")}} プロパティをサポートしました。これはストリームで少なくとも 1 つのトラックが現在再生中であるかを示す、読み取り専用の Boolean 型プロパティです。</li>
+ <li>Firefox 52 より前のバージョンでは {{domxref("MediaStreamTrack.stop()")}} メソッドで、ローカルトラック (すなわち、{{domxref("MediaDevices.getUserMedia", "getUserMedia()")}} で取得したトラック) しか停止できませんでした。Firefox 52 で、<a href="/ja/docs/Glossary/WebRTC">WebRTC</a> 接続と関連付けられた {{domxref("MediaStream")}}、<a href="/ja/docs/Web/API/Web_Audio_API">Web Audio API</a> ストリーム、{{domxref("CanvasCaptureMediaStream")}} など、さまざまなトラックを停止できるようになりました。</li>
+ <li>以前は Firefox のイベントループによってひとつのパスで {{domxref("TextTrack")}} の {{domxref("TextTrack.mode", "mode")}} を繰り返し変更すると、複数の {{event("change")}} イベントが親メディア要素の {{domxref("HTMLMediaElement.textTracks", "textTracks")}} で指定された {{domxref("TextTrackList")}} に発行されていました。Firefox 52 から、ひとつのイベントに統合するようになりました ({{bug(882674)}})。</li>
+</ul>
+
+<h3 id="AudioVideoMedia" name="AudioVideoMedia">Audio/Video/Media</h3>
+
+<ul>
+ <li>{{HTMLElement("audio")}} または {{HTMLElement("video")}} 要素を扱っていてエラーが発生したときに {{domxref("HTMLMediaElement.error")}} で指定される {{domxref("MediaError")}} オブジェクトが、{{domxref("MediaError.message", "message")}} プロパティを持つようになりました。これは、発生したエラーの具体的な説明を提供します。この文字列はエラーの事象について詳細情報を提供して、なぜ誤っているかの見識を与えます ({{bug(1299072)}})。このフィールドは Firefox 51 から nightly ビルドに含まれていましたが、release を含むすべてのビルドで有効化しました。</li>
+</ul>
+
+<h3 id="Other_APIs" name="Other_APIs">その他の API</h3>
+
+<ul>
+ <li>Firefox 50 で追加した (ただし常にエラーを返す) {{domxref("FileSystemFileEntry.createWriter()")}} メソッドを削除しました ({{bug(1315185)}})。</li>
+ <li>Firefox OS 独自の <a href="/ja/docs/Archive/Marketplace/API/App_installation_and_management_APIs">Apps installation/management API</a> を、プラットフォームから削除しました ({{bug(1261019)}})。</li>
+ <li>Firefox OS 独自の <a href="/ja/docs/Archive/Firefox_OS/Web_Telephony_API">Web Telephony API</a> を、プラットフォームから削除しました ({{bug(1309719)}})。</li>
+ <li>Firefox OS 独自の <a href="/ja/docs/Archive/Firefox_OS/Bluetooth_API">Web Bluetooth API</a> を、プラットフォームから削除しました ({{bug(1310020)}})。</li>
+ <li><a href="/ja/docs/Web/API/Battery_Status_API">Battery Status API</a> が、chrome/特権付きコードに限り使用可能になりました ({{bug(1313580)}})。</li>
+ <li><code>ImageBitmapRenderingContext.transferImageBitmap()</code> を {{domxref("ImageBitmapRenderingContext.transferFromImageBitmap()")}} に改名しました ({{bug(1304767)}})。</li>
+ <li><code>mozDash</code> および <code>mozDashOffset</code> メンバーを、{{domxref("CanvasRenderingContext2D")}} から削除しました ({{bug(931389)}})。</li>
+</ul>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<ul>
+ <li>{{HTTPHeader("Referrer-Policy")}} ヘッダーで <code>same-origin</code>、<code>strict-origin</code>、<code>strict-origin-when-cross-origin</code> ディレクティブをサポートしました ({{bug(1276836)}})。</li>
+ <li>{{CSP("script-src")}} のように、<a href="/ja/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#strict-dynamic"><code>'strict-dynamic'</code> source expression</a> を {{HTTPHeader("Content-Security-Policy")}} のディレクティブでサポートしました ({{bug(1299483)}})。</li>
+ <li><a href="https://tools.ietf.org/html/draft-ietf-httpbis-cookie-alone-01">Strict Secure Cookies specification</a> に従って、安全ではないサイト (<code>http:</code>) が "secure" ディレクティブで <a href="/ja/docs/Web/HTTP/Cookies">Cookie を設定する</a> ことができなくなりました ({{bug(976073)}})。</li>
+ <li>HTTP/2 ヘッダー圧縮方式 <a href="https://tools.ietf.org/html/rfc7541">HPACK</a> の最大テーブルサイズを 4 KB から 64 KB に拡張しました ({{bug(1296280)}})。</li>
+ <li>{{HTTPHeader("Large-Allocation")}} ヘッダーを追加しました ({{bug(1304140)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<ul>
+ <li>SVG ドキュメントは、SVGDocument に代わり {{domxref("XMLDocument")}} インターフェイスを使用して表すようになりました。これは SVG 2 仕様で変更されました。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<ul>
+ <li>ログインページ (すなわち <code><a href="/ja/docs/Web/HTML/Element/input/password">&lt;input type="password"&gt;</a></code> フィールドを含むページ) でログイン情報が安全でない方法で送信されると思われる場合に、Firefox はユーザーに警告するため、ページ内のパスワードフィールドの下に警告メッセージを表示します ({{bug(1319119)}})。また、安全でないログインフォームではオートフィルが無効になります ({{bug(1217152)}})。詳しくは <a href="/ja/docs/Web/Security/Insecure_passwords">安全でないパスワード</a> をご覧ください。</li>
+ <li>SHA-1 SSL 証明書のサポートを廃止しました。SHA-1 証明書を使用する安全なページに移動すると、<a href="https://support.mozilla.org/t5/Documents-Archive/quot-This-Connection-is-Untrusted-quot-error-message-appears/ta-p/589">Untrusted Connection</a> エラーが発生します ({{bug(1330043)}})。</li>
+</ul>
+
+<h2 id="Plugins" name="Plugins">プラグイン</h2>
+
+<p>Flash を除くすべての NPAPI <a href="/ja/docs/Mozilla/Add-ons/Plugins">プラグイン</a> のサポートを廃止しました (詳しくは <a href="https://www.fxsitecompat.com/ja/docs/2016/plug-in-support-has-been-dropped-other-than-flash/">プラグイン対応は Flash を除き廃止されました</a> をご覧ください)。Flash の使用も将来、段階的に廃止します。</p>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="WebExtensions" name="WebExtensions">WebExtensions</h3>
+
+<p>新規 API:</p>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/sessions"><code>sessions</code> API</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/topSites"><code>topSites</code> API</a></li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/omnibox"><code>omnibox</code> API</a></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onInstalled">runtime.onInstalled</a></code> および <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onStartup">runtime.onStartup</a></code> イベント</li>
+ <li><a href="/ja/Add-ons/WebExtensions/API/webRequest#Modifying_requests">webRequest の非同期イベントハンドラー</a></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks/onMoved">bookmarks.onMoved</a></code>、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks/onCreated">bookmarks.onCreated</a></code>、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks/onChanged">bookmarks.onChanged</a></code> イベント</li>
+ <li><a href="/ja/Add-ons/WebExtensions/manifest.json/commands">commands マニフェストキー</a> の <code>_execute_browser_action</code> および <code>_execute_page_action</code></li>
+ <li>content_scripts マニフェストキーの <code><a href="/ja/Add-ons/WebExtensions/manifest.json/content_scripts#match_about_blank">match_about_blank</a></code></li>
+</ul>
+
+<h3 id="Interfaces" name="Interfaces">インターフェイス</h3>
+
+<ul>
+ <li>ドロップされた複数のアイテムを扱うための <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDroppedLinkHandler">nsIDroppedLinkHandler</a>.dropLinks</code> メソッドおよび <a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDroppedLinkItem">nsIDroppedLinkItem</a> インターフェイスを追加しました ({{bug(92737)}})。</li>
+</ul>
+
+<h3 id="XUL" name="XUL">XUL</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/tabbrowser">tabbrowser</a>.<a href="/ja/docs/Mozilla/Tech/XUL/Method/loadTabs">loadTabs</a>(uris, params)</code> メソッドのオーバーロードを追加しました ({{bug(92737)}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XUL/browser">browser</a>.<a href="/ja/docs/Mozilla/Tech/XUL/Attribute/droppedLinkHandler">droppedLinkHandler</a></code> 関数のシグネチャを変更しました ({{bug(92737)}})。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.jp/firefox/52.0/releasenotes/">Firefox 52.0 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/52/">Firefox 52 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2016/12/firefox-52-addon-compatibility/">Firefox 52 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(52)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/53/index.html b/files/ja/mozilla/firefox/releases/53/index.html
new file mode 100644
index 0000000000..5a6f67e462
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/53/index.html
@@ -0,0 +1,223 @@
+---
+title: Firefox 53 for developers
+slug: Mozilla/Firefox/Releases/53
+tags:
+ - Firefox
+ - Mozilla
+ - Release Notes
+translation_of: Mozilla/Firefox/Releases/53
+---
+<p>Firefox 53 は、米国時間 2017 年 4 月 19 日にリリースされました。このページでは、開発者に影響する Firefox 53 の変更点をまとめています。</p>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>非同期パン/ズームによって、ハイライト表示でスクロールに待ち時間が発生する問題を解消しました ({{bug(1312103)}})。</li>
+ <li>要素の <a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Copy CSS Path">すべての CSS パスをコピーする </a> メニュー項目を追加しました ({{bug(1323700)}})。</li>
+ <li>開発ツールで CSS Color Module Level 4 をサポートしました ({{bug(1310681)}})。</li>
+ <li>マークアップビュー: 折りたたんでいるノードの開始タグと終了タグの間に、視覚的なヒントを追加しました ({{bug(1323193)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<h4 id="New_features" name="New_features">新機能</h4>
+
+<ul>
+ <li>すべての <code>mask-*</code> ロングハンドプロパティ (<a href="/ja/docs/Web/CSS/CSS_Masks">CSS Masks</a> をご覧ください) が、デフォルトで使用可能になりました ({{bug(1251161)}})。</li>
+ <li>{{cssxref("caret-color")}} プロパティを追加しました ({{bug(1063162)}})。</li>
+ <li>{{cssxref("place-items")}}/{{cssxref("place-self")}}/{{cssxref("place-content")}} ショートハンドプロパティを実装しました ({{bug(1319958)}})。</li>
+ <li>{{cssxref("display")}} プロパティに値 <code>flow-root</code> を追加しました ({{bug(1322191)}})。</li>
+ <li>{{cssxref("tab-size", "-moz-tab-size")}} が {{cssxref("&lt;length&gt;")}} 値を受け入れるようになりました ({{bug(943918)}})。また、アニメーションが可能になりました ({{bug(1308110)}})。</li>
+ <li>{{cssxref("mask-mode")}}:luminance がグラデーションのマスクで動作しない問題を修正しました ({{bug(1346265)}})。</li>
+ <li>[css-grid] {{cssxref("grid-template-rows")}} で、fr 単位を使用するとビューポートが埋まらない問題を修正しました ({{bug(1346699)}})。</li>
+ <li>flex アイテムが絶対位置指定の兄弟要素で隔てられているとき、"order" に従って並べ替えられない問題を修正しました ({{bug(1345873)}})。</li>
+</ul>
+
+<h4 id="Other_changes" name="Other_changes">その他の変更点</h4>
+
+<ul>
+ <li>mask 関係のロングハンドプロパティを SVG 要素に対して有効化しました ({{bug(1319667)}})。</li>
+ <li>[css-grid] グリッドアイテムが <code>&lt;table&gt;</code> であるときに <code>align-self</code>/<code>justify-self:stretch</code>/<code>normal</code> が動作しない問題を修正しました ({{bug(1316051)}})。</li>
+ <li>大きなリファレンスボックスで半径をパーセンテージで示した <code>clip-path: circle()</code> が正しくレンダリングされない問題を修正しました ({{bug(1324713)}})。</li>
+ <li>ギリシャ文字に対して {{cssxref("text-transform")}} の値 <code>uppercase</code> を適用したとき、単独のエータについたアクセント (ή) が取り除かれないようになりました ({{bug(1322989)}})。</li>
+ <li>{{cssxref("display")}} の値 <code>contents</code> を使用できるかは、設定項目 <code>layout.css.display-contents.enabled</code> で制御していました。Firefox 53 でこの設定項目を削除しましたので常に有効になり、無効化できなくなりました ({{bug(1295788)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("Function.name")}} プロパティの、ECMAScript 2015 のセマンティクスを実装しました。これは、無名関数で推測した名前 (<code>var foo = function() {}</code>) を含みます ({{bug(883377)}})。</li>
+ <li>closing iterators の、ECMAScript 2015 のセマンティクスを実装しました。これは、例えば <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/for...of">for...of</a></code> ループに影響があります ({{bug(1147371)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Template_literals#Tagged_template_literals_and_escape_sequences">タグ付けされた template literal でエスケープシーケンスの制限を取り去る</a>、<a href="https://tc39.github.io/proposal-template-literal-revision/">Template Literal Revision 提案</a> を実装しました ({{bug(1317375)}})。</li>
+ <li>非標準の <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/String#String_generic_methods">String ジェネリック</a> について、コンソールで非推奨の警告を表示するようになりました。将来削除する予定ですので、今後は使用しないでください! ({{bug(1319926)}})</li>
+ <li>{{jsxref("TypedArray")}} オブジェクトの静的なプロパティ <code>length</code> の値を、ES2016 に従って 3 から 0 に変更しました ({{bug(1317306)}})。</li>
+ <li>{{jsxref("DataView")}} で {{jsxref("SharedArrayBuffer")}} が使用可能になりました ({{bug(1246597)}})。</li>
+ <li>旧版の仕様書では、{{jsxref("SharedArrayBuffer")}} オブジェクトは <a href="/ja/docs/Web/API/Web_Workers_API/Structured_clone_algorithm">structured clone</a> の間に、明示的に転送しなければなりませんでした。新しい仕様では <a href="/ja/docs/Web/API/Transferable">転送可能なオブジェクト</a> ではなくなり、転送リストに含まれてはなりません。新しい動作について以前はコンソールで警告を表示するだけでしたが、今後はエラーが発生します ({{bug(1302037)}})。</li>
+ <li>{{jsxref("ArrayBuffer")}} の長さを、{{jsxref("Number.MAX_SAFE_INTEGER")}}に制限しました (&gt;= 2 ** 53) ({{bug(1255128)}})。</li>
+ <li>{{jsxref("Error.prototype")}} やほかのネイティブエラーオブジェクトのプロトタイプ ({{jsxref("RangeError.prototype")}} など) が、固有の Error オブジェクトではなく通常のオブジェクトになりました (特に、<code>Object.prototype.toString.call(Error.prototype)</code> は <code>"[object Error]"</code> ではなく <code>"[object Object]"</code> になります) ({{bug(1213341)}})。</li>
+</ul>
+
+<h3 id="Events" name="Events">イベント</h3>
+
+<ul>
+ <li>CSS Transitions: {{event("transitionstart")}}、{{event("transitionrun")}}、{{event("transitioncancel")}} イベントを実装しました ({{bug(1264125)}}、{{bug(1287983)}})。</li>
+ <li>{{domxref("CompositionEvent.CompositionEvent", "CompositionEvent")}} コンストラクターを実装しました ({{bug(1002256)}})。</li>
+ <li>{{domxref("MouseEvent.clientX")}}/{{domxref("MouseEvent.clientY")}} の別名である {{domxref("MouseEvent.x")}} および {{domxref("MouseEvent.y")}} を実装しました ({{bug(424390)}})。</li>
+ <li>{{Event("auxclick")}} イベントと、これに対応する {{domxref("GlobalEventHandlers.onauxclick")}} イベントハンドラーを実装しました ({{bug(1304044)}})。</li>
+ <li>{{Event("transitioncancel")}} イベントが、<a href="/ja/docs/Web/CSS/CSS_Transitions">transition</a> をキャンセルした後に発生するようになりました。詳細および例は、{{domxref("GlobalEventHandlers.ontransitioncancel")}} をご覧ください ({{bug("1264125")}})。</li>
+</ul>
+
+<h3 id="DOM" name="DOM">DOM</h3>
+
+<ul>
+ <li>以前は {{domxref("HTMLHyperLinkElementUtils")}} の {{domxref("HTMLHyperLinkElementUtils.pathname", "pathname")}} および {{domxref("HTMLHyperLinkElementUtils.search", "search")}} プロパティが、URL の誤った部分を返していました。例えば <code>http://z.com/x?a=true&amp;b=false</code> の URL について、<code>pathname</code> は "<code>/x</code>" ではなく "<code>/x?a=true&amp;b=false</code>"、<code>search</code> は "<code>?a=true&amp;b=false</code>" ではなく "" を返していました。これらを修正しました ({{bug(1310483)}})。</li>
+ <li>{{domxref("URLSearchParams.URLSearchParams", "URLSearchParams()")}} コンストラクターが、init オブジェクトとして {{domxref("USVString")}} や一連の {{domxref("USVString")}} を受け入れるようになりました ({{bug("1330678")}})。</li>
+ <li><a href="/ja/docs/Web/API/Selection_API">Selection API</a> の {{domxref("Selection.setBaseAndExtent()")}} メソッドを実装しました ({{bug(1321623)}})。</li>
+ <li><code>file</code> 型の {{htmlelement("input")}} の <code>value</code> に<a href="https://html.spec.whatwg.org/multipage/forms.html#fakepath-srsly">"fakepath"</a> を追加する機能を、Gecko に実装しました。ほかのブラウザーと同等になります ({{bug(1274596)}})。</li>
+ <li>非推奨の {{domxref("Node.rootNode")}} プロパティを置き換える、{{domxref("Node.getRootNode()")}} を実装しました ({{bug(1269155)}})。</li>
+ <li>{{domxref("Plugin")}} および {{domxref("PluginArray")}} オブジェクト特有のプロパティが、enumerable ではなくなりました ({{bug("1270366")}})。</li>
+ <li>{{domxref("MimeTypeArray")}} オブジェクトの名前付きプロパティが、enumerable ではなくなりました ({{bug("1270364")}})。</li>
+ <li><a href="/ja/docs/Web/API/Permissions_API">Permissions API</a> の {{domxref("Permissions.query()")}} で使用するパーミッション名で、新たに <code>persistent-storage</code> が使用可能になりました ({{bug(1270038)}})。これは <a href="https://storage.spec.whatwg.org/">Storage API</a> による、持続的なボックス (すなわち <a href="https://storage.spec.whatwg.org/#persistence">persistent storage</a>) をオリジンに許可します。</li>
+</ul>
+
+<h3 id="Workers_and_service_workers" name="Workers_and_service_workers">Workers および service workers</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Network_Information_API">Network Information API</a> が、worker で使用可能になりました ({{bug(1323172)}})。</li>
+ <li><a href="/ja/docs/Web/API/Server-sent_events">Server-sent events</a> が worker から使用可能になりました ({{bug(1267903)}})。</li>
+ <li>{{domxref("ExtendableEvent.waitUntil", "ExtendableEvent.waitUntil()")}} が、非同期呼び出し可能になりました ({{bug(1263304)}})。</li>
+</ul>
+
+<h3 id="WebGL" name="WebGL">WebGL</h3>
+
+<ul>
+ <li>{{domxref("WEBGL_compressed_texture_astc")}} WebGL 拡張を実装しました ({{bug(1250077)}})。</li>
+ <li>{{domxref("WEBGL_debug_renderer_info")}} WebGL 拡張をデフォルトで有効にしました ({{bug(1336645)}})。</li>
+</ul>
+
+<h3 id="Audio_video_and_media" name="Audio_video_and_media">Audio/Video/Media</h3>
+
+<h4 id="General" name="General">全般</h4>
+
+<ul>
+ <li><strong>Android 版 Firefox 53</strong> より、マルチコアシステムでパフォーマンスを高めるため、メディアのデコードを外部プロセスで制御します ({{bug(1333323)}})。</li>
+</ul>
+
+<h4 id="Media_elements" name="Media_elements">メディア要素</h4>
+
+<ul>
+ <li>メディア要素でメディアの再生を開始するために使用する {{domxref("HTMLMediaElement.play()")}} メソッドが、{{jsxref("Promise")}} を返すようになりました。この Promise は再生を開始すると fulfilled 状態、エラーが発生すると rejected 状態になります ({{bug(1244768)}})。</li>
+</ul>
+
+<h4 id="Web_Audio_API" name="Web_Audio_API">Web Audio API</h4>
+
+<ul>
+ <li>{{domxref("AudioScheduledSourceNode")}} インターフェイスを実装して、{{domxref("AudioBufferSourceNode")}}、{{domxref("ConstantSourceNode")}}、{{domxref("OscillatorNode")}} インターフェイスはこのインターフェイスを基にするようになりました ({{bug("1324568")}})。</li>
+</ul>
+
+<h4 id="WebRTC" name="WebRTC">WebRTC</h4>
+
+<ul>
+ <li>{{domxref("RTCPeerConnection")}} の {{domxref("RTCPeerConnection.createOffer", "createOffer()")}} および {{domxref("RTCPeerConnection.createAnswer", "createAnswer()")}} メソッドが、{{domxref("RTCSessionDescription")}} を直接返すのではなく、{{domxref("RTCSessionDescriptionInit")}} ディクショナリーに従うオブジェクトを返す {{jsxref("Promise")}} を返すようになりました。既存のコードは引き続き動作しますが、<a href="/ja/docs/Web/API/RTCPeerConnection/setLocalDescription#About_the_session_description_parameter">新しいコードはよりシンプルに記述できます</a>。</li>
+ <li>同様に、{{domxref("RTCPeerConnection")}} の {{domxref("RTCPeerConnection.setLocalDescription", "setLocalDescription()")}} および {{domxref("RTCPeerConnection.setRemoteDescription", "setRemoteDescription()")}} メソッドが、{{domxref("RTCSessionDescriptionInit")}} ディクショナリーに従うオブジェクトを受け入れるようになりました。既存のコードは引き続き動作しますが、<a href="/ja/docs/Web/API/RTCPeerConnection/setLocalDescription#About_the_session_description_parameter">シンプルにできます</a>。</li>
+ <li>{{domxref("RTCPeerConnection.addIceCandidate()")}} が、{{domxref("RTCIceCandidateInit")}} ディクショナリーに従うオブジェクトを受け入れるようになりました。これは既存のコードと互換性がありますが、上記の変更点と並んで使用するとコードをよりシンプルに記述できます ({{bug(1263312)}})。</li>
+ <li>{{domxref("RTCDTMFSender")}} を使用する {{Glossary("DTMF")}} のサポートを、デフォルトで有効にしました。詳細や動作について、<a href="/ja/docs/Web/API/WebRTC_API/Using_DTMF">Using DTMF with WebRTC</a> をご覧ください。</li>
+</ul>
+
+<h3 id="HTTPNetworking" name="HTTPNetworking">HTTP/ネットワーク</h3>
+
+<ul>
+ <li>{{HTTPHeader("Referrer-Policy")}} の既定値をユーザーが設定できる設定項目 <code>network.http.referer.userControlPolicy</code> を、Gecko の <code>about:config</code> に追加しました ({{bug("1304623")}})。以下の値を使用できます:
+
+ <ul>
+ <li>0 — <code>no-referrer</code></li>
+ <li>1 — <code>same-origin</code></li>
+ <li>2 — <code>strict-origin-when-cross-origin</code></li>
+ <li>3 — <code>no-referrer-when-downgrade</code> (既定値)</li>
+ </ul>
+ </li>
+ <li><a href="https://en.wikipedia.org/wiki/Application-Layer_Protocol_Negotiation">Application-Layer Protocol Negotiation</a> (ALPN) を支持するため、Next Protocol Negotiation (NPN) のサポートを廃止しました ({{bug("1248198")}})。</li>
+ <li>{{httpheader("Large-Allocation")}} HTTP ヘッダーをデフォルトで有効にして、設定で無効化しないようになりました ({{bug(1331083)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<ul>
+ <li>{{domxref("SVGGeometryElement")}} インターフェイスを部分的に実装しました ({{bug(1239100)}})。</li>
+</ul>
+
+<h2 id="Removals_from_the_web_platform" name="Removals_from_the_web_platform">ウェブプラットフォームから廃止</h2>
+
+<h3 id="HTMLXML" name="HTMLXML">HTML/XML</h3>
+
+<ul>
+ <li>設定項目 <code>dom.details_element.enabled</code> (Firefox で {{htmlelement("details")}} および {{htmlelement("summary")}} 要素のサポートを有効化/無効化します) を <code>about:config</code> から削除しました。これらの要素 (Firefox 49 からデフォルトで有効化) は無効化できません。{{bug(1271549)}} をご覧ください。</li>
+ <li>{{htmlelement("iframe")}} 要素および {{domxref("HTMLIFrameElement")}} インターフェイスの <code>mozapp</code> 属性を削除しました。これは、moz <a href="/ja/docs/Mozilla/Gecko/Chrome/API/Browser_API">Browser API</a> の <code>&lt;iframe&gt;</code> に Firefox OS アプリを埋め込めるようにするために使用しました ({{bug(1310845)}})。</li>
+ <li>{{domxref("HTMLIFrameElement.setInputMethodActive()")}} メソッドおよび <code>InputMethod</code> インターフェイス (Firefox OS アプリで IME を設定および制御するために使用しました) を削除しました ({{bug(1313169)}})。</li>
+</ul>
+
+<h3 id="CSS_2" name="CSS_2"><span><span>CSS</span></span></h3>
+
+<ul>
+ <li>{{cssxref(":dir", ":dir()")}} 疑似クラスの、{{property_prefix("-moz")}} 接頭辞がついた派生形を削除しました ({{bug(1270406)}})。</li>
+ <li>{{cssxref("text-align-last")}} の、<code>-moz</code> 接頭辞がついた派生形を削除しました ({{bug(1276808)}})。</li>
+ <li>{{cssxref("calc()")}} メソッドの、{{property_prefix("-moz")}} 接頭辞がついた派生形を削除しました ({{bug(1331296)}})。</li>
+ <li>独自仕様である <code>-moz-samplesize</code> media fragment (メモリが少ない Firefox OS 端末にダウンサンプリングした画像を提供することを支援するために追加しました。{{bug(854795)}} をご覧ください) を削除しました ({{bug(1311246)}})。</li>
+</ul>
+
+<h3 id="JavaScript_2" name="JavaScript_2">JavaScript</h3>
+
+<ul>
+ <li>非標準の {{jsxref("ArrayBuffer.slice()")}} を削除しました (ただし、標準化された {{jsxref("ArrayBuffer.prototype.slice()")}} を維持しています) ({{bug(1313112)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<ul>
+ <li><a href="/ja/docs/Archive/B2G_OS/API/WiFi_Information_API">Wifi information API</a>、Speaker Manager API、Tethering API、<a href="/ja/docs/Archive/B2G_OS/API/Settings_API">Settings API</a> をプラットフォームから削除しました ({{bug(1313788)}}、{{bug(1317853)}}、{{bug(1313789)}}、{{bug(1313155)}})。</li>
+</ul>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<ul>
+ <li>{{domxref("HTMLEmbedElement")}} および {{domxref("HTMLObjectElement")}} インターフェイスから <code>legacycaller</code> を削除しました ({{bug(909656)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="WebExtensions" name="WebExtensions">WebExtensions</h3>
+
+<p>新規 API:</p>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browsingData">browsingData</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/identity">identity</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities">contextualIdentities</a></code></li>
+</ul>
+
+<p>向上した API:</p>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage/sync">storage.sync</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/contextMenus">contextMenus</a></code> の <a href="/ja/Add-ons/WebExtensions/API/contextMenus/ContextType">context タイプ</a> として <code>page_action</code>、<code>browser_action</code>、<code>password</code>, <code>tab</code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeRequest">webRequest.onBeforeRequest</a></code> で <code>requestBody</code> をサポート</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/insertCSS">tabs.insertCSS</a></code> で <code>cssOrigin</code> をサポート。ユーザースタイルシートが挿入可能になります。</li>
+</ul>
+
+<h3 id="JavaScript_code_modules" name="JavaScript_code_modules">JavaScript コードモジュール</h3>
+
+<ul>
+ <li>非同期の <a href="/ja/Add-ons/Add-on_Manager/AddonManager">AddonManager API</a> で、コールバックだけでなく {{jsxref("Promise")}} もサポートしました ({{bug(987512)}}。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.jp/firefox/53.0/releasenotes/">Firefox 53.0 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/53">Firefox 53 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2017/03/firefox-53-addon-compatibility/">Firefox 53 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(53)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/54/index.html b/files/ja/mozilla/firefox/releases/54/index.html
new file mode 100644
index 0000000000..3dcaa143fc
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/54/index.html
@@ -0,0 +1,130 @@
+---
+title: Firefox 54 for developers
+slug: Mozilla/Firefox/Releases/54
+tags:
+ - Firefox
+ - Release Notes
+translation_of: Mozilla/Firefox/Releases/54
+---
+<article class="text-content" id="wikiArticle">
+<p>Firefox 54 は、米国時間 2017 年 6 月 13 日にリリースされました。このページでは、開発者に影響する Firefox 54 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>ネットワーク要求の要約で、パフォーマンス解析ビューと同様に、実際に転送されたデータの量 ("転送量") を表示するようになりました ({{bug(1168376)}})。</li>
+ <li>ネットワーク要求のヘッダービューで、MDN の関連ドキュメントへのリンクを追加しました ({{bug(1320233)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("clip-path")}} で <a href="/ja/docs/Web/CSS/CSS_Shapes">基本シェイプ</a> をサポートしました ({{bug(1247229)}})。</li>
+ <li>Firefox の CSS Flexbox と CSS alignment の実装で、{{cssxref("align-items")}} と {{cssxref("align-self")}}、{{cssxref("justify-items")}} と {{cssxref("justify-self")}} の相互作用について更新された仕様を実装しました ({{bug(1340309)}})。</li>
+ <li>type が <code>checkbox</code> および <code>radio</code> である {{htmlelement("input")}} で {{cssxref("appearance", "-moz-appearance")}}<code>: none;</code> を設定した場合に、他のブラウザーとの互換性のため非置換要素にするようになりました ({{bug(605985)}})。</li>
+ <li>以前は、<code>display:block</code> を指定した {{domxref("HTMLInputElement")}} 型の子要素を持つ、{{cssxref("display")}}<code>: inline-block</code> を指定した要素のベースラインが誤っていました ({{bug(1330962)}})。この問題を修正しました。</li>
+ <li>Mozilla がコンテンツ専用のスレッドを (Electrolysis または e10s プロジェクトで) Firefox に導入したとき、{{HTMLElement("option")}} 要素へのスタイル設定機能のを一時的に削除しました。Firefox 54 より {{cssxref("color")}} および {{cssxref("background-color")}} プロパティを使用して、<code>&lt;option&gt;</code> 要素に再び前景色や背景色を設定できるようになりました。詳しくは {{bug(910022)}} をご覧ください。Linux では、コントラストが不足するためまだ無効化していますので注意してください (進捗状況は {{bug(1338283)}} で確認してください)。</li>
+ <li><a href="/ja/docs/Web/CSS/CSS_Animations">CSS Animations</a> でアニメーションが早期に終了したとき、想定どおりに {{event("animationcancel")}} イベントが発生するようになりました ({{bug(1302648)}})。</li>
+ <li>透過色 (すなわち、アルファチャンネルが 0 である色) が、<a href="https://www.fxsitecompat.com/ja/docs/2017/transparent-rgba-colour-values-are-no-longer-serialized-to-transparent-keyword/">特定の状況</a> で <a href="/ja/docs/Web/CSS/color_value#transparent_keyword"><code>transparent</code> 色キーワード</a> にシリアライズされていました。これを、仕様書や他のブラウザーの実装に従うよう修正しました。詳しくは {{bug("1339394")}} をご覧ください。</li>
+ <li>独自仕様である <code>:-moz-table-border-nonzero</code> 疑似クラスが、ウェブコンテンツで使用できなくなりました。Firefox 内部の UA スタイルシートのみに制限されています ({{bug(1341925)}})。</li>
+ <li>[css-grid] overflow:auto を指定したコンテンツがグリッド内で重なり合う問題を修正しました ({{bug(1348857)}})。</li>
+ <li>[css-grid] 固有の比率を持つ、サイズをパーセンテージで指定したグリッドアイテムに対する、Transferred min-size の寄与に関する問題を修正しました ({{bug(1349320)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><code>"u"</code> (Unicode) フラグと <code>"i"</code> (大文字・小文字を無視) フラグを設定した {{jsxref("RegExp")}} で <code>\b</code> および <code>\B</code> は、U+017F (LATIN SMALL LETTER LONG S) および U+212A (KELVIN SIGN) を単語に使用される文字として扱うようになりました ({{bug(1338373)}})。</li>
+ <li>{{jsxref("DataView")}} コンストラクターで、<code>byteOffset</code> パラメーターが {{jsxref("Number.MAX_SAFE_INTEGER")}} (&gt;= 2 ** 53) の範囲外であるときに {{jsxref("RangeError")}} が発生するようになりました ({{bug(1317382)}})。</li>
+ <li>{{jsxref("Date.UTC()")}} メソッドで引数が 2 個未満である場合の動作を、ECMAScript 2017 に準拠するように更新しました ({{bug(1050755)}})。</li>
+ <li>{{jsxref("Function.prototype.toString()")}} メソッドを、最新の <a href="http://tc39.github.io/Function-prototype-toString-revision/">仕様案</a> に準拠するよう更新しました ({{bug(1317400)}})。</li>
+</ul>
+
+<h3 id="DOM_HTML_DOM" name="DOM_HTML_DOM">DOM &amp; HTML DOM</h3>
+
+<ul>
+ <li>{{domxref("URL.toJSON()")}} メソッドを実装しました ({{bug(1337702)}})。</li>
+ <li>{{domxref("URLSearchParams.URLSearchParams", "URLSearchParams()")}} コンストラクターが、init オブジェクトとして {{domxref("USVString")}} を含むレコードを受け入れるようになりました ({{bug("1331580")}})。</li>
+ <li>macOS で、control キーと印刷可能なキーを組み合わせた場合に {{domxref("KeyboardEvent.key")}} が返す値を修正しました (command キーの押下中を除く) ({{bug(1342865)}})。</li>
+ <li>主に、worker で <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/let">let</a></code> を使用したときに発生する問題 ({{bug(855665)}} のため。これは修正済み) を回避するために実装した設定項目 <code>dom.workers.latestJSVersion</code> を削除しました ({{bug(1219523)}})。</li>
+ <li>{{domxref("event.timeStamp")}} プロパティが、エポック時刻 ({{domxref("DOMTimeStamp")}})に代わり高精度モノトニック時刻 ({{domxref("DOMHighResTimeStamp")}}) を返すようになりました。</li>
+</ul>
+
+<h3 id="Web_Workers_and_Service_Workers" name="Web_Workers_and_Service_Workers">Web Workers および Service Workers</h3>
+
+<ul>
+ <li>{{domxref("WorkerGlobalScope.close")}} が、{{domxref("DedicatedWorkerGlobalScope.close", "DedicatedWorkerGlobalScope")}} および {{domxref("SharedWorkerGlobalScope.close", "SharedWorkerGlobalScope")}} で利用可能になりました。この変更は、service workers で使用してはならない <code>close()</code> を使用できないようにして、呼び出された場合は常に例外が発生します ({{bug(1336043)}})。</li>
+ <li>{{domxref("WindowOrWorkerGlobalScope.origin")}} プロパティを実装しました ({{bug(1306170)}})。</li>
+ <li>{{domxref("Client.type")}} プロパティを実装しました ({{bug(1339844)}})。</li>
+ <li>{{domxref("Clients.matchAll()")}} が {{domxref("Client")}} オブジェクトを、直近に注視した順序で返すようになりました ({{bug(1266747)}})。</li>
+ <li>新しいインスタンスを生成するために {{domxref("Request.Request","Request()")}} へ既存の {{domxref("Request")}} オブジェクトが渡されたときに見られる動作を、若干変更しました。以下の新たな動作は例外を発生しにくくするとともに、セキュリティを維持するように設計しました:
+ <ul>
+ <li>コンストラクターを呼び出すオリジンとは別のオリジンにこのオブジェクトが存在する場合は、{{domxref("Request.referrer")}} を削除します。</li>
+ <li>このオブジェクトの {{domxref("Request.mode")}} が <code>navigate</code> である場合は、<code>mode</code> の値を <code>same-origin</code> に変換します。</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="AudioVideo" name="AudioVideo">Audio/Video</h3>
+
+<h4 id="General" name="General">全般</h4>
+
+<ul>
+ <li>Windows、macOS、Linux で、5.1ch サラウンド音声の再生をデフォルトで有効化しました ({{bug(1334508)}}、{{bug(1321502)}}、{{bug(1323659)}})。</li>
+</ul>
+
+<h4 id="Media_Capture_and_Streams_API" name="Media_Capture_and_Streams_API">Media Capture and Streams API</h4>
+
+<ul>
+ <li>{{domxref("URL.createObjectURL()")}} の入力引数として {{domxref("MediaStream")}} オブジェクトを使用することが非推奨になりました。コンソールに警告を表示します ({{bug(1334564)}})。代わりに {{domxref("HTMLMediaElement.srcObject")}} を使用することを推奨します。</li>
+</ul>
+
+<h4 id="Web_Audio_API" name="Web_Audio_API">Web Audio API</h4>
+
+<ul>
+ <li>{{domxref("AnalyserNode.getFloatFrequencyData()")}} メソッドが値 <code>-<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Infinity">Infinity</a></code> で返すバッファーで、正しく無音のサンプルを表すようになりました ({{bug(1336098)}})。</li>
+ <li>{{domxref("AudioParam.setValueCurveAtTime()")}} で、指定された値のいずれかが有限値ではない場合に <code>TypeError</code> 例外が発生するようになりました ({{bug(1308437)}})。</li>
+</ul>
+
+<h4 id="Encrypted_MediaExtensions_API" name="Encrypted_MediaExtensions_API">Encrypted MediaExtensions API</h4>
+
+<ul>
+ <li><code>MediaKeySession.keySystem</code> 文字列が仕様書から削除されたため、Firefox 54 で廃止しました ({{bug(1335555)}})。</li>
+ <li><a href="https://www.w3.org/TR/encrypted-media/#clear-key">Clear Key</a> および <a href="http://www.widevine.com/">Widevine</a> を使用する暗号化ストリームで、VP9 コーデックをサポートしました ({{bug(1338064)}})。</li>
+ <li>以前は MSE で、システムが "十分に高速である" と思われる場合に限り WebM/VP8 動画の使用を許可していましたが、システムのパフォーマンスにかかわらず VP8 でエンコードした <code>webm/video</code> メディアの再生をサポートするようになりました。</li>
+</ul>
+
+<h4 id="WebRTC" name="WebRTC">WebRTC</h4>
+
+<ul>
+ <li>Firefox 41 で追加した TCP ICE candidate のサポートを、デフォルトで有効にしました。これにより、転送に好ましい UDP ではなく TCP を使用することを ICE レイヤーが候補として検討することを可能にします。これは、UDP がブロックされている環境で役に立つでしょう ({{bug(1176382)}})。<a href="https://blog.mozilla.org/webrtc/active-ice-tcp-punch-firewalls-directly/">こちらのブログ投稿</a> で、この機能を詳しく説明しています。</li>
+</ul>
+
+<h2 id="Removals_from_the_web_platform" name="Removals_from_the_web_platform">ウェブプラットフォームから廃止</h2>
+
+<h3 id="CSS_2" name="CSS_2">CSS</h3>
+
+<ul>
+ <li>{{cssxref("unicode-bidi")}} プロパティの値 <code>isolate</code>、<code>isolate-override</code>、<code>plaintext</code> について、<code>-moz</code> 接頭辞がついている値を削除しました ({{bug(1333675)}})。</li>
+</ul>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<ul>
+ <li>Firefox 54 で、HTTP/1 のパイプラインのサポートを廃止しました。ネットワークのパフォーマンス向上が標準化された HTTP/2 や他の価値ある技術が充実した段階へ移行するにつれて、パイプラインは互換性やパフォーマンスの問題によりメンテナンスする価値がなくなります。設定項目 <code>network.http.pipelining</code> (および "network.http.pipelining" で始まる他の項目) は無視します。詳しくは {{bug(1340655)}} をご覧ください。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.jp/firefox/54.0/releasenotes/">Firefox 54.0 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/54/">Firefox 54 サイト互換性情報</a></li>
+ <li><a href="https://dev.mozilla.jp/2017/04/firefox-54-addon-compatibility/">Firefox 54 アドオン互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(53)}}</p>
+</article>
diff --git a/files/ja/mozilla/firefox/releases/55/index.html b/files/ja/mozilla/firefox/releases/55/index.html
new file mode 100644
index 0000000000..1af31a28b4
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/55/index.html
@@ -0,0 +1,232 @@
+---
+title: Firefox 55 for developers
+slug: Mozilla/Firefox/Releases/55
+tags:
+ - '55'
+ - Firefox
+ - Release Notes
+translation_of: Mozilla/Firefox/Releases/55
+---
+<article class="text-content" id="wikiArticle">
+<p>Firefox 55 は、米国時間 2017 年 8 月 8 日にリリースされました。このページでは、開発者に影響する Firefox 55 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>ネットワーク要求を、列の値や他のプロパティでフィルタリング可能になりました ({{bug(1041895)}}、{{bug(1354508)}}、{{bug(1354507)}})。また、正規表現を使用してフィルタリングできるようになりました ({{bug(1354495)}})。</li>
+ <li><a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a> で列を隠したり表示したりできるようになりました ({{bug(862855)}})。</li>
+ <li>ネットワークモニターに Remote IP ({{bug(1344523)}})、Protocol ({{bug(1345489)}})、Scheme ({{bug(1356867)}})、Cookies および Set-Cookies ({{bug(1356869)}}) の列を追加しました。</li>
+ <li>{{HTTPHeader("SourceMap")}} HTTP ヘッダーをサポートしました (以前のバージョンでは、非推奨である <code>X-SourceMap</code> ヘッダーをサポートしていました。{{bug(1346936)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{htmlattrxref("contenteditable")}} を <code>true</code> に設定した要素で、テキストの別の行を分けるために {{htmlelement("div")}} 要素を使用するようになりました。これは、他の現行ブラウザーに Firefox を合わせるためです ({{bug(1297414)}})。詳しくは <a href="/en-US/docs/Web/Guide/HTML/Editable_content#Differences_in_markup_generation">Differences in markup generation</a> をご覧ください。</li>
+ <li>Nightly で、<code>dom.forms.datetime</code> をデフォルトで有効にしました ({{bug(1366188)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("transform-box")}} プロパティをデフォルトで有効にしました ({{bug(1208550)}})。</li>
+ <li><a href="/ja/docs/Web/CSS/single-transition-timing-function#The_frames()_class_of_timing-functions">frames() タイミング関数</a> を実装しました ({{bug(1248340)}})。</li>
+ <li>{{cssxref("text-justify")}} プロパティを実装しました ({{bug(1343512)}}, {{bug("276079")}}).</li>
+ <li>[css-grid] repeat() 内で {{cssxref("fit-content")}} が、意図せず最大限に制限したサイズで領域を確保してしまう問題を修正しました ({{bug(1359060)}})。</li>
+ <li>{{cssxref("float")}} / {{cssxref("clear")}} の論理値 <code>inline-start</code> および <code>inline-end</code> は、以前から実装していましたが Release チャンネルでは無効化していました。これを、すべてのチャンネルにおいてデフォルトで有効化しました ({{bug(1253919)}})。</li>
+ <li>設定項目 <code>layout.css.variables.enabled</code> を完全に削除しました。<a href="/ja/docs/Web/CSS/Using_CSS_variables">CSS 変数</a> の機能は常にデフォルトで有効であり、無効化できません ({{bug(1312328)}})。</li>
+ <li>独自仕様である {{cssxref("-moz-context-properties")}} プロパティを実装しました ({{bug(1058040)}})。</li>
+ <li>角度の単位がつかない 0 度の値が、{{cssxref("linear-gradient")}} で正しく解釈されない問題を修正しました ({{bug(1363292)}})。</li>
+ <li>{{cssxref("::cue")}} 疑似要素をサポートしました。これは、メディア要素内で提供するテキストキューにマッチします ({{bug(1318542)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<ul>
+ <li>{{svgelement("radialGradient")}} の {{SVGAttr("fr")}} 属性を実装しました ({{bug("1240275")}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("SharedArrayBuffer")}} および {{jsxref("Atomics")}} オブジェクトをデフォルトで有効化しました。JavaScript の Shared Memory と Atomics の入門として、<a href="https://hacks.mozilla.org/2016/05/a-taste-of-javascripts-new-parallel-primitives/">A Taste of JavaScript’s New Parallel Primitives</a> をご覧ください。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">object destructuring</a> で rest operator (<code>...</code>) をサポートしました。また、spread operator (<code>...</code>) が <a href="/ja/docs/Web/JavaScript/Reference/Operators/Spread_operator#Spread_in_object_literals">object literals</a> で動作するようになりました (Stage 3 ECMAScript proposal: <a href="https://github.com/tc39/proposal-object-rest-spread">Object Rest/Spread Properties</a>。 {{bug(1339395)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Functions/Method_definitions#Async_generator_methods">Async generator methods</a> をサポートしました ({{bug(1353693)}})。</li>
+ <li>{{jsxref("String.prototype.toLocaleLowerCase()")}} および {{jsxref("String.prototype.toLocaleUpperCase()")}} メソッドで、ロケール固有の大文字・小文字の対応を言語タグで指定するための、省略可能な引数 <code>locale</code> をサポートしました ({{bug(1318403)}})。</li>
+ <li>{{jsxref("Collator", "Intl.Collator")}} オブジェクトで <code>caseFirst</code> オプションをサポートしました ({{bug(866473)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl">Intl API</a> でロケール設定が提供されていない場合に、オペレーティングシステムのデフォルトのロケールではなくブラウザーのデフォルトのロケールを使用するようになりました ({{bug(1346674)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Template_literals">Template call sites objects</a> が、未加工の文字列のリストに基づいて範囲ごとに正規化されるようになりました ({{bug(1108941)}})。</li>
+ <li>{{jsxref("TypedArray")}} のコンストラクター ({{jsxref("Int8Array")}}、{{jsxref("Float32Array")}} など) を ES2017 に更新しました。<code>ToIndex</code> 操作を行うようになり、引数なしでコンストラクターを使用できます。この場合は、length が 0 の typed array が戻ります ({{bug(1317383)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li>Firefox 53 から設定により使用可能であった <strong><a href="/ja/docs/Web/API/Background_Tasks_API">Collaborative Scheduling of Background Tasks API</a></strong> (またはシンプルに <strong>Background Tasks API</strong> または <strong><code>requestIdleCallback</code> API</strong> として知られる) を、デフォルトで有効にしました。この API は、次の再描画を行う前に利用可能な空き時間があるとブラウザーが判断したときに実行するタスクを予定することができます。これにより、目に見えるパフォーマンス低下を発生させずに空き時間をコードで使用できます ({{bug(1314959)}})。</li>
+ <li><strong><a href="/ja/docs/Web/API/WebVR_API">WebVR 1.1 API</a></strong> を、Windows でデフォルトで有効にしました (macOS は Nightly で使用できます)。この API はバーチャルリアリティデバイス (例えば Oculus Rift や HTC Vive のようなヘッドマウントディスプレイ) をウェブアプリで使用可能にして、開発者がディスプレイの位置や移動の情報を 3D シーンの移動に変換して、ディスプレイにコンテンツを表示することが可能になります。</li>
+ <li><strong><a href="/ja/docs/Web/API/Intersection_Observer_API">Intersection Observer API</a></strong> (祖先要素またはトップレベルのドキュメントの <a href="/ja/docs/Glossary/viewport" title="viewport: A viewport は、現在表示されているコンピューター画像の中の、多角形 (通常は長方形) 領域を表します。ウェブやブラウザーの場合、表示されているウェブサイトのコンテンツが占めるブラウザーの領域を示します。viewport の外側にあるコンテンツは、オンスクリーンで表示されていません。">viewport</a> と対象要素の交差状態の変化を非同期に監視する手段を提供します) を追加しました ({{bug(1321865)}})。</li>
+</ul>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>{{domxref("Window")}} の {{domxref("Window.scrollX", "scrollX")}} および {{domxref("Window.scrollY", "scrollY")}} プロパティ (別名である {{domxref("Window.pageXOffset", "pageXOffset")}} および {{domxref("Window.pageYOffset", "pageYOffset")}} も同様) を、サブピクセル精度に更新しました。戻り値が整数ではなく、サブピクセル精度のディスプレイでスクロール位置をより正確に示す浮動小数点数値になります ({{bug(1151421)}})。必要に応じて、整数に変換する {{jsxref("Math.round()")}} を使用できます。</li>
+ <li>{{domxref("MediaQueryList")}} (および他の関連機能) を、最新の仕様に合わせて更新しました。{{bug("1354441")}}、{{domxref("MediaQueryList")}}、{{domxref("MediaQueryListEvent")}} をご覧ください。</li>
+ <li>リストの値を変更する {{domxref("DOMTokenList")}} のメソッドが、自動的にホワイトスペースの切りつめと重複する値の削除を行うようになりました ({{bug("869788")}}、<a href="/en-us/docs/Web/API/DOMTokenList#Trimming_of_whitespace_and_removal_of_duplicates">Trimming of whitespace and removal of duplicates</a> をご覧ください)。</li>
+ <li>{{domxref("HTMLInputElement")}} の <code>maxLength</code> プロパティを、同等の HTML が生成された後に JavaScript で動的に変更することが可能になりました ({{bug(1352799)}})。</li>
+ <li>{{domxref("URL.URL", "URL()")}} コンストラクターの base (第 2 引数) が {{domxref("DOMString")}} を受け入れないようになりました。{{domxref("USVString")}} のみ受け入れます。既存の {{domxref("URL")}} オブジェクトを base に使用することは可能であり、それ自体をオブジェクトの {{domxref("DOMString.href","href")}} 属性に文字列化します ({{bug(1368950)}})。</li>
+</ul>
+
+<h4 id="DOM_events" name="DOM_events">DOM イベント</h4>
+
+<ul>
+ <li>{{domxref("Document.createEvent()")}} メソッドがサポートするイベントの型を、最新の DOM 仕様に合わせて更新しました ({{bug(1251198)}})。</li>
+ <li>{{domxref("MessageEvent.origin")}} プロパティの値が、{{domxref("DOMString")}} 型から {{domxref("USVString")}} 型に替わりました。また、{{domxref("MessageEvent.source")}} プロパティが <code>MessageEventSource</code> 値 (これは {{domxref("WindowProxy")}}、{{domxref("MessagePort")}}、{{domxref("ServiceWorker")}} オブジェクトにできます) をとるようになりました ({{bug(1311324)}})。</li>
+ <li>ピンチズームのジェスチャーを、{{event("wheel")}} イベントと <kbd>Ctrl</kbd> キーの組み合わせにマッピングしました。モバイルスクリーンやトラックパッドでピンチズームによるジェスチャーを使用してシンプルなズーム機能を開発者が実装できるようにするため、このマッピングを実装しました (一般的に、マウスホイール + <kbd>Ctrl</kbd> でズームします) ({{bug(1052253)}})。</li>
+</ul>
+
+<h4 id="Selection_API" name="Selection_API">Selection API</h4>
+
+<ul>
+ <li>内部で選択範囲が動いたときに editing hosts がどのようにフォーカスを得るかについて、他のブラウザーへ合わせるために <a href="/ja/docs/Web/API/Selection_API">Selection API</a> を更新しました ({{bug("1318312")}})。詳しくは <a href="/en-US/docs/Web/API/Selection#Behavior_of_Selection_API_in_terms_of_editing_host_focus_changes">Behavior of Selection API in terms of editing host focus changes</a> をご覧ください。</li>
+ <li>最近の仕様の変更に合致するよう、{{domxref("Selection")}} API を更新しました ({{bug(1359371)}}):
+ <ul>
+ <li>{{domxref("Selection.collapse", "collapse()")}} および {{domxref("Selection.extend", "extend()")}} メソッドの <code>offset</code> 引数を省略可能にしました。</li>
+ <li>{{domxref("Selection.collapse", "collapse()")}} メソッドの <code>node</code> 引数を null にすることが可能になりました。</li>
+ <li>{{domxref("Selection.containsNode", "containsNode()")}} メソッドの <code>partialContainment</code> 引数が省略可能になりました。</li>
+ <li>{{domxref("Selection.deleteFromDocument", "deleteFromDocument()")}} メソッドを追加しました。</li>
+ </ul>
+ </li>
+ <li>ウェブ互換性のため、および WebKit/Blink と一致させるため、{{domxref("Selection")}} API で {{domxref("Selection.removeAllRanges()")}} および {{domxref("Selection.collapse()")}} の別名として、<code>Selection.empty()</code> および <code>Selection.setPosition()</code> を追加しました ({{bug(1359387)}})。</li>
+ <li><a href="/ja/docs/Web/API/Storage_API">Storage API</a> の {{domxref("StorageManager.persist()")}} および {{domxref("StorageManager.persisted()")}} メソッドを実装して、<code>Window</code> コンテキストに公開しました ({{bug(1286717)}})。</li>
+</ul>
+
+<h4 id="Workers" name="Workers">Workers</h4>
+
+<ul>
+ <li>Worker および Shared Worker を、識別用の <code>name</code> プロパティをつけて作成できるようになりました。{{domxref("Worker.Worker", "Worker()")}} および {{domxref("SharedWorker.SharedWorker", "SharedWorker()")}} コンストラクター、{{domxref("DedicatedWorkerGlobalScope")}} および {{domxref("SharedWorkerGlobalScope")}} インターフェイスをご覧ください ({{bug(1364297)}})。</li>
+ <li>{{domxref("WindowOrWorkerGlobalScope.setTimeout","setTimeout()")}} および {{domxref("WindowOrWorkerGlobalScope.setInterval","setInterval()")}} が、バックグラウンドのタブでトラッキングスクリプトに対して最小間隔の調整を課すようになりました。<a href="/en-us/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout#Throttling_of_tracking_timeout_scripts">Throttling of tracking timeout scripts</a> をご覧ください ({{bug(1355311)}})。</li>
+</ul>
+
+<h4 id="Service_WorkersPush" name="Service_WorkersPush">Service Workers/Push</h4>
+
+<ul>
+ <li>Service Worker コンテキストに送信したメッセージ (例えば、{{domxref("ServiceWorkerGlobalScope.onmessage","onmessage")}} のイベントオブジェクトとして) は、他のウェブメッセージング機能との一貫性のため、{{domxref("MessageEvent")}} オブジェクトで表すようになりました。以前は {{domxref("ServiceWorkerMessageEvent")}} オブジェクトで表していましたが、これは非推奨になりました ({{bug(1311324)}})。</li>
+ <li>{{domxref("PushManager.subscribe()")}} メソッドが <code>applicationServerKey</code> の値として、{{domxref("ArrayBuffer")}}s や Base64 エンコードの文字列を受け入れるようになりました ({{bug(1337348)}})。</li>
+</ul>
+
+<h4 id="Web_Audio_API" name="Web_Audio_API">Web Audio API</h4>
+
+<ul>
+ <li>{{domxref("AudioContext")}} インターフェイスの非標準のコンストラクター (コンテキストの用途を示す列挙型の文字列を受け入れます) は、<code>options</code> 引数が与えられた場合にエラーが発生していました。この非標準コンストラクターを削除しました。ただし <code>options</code> 引数は Firefox で未サポートであり、現在は無視することに注意してください ({{bug(1361475)}})。</li>
+</ul>
+
+<h4 id="WebRTC" name="WebRTC">WebRTC</h4>
+
+<ul>
+ <li>ソースデバイスがステレオ音声を提供する場合に、{{domxref("mediaDevices.getUserMedia", "getUserMedia()")}} がデフォルトでステレオ音声ストリームを提供するようになりました。モノラル入力を明示的に要求する機能は <a href="/ja/docs/Mozilla/Firefox/Releases/56">Firefox 56</a> でサポートする予定です。現在、この機能はデスクトップに限り動作します。モバイル版 Firefox はステレオ音声入力ソースが未サポートです ({{bug(971528)}})。</li>
+ <li><code>getUserMedia()</code> の <a href="/ja/docs/Web/API/Media_Streams_API/Constraints">メディア特性、制約、設定</a> である <code>autoGainControl</code> および <code>noiseSuppression</code> が仕様書に準拠しました。以前は <code>moz</code> 接頭辞がついていました ({{bug(1366415)}})。</li>
+ <li>制約セットを空にして <code>getUserMedia()</code> を呼び出したとき、誤って <code>TypeError</code> はなく <code>NotSupportedError</code> を返していました。この問題を修正しました ({{bug(1349480)}})。</li>
+ <li>以下の新たな WebRTC 統計値を使用できます: <code>framesEncoded</code>、<code>pliCount</code>、<code>nackCount</code>、<code>firCount</code> ({{bug(1348657)}})。</li>
+ <li>以前は <code>mozRtt</code> と呼ばれていた <code>RTCInboundRTPStreamStats</code> ディクショナリーフィールドを、仕様書に合わせて <code>roundTripTime</code> に改名しました。また、<code>roundTripTime</code> の動作を標準仕様に準拠するよう調節しました。RTCP Receiver Report の RTCP タイムスタンプに基づいて秒単位で測定した、ラウンドトリップタイムの推定値を倍精度浮動小数点数を持ちます ({{RFC(3550, "", "6.4.1")}} で説明されているアルゴリズムに準拠します) ({{bug(1344970)}})。ただしこのプロパティは、まもなく別のディクショナリー (<code>RTCRemoteInboundRTPStreamStats</code>) に<em>移動する</em>ことを意識しておいてください ({{bug(1380555)}})。</li>
+ <li><code>RTCRTPStreamStats</code> ディクショナリーが、<code>firCount</code>、<code>pliCount</code>、<code>nackCount</code> フィールドを持つようになりました。これは、接続の信頼性を判断するために使用できる低レベルの情報を返します ({{bug(1348657)}})。</li>
+ <li><code>RTCOutboundRTPStreamStats</code> ディクショナリーが <code>framesEncoded</code> フィールドを持つようになりました。これは、ストリーム用のエンコードが成功したフレームの数を報告します。この情報を使用して、フレームレートを計算できます ({{bug(1348657)}})。</li>
+ <li>Android でビデオ通話のパフォーマンス向上とバッテリー節約のため、ハードウェアによる動画エンコードを有効化する <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1265755#c36">設定</a> を追加しました。これは <a href="/ja/docs/Mozilla/Firefox/Releases/56">Firefox 56</a> で、デフォルトで有効化します ({{bug(1265755)}})。</li>
+</ul>
+
+<h4 id="Encrypted_Media_Extensions_API" name="Encrypted_Media_Extensions_API">Encrypted Media Extensions API</h4>
+
+<ul>
+ <li>現在、Firefox は仕様書で認められていないにもかかわらず、安全でないコンテキストで Encrypted Media Extensions を使用できます。近い将来にこの動作を変更する予定であり、Firefox 55 からこのようなことを行うと、<a href="/ja/docs/Tools/Web_Console">ウェブコンソール</a> に非推奨である旨の警告を出力します ({{bug(1361000)}})。</li>
+ <li>現在、Firefox は仕様書で必須であるにもかかわらず、{{domxref("Navigator.requestMediaKeySystemAccess()")}} に渡す <code>suggestedConfigurations</code> 引数に {{domxref("MediaKeySystemCapabilities")}} オブジェクトを少なくとも 1 つ含めることを要求していません。Firefox 55 より、サポートするコーデックを指定せずに音声や動画の構成を指定すると、ウェブコンソールに警告を表示します。まもなく、1 つ以上の音声や動画の有効な構成が含められていない場合に例外が発生するようになります ({{bug(1368683)}})。</li>
+</ul>
+
+<h4 id="WebGL" name="WebGL">WebGL</h4>
+
+<ul>
+ <li>{{domxref("WEBGL_compressed_texture_s3tc_srgb")}} 拡張が、<a href="/ja/docs/Web/API/WebGL_API">WebGL</a> および <a href="/ja/docs/Web/API/WebGL2RenderingContext">WebGL2</a> コンテキストで使用可能になりました ({{bug(1325113)}})。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<ul>
+ <li>{{domxref("Geolocation")}} API が、<a href="/ja/docs/Web/Security/Secure_Contexts">安全なコンテキスト</a> である場合に限り利用可能になりました ({{bug(1072859)}})。</li>
+ <li>{{domxref("Storage API")}} が、<a href="/ja/docs/Web/Security/Secure_Contexts">安全なコンテキスト</a> である場合に限り利用可能になりました ({{bug(1268804)}})。</li>
+ <li>localhost で、混在コンテンツの読み込みを許可しました ({{bug(903966)}})。</li>
+ <li>リモートの JAR ファイルの読み込みを再び無効化しました ({{bug(1329336)}})。詳しくは <a href="/ja/docs/Mozilla/Security/Security_and_the_jar_protocol">Security and the jar protocol</a> をご覧ください。</li>
+</ul>
+
+<h3 id="Plugins" name="Plugins">プラグイン</h3>
+
+<ul>
+ <li>Flash コンテンツが "click-to-activate" になりました ({{bug(1317856)}})。これはすべての Nightly のユーザーと、beta のユーザーの 50% へ直ちに適用しました。Firefox 55 リリース版では、リリース後の 2 週間でユーザーの 5%、4 週間でユーザーの 25%、6 週間でユーザーの 100% へ適用する予定です ({{bug(1365714)}})。</li>
+ <li>Flash および他のプラグインは、<code>http://</code> および <code>https://</code> 以外の URL スキームで読み込むことができなくなりました ({{bug("1335475")}})。</li>
+</ul>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<ul>
+ <li>Linux 版 Firefox が、<code>-headless</code> フラグを使用して <a href="/ja/docs/Mozilla/Firefox/Headless_mode">ヘッドレスモード</a> で実行できるようになりました ({{bug(1356681)}})。</li>
+</ul>
+
+<h2 id="Removals_from_the_web_platform" name="Removals_from_the_web_platform">ウェブプラットフォームから廃止</h2>
+
+<h3 id="HTML_2" name="HTML_2">HTML</h3>
+
+<ul>
+ <li><code>xml:base</code> 属性を、{{htmlattrxref("style")}} 属性内に現れるパスのベース URL として使用できなくなりました。 例えば <code>&lt;div xml:base="https://example.com/" style="background:url(picture.jpg)"&gt;&lt;/div&gt;</code> のような使い方です ({{bug(1350521)}})。<a href="https://www.fxsitecompat.com/ja/docs/2017/xml-base-for-style-attribute-has-been-disabled/">style 属性向け xml:base が無効化されました</a> もご覧ください。</li>
+ <li>他のブラウザーがサポートしていないため、Firefox 55 から content ドキュメントでは {{htmlelement("style")}} 要素の {{htmlattrxref("scoped","style")}} 属性を設定 (<code>layout.css.scoped-style.enabled</code>) で無効化しました。</li>
+ <li>{{htmlelement("meta")}} 要素の {{htmlattrxref("http-equiv","meta")}} 属性で、不明瞭な値である <code>MSThemeCompatible</code> のサポートを Gecko から削除しました。他にサポートする現行ブラウザーがなく、また <a href="https://www.fxsitecompat.com/ja/docs/2017/checkboxes-and-radio-buttons-are-not-displayed-when-msthemecompatible-is-no/">互換性の問題が発生しました</a> ({{bug("966240")}})。</li>
+</ul>
+
+<h3 id="CSS_2" name="CSS_2">CSS</h3>
+
+<ul>
+ <li>独自仕様である <code>:-moz-bound-element</code> 疑似クラスを削除しました ({{bug(1350147)}})。</li>
+ <li>{{cssxref("text-decoration-line")}} の独自仕様の値である <code>-moz-anchor-decoration</code> を削除しました ({{bug(1355734)}})。</li>
+</ul>
+
+<h3 id="APIs_2" name="APIs_2">API</h3>
+
+<ul>
+ <li>{{domxref("UIEvent.isChar")}} プロパティは Firefox 以外のブラウザーがサポートせず、また macOS 以外では不完全な実装でした。よってほかのブラウザーに合わせるため、Firefox 55 で削除しました。</li>
+ <li>Firefox OS の独自仕様である Device Storage API を、プラットフォームから削除しました ({{bug(1299500)}})。</li>
+ <li>非標準の {{domxref("Window.find()")}} メソッドの、<code>aShowDialog</code> 引数 (ブラウザーの "検索" ダイアログを開くかを指定できます) を削除しました ({{bug(1348409)}})。</li>
+ <li><code>HTMLFormElement.requestAutoComplete()</code> メソッドを削除しました ({{domxref("HTMLFormElement")}} を参照) ({{bug(1270740)}})。</li>
+ <li>非標準で Mozilla 特有の WebRTC オプションである <code>mozDontOfferDataChannel</code> および <code>mozBundleOnly</code> を、<code><a href="/ja/docs/Web/API/RTCPeerConnection/createOffer#RTCOfferOptions_dictionary">RTCOfferOptions</a></code> ディクショナリーから削除しました。また、これらは {{domxref("RTCPeerConnection.createOffer()")}} でサポートしません ({{bug(1196974)}})。</li>
+ <li>Firefox OS 独自の <a href="/ja/docs/Archive/B2G_OS/API/Audio_Channels_API">Audio Channels API</a> を、{{domxref("HTMLMediaElement")}} および {{domxref("AudioContext")}} から削除しました ({{bug(1358061)}})。</li>
+</ul>
+
+<h3 id="SVG_2" name="SVG_2">SVG</h3>
+
+<ul>
+ <li><code>SVGZoomEvent</code> および <code>SVGZoomEvents</code> インターフェイスを、&lt;svg&gt; の <code>onzoom</code> 属性とともに SVG2 仕様および Gecko から削除しました ({{bug(1314388)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="WebExtensions" name="WebExtensions">WebExtensions</h3>
+
+<ul>
+ <li><a href="/ja/Add-ons/WebExtensions/API/contextMenus/create">contextMenus.create() の command プロパティで、コンテキストメニューからブラウザーアクションポップアップ、ページアクションポップアップ、サイドバーを開くことができます。</a></li>
+ <li><a href="/ja/Add-ons/WebExtensions/API/proxy">proxy API</a></li>
+ <li><a href="/ja/Add-ons/WebExtensions/manifest.json/chrome_settings_overrides">chrome_settings_overrides キーで、ブラウザーのホームページをオーバーライドできます。</a></li>
+ <li>browser_style プロパティで、<a href="/ja/Add-ons/WebExtensions/manifest.json/browser_action">ブラウザーアクションポップアップ</a>、<a href="/ja/Add-ons/WebExtensions/manifest.json/sidebar_action">サイドバー</a>、<a href="/ja/Add-ons/WebExtensions/manifest.json/options_ui">オプションページ</a> にブラウザーライクなスタイルを適用できます。</li>
+ <li><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/permissions">permissions API</a></li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.jp/firefox/55.0/releasenotes/">Firefox 55.0 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/55/">Firefox 55 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(54)}}</p>
+</article>
diff --git a/files/ja/mozilla/firefox/releases/56/index.html b/files/ja/mozilla/firefox/releases/56/index.html
new file mode 100644
index 0000000000..1b316dbe56
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/56/index.html
@@ -0,0 +1,165 @@
+---
+title: Firefox 56 for developers
+slug: Mozilla/Firefox/Releases/56
+tags:
+ - '56'
+ - Firefox
+ - Release Notes
+translation_of: Mozilla/Firefox/Releases/56
+---
+<article class="text-content" id="wikiArticle">
+<p>Firefox 56 は、米国時間 2017 年 9 月 28 日にリリースされました。このページでは、開発者に影響する Firefox 56 の変更点をまとめています。</p>
+
+<article class="text-content" id="wikiArticle">
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>CSS Grid インスペクターで負の行数を表示するようになりました ({{bug(1369942)}})。</li>
+ <li>新しい CSS Grid レイアウトパネルが使用可能になり、CSS Grid のデバッグの容易さが向上しました ({{bug(1181227)}})。詳しくは <a href="https://hacks.mozilla.org/2017/06/new-css-grid-layout-panel-in-firefox-nightly/">Powerful New Additions to the CSS Grid Inspector in Firefox Nightly</a> をご覧ください。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>ラベル付け可能なフォームコントロールに <code>labels</code> プロパティを実装しました。例えば {{domxref("HTMLInputElement.labels")}} です ({{bug(556743)}})。</li>
+ <li><code>&lt;link rel="preload"&gt;</code> を実装しました。詳しくは <a href="/ja/docs/Web/HTML/Preloading_content">Preloading content with rel="preload"</a> をご覧ください ({{bug(1222633)}})。現在は Firefox だけがキャッシュ可能なリソースのプリロードをサポートすることに注意してください。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>Mozilla の独自仕様である {{cssxref("&lt;color&gt;")}} 値 <code>-moz-win-accentcolor</code> と <code>-moz-win-accentcolortext</code> ({{bug(1344910)}})、および独自仕様のメディアクエリーである <code><a href="/ja/docs/Web/CSS/Media_Queries/Using_media_queries#-moz-windows-accent-color-in-titlebar">-moz-windows-accent-color-in-titlebar</a></code> を実装しました ({{bug(1379938)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl">Intl API</a> を、Android 版 Firefox で有効化しました ({{bug(1344625)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>Mac で別の半透明ではないアプリケーションの背後にウィンドウがあるとき、{{domxref("Document.hidden")}} が true を返すようになりました ({{bug(1236512)}})。</li>
+ <li>{{domxref("Gamepad.displayId")}} プロパティを実装しました ({{bug(1375816)}})。</li>
+ <li>{{domxref("PerformanceTiming.secureConnectionStart")}} プロパティを実装しました ({{bug(772589)}})。</li>
+ <li>Firefox は <code>iso-2022-jp</code> の {{domxref("TextDecoder.TextDecoder","TextDecoder()")}} がインスタンス化されたときに黙って <code>iso-2022-jp-2</code> シーケンスを受け入れていました。しかし他のブラウザーはこれをサポートしておらず、またこれを使用するページもないようですので、API を単純化するためにこの動作を削除しました ({{bug(715833)}})。</li>
+ <li>{{domxref("WindowOrWorkerGlobalScope.setTimeout","setTimeout()")}} および {{domxref("WindowOrWorkerGlobalScope.setInterval","setInterval()")}} の 4ms 制限の動作を、<a href="/ja/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout#Timeouts_throttled_to_%3E4ms">Timeouts throttled to &gt;=4ms</a> で説明しているとおり、他のブラウザーに合わせるよう更新しました ({{bug(1378586)}})。</li>
+ <li><a href="/ja/docs/Web/API/Page_Visibility_API">Page Visibility API</a> の {{domxref("Document.onvisibilitychange")}} ハンドラーを追加しました ({{bug("1333912")}})。</li>
+ <li>{{domxref("Window.showModalDialog()")}} メソッドを削除しました ({{bug(981796)}})。</li>
+ <li>{{domxref("HTMLFormElement.action")}}、{{domxref("HTMLInputElement.formAction")}}、{{domxref("HTMLButtonElement.formAction")}} プロパティの実装を、仕様書に従って正しい形式のサブミッション URL を返すように変更しました ({{bug(1366361)}})。</li>
+</ul>
+
+<h4 id="DOM_events" name="DOM_events">DOM イベント</h4>
+
+<ul>
+ <li>{{domxref("GlobalEventHandlers.onwheel")}} が {{domxref("HTMLElement")}} で使用可能になりました。以前は使用不可でした ({{bug(1370550)}})。</li>
+</ul>
+
+<h4 id="Media_and_WebRTC" name="Media_and_WebRTC">メディアと WebRTC</h4>
+
+<ul>
+ <li>設定変更の管理を支援するため、接続のローカル側およびリモート側の現行および未実行の構成を調査することが可能な {{domxref("RTCPeerConnection")}} のプロパティを Firefox でサポートしました: {{domxref("RTCPeerConnection.currentLocalDescription", "currentLocalDescription")}}、{{domxref("RTCPeerConnection.pendingLocalDescription", "pendingLocalDescription")}}、{{domxref("RTCPeerConnection.currentRemoteDescription", "currentRemoteDescription")}}、{{domxref("RTCPeerConnection.pendingRemoteDescription", "pendingRemoteDescription")}}。</li>
+ <li>Android で、メディアのハードウェアエンコーディングをデフォルトで有効化しました。Firefox 55 でも使用可能でしたが、デフォルトで無効でした ({{bug(1386974)}})。VP8 メディアのエンコードをサポートするデバイスでは、高効率なエンコーディングが可能になります。これはユーザーのデバイスのバッテリーやプロセッサーの消費を節約して、一般的にパフォーマンスが向上します。</li>
+</ul>
+
+<h4 id="Canvas_and_WebGL" name="Canvas_and_WebGL">Canvas と WebGL</h4>
+
+<ul>
+ <li>{{domxref("CanvasRenderingContext2D.drawImage()")}} メソッドを、<code>imageSmoothingEnabled</code> が <code>false</code> であってもダウンスケーリングする際にスムージングを行うよう更新しました。これは仕様書では必須にされていませんが、Chrome の動作に合わせています。{{bug(1360415)}} をご覧ください。</li>
+ <li>{{domxref("SVGImageElement")}} を {{domxref("CanvasImageSource")}} として使用可能になりました。例えば {{domxref("CanvasRenderingContext2D.drawImage","drawImage()")}} を呼び出すときに画像リソースとして使用できます ({{bug(1382027)}})。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Plugins" name="Plugins">プラグイン</h3>
+
+<ul>
+ <li>Android 版 Firefox で、すべてのプラグインのサポートを廃止しました ({{bug(1381916)}})。</li>
+</ul>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<ul>
+ <li>URL エンコーディングの問題を避けるため、Gecko は URL を内部で <a href="https://ja.wikipedia.org/wiki/Punycode">punycode</a> としてエンコードするようになりました ({{bug("945240")}} および {{bug("942074")}} の議論を参照)。</li>
+ <li>Windows および Mac OS X 版の Firefox で、<code>-headless</code> フラグを使用して <a href="/ja/docs/Mozilla/Firefox/Headless_mode">ヘッドレスモード</a> で実行することが可能になりました ({{bug(1355150)}} および {{bug(1355147)}})。</li>
+</ul>
+
+<h2 id="Removals_from_the_web_platform" name="Removals_from_the_web_platform">ウェブプラットフォームから廃止</h2>
+
+<h3 id="HTML_2" name="HTML_2">HTML</h3>
+
+<ul>
+ <li>{{htmlelement("isindex")}} 要素を HTML パーサーおよびフォーム送信から削除しました({{bug(1266495)}})。</li>
+ <li>{{htmlelement("applet")}} 要素を削除しました ({{bug(1279218)}})。</li>
+</ul>
+
+<h3 id="APIs_2" name="APIs_2">API</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="SVG_2" name="SVG_2">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="WebExtensions" name="WebExtensions">WebExtensions</h3>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browsingData/RemovalOptions">browsingData.RemovalOptions</a> に、Cookie のための "hostnames" オプションを追加しました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browsingData/settings">browsingData.settings()</a> および <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browsingData/removeCookies">browsingData.removeCookies()</a> を、Android 版 Firefox でサポートしました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/cacheEnabled">browserSettings.cacheEnabled</a> をサポートしました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_styles">browser_style</a> の使用方法を変更しました。</li>
+ <li><a href="/ja/Add-ons/WebExtensions/manifest.json/chrome_settings_overrides">chrome_settings_overrides.search_provider.is_default</a> をサポートしました。</li>
+ <li>contextMenus を <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/menus">menus</a> に改名しました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/cookies/set">cookies.set()</a> および <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/cookies/remove">cookies.remove()</a> がプライベートブラウジングモードで動作するようになりました。</li>
+ <li><a href="/ja/Add-ons/WebExtensions/API/devtools.panels/ElementsPanel/onSelectionChanged">devtools.panels.elements.onSelectionChanged</a> をサポートしました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/downloads/open">downloads.open()</a> が、ユーザーアクションから呼び出すことのみ可能になりました。</li>
+ <li><a href="/ja/Add-ons/WebExtensions/API/proxy#PAC_file_environment">FindProxyForURL の戻り値 "DIRECT" が、引数をとらないようになりました</a>。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/history/onVisited">history.onVisited</a> が、既知の場合に限ってページのタイトルを持つようになりました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/management/get">management.get()</a> および <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/management/getAll">management.getAll()</a> をサポートしました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/menus">menus</a> で "tools_menu" コンテキストをサポートしました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/menus/OnClickData">menus.OnClickData</a> が "linkText" を持つようになりました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/menus/create">menus.create()</a> が <a href="/ja/Add-ons/WebExtensions/API/menus#Icons">"icons"</a> オプションを持つようになりました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/notifications/onShown">notifications.onShown</a> をサポートしました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/pageAction/show">pageAction.show()</a> および <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/pageAction/hide">pageAction.hide()</a> を、Android 版 Firefox でサポートしました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a> で "unlimitedStorage" をサポートしました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/privacy/services">privacy.services</a> が passwordSavingEnabled プロパティを持つようになりました。</li>
+ <li><a href="/ja/Add-ons/WebExtensions/API/privacy/websites">privacy.websites.referrersEnabled</a> をサポートしました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/protocol_handlers">protocol_handlers</a> で "gopher" をサポートしました。</li>
+ <li>proxy.<span id="compatNote_1">registerProxyScript() を <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/proxy/register">proxy.register()</a></span> に改名しました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/proxy/unregister">proxy.unregister()</a> をサポートしました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onInstalled">runtime.onInstalled</a> で <code>temporary</code> フラグをサポートしました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/print">tabs.print()</a>、<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/PageSettings">tabs.PageSettings</a>、<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/printPreview">tabs.printPreview()</a>、<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/saveAsPDF">tabs.saveAsPDF()</a> をサポートしました。</li>
+ <li><a href="/ja/Add-ons/WebExtensions/API/tabs/Tab">tabs.Tab.lastAccessed</a> をサポートしました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/theme/reset">theme.reset()</a> をサポートしました。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/windows/create">windows.create()</a> および <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/windows/update">windows.update()</a> で、ウィンドウの初期タイトルをサポートしました。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.jp/firefox/56.0/releasenotes/">Firefox 56.0 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/56/">Firefox 56 サイト互換性情報</a></li>
+</ul>
+</article>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(55)}}</p>
+</article>
diff --git a/files/ja/mozilla/firefox/releases/57/index.html b/files/ja/mozilla/firefox/releases/57/index.html
new file mode 100644
index 0000000000..9f5ceea0a9
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/57/index.html
@@ -0,0 +1,302 @@
+---
+title: Firefox 57 (Quantum) for developers
+slug: Mozilla/Firefox/Releases/57
+tags:
+ - '57'
+ - Firefox
+ - Firefox Quantum
+ - Release Notes
+ - Stylo
+translation_of: Mozilla/Firefox/Releases/57
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p class="summary">Firefox 57 (別名 Firefox Quantum) は、米国時間 2017 年 11 月 14 日にリリースされました。このページでは、開発者に影響する Firefox 57 の変更点をまとめています。</p>
+
+<h2 id="Firefox_57_Firefox_Quantum" name="Firefox_57_Firefox_Quantum">Firefox 57 === Firefox Quantum</h2>
+
+<p>Firefox 57 は、Firefox を徹底的に再構築してパフォーマンス、安定性、外見を大きく向上させることを目指す <a href="https://wiki.mozilla.org/Quantum">Firefox Quantum</a> エンジニアリングプロジェクトにちなんで <strong>Quantum</strong> というリリース名を与えられました。Firefox 57 はこれらの改善点の一部をリリースする最初のバージョンであり、祝福を求めていました。</p>
+
+<div class="note">
+<p><strong>注記</strong>: このリリースの Quantum の特徴について詳しくは、Dan Callahan による記事 <a href="https://hacks.mozilla.org/2017/09/firefox-quantum-developer-edition-fastest-firefox-ever/">Firefox Quantum Developer Edition: the fastest Firefox ever with Photon UI and better tooling</a> をご覧ください。</p>
+</div>
+
+<p><a href="https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-engine-quantum-css-aka-stylo/">Firefox's new parallel CSS engine</a>、別名 <strong>Quantum CSS</strong> または <strong>Stylo</strong> はデスクトップ版の Firefox 57 でデフォルトで有効であり、モバイル版の Firefox は追って有効化します。多くのパフォーマンス向上は別として、開発者が何らかの大きな違いに気づくことがあってはいけません。Stylo には多くの小規模な機能差がありますが、Gecko で取り除くべき非標準の動作を修正するために実装したものです。このような差異は、適宜リファレンスのページやリリースノートに掲載します ({{anch("Quantum CSS notes", "Quantum CSS に関する補足")}} を参照)。</p>
+
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{htmlelement("input")}} の <a href="/ja/docs/Web/HTML/Element/input/date">date</a> および <a href="/ja/docs/Web/HTML/Element/input/time">time</a> タイプが、すべてのビルドで有効になりました ({{bug("1399036")}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/CSS/@media/display-mode">display-mode</a></code> メディアクエリーの値 <code>minimal-ui</code> および <code>standalone</code> をサポートしました ({{bug(1369815)}})。<a href="/ja/docs/Web/Manifest#display">Web app manifest の <code>display</code> フィールド</a> もご覧ください。</li>
+ <li>{{CSSxRef("grid-row-gap")}} および {{CSSxRef("grid-column-gap")}} プロパティが、{{CSSxRef("grid")}} ショートハンドプロパティでリセットされないようになりました ({{bug(1387410)}})。</li>
+ <li>設定項目 <code>layout.css.clip-path-shapes.enabled</code> を削除しました ({{bug(1399767)}})。この設定項目で、{{CSSxRef("clip-path")}} の {{cssxref("&lt;basic-shape&gt;")}} のサポートを無効化できました。これは Firefox 54 で導入されたものであり、今後は無効化できません。</li>
+</ul>
+
+<h4 id="Quantum_CSS_notes" name="Quantum_CSS_notes">Quantum CSS に関する補足</h4>
+
+<p>Quantum で以下の不具合を修正しました:</p>
+
+<ul>
+ <li>以前の Gecko のスタイルシステムでは <code>radial-gradient(circle gold,red)</code> のような放射状のグラデーションが、<code>circle</code> と <code>gold</code> の間にカンマがないため動作すべきではないにもかかわらず、動作していました ({{bug(1383323)}})。</li>
+ <li>オフスクリーンの要素をオンスクリーンにアニメーションするときに遅延を指定すると、Gecko は Windows など一部のプラットフォームで再描画を行いません ({{bug(1383239)}})。</li>
+ <li>Gecko では、{{htmlelement("details")}} 要素で {{CSSxRef("animation")}} をアクティブにすると <code>open</code> 属性を使用して既定で開かせることができません ({{bug(1382124)}})。</li>
+ <li>Gecko では、色を指定した {{CSSxRef("text-shadow")}} から色を指定しない {{CSSxRef("text-shadow")}} へ遷移する場合に {{cssxref("transition", "transitions")}} が動作しません ({{bug(726550)}})。</li>
+ <li>Gecko ではアニメーションのフィリングをキャンセルする (例えば <code>animation-fill-mode: forwards</code> を設定) と、1 回だけですが同じ要素に設定したトランジションを発生させられます (詳しくは {{bug(1192592)}} および <a href="https://bug1192592.bmoattachments.org/attachment.cgi?id=8843824">こちらのテストケース</a> をご覧ください)。一般的に、宣言的なアニメーションがトランジションを発生させるべきではありません。</li>
+ <li>Gecko では em 単位を使用するアニメーションが、アニメーションする要素の親で {{CSSxRef("font-size")}} を変更しても影響を受けませんが、実際は影響を受けるべきです ({{bug(1254424)}})。</li>
+ <li>Gecko と Quantum CSS では <code>font-size</code> の継承が異なっており、Gecko では一部の言語設定で継承したフォントのサイズが想定より小さくなります ({{bug(1391341)}})。</li>
+ <li>Gecko では {{CSSxRef("@document", "@-moz-document")}} 規則の <code>domain()</code> あるいは <code>url-prefix()</code> URL マッチング関数で解析するときに、URL トークンの解析と同じ仕組みを再使用します。Quantum CSS は同じ仕組みを使用せず、括弧や引用符を含む場合にトークンを無効とみなしません ({{bug(1362333)}})。</li>
+ <li>Gecko では canvas 2D コンテキストの {{DOMxRef("CanvasRenderingContext2D.font", "font")}} の値としてシステムフォント (例えば <code>menu</code>) を設定すると、期待するフォントが返りません (何も返りません)。Quantum でこの不具合を修正しました ({{bug(1374885)}})。</li>
+ <li>Gecko では、切り離されたサブツリー (例えば {{DOMxRef("Document.createElement","createElement()")}} を使用して作成した、DOM に未挿入の {{htmlelement("div")}}) を作成すると、サブツリーのルート要素がブロックレベル要素として設定されます。Quantum CSS では仕様書に従って、インラインとして設定します ({{bug(1374994)}})。</li>
+ <li>Gecko では {{CSSxRef("radial-gradient")}} の半径の構成要素として {{CSSxRef("calc")}} 式を使用すると、式が拒否されて値が無効になります ({{bug(1376019)}})。</li>
+ <li>Gecko では <code>calc(1*2*3)</code> が正しく解析されません。Quantum CSS でこの不具合を修正しました ({{bug(1379467)}})。</li>
+ <li>Quantum CSS では、<a href="https://drafts.csswg.org/css-values-3/#calc-notation"><code>calc()</code> を仕様書で説明されているとおり全面的にサポートしています</a> ({{bug(1350857)}})。Gecko はそうではありません。</li>
+ <li>Gecko は {{CSSxRef("::before")}} および {{CSSxRef("::after")}} 疑似要素で、{{CSSxRef("content")}} プロパティの値が <code>normal</code> や <code>none</code> であっても疑似要素を生成する不具合があります。仕様書によると、このようにするべきではありません ({{bug(1387931)}})。</li>
+ <li>Gecko は {{CSSxRef("background-position")}} プロパティで、異なる数の {{CSSxRef("&lt;position&gt;")}} 値を持つ 2 つの値の間 (例えば <code>background-position: 10px 10px;</code> と <code>background-position: 20px 20px, 30px 30px;</code>) でトランジションを行えない不具合があります ({{bug(1390446)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>非標準の {{JSxRef("Statements/for_each...in", "for each...in")}} (E4X) ループを廃止しました。代わりに {{JSxRef("Statements/for...of", "for...of")}} を使用してください。また、移行の助けになる <a href="/ja/docs/Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated">Warning: JavaScript 1.6's for-each-in loops are deprecated</a> をご覧ください。({{bug(1083470)}})</li>
+ <li>{{JSxRef("Object.prototype.watch()")}} および {{JSxRef("Object.unwatch", "unwatch()")}} メソッドが非推奨になり、使用すると警告が発生します。また、将来削除する予定です ({{bug(934669)}})。</li>
+ <li>非標準の {{JSxRef("Iterator")}} および {{JSxRef("StopIteration")}} オブジェクトと、古いイテレーションプロトコルを廃止しました ({{bug(1098412)}})。</li>
+ <li>非同期ジェネレーターを有効化しました ({{bug(1352312)}})。</li>
+ <li>for await (... of ...) 構文を有効化しました ({{bug(1352312)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li>{{DOMxRef("PerformanceObserver")}} API をデフォルトで有効にしました ({{bug(1386021)}})。</li>
+ <li>{{DOMxRef("AbortController")}} および {{DOMxRef("AbortSignal")}} インターフェイス (Abort API) を追加しました。必要に応じて、DOM リクエスト (<a href="/ja/docs/Web/API/WindowOrWorkerGlobalScope/fetch">fetch リクエスト</a> など) を中止できます ({{bug(1378342)}})。</li>
+ <li><a href="/ja/docs/Web/API/Storage_API">Storage API</a> を実装して、デフォルトで有効にしました ({{bug(1399038)}})。</li>
+</ul>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Selection_API">Selection API</a> の {{DOMxRef("Selection.type")}} プロパティを実装しました ({{bug(1359157)}})。</li>
+ <li>{{DOMxRef("Document.createEvent", "Document.createEvent('FocusEvent')")}} をサポートしました ({{bug(1388069)}})。</li>
+ <li>{{DOMxRef("HTMLInputElement")}} インターフェイスの <code>files</code> プロパティが設定可能になりました ({{bug(1384030)}})。</li>
+ <li><code>HTMLDocument.getSelection()</code> メソッドを {{DOMxRef("Document.getSelection","Document")}} インターフェイスに移動して、XML ドキュメントで使用可能になりました ({{bug(718711)}})。</li>
+ <li>{{Event("messageerror")}} イベントを実装して、メッセージターゲットで実装したイベントハンドラーの発動に反応して実行するコードを持つことが可能になりました。{{DOMxRef("MessagePort.onmessageerror")}}、{{DOMxRef("DedicatedWorkerGlobalScope.onmessageerror")}}、{{domxref("Worker.onmessageerror")}}、{{domxref("BroadcastChannel.onmessageerror")}}、{{domxref("Window.onmessageerror")}} をご覧ください ({{bug(1359017)}})。</li>
+ <li>{{DOMxRef("Headers")}} の値でイテレートを行うとき、値を自動的に辞書順で整列して、さらに重複するヘッダー名の値を結合するようになりました ({{bug(1396848)}})。</li>
+</ul>
+
+<h4 id="DOM_events" name="DOM_events">DOM イベント</h4>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="Media_and_WebRTC" name="Media_and_WebRTC">メディアと WebRTC</h4>
+
+<ul>
+ <li>SCTP メッセージの end-of-record (EOR) フラグを使用することにより、{{DOMxRef("RTCDataChannel")}} で任意のサイズ (256kiB が相互運用性が高いのですが、最大 1GiB まで) のメッセージをサポートしました。詳しくは {{SectionOnPage("/en-US/docs/Web/API/WebRTC_API/Using_data_channels", "Understanding message size limits")}} をご覧ください ({{bug(979417)}})。
+ <div class="note">Firefox は、複数のソースの SCTP メッセージを多重化する機能を提供する SCTP ndata プロトコルが未サポートですので、大きなデータオブジェクトを送信すると他のすべての SCTP 通信で著しい遅延が発生する可能性があります。Firefox の ndata サポートの実装および展開の進捗を追跡するには、{{bug(1381145)}} をご覧ください。</div>
+ </li>
+ <li>{{DOMxRef("RTCDataChannel.send()")}} メソッドで、送信しようとしたメッセージのサイズが受信側の {{Glossary("user agent","ユーザーエージェント")}} と互換性がない場合に <code>TypeError</code> 例外を発生できるようになりました (これは {{bug(979417)}} の一部として実装しました)。</li>
+ <li>録画中に発生した問題を報告するために送信される {{event("error")}} イベントを一般的なイベントから {{DOMxRef("MediaRecorderErrorEvent")}} 型にするため、<a href="/ja/docs/Web/API/MediaStream_Recording_API">MediaStream Recording API</a> を更新しました。</li>
+ <li>{{DOMxRef("OfflineAudioContext")}} のコンストラクターで引数のリストに加えてオブジェクトを指定可能になったため、関連文書を更新しました ({{bug(1388591)}})。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<ul>
+ <li><code>resource://</code> URL が情報を漏えいしないようになりました ({{bug(863246)}})。</li>
+ <li>Data URI のオリジンが、ナビゲーションの責任がある設定オブジェクトのオリジンを継承するのではなく、一意の opaque origin として扱うようになりました ({{bug(1324406)}})。</li>
+</ul>
+
+<h3 id="Plugins" name="Plugins">プラグイン</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<ul>
+ <li>Firefox の <a href="/ja/docs/Mozilla/Firefox/Headless_mode">ヘッドレスモード</a> に、コマンドラインからウェブサイトのスクリーンショットを直接取得することを可能にする <code>-screenshot</code> フラグを追加しました ({{bug(1378010)}})。</li>
+</ul>
+
+<h2 id="Removals_from_the_web_platform" name="Removals_from_the_web_platform">ウェブプラットフォームから廃止</h2>
+
+<h3 id="HTML_2" name="HTML_2">HTML</h3>
+
+<ul>
+ <li>さまざまなウェブ互換性の問題があるため、Firefox 57 で <code>&lt;link rel="preload"&gt;</code> (<a href="/ja/docs/Web/HTML/Preloading_content">Preloading content with rel="preload"</a> をご覧ください) を無効化しました ({{bug(1405761)}})。キャッシュ不可のリソース向けに改良したバージョンを Firefox 58 に搭載する予定です。</li>
+</ul>
+
+<h3 id="APIs_2" name="APIs_2">API</h3>
+
+<ul>
+ <li>Mozilla 独自仕様の <a href="/ja/docs/Archive/Social_API">Social API</a> を完全に削除しました ({{bug(1388902)}})。</li>
+</ul>
+
+<h3 id="SVG_2" name="SVG_2">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<div class="note">
+<p>Firefox 57 より、XPCOM ベースのアドオンのサポートを全面的に廃止します。すべての拡張機能は新しい <a href="/ja/Add-ons/WebExtensions">ブラウザー拡張機能</a> (WebExtensions としても知られています) への移行が必要であり、そうしなければ動作しません。</p>
+</div>
+
+<h3 id="WebExtensions" name="WebExtensions">WebExtensions</h3>
+
+<p>以下の API を追加または拡張しました:</p>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks">bookmarks</a></code>
+
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNodeType">bookmarks.BookmarkTreeNodeType</a></code> でセパレーターをサポートしました。</li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code>
+ <ul>
+ <li>light/dark テーマアイコンのための <code>theme_icons</code> プロパティ</li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserAction">browserAction</a></code>
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserAction/openPopup">browserAction.openPopup()</a></code></li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings">browserSettings</a></code>
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/allowPopupsForUserEvents">allowPopupsForUserEvents</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/homepageOverride">homepageOverride</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/imageAnimationBehavior">imageAnimationBehavior</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/newTabPageOverride">newTabPageOverride</a></code></li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browsingData">browsingData</a></code>
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browsingData/removeLocalStorage">browsingData.removeLocalStorage()</a></code></li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/clipboard">clipboard</a></code>
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/clipboard/setImageData">setImageData()</a></code></li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities">contextualIdentities</a></code>
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities/onCreated">onCreated</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities/onRemoved">onRemoved</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities/onUpdated">onUpdated</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities/ContextualIdentity">contextualIdentitities.ContextualIdentity</a></code> の <code>colorCode</code> および <code>iconUrl</code></li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/devtools.panels">devtools.panels</a></code>
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/devtools.panels/ElementsPanel/createSidebarPane">devtools.panels.ElementsPanel.createSidebarPane()</a></code></li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/downloads">downloads</a></code>
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/downloads/download">downloads.download()</a></code> の <code>incognito</code> オプション</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/downloads/DownloadItem">downloads.DownloadItem</a></code> の <code>estimatedEndTime</code> プロパティ</li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/Add-ons/WebExtensions/API/find">find</a></code>
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/find/find">find()</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/find/highlightResults">highlightResults()</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/find/removeHighlighting">removeHighlighting()</a></code></li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/pageAction/openPopup">pageAction.openPopup()</a></code></li>
+ <li><code><a href="/ja/Add-ons/WebExtensions/API/privacy/websites">privacy</a></code>
+ <ul>
+ <li><code><a href="/ja/Add-ons/WebExtensions/API/privacy/websites">websites.trackingProtectionMode</a></code></li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/proxy">proxy</a></code>
+ <ul>
+ <li><code>FindProxyForURL()</code> がオブジェクトを返せるようになりました</li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime">runtime</a></code>
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/runtime/openOptionsPage">runtime.openOptionsPage()</a></code> を Android でサポート</li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/sessions">sessions</a></code>
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/sessions/setTabValue">setTabValue()</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/sessions/getTabValue">getTabValue()</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/sessions/removeTabValue">removeTabValue()</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/sessions/setWindowValue">setWindowValue()</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/sessions/getWindowValue">getWindowValue()</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/sessions/removeWindowValue">removeWindowValue()</a></code></li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction">sidebarAction</a></code>
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction/open">sidebarAction.open()</a></code></li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage">storage</a></code>
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage/managed">storage.managed</a></code></li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs">tabs</a></code>
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/update">tabs.update()</a></code> の <code>loadReplace</code> オプション</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/Tab">tabs.Tab</a></code>、<code><a href="/ja/docs/">tabs.onUpdated</a></code>、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query">tabs.query()</a></code> の <code>discarded</code> プロパティ</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create">tabs.create()</a></code> で "view-source:" URL を開くことが可能になりました</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/Tab">tabs.Tab</a></code>、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create">tabs.create()</a></code>、<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/update">tabs.update()</a></code> の <code>openerTabId</code> プロパティ</li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">theme</a></code>
+ <ul>
+ <li><code>colors.toolbar</code></li>
+ <li><code>colors.toolbar_field</code></li>
+ <li><code>colors.toolbar_field_text</code></li>
+ <li><code>colors.toolbar_text</code></li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/theme">theme</a></code>
+ <ul>
+ <li><code><a href="/ja/Add-ons/WebExtensions/API/theme/update">theme.update()</a></code> の <code>windowId</code> オプション</li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/webRequest">webRequest</a></code>
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/filterResponseData">filterResponseData()</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/webRequest">webRequest</a></code> イベントの <code>proxyInfo</code> プロパティ</li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/windows">windows</a></code>
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/windows/create">windows.create()</a></code> の <code>allowScriptsToClose</code> プロパティ</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/57/">Firefox 57 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(56)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/58/index.html b/files/ja/mozilla/firefox/releases/58/index.html
new file mode 100644
index 0000000000..cb1233c705
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/58/index.html
@@ -0,0 +1,252 @@
+---
+title: Firefox 58 for developers
+slug: Mozilla/Firefox/Releases/58
+tags:
+ - '58'
+ - Firefox
+ - Release Notes
+translation_of: Mozilla/Firefox/Releases/58
+---
+<article class="text-content" id="wikiArticle">
+<p class="summary">Firefox 58 は、米国時間 2018 年 1 月 23 日にリリースされました。このページでは、開発者に影響する Firefox 58 の変更点をまとめています。</p>
+
+<article class="text-content" id="wikiArticle">
+<h2 id="Changes_for_Web_developers" name="Changes_for_Web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>{{cssxref("clip-path")}} で生成したシェイプ用の <a href="/ja/docs/Tools/Page_Inspector/How_to/Edit_CSS_shapes">シェイプパスエディター</a> を、既定で有効にしました ({{bug(1405339)}})。</li>
+ <li><a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a> に、<a href="/ja/docs/Tools/Network_Monitor#Pausing_and_resume_network_traffic_recording">ネットワーク通信の記録を停止/再開する</a> ボタンを追加しました ({{bug(1005755)}})。</li>
+ <li><a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a> で "Flash" フィルターボタンが使用できなくなりました。Flash の要求は "その他" フィルターに含まれます ({{bug(1413540)}})。</li>
+ <li>古いレスポンシブデザインモード (Firefox 52 より前のバージョンで、デフォルトで有効でした) のコードを、開発ツールから削除しました ({{bug(1305777)}})。新しいツールの情報は <a href="/ja/docs/Tools/Responsive_Design_Mode">レスポンシブデザインモード</a> で確認してください。</li>
+ <li>ページインスペクターの CSS ペインから、MDN のドキュメントを参照する機能を削除しました (バージョン 55 から無効化していました。{{bug(1382171)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("@font-face/font-display", "font-display")}} ディスクリプターを、すべてのプラットフォームにおいてデフォルトで有効にしました ({{bug(1317445)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("Promise.prototype.finally()")}} メソッドを実装しました ({{bug(1019116)}})。</li>
+ <li>{{jsxref("PluralRules", "Intl.PluralRules")}} オブジェクトを実装しました ({{bug(1403318)}})。</li>
+ <li>{{jsxref("NumberFormat.formatToParts", "Intl.NumberFormat.prototype.formatToParts()")}} メソッドを実装しました ({{bug(1403319)}})。</li>
+ <li>{{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}} オブジェクトで <code>hourCycle</code> オプションと <code>hc</code> 言語タグをサポートしました ({{bug(1386146)}})。</li>
+ <li><a href="https://github.com/tc39/proposal-optional-catch-binding">optional catch binding 提案</a> を実装しました ({{bug(1380881)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li>{{domxref("PerformanceNavigationTiming")}} API を実装しました ({{bug(1263722)}})。
+ <ul>
+ <li>必要に応じてこのインターフェイスを無効化できる設定項目 <code>dom.enable_performance_navigation_timing</code> (既定値は <code>true</code>) を Gecko に追加しました ({{bug(1403926)}})。</li>
+ </ul>
+ </li>
+</ul>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>いくつかの API において、error オブジェクトで報告されるエラー (例えば {{domxref("FileReader")}}、{{domxref("IDBRequest")}}、{{domxref("IDBTransaction")}} の <code>error</code> プロパティや、{{domxref("RTCPeerConnection")}} で一定の方法によるリクエストが成功しなかったとき) が、{{domxref("DOMException")}} のインスタンスになりました。{{domxref("DOMError")}} は非推奨になり、DOM4 仕様書から削除されました ({{bug(1120178)}})。</li>
+ <li><a href="/ja/docs/Web/API/WebVR_API">WebVR API</a> を、macOS でデフォルトで有効にしました ({{bug(1374399)}})。</li>
+ <li>{{domxref("PerformanceResourceTiming.workerStart")}} プロパティをサポートしました ({{bug(1191943)}})。</li>
+ <li>バジェットベースのバックグラウンドタイムアウト調節を実装しました。詳しくは <a href="/ja/docs/Web/API/Page_Visibility_API#Policies_in_place_to_aid_background_page_performance">Policies in place to aid background page performance</a> をご覧ください ({{bug(1377766)}})。</li>
+</ul>
+
+<h4 id="DOM_events" name="DOM_events">DOM イベント</h4>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="Media_and_WebRTC" name="Media_and_WebRTC">メディアと WebRTC</h4>
+
+<ul>
+ <li>接頭辞付きの {{domxref("HTMLMediaElement.srcObject")}} を削除しました。<code>mozSrcObject</code> の代わりに標準の <code>srcObject</code> を使用するように、コードを更新してください ({{bug(1183495)}})。</li>
+ <li>{{domxref("MediaDevices.getUserMedia", "getUserMedia()")}} を使用して取得したストリームにトラックを追加するために {{domxref("MediaStream.addTrack()")}} を使用して、その結果のストリームを記録しようとすると、期待どおりに動作するようになりました。以前は、<code>getUserMedia()</code> が返したストリームに元から含まれていたトラックだけが、記録したメディアに含まれていました ({{bug(1296531)}})。</li>
+ <li><a href="/ja/docs/Web/API/WebVTT_API">WebVTT</a> の {{domxref("VTTRegion")}} インターフェイスは WebVTT ファイルを解釈するときに常に作成されていましたが、以前はその結果の領域が使用されませんでした。Firefox 58 より、設定項目 <code>media.webvtt.regions.enabled</code> の値を <code>true</code> に設定すると、領域を使用するようになりました。</li>
+</ul>
+
+<h4 id="Canvas_and_WebGL" name="Canvas_and_WebGL">Canvas と WebGL</h4>
+
+<ul>
+ <li>接頭辞つき WebGL 拡張のサポートを廃止しました ({{bug(1403413)}}):
+ <ul>
+ <li><code>MOZ_WEBGL_compressed_texture_atc</code> の代わりに {{domxref("WEBGL_compressed_texture_atc")}} を使用してください。</li>
+ <li><code>MOZ_WEBGL_compressed_texture_pvrtc</code> の代わりに {{domxref("WEBGL_compressed_texture_pvrtc")}} を使用してください。</li>
+ <li><code>MOZ_WEBGL_compressed_texture_s3tc</code> の代わりに {{domxref("WEBGL_compressed_texture_s3tc")}} を使用してください。</li>
+ <li><code>MOZ_WEBGL_depth_texture</code> の代わりに {{domxref("WEBGL_depth_texture")}} を使用してください。</li>
+ <li><code>MOZ_WEBGL_lose_context</code> の代わりに {{domxref("WEBGL_lose_context")}} を使用してください。</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<ul>
+ <li>{{httpheader("Content-Security-Policy-Report-Only")}} で <code><a href="/ja/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors">frame-ancestors</a></code> を無視しないようになりました ({{bug(1380755)}})。</li>
+ <li>TLS ハンドシェイクのタイムアウトを Firefox に実装しました。既定値は 30 秒です。タイムアウト時間は、about:config の設定項目 <code>network.http.tls-handshake-timeout</code> で変更できます ({{bug(1393691)}})。</li>
+ <li><code><a href="/ja/docs/Web/HTTP/Headers/Content-Security-Policy/worker-src">worker-src</a></code> CSP ディレクティブを実装しました ({{bug(1302667)}})。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Plugins" name="Plugins">プラグイン</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<ul>
+ <li><a href="/ja/Apps/Progressive">プログレッシブ ウェブアプリ</a> の取り組みの一環として、Android 版 Firefox で "ホーム画面に追加" をサポートしました ({{bug(1212648)}})。</li>
+ <li><a href="/ja/docs/WebAssembly">WebAssembly</a> に、読み込み時間を最適化する階層型コンパイラー ({{bug(1277562)}}) と、新たなストリーミング API ({{jsxref("WebAssembly.compileStreaming()")}} および {{jsxref("WebAssembly.installStreaming()")}}) を搭載しました ({{bug(1347644)}})。</li>
+</ul>
+
+<h2 id="Removals_from_the_web_platform" name="Removals_from_the_web_platform">ウェブプラットフォームから廃止</h2>
+
+<h3 id="HTML_2" name="HTML_2">HTML</h3>
+
+<ul>
+ <li>ホットスポット領域を作成するために、{{htmlelement("map")}} 要素の内部に {{htmlelement("a")}} 要素を入れ子にすることができなくなりました。代わりに {{htmlelement("area")}} 要素を使用しなければなりません ({{bug(1317937)}})。</li>
+</ul>
+
+<h3 id="CSS_2" name="CSS_2">CSS</h3>
+
+<ul>
+ <li>Mozilla 独自仕様である以下の system metric 疑似クラスが、ウェブコンテンツで使用できなくなりました ({{bug(1396066)}}):
+ <ul>
+ <li>{{Cssxref(":-moz-system-metric(images-in-menus)")}}</li>
+ <li>{{Cssxref(":-moz-system-metric(mac-graphite-theme)")}}</li>
+ <li>{{Cssxref(":-moz-system-metric(scrollbar-end-backward)")}}</li>
+ <li>{{Cssxref(":-moz-system-metric(scrollbar-end-forward)")}}</li>
+ <li>{{Cssxref(":-moz-system-metric(scrollbar-start-backward)")}}</li>
+ <li>{{Cssxref(":-moz-system-metric(scrollbar-start-forward)")}}</li>
+ <li>{{Cssxref(":-moz-system-metric(scrollbar-thumb-proportional)")}}</li>
+ <li>{{Cssxref(":-moz-system-metric(touch-enabled)")}}</li>
+ <li>{{Cssxref(":-moz-system-metric(windows-default-theme)")}}</li>
+ </ul>
+ </li>
+ <li>Mozilla 独自仕様である以下の media feature が、ウェブコンテンツで使用できなくなりました ({{bug(1396066)}}):
+ <ul>
+ <li><code>-moz-color-picker-available</code></li>
+ <li><code>-moz-is-glyph</code></li>
+ <li><a href="/ja/docs/Web/CSS/@media/-moz-mac-graphite-theme"><code>-moz-mac-graphite-theme</code></a></li>
+ <li><code>-moz-mac-yosemite-theme</code></li>
+ <li><a href="/ja/docs/Web/CSS/@media/-moz-os-version"><code>-moz-os-version</code></a></li>
+ <li><code>-moz-overlay-scrollbars</code></li>
+ <li><code>-moz-physical-home-button</code></li>
+ <li><a href="/ja/docs/Web/CSS/@media/-moz-scrollbar-end-backward"><code>-moz-scrollbar-end-backward</code></a></li>
+ <li><a href="/ja/docs/Web/CSS/@media/-moz-scrollbar-end-forward"><code>-moz-scrollbar-end-forward</code></a></li>
+ <li><a href="/ja/docs/Web/CSS/@media/-moz-scrollbar-start-backward"><code>-moz-scrollbar-start-backward</code></a></li>
+ <li><a href="/ja/docs/Web/CSS/@media/-moz-scrollbar-start-forward"><code>-moz-scrollbar-start-forward</code></a></li>
+ <li><a href="/ja/docs/Web/CSS/@media/-moz-scrollbar-thumb-proportional"><code>-moz-scrollbar-thumb-proportional</code></a></li>
+ <li><code>-moz-swipe-animation-enabled</code></li>
+ <li><a href="/ja/docs/Web/CSS/@media/-moz-windows-accent-color-in-titlebar"><code>-moz-windows-accent-color-in-titlebar</code></a></li>
+ <li><a href="/ja/docs/Web/CSS/@media/-moz-windows-classic"><code>-moz-windows-classic</code></a></li>
+ <li><a href="/ja/docs/Web/CSS/@media/-moz-windows-compositor"><code>-moz-windows-compositor</code></a></li>
+ <li><a href="/ja/docs/Web/CSS/@media/-moz-windows-default-theme"><code>-moz-windows-default-theme</code></a></li>
+ <li><a href="/ja/docs/Web/CSS/@media/-moz-windows-glass"><code>-moz-windows-glass</code></a></li>
+ <li><a href="/ja/docs/Web/CSS/@media/-moz-windows-theme"><code>-moz-windows-theme</code></a></li>
+ </ul>
+ </li>
+ <li>Mozilla 独自仕様である <code>:-moz-styleeditor-transitioning</code> 疑似クラスが、ウェブコンテンツで使用できなくなりました ({{bug(1396099)}})。</li>
+</ul>
+
+<h3 id="JavaScript_2" name="JavaScript_2">JavaScript</h3>
+
+<ul>
+ <li>非標準の {{jsxref("Date.prototype.toLocaleFormat()")}} メソッドを削除しました ({{bug(818634)}})。詳細および移行方法について、<a href="/ja/docs/Web/JavaScript/Reference/Errors/Deprecated_toLocaleFormat">Warning: Date.prototype.toLocaleFormat is deprecated</a> をご覧ください。</li>
+ <li>非標準および非推奨の {{jsxref("Object.prototype.watch()")}} および {{jsxref("Object.prototype.unwatch", "unwatch()")}} メソッドを削除しました。今後は動作しません ({{bug(638054)}})。代わりに <a href="/ja/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters">setters および getters</a> または <a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Proxy">proxy</a> の使用を検討してください。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features/The_legacy_Iterator_protocol">レガシーイテレータープロトコル</a>、<code><a href="/ja/docs/Archive/Web/StopIteration">StopIteration</a></code> オブジェクト、<a href="/ja/docs/Web/JavaScript/Reference/Statements/Legacy_generator_function">レガシージェネレーター関数</a>、非標準の {{jsxref("Function.prototype.isGenerator()")}} メソッドを削除しました。代わりに ES2015 の <a href="/ja/docs/Web/JavaScript/Reference/Iteration_protocols">反復処理プロトコル</a> や、標準準拠の <a href="/ja/docs/Web/JavaScript/Guide/Iterators_and_Generators">イテレーターとジェネレーター</a> を使用してください ({{bug(1083482)}}, {{bug(1413867)}}, {{bug(1119777)}})。</li>
+ <li>非標準の <a href="/ja/docs/Web/JavaScript/Reference/Operators/Array_comprehensions">配列内包</a> および <a href="/ja/docs/Web/JavaScript/Reference/Operators/Generator_comprehensions">ジェネレーター内包</a> を削除しました ({{bug(1414340)}})。</li>
+</ul>
+
+<h3 id="APIs_2" name="APIs_2">API</h3>
+
+<ul>
+ <li>{{domxref("XMLHttpRequest.responseType")}} プロパティの独自仕様の値である <code>moz-blob</code> および <code>moz-chunked-text</code> を、Firefox 58 で完全に削除しました ({{bug(1397145)}}, {{bug(1397151)}}, {{bug(1120171)}})。</li>
+ <li><a href="/ja/docs/Web/API/Fetch_API#Aborting_a_fetch">Abort API の機能</a> を制御する設定項目である <code>dom.abortController.enabled</code> および <code>dom.abortController.fetch.enabled</code> を削除しました ({{bug(1402317)}})。デフォルトで有効化したためです。</li>
+ <li>独自仕様である <code>mozSrcObject</code> プロパティを Firefox 58 で削除しました ({{bug(1183495)}})。代わりに、標準の {{domxref("HTMLMediaElement.srcObject")}} プロパティを使用してください。</li>
+</ul>
+
+<h3 id="SVG_2" name="SVG_2">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="WebExtensions" name="WebExtensions">WebExtensions</h3>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings">browserSettings</a>
+
+ <ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/webNotificationsDisabled">browserSettings.webNotificationsDisabled</a> を実装しました ({{bug(1364942)}})</li>
+ </ul>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browsingData">browsingData</a>
+ <ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browsingData/removeLocalStorage">browsingData.localStorage</a> で、ホストによる localStorage の削除をサポートしました ({{bug(1388428)}})</li>
+ </ul>
+ </li>
+ <li>セキュリティデバイスを管理するための <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/pkcs11">pkcs11</a> API をサポートしました ({{bug(1357391)}})</li>
+ <li>プライバシー
+ <ul>
+ <li>firstPartyIsolate で、ファーストパーティー分離の切り替えが可能になりました ({{bug(1409045)}})</li>
+ <li>resistFingerprinting で、フィンガープリンティング対策の設定の切り替えが可能になりました ({{bug(1397611)}})</li>
+ </ul>
+ </li>
+ <li>タブ
+ <ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/discard">tabs.discard</a> を実装しました ({{bug(1322485)}})</li>
+ <li>タブの isArticle、isInReaderMode プロパティを実装しました ({{bug(1381992)}})</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/toggleReaderMode">toggleReaderMode</a>() メソッドを実装しました ({{bug(1381992)}})</li>
+ <li>tabs.created の openInReaderMode オプションを実装しました ({{bug(1408993)}})</li>
+ <li>tabs.onUpdated が、リーダービューを出入りするときに通知を発するようになりました ({{bug(1402921)}})</li>
+ </ul>
+ </li>
+ <li>テーマ
+ <ul>
+ <li>現在のテーマの属性を取得するための <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/theme/getCurrent">getCurrent</a>() メソッドをサポートしました ({{bug(1349944)}})</li>
+ <li>WebExtension のテーマの更新を受け取る onUpdated メソッドをサポートしました ({{bug(1349944)}})</li>
+ <li>colors.toolbar_text の別名として colors.bookmark_text をサポートしました ({{bug(1412595)}})</li>
+ <li>colors.toolbar_top_separator、colors.toolbar_bottom_separator、colors.toolbar_vertical_separator を実装しました ({{bug(1347190)}})</li>
+ </ul>
+ </li>
+ <li>webRequest
+ <ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/onBeforeRequest">webRequest.onBeforeRequest</a> が "frameAncestors" パラメーターを持つようになりました</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.org/firefox/58.0/releasenotes/">Firefox — Notes (58.0)</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/58/">Firefox 58 サイト互換性情報</a></li>
+</ul>
+</article>
+
+<ul>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(57)}}</p>
+</article>
diff --git a/files/ja/mozilla/firefox/releases/59/index.html b/files/ja/mozilla/firefox/releases/59/index.html
new file mode 100644
index 0000000000..9a4428a597
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/59/index.html
@@ -0,0 +1,226 @@
+---
+title: Firefox 59 for developers
+slug: Mozilla/Firefox/Releases/59
+tags:
+ - '59'
+ - Firefox
+ - Release Notes
+translation_of: Mozilla/Firefox/Releases/59
+---
+<p class="summary">Firefox 59 は、米国時間 2018 年 3 月 13 日にリリースされました。このページでは、開発者に影響する Firefox 59 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a> の応答タブで、応答が HTML である場合に <a href="/ja/docs/Tools/Network_Monitor#HTML_preview">描画された HTML のプレビュー</a> を表示するようになりました ({{bug(1353319)}})。</li>
+ <li>ストレージインスペクターで表示する Cookie の情報 (<a href="/ja/docs/Tools/Storage_Inspector#Cookies">Cookie</a> をご覧ください) で、それぞれの Cookie が same-site 状態であるかを示す <em>sameSite</em> 列を追加しました ({{bug(1298370)}})。</li>
+ <li><a href="/ja/docs/Tools/Rulers">定規</a> ツールで、ビューポートの現在の寸法を示す情報を表示するようになりました ({{bug(1402633)}})。</li>
+ <li><a href="/ja/docs/Tools/Responsive_Design_Mode">レスポンシブデザインモード</a> で、カーソルキーを使用して画面の寸法を設定できるようにになりました ({{bug(1421663)}})。詳しくは <a href="/ja/docs/Tools/Responsive_Design_Mode#Setting_screen_size">画面のサイズを設定する</a> をご覧ください。</li>
+ <li><a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a> の <em>ヘッダー</em> タブに表示する<em>生ヘッダー</em>で、応答のステータスコードを表示するようになりました ({{bug(1419401)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("textarea")}} 要素の {{htmlattrxref("autocomplete", "textarea")}} 属性を実装しました。要素でフォームのオートフィル機能を有効化または無効化できます。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("overscroll-behavior")}} プロパティと、このプロパティに関係するロングハンドプロパティである {{cssxref("overscroll-behavior-x")}} および {{cssxref("overscroll-behavior-y")}} を実装しました ({{bug(951793)}})。また、すべてのリリースで、デフォルトで有効化しました ({{bug(1428879)}})。</li>
+ <li>"unusual elements" (置換要素のように、CSS のボックスの概念に従って描画されない要素) で {{cssxref("display")}} の値に <code>contents</code> を指定したときの動作を、仕様書に従って更新しました ({{bug(1427292)}})。仕様で定められた正確な動作については、<a href="https://drafts.csswg.org/css-display/#unbox">Appendix B: Effects of display: contents on Unusual Elements</a> をご覧ください。</li>
+ <li>{{cssxref("position")}} の <code>sticky</code> を、適切な <a href="/ja/docs/Learn/HTML/Tables">HTML テーブル</a> の部品 (例えば {{htmlelement("th")}} 要素) でサポートしました ({{bug(975644)}})。</li>
+ <li>{{cssxref("&lt;color&gt;")}} 値 (<code>rgb()</code>, <code>rgba()</code>, <code>hsl()</code>, <code>hsla()</code>) で {{cssxref("calc()")}} をサポートしました ({{bug(984021)}})。</li>
+ <li><a href="/ja/docs/Web/CSS/Media_Queries">メディアクエリー</a> の値で {{cssxref("calc()")}} をサポートしました ({{bug(1396057)}})。</li>
+ <li>{{cssxref("@document")}} @-規則の使用を、ユーザースタイルシートと UA スタイルシートに限定しました ({{bug(1035091)}})。</li>
+ <li>{{cssxref("font-optical-sizing")}} プロパティを実装しました ({{bug(1435692)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li>{{domxref("PointerEvent","PointerEvents")}} を、デスクトップ版 Firefox で有効化しました ({{bug(1411467)}})。</li>
+</ul>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>{{domxref("EventTarget.EventTarget()","EventTarget()")}} コンストラクターを実装しました ({{bug(1379688)}})。</li>
+ <li>{{domxref("Response.Response()","Response()")}} コンストラクターが、仕様書に従って <code>body</code> 引数で <code>null</code> 値を受け入れるようになりました ({{bug(1303025)}})。</li>
+</ul>
+
+<h4 id="DOM_events" name="DOM_events">DOM イベント</h4>
+
+<ul>
+ <li>{{domxref("Event.composedPath()")}} メソッドを実装しました ({{bug(1412775)}})。</li>
+</ul>
+
+<h4 id="Service_workers" name="Service_workers">Service workers</h4>
+
+<ul>
+ <li>別のブラウザープロセスで、Service worker Clients API を発見および通信できるようになりました ({{bug(1293277)}})。</li>
+ <li>入れ子の about:blank や about:srcdoc のインラインフレームが、親で制御している service worker を継承するようになりました。これは {{bug(1293277)}} および {{bug(1426979)}} で修正しました。</li>
+ <li>service worker が {{domxref("Response")}} を {{domxref("FetchEvent.respondWith()")}} に提供するときに {{domxref("Response.url")}} の値が、インターセプトされたネットワークに最終的に解決された URL として伝播しないようになりました。以前は、代わりに {{domxref("Request.url","FetchEvent.request.url")}} を使用していました。これは、例えば service worker がスタイルシートや worker スクリプトをインターセプトする場合に提供される <code>Response.url</code> が、関連する {{cssxref("@import")}} や {{domxref("WorkerGlobalScope.importScripts()","importScripts()")}} のサブリソースの解決に使用されるということです ({{bug(1222008)}})。</li>
+ <li>{{domxref("Request.mode","FetchEvent.request.mode")}} が <code>"same-origin"</code> であり、{{domxref("Response.type")}} に <code>"cors"</code> を与えた場合に、<code>FetchEvent.respondWith()</code> がネットワークエラーを発生させるようになりました ({{bug(1222008)}})。</li>
+</ul>
+
+<h4 id="Media_and_WebRTC" name="Media_and_WebRTC">メディアと WebRTC</h4>
+
+<ul>
+ <li>{{domxref("MediaStreamTrack")}} の {{domxref("MediaStreamTrack.muted")}} プロパティ、および {{event("mute")}} イベントと {{event("unmute")}} イベント、さらにこれに対応するイベントハンドラーである {{domxref("MediaStreamTrack.onmute", "onmute")}} と {{domxref("MediaStreamTrack.onmute", "onunmute")}} を実装しました。トラックの <code>muted</code> 状態は、トラックが今のところメディアデータを提供できないことを示します。
+
+ <div class="note"><strong>注記:</strong> トラックの <code>muted</code> 状態は、一般的に考えられているトラックのミュートやミュート解除として役に立つものではありません。代わりに {{domxref("MediaStreamTrack.enabled", "enabled")}} プロパティを使用します。<code>enabled</code> を <code>false</code> に設定すると、トラックは空のフレームだけを出力します。</div>
+ </li>
+ <li>Android 版 Firefox 59 で Apple の HTTPS Live Streaming (HLS) を、音声および映像の両方でサポートしました。この非標準プロトコルは、モバイル環境においてモバイルストリーミングのためにこのプロトコルを必要とするサイトの互換性を向上するためにサポートしました。現在、デスクトップ版 Firefox にこのプロトコルを実装する予定はありません。</li>
+ <li>それぞれの RTP ストリームのソースの情報を提供するため、{{domxref("RTCRtpReceiver")}} の {{domxref("RTCRtpReceiver.getContributingSources", "getContributingSources()")}} および {{domxref("RTCRtpReceiver.getSynchronizationSources", "getSynchronizationSources()")}} メソッドを実装しました。ただし、公開前に仕様書が変更されましたので、デフォルトで設定項目 <code>media.peerconnection.rtpsourcesapi.enable</code> によってこれらを無効化しました ({{bug(1363667)}}, {{bug(1430213)}}, {{bug(1433236)}})。</li>
+ <li>Firefox の WebRTC 実装でトランシーバーをサポートしましたので、{{domxref("RTCRtpTransceiver")}} インターフェイスを実装しました。また、<code>RTCPeerConnection</code> やほかのインターフェイスを、最新の仕様書に従ってこれらを使用使用するように更新しました。</li>
+ <li>{{domxref("RTCPeerConnection.addTransceiver()")}} メソッドを追加しました。さらに、要求に従ってトランシーバーを作成するように、{{domxref("RTCPeerConnection.addTrack", "addTrack()")}} の動作を更新しました。</li>
+ <li>Firefox 58 で <a href="/ja/docs/Web/API/WebVTT_API">WebVTT</a> のリージョンを実装しましたが、デフォルトで無効化していました。これをデフォルトで有効化しました ({{bug(1415805)}})。</li>
+ <li>WebVTT ファイルで同じ行にすべての設定を並べる形式ではなく、1 行ごとにひとつの設定を並べる形式の <code>REGION</code> 定義ブロックを Firefox でサポートしました ({{bug(1415821)}})。</li>
+</ul>
+
+<h4 id="Canvas_and_WebGL" name="Canvas_and_WebGL">Canvas と WebGL</h4>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="CSSOM" name="CSSOM">CSSOM</h3>
+
+<ul>
+ <li>{{domxref("CSSNamespaceRule")}} インターフェイスと、<code>namespaceURL</code> および <code>prefix</code> プロパティを実装しました ({{bug(1326514)}})。</li>
+</ul>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<ul>
+ <li><code>data:</code> URI へのトップナビゲーションはブロックされます({{bug(1401895)}})。詳しくは <a href="https://blog.mozilla.org/security/2017/11/27/blocking-top-level-navigations-data-urls-firefox-59/">Blocking Top-Level Navigations to data URLs for Firefox 59</a> をご覧ください。</li>
+ <li>{{httpheader("X-Frame-Options")}} ヘッダーの <code>SAMEORIGIN</code> ディレクティブが、トップレベルのインラインフレームが同一オリジンであるかだけでなく、すべての祖先も同様であるかを確認するようになりました ({{bug(725490)}})。</li>
+ <li>異なるオリジンから現在のドキュメントに読み込まれる画像リソースが、HTTP 認証ダイアログを表示させることができなくなりました。 ({{bug(1423146)}})。詳しくは <a href="https://www.fxsitecompat.com/en-CA/docs/2017/http-auth-dialog-can-no-longer-be-triggered-by-cross-origin-images/">HTTP auth dialog can no longer be triggered by cross-origin images</a> をご覧ください。</li>
+ <li>ほかのブラウザーに合わせるため、および {{bug(1419658)}} で説明されている潜在的な問題を避けるため、HTTP 認証でユーザー名やパスワードに (<code>ISO-8859-1</code> ではなく) <code>utf-8</code> エンコーディングを使用するようになりました。</li>
+ <li><a href="https://searchfox.org/mozilla-central/source/security/manager/ssl/nsSTSPreloadList.inc">HSTS プリロードリスト</a>は Google によって毎日更新されています。いつもの更新であれば注意する必要はないのですが、このリリースから新しい TLD が追加されました。このうち具体的に注目したいのが <code>.app</code> と <code>.dev</code> です。これらの新しい TLD を知らず、ローカルの開発環境に使用した場合、予期しない挙動となるかもしれません。なお、ローカルでの開発には<a href="https://tools.ietf.org/html/rfc2606">予約済み TLD</a> を使うべきとされています。</li>
+</ul>
+
+<h3 id="Plugins" name="Plugins">プラグイン</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Removals_from_the_web_platform" name="Removals_from_the_web_platform">ウェブプラットフォームから廃止</h2>
+
+<h3 id="HTML_2" name="HTML_2">HTML</h3>
+
+<ul>
+ <li>{{htmlelement("script")}} 要素の {{htmlattrxref("type","script")}} 属性の非標準パラメーターである <code>version</code> (例えば <code>type="application/javascript;version=1.8"</code>) を削除しました ({{bug(1428745)}})。</li>
+</ul>
+
+<h3 id="CSS_2" name="CSS_2">CSS</h3>
+
+<ul>
+ <li>独自仕様の <code>mozmm</code> {{cssxref("&lt;length&gt;")}} 単位を削除しました ({{bug(1416564)}})。</li>
+ <li>独自仕様の {{cssxref("-moz-border-top-colors")}}、{{cssxref("-moz-border-right-colors")}}、{{cssxref("-moz-border-bottom-colors")}}、{{cssxref("-moz-border-left-colors")}} プロパティを、chrome コードのみ使用するように制限しました ({{bug(1417200)}})。</li>
+</ul>
+
+<h3 id="JavaScript_2" name="JavaScript_2">JavaScript</h3>
+
+<ul>
+ <li>非標準の <a href="/ja/docs/Web/JavaScript/Reference/Statements/try...catch#Conditional_catch_clauses">条件付き catch 節</a> を削除しました ({{bug(1228841)}})。</li>
+</ul>
+
+<h3 id="APIs_2" name="APIs_2">API</h3>
+
+<ul>
+ <li>非標準の <code>Event.getPreventDefault()</code> メソッドを削除しました。{{domxref("Event")}} で {{domxref("Event.preventDefault", "preventDefault()")}} が呼び出されたかを判断するには、代わりに {{domxref("Event.defaultPrevented")}} プロパティを使用します。</li>
+ <li>標準の <a href="/ja/docs/Web/API/Notifications_API">Notifications API</a> が好ましいため、独自仕様の <code><a href="/ja/docs/Archive/API/Navigator/mozNotification">Navigator.mozNotification</a></code> プロパティと <code>DesktopNotification</code> インターフェイスを削除しました ({{bug(952453)}})。</li>
+ <li>独自仕様の <code>window.external.addSearchEngine()</code> メソッドを削除しました ({{bug("862147")}})。詳しくは {{domxref("Window.sidebar")}} もご覧ください。</li>
+ <li>Firefox 限定の非標準プロパティである {{domxref("HTMLMediaElement")}} property <code>mozAutoplayEnabled</code> を削除しました。</li>
+</ul>
+
+<h3 id="SVG_2" name="SVG_2">SVG</h3>
+
+<ul>
+ <li>SMIL の <code>accessKey</code> 機能のサポートを廃止しました ({{bug(1423098)}})。</li>
+</ul>
+
+<h3 id="Other_2" name="Other_2">その他</h3>
+
+<ul>
+ <li>非標準の <code>pcast:</code> および <code>feed:</code> プロトコルのサポートを廃止しました ({{bug(1420622)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="WebExtensions" name="WebExtensions">WebExtensions</h3>
+
+<ul>
+ <li><a href="/ja/Add-ons/WebExtensions/manifest.json/theme">theme</a> の更新:
+
+ <ul>
+ <li>新しいプロパティ: <code>colors.background_tab_text</code>, <code>colors.toolbar_field_border</code></li>
+ <li>すべての色関連プロパティで、Chrome 形式の配列と CSS の色の値の両方をサポートしました。</li>
+ </ul>
+ </li>
+ <li>新しい <a href="/ja/Add-ons/WebExtensions/API/browserSettings">ブラウザー設定</a>:
+ <ul>
+ <li><a href="https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/contextMenuShowEvent"><code>contextMenuShowEvent</code></a></li>
+ <li><a href="https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/openBookmarksInNewTabs"><code>openBookmarksInNewTabs</code></a></li>
+ <li><a href="https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/openSearchResultsInNewTabs"><code>openSearchResultsInNewTabs</code></a></li>
+ <li><a href="https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/proxyConfig"><code>proxyConfig</code></a></li>
+ </ul>
+ </li>
+ <li>新しい <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs">tabs</a></code> の API:
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/captureTab">tabs.captureTab()</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/hide">tabs.hide()</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/show">tabs.show()</a></code></li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Archive/Add-ons/Legacy_Firefox_for_Android/API/NativeWindow/contextmenus">contextMenus</a></code> API で <a href="/ja/Add-ons/WebExtensions/API/menus/ContextType">"bookmark" コンテキスト</a> をサポートしました。</li>
+ <li>新しい <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/contentScripts">contentScripts</a></code> API で、ランタイムがコンテンツスクリプトを登録できます。</li>
+ <li>新しい <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/pageAction">pageAction</a></code>, <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserAction">browserAction</a></code>, <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction">SidebarAction</a></code> の API:
+ <ul>
+ <li><code>browserAction/pageAction/sidebarAction.set*</code> 関数で、変更を元に戻すための <code>null</code> をサポートしました。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserAction/isEnabled">browserAction.isEnabled()</a></code>, <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/pageAction/isShown">pageAction.isShown()</a></code> , <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction/isOpen">sidebarAction.isOpen()</a></code> 関数。</li>
+ </ul>
+ </li>
+ <li>デフォルトでページアクションを表示するための、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></code> の新しいオプション。</li>
+ <li><code>protocol_handers</code> の新しい値:
+ <ul>
+ <li>Secure Scuttlebutt 通信のための "ssb"</li>
+ <li>DATproject のための "dat"</li>
+ <li>IPFS のための "ipfs", "ipns", "dweb"</li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/privacy/websites">privacy.websites</a></code> の新しい設定 "cookieConfig"。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/cookies">cookies</a></code> API で <a href="/ja/Add-ons/WebExtensions/API/cookies#First-party_isolation">ファーストパーティ分離</a> をサポート。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/webRequest">webRequest</a></code> の新しいオプションである <code>upgradeToSecure</code>。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.org/firefox/59.0/releasenotes/">Firefox — Notes (59.0)</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/59/">Firefox 59 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(58)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/6/index.html b/files/ja/mozilla/firefox/releases/6/index.html
new file mode 100644
index 0000000000..4ca52ffc09
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/6/index.html
@@ -0,0 +1,237 @@
+---
+title: Firefox 6 for developers
+slug: Mozilla/Firefox/Releases/6
+tags:
+ - Firefox
+ - Firefox 6
+ - Gecko 6.0
+translation_of: Mozilla/Firefox/Releases/6
+---
+<p>Firefox 6 は Gecko 6.0 ベースのブラウザで、2011 年 8 月 16 日にリリースされました。このページは Firefox 6 のリリースにあたり、開発者に関係する変更についてまとめたものです。</p>
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">Web 開発者向けの変更点一覧</h2>
+<h3 id="HTML">HTML</h3>
+<ul>
+ <li>プログレスバーを表す HTML5 の <a href="/ja/docs/Web/HTML/Element/progress" title="HTML の &lt;progress> 要素は、タスクの進捗状況を表示します。プログレスバーとしてよく表示されます。"><code>&lt;progress&gt;</code></a> 要素がサポートされました。</li>
+ <li>メディア要素にテキストトラックを追加する HTML5 の <a href="/ja/docs/Web/HTML/Element/track" title="HTML の &lt;track> 要素はメディア要素 (&lt;audio> および &lt;video>) の子として使用します。この要素は自動的に処理される字幕など、時間指定されたテキストトラック(または時系列データ)を指定できます。トラックは WebVTT (Web Video Text Tracks) 形式 (.vtt ファイル) 又は Timed Text Markup Language (TTML) で整形します。"><code>&lt;track&gt;</code></a> 要素について、そのパース処理部分が実装されました。要素そのものは実装されていませんが、DOM に現れるようにはなります。</li>
+ <li><a href="/ja/docs/Web/CSS/border-radius" title="CSS の border-radius プロパティは、要素の境界の外側の角を丸めます。1つの半径を設定すると円の角になり、2つの半径を設定すると楕円の角になります。"><code>border-radius</code></a> プロパティによって角が丸められたコンテナ内の <a href="/ja/docs/Web/HTML/Element/iframe" title="HTML のインラインフレーム要素 (&lt;iframe>) は、入れ子になった閲覧コンテキストを表現し、現在の HTML ページに他のページを埋め込むことができます。"><code>&lt;iframe&gt;</code></a> についても、適切に角が丸められるようになりました。</li>
+ <li><a href="/ja/docs/Web/HTML/Element/form" title="HTML の &lt;form> 要素は、ウェブサーバーに情報を送信するための対話型コントロールを含む文書の区間を表します。"><code>&lt;form&gt;</code></a> 要素の <a href="/ja/docs/Web/HTML/Element/input" title="HTML の &lt;input> 要素は、ユーザーからデータを受け取るための、ウェブベースのフォーム用の対話的なコントロールを作成するために使用します。"><code>&lt;input&gt;</code></a> テキストフィールドが XUL の <code><span><a href="https://developer.mozilla.org/ja/docs/XUL/Property/maxwidth">maxwidth</a></span></code> プロパティをサポートしなくなりました。これは意図的なものではなく、また HTML 仕様違反でもあります。要素の最大幅を設定するには、<code><a href="/ja/docs/Web/HTML/Element/input#attr-size">size</a></code> 属性を利用します。</li>
+ <li><a href="/ja/docs/Web/HTML/Element/canvas" title="HTML の &lt;canvas> 要素 と Canvas スクリプティング API や WebGL API を使用して、グラフィックスやアニメーションを描画することができます。"><code>&lt;canvas&gt;</code></a> の <a href="/ja/docs/Web/API/CanvasRenderingContext2d" title='このインターフェイスのオブジェクトを取得するには、以下のようにのgetContext()の引数に"2d"を指定して呼び出します。'><code>CanvasRenderingContext2d</code></a> プロパティ <code>fillStyle</code> と <code>strokeStyle</code> はこれまで、妥当な色の指定の後に続く余計なものを無視する処理をしていましたが、適切にエラーとして処理されるように修正されました。たとえば、"red blue" を指定したとき、これまでは "red" と扱われていましたが、これからは指定そのものが無視されます。</li>
+ <li><a href="/ja/docs/Web/HTML/Element/canvas" title="HTML の &lt;canvas> 要素 と Canvas スクリプティング API や WebGL API を使用して、グラフィックスやアニメーションを描画することができます。"><code>&lt;canvas&gt;</code></a> 要素の width と height を適切に 0px と指定できるようになりました。これまではそう指定しても 300px にされていました。</li>
+ <li>HTML <a href="/ja/docs/HTML/Global_attributes#attr-data-*" title="HTML/Global_attributes#attr-data-*">カスタムデータ属性</a> (data-*) がサポートされました。DOM プロパティ <a href="/ja/docs/Web/API/Element/dataset" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>element.dataset</code></a> からデータにアクセスできます。</li>
+ <li><a href="/ja/docs/Web/HTML/Element/textarea" title="HTML の &lt;textarea> 要素は、複数行のプレーンテキスト編集コントロールを表し、レビューのコメントやお問い合わせフォーム等のように、ユーザーが大量の自由記述テキストを入力できるようにするときに便利です。"><code>&lt;textarea&gt;</code></a> 要素がフォーカスされたとき、テキスト挿入箇所が最後ではなく先頭になりました。これにより、他のブラウザの挙動と一致します。</li>
+</ul>
+<h3 id="CSS">CSS</h3>
+<dl>
+ <dt>
+ <a href="/ja/docs/Web/CSS/text-decoration-color" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-text-decoration-color</code></a></dt>
+ <dd>
+ このプロパティは <code>text-decoration</code> で指定する <code>underline</code>, <code>overline</code>, <code>strikethrough</code> などの色を指定します。</dd>
+ <dt>
+ <a href="/ja/docs/Web/CSS/text-decoration-line" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-text-decoration-line</code></a></dt>
+ <dd>
+ このプロパティは <code>text-decoration</code> の種類を指定します。</dd>
+ <dt>
+ <a href="/ja/docs/Web/CSS/text-decoration-style" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-text-decoration-style</code></a></dt>
+ <dd>
+ このプロパティは <code>text-decoration</code> で指定する <code>underline</code>, <code>overline</code>, <code>strikethrough</code> などのスタイルを指定します。スタイルには <code>solid</code>, <code>double</code>, <code>dotted</code>, <code>dashed</code>, <code>wavy</code> などがあります。</dd>
+ <dt>
+ <a href="/ja/docs/Web/CSS/hyphens" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-hyphens</code></a></dt>
+ <dd>
+ このプロパティは行送りが発生する際、単語のハイフネーションを制御するプロパティです。</dd>
+ <dt>
+ <a href="/ja/docs/Web/CSS/orient" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>-moz-orient</code></a></dt>
+ <dd>
+ 現在は Mozilla 固有のプロパティで、いくつかの要素 (<a href="/ja/docs/Web/HTML/Element/progress" title="HTML の &lt;progress> 要素は、タスクの進捗状況を表示します。プログレスバーとしてよく表示されます。"><code>&lt;progress&gt;</code></a> 要素など) の縦横の向きを制御します。</dd>
+ <dt>
+ <a href="/ja/docs/Web/CSS/::-moz-progress-bar" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>::-moz-progress-bar</code></a></dt>
+ <dd>
+ Mozilla 固有の擬似要素で、<a href="/ja/docs/Web/HTML/Element/progress" title="HTML の &lt;progress> 要素は、タスクの進捗状況を表示します。プログレスバーとしてよく表示されます。"><code>&lt;progress&gt;</code></a> 要素において、完了した部分のスタイルづけを行うためのものです。</dd>
+</dl>
+<h4 id="Other_changes" name="Other_changes">その他の変更</h4>
+<ul>
+ <li><a href="/ja/docs/Web/CSS/@-moz-document" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>@-moz-document</code></a> に新しく <code>regexp()</code> 関数記法が追加されました。これにより、スタイルシートを適用する文書の URL を <a href="/ja/docs/JavaScript/Guide/Regular_Expressions" title="JavaScript/Guide/Regular_Expressions">正規表現</a>でマッチさせられます。</li>
+ <li><code>aural</code> 媒体グループのために持っていたコードを削除したため、<a href="/ja/docs/Web/CSS/azimuth" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>azimuth</code></a> CSS プロパティのサポートが廃止されました。このプロパティはちゃんと実装されていなかったため、パッチを当て続けるのではなく未完成の実装を省くほうが理にかなっていると考えました。</li>
+ <li>これまで、<a href="/ja/docs/Web/CSS/:hover" title="CSS の :hover 疑似クラスは、ユーザーがポインティングデバイスで要素に反応したものの、アクティブ化する必要がないものを選択します。普通はユーザーがカーソル(マウスポインタ―)で要素の上をホバー(通過)させたときにこの状態になります。"><code>:hover</code></a> 擬似クラスは Quirks モードにおいてクラスセレクタに適用されませんでした。このため <code>.someclass:hover</code> といったコードは動きませんでしたが、この例外が取り払われました。</li>
+ <li><a href="/ja/docs/Web/CSS/:indeterminate" title="CSS の :indeterminate 疑似クラス は、中間の状態にあるフォームの要素を表します。"><code>:indeterminate</code></a> 擬似クラスは <a href="/ja/docs/Web/HTML/Element/progress" title="HTML の &lt;progress> 要素は、タスクの進捗状況を表示します。プログレスバーとしてよく表示されます。"><code>&lt;progress&gt;</code></a> 要素にも適用できます。これは非標準ですが、便利ですので他のブラウザにも取り入れられて欲しいと考えています。</li>
+</ul>
+<h3 id="DOM">DOM</h3>
+<dl>
+ <dt>
+ <a href="/ja/docs/CSS/Using_media_queries_from_code" title="CSS/Using_media_queries_from_code">コード内でのメディアクエリの使用</a></dt>
+ <dd>
+ <a href="/ja/docs/Web/API/Window/matchMedia" title="指定された メディアクエリ文字列のパース結果を表す、新しい MediaQueryList オブジェクトを返します。"><code>window.matchMedia()</code></a> メソッドと <a href="/ja/docs/Web/API/MediaQueryList" title="MediaQueryList オブジェクトは、document に適用された メディアクエリー の情報を格納し、メディアクエリーの状態が変更された時にリスナーに通知を送信します (つまり、メディアクエリーのテスト開始または中止を true と評価します)。"><code>MediaQueryList</code></a> インターフェースによって、メディアクエリーの結果をプログラムから検証できます。</dd>
+ <dt>
+ <a href="/ja/docs/DOM/Touch_events" title="DOM/Touch_events">Touch events</a></dt>
+ <dd>
+ Firefox 6 は W3C の標準タッチイベント仕様をサポートします。これにより、タッチスクリーンやトラックパッドなどタッチセンサー式のデバイスでのタッチの解釈が容易になります。</dd>
+ <dt>
+ <a href="/ja/docs/Server-sent_events" title="Server-sent_events">Server-sent events</a></dt>
+ <dd>
+ Server-sent events はサーバが手元で生成された DOM イベントと同じようにイベントを送出するよう、Web アプリケーションが尋ねるための機能です。</dd>
+</dl>
+<ul>
+ <li>これまでずっと、空文字列を返すだけだった <code>navigator.securityPolicy</code> プロパティが完全に削除されました。</li>
+ <li><a href="/ja/docs/Web/API/BlobBuilder" title="BlobBuilder インターフェースは、Blob オブジェクトを構築する簡単な方法を提供します。単に BlobBuilder を作成し、 append() メソッドを使ってデータのチャンクを付け足していってください。blobの生成が完了したら getBlob() メソッドを呼んで、あなたがビルダに送り込んだデータの Blob を取得してください。"><code>BlobBuilder</code></a> がサポートされました。現時点では接頭辞付きの実装 (<code>MozBlobBuilder</code>) となっています。</li>
+ <li><a href="/ja/docs/Web/API/Document/height" title="現在の document オブジェクトの高さを返します。多くの場合、これは現在の文書の &lt;body> 要素の高さと同じ値です。"><code>document.height</code></a>, <a href="/ja/docs/Web/API/Document/width" title="現在の文書の &lt;body> 要素の現在の幅をピクセル値で返します。"><code>document.width</code></a> が削除されました。 <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=585877" title="FIXED: remove document.height / document.width">バグ 585877</a></li>
+ <li><a href="/ja/docs/Web/API/DocumentType" title="DocumentType インターフェイスは、doctype を包含する Node を表します。"><code>DocumentType</code></a> オブジェクトの <code>entities</code>, <code>notations</code> プロパティが削除されました。これは実装されておらず常に <code>null</code> を返しており、また仕様からも削除されていました。</li>
+ <li><code>DOMConfiguration</code> インターフェースと、それを使用していた <code>document.domConfig</code> プロパティが削除されました。これらはサポートされておらず、また DOM 仕様からも削除されていました。</li>
+ <li><code>hashchange</code> イベントが適切に <a href="/ja/docs/DOM/window.onhashchange#The_hashchange_event" title="DOM/window.onhashchange#The_hashchange_event"><code>newURL</code>, <code>oldURL</code> フィールド</a> を含むようになりました。</li>
+ <li><a href="/ja/docs/Web/API/FileReader" title="FileReader オブジェクトを使うと、ユーザのコンピュータ内にあるファイル(もしくはバッファ上の生データ)を Web アプリケーションから非同期的に読み込むことが出来ます。読み込むファイルやデータは File ないし Blob オブジェクトとして指定します。"><code>FileReader</code></a> インターフェースの <code>abort()</code> メソッドが、ファイルの読み込み中に利用された際に例外を投げるようになりました。</li>
+ <li><a href="/ja/docs/Web/API/Window/postMessage" title="window.postMessage が呼び出された場合、実行されなければならない保留中のスクリプトが完了した後に MessageEvent が対象ウィンドウにディスパッチされます。(例えば、window.postMessage がイベントハンドラから呼ばれた場合のまだ実行されていない残りのイベントハンドラや、以前に設定された保留中のタイムアウト、など)。 MessageEvent には message という型、window.postMessage に与えられる第一引数の文字列の値に設定される data プロパティ、 window.postMessage が呼び出されたとき、window.postMessage を呼び出しているウィンドウ内のメインドキュメントの生成元に対応する origin プロパティ、window.postMessage を呼び出したウィンドウである source プロパティがあります。(他のイベントの標準プロパティがそれらの期待される値で存在します)"><code>window.postMessage()</code></a> メソッドが <a href="/ja/docs/DOM/The_structured_clone_algorithm" title="DOM/The_structured_clone_algorithm">structured clone algorithm</a> を使用するようになり、あるウィンドウから他のウィンドウに文字列ではなく JavaScript オブジェクトを渡せるようになりました。</li>
+ <li><a href="/ja/docs/Web/API/Window/history" title="The Window.history read-only property returns a reference to the History object, which provides an interface for manipulating the browser session history (pages visited in the tab or frame that the current page is loaded in)."><code>window.history</code></a> API が <code>pushState()</code>, <code>replaceState()</code> メソッドに渡されたオブジェクトのシリアライズに <a href="/ja/docs/DOM/The_structured_clone_algorithm" title="DOM/The_structured_clone_algorithm">structured clone algorithm</a> を使用するようになりました。これによって循環参照などを含むより複雑なオブジェクトも使用可能となりました。</li>
+ <li>新しく追加された <code>beforeprint</code>, <code>afterprint</code> イベントによって、<a href="/ja/docs/Printing#Detecting_print_requests" title="Printing#Detecting_print_requests">印刷が行われたときと完了したときを検出する</a> ことができるようになりました。</li>
+ <li><code>document.strictErrorChecking</code> プロパティが削除されました。実装されておらず、また DOM 仕様からも削除されていました。</li>
+ <li>標準である <a href="/ja/docs/Web/API/Event/defaultPrevented" title="イベントに対して event.preventDefault() が呼ばれているかを、 boolean で返します。"><code>event.defaultPrevented</code></a> プロパティがサポートされました。<a href="/ja/docs/Web/API/Event/preventDefault" title="なし"><code>event.preventDefault()</code></a> がイベントから呼び出されたかを知る際には、非標準の <code>getPreventdefault()</code> ではなくこちらを使うようにしましょう。</li>
+ <li><a href="/ja/docs/Web/API/Window/top" title="ウィンドウ階層における最上位のウィンドウへの参照を返します。"><code>window.top</code></a> プロパティが、適切に readonly となりました。</li>
+ <li>これまでドキュメントのなかった DOM views が削除されました。これらには実装の詳細が多く、また不必要に様々なものを複雑にしていたため削除されました。もしこの変化に気づいた場合は、何か誤ったことをしている可能性があります。</li>
+ <li><code>EventTarget</code> の関数 <a href="/ja/docs/XPCOM_Interface_Reference/nsIDOMEventTarget" title="XPCOM_Interface_Reference/nsIDOMEventTarget"><code>addEventListener()</code></a> に指定する引数 <code>useCapture</code> が optional となりました。これは WebKit の動作とも共通し、また新しい仕様でもそう定義されています。</li>
+ <li><a href="/ja/docs/DOM/XMLHttpRequest" title="DOM/XMLHttpRequest"><code>XMLHttpRequest</code></a> オブジェクトの <code>mozResponseArrayBuffer</code> プロパティが <code>responseType</code>, <code>response</code> プロパティに置き換えられました。</li>
+ <li><a href="/ja/docs/DOM/HTMLElement" title="DOM/HTMLElement"><code>HTMLElement</code></a> インターフェースに <a href="/ja/docs/Web/API/Element/dataset" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>element.dataset</code></a> プロパティが追加されました。このプロパティにより <a href="/ja/docs/HTML/Global_attributes#attr-data-*" title="HTML/Global_attributes#attr-data-*">要素の <code>data-*</code> グローバル属性</a> にアクセスできます。</li>
+ <li><a href="/ja/docs/Web/API/CustomEvent" title="このインターフェイスは親である Event からプロパティを継承します:"><code>CustomEvent</code></a> インターフェースが実装されました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=427537" title="FIXED: Implement CustomEvent DOM3 specification">バグ 427537</a>)</li>
+ <li>セキュリティの観点から、ユーザーがロケーションバーに <code>data:</code> URI と <code>javascript:</code> URI を入力した時、現在のページのセキュリティコンテキストを受け継がなくなりました。代わりに、新しい空のセキュリティコンテキストが生成されます。これにより、ロケーションバーに入力した <code>javascript:</code> URI から読み込まれたスクリプトは、DOM メソッドなどへのアクセスを持たなくなります。しかし、これらの URI がスクリプトから使用された場合は、これまでと同じように動作します。</li>
+</ul>
+<h3 id="JavaScript">JavaScript</h3>
+<ul>
+ <li>これまで、いくつかの組み込み関数 (<code>eval</code>, <code>parseInt</code>, <code>Date.parse</code> など) に対し <code>new</code> オペレータを使うことができましたが、仕様においてこれは許されるべきではないとされていました。Firefox 6 では、このサポートが廃止されました。<code>new</code> オペレータのこういった利用は公式にはサポートされておらず、また広く利用されてもいません。この変更が何かに影響することはないでしょう。</li>
+ <li>ECMAScript Harmony の <a href="/ja/docs/JavaScript/Reference/Global_Objects/WeakMap" title="JavaScript/Reference/Global_Objects/WeakMap">WeakMaps</a> がプロトタイプ実装として追加されました。</li>
+</ul>
+<h3 id="SVG">SVG</h3>
+<ul>
+ <li><code><a href="/ja/docs/Web/SVG/Attribute/pathLength">pathLength</a></code> 属性がサポートされました。</li>
+ <li><a href="/ja/docs/data_URIs" title="data_URIs"><code>data:</code> URL</a> から読み込まれたパターン、グラデーション、フィルタが適切に動作するようになりました。</li>
+</ul>
+<h3 id="MathML">MathML</h3>
+<ul>
+ <li><code><a href="/ja/docs/Web/MathML/Element/mstyle" title="&lt;mstyle>">&lt;mstyle&gt;</a></code> の実装が修正されました。</li>
+</ul>
+<h3 id="Accessibility_ARIA" name="Accessibility_(ARIA)">アクセシビリティ (ARIA)</h3>
+<ul>
+ <li>状態変化イベントが <code>aria-busy</code> の値の変化でも発生するようになりました。</li>
+ <li><code>aria-sort</code> が発生した際に属性変化イベントが発生するようになりました。</li>
+</ul>
+<h3 id="Networking" name="Networking">ネットワーク</h3>
+<dl>
+ <dt>
+ <a href="/ja/docs/WebSockets" title="WebSockets">WebSocket</a></dt>
+ <dd>
+ WebSocket プロトコルのサポートがバージョン 07 に更新されました。また、グローバルオブジェクトの<code>WebSocket</code>オブジェクトが<code>MozWebSocket</code>に改称されました。接頭辞のないオブジェクトの検出を目的としたときに問題となるため、それを防ぐ目的です。</dd>
+</dl>
+<ul>
+ <li><code>Content-Disposition</code> ヘッダの構文解析が修正され、バックスラッシュでエスケープされた ASCII 文字が適切に文字そのものとして処理されるようになりました。これまではその文字をアンダースコア ("<code>_</code>")に置き換えるという誤った処理がなされていました。</li>
+ <li><code>Set-Cookie</code> ヘッダのパスの値において、クォートが適切に処理されるようになりました。これまでクォートを使った場合はそれがデリミタではなく、パスの文字列として認識されていました。<strong>この変更により、いくつかのサイトで互換性の問題が発生する可能性があります。</strong>製作者はコードをチェックすることが望まれます。</li>
+ <li><a class="external" href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.42"><code>Upgrade</code></a> リクエストヘッダがサポートされました。<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannelInternal#HTTPUpgrade()">nsIHttpChannelInternal.HTTPUpgrade()</a></code> を呼ぶことで、HTTP チャネルから他のプロトコルへのアップグレードをリクエストできます。</li>
+</ul>
+<h3 id="Other_changes" name="Other_changes">その他の変更</h3>
+<ul>
+ <li>Microsummary が削除されました。広く使われおらず、また見つけにくい機能でもあり、サポートの継続によって Places (ブックマークと履歴) のアーキテクチャを向上させることが難しくなっていたからです。</li>
+ <li>WebGL が <a class="external" href="http://www.khronos.org/registry/gles/extensions/OES/OES_texture_float.txt"><code>OES_texture_float</code></a> 拡張をサポートしました。</li>
+ <li>JavaScript コードをテストする簡易で便利なツール <a href="/ja/docs/Tools/Scratchpad" title="Tools/Scratchpad">Scratchpad</a> が追加されました。</li>
+</ul>
+<h2 id="Mozilla_開発者とアドオン開発者向けの変更点">Mozilla 開発者とアドオン開発者向けの変更点</h2>
+<p>Firefox 6 へアドオンを対応させるために必要な作業の概要は <a href="/ja/docs/Firefox/Updating_add-ons_for_Firefox_6">アドオンの Firefox 6 対応</a> をご覧ください。</p>
+<div class="note">
+ <strong>注:</strong> Firefox 6 では、従来のメジャーリリースと同様に、バイナリコンポーネントをコンパイルし直す必要があります。詳しくは <a href="/ja/docs/Developer_Guide/Interface_Compatibility#Binary_Interfaces">バイナリインタフェース</a> をご覧ください。</div>
+<h3 id="JavaScript_コードモジュール">JavaScript コードモジュール</h3>
+<h4 id="FileUtils.jsm">FileUtils.jsm</h4>
+<ul>
+ <li><code>openSafeFileOutputStream()</code> メソッドは、ファイルを即座に開こうとする代わりに、<code>DEFER_OPEN</code> <a href="/ja/docs/XPCOM_Interface_Reference/nsIFileOutputStream#Behavior_flag_constants">ビヘイビアフラグ</a> 付きで開くようになりました。</li>
+</ul>
+<h4 id="XPCOMUtils.jsm">XPCOMUtils.jsm</h4>
+<ul>
+ <li>新しい <a href="/ja/docs/JavaScript_code_modules/XPCOMUtils.jsm#importRelative()"><code>importRelative()</code></a> メソッドは、ある JavaScript コードモジュールを、他の JavaScript コードモジュールの相対パスから読み込むようになりました。これによって互いに依存するモジュールを開発しやすくなりました。</li>
+</ul>
+<h3 id="XPCOM">XPCOM</h3>
+<ul>
+ <li><a href="/ja/docs/XPCOM_array_guide#nsCOMArray.3CT.3E"><code>nsCOMArray&lt;T&gt;</code></a> に、配列から複数のオブジェクトを一度に削除できる <a href="/ja/docs/XPCOM_array_guide#Deleting_objects"><code>RemoveObjectsAt()</code></a> メソッドが追加されました。</li>
+</ul>
+<h3 id="クロームからの_DOM_の使用">クロームからの DOM の使用</h3>
+<dl>
+ <dt>
+ <a href="/ja/docs/Extensions/Using_the_DOM_File_API_in_chrome_code">クロームコードでの DOM File API の使用</a></dt>
+ <dd>
+ これまでもクロームコード内で DOM File API を使うことは可能でしたが、<a href="/ja/docs/DOM/File"><code>File</code></a> コンストラクタをクロームで使用した場合に、ローカルパス名文字列を指定できるようになりました。また、<a href="/ja/docs/XPCOM_Interface_Reference/nsIFile"><code>nsIFile</code></a> オブジェクトを使用して、DOM File API を通じてアクセスするファイルを指定できるようになりました。</dd>
+</dl>
+<h3 id="インタフェースの変更">インタフェースの変更</h3>
+<ul>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsINavHistoryQueryOptions"><code>nsINavHistoryQueryOptions</code></a> で、新たな定数 <code>SORT_BY_FRECENCY_ASCENDING</code> と <code>SORT_BY_FRECENCY_DESCENDING</code> を使った訪問頻度順のソートが可能になりました。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFilePicker"><code>nsIFilePicker</code></a> に <a href="/ja/docs/XPCOM_Interface_Reference/nsIFilePicker#addToRecentDocs"><code>addToRecentDocs</code></a> 属性が追加されました。これは、もしユーザの「最近使用したドキュメント」リストがあれば、そのリストに選択したファイルを追加するよう指定できるものです。この属性はプライベートブラウジングモードでは無視されます。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsINavBookmarkObserver"><code>nsINavBookmarkObserver</code></a> メソッドにアイテム ID 引数を与える場合、GUID も必要となります。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsIPrefBranch#clearUserPref%28%29"><code>nsIPrefBranch.clearUserPref()</code></a> が、指定された設定が存在しない場合やユーザ設定値がない場合も、例外を投げなくなりました。その代わり、単に何もしなくなりました。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsIMemoryReporter"><code>nsIMemoryReporter</code></a> インタフェースで、調べたいメモリの種類 (マップ、ヒープ、その他) を指定できるようになりました。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsISHEntry"><code>nsISHEntry</code></a> の <code>stateData</code> 属性が <a href="/ja/docs/XPCOM_Interface_Reference/nsIStructuredCloneContainer"><code>nsIStructuredCloneContainer</code></a> を返すようになりました。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsIURI"><code>nsIURI</code></a> に <a href="/ja/docs/XPCOM_Interface_Reference/nsIURI#ref"><code>ref</code></a> 属性が追加されました。これは、URI の一部の参照 (「#」以降の部分) を返すものです。また、参照メンバーなしに <a href="/ja/docs/XPCOM_Interface_Reference/nsIURI"><code>nsIURI</code></a> を複製できる <a href="/ja/docs/XPCOM_Interface_Reference/nsIURI#cloneIgnoringRef%28%29"><code>cloneIgnoringRef()</code></a> メソッドと、参照メンバーを無視して他の <a href="/ja/docs/XPCOM_Interface_Reference/nsIURI"><code>nsIURI</code></a> と比較できる <a href="/ja/docs/XPCOM_Interface_Reference/nsIURI#equalsExceptRef%28%29"><code>equalsExceptRef()</code></a> メソッドが追加されました。</li>
+</ul>
+<h4 id="新しいインタフェース">新しいインタフェース</h4>
+<dl>
+ <dt>
+ <a href="/ja/docs/XPCOM_Interface_Reference/mozIAsyncFavicons" title="XPCOM_Interface_Reference/mozIAsyncFavicons"><code>mozIAsyncFavicons</code></a></dt>
+ <dd>
+ ブックマークアイコン (favicon) サービスへの非同期アクセスが可能な新サービスです。</dd>
+ <dt>
+ <a href="/ja/docs/XPCOM_Interface_Reference/nsIEventSource" title="XPCOM_Interface_Reference/nsIEventSource"><code>nsIEventSource</code></a></dt>
+ <dd>
+ <em>詳細は後日解説します。</em></dd>
+ <dt>
+ <a href="/ja/docs/XPCOM_Interface_Reference/nsIGSettingsCollection" title="XPCOM_Interface_Reference/nsIGSettingsCollection"><code>nsIGSettingsCollection</code></a></dt>
+ <dd>
+ <em>詳細は後日解説します。</em></dd>
+ <dt>
+ <a href="/ja/docs/XPCOM_Interface_Reference/nsIGSettingsService" title="XPCOM_Interface_Reference/nsIGSettingsService"><code>nsIGSettingsService</code></a></dt>
+ <dd>
+ <em>詳細は後日解説します。</em></dd>
+ <dt>
+ <a href="/ja/docs/XPCOM_Interface_Reference/nsIHttpUpgradeListener" title="XPCOM_Interface_Reference/nsIHttpUpgradeListener"><code>nsIHttpUpgradeListener</code></a></dt>
+ <dd>
+ <a href="/ja/docs/XPCOM_Interface_Reference/nsIHttpChannelInternal#HTTPUpgrade%28%29" title="XPCOM_Interface_Reference/nsIHttpChannelInternal#HTTPUpgrade%28%29"><code>nsIHttpChannelInternal.HTTPUpgrade()</code></a> メソッドを通じた HTTP アップグレード要求を処理するためのコールバックインタフェースです。</dd>
+ <dt>
+ <a href="/ja/docs/XPCOM_Interface_Reference/nsIStructuredCloneContainer" title="XPCOM_Interface_Reference/nsIStructuredCloneContainer"><code>nsIStructuredCloneContainer</code></a></dt>
+ <dd>
+ <a href="/ja/docs/HTML/Structured_clones" title="HTML/Structured_clones">構造化された複製アルゴリズム</a> を使ってシリアライズされたオブジェクトのためのコンテナです。</dd>
+ <dt>
+ <a href="/ja/docs/XPCOM_Interface_Reference/nsITelemetry" title="XPCOM_Interface_Reference/nsITelemetry"><code>nsITelemetry</code></a></dt>
+ <dd>
+ パフォーマンス測定を目的とした <a class="external" href="http://mozilla.jp/legal/privacy/firefox/#telemetry">使用統計情報 (Telemetry)</a> を記録とヒストグラムの生成に使用されます。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=649502" title="FIXED: Expose histograms to JS">バグ 649502</a> と <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=585196" title="FIXED: telemetry infrastructure">バグ 585196</a> 参照。</dd>
+ <dt>
+ <a href="/ja/docs/XPCOM_Interface_Reference/nsITimedChannel" title="XPCOM_Interface_Reference/nsITimedChannel"><code>nsITimedChannel</code></a></dt>
+ <dd>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=576006" title="FIXED: Implement timing interface for channels">バグ 576006</a> 参照。</dd>
+ <dt>
+ <a href="/ja/docs/XPCOM_Interface_Reference/nsIWebSocketListener" title="XPCOM_Interface_Reference/nsIWebSocketListener"><code>nsIWebSocketListener</code></a></dt>
+ <dd>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=640003" title="FIXED: WebSockets - upgrade to ietf-07">バグ 640003</a> 参照。</dd>
+ <dt>
+ <a href="/ja/docs/XPCOM_Interface_Reference/nsIWebSocketProtocol" title="XPCOM_Interface_Reference/nsIWebSocketProtocol"><code>nsIWebSocketProtocol</code></a></dt>
+ <dd>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=640003" title="FIXED: WebSockets - upgrade to ietf-07">バグ 640003</a> 参照。</dd>
+</dl>
+<h4 id="削除されたインタフェース">削除されたインタフェース</h4>
+<p>以下のインタフェースは、不要となり削除された実装です。詳細はバグを参照してください。</p>
+<ul>
+ <li><code>nsIDOMDocumentEvent</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=655517" title="FIXED: Remove nsIDOMDocumentEvent">バグ 655517</a>)</li>
+ <li><code>nsIDOMDocumentTraversal</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=655514" title="FIXED: Remove nsIDOMDocumentTraversal">バグ 655514</a>)</li>
+ <li><code>nsIDOMDocumentRange</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=655513" title="FIXED: Remove nsIDOMDocumentRange">バグ 655513</a>)</li>
+ <li><code>IWeaveCrypto</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=651596" title="FIXED: Eliminate IWeaveCrypto">バグ 651596</a>)</li>
+ <li><code>nsIDOM3DocumentEvent</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=481863" title="FIXED: Remove nsIDOM3DocumentEvent">バグ 481863</a>)</li>
+ <li><code>nsIDOMAbstractView</code></li>
+ <li><code>nsILiveTitleNotificationSubject</code></li>
+ <li><code>nsIPlugin</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=637253" title="FIXED: decomtamination: remove nsIPlugin and nsIPluginInstance">バグ 637253</a>)</li>
+ <li><code>nsIPluginInstance</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=637253" title="FIXED: decomtamination: remove nsIPlugin and nsIPluginInstance">バグ 637253</a>)</li>
+ <li><code>nsIHTMLEditRules</code> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=633750" title="FIXED: deCOM nsIHTMLEditRules">バグ 633750</a>)</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsIXSLTProcessorObsolete"><code>nsIXSLTProcessorObsolete</code></a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=649534" title="FIXED: Remove nsIXSLTProcessorObsolete">バグ 649534</a>)</li>
+</ul>
+<h3 id="その他の変更">その他の変更</h3>
+<dl>
+ <dt>
+ <a href="/ja/docs/Preferences/Using_preferences_from_application_code">アプリケーションコードからの設定の使用</a></dt>
+ <dd>
+ 設定へ簡単にアクセスできる、新しい静的な API が実装されました。これはアプリケーションコードからのみ使用可能であり、アドオンでは使用できません。</dd>
+</dl>
+<h2 id="See_also" name="See_also">参考</h2>
+<ul>
+ <li><a class="link-https" href="https://dev.mozilla.jp/2011/06/firefox6-backward-compatibility/">Firefox 6 の後方互換性に関わる修正のまとめ</a></li>
+ <li><a class="external" href="http://mozilla.jp/firefox/preview/faq/">高速リリースサイクルに関するよくある質問</a></li>
+</ul>
+<div><div class="multiColumnList">
+<ul>
+<li><a href="/ja/docs/Mozilla/Firefox/Releases/5">Firefox 5 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/4">Firefox 4 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/3.6">Firefox 3.6 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/3.5">Firefox 3.5 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/3">Firefox 3 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/2">Firefox 2 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/1.5">Firefox 1.5 for developers</a></li></ul>
+</div></div>
diff --git a/files/ja/mozilla/firefox/releases/60/index.html b/files/ja/mozilla/firefox/releases/60/index.html
new file mode 100644
index 0000000000..9b80b203de
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/60/index.html
@@ -0,0 +1,198 @@
+---
+title: Firefox 60 for developers
+slug: Mozilla/Firefox/Releases/60
+tags:
+ - '60'
+ - Firefox
+ - Release Notes
+translation_of: Mozilla/Firefox/Releases/60
+---
+<p class="summary">Firefox 60 は、米国時間 2018 年 5 月 9 日にリリースされました。このページでは、開発者に影響する Firefox 60 の変更点をまとめています。</p>
+
+<h2 id="Stylo_comes_to_Firefox_for_Android_in_60" name="Stylo_comes_to_Firefox_for_Android_in_60">Android 版 Firefox 60 に Stylo を導入</h2>
+
+<p><a href="/ja/Firefox/Releases/57#Firefox_57_Firefox_Quantum">デスクトップ版 Firefox 57 で始めにデフォルトで有効化された</a>、<strong>Quantum CSS</strong> または <strong>Stylo</strong> として知られる <a href="https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-engine-quantum-css-aka-stylo/">Firefox の新しい並列処理 CSS エンジン</a> を、Android 版 Firefox で有効化しました。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>CSS ペインのルールビュー (<a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS">CSS の調査と編集</a> をご覧ください) で精密に値を増減する (0.1 ずつ増減) キーボードショートカットを、Linux および Windows で OS のデフォルトのショートカットと衝突しないようにするため、<kbd>Alt</kbd> + <kbd>↑</kbd>/<kbd>↓</kbd> から <kbd>Ctrl</kbd> + <kbd>↑</kbd>/<kbd>↑</kbd> に変更しました ({{bug("1413314")}})。</li>
+ <li>CSS ペインのルールビューで、<a href="/ja/docs/Web/CSS/Using_CSS_variables">CSS 変数名</a> のオートコンプリートが可能になりました ({{bug(1422635)}})。プロパティの値に <code>var(</code> と入力してダッシュ (<code>-</code>) を押下すると、CSS で宣言した変数をオートコンプリートのリストに表示します。</li>
+ <li><a href="/ja/docs/Tools/Responsive_Design_Mode">レスポンシブデザインモード</a> で、タッチのシミュレーションを切り替えたときやシミュレーションするユーザーエージェントを変更したときにページを自動的に再読み込みする機能を有効化/無効化できる、<em>Reload when...</em> ドロップダウンメニューを追加しました。詳しくは <a href="/ja/docs/Tools/Responsive_Design_Mode#Controlling_page_reload_behavior">ページ再読み込みの動作を制御する</a> をご覧ください ({{bug(1428816)}})。</li>
+ <li>設定項目 <code>view_source.tab</code> を削除しましたので、<a href="/ja/docs/Tools/View_source">ソース表示</a> モードを新しいタブか新しいウィンドウで選ぶことができなくなりました。ページのソースは、常に新しいタブで表示されます ({{bug(1418403)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li><code>designMode</code> および <code>contenteditable</code> の状況で、ブロックレベルの編集ホストの子であるインライン要素またはテキストノードの内部にキャレットがあるときに Enter キーを押下すると、<code>&lt;div&gt;</code> 要素を挿入するようになりました。以前は、<code>&lt;br&gt;</code> 要素を挿入していました。アプリで以前の動作を望む場合は、<code>document.execCommand()</code> で実現できます。詳しくは <a href="/ja/docs/Web/Guide/HTML/Editable_content#Differences_in_markup_generation">マークアップ生成の違い</a> をご覧ください ({{bug(1430551)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("align-content")}}、{{cssxref("align-items")}}、{{cssxref("align-self")}}、{{cssxref("justify-content")}}、{{cssxref("place-content")}} プロパティの値を、最新の <a href="https://drafts.csswg.org/css-align-3/">CSS Box Alignment Module Level 3</a> 仕様書に従って更新しました ({{bug(1430817)}})。</li>
+ <li>{{cssxref("paint-order")}} プロパティを実装しました ({{bug(1426146)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>ECMAScript 2015 モジュールを、デフォルトで有効にしました ({{bug(1438139)}})。詳しくは <a href="https://hacks.mozilla.org/2015/08/es6-in-depth-modules/">ES6 In Depth: Modules</a> および <a href="https://hacks.mozilla.org/2018/03/es-modules-a-cartoon-deep-dive/">ES modules: A cartoon deep dive</a> をご覧ください。または、MDN のリファレンス文書を確認してください:
+
+ <ul>
+ <li><a href="/ja/docs/Web/HTML/Element/script#attr-type"><code>&lt;script src="main.js" type="module"&gt;</code></a> および <a href="/ja/docs/Web/HTML/Element/script#attr-nomodule"><code>&lt;script nomodule src="fallback.js"&gt;</code></a></li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Statements/import">import</a></code> 文と <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/export">export</a></code> 文。</li>
+ </ul>
+ </li>
+ <li>{{jsxref("Array.prototype.values()")}} メソッドを再び追加しました ({{bug(1420101)}})。これは以前のバージョンで、<a href="https://www.fxsitecompat.com/en-CA/docs/2016/array-prototype-values-breaks-some-legacy-apps/">互換性の問題</a> のために無効化されました。このメソッドを独自に実装していないことを確認してください。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Web_Authentication_API">Web Authentication API</a> を有効化しました ({{bug(1432542)}})。</li>
+</ul>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Web_Authentication_API">Web Authentication API</a> で、<code>MakePublicKeyCredentialOptions</code> ディクショナリーオブジェクトを {{domxref("PublicKeyCredentialCreationOptions")}} に改名されました。これを Firefox でも実施しました ({{bug(1436473)}})。</li>
+ <li>設定項目 <code>dom.workers.enabled</code> を削除しました。すなわち、Worker を無効化できなくなりました ({{bug(1434934)}})。</li>
+ <li>{{domxref("Document.body","body")}} プロパティを {{domxref("Document")}} インターフェイスに実装しました。以前は {{domxref("HTMLDocument")}} インターフェイスにありました ({{bug(1276438)}})。</li>
+ <li>{{domxref("PerformanceResourceTiming")}} が Worker で使用可能になりました ({{bug(1425458)}})。</li>
+ <li>{{domxref("PerformanceObserver.takeRecords()")}} メソッドを実装しました ({{bug(1436692)}})。</li>
+ <li>アクティブなキーボードレイアウトが ASCII 文字を生成しない場合でも、句読点キーの {{domxref("KeyboardEvent.keyCode")}} 属性は 0 ではない値になります。<a href="/ja/docs/Web/API/KeyboardEvent/keyCode#keyCode_of_punctuation_keys_on_some_keyboard_layout">詳しくはこちらをご覧ください</a>。新しいアプリケーションでは <code>KeyboardEvent.keyCode</code> を<strong>使用しない</strong>ようにしてください。代わりに {{domxref("KeyboardEvent.key")}} または {{domxref("KeyboardEvent.code")}} を使用します。</li>
+ <li>{{domxref("Animation.updatePlaybackRate()")}} メソッドを実装しました ({{bug("1436659")}})。</li>
+ <li><a href="/ja/docs/Web/API/KeyboardEvent/keyCode#keyCode_of_punctuation_keys_on_some_keyboard_layout">句読点キーの keyCode の値</a> を決定するための新しい規則を導入しました ({{bug(1036008)}})。</li>
+ <li>Gecko 限定の option オブジェクトである、{{domxref("IDBFactory.open()")}} メソッドの <code>storage</code> オプション (<a href="/ja/docs/Web/API/IDBFactory/open#Experimental_Gecko_options_object">Experimental Gecko options object</a> もご覧ください) が非推奨になりました ({{bug(1442560)}})。</li>
+ <li><a href="/ja/docs/Web/API/IndexedDB_API">IndexedDB</a> のコード内で Promise が使用可能になりました ({{bug(1193394)}})。</li>
+</ul>
+
+<h4 id="DOM_events" name="DOM_events">DOM イベント</h4>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="Service_workers" name="Service_workers">Service workers</h4>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="Media_and_WebRTC" name="Media_and_WebRTC">メディアと WebRTC</h4>
+
+<ul>
+ <li>{{domxref("MediaDevices.getUserMedia", "getUserMedia()")}} を使用して取得したメディアを録画または共有するとき、対応するトラックの {{domxref("MediaStreamTrack.enabled")}} プロパティを <code>false</code> に設定してカメラをミュートすると、カメラを使用していないことをユーザーにわかりやすくするために、カメラが "使用中" であることを示すランプを消灯するようになりました ({{bug(1299515)}})。詳しくは <a href="/ja/docs/Web/API/MediaDevices/getUserMedia">MediaDevices.getUserMedia()</a> の <a href="/ja/docs/Web/API/MediaDevices/getUserMedia#User_privacy">User privacy</a> をご覧ください。また、<a href="https://blog.mozilla.org/webrtc/better-privacy-on-camera-mute-in-firefox-60/">こちらのブログ記事</a> もご覧ください。</li>
+ <li>{{domxref("RTCPeerConnection.removeTrack", "removeTrack()")}} を使用して {{domxref("RTCPeerConnection")}} からトラックを削除するときに、{{domxref("RTCPeerConnection.getSenders", "getSenders()")}} が報告する送信者のピアコネクションのリストからトラックの {{domxref("RTCRtpSender")}} を削除しないようになりました ({{bug(1290949)}})。</li>
+ <li>{{domxref("RTCRtpContributingSource")}} および {{domxref("RTCRtpSynchronizationSource")}} オブジェクトのタイムスタンプは、以前は {{jsxref("Date.getTime()")}} が返す値に基づいて報告されていました。Firefox 60 で、正しく <a href="/ja/docs/Web/API/Performance_API">Performance Timing API</a> を使用するように修正しました ({{bug(1433576)}})。</li>
+ <li>仕様書に合わせて {{domxref("ConvolverNode.ConvolverNode","ConvolverNode()")}} コンストラクターで、参照される {{domxref("AudioBuffer")}} のチャンネル数が 1、2、あるいは 4 でない場合に <code>NotSupportedError</code> が発生するようになりました ({{bug(1443228)}})。</li>
+ <li>{{domxref("RTCPeerConnection")}} で廃止されたイベントハンドラーである {{domxref("RTCPeerConnection.onremovestream")}} を削除しました。代わりに {{event("removetrack")}} イベントを使用するべきです ({{bug(1442385)}})。</li>
+ <li>{{domxref("RTCDataChannel")}} は <code>DataChannel</code> の別名ではなく、<code>RTCDataChannel</code> そのものが本名になりました。<code>DataChannel</code> という名前はサポートしません ({{bug(1173851)}})。</li>
+</ul>
+
+<h4 id="Canvas_and_WebGL" name="Canvas_and_WebGL">Canvas と WebGL</h4>
+
+<ul>
+ <li>設定項目 <code>privacy.resistFingerprinting</code> が <code>true</code> である場合に、{{domxref("WEBGL_debug_renderer_info")}} WebGL 拡張が無効になります ({{bug(1337157)}})。</li>
+</ul>
+
+<h3 id="CSSOM" name="CSSOM">CSSOM</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<ul>
+ <li>{{httpheader("X-Content-Type-Options")}} ヘッダーで <code>no-sniff</code> を設定したときに、JavaScript の MIME タイプの仕様に従うようになりました。特に、<code>text/json</code> および <code>application/json</code> は有効な値ではなくなりました ({{bug(1431095)}})。</li>
+</ul>
+
+<h3 id="Plugins" name="Plugins">プラグイン</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<ul>
+ <li>クレデンシャルを含むフェッチとクレデンシャルを含まないフェッチが、接続を共有できるようになりました。例えば同じオリジンからウェブフォントとクレデンシャルが設定されたユーザーデータを同じ CDN へ要求するときに、どちらも同じ接続を共有することにより、応答が早くなる可能性があります ({{bug(1363284)}})。</li>
+</ul>
+
+<h2 id="Removals_from_the_web_platform" name="Removals_from_the_web_platform">ウェブプラットフォームから廃止</h2>
+
+<h3 id="HTML_2" name="HTML_2">HTML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="CSS_2" name="CSS_2">CSS</h3>
+
+<ul>
+ <li>独自仕様である {{cssxref("-moz-user-input")}} プロパティの <code>enabled</code> および <code>disabled</code> 値が使用できなくなりました ({{bug("1405087")}})。</li>
+ <li>独自仕様である {{cssxref("-moz-border-top-colors")}}、{{cssxref("-moz-border-right-colors")}}、{{cssxref("-moz-border-bottom-colors")}}、{{cssxref("-moz-border-left-colors")}} プロパティを、プラットフォームから完全に削除しました ({{bug(1429723)}})。</li>
+</ul>
+
+<h3 id="JavaScript_2" name="JavaScript_2">JavaScript</h3>
+
+<ul>
+ <li>非標準の <a href="/ja/docs/Web/JavaScript/Reference/Operators/Expression_closures">式クロージャ</a> 構文を削除しました ({{bug(1426519)}})。</li>
+</ul>
+
+<h3 id="APIs_2" name="APIs_2">API</h3>
+
+<ul>
+ <li>{{event("userproximity")}} および {{event("deviceproximity")}} イベント ({{domxref("UserProximityEvent")}} および {{domxref("DeviceProximityEvent")}} もご覧ください) を設定項目 <code>device.sensors.proximity.enabled</code> で、デフォルトで無効化しました ({{bug(1359076)}})。</li>
+ <li>{{event("devicelight")}} イベント ({{domxref("DeviceLightEvent")}} もご覧ください) を設定項目 <code>device.sensors.ambientLight.enabled</code> で、デフォルトで無効化しました ({{bug(1359076)}})。</li>
+</ul>
+
+<h3 id="SVG_2" name="SVG_2">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Other_2" name="Other_2">その他</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="WebExtensions" name="WebExtensions">WebExtensions</h3>
+
+<p>テーマ API:</p>
+
+<ul>
+ <li>headerURL が省略可能になりました。</li>
+ <li>ブラウザー <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">テーマ</a> を作成するとき、<code>headerURL</code> が指定されていない場合は、ヘッダーテキストに適用されている {{cssxref("text-shadow")}} を削除します ({{bug(1404688)}})。</li>
+ <li>新たにサポートしたプロパティ:
+ <ul>
+ <li><strong>tab_line</strong></li>
+ <li><strong>tab_selected</strong></li>
+ <li><strong>popup</strong></li>
+ <li><strong>popup_border</strong></li>
+ <li><strong>popup_text</strong></li>
+ <li><strong>tab_loading</strong></li>
+ <li><strong>icons</strong></li>
+ <li><strong>icons_attention</strong></li>
+ <li><strong>frame_inactive</strong></li>
+ <li><strong>button_background_active</strong></li>
+ <li><strong>button_background_hover</strong></li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.org/firefox/60.0/releasenotes/">Firefox — Notes (60.0)</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/60/">Firefox 60 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(59)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/61/index.html b/files/ja/mozilla/firefox/releases/61/index.html
new file mode 100644
index 0000000000..cdde464e47
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/61/index.html
@@ -0,0 +1,228 @@
+---
+title: Firefox 61 for developers
+slug: Mozilla/Firefox/Releases/61
+tags:
+ - '61'
+ - Firefox
+ - Release
+translation_of: Mozilla/Firefox/Releases/61
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p class="summary">Firefox 61 は、米国時間 2018 年 6 月 26 日 にリリースされました。このページでは、開発者に影響する Firefox 61 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Accessibility_inspector">アクセシビリティインスペクター</a> を実装しました。</li>
+ <li><a href="/ja/docs/Tools/Browser_Console">ブラウザーコンソール</a> と <a href="/ja/docs/Tools/Browser_Toolbox">ブラウザーツールボックス</a> で、新しい意匠のコンソール UI をデフォルトで有効化しました ({{bug(1362023)}}/{{bug(1347127)}})。古い UI は削除しました。</li>
+ <li><a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a> で <code>POST</code> 要求のコンテキストメニューの [<em>新しいタブで開く</em>] をクリックすると、想定どおりの <code>POST</code> パラメーターを付加した要求を正しく再送信するようになりました ({{bug(1407515)}})。</li>
+ <li>それぞれの変数にどの色の値が保存されているかを明確にするため、色見本をつけて <a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#CSS_variable_autocompletion">CSS 変数のオートコンプリート</a> を行うようになりました ({{bug(1451211)}})。
+ <ul>
+ <li>さらに、CSS 変数名にマウスポインターを載せると、変数に保存されている色の値をツールチップで表示します ({{bug(1431949)}})。</li>
+ </ul>
+ </li>
+ <li>ツールボックスのメインツールバーを再設計しました。主要な変更点は、新しいオーバーフロードロップダウンメニューによりビューポートの広さにかかわらず応答性が向上、ミートボールメニューをクリーンアップ、もっとも使用するパネルを前方に移動できるタブの並べ替え機能です ({{bug(1226272)}})。</li>
+ <li><a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a> のツールバーに、'HAR 形式ですべてコピー'、'HAR 形式ですべて保存'、'Import...' コマンドへ簡単にアクセスできるドロップダウンメニューを追加しました ({{bug(1403530)}})。</li>
+ <li>ネットワークモニターの詳細ペインに <a href="/ja/docs/Tools/Network_Monitor#Cache">Cache タブ</a> を追加しました。以前キャッシュしたリソースに関する詳細情報を表示します ({{bug(859051)}})。</li>
+ <li>ネットワークモニターのメインツールバーを、小さなビューポートでも使いやすく、またコンソールのツールバーに合うように再設計しました。</li>
+ <li>ネットワークモニターのメインツールバーに、以前は <a href="/ja/docs/Tools/Responsive_Design_Mode#Network_throttling">レスポンシブデザインモード</a> のみで使用可能であった <a href="/ja/docs/Tools/Network_Monitor#Throttling">Throttling</a> ドロップダウンメニューを追加しました。さまざまなネットワーク速度の状況をエミュレーションするために、ネットワーク速度を制限できます ({{bug(1349559)}})。</li>
+ <li>パフォーマンス上の理由で、ブラウザーコンソールはデフォルトで CSS エラーを非表示にしました ({{bug(1452143)}})。</li>
+ <li>ブラウザーコンソールに、ブラウザーを再起動するコマンドが含まれています。<kbd>Ctrl</kbd> + <kbd>Alt</kbd> + <kbd>R</kbd> (Windows、Linux) または <kbd>Cmd</kbd> + <kbd>Alt</kbd> + <kbd>R</kbd> (Mac) を押下するとブラウザーを再起動して、再起動前と同じタブを開きます。</li>
+ <li>開発ツールの web extension API である <code><a href="/ja/Add-ons/WebExtensions/API/devtools.network/onRequestFinished">devtools.network.onRequestFinished</a></code> ({{bug(1311171)}}) および <code><a href="/ja/Add-ons/WebExtensions/API/devtools.network/getHAR">devtools.network.getHAR</a></code> ({{bug(1311177)}}) を実装しました (<a href="https://addons.mozilla.org/firefox/addon/har-export-trigger/">har-export-trigger</a> のような拡張機能を実現できます)</li>
+ <li>Firebug のユーザーが開発ツールへの移行を完了しましたので、Firebug テーマを削除しました ({{bug(1378108)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>CSS のパース処理を並列化しました ({{bug(1346988)}})。</li>
+ <li>{{cssxref("font-variation-settings")}} および {{cssxref("font-optical-sizing")}} のサポートを、デフォルトで有効にしました ({{bug(1447163)}})。</li>
+ <li><code>grid-gap</code>、<code>grid-row-gap</code>、<code>grid-column-gap</code> プロパティを {{cssxref("gap")}}、{{cssxref("row-gap")}}、{{cssxref("column-gap")}} に改名しました。これらはグリッド固有のプロパティではなくなりました ({{bug(1398482)}})。詳しくは <a href="/ja/docs/Web/CSS/CSS_Box_Alignment#Gaps_between_boxes">Box alignment; Gaps between boxes</a> をご覧ください。ウェブ互換性のために、古い名称を別名として維持しています。</li>
+ <li>{{cssxref("flex-basis")}} の値 <code>content</code> をサポートしました ({{bug(1105111)}})。</li>
+ <li>{{cssxref("column-gap")}} のパーセンテージ値を、<a href="/ja/docs/Web/CSS/CSS_Columns">CSS 段組みレイアウト</a> でサポートしました ({{bug(1398537)}})。</li>
+ <li>CSS の {{cssxref(":host")}} 疑似クラスをサポートしました。これは、shadow DOM 内のカスタム要素を選択します ({{bug(992245)}})。</li>
+ <li>{{cssxref("overflow")}} が 2 値構文を受け入れるようになりました ({{bug(1453148)}})。</li>
+ <li>内容物によってサイズが決まる Flex アイテムは、<code>fit-content</code> ではなく <code>max-content</code> を使用してサイズが決まるようになりました ({{bug(1282821)}})。これらの値について、詳しくは <a href="/ja/docs/Web/CSS/width#Values"><code>width</code> の値の定義</a> をご覧ください。</li>
+ <li>{{cssxref("font-weight")}}、{{cssxref("font-stretch")}}、{{cssxref("font-style")}} で、<a href="https://drafts.csswg.org/css-fonts-4/">CSS Fonts level 4</a> で定義された追加の値をサポートしました ({{bug(1436048)}}):
+ <ul>
+ <li>{{cssxref("font-weight")}} は、1 から 1000 の間 (両端の値を含む) の浮動小数点数を受け入れます。</li>
+ <li>{{cssxref("font-stretch")}} は、パーセンテージ値を受け入れます。</li>
+ <li>{{cssxref("font-style")}} は、<code>oblique</code> キーワードの後の角度の値を受け入れます。</li>
+ </ul>
+ </li>
+ <li>前の項目で言及した 3 つのプロパティに対応する、{{cssxref("@font-face")}} の記述子でも前出の新しい構文をサポートしました。また、font-face がサポートする記述子の値の範囲を指定する 2 値構文もサポートしました ({{bug(1436061)}}、{{bug(1436048)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<ul>
+ <li>HTML の {{HTMLElement("a")}} 要素に一致させるため、SVG の {{SVGElement("a")}} 要素 ({{domxref("SVGAElement")}}) 要素に <code>ping</code>、<code>rel</code>、<code>referrerPolicy</code>、<code>relList</code>、<code>hreflang</code>、<code>type</code>、<code>text</code> プロパティを追加しました ({{bug("1451823")}})。</li>
+ <li>{{SVGElement("textPath")}} 要素 ({{domxref("SVGTextPathElement")}}) で SVG2 の <code>path</code> および <code>side</code> 属性をサポートしました ({{bug("1446617")}} および {{bug("1446650")}})。</li>
+ <li>{{domxref("SVGGeometryElement")}} インターフェイスで、{{SVGElement("path")}} 要素だけでなく、より多くの要素をサポートしました ({{bug("1325320")}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("String.prototype.trimStart()")}} および {{jsxref("String.prototype.trimEnd()")}} メソッドを実装しました ({{bug(1434007)}})。<code>trimLeft</code> および <code>trimRight</code> は、ウェブ互換性のために別名として残しています。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li>{{domxref("PerformanceServerTiming")}} API を実装しました。これは {{HTTPHeader("Server-Timing")}} ヘッダーによって送信する、サーバーサイドのメトリックを明らかにします ({{bug(1423495)}})。</li>
+</ul>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>{{domxref("Document.anchors", "anchors")}}、{{domxref("Document.applets", "applets")}}、{{domxref("Document.embeds", "embeds")}}、{{domxref("Document.forms", "forms")}}、{{domxref("Document.head", "head")}}、{{domxref("Document.images", "images")}}、{{domxref("Document.links", "links")}}, {{domxref("Document.plugins", "plugins")}}、{{domxref("Document.scripts", "scripts")}} プロパティを、{{domxref("HTMLDocument")}} インターフェイスから {{domxref("Document")}} インターフェイスに移しました ({{bug(1415588)}})。</li>
+ <li>{{domxref("DOMTokenList.replace()")}} の戻り値が void から、置換が成功したかを示すブーリアン値に変わりました ({{bug(1444909)}})。</li>
+ <li><a href="/ja/docs/Web/API/Fetch_API">Fetch API</a> の {{domxref("Request.credentials")}} プロパティの既定値が、最新版の仕様書に応じて <code>"same-origin"</code> になりました ({{bug(1394399)}})。</li>
+ <li>{{domxref("Request.destination")}} プロパティを実装しました ({{bug(1402892)}})。</li>
+ <li>{{domxref("MutationObserver")}} のオプションディクショナリーである {{domxref("MutationObserverInit")}} で、すべての Boolean 型プロパティが既定値として <code>false</code> を持たなくなりました。<code>childList</code> および <code>subtree</code> だけが既定値 (依然として <code>false</code>) を持ちます。ほかのプロパティは既定値がありません ({{bug(973638)}})。</li>
+ <li><a href="/ja/docs/Web/API/Payment_Request_API">Payment Request API</a> の {{domxref("PaymentRequest.show()")}} メソッドで、クライアントサイドのコードが支払いインターフェイスを活性化する前に更新された支払いの詳細情報を提供できるようにするため、{{jsxref("Promise")}} の使用をサポートしました ({{bug(1441709)}})。</li>
+</ul>
+
+<h4 id="DOM_events" name="DOM_events">DOM イベント</h4>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="Service_workers" name="Service_workers">Service workers</h4>
+
+<ul>
+ <li>Firefox のカスタマイズで追加できる "忘れる" ボタンで、service workers とそのキャッシュを消去するようになりました ({{bug(1252998)}})。</li>
+</ul>
+
+<h4 id="Web_Audio_Media_and_WebRTC" name="Web_Audio_Media_and_WebRTC">Web Audio、メディアと WebRTC</h4>
+
+<ul>
+ <li>{{domxref("AudioContext.AudioContext", "AudioContext()")}} コンストラクターが、{{domxref("AudioContextOptions")}} 型の引数 <code>options</code> (省略可能) を受け入れるようになりました。これは、新しいコンテキストで望ましいレイテンシーやサンプルレートを設定できます。</li>
+ <li>{{domxref("AudioBuffer")}} のインスタンス化が失敗したときに、正しい例外が発生するようになりました。</li>
+</ul>
+
+<h4 id="WebVR" name="WebVR">WebVR</h4>
+
+<ul>
+ <li>macOS で、<a href="/ja/docs/Web/API/WebVR_API">WebVR API</a> がデフォルトで有効になりました ({{bug(1244242)}})。</li>
+</ul>
+
+<h4 id="Canvas_and_WebGL" name="Canvas_and_WebGL">Canvas と WebGL</h4>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="CSSOM" name="CSSOM">CSSOM</h3>
+
+<ul>
+ <li>{{domxref("CSSStyleRule.selectorText")}} プロパティを完全に実装して、読み取り専用ではなくなりました ({{bug(37468)}})。</li>
+ <li>{{domxref("MediaList")}} インターフェイスの実装を、仕様書に若干近づけました。まだ完全ではありません。例えば、stringifier 属性は未実装です ({{bug(1455807)}})。</li>
+</ul>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<ul>
+ <li>Cookie の <code><strong>SameSite</strong></code> ディレクティブを実装しました。<a href="/ja/docs/Web/HTTP/Headers/Set-Cookie">Set-Cookie</a> および <a href="/ja/docs/Web/HTTP/Cookies">HTTP cookies</a> をご覧ください ({{bug(795346)}})。</li>
+</ul>
+
+<h3 id="Networking" name="Networking">ネットワーク</h3>
+
+<ul>
+ <li>Firefox 61 以降では、HTML コンテンツからサブリソースを読み込む際に FTP プロトコル (すなわち、<code>"ftp://"</code> スキームの URL) の使用をサポートしません。URL バーに直接入力したトップレベル URL や、単独のドキュメントとして読み込む際の FTP は引き続きサポートします ({{bug(1404744)}})。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Plugins" name="Plugins">プラグイン</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Removals_from_the_web_platform" name="Removals_from_the_web_platform">ウェブプラットフォームから廃止</h2>
+
+<h3 id="Developer_tools_2" name="Developer_tools_2">Developer tools</h3>
+
+<p><kbd>Cmd</kbd>/<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>O</kbd> で開発ツールのオプションを開く/閉じることができなくなりました。代わりに <kbd>F1</kbd> を使用します ({{bug(1409456)}})。</p>
+
+<h3 id="HTML_2" name="HTML_2">HTML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="CSS_2" name="CSS_2">CSS</h3>
+
+<ul>
+ <li><code>@-moz-document</code> を、content ページで無効化しました ({{bug(1422245)}})。</li>
+</ul>
+
+<h3 id="APIs_2" name="APIs_2">API</h3>
+
+<ul>
+ <li>{{domxref("File")}} インターフェイスの {{domxref("File.lastModifiedDate", "lastModifiedDate")}} プロパティを削除しました ({{bug(1458883)}})。</li>
+ <li>{{domxref("Node.getUserData()")}} および {{domxref("Node.setUserData()")}} メソッドを、プラットフォームから完全に削除しました ({{bug(749981)}})。</li>
+ <li>{{domxref("Element.createShadowRoot()")}} メソッドを削除しました。代わりに {{domxref("Element.attachShadow()")}} を使用してください ({{bug(1453789)}})。</li>
+ <li>{{domxref("URL.createObjectURL()")}} メソッドの {{domxref("MediaStream")}} オーバーロードを削除しました ({{bug(1454889)}})。</li>
+</ul>
+
+<h3 id="SVG_2" name="SVG_2">SVG</h3>
+
+<ul>
+ <li>非推奨の (そして適切に実装されたことがない) {{domxref("SVGViewElement")}}<code>.viewTarget</code> プロパティを削除しました ({{bug(1455763)}})。</li>
+ <li>以下の非推奨プロパティを {{domxref("SVGSVGElement")}} から削除しました ({{bug(1133172)}}):
+ <ul>
+ <li><code>pixelUnitToMillimeterX</code></li>
+ <li><code>pixelUnitToMillimeterY</code></li>
+ <li><code>screenPixelToMillimeterX</code></li>
+ <li><code>screenPixelToMillimeterY</code></li>
+ </ul>
+ </li>
+ <li>非標準の <code>SVGNumber()</code> コンストラクターを削除しました ({{bug("1455940")}})。</li>
+</ul>
+
+<h3 id="Other_2" name="Other_2">その他</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers" name="Changes_for_add-on_and_Mozilla_developers">アドオン開発者と Mozilla 開発者向けの変更点</h2>
+
+<h3 id="WebExtensions" name="WebExtensions">WebExtensions</h3>
+
+<ul>
+ <li>オートコンプリートのポップアップで、テーマが適用可能になりました ({{bug(1417883)}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/onUpdated">tabs.onUpdated</a></code> がフィルターのテンプレートを持つようになりました ({{bug(1329507)}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/overrideDocumentColors">browserSettings.overrideDocumentColors</a></code> を使用して、既定のドキュメントの色をオーバーライドできるようになりました ({{bug(1417810)}})。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query">tabs.query</a> が、いくつかの有用な検索/フィルターのオプション引数によって最適化されました ({{bug(1445316)}})。</li>
+ <li><code>about:addons</code> 設定ページから <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/permissions/request">permissions.request</a></code> を使用可能になりました ({{bug(1382953)}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/useDocumentFonts">browserSettings.useDocumentFonts</a></code> プロパティを使用して、ウェブページで指定されたフォントではなくシステムフォントを強制的に使用させることが可能になりました ({{bug("1400805")}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/openUrlbarResultsInNewTabs">browserSettings.openUrlbarResultsInNewTabs</a></code> プロパティを使用して、ブラウザーの検索オートコンプリートで、現在のタブではなく新しいタブを自動的に開くことが可能になりました ({{bug("1432645")}})。</li>
+ <li>マニフェストの <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">theme</a> のプロパティである <code>toolbar</code>、<code>toolbar_text</code>、<code>toolbar_field</code>、<code>toolbar_field_text</code>、<code>toolbar_field_border</code> が、検索バーにも適用されるようになりました ({{bug(1418605)}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction/getPanel">sidebarAction.getPanel()</a></code>、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction/getTitle">sidebarAction.getTitle()</a></code>、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction/setPanel">sidebarAction.setPanel()</a></code>、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction/setTitle">sidebarAction.setTitle()</a></code>、<code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction/setIcon">sidebarAction.setIcon()</a></code> で、機能を特定のウィンドウに限り設定および取得できるようにするための <code>windowId</code> が指定可能になりました ({{bug(1390464)}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/hide">tabs.hide()</a></code> および <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/show">tabs.show()</a></code> をデフォルトで有効化しました ({{bug(1455040)}})。
+ <ul>
+ <li>拡張機能が最初にタブを隠すときに、ブラウザーはタブが隠されたこと、隠されたタブにアクセスする方法、および拡張機能を無効化する設定をユーザーに対して表示します ({{bug(1438363)}})。</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.org/en-US/firefox/61.0/releasenotes/">Firefox — Notes (61.0)</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/61/">Firefox 61 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(60)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/62/index.html b/files/ja/mozilla/firefox/releases/62/index.html
new file mode 100644
index 0000000000..4dbb9ce7c6
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/62/index.html
@@ -0,0 +1,222 @@
+---
+title: Firefox 62 for developers
+slug: Mozilla/Firefox/Releases/62
+tags:
+ - '62'
+ - Firefox
+ - Release
+translation_of: Mozilla/Firefox/Releases/62
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p class="summary">Firefox 62 は、米国時間 2018 年 9 月 5 日 にリリースされました。このページでは、開発者に影響する Firefox 62 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>シェイプパスエディターがデフォルトで有効になりました。詳しくは <a href="/ja/docs/Tools/Page_Inspector/How_to/Edit_CSS_shapes">CSS shapes を編集する</a> をご覧ください。</li>
+ <li>ルールビューを CSS ペインのほかのタブから切り離して、個別のペインに分けることが可能になりました。詳しくは <a href="/ja/docs/Tools/Page_Inspector/3-pane_mode">ページインスペクターの 3 ペインモード</a> をご覧ください。</li>
+ <li>グリッドインスペクターの機能を更新して、ドキュメントも新たに作成しました。<a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_grid_layouts">CSS Grid Inspector: Examine grid layouts</a> をご覧ください。</li>
+ <li>開発ツールの位置を 4 か所から選択できるようになりました。既定の位置であるウィンドウの下部に加えて、ウィンドウの左側および右側や、個別のウィンドウに配置できます ({{bug(1192642)}})。</li>
+ <li><a href="/ja/docs/Tools/Web_Console/Split_console">コンソールペイン</a> のツールバーに、閉じるボタンを追加しました。</li>
+ <li>設定の "現在の対象ドキュメントとして読み込む iframe を選択します" にチェックが入っているとき、設定タブを開いている間は現在のページに iframe が含まれていない場合でもツールバーにアイコンを表示します ({{bug(1456069)}})。</li>
+ <li><a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a> の <a href="/ja/docs/Tools/Network_Monitor#Cookies">Cookie タブ</a> で、Cookie の <code>samesite</code> 属性を表示するようになりました ({{bug(1452715)}})。</li>
+ <li><a href="/ja/docs/Tools/Responsive_Design_Mode">レスポンシブデザインモード</a> が、コンテナータブ内で動作するようになりました ({{bug(1306975)}})。</li>
+ <li>{{Glossary("CORS")}} のエラーが発生してコンソールに報告されているとき、Firefox がエラーに対応する <a href="/ja/docs/Web/HTTP/CORS/Errors">CORS エラーのドキュメント</a> へのリンクを提供するようになりました ({{bug(1475391)}})。</li>
+ <li>以下のコマンドを使用して、コンソールタブで現在のページのスクリーンショットを作成できるようになりました (ファイル名も指定可能です) ({{bug(1464461)}}):<br>
+ <br>
+ <code>:screenshot &lt;filename.png&gt; --fullpage</code><br>
+ <br>
+ <code>&lt;filename.png&gt;</code> は、希望するファイル名です。このファイルは、ダウンロードフォルダーに保存されます。<code>--fullpage</code> は省略可能なパラメーターであり、指定するとウェブページ全体を保存します。また、ファイル名に <code>-fullpage</code> を付加します。このコマンドで使用可能なすべてのオプションは、 <code>:screenshot --help</code> で表示できます。</li>
+</ul>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<ul>
+ <li><a href="/ja/docs/Tools/GCLI">開発ツールバー/GCLI</a> (<kbd>Shift</kbd> + <kbd>F2</kbd> で使用可能) を Firefox から<strong>削除しました</strong> ({{bug(1461970)}})。開発ツールバーの UI と GCLI の上流ライブラリーの両方がメンテナンスされなくなり、一部の機能が (いくつかは e10s のため) が動作していません。また、<code>unsafeSetInnerHTML</code> の動作を妨げています。使用する機会もとても少なく、ほとんどのコマンドに代替策があります。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li><code>:-moz-selection</code> の接頭辞を削除して {{cssxref("::selection")}} になりました ({{bug(509958)}}).</li>
+ <li>{{cssxref("&lt;resolution&gt;")}} 型で、<code>x</code> を単位としてサポートしました ({{bug(1460655)}})。</li>
+ <li>{{cssxref("shape-margin")}}、{{cssxref("shape-outside")}}、{{cssxref("shape-image-threshold")}} をデフォルトで有効化しました ({{bug(1457297)}})。</li>
+</ul>
+
+<h4 id="Removals_2" name="Removals_2">廃止</h4>
+
+<ul>
+ <li><code>-moz-box</code> および <code>-moz-inline-box</code> を除く、<a href="/ja/docs/Web/CSS/display#XUL_values">XUL の <code>display</code> の値</a> を、XUL 以外のドキュメントでは廃止しました ({{bug(1288572)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("WebAssembly.Global()")}} コンストラクターを、WebAssembly のグローバル変数とともにサポートしました ({{bug(1464656)}})。</li>
+ <li>{{jsxref("Array.prototype.flat()")}} および {{jsxref("Array.prototype.flatMap()")}} メソッドをデフォルトで有効化しました ({{bug(1435813)}})。</li>
+ <li>コンテキスト固有のメタデータを JavaScript モジュールに公開するための、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/import.meta">import.meta</a></code> プロパティを実装しました ({{bug(1427610)}})。</li>
+ <li>JavaScript の <a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar#String_literals">文字列リテラル</a> で、U+2028 LINE SEPARATOR や U+2029 PARAGRAPH SEPARATOR の文字を直接含めることが可能になりました。この結果、{{jsxref("JSON")}} 構文が JavaScript リテラル構文のサブセットになりました ({{bug(1435828)}} および TC39 提案 <a href="https://github.com/tc39/proposal-json-superset">json-superset</a>)。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Typed_arrays">型付き配列</a> の境界を超える添字に対して、{{jsxref("Reflect.defineProperty()")}} および {{jsxref("Reflect.set()")}} が <code>true</code> ではなく <code>false</code> を返すようになりました ({{bug(1308735)}})。</li>
+</ul>
+
+<h4 id="Removals_3" name="Removals_3">廃止</h4>
+
+<ul>
+ <li><code>DOMPoint</code> および <code>DOMPointReadOnly</code> コンストラクターで <code>DOMPointInit</code> 型の入力引数をサポートしなくなりました。値は <code>x</code>、<code>y</code>、<code>z</code>、<code>w</code> の引数で指定しなければなりません ({{bug(1186265)}})。</li>
+ <li>{{domxref("URL.createObjectURL()")}} メソッドで、{{domxref("MediaStream")}} を表す URL のオブジェクトを作成できなくなりました。単純に {{domxref("HTMLMediaElement.srcObject")}} を <code>MediaStream</code> に直接設定できるようになったため、この機能はかなりの間すたれていました ({{bug(1454889)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li>{{domxref("Web_Speech_API", "Speech Synthesis API (Text-to-Speech)", "", "1")}} を、Android 版 Firefox でデフォルトで有効化しました ({{bug(1463496)}})。</li>
+</ul>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>{{domxref("DOMPointReadOnly")}} インターフェイスで {{domxref("DOMPointReadOnly.fromPoint()")}} 静的関数をサポートしました。これは {{domxref("DOMPointInit")}} と互換性があるディクショナリーから新しい座標オブジェクトを作成するものであり、{{domxref("DOMPoint")}} オブジェクトを含みます。この関数は {{domxref("DOMPoint")}} でも使用できます ({{bug(1186265)}})。</li>
+ <li>互換性の理由で、{{domxref("Event.srcElement")}} プロパティをサポートしました。これは {{domxref("Event.target")}} の別名です ({{bug(453968)}})。</li>
+ <li>{{domxref("Navigator.registerProtocolHandler()")}} が、安全なコンテキストに限り呼び出し可能になりました ({{bug(1460506)}})。</li>
+ <li>しばらく前から廃止扱いであった {{domxref("Navigator.registerContentHandler()")}} メソッドが、完全に削除するための準備としてデフォルトで無効になりました ({{bug(1460481)}})。</li>
+ <li>{{domxref("DataTransfer.DataTransfer", "DataTransfer()")}} コンストラクターを実装しました ({{bug(1351193)}})。</li>
+ <li>{{domxref("Document.domain")}} が <code>null</code> を返さないようになりました ({{bug(819475)}})。ドメインを識別できないとき、<code>domain</code> は <code>null</code> ではなく空文字列を返します。</li>
+ <li>時間を追跡し続けている間に、コンソールのタイマーの現在の値を表示するための {{domxref("Console.timeLog()")}} メソッドを追加しました ({{bug(1458466)}})。</li>
+ <li>コンソールのカウンターの値をリセットする {{domxref("Console.countReset()")}} を追加しました ({{bug(1459279)}})。</li>
+</ul>
+
+<h4 id="DOM_events" name="DOM_events">DOM イベント</h4>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="Service_workers" name="Service_workers">Service workers</h4>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="Media_Web_Audio_and_WebRTC" name="Media_Web_Audio_and_WebRTC">メディア、Web Audio、WebRTC</h4>
+
+<ul>
+ <li>設定項目 <code>"media.autoplay.enabled"</code> で、動画メディアだけでなく音声メディアの自動再生も制御するようになりました ({{bug(1413098)}})。</li>
+ <li>{{domxref("ChannelSplitterNode")}} で、仕様書に従ってデフォルトで 6 つのチャンネルを持ち、<code>channelInterpretation</code> に <code>"discrete"</code> を設定、さらに <code>channelCountMode</code> に <code>"explicit"</code> を正しく設定するように修正しました ({{bug(1456265)}})。</li>
+</ul>
+
+<h4 id="Removals_4" name="Removals_4">廃止</h4>
+
+<ul>
+ <li>{{event("userproximity")}} および {{event("deviceproximity")}} イベント ({{domxref("UserProximityEvent")}} および {{domxref("DeviceProximityEvent")}} もご覧ください) を設定項目 <code>device.sensors.proximity.enabled</code> で、デフォルトで無効化しました ({{bug(1462308)}})。</li>
+ <li>{{event("devicelight")}} イベント ({{domxref("DeviceLightEvent")}} もご覧ください) を設定項目 <code>device.sensors.ambientLight.enabled</code> で、デフォルトで無効化しました ({{bug(1462308)}})。</li>
+ <li>{{event("DOMSubtreeModified")}} および {{event("DOMAttrModified")}} <a href="/ja/docs/Web/Guide/Events/Mutation_events">ミューテーションイベント</a> は、CSSOM によって {{htmlattrxref("style")}} 属性が変更されたときに発生しないようになりました ({{bug(1460295)}}、こちらの <a href="https://www.fxsitecompat.com/docs/2018/domattrmodified-and-domsubtreemodified-events-are-no-longer-fired-when-style-attribute-is-changed-via-cssom/">サイト互換性情報</a> をご覧ください).</li>
+ <li>{{domxref("CSSStyleDeclaration.getPropertyCSSValue()")}} のサポートを廃止しました ({{bug(1408301)}})。</li>
+ <li>{{domxref("CSSValue")}}、{{domxref("CSSPrimitiveValue")}}、{{domxref("CSSValueList")}} のサポートを廃止しました ({{bug(1459871)}})。</li>
+ <li>{{domxref("window.getComputedStyle()")}} が表示するものがない <code>Window</code> で呼び出されたときに、<code>null</code> を返さないようになりました ({{bug(1467722)}})。</li>
+</ul>
+
+<ul>
+</ul>
+
+<ul>
+</ul>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<h4 id="Removals_5" name="Removals_5">廃止</h4>
+
+<ul>
+ <li>CSP の非推奨ディレクティブである {{CSP("referrer")}} を削除しました。代わりに {{HTTPHeader("Referrer-Policy")}} ヘッダーを使用してください ({{bug(1302449)}})。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Plugins" name="Plugins">プラグイン</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="WebDriver_conformance_(Marionette)" name="WebDriver_conformance_(Marionette)">WebDriver conformance (Marionette)</h3>
+
+<h4 id="New_features" name="New_features">新機能</h4>
+
+<ul>
+ <li><code>WebDriver:ElementSendKeys</code> が、ファイルのアップロードについて WebDriver に適合しました ({{bug(1448792)}})。</li>
+ <li><code>WebDriver:Get</code>、<code>WebDriver:Back</code>、<code>WebDriver:Forward</code>、<code>WebDriver:Refresh</code>、<code>WebDriver:Close</code> コマンドで、<code>beforeunload</code> イベントによって発生するユーザープロンプトが自動的に閉じられるようになりました ({{bug(1434872)}})。</li>
+ <li><kbd>Ctrl</kbd> + <code>Click</code> の <code>WebDriver:PerformActions</code> が、{{event("contextmenu")}} イベントを合成します ({{bug(1421323)}})。</li>
+</ul>
+
+<h4 id="API_changes" name="API_changes">API の変更点</h4>
+
+<ul>
+ <li><code>getWindowPosition</code>、<code>setWindowPosition</code>、<code>getWindowSize</code>、<code>setWindowSize</code> を含む、廃止されたエンドポイントを削除しました ({{bug(1348145)}})。</li>
+ <li><code>null</code> データとともに成功を返す WebDriver コマンドが、空のディレクトリーを返すようになりました ({{bug(1461463)}})。</li>
+</ul>
+
+<h4 id="Bug_fixes" name="Bug_fixes">バグ修正</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/WebDriver/WebElement">WebElement</a> コレクションに対して、<code>WebDriver:ExecuteScript</code> が周期的に参照エラーを起こす問題を修正しました ({{bug(1447977)}})。</li>
+ <li><code>pointerMove</code> または <code>pause</code> のアクションを実行するとハングアップが発生して、コマンドの応答がなくなる問題を修正しました ({{bug(1467743)}}、{{bug(1447449)}})。</li>
+</ul>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<h3 id="API_changes_2" name="API_changes_2">API の変更点</h3>
+
+<ul>
+ <li>TLS 接続を詳しく調査するための {{WebExtAPIRef("webRequest.getSecurityInfo()")}} API を追加しました ({{bug(1322748)}})。</li>
+ <li>新しいタブを開く場所を設定する {{WebExtAPIRef("browserSettings.newTabPosition")}} を追加しました ({{bug(1344749)}})。</li>
+ <li>{{WebExtAPIRef("windows.get()")}}、{{WebExtAPIRef("windows.getCurrent()")}}、{{WebExtAPIRef("windows.getLastFocused()")}} で <code>windowTypes</code> が非推奨になりました ({{bug(1419132)}})。</li>
+ <li>ウィンドウごとにブラウザーのアクションを変更可能になりました ({{bug(1419893)}})。</li>
+</ul>
+
+<h3 id="Manifest_changes" name="Manifest_changes">マニフェストの変更点</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a></code> マニフェストキーで、インストール時に自動的にサイドバーを開くか否かを拡張機能で制御するための <code>open_at_install</code> プロパティを追加しました ({{bug(1460910)}})。</li>
+ <li>さまざまなマニフェストキーで <code>browser_style</code> プロパティを変更しました:
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></code> および <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> で、既定値が <code>false</code> になりました。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a></code> および <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></code> で、既定値が <code>true</code> になりました。</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="Theme_changes" name="Theme_changes">テーマの変更点</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">theme</a></code> マニフェストキーで、タブのセパレーターの色を拡張機能から変更可能にする <code>tab_background_separator</code> プロパティを追加しました ({{bug(1459455)}})。</li>
+</ul>
+
+<h3 id="Removals_6" name="Removals_6">廃止</h3>
+
+<ul>
+ <li>パッケージ化されていないサイドロード拡張機能のサポートを廃止しました ({{bug(1385057)}}).</li>
+ <li>テストのため拡張機能を一時的に読み込んでいるときに、<code>browser_style</code> に関する警告を表示しないようになりました ({{bug(1404724)}})。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/62/">Firefox 62 サイト互換性情報</a></li>
+ <li><a href="https://www.mozilla.org/en-US/firefox/62.0/releasenotes/">Firefox 62.0, See All New Features, Updates and Fixes</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(61)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/63/index.html b/files/ja/mozilla/firefox/releases/63/index.html
new file mode 100644
index 0000000000..b8bb2b2990
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/63/index.html
@@ -0,0 +1,277 @@
+---
+title: Firefox 63 for developers
+slug: Mozilla/Firefox/Releases/63
+tags:
+ - '63'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/63
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p class="summary">Firefox 63 は、米国時間 2018 年 10 月 23 日 にリリースされました。このページでは、開発者に影響する Firefox 63 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Page_Inspector">インスペクター</a> のフォントタブに、ページ上のフォントの設定を簡単に確認および編集できるエディターを追加しました。詳しくは <a href="/ja/docs/Tools/Page_Inspector/How_to/Edit_fonts">フォントを編集する</a> をご覧ください。</li>
+ <li><a href="/ja/docs/Tools/Accessibility_inspector">アクセシビリティインスペクター</a> をデフォルトで有効化しました ({{bug(1482454)}})。</li>
+ <li><a href="/ja/docs/Tools/Accessibility_inspector">アクセシビリティインスペクター</a> でオブジェクトにマウスポインターを載せると、<a href="/ja/docs/Tools/Accessibility_inspector#Highlighting_of_UI_items">アイテムを強調表示</a> して、ページ上の情報バーにアイテムのロールや名前を表示するようになりました ({{bug(1473030)}})。</li>
+ <li><a href="/ja/docs/Tools/Web_Console">ウェブコンソール</a> で、コマンドラインをコンソール出力の直後に表示するようになりました ({{bug(1136299)}})。</li>
+ <li><a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a> で、URL が既知のトラッカーに属することを示すアイコンを追加しました。<a href="/ja/docs/Tools/Network_Monitor/request_list#Security_icons">セキュリティアイコン</a> をご覧ください ({{bug(1333994)}})。</li>
+ <li><code>devtools.aboutdebugging.showSystemAddons</code> の既定値が <code>false</code> になりました。これは、<code>about:debugging</code> ページにシステムアドオンを表示しないことを意味します。<code>about:config</code> で、この設定を変更できます ({{bug(1425347)}})。</li>
+ <li><a href="/ja/docs/Tools/Responsive_Design_Mode">レスポンシブデザインモード</a> のツールバーをわかりやすくして、ビューポートを左寄せにするオプションを追加しました。</li>
+ <li>ページインスペクターに、カスタム要素の <a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Custom_element_definition">クラス定義へのリンク</a> を表示する機能を追加しました ({{bug(1443923)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("img")}} 要素の <code>decoding</code> 属性をサポートしました ({{bug(1416328)}})。{{DOMxRef("HTMLImageElement.decoding")}} もご覧ください。</li>
+</ul>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<ul>
+ <li><code>sidebar</code> リンクタイプ (<code>rel="sidebar"</code>) のサポートを廃止しました。アンカータグがこの属性を含んでいても、属性が無視されます ({{bug(1452645)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{Cssxref(":defined")}} 疑似クラスをサポートしました ({{bug(1331334)}})。</li>
+ <li><a href="/ja/docs/Web/CSS/CSS_Box_Alignment/Box_Alignment_in_Flexbox#The_gap_properties">Flexbox レイアウト</a> で {{cssxref("row-gap")}}、{{cssxref("column-gap")}}、{{cssxref("gap")}} をサポートしました ({{bug(1398483)}})。</li>
+ <li><a href="/ja/docs/Web/CSS/@media/-webkit-device-pixel-ratio">webkit 接頭辞付きの画素密度に関する @media クエリー</a> のサポートを再び有効化しました ({{bug(1444139)}})。</li>
+ <li>Firefox で <a href="/ja/docs/Web/CSS/CSS_Flexible_Box_Layout">CSS Flexible Box レイアウト</a> (Flexbox) の {{cssxref("align-self")}}、{{cssxref("align-content")}}、{{cssxref("align-items")}}、{{cssxref("justify-content")}} プロパティをサポートしました ({{bug(1472843)}})。</li>
+ <li>{{cssxref("offset-path")}} の <code>path()</code> 関数を実装しました ({{bug(1429298)}})。</li>
+ <li><a href="/ja/docs/Web/CSS/Media_Queries/Using_media_queries#Syntax_improvements_in_Level_4">Media Queries Level 4 仕様で改良された構文</a> を実装しました ({{bug(1472843)}})。</li>
+ <li><code>offset-*</code> プロパティを {{cssxref("inset-block-start")}}、{{cssxref("inset-block-end")}}、{{cssxref("inset-inline-start")}}、{{cssxref("inset-inline-end")}} に改名しました ({{bug(1464782)}})。</li>
+ <li><a href="/ja/docs/Web/CSS/@media/prefers-reduced-motion">prefers-reduced-motion</a> メディア特性をサポートしました ({{bug(1365045)}}、{{bug(1475462)}})。</li>
+ <li>{{cssxref("resize")}} プロパティにフロー関連の値 (<code>block</code>、<code>inline</code>) を追加しました ({{bug(1464786)}})。</li>
+ <li>{{cssxref("align-self")}}、{{cssxref("align-content")}}、{{cssxref("justify-content")}} で、<code>safe</code> および <code>unsafe</code> 値の flexbox レイアウトを実装しました ({{bug(1297774)}})。</li>
+ <li>適切な <a href="/ja/docs/Web/CSS/CSS_Logical_Properties">論理プロパティ</a> がアニメーション可能になりました ({{bug(1309752)}})。</li>
+</ul>
+
+<h4 id="Removals_2" name="Removals_2">廃止</h4>
+
+<ul>
+ <li><code>offset-block-start</code>、<code>offset-block-end</code>、<code>offset-inline-start</code>、<code>offset-inline-end</code> を削除しました。これらは前述のとおり <code>inset-*</code> に改名されました ({{bug(1464782)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("Symbol.prototype.description")}} プロパティを実装しました ({{bug(1472170)}})。</li>
+ <li>{{JSxRef("Object.fromEntries()")}} メソッドを実装しました ({{bug(1469019)}})。</li>
+ <li>undefined であるオブジェクトのプロパティにアクセスしようとしたときのエラーメッセージを改善しました。<code>x</code> が undefined である状況で <code>x.y</code> にアクセスしようとすると、コンソールが従来の <code>TypeError: x is undefined</code> に代わって、より具体的な <code><a href="/ja/docs/Web/JavaScript/Reference/Errors/cant_access_property">x is undefined; can't access its "y" property</a></code> を返します ({{bug(1259822)}})。</li>
+</ul>
+
+<h4 id="Removals_3" name="Removals_3">廃止</h4>
+
+<ul>
+ <li>WebAssembly Module で、実験的な IndexedDB のシリアライズのサポートを廃止しました ({{bug(1469395)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li>Shadow DOM ({{bug(1471947)}}) および Custom Elements ({{bug(1471948)}}) API をデフォルトで有効にしました。詳しくは <a href="/ja/docs/Web/Web_Components">Web components</a> をご覧ください。</li>
+ <li>{{domxref("Media_Capabilities_API", "Media Capabilities API", "", "1")}} を実装しました ({{bug(1409664)}})。</li>
+ <li>{{domxref("Clipboard", "Async Clipboard API", "", "1")}} を実装して、デフォルトですべてのチャンネルで有効化しました。Chrome および Firefox では現在 {{domxref("Clipboard.writeText", "writeText()")}} および {{domxref("Clipboard.readText", "readText()")}} メソッドのみ実装しています。ただし、<code>readText()</code> が <a href="/ja/docs/Mozilla/Add-ons/WebExtensions">ブラウザー拡張機能</a> に限り使用可能であることが Chrome とは異なります。</li>
+ <li>{{domxref("SecurityPolicyViolationEvent")}} インターフェイスをサポートしました。{{HTTPHeader("Content-Security-Policy")}} に違反したときにイベントを送信できます ({{bug(1472661)}})。</li>
+</ul>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>{{domxref("Web_Animations_API", "Web Animations API", "", "1")}} で、以下の部分をデフォルトで有効にしました ({{bug(1476158)}})。
+ <ul>
+ <li>{{domxref("Animation")}} の {{domxref("Animation.ready", "ready")}} および {{domxref("Animation.finished", "finished")}} プロパティ。<code>Animation</code> オブジェクトの <code>ready</code> および <code>finished</code> {{jsxref("Promise")}} を指定します。</li>
+ <li>{{domxref("Animation")}} オブジェクトの {{domxref("Animation.effect", "effect")}} プロパティ。</li>
+ <li>{{domxref("KeyframeEffect")}} および {{domxref("AnimationEffect")}} インターフェイス。</li>
+ </ul>
+ </li>
+ <li>{{domxref("Element.toggleAttribute()")}} メソッドを実装しました ({{bug(1469592)}})。</li>
+ <li>以前は非標準であった {{domxref("Event.returnValue")}} プロパティを、互換性のためにサポートしました ({{bug(1452569)}})。</li>
+ <li>ウェブ互換性を向上するために {{domxref("Window.event")}} プロパティを実装しました。現在は標準化されています ({{bug(218415)}})。ただし複数のウェブ互換性の問題 (例えば {{bug(1479964)}}) により、すぐに設定項目 <code>dom.window.event.enabled</code> で Nightly 以外のチャンネルでは無効化しました ({{bug(1493869)}})。</li>
+ <li>Firefox の動作を Edge や Chrome に合わせるため、{{domxref("NavigatorID.platform", "navigator.platform")}} プロパティが 64 ビット版 Windows で実行している場合でも <code>"Win32"</code> を返すようになりました ({{bug(1472618)}})。</li>
+ <li>Firefox 63 より前のバージョンでは、<code>rel="noopener"</code> を持つ新しいウィンドウを開くリンク、および <code><a href="/ja/docs/Web/API/Window/open#noopener">noopener</a></code> 機能を有効にして {{domxref("Window.open()")}} を呼び出した場合にすべてのウィンドウ機能を無効にしており、必要な標準機能を明示的に再有効化しなければなりませんでした。Firefox 63 ではこれらのウィンドウでほかのウィンドウと同じ機能が有効になり、不要な機能を明示的に無効化しなければなりません ({{bug(1419960)}})。</li>
+</ul>
+
+<h4 id="DOM_events" name="DOM_events">DOM イベント</h4>
+
+<ul>
+ <li>キーボードの<em>右側</em>にある <kbd>Alt</kbd> キーの扱いが、Windows で改善しました。ユーザーの現在のキーボードレイアウトで <kbd>Alt</kbd> キーが <kbd>AltGr</kbd> モディファイアキーにマッピングされている場合に、{{domxref("KeyboardEvent.key")}} が <code>"AltGraph"</code> として値を返します。これは最近 Chrome に導入された動作に合致します ({{bug(900750)}})。</li>
+</ul>
+
+<h4 id="Media_Web_Audio_and_WebRTC" name="Media_Web_Audio_and_WebRTC">メディア、Web Audio、WebRTC</h4>
+
+<ul>
+ <li>マイクへのアクセスが、同じコンテンツプロセス内でも複数のタブで同時に動作するようになりました ({{bug(1404977)}})。</li>
+ <li>{{domxref("RTCDataChannel")}} を、以前からサポートしていた旧来の sctp-sdp-05 データ形式に加えて、sctp-sdp-21 データ形式をサポートするように更新しました。</li>
+ <li>Web Audio API の {{domxref("ConstantSourceNode")}} ノード型で、仕様書に合わせるためデフォルトのチャンネル数を 1 から 2 に変更しました ({{bug(1413283)}})。</li>
+ <li>{{domxref("Web_Audio_API", "Web Audio API", "", "1")}} の {{domxref("AudioScheduledSourceNode")}} インターフェイス (および拡張によって、このインターフェイスを基にしたすべてのノード) でノードの開始時間として負の値が指定されたときに、正しい例外が発生するようになりました。そのエラーは <code>RangeError</code> です ({{bug(1413284)}})。</li>
+ <li>{{domxref("AudioParam")}} オブジェクトの {{domxref("AudioParam.value", "value")}} で許可される最小値と最大値を、それぞれ単精度浮動小数点数で最小の負の値 (-340,282,346,638,528,859,811,704,183,484,516,925,440) と最大の正の値 (+340,282,346,638,528,859,811,704,183,484,516,925,440) に変更しました ({{bug(1476695)}})。</li>
+ <li>アクティブなストリームのコーデックを変更できる、{domxref("SourceBuffer.changeType")}} メソッドをデフォルトで有効にしました。これは {{domxref("Media_Source_Extensions_API", "Media Source Extensions API", "", "1")}} の一部です ({{bug(1481166)}})。</li>
+ <li>{{domxref("AudioParam.setValueCurveAtTime()")}} メソッドを、引数の値が次第に変わることを示すために浮動小数点数値の配列を受け入れるように更新しました。以前は {{domxref("Float32Array")}} であることが必要でした ({{bug(1421091)}})。</li>
+ <li>また {{domxref("AudioParam.setValueCurveAtTime()")}} が、<code>values</code> の配列に有限ではない値が存在する場合に、<code>TypeError</code> を正しく返すようになりました ({{bug(1472095)}})。</li>
+ <li>さらに <code>setValueCurveAtTime()</code> で、時間が経過した後に指定した値のカーブに従ってパラメーターが終了したとき、パラメーターの値がカーブの値のリストの最後の値に設定されるようになりました ({{bug(1308436)}})。</li>
+ <li>ほかのディクショナリーや仕様書に合わせて、<code>RTCRTPStreamStats</code> ディクショナリーを {{domxref("RTCRtpStreamStats")}} に改名しました ({{bug(1480498)}})。</li>
+ <li><code>RTCRtpStreamStats</code> ディクショナリーの {{domxref("RTCRtpStreamStats.kind", "kind")}} プロパティをサポートしました ({{bug(1481851)}})。</li>
+ <li>{{domxref("RTCRtpStreamStats")}} ディクショナリーの {{domxref("RTCRtpStreamStats.isRemote", "isRemote")}} プロパティが推奨になりました。Firefox 65 で削除する予定です。このプロパティにアクセスすると、コンソールに警告を表示します。詳しくは <a href="https://blog.mozilla.org/webrtc/getstats-isremote-65/">Advancing WebRTC ブログの投稿</a> をご覧ください ({{bug(1393306)}})。</li>
+</ul>
+
+<h4 id="Canvas_and_WebGL" name="Canvas_and_WebGL">Canvas と WebGL</h4>
+
+<ul>
+ <li>{{domxref("HTMLCanvasElement.getContext()")}} に、新しい <code>powerPreference</code> コンテキスト属性を追加しました。macOS ではパフォーマンスを重視しない WebGL のアプリケーションやアプレットが、マルチ GPU のシステムで高性能な GPU ではなく低消費電力の GPU を要求することができます ({{bug(1349799)}})。</li>
+</ul>
+
+<h4 id="Removals_4" name="Removals_4">廃止</h4>
+
+<ul>
+ <li>廃止済みおよび Firefox 限定の非標準メソッドである {{domxref("Window.back()")}} および {{domxref("Window.forward()")}} を削除しました。代わりに {{domxref("History.back", "window.history.back()")}} および {{domxref("History.forward", "window.history.forward()")}} メソッドを使用してください ({{bug(1479486)}})。</li>
+ <li>メモリーリークを発生させるおそれがあるため、{{domxref("URL.createObjectURL", "createObjectURL()")}} および {{domxref("URL.revokeObjectURL", "revokeObjectURL()")}} メソッドが {{domxref("ServiceWorker")}} のインスタンスで使用できなくなりました ({{bug(1264182)}})。</li>
+ <li>仕様書で非推奨とされたため限定的にサポートしていた、{{domxref("PannerNode")}} のドップラー効果のサポートを Web Audio API から削除しました。{{domxref("AudioListener")}} の {{domxref("AudioListener.dopplerFactor", "dopplerFactor")}} および {{domxref("AudioListener.speedOfSound", "speedOfSound")}} プロパティと、<code>PannerNode</code> の {{domxref("PannerNode.setVelocity", "setVelocity()")}} メソッドを削除しました ({{bug(1148354)}})。</li>
+</ul>
+
+<h3 id="CSSOM" name="CSSOM">CSSOM</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<ul>
+ <li>{{HTTPHeader("Clear-Site-Data")}} ヘッダーを実装して、設定で無効化しないようにしました ({{bug(1470111)}})。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<ul>
+ <li>サイトで <a href="/ja/docs/Web/HTTP/CSP">Content Security Policy</a> が設定されている場合に、favicon も CSP に従うようになりました ({{bug(1297156)}})。</li>
+ <li>CSP の違反レポートを生成するとき、<code>script-src</code> ディレクティブの <code>'report-sample'</code> 式を認識するようになりました。このディレクディブは、違反が発生した場所の短いサンプルをレポートに含めるべきであることを示します。以前は、Firefox は常にサンプルを含めていました ({{bug(1473218)}})。</li>
+ <li>Firefox が NSS 3.39 を使用するようになりました ({{bug(1470914)}})。</li>
+</ul>
+
+<h3 id="Plugins" name="Plugins">プラグイン</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="WebDriver_conformance_(Marionette)" name="WebDriver_conformance_(Marionette)">WebDriver conformance (Marionette)</h3>
+
+<h4 id="New_features" name="New_features">新機能</h4>
+
+<ul>
+ <li>Marionette が <code>WebDriver:NewSession</code> の応答で <code>setWindowRect</code> <a href="/ja/docs/Web/WebDriver/Capabilities">capability</a> を返すようになりました。これは、ブラウザーのウィンドウの移動やリサイズが可能である場合 (例えばモバイルアプリケーション以外の Firefox) に true になります ({{bug(1470659)}})。</li>
+ <li><code>unhandledPromptBehavior</code> capability をサポートしました。これは、WebDriver 仕様の特定の <a href="https://w3c.github.io/webdriver/#dfn-user-prompt-handler">prompt behavior</a> を定義できます ({{bug(1264259)}})。</li>
+ <li><code>WebDriver:ExecuteScript</code> および <code>WebDriver:ExecuteAsyncScript</code> コマンドに、ユーザープロンプトの処理を追加しました ({{bug(1439995)}})。</li>
+</ul>
+
+<h4 id="API_changes" name="API_changes">API の変更点</h4>
+
+<ul>
+ <li><code>WebDriver:</code> 接頭辞がない、非推奨のコマンドエンドポイントを削除しました ({{bug(1451725)}})。</li>
+ <li><code>WebDriver:NewSession</code> コマンドが、<code>platformName</code> について WebDriver 仕様で定義されている推奨文字列 (<code>linux</code>、<code>mac</code>、<code>windows</code>) を返すようになりました ({{bug(1470646)}})。</li>
+</ul>
+
+<h4 id="Bug_fixes" name="Bug_fixes">バグ修正</h4>
+
+<ul>
+ <li>Firefox が最前面のアプリケーションではないとき、要素との対話でフォーカスに関するイベントが失われる問題を修正しました ({{bug(1398111)}})。</li>
+ <li><code>WebDriver:ReleaseActions</code> がダブルクリックのトラッカーをリセットしないため、一連のアクションで <code>pointerDown</code> および <code>pointerUp</code> アクションを実行するとダブルクリックが発生する問題を修正しました ({{bug(1422583)}})。</li>
+ <li><code>pause</code> アクションを繰り返し実行するとハングアップする問題を修正しました ({{bug(1447449)}})。</li>
+ <li><code>WebDriver:ExecuteScript</code> や <code>WebDriver:ExecuteAsyncScript</code> が返す要素コレクションで循環参照エラーが発生する場合がある問題を修正しました ({{bug(1447977)}})。</li>
+ <li><code>WebDriver:AcceptAlert</code> および <code>WebDriver:DismissAlert</code> コマンドの競合を防ぐため、ユーザープロンプトが閉じられるまで待つようになりました ({{bug(1479368)}})。</li>
+ <li>フレームのスクリプトから発生したログが <code>MarionettePrefs.logLevel</code> で制限されず、すべて記録される問題を修正しました ({{bug(1482829)}})。</li>
+ <li>幅または高さが 32767 ピクセルを超えるウィンドウのスクリーンショットを取得するとき、<code>WebDriver:TakeScreenshot</code> でエラーが発生する問題を修正しました ({{bug(1485730)}})。</li>
+ <li>送信したテキストが空文字列である場合に、<code>WebDriver:SendAlertText</code> がユーザープロンプトの値を置き換えない問題を修正しました ({{bug(1486485)}})。</li>
+</ul>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<ul>
+ <li>{{domxref("PerformanceObserver.observe()")}} の動作を、指定したエントリータイプの配列に有効な値が見つからない場合や、配列が空または存在しない場合に、単に何もしないように修正しました。以前は、Firefox は誤って <code>TypeError</code> を発生させていました ({{bug(1403027)}})。</li>
+ <li><a href="/ja/docs/Web/OpenSearch">OpenSearch</a> で、検索 URL の型として <code>application/json</code> を、<code>application/x-suggestions+json</code> の別名として受け入れるようになりました ({{bug(1425827)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<h3 id="API_changes_2" name="API_changes_2">API の変更点</h3>
+
+<h4 id="Theming" name="Theming">テーマ</h4>
+
+<ul>
+ <li>{{WebExtAPIRef("browserAction")}} バッジのデフォルトの文字色が、背景とのコントラストを最大化するため、自動的に黒色か白色に設定されるようになりました ({{bug(1474110)}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">theme</a></code> マニフェストキーの <code>accentcolor</code> および <code>textcolor</code> プロパティが省略可能になりました ({{bug(1413144)}})。</li>
+ <li>{{WebExtAPIRef("browserAction.getBadgeTextColor()")}} および {{WebExtAPIRef("browserAction.setBadgeTextColor()")}} で、ブラウザーのアクションバッジの文字色を取得および設定できるようになりました ({{bug(1424620)}})。</li>
+ <li><code>manifest.json</code> のテーマ <code>colors</code> キーで、新しいタブの文字色を設定する <code>ntp_text</code> プロパティと、新しいタブの色を設定する <code>ntp_background</code> プロパティをサポートしました ({{bug(1347204)}})。</li>
+ <li>ブックマークサイドバーなど、サイドバーの色をテーマで定義可能になりました ({{bug(1418602)}})。関連プロパティ:
+ <ul>
+ <li><code>sidebar</code>: サイドバーの背景色。</li>
+ <li><code>sidebar_text</code>: サイドバーの文字色。</li>
+ <li><code>sidebar_highlight</code>: サイドバーで選択したアイテムの背景色。</li>
+ <li><code>sidebar_highlight_text</code>: サイドバーで選択したアイテムの文字色。</li>
+ </ul>
+ </li>
+ <li>{{WebExtAPIRef("management.install()")}} メソッドで、ブラウザー拡張機能が署名付きブラウザーテーマをインストールできます ({{bug(1369209)}})。</li>
+</ul>
+
+<h4 id="Search" name="Search">検索</h4>
+
+<ul>
+ <li>インストール済みの検索エンジンの一覧を取得したり、それらで検索を行ったりすることが可能な、新しい {{WebExtAPIRef("search")}} API が使用可能になりました ({{bug(1352598)}})。</li>
+ <li>{{WebExtAPIRef("topSites.get()")}} で、サイトが返すさまざまなリストのオプションを設定可能な <code>options</code> 引数をサポートしました ({{bug(1445836)}})。</li>
+</ul>
+
+<h4 id="Tabs" name="Tabs">タブ</h4>
+
+<ul>
+ <li>{{WebExtAPIRef("tabs.onHighlighted")}} で複数選択をサポートしました ({{bug(1474440)}})。</li>
+ <li>{{WebExtAPIRef("tabs.highlight")}} で、<code>highlightInfo</code> オブジェクトに省略可能なフィールドである <code>populate</code> を追加しました。既定値は <code>true</code> です。<code>false</code> に設定するとパフォーマンスを向上させるため、返される <code>windows.Window</code> がタブのリストを持たないようになります ({{bug(1489814)}})。</li>
+ <li>{{WebExtAPIRef("tabs.update")}} で、<code>updateProperties</code> 引数内に <code>highlighted: true</code> を含むことによる、タブの選択状態の変化をサポートしました ({{bug(1479129)}})。</li>
+ <li>{{WebExtAPIRef("tabs.update")}} で、<code>updateProperties</code> 引数内に <code>highlighted: true</code> および <code>active: false</code> を含むことにより、フォーカスがあるタブを変えずにタブの選択状態を変更できるようになりました ({{bug(1486050)}})。</li>
+ <li>{{WebExtAPIRef("tabs.query")}} で、複数のタブが選択されている場合に {{WebExtAPIRef("tabs.Tab")}} オブジェクトの配列を返すようになりました ({{bug(1465170)}})。</li>
+ <li>{{WebExtAPIRef("tabs.Tab")}} プロパティが、ブラウザーウィンドウでどのタブが選択 (ハイライト) されているかを適切に反映するようになりました。また {{WebExtAPIRef("tabs.highlight")}} で、複数のタブのハイライト状態の変化をサポートしました ({{bug(1464862)}})。</li>
+ <li>{{WebExtAPIRef("tabs.onUpdated")}} に渡される <code>extraParameters</code> の <code>isarticle</code> プロパティを <code>isArticle</code> に改名しました。古い名前は残されていますが、非推奨です。この変更は Firefox 62 に適用されました ({{bug(1461695)}})。</li>
+ <li>{{WebExtAPIRef('tabs.onUpdated')}} イベントを使用して、<code>changeInfo</code> オブジェクトの <code>attention</code> プロパティでタブがユーザーの注意を引いていることを検出できます ({{bug(1396684)}})。</li>
+</ul>
+
+<h4 id="Menus" name="Menus">メニュー</h4>
+
+<ul>
+ <li>{{WebExtApiRef("menus")}} API に {{WebExtApiRef("menus.getTargetElement()")}} を追加しました。このメソッドは <code>targetElementId</code> 引数が参照する、クリックされた要素を返します ({{bug(1325814)}})。</li>
+ <li>{{WebExtAPIRef("menus.create()")}} で非表示のメニュー項目を作成できるようになりました。また、{{WebExtAPIRef("menus.update()")}} で項目の表示・非表示を切り替えられるようになりました ({{bug(1482529)}})。</li>
+ <li>{{WebExtAPIRef("menus")}} API を使用して作成した項目でアクセスキーをサポートしました ({{bug(1320462)}})。</li>
+ <li>{{WebExtApiRef("menus.create()")}} および {{WebExtApiRef("menus.update()")}} の <code>targetUrlPatterns</code> 引数で、通常はマッチパターンで許可されないものを含む任意の URL スキームをサポートしました ({{bug(1280370)}})。</li>
+ <li>タブのコンテキストメニューがクリックされたとき、そのタブが現在アクティブなタブではない場合でも <a href="/ja/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission">"activeTab" パーミッション</a> が認められるようになりました ({{bug(1446956)}})。</li>
+</ul>
+
+<h4 id="Other_2" name="Other_2">その他</h4>
+
+<ul>
+ <li>{{WebExtAPIRef("commands.onCommand")}} が <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/User_actions">ユーザー入力</a> として扱われるようになりました ({{bug(1408129)}})。</li>
+ <li>{{WebExtAPIRef("webRequest")}} API で、投機的接続のフィルターが可能になりました ({{bug(1479565)}})。</li>
+ <li>{{WebExtAPIRef("webRequest.SecurityInfo")}} に <code>keaGroupName</code> および <code>signatureSchemeName</code> プロパティを追加しました。この変更は Firefox 62 に適用されました ({{bug(1471959)}})。</li>
+ <li>{{WebExtAPIRef("cookies.Cookie")}} が、Cookie の SameSite 状態を示すプロパティを含むようになりました。{{WebExtAPIRef("cookies.SameSiteStatus")}} 列挙型が SameSite 状態の値を定義します ({{bug(1351663)}})。</li>
+ <li>URL のマッチパターンが、"data" URL スキームへ明白にマッチするようになりました ({{bug(1280370)}})。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/63/">Firefox 63 サイト互換性情報</a></li>
+ <li><a href="https://www.mozilla.org/en-US/firefox/63.0/releasenotes/">Firefox 63.0, See All New Features, Updates and Fixes</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(62)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/64/index.html b/files/ja/mozilla/firefox/releases/64/index.html
new file mode 100644
index 0000000000..5ea2c26ddc
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/64/index.html
@@ -0,0 +1,216 @@
+---
+title: Firefox 64 for developers
+slug: Mozilla/Firefox/Releases/64
+tags:
+ - '64'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/64
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p class="summary">Firefox 64 は、米国時間 2018 年 12 月 11 日 にリリースされました。このページでは、開発者に影響する Firefox 64 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Accessibility_inspector#Highlighting_of_UI_items">アクセシビリティインスペクターの情報バー</a> が、ページ上のテキストや画像の色のコントラスト比に関する情報を表示するようになりました ({{bug(1473037)}})。</li>
+ <li><a href="/ja/docs/Tools/Responsive_Design_Mode">レスポンシブデザインモード</a> で選択したデバイスが、セッションをまたいで保存されるようになりました ({{bug(1248619)}})。</li>
+ <li><a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a> で、<a href="/ja/docs/Mozilla/Firefox/Privacy/Tracking_Protection">トラッキング防止</a> の影響を受ける可能性があるリソースに印をつけるようになりました ({{bug(1333994)}})。</li>
+ <li><a href="/ja/docs/Tools/Web_Console">ウェブコンソール</a> で、コードの入力や評価の機能が向上しました:
+ <ul>
+ <li>コンソールの式の <a href="/ja/docs/Tools/Web_Console/The_command_line_interpreter#Autocomplete">オートコンプリート</a> が、大文字・小文字を区別しないようになりました ({{bug(672733)}})。</li>
+ <li>bash のような reverse search によって <a href="/ja/docs/Tools/Web_Console/The_command_line_interpreter#Command_history">コンソールの式の履歴</a> をたどれるようになりました ({{bug(1024913)}})。</li>
+ <li>コンソールで <a href="/ja/docs/Tools/Web_Console/The_command_line_interpreter">評価されたコード</a> が、入力・出力ともに構文強調を行うようになりました ({{bug(1463669)}})。</li>
+ </ul>
+ </li>
+ <li><a href="/ja/docs/Tools/Debugger">JavaScript デバッガー</a> のステップ実行の機能も向上しました:
+ <ul>
+ <li>ステップ実行中は <a href="/ja/docs/Tools/Debugger/UI_Tour#Scopes">展開された変数</a> を維持するようになりました ({{bug(1491471)}})。</li>
+ <li>関数の <a href="/ja/docs/Tools/Debugger/How_to/Step_through_code">ステップアウト</a> で、戻り値をスキップするようになりました ({{bug(923975)}})。</li>
+ </ul>
+ </li>
+</ul>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<ul>
+ <li>開発ツールバー/ GCLI を削除しました ({{bug(1429421)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/CSS/CSS_Scrollbars">CSS Scrollbars</a> 仕様の機能をデフォルトで有効化しました ({{bug(1492012)}})。</li>
+ <li><code><a href="/ja/docs/Web/CSS/@media/pointer">pointer:coarse</a></code> を含む、Interaction Media Features を実装しました ({{bug(1035774)}})。<code><a href="/ja/docs/Web/CSS/@media/any-pointer">any-pointer</a></code> および <code><a href="/ja/docs/Web/CSS/@media/any-hover">any-hover</a></code> の実装については、{{bug(1483111)}} をご覧ください。</li>
+ <li><code><a href="/ja/docs/Web/CSS/@media/prefers-reduced-motion">prefers-reduced-motion</a></code> メディア特性を Android 版 Firefox でサポートしました ({{bug(1478505)}})。</li>
+ <li>CSS の {{cssxref("&lt;gradient&gt;")}} 値で複数の color stop を持つ構文をサポートしました。例えば <code>yellow 25%, yellow 50%</code> を <code>yellow 25% 50%</code> と書くことができます ({{bug(1352643)}})。</li>
+ <li>{{cssxref("text-transform")}} プロパティで <code>full-size-kana</code> 値を受け入れるようになりました ({{bug(1498148)}})。</li>
+ <li>ウェブ互換性の問題を緩和するため、{{cssxref("appearance", "-webkit-appearance")}} をサポートしました ({{bug(1368555)}})。</li>
+ <li>上記の更新に関連して、Firefox 固有の <code>-moz-appearance</code> の大半の値を削除しました ({{bug(1496720)}})。</li>
+ <li>{{htmlelement("legend")}} 要素で {{cssxref("display")}}: <code>list-item</code> をサポートしました ({{bug(1486602)}})。</li>
+ <li>{{cssxref("offset-path")}} で使用可能な SVG の <code>path()</code> がアニメーション可能になりました ({{bug(1486094)}})。</li>
+ <li>セレクターの羅列やグループに <code>-webkit-</code> 接頭辞を持つ疑似要素が含まれるとき、疑似要素がセレクターを無効化しないようになりました (詳しくは {{bug(1424106)}}、またこの機能の有効化について {{bug(1486325)}} をご覧ください)。</li>
+</ul>
+
+<h4 id="Removals_2" name="Removals_2">廃止</h4>
+
+<ul>
+ <li>{{CSSxRef("display")}} の非標準の値である <a href="/ja/docs/Mozilla/Gecko/Chrome/CSS/display-xul"><code style="white-space: nowrap;">-moz-box</code> および <code style="white-space: nowrap;">-moz-inline-box</code></a> が、ウェブコンテンツで使用できなくなりました ({{bug(1496961)}})。</li>
+ <li>非標準の {{CSSxRef("::-moz-tree")}} <a href="/ja/docs/Web/CSS/Pseudo-elements" style="white-space: nowrap;">疑似要素</a> が、ウェブコンテンツで使用できなくなりました ({{bug(1496961)}})。</li>
+ <li>設定項目 <code>layout.css.filters.enabled</code> を削除しました。<a href="/ja/docs/Web/CSS/Filter_Effects">CSS filters</a> は無効化できません ({{bug(1408841)}})。</li>
+ <li>{{cssxref("overflow")}} の 2 値構文で block を 1 番目、inline を 2 番目に入れ替えた変更 ({{bug(1481866)}}) を元に戻しました ({{bug(1492567)}})。理由は <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1481866#c14">Bug 1481866 の comment 14</a> をご覧ください。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("JSON.stringify")}} が正しくない Unicode 文字列を返すのを避けるため、TC39 <a href="https://github.com/tc39/proposal-well-formed-stringify">Well-formed JSON.stringify</a> 提案を実装しました ({{bug(1469021)}})。</li>
+ <li>Proxy 化した関数を {{jsxref("Function.prototype.toString")}}<code>.call()</code> に渡すことが可能になりました ({{bug(1440468)}})。</li>
+ <li>{{jsxref("WebAssembly.Global")}} コンストラクターで、何も値を指定しない場合に型付きの値 0 を使用するようになりました。これは <a href="https://webassembly.github.io/spec/js-api/#defaultvalue"><code>DefaultValue</code> アルゴリズム</a> で示されています ({{bug(1490286)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>{{domxref("Fullscreen_API", "Fullscreen API", "", "1")}} に関して、いくつかの変更を施しました:
+ <ul>
+ <li>API の接頭辞を削除しました ({{bug(1269276)}})。</li>
+ <li>{{domxref("Element.requestFullscreen()")}} および {{domxref("Document.exitFullscreen()")}} メソッドが、モード変更が完了したときに解決する {{jsxref("Promise")}} を返すようになりました ({{bug(1188256)}}、{{bug(1491212)}})。</li>
+ <li>以前は {{domxref("fullscreenchange")}} および {{domxref("fullscreenerror")}} イベントが始めに {{domxref("Document")}} へ、次に {{domxref("Element")}} へ発行されていました。これを逆にして、要素が始めにイベントを受けるようになりました。これは最新の仕様書や Google Chrome の動作に一致します ({{bug(1375319)}})。</li>
+ </ul>
+ </li>
+ <li>{{domxref("WebVR_API", "WebVR API", "", "1")}} (1.1) を macOS で再び有効化しました ({{bug(1476091)}})。</li>
+ <li>{{domxref("Window.screenLeft")}} および {{domxref("Window.screenTop")}} を、それぞれ {{domxref("Window.screenX")}} および {{domxref("Window.screenY")}} の別名として実装しました ({{bug(1498860)}})。</li>
+ <li>{{domxref("XMLHttpRequest.getAllResponseHeaders()")}} メソッドが、仕様書に従ってヘッダー名をすべて小文字で返すようになりました ({{bug(1398718)}})。</li>
+ <li>古い <code>HTMLAllCollection</code> インターフェイスを、最近の <a href="https://html.spec.whatwg.org/multipage/common-dom-interfaces.html#htmlallcollection">仕様書の更新</a> に従って更新しました ({{bug(1398354)}})。</li>
+ <li>プライバシー保護のため、{{domxref("Navigator.buildID")}} で固定値のタイムスタンプが返るようになりました ({{bug(583181)}})。</li>
+ <li>以下の {{domxref("Document.execCommand()")}} UI 機能コマンドを、デフォルトで無効にしました ({{bug(1490641)}}。詳しくは <a href="https://www.fxsitecompat.com/en-CA/docs/2018/firefox-specific-html-editing-ui-has-been-disabled-by-default/">Firefox-specific HTML editing UI has been disabled by default</a> もご覧ください):
+ <ul>
+ <li><code>enableObjectResizing</code></li>
+ <li><code>enableInlineTableEditing</code></li>
+ <li><code>enableAbsolutePositionEditor</code></li>
+ </ul>
+ </li>
+</ul>
+
+<h4 id="Service_workers" name="Service_workers">Service workers</h4>
+
+<ul>
+ <li>{{domxref("ServiceWorkerContainer.startMessages()")}} メソッドを実装しました ({{bug(1263734)}})。</li>
+</ul>
+
+<h4 id="Media_Web_Audio_and_WebRTC" name="Media_Web_Audio_and_WebRTC">メディア、Web Audio、WebRTC</h4>
+
+<ul>
+ <li>{{domxref("PannerNode.refDistance")}}、{{domxref("PannerNode.maxDistance")}}、{{domxref("PannerNode.rolloffFactor")}}、{{domxref("PannerNode.coneOuterGain")}} プロパティが、受け入れ可能な範囲を超える値が設定されたときに、正しく例外を発生させるようになりました ({{bug(1487963)}})。</li>
+ <li>{{domxref("RTCRtpSender.setParameters()")}} で変更した {{domxref("RTCRtpEncodingParameters")}} の設定は、呼び出し中にに更新されませんでした。これらが再ネゴシエーションなしで即座に更新するようになりました ({{bug(1253499)}})。</li>
+ <li>{{domxref("RTCIceCandidateStats.relayProtocol")}} を実装しました。これは {{domxref("RTCIceCandidateStats.mozLocalTransport")}} を標準化したものであり、こちらは非推奨になりました ({{bug(1435789)}})。</li>
+ <li>自動利得制御 (AGC) をデフォルトで有効にしました。これは設定項目 <code>media.getusermedia.agc_enabled</code> で変更できます ({{bug(1496714)}})。</li>
+</ul>
+
+<h4 id="Removals_3" name="Removals_3">廃止</h4>
+
+<ul>
+ <li>ウェブ互換性の問題を緩和するために Firefox 63 で追加した {{domxref("Window.event")}} プロパティで別の問題が発覚したため、設定 (<code>dom.window.event.enabled</code>) で制御するようにして、Release 版はデフォルトで無効化しました ({{bug(1493869)}})。注記: これは実際には Firefox 63 のリリースサイクルの後期に実施しましたが、念のためここで言及します。</li>
+ <li>{{domxref("LocalMediaStream")}} インターフェイスと、その <code>stop()</code> メソッドを削除しました ({{bug(1258143)}})。このメソッドは <code>LocalMediaStream</code> の非推奨化によって使用できなくなりました。全体のストリームを停止する方法については {{SectionOnPage("/ja/docs/Web/API/MediaStreamTrack/stop", "Stopping a video stream")}} をご覧ください。</li>
+ <li><code>AudioStreamTrack</code> および <code>VideoStreamTrack</code> インターフェイスを削除しました。これらはしばらく前から非推奨でした ({{bug(1377146)}})。この機能は {{domxref("MediaStreamTrack")}} に統合されました。トラックは {{domxref("MediaStreamTrack.kind", "kind")}} プロパティの値で、<code>audio</code> や <code>video</code> といった値で識別します。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<ul>
+ <li>シマンテックの CA を失効させる計画を実装しました ({{bug(1409257)}} を参照。詳しくは <a href="https://groups.google.com/forum/#!topic/mozilla.dev.security.policy/FLHRT79e3XE/discussion">Mozilla’s Plan for Symantec Roots</a> の議論もご覧ください)。</li>
+ <li>{{httpheader("Referrer-Policy")}} を、スタイルシートで読み込むリソースの制御で使用可能になりました ({{bug(1330487)}})。詳しくは {{SectionOnPage("/ja/docs/Web/HTTP/Headers/Referrer-Policy", "Integration with CSS")}} をご覧ください。</li>
+</ul>
+
+<h3 id="Plugins" name="Plugins">プラグイン</h3>
+
+<p><em>変更なし</em></p>
+
+<h3 id="WebDriver_conformance_(Marionette)" name="WebDriver_conformance_(Marionette)">WebDriver conformance (Marionette)</h3>
+
+<h4 id="API_changes" name="API_changes">API の変更点</h4>
+
+<ul>
+ <li><code>Marionette:</code>、<code>L10n:</code>、<code>Addon:</code> の接頭辞を持たない、非推奨のコマンドエンドポイント (<code>singeTap</code> を含む) を削除しました ({{bug(1504478)}}、{{bug(1504940)}})。</li>
+</ul>
+
+<h4 id="Bug_fixes" name="Bug_fixes">バグ修正</h4>
+
+<ul>
+ <li><code>WebDriver:PerformActions</code> で、<code>Shift</code> キーと合成したイベントが大文字にならない問題を修正しました ({{bug(1405370)}})。</li>
+ <li>コンテンツプロセス内のタブがナビゲーション中に複数回変化したとき、<code>WebDriver:Navigate</code> がハングアップする場合がある問題を修正しました ({{bug(1504807)}})。</li>
+ <li>パフォーマンスを向上させるため、および Firefox のメモリー使用量を削減するために、新しいタブやウィンドウがデフォルトで読み込むページを <code>about:newtab</code> から <code>about:blank</code> に変更しました ({{bug(1506643)}})。</li>
+ <li>さまざまなページで表示されて要素との対話を失敗させていた、コンテンツブロックを紹介するパネルをデフォルトで無効にしました ({{bug(1488826)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<h3 id="API_changes" name="API_changes">API の変更点</h3>
+
+<h4 id="Menus" name="Menus">メニュー</h4>
+
+<ul>
+ <li>拡張機能で独自のコンテキストメニューを設定するために <code>contextmenu</code> DOM イベントから呼び出すことが可能な、<code>browser.menus.overrideContext()</code> API を新設しました。この API は、拡張機能が Firefox のすべてのデフォルトのメニュー項目を隠して、独自のコンテキストメニューの UI を提供することを可能にします。このコンテキストメニューは、拡張機能が提供する複数のトップレベルのメニュー項目で構成され、任意で別の拡張機能のタブやブックマークのコンテキストメニューを含むこともできます。詳しくは <a href="https://blog.mozilla.org/addons/2018/11/08/extensions-in-firefox-64/#cm">こちらのブログ記事</a> をご覧ください。
+
+ <ul>
+ <li><code>browser.menus.overrideContext()</code> を実装しました ({{bug(1280347)}})。</li>
+ <li>デフォルトのコンテキストメニューを隠すために使用できる <code>showDefaults: false</code> オプションを実装しました ({{bug(1367160)}})。</li>
+ <li><code>browser.menus.overrideContext()</code> が使用されていても、<code>moz-extension://</code> 文書 URL をマッチさせるために <code>documentURLPatterns</code> を使用できるようになりました。この方法は、独自のメニュー項目を特定の文書に限定させることを確実にできます ({{bug(1498896)}})。</li>
+ </ul>
+ </li>
+ <li>{{WebExtAPIRef("menus.create()")}} および {{WebExtAPIRef("menus.update()")}} の新しい <code>viewTypes</code> プロパティを使用して、アドオンでコンテキストメニューを表示可能にするかを制限できるようになりました ({{bug(1416839)}})。</li>
+ <li>{{WebExtAPIRef("menus.update()")}} が、既存のメニュー項目のアイコンを更新できるようになりました ({{bug(1414566)}})。</li>
+ <li>メニュー項目がクリックされたとき、どのマウスボタンを使用したかを拡張機能で検出可能になりました。これは {{WebExtAPIRef("menus.OnClickData")}} の新しい <code>button</code> プロパティを使用して判断できます ({{bug(1469148)}})。</li>
+</ul>
+
+<h4 id="Windows" name="Windows">ウィンドウ</h4>
+
+<ul>
+ <li>{{WebExtAPIRef("windows.create()")}} メソッドで新たに <code>cookieStoreId</code> オプションが使用可能になりました。これはウィンドウが開かれたときに作成されたすべてのタブで使用する <code>CookieStoreId</code> を指定します ({{bug(1393570)}})。</li>
+</ul>
+
+<h4 id="Privacy" name="Privacy">プライバシー</h4>
+
+<ul>
+ <li>{{WebExtAPIRef("privacy.websites")}} の <code>cookieConfig</code> プロパティは、<code>behavior</code> プロパティを受け入れ可能なオブジェクトです。このプロパティが、新たな値 <code>reject_trackers</code> をとれるようになりました。これは、拡張機能にトラッキング Cookie を拒否するよう指示します ({{bug(1493057)}}).</li>
+</ul>
+
+<h4 id="devtools.panels_API" name="devtools.panels_API">devtools.panels API</h4>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/devtools.panels/elements">devtools.panels.elements</a></code> の <code>Sidebar.setPage()</code> メソッドをサポートしました ({{bug(1398734)}})。</li>
+</ul>
+
+<h3 id="Manifest_changes" name="Manifest_changes">マニフェストの変更点</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></code> マニフェストキーの新しいプロパティである <code>pinned</code> で、拡張機能をインストールする際にロケーションバーへページアクションをピン止めするかを制御できるようになりました ({{bug(1494135)}})。</li>
+ <li>Windows のネイティブマニフェストで、レジストリキーを始めに 32 ビットのレジストリビュー (<a class="external external-icon" href="https://en.wikipedia.org/wiki/WoW64#Registry_and_file_system" rel="noopener">Wow6432Node)</a> で確認して、そのあとに "ネイティブ" のレジストリビューを確認します。アプリケーションで適切なビューを使用してください ({{bug(1494709)}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/chrome_settings_overrides">chrome_settings_overrides</a></code> フィールドの <code>search_provider</code> オブジェクトが、新たに <code>suggest_url</code>、<code>suggest_url_post_params</code> ({{bug(1486819)}})、 <code>search_url_post_params</code> プロパティを持てるようになりました。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.org/en-US/firefox/64.0/releasenotes/">Firefox 64.0, See All New Features, Updates and Fixes</a></li>
+ <li><a href="https://www.fxsitecompat.com/ja/versions/64/">Firefox 64 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(64)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/65/index.html b/files/ja/mozilla/firefox/releases/65/index.html
new file mode 100644
index 0000000000..eed7407e6e
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/65/index.html
@@ -0,0 +1,245 @@
+---
+title: Firefox 65 for developers
+slug: Mozilla/Firefox/Releases/65
+tags:
+ - '65'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/65
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p class="summary">この記事では、開発者に影響を与える Firefox 65 の変更点について説明します。Firefox 65 は 2019 年 1 月 29 日に出荷されました。</p>
+
+<h2 id="Web_開発者のための変更">Web 開発者のための変更</h2>
+
+<h3 id="開発者ツール">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_Flexbox_layouts">Flexbox インスペクター</a> をデフォルトで有効にしました。</li>
+ <li><a href="/ja/docs/Tools/Debugger">JavaScript デバッガー</a> で、XHR のブレークポイントをサポートしました ({{bug(821610)}})。</li>
+ <li>アクセシビリティツリーでアイテムを右クリックすると、JSON ビューアに移動して <a href="/ja/docs/Tools/Accessibility_inspector#Print_accessibility_tree_to_json">ツリーを JSON として表示</a> できます。</li>
+ <li>アクセシビリティピッカーの <a href="/ja/docs/Tools/Accessibility_inspector#Color_Contrast">色のコントラスト</a> 表示機能を、文字列の背景が複雑 (例えばグラデーションや複雑な画像) である場合はコントラスト値の範囲を表示するように改良しました。</li>
+ <li><a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a> のヘッダータブに、選択した要求のリファラーポリシーを表示するようになりました ({{bug(1496742)}})。</li>
+ <li>スタックトレースを表示するとき (例えばコンソールのログや JavaScript デバッガー)、自身のコードに集中できるようにするため、フレームワークのメソッドの呼び出しを認識してデフォルトで折りたたむようにしました。</li>
+ <li>ネイティブの端末と同じように、JavaScript コンソールの履歴を見つけるための逆検索が可能になりました (Windows/Linux では <kbd>F9</kbd>、macOS では <kbd>Ctrl</kbd> + <kbd>R</kbd> を押下して検索文字列を入力します。さらに <kbd>Ctrl</kbd> + <kbd>R</kbd>/<kbd>Ctrl</kbd> + <kbd>S</kbd> で結果を切り替えます)。</li>
+ <li>JavaScript コンソールの <code>$0</code> ショートカット (ページで現在調査している要素を参照します) でオートコンプリートが可能になりました。例えば <code>$0.textContent</code> のようなプロパティのオートコンプリート候補を得るために <code>$0.te</code> と入力できます。</li>
+ <li>インスペクターのルールビューで編集した箇所が、変更点パネルに表示されるようになりました ({{bug(1503920)}})。</li>
+</ul>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li>イベントは無効な HTML 要素にディスパッチされるようになりました。例えば、<code>disabled</code> 属性を持つ {{htmlelement("button")}}、{{htmlelement("fieldset")}}、{{htmlelement("input")}}、{{htmlelement("select")}}、{{htmlelement("textarea")}} 要素に設定されています ({{bug(329509)}})。</li>
+ <li>Chrome や Safari に合わせて、{{htmlelement("iframe")}} 要素で <code>src</code> 属性を削除すると <code>about:blank</code> を読み込むようにしました ({{bug(1507842)}})。以前は、<code>src</code> を削除しても <code>iframe</code> の内容に影響はありませんでした。</li>
+ <li>{{htmlelement("script")}} 要素で {{htmlattrxref("referrerpolicy", "script")}} 属性をサポートしました ({{bug(1460920)}})。</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("image-rendering")}} プロパティの値 <code>crisp-edges</code> の接頭辞を削除しました ({{bug(1496617)}})。</li>
+ <li>値が <code>auto</code> である {{cssxref("scrollbar-color")}} が、2 つの色ではなく <code>auto</code> として解釈するようになりました ({{bug(1501418)}})。</li>
+ <li><code>break-*</code> プロパティを実装して、古い <code>page-break-*</code> プロパティをそれらの別名にしました ({{bug(775618)}}):
+ <ul>
+ <li>{{cssxref("page-break-before")}} は {{cssxref("break-before")}} の別名です。</li>
+ <li>{{cssxref("page-break-after")}} は {{cssxref("break-after")}} の別名です。</li>
+ <li>{{cssxref("page-break-inside")}} は {{cssxref("break-inside")}} の別名です。</li>
+ </ul>
+ </li>
+ <li>{{cssxref("overflow-wrap")}} プロパティの値 <code>anywhere</code> を実装しました ({{bug(1505786)}})。</li>
+ <li>新しいステップ位置のキーワードである <code>jump-start</code>、<code>jump-end</code>、<code>jump-none</code>、<code>jump-both</code> (<a href="/ja/docs/Web/CSS/single-transition-timing-function#The_steps()_class_of_timing_functions"><code>steps()</code> タイミング関数</a> 内で使用可能) を実装しました ({{bug(1496619)}})。これは <code>frames()</code> タイミング関数の削除と同時に行いました。この関数は過去に同様の機能を実装していたものであり、非推奨になりました。</li>
+ <li>ほかのブラウザーとの互換性のために、{{cssxref("appearance", "-webkit-appearance")}} で新しい値をいくつか追加しました。特に、以下の値です:
+ <ul>
+ <li><code>meter</code>。これはユーザーエージェントのスタイルシートで、{{htmlelement("meter")}} 要素のデフォルトの値として使用されます。既存の値 <code>meterbar</code> は、<code>meter</code> の別名になりました ({{bug(1501483)}})。</li>
+ <li><code>progress-bar</code>。これはユーザーエージェントのスタイルシートで、{{htmlelement("progress")}} 要素のデフォルトの値として使用されます。既存の値 <code>progressbar</code> は、<code>progress-bar</code> の別名になりました ({{bug(1501506)}})。</li>
+ <li><code>textarea</code>。これはユーザーエージェントのスタイルシートで、{{htmlelement("textarea")}} 要素のデフォルトの値として使用されます。既存の値 <code>textfield-multiline</code> は、<code>textarea</code> の別名になりました ({{bug(1507905)}})。</li>
+ </ul>
+ </li>
+ <li>ほかのブラウザーの動作に合わせるため、{{cssxref("user-select")}} の動作を変更しました ({{bug(1506547)}})。具体的には以下のとおりです:
+ <ul>
+ <li>要素で <code>user-select: all</code> を設定したとき、子孫要素で設定した <code>user-select</code> のほかの値を上書きしないようになりました。例えば、以下のコードをご覧ください:
+ <pre class="brush: html">&lt;div style="-webkit-user-select: all"&gt;All
+ &lt;div style="-webkit-user-select: none"&gt;None&lt;/div&gt;
+&lt;/div&gt;</pre>
+ <code>none</code> を設定した <code>&lt;div&gt;</code> は、選択不可になります。以前はこの値が、親要素の値 <code>all</code> で上書きされました。</li>
+ <li><code>contenteditable</code> である要素の内部にある <code>contenteditable</code> ではない要素が、選択可能になりました。</li>
+ <li><code>user-select</code> の動作が、shadow DOM の内部・外部ともに同じになりました。</li>
+ <li>独自仕様である値 <code>-moz-text</code> を削除しました。</li>
+ </ul>
+ </li>
+ <li>CSS 環境変数 ({{cssxref("env")}} 関数) を実装しました ({{bug(1462233)}})。</li>
+</ul>
+
+<h4 id="廃止">廃止</h4>
+
+<ul>
+ <li>設定項目 <code>layout.css.shape-outside.enabled</code> を削除しました。<code>about:config</code> で {{cssxref("shape-outside")}}、{{cssxref("shape-margin")}}、{{cssxref("shape-image-threshold")}} を無効化できなくなりました ({{bug(1504387)}})。</li>
+ <li>{{cssxref("user-select")}} プロパティの、Firefox 限定の値である <code>-moz-all</code>、<code>-moz-text</code>、<code>tri-state</code>、<code>element</code>、<code>elements</code>、<code>toggle</code> を削除しました。{{bug(1492958)}} および {{bug(1506547)}} をご覧ください。</li>
+ <li>前述のとおり、<code>frames()</code> タイミング関数を削除しました ({{bug(1496619)}})。</li>
+</ul>
+
+<h3 id="SVG">SVG</h3>
+
+<p><em>変更なし</em></p>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}} をサポートしました ({{bug(1504334)}})。</li>
+ <li>文字列の {{jsxref("String/length","length","","1")}} の最大値を <code>2**28 - 1</code> (~256MB) から <code>2**30 - 2</code> (~1GB) に変更しました ({{bug(1509542)}})。</li>
+ <li>常にトップレベルのグローバルオブジェクトを参照する {{jsxref("globalThis")}} プロパティを実装しました ({{bug(1317422)}})。</li>
+</ul>
+
+<h3 id="APIs">APIs</h3>
+
+<h4 id="新しい_API">新しい API</h4>
+
+<ul>
+ <li>{{domxref("Streams_API/Using_readable_streams", "Readable Streams", "", "1")}} をデフォルトで有効にしました ({{bug(1505122)}})。</li>
+ <li>{{domxref("Storage_Access_API", "Storage Access API", "", "1")}} をデフォルトで有効にしました ({{bug(1513021)}})。</li>
+</ul>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>{{domxref("Performance.toJSON()")}} を {{domxref("Web_Workers_API", "Web Workers", "", "1")}} に公開しました ({{bug(1504958)}})。</li>
+ <li>{{domxref("XMLHttpRequest")}} 要求で、要求した content type が <code>Blob</code> かつ要求メソッドが <code>GET</code> ではない場合に、<code>NetworkError</code> が発生するようになりました ({{bug(1502599)}})。</li>
+ <li>{{domxref("Fullscreen API", "", "", "1")}} で、<code>-moz-</code> 接頭辞がつく多くの機能が非推奨になりました。また、これらを発見すると JavaScript コンソールで非推奨の警告を表示するようになりました ({{bug(1504946)}})。</li>
+ <li>{{domxref("WindowOrWorkerGlobalScope.createImageBitmap", "createImageBitmap()")}} で、SVG 画像 ({{domxref("SVGImageElement")}}) を画像のソースとしてサポートしました。</li>
+</ul>
+
+<h4 id="DOM_events">DOM events</h4>
+
+<ul>
+ <li>今後、{{domxref("Window.open()")}} はイベントごとに 1 回だけ呼び出し可能になります ({{bug(675574)}})。</li>
+ <li>CJKT ユーザーに対してブラウザー間の互換性を高めるため、IME で変換している間に <code><a href="/ja/docs/Web/Events/keyup">keyup</a></code> および <code><a href="/ja/docs/Web/Events/keydown">keydown</a></code> イベントが発生するようになりました ({{bug(354358)}}、 詳しくは <a href="https://www.fxsitecompat.com/docs/2018/keydown-and-keyup-events-are-now-fired-during-ime-composition/">keydown and keyup events are now fired during IME composition</a> もご覧ください)。</li>
+</ul>
+
+<h4 id="Web_workers" name="Web_workers">Web workers</h4>
+
+<ul>
+ <li>{{domxref("SharedWorkerGlobalScope.onconnect")}} のイベントオブジェクトが {{domxref("MessageEvent")}} のインスタンスになりました。また、<code>data</code> プロパティが <code>null</code> からから文字列に変わりました ({{bug(1508824)}})。</li>
+</ul>
+
+<h4 id="Fetch_and_Service_workers" name="Fetch_and_Service_workers">Fetch と Service workers</h4>
+
+<ul>
+ <li>{{domxref("Response.redirect()")}} メソッドが、最初の引数で有効な URL が指定されていない場合に、正しく <code>TypeError</code> を発生させるようになりました ({{bug(1503276)}})。</li>
+ <li>{{domxref("ServiceWorkerContainer.register()")}} および {{domxref("WorkerGlobalScope.importScripts()")}} (Service worker で使用している場合) メソッドが、有効な <a href="/ja/docs/Web/HTTP/Basics_of_HTTP/MIME_types#textjavascript">JavaScript MIME type</a> のファイルを受け入れるようになりました ({{bug(1354577)}})。</li>
+ <li>{{domxref("FetchEvent.replacesClientId")}} および {{domxref("FetchEvent.resultingClientId")}} プロパティをサポートしました ({{bug(1264177)}})。</li>
+ <li>{{domxref("ServiceWorkerGlobalScope.onmessageerror")}} および {{domxref("ServiceWorkerContainer.onmessageerror")}} ハンドラープロパティを実装しました ({{bug(1399446)}})。</li>
+ <li>{{HTTPMethod("HEAD")}} または {{HTTPMethod("GET")}} メソッドの Fetch リクエストで、{{httpheader("Origin")}} ヘッダーを設定しないようにしました ({{bug(1508661)}})。</li>
+</ul>
+
+<h4 id="Media_Web_Audio_および_WebRTC">Media, Web Audio, および WebRTC</h4>
+
+<ul>
+ <li>{{domxref("WebRTC API", "WebRTC", "", "1")}} の {{domxref("RTCIceCandidateStats")}} ディクショナリーを、最新の仕様に合わせて更新しました ({{bug(1324788)}}、{{bug(1489040)}}。変更点について、詳しくは <a href="https://www.fxsitecompat.com/en-CA/docs/2018/rtcicecandidatestats-has-been-updated-to-the-latest-spec/">RTCIceCandidateStats has been updated to the latest spec</a> をご覧ください)。</li>
+ <li>{{domxref("MediaRecorder")}} の <code>pause</code> および <code>resume</code> イベント (また、対応するイベントハンドラープロパティの {{domxref("MediaRecorder.onpause")}} および {{domxref("MediaRecorder.onresume")}}) は、ブラウザー実装状況では実装済みとしていましたが、以前は実装されていませんでした。これらを実装しました ({{bug(1458538)}}, {{bug(1514016)}})。</li>
+</ul>
+
+<h4 id="Canvas_と_WebGL">Canvas と WebGL</h4>
+
+<ul>
+ <li>{{domxref("WebGL API", "WebGL", "", "1")}} の {{domxref("EXT_texture_compression_bptc")}} および {{domxref("EXT_texture_compression_rgtc")}} テクスチャー圧縮拡張を、WebGL1 および WebGL2 のコンテキストに公開しました ({{bug(1507263)}})。</li>
+</ul>
+
+<h4 id="廃止_2">廃止</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/Guide/Events/Mutation_events">Mutation events</a> を、shadow trees で無効化しました ({{bug(1489858)}})。</li>
+ <li>{{domxref("MediaStream")}} の非標準プロパティである <code>currentTime</code> を削除しました ({{bug(1502927)}})。</li>
+ <li>設定項目 <code>dom.webcomponents.shadowdom.enabled</code> および <code>dom.webcomponents.customelements.enabled</code> を削除しました。Shadow DOM および Custom Elements は <code>about:config</code> で無効化できません ({{bug(1503019)}})。</li>
+ <li>非標準の DOM <code>text</code> イベント (ブラウザーのエディター UI に、IME のコンポジション文字列や選択範囲を伝えるために発生します) を削除しました ({{bug(1288640)}})。</li>
+ <li><a href="/ja/docs/Web/API/KeyboardEvent/keyCode#Non-printable_keys_(function_keys)">non-printable keys</a> では {{event("keypress")}} イベントが発生しなくなりました ({{bug(968056)}})。ただし <kbd>Enter</kbd> キーと、<kbd>Shift</kbd> + <kbd>Enter</kbd> および <kbd>Ctrl</kbd> + <kbd>Enter</kbd> の組み合わせは除きます (これらはブラウザー間の互換性のために維持します)。</li>
+</ul>
+
+<h3 id="セキュリティ">セキュリティ</h3>
+
+<ul>
+ <li>CORS の制限が要求ヘッダーに強制されるようになりました ({{bug(1483815)}}。詳しくは <a href="https://github.com/whatwg/fetch/issues/382">whatwg fetch issue 382: CORS-safelisted request headers should be restricted according to RFC 7231</a> をご覧ください)。</li>
+</ul>
+
+<h3 id="Networking" name="Networking">ネットワーク</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="プラグイン">プラグイン</h3>
+
+<p><em>変更なし</em></p>
+
+<h3 id="WebDriver_conformance_(Marionette)" name="WebDriver_conformance_(Marionette)">WebDriver conformance (Marionette)</h3>
+
+<h4 id="API_changes" name="API_changes">API の変更点</h4>
+
+<ul>
+ <li><code>WebDriver:ElementSendKeys</code> が対話性の確認で <code>&lt;input type=file&gt;</code> をより緩やかに扱うようになり、<code>not interactable</code> エラーメッセージを発生させずに要素を非表示にできるようになりました。厳密な対話性の確認を行いたい場合は <code>strictFileInteractability</code> を使用できます ({{bug(1502864)}})。</li>
+</ul>
+
+<h4 id="Bug_fixes" name="Bug_fixes">バグ修正</h4>
+
+<ul>
+ <li>ウィンドウ操作コマンドの <code>WebDriver:FullscreenWindow</code>、<code>WebDriver:MinimizeWindow</code>、<code>WebDriver:MaximizeWindow</code>、<code>WebDriver:SetWindowRect</code> が、より安定的になりました ({{bug(1492499)}})。特殊な状況で無限ハングアップが発生しなくなりましたが、ウィンドウが 5 秒以内に要求した状態に達しなければタイムアウトします ({{bug(1521527)}})。</li>
+ <li><code>WebDriver:ElementClick</code> が、クリックする要素の中心点を正しく計算するようになりました。寸法が 1 ピクセル四方でも対話できます ({{bug(1499360)}})。</li>
+</ul>
+
+<h4 id="Others" name="Others">その他</h4>
+
+<ul>
+ <li><code>unexpected alert open</code> エラーで、より有益なメッセージを提供するようになりました ({{bug(1502268)}})。</li>
+</ul>
+
+<h3 id="その他">その他</h3>
+
+<ul>
+ <li><a href="/ja/docs/Glossary/webp">WebP</a> 画像をサポートしました ({{bug(1294490)}})。
+
+ <ul>
+ <li>また、特定の状況でブラウザ間の互換性を向上するために、WebP の MIMEType (<code>image/webp</code>) を HTML ファイルの {{httpheader("Accept")}} 標準 HTTP 要求ヘッダーに追加しました ({{bug(1507691)}})。</li>
+ </ul>
+ </li>
+ <li>Windows で、AV1 コーデックをデフォルトでサポートしました ({{bug(1452146)}})。</li>
+</ul>
+
+<h2 id="アドオン開発者向けの変更">アドオン開発者向けの変更</h2>
+
+<h3 id="API_の変更">API の変更</h3>
+
+<h4 id="Menus" name="Menus">メニュー</h4>
+
+<h4 id="Tabs" name="Tabs">タブ</h4>
+
+<ul>
+ <li>{{WebExtAPIRef("tabs", "tabs API", "", "1")}} を、タブサクセサーをサポートするように強化しました。タブがサクセサーを持つことができ、サクセサーはタブが閉じられたときにアクティブになるタブの ID です ({{bug(1500479)}}。詳しくは <a href="https://qiita.com/piroor/items/ea7e727735631c45a366">this blog post</a> をご覧ください)。特に、以下の値です:
+
+ <ul>
+ <li>{{WebExtAPIRef("tabs.Tab")}} 型が <code>successorId</code> プロパティを持つようになりました。これは、タブのサクセサーの ID を登録および取得するために使用できます。</li>
+ <li>{{WebExtAPIRef("tabs.onActivated")}} イベントリスナーのコールバックで、新しい引数 <code>previousTabId</code> を使用できます。これは、以前アクティブであったタブがまだ開かれていれば、その ID が入ります。</li>
+ <li>{{WebExtAPIRef("tabs.update()")}} 関数の <code>updateProperties</code> オブジェクトに、新しい省略可能のプロパティ<code>successorTabId</code> を追加しました。ID を更新するために使用できます。</li>
+ <li><code>successorTabId</code> は、{{WebExtAPIRef("tabs.get()")}} や {{WebExtAPIRef("tabs.query()")}} といった関数でも返ります。</li>
+ <li>新たに <code>tabs.moveInSuccession()</code> で、タブサクセサーをまとめて操作できます。</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="Manifest_の変更">Manifest の変更</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Other_2" name="Other_2">その他</h3>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">Webextension themes</a> の <code>headerURL</code>/<code>theme_frame</code> プロパティを、Android 版 Firefox でサポートしました ({{bug(1429488)}})。</li>
+</ul>
+
+<h2 id="あわせて参照">あわせて参照</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/versions/65/">Firefox 65 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="旧バージョン">旧バージョン</h2>
+
+<p>{{Firefox_for_developers(65)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/66/index.html b/files/ja/mozilla/firefox/releases/66/index.html
new file mode 100644
index 0000000000..c7edc1388a
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/66/index.html
@@ -0,0 +1,186 @@
+---
+title: Firefox 66 for developers
+slug: Mozilla/Firefox/Releases/66
+tags:
+ - '66'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/66
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">Firefox 66 は、米国時間 2019 年 3 月 19 日 にリリースされました。このページでは、開発者に影響する Firefox 66 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Web_Console">ウェブコンソール</a> のオートコンプリートのポップアップから、JavaScript の getter を実行できるようになりました ({{bug(1499289)}})。</li>
+ <li><a href="/ja/docs/Tools/Responsive_Design_Mode">レスポンシブデザインモード</a> で動作しなくなっていた、Window の {{domxref("Window.alert()", "alert()")}}、{{domxref("Window.prompt()","prompt()")}}、{{domxref("Window.confirm()","confirm()")}} メソッドが再び動作するようになりました ({{bug(1273997)}})。</li>
+ <li>コンソールの出力を右クリックして "<strong>表示メッセージをクリップボードにエクスポートする</strong>" を選択すると、コンソールの出力をクリップボードにコピーできます。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li><code>file:</code> URL から読み込んだ UTF-8 エンコードされた HTML (およびプレーンテキスト) ファイルについて、<code>&lt;meta charset="utf-8"&gt;</code> または UTF-8 BOM がないものもサポートしました。このようなファイルをサーバーにアップロードする前に、ローカル環境で作業しやすくするためです。サーバーでは、このようなファイルに <code>Content-Type</code> HTTP ヘッダーで <code>charset=utf-8</code> を送信しなければなりません。ローカルファイルで使用する検出方法は、ネットワーク環境の逐次読み込みで問題が発生します ({{bug(1071816)}})。</li>
+</ul>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<ul>
+ <li>{{HTMLElement("input")}} 要素から <code>x-moz-errormessage</code> 属性を削除しました ({{bug(1513890)}})。独自の検証メッセージを実装するには、代わりに {{domxref("Constraint_validation", "Constraint validation 機能", "", "1")}} を使用してください。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li><a href="https://drafts.csswg.org/css-scroll-anchoring/">Scroll anchoring</a> を、デスクトップ版 Firefox に実装しました (モバイル版は未実装です)。{{cssxref("overflow-anchor")}} プロパティを含みます ({{bug(1305957)}})。</li>
+ <li><a href="/ja/docs/Web/CSS/Attribute_selectors">属性セレクター</a> で、大文字・小文字の区別に関する修飾子 <code>s</code> をサポートしました ({{Bug(1512386)}})。</li>
+ <li>いくつかの <a href="/ja/docs/Web/CSS/CSS_Logical_Properties">論理的プロパティ</a> ショートハンドと、フローに関係する border radius プロパティを実装しました:
+ <ul>
+ <li>{{cssxref("padding-block")}} および {{cssxref("padding-inline")}} ({{bug(1519847)}})。</li>
+ <li>{{cssxref("margin-block")}} および {{cssxref("margin-inline")}} ({{bug(1519944)}})。</li>
+ <li>{{cssxref("inset")}}、{{cssxref("inset-block")}}、{{cssxref("inset-inline")}} ({{bug(1520229)}})。</li>
+ <li>{{cssxref("border-block-color")}}、{{cssxref("border-block-style")}}、{{cssxref("border-block-width")}}、{{cssxref("border-inline-color")}}、{{cssxref("border-inline-style")}}、{{cssxref("border-inline-width")}} ({{bug(1520236)}})。</li>
+ <li>{{cssxref("border-block")}}、{{cssxref("border-inline")}} ({{bug(1520396)}})。</li>
+ <li>{{cssxref("border-start-start-radius")}}、{{cssxref("border-start-end-radius")}}、{{cssxref("border-end-start-radius")}}、{{cssxref("border-end-end-radius")}} ({{bug(1520684)}})。</li>
+ </ul>
+ </li>
+ <li>{{cssxref("@media/overflow-inline", "overflow-inline")}} および {{cssxref("@media/overflow-block", "overflow-block")}} メディアクエリーを実装しました ({{Bug(1422235)}})。</li>
+ <li>仕様書で公表された規則に従って、{{cssxref("grid-template-columns")}} および {{cssxref("grid-template-rows")}} のアニメーションを実装しました ({{Bug(1348519)}})。</li>
+ <li>テーブルのセルや列の幅で、パーセンテージを使用した {{cssxref("calc")}} をサポートしました ({{bug(957915)}})。</li>
+ <li><code>min-content</code> および <code>max-content</code> キーワードが、接頭辞なしで使用可能になりました ({{bug(1322780)}})。これらは以下のプロパティに設定できます:
+ <ul>
+ <li>{{cssxref("width")}}</li>
+ <li>{{cssxref("height")}}</li>
+ <li>{{cssxref("flex-basis")}}</li>
+ <li>{{cssxref("min-width")}}</li>
+ <li>{{cssxref("max-width")}}</li>
+ <li>{{cssxref("min-height")}}</li>
+ <li>{{cssxref("max-height")}}</li>
+ <li>{{cssxref("min-block-size")}}</li>
+ <li>{{cssxref("min-inline-size")}}</li>
+ <li>{{cssxref("max-block-size")}}</li>
+ <li>{{cssxref("max-inline-size")}}</li>
+ <li>{{cssxref("block-size")}}</li>
+ <li>{{cssxref("inline-size")}}</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="Removals_2" name="Removals_2">廃止</h4>
+
+<ul>
+ <li><code><a href="/ja/docs/XML_introduction/xml:base">xml:base</a></code> 属性のサポートを廃止しました ({{Bug(903372)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="New_APIschanges" name="New_APIschanges">API の追加と変更</h4>
+
+<ul>
+ <li>Release 版の Firefox 66 を公開した後すみやかに、音声の自動再生がデフォルトでブロックされます ({{bug(1487844)}}。ロールアウトについては {{bug(1535667)}} をご覧ください)。この機能は、すべてのユーザーへ段階的に適用されます。</li>
+</ul>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>{{domxref("HTMLSlotElement.assignedElements()")}} メソッドを実装しました ({{bug(1425685)}})。</li>
+ <li>{{domxref("TextEncoder.encodeInto()")}} メソッドを実装しました ({{bug(1514664)}})。</li>
+</ul>
+
+<h4 id="DOM_events" name="DOM_events">DOM イベント</h4>
+
+<ul>
+ <li>{{domxref("InputEvent.inputType")}} プロパティを実装しました ({{bug(1447239)}})。</li>
+ <li>{{domxref("Window.event")}} および {{domxref("Event.returnValue")}} プロパティ (元は IE の独自機能であり、互換性の理由でほかのブラザーもサポートしました) を、Firefox 66 で再導入しました。それぞれバージョン 63 や 64 で追加した後、互換性の問題で再び削除していました。</li>
+ <li>バージョン 66 より、{{event("keypress")}} イベントオブジェクトの {{domxref("KeyboardEvent.keyCode")}} プロパティが 0 であるとき、値が {{domxref("KeyboardEvent.charCode")}} と同じになります。逆に <code>charCode</code> が 0 であるときは、<code>keyCode</code> と同じ値になります。このミラーリング動作はほかのブラウザーと一致しており、これに関連する互換性の問題のほとんどが解決すると思われます。ただし 一部の JavaScript ライブラリーで、ブラウザー検出によって新たな問題が発生する可能性があります。仕様書の用語では、<em>split model</em> から <em>conflated model</em> に切り替えました (UI Event 仕様書の <a href="https://w3c.github.io/uievents/#determine-keypress-keyCode">How to determine keyCode for keypress events</a> をご覧ください)。</li>
+</ul>
+
+<h4 id="Media_Web_Audio_and_WebRTC" name="Media_Web_Audio_and_WebRTC">メディア、Web Audio、WebRTC</h4>
+
+<ul>
+ <li>新しい <a href="/ja/docs/Web/Media/Formats/Video_codecs#AV1">AV1 動画コーデック</a> を macOS および Windows (Intel プロセッサー用) で、デフォルトで有効にしました。Linux は Firefox 67 でサポートする予定です ({{bug(1521181)}}、{{bug(1452146)}}、{{bug(1534814)}})。</li>
+ <li>{{domxref("MediaDevices")}} の {{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}} メソッド (<code>navigator.mediaDevices.getDisplayMedia()</code> として使用可能) を追加して、仕様書に一致させました。このメソッドは、スクリーンまたはスクリーンの一部を {{domxref("MediaStream")}} として取得して、操作または共有できます ({{bug(1321221)}})。</li>
+ <li>スクリーンやウィンドウの内容を取得するための、Firefox 独自の {{domxref("MediaDevices.getUserMedia", "getUserMedia()")}} に基づくメソッドを最終的に非推奨にする取り組みの一部として、非標準の <code>mediaSource</code> 定数を値 <code>screen</code> および <code>window</code> と同等に扱うようになりました。どちらも、ユーザーが選択するスクリーンやウィンドウのリストを提供します ({{bug(1474376)}})。</li>
+ <li>ローカル出力の {{domxref("RTCRTPStreamStats")}} オブジェクトに {{domxref("RTCRtpStreamStats.qpSum", "qpSum")}} を追加しました。これは、ビデオトラックで送受信するすべてのフレームの量子化パラメーターの合計を表します。この値が高ければ、ストリームはより圧縮されていると考えられます ({{bug(1347070)}})。</li>
+ <li>将来の Firefox で Feature Policy をサポートするための取り組みで、コンテンツに適切なオリジンが存在しない状況では {{domxref("MediaDevices.getUserMedia", "getUserMedia()")}} を使用できなくなりました。例えばサンドボックス化された {{HTMLElement("iframe")}}、ユーザーがアドレスバーに入力した <code>data</code> URL から呼び出した場合です。詳しくは {{SectionOnPage("/ja/docs/Web/API/MediaDevices/getUserMedia", "Security")}} をご覧ください ({{bug(1371741)}})。</li>
+</ul>
+
+<h4 id="Removals_3" name="Removals_3">廃止</h4>
+
+<ul>
+ <li>WebRTC の古い {{domxref("PeerConnection.getStats()")}} メソッドと、これに関連付けられた型を削除しました ({{bug(1328194)}})。</li>
+</ul>
+
+<h3 id="Networking" name="Networking">ネットワーク</h3>
+
+<ul>
+ <li>{{httpheader("Accept")}} ヘッダーの既定値が <code>*/*</code> になりました ({{bug(1417463)}})。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Plugins" name="Plugins">プラグイン</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="WebDriver_conformance_(Marionette)" name="WebDriver_conformance_(Marionette)">WebDriver conformance (Marionette)</h3>
+
+<h4 id="API_changes" name="API_changes">API の変更点</h4>
+
+<ul>
+ <li>新しいブラウジングコンテキストを開く操作をサポートするため <code>WebDriver:NewWindow</code> を追加しました。ウィンドウまたはタブのいずれかを開くことができます ({{bug(1504756)}})。</li>
+ <li>指定した要素が現在のブラウジングコンテキストに含まれていない場合に、<code>WebDriver:SwitchToFrame</code> で <code>no such element</code> エラーが発生するようになりました ({{bug(1517196)}})。</li>
+ <li><code>WebDriver:ExecuteScript</code> および <code>WebDriver:ExecuteAsyncScript</code> が、仕様書に準拠しない <code>scriptTimeout</code> 引数をサポートしないようになりました。代わりに <code>WebDriver:SetTimeout</code> または <code>timeouts</code> 機能を使用してください ({{bug(1510929)}})。
+ <ul>
+ <li>さらに、不定のスクリプトタイムアウトをサポートしました ({{bug(1128997)}})。</li>
+ </ul>
+ </li>
+ <li><code>WebDriver:SetWindowRect</code> が、応答でウィンドウの状態を返さないようになりました ({{bug(1517587)}})。</li>
+</ul>
+
+<h4 id="Bug_fixes" name="Bug_fixes">バグ修正</h4>
+
+<ul>
+ <li><code>WebDriver:TakeScreenshot</code> が、ビューポートの寸法に代わって {{domxref("Document.documentElement")}} の {{domxref("Element.clientWidth")}} および {{domxref("Element.clientHeight")}} プロパティを使用するようになりました ({{bug(1385706)}})。</li>
+ <li>ウィンドウ操作コマンドがプラットフォームをまたいで確かに動作するようにするため、さまざまな修正を行いました ({{bug(1522408)}}, {{bug(1478358)}}, {{bug(1489955)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<h3 id="API_changes_2" name="API_changes_2">API の変更点</h3>
+
+<h4 id="Menus" name="Menus">メニュー</h4>
+
+<ul>
+ <li>{{WebExtAPIRef("menus.ContextType", "type")}} が "bookmark" である拡張機能のメニュー項目が、ブックマークサイドバー (<kbd>Ctrl</kbd> + <kbd>B</kbd>) およびライブラリーウィンドウ (<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>B</kbd>) にも表示されるようになりました ({{bug(1419195)}})。</li>
+</ul>
+
+<h3 id="Manifest_changes" name="Manifest_changes">マニフェストの変更点</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.org/en-US/firefox/66.0/releasenotes/">Firefox 66.0, See All New Features, Updates and Fixes</a></li>
+ <li><a href="https://www.fxsitecompat.com/versions/66/">Firefox 66 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(65)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/67/index.html b/files/ja/mozilla/firefox/releases/67/index.html
new file mode 100644
index 0000000000..3f2eef26cf
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/67/index.html
@@ -0,0 +1,201 @@
+---
+title: Firefox 67 for developers
+slug: Mozilla/Firefox/Releases/67
+tags:
+ - '67'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/67
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">Firefox 67 は、米国時間 2019 年 5 月 21 日 にリリースされました。このページでは、開発者に影響する Firefox 67 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>デバッガーの更新:
+ <ul>
+ <li><a href="/ja/docs/Tools/Debugger/How_to/Set_a_breakpoint">カラムブレークポイント</a> で、デバッガーに一時停止させたい行の特定の箇所 (またはカラム) を選択できます ({{bug(1528417)}})。</li>
+ <li><a href="/ja/docs/Tools/Debugger/Set_a_log_point">ログポイント</a> で、コードの実行を一時停止したりコードを変更することなく、実行中に特定の情報をコンソールに記録できます。</li>
+ <li><a href="/ja/docs/Tools/Debugger/Using_the_Debugger_map_scopes_feature">マップスコープ機能</a> で、元のソースの編集を表示できます。</li>
+ <li>デバッガーで、<a href="/ja/docs/Tools/Debugger/Debug_worker_threads">worker</a> のスレッドを直接デバッグできます。</li>
+ </ul>
+ </li>
+ <li><a href="/ja/docs/Tools/Web_Console">ウェブコンソール</a> の更新:
+ <ul>
+ <li>キーボードを使用して、コンソールの詳細情報を移動できます ({{bug(1424159)}})。</li>
+ <li>macOS では Cmd + K で、コンソールの内容を消去するようになりました ({{bug(1532939)}})。</li>
+ <li>ユーザーがコンソールの出力を消去するとき、エラーメッセージのキャッシュも消去するようになりました ({{bug(717611)}})。</li>
+ <li>import を使用して、既存のモジュールを現在のページにインポートできるようになりました ({{bug(1517546)}})。</li>
+ <li>ユーザーが <strong>リンクの場所をコピー</strong> できるコマンドを、コンテキストメニューに追加しました ({{bug(1457111)}})。</li>
+ <li>コンソール内のリンクをクリックしたときの動作が、content ウィンドウの場合と同じになりました ({{bug(1466040)}})。</li>
+ <li>コンソールでコードファイルへのリンクをクリックすると、デバッガーが把握しているファイルであればデバッガーに移動するようになりました ({{bug(1447244)}})。</li>
+ <li>ユーザーがコンソールの内容をフィルタリングしたとき、フィルターをクリアするアイコンをテキストボックスに表示するようになりました ({{bug(1525821)}})。</li>
+ </ul>
+ </li>
+ <li><a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a> の改良:
+ <ul>
+ <li>ネットワークモニターの <a href="/ja/docs/Tools/Network_Monitor/request_details#Headers">ヘッダー</a> パネルで、既知のトラッカーに関するリソースの通知を表示するようになりました ({{bug(1485416)}})。</li>
+ <li>ネットワークモニターの <a href="/ja/docs/Tools/Network_Monitor/request_list#Network_request_columns">要求の列</a> で、表示する列や列の並べ替えを制御できます。このコンテキストメニューに、リストの並べ替えをリセットするコマンドを追加しました ({{bug(1454962)}})。</li>
+ <li>ネットワークモニターで、作業しやすいように <a href="/ja/docs/Tools/Network_Monitor/request_list#Network_request_columns">列の幅を変更する</a> ことが可能になりました ({{bug(1358414)}})。</li>
+ </ul>
+ </li>
+</ul>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<ul>
+ <li>以下の開発ツールのパネルを削除しました (詳しくは <a href="/ja/docs/Tools/Deprecated_tools">Deprecated tools</a> をご覧ください):
+
+ <ul>
+ <li>Canvas デバッガー ({{bug(1403938)}})</li>
+ <li>シェーダーエディター ({{bug(1342237)}})</li>
+ <li>WebAudio エディター({{bug(1403944)}})</li>
+ </ul>
+ </li>
+ <li>以下の開発ツールのパネルを非推奨にしました (詳しくは <a href="/ja/docs/Tools/Deprecated_tools">Deprecated tools</a> をご覧ください):
+ <ul>
+ <li>WebIDE ({{bug(1539462)}})</li>
+ <li>Connect... ページ ({{bug(1539462)}})</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/HTML/Attributes/autocomplete">autocomplete</a>="new-password"</code> を設定した {{htmlelement("input")}} 要素は、過去に保存したパスワードのオートコンプリートを行わないようになりました ({{bug(1119063)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("revert")}} キーワードを実装しました ({{bug(1215878)}})。</li>
+ <li>{{cssxref("word-break")}} プロパティの値 <code>break-word</code> をサポートしました ({{bug(1296042)}})。</li>
+ <li><code><a href="/ja/docs/Web/CSS/@media/prefers-color-scheme">prefers-color-scheme</a></code> メディア特性をサポートしました ({{bug(1494034)}})。</li>
+ <li>巨大なカーソルを使用するマルウェアの可能性を軽減するため、サイズが 32px より大きい独自 {{cssxref("cursor")}} は許可しません ({{bug(1445844)}})。</li>
+</ul>
+
+<h4 id="Removals_2" name="Removals_2">廃止</h4>
+
+<ul>
+ <li>独自仕様である {{cssxref("-moz-binding")}} プロパティを、chrome およびユーザーエージェントのスタイルシートしか使用できないように制限しました ({{bug(1523712)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("String.prototype.matchAll")}} を実装して、デフォルトで有効にしました ({{bug(1435829)}}、{{bug(1531830)}})。</li>
+ <li>動的なモジュールの {{jsxref("Statements/import", "import()", "#Dynamic_Imports")}} の提案のサポートを、デフォルトで有効にしました ({{bug(1517546)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar#Hashbang_comments">シバン構文</a> の提案を実装しました ({{bug(1519097)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>{{domxref("Response.statusText")}} の既定値が <code>""</code> になりました ({{bug(1508996)}})。</li>
+ <li>{{domxref("Document.requestStorageAccess")}} で、拒否される呼び出しに対するユーザーの行動も、許可される場合と同様に保存するようになりました ({{bug(1522912)}})。</li>
+</ul>
+
+<h4 id="DOM_events" name="DOM_events">DOM イベント</h4>
+
+<ul>
+ <li>CSS トランジション ({{bug(1530239)}}) およびアニメーション ({{bug(1531605)}}) のイベントが、無効な要素 (例えば form) でも発生するようになりました。</li>
+ <li>{{domxref("InputEvent.data")}} および {{domxref("InputEvent.dataTransfer")}} を実装しました ({{bug("998941")}})。</li>
+ <li>{{domxref("InputEvent.inputType")}} の値 <code>insertFromPasteAsQuotation</code> をサポートしました ({{bug(1532527)}})。</li>
+</ul>
+
+<h4 id="WorkersService_workers" name="WorkersService_workers">Workers/Service workers</h4>
+
+<ul>
+ <li>{{domxref("WorkerGlobalScope.importScripts()")}} でインポートしたスクリプトで、厳密な MIME type の確認を強制するようになりました ({{bug(1514680)}})。</li>
+</ul>
+
+<h4 id="Media_Web_Audio_and_WebRTC" name="Media_Web_Audio_and_WebRTC">メディア、Web Audio、WebRTC</h4>
+
+<ul>
+ <li>The <a href="/ja/docs/Web/Media/Formats/Video_codecs#AV1">AV1 動画コーデック</a> を Linux でサポートしました。</li>
+ <li><a href="https://code.videolan.org/videolan/dav1d">dav1d</a> が <a href="https://aomediacodec.github.io/av1-spec/av1-spec.pdf">AV1</a> の既定のメディアデコーダーになりました ({{bug(1533742)}} および {{bug(1535038)}} をご覧ください)。</li>
+ <li>新しいトラックを追加するためストリームを指定せずに {{domxref("RTCPeerConnection.addTrack()")}} を呼び出したとき、予期するとおりに動作するようになりました。ストリームがないトラックをコネクションに追加します。それぞれのピアは、トラックとストリームの関係を管理する責任を持ちます ({{bug(1231414)}})。</li>
+ <li>{{domxref("MediaDeviceInfo.groupId")}} プロパティを実装しました ({{bug(1213453)}})。これは Firefox 39 から存在していましたが、実際は関連するデバイスを同じグループ ID に集めていませんでした。</li>
+ <li>{{domxref("RTCIceCandidate.usernameFragment")}} プロパティを実装しました ({{bug(1490658)}})。</li>
+ <li>{{domxref("VTTCue")}} オブジェクトの {{domxref("VTTCue.positionAlign", "positionAlign")}} プロパティで <code>center</code> ではなく <code>auto</code> を既定値として使用するように、<a href="/ja/docs/Web/API/WebVTT_API">WebVTT</a> を修正しました。キューボックスの配置が、内部のテキストの配置に合うようになります ({{bug(1528420)}})。</li>
+</ul>
+
+<h4 id="Canvas_and_WebGL" name="Canvas_and_WebGL">Canvas と WebGL</h4>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/API/EXT_float_blend">EXT_float_blend</a></code> WebGL 拡張をデフォルトで有効にしました ({{bug(1535808)}})。</li>
+</ul>
+
+<h4 id="Removals_3" name="Removals_3">廃止</h4>
+
+<ul>
+ <li>非推奨の <code>ShadowRoot.getElementsByTagName</code>、<code>ShadowRoot.getElementsByTagNameNS</code>、<code>ShadowRoot.getElementsByClassName</code> プロパティ (Shadow DOM v0 の一部) を削除しました ({{bug(1535438)}})。</li>
+ <li>モバイル端末を検出するためにタッチ機能のサポート状況を使用するウェブサイトとの互換性を向上するため、デスクトップ版で <code><a href="/ja/docs/Web/API/Document/createEvent">document.createEvent("TouchEvent")</a></code>、{{domxref("document.createTouch()")}}、{{domxref("document.createTouchList()")}}、および <code>ontouch*</code> イベントハンドラープロパティを無効にしました ({{bug(1412485)}})。このような場合は、タッチスクリーンを持つラップトップ PC でウェブサイトが誤った、または予期せぬ動作をしていました。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Notifications_API">Notifications</a> が <a href="/ja/docs/Web/Security/Secure_Contexts">安全なコンテキスト</a> に限り使用可能になりました ({{bug(1429432)}})。</li>
+ <li>{{htmlelement("iframe")}} で、外部プロトコル URL の読み込みをブロックするようになりました ({{bug(1527882)}})。</li>
+</ul>
+
+<h3 id="WebDriver_conformance_(Marionette)" name="WebDriver_conformance_(Marionette)">WebDriver conformance (Marionette)</h3>
+
+<h4 id="API_changes" name="API_changes">API の変更点</h4>
+
+<ul>
+ <li><code>WebDriver:SendAlertText</code> が <a href="https://w3c.github.io/webdriver/">WebDriver 仕様書</a> に適合しました ({{bug(1502360)}})。</li>
+</ul>
+
+<h4 id="Bug_fixes" name="Bug_fixes">バグ修正</h4>
+
+<ul>
+ <li>プラットフォーム間の <code>focus</code> 関係の不一致を理由として、<code>WebDriver:NewWindow</code> がタイムアウトしないようになりました ({{bug(1523234)}})。</li>
+</ul>
+
+<h4 id="Others" name="Others">その他</h4>
+
+<ul>
+ <li><code>WebDriver:ExecuteScript</code> および <code>WebDriver:ExecuteAsyncScript</code> が内部で <code>Promises</code> を使用するようになりました ({{bug(1398095)}})。</li>
+ <li><code>WebDriver:NewSession</code> が、機能オブジェクトの一部として Firefox の <code>BuildID</code> 文字列を返すようになりました ({{bug(1525829)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<h3 id="API_changes_2" name="API_changes_2">API の変更点</h3>
+
+<ul>
+ <li><code>{{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}}</code> の値を変更するために <code>proxy.settings.set()</code> メソッドを使用すると、拡張機能がユーザーからプライベートウィンドウへのアクセスを許可されている場合を除いて、例外が発生するようになりました ({{bug(1525447)}})。</li>
+</ul>
+
+<h3 id="Manifest_changes" name="Manifest_changes">マニフェストの変更点</h3>
+
+<ul>
+ <li>プライベートブラウジングのウィンドウやタブにおける拡張機能の動作を定義する、<a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/incognito">incognito</a> マニフェストキーを追加しました ({{bug(1511636)}})。</li>
+ <li><code>toolbar_field_highlight</code> で、URL バーで現在選択されている文字列を示すために使用する背景色を設定できます ({{bug(1450114)}})。</li>
+ <li><code>toolbar_field_highlight_text</code> で、URL バーで現在選択されている文字列を示すために使用する文字色を設定できます ({{bug(1450114)}})。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.org/en-US/firefox/67.0/releasenotes/">Firefox 67.0 Release Notes</a></li>
+ <li><a href="https://www.fxsitecompat.com/versions/67/">Firefox 67 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(66)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/68/index.html b/files/ja/mozilla/firefox/releases/68/index.html
new file mode 100644
index 0000000000..5d4b722dcc
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/68/index.html
@@ -0,0 +1,245 @@
+---
+title: Firefox 68 for developers
+slug: Mozilla/Firefox/Releases/68
+tags:
+ - '68'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/68
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">Firefox 68 は、米国時間 2019 年 7 月 9 日 にリリースされました。このページでは、開発者に影響する Firefox 68 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<h4 id="Browserweb_console" name="Browserweb_console">ブラウザー/ウェブコンソール</h4>
+
+<ul>
+ <li>ルールで使用した DOM 要素のノードリストなど、<a href="/ja/docs/Tools/Web_Console/Console_messages#CSS">CSS 警告に関するより多くの情報</a> をウェブコンソールで表示するようになりました ({{bug(1093953)}})。</li>
+ <li>正規表現を使用してウェブコンソールの内容をフィルタリングできるようになりました ({{bug(1441079)}})。</li>
+ <li>ブラウザーコンソールの "<em>コンテンツメッセージを表示</em>" のチェックボックスで、コンテンツプロセスのメッセージを表示/非表示できるようになりました ({{bug(1260877)}})。</li>
+</ul>
+
+<h4 id="JavaScript_debugger" name="JavaScript_debugger">JavaScript デバッガー</h4>
+
+<ul>
+ <li><kbd>Shift</kbd> + <kbd>Ctrl</kbd> + <kbd>F</kbd> (Windows や Linux) または <kbd>Shift</kbd> + <kbd>Cmd</kbd> + <kbd>F</kbd> (macOS) を押下すると、デバッガーで現在のプロジェクトのすべてのファイルから <a href="/ja/docs/Tools/Debugger/How_to/Search#Searching_in_all_files">検索</a> できるようになりました ({{bug(1320325)}})。</li>
+</ul>
+
+<h4 id="Network_monitor" name="Network_monitor">ネットワークモニター</h4>
+
+<ul>
+ <li>ネットワークモニターの <a href="/ja/docs/Tools/Network_Monitor/request_list#Filtering_requests">要求リスト</a> で、特定の URL をブロックできるようになりました ({{bug(1151368)}})。</li>
+ <li>コンテキストメニューの <a href="/ja/docs/Tools/Network_Monitor/request_list#Context_menu">再送信</a> コマンドを使用して、メソッド、URL、パラメーター、ヘッダーを編集せずにネットワーク要求を再送信できます ({{bug(1422014)}})。</li>
+ <li>ネットワークモニターの <a href="/ja/docs/Tools/Network_Monitor/request_details#Headers">ヘッダー</a> タブのコンテキストメニューで、すべてあるいは一部のヘッダー情報を JSON 形式でクリップボードにコピーできるようになりました ({{bug(1442249)}})。</li>
+</ul>
+
+<h4 id="Page_inspector" name="Page_inspector">インスペクター</h4>
+
+<ul>
+ <li>インスペクターの <a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Examine_CSS_rules">ルールパネル</a> に、print メディアクエリーの表示を切り替えるボタンを追加しました ({{bug(1534984)}})。</li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Edit_fonts">フォントパネル</a> に、<code>letter-spacing</code> を変更するスライダーを追加しました ({{bug(1536237)}})。</li>
+ <li>あるスタイルがなぜ適用されないかをわかりやすくするため、値が無効であるルールや未サポートの CSS プロパティの隣に警告アイコンを表示するようになりました ({{bug(1306054)}})。</li>
+</ul>
+
+<h4 id="Storage_inspector" name="Storage_inspector">ストレージインスペクター</h4>
+
+<ul>
+ <li>ストレージインスペクターで項目を選択して Back Space キーを押下すると、<a href="/ja/docs/Tools/Storage_Inspector#Local_storage_Session_storage">ローカルストレージやセッションストレージを削除</a> できるようになりました ({{bug(1522893)}})。</li>
+</ul>
+
+<h4 id="Other" name="Other">その他</h4>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Accessibility_inspector">アクセシビリティインスペクター</a> に<em>問題のチェック</em>機能を追加しました。ウェブページでアクセシビリティの問題を明らかにする検査ツールが含まれています。まず使用できるツールは<em>コントラスト</em>で、色のコントラストの問題を明らかにします。</li>
+ <li>内部拡張機能 (システムアドオンや非表示の拡張機能) を <a href="/ja/docs/Tools/about:debugging">about:debugging</a> で表示するかを制御する設定項目を、<code>devtools.aboutdebugging.showSystemAddons</code> から <code>devtools.aboutdebugging.showHiddenAddons</code> に変更しました ({{bug(1544372)}})。</li>
+ <li><a href="/ja/docs/Tools/Responsive_Design_Mode">レスポンシブデザインモード</a> を再設計しました。<em>端末設定</em>ダイアログ (デバイス選択メニュー &gt; <em>リストを編集...</em>) がより直感的でシンプルになりました ({{bug(1487857)}})。</li>
+</ul>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<ul>
+ <li><a href="/ja/docs/Tools/about:debugging">about:debugging</a> ページから "アドオンのデバッグを有効化" のチェックボックスを削除しました ({{bug(1544813)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>テキストトラックがメディア要素に含まれている場合に、{{domxref("TextTrack")}} 自体に加えて {{HTMLElement("track")}} 要素 ({{domxref("HTMLTrackElement")}} で表される) が {{domxref("HTMLTrackElement.cuechange_event", "cuechange")}} イベントを受け取るようになりました ({{bug(1548731)}})。</li>
+ <li>動作が異なりますが、{{htmlelement("link")}} 要素で <code>disabled</code> 属性を再びサポートしました。<code>rel="stylesheet"</code> を持つ <code>&lt;link&gt;</code> 要素で <code>disabled</code> を設定すると、ページを読み込むときに参照先のスタイルシートが読み込まれなくなります。<code>disabled</code> 属性を <code>false</code> に設定するか削除すると、必要に応じて読み込まれます ({{bug(1281135)}})。</li>
+</ul>
+
+<h4 id="Removals_2" name="Removals_2">廃止</h4>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/HTML/Element/meta">&lt;meta http-equiv="set-cookie"&gt;</a></code> のサポートを廃止しました ({{bug(1457503)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/CSS/CSS_Scroll_Snap">CSS Scroll Snapping</a> を、最新バージョンの仕様書に更新しました ({{bug(1312163)}}) および ({{bug(1544136)}})。変更点は以下のとおりです:
+
+ <ul>
+ <li><code>scroll-padding</code> 関係のプロパティ ({{bug(1373832)}})</li>
+ <li><code>scroll-margin</code> 関係のプロパティ ({{bug(1373833)}})</li>
+ <li>{{CSSxRef("scroll-snap-align")}} ({{bug(1373835)}})</li>
+ </ul>
+ </li>
+ <li>ほかのブラウザーとの互換性のため、{{CSSxRef("-webkit-line-clamp")}} プロパティを実装しました ({{bug(866102)}})。</li>
+ <li>{{CSSxRef("::marker")}} 疑似要素 ({{bug(205202)}}) と、::marker のアニメーション ({{bug(1538618)}}) をサポートしました。</li>
+ <li>{{CSSxRef("currentColor")}} を計算値に変更しました ({{cssxref("color")}} プロパティを除く) ({{bug(760345)}})。</li>
+ <li>長さの単位 'ch' を、仕様書に合うよう修正しました ('0' のグリフがない場合は高さにフォールバックする) ({{bug(282126)}})。</li>
+ <li>{{CSSxRef("counter-set")}} プロパティを実装しました ({{bug(1518201)}})。</li>
+ <li>内蔵の 'list-item' カウンターを使用したリストの番号付けを実装して、番号付けの不具合を修正しました ({{bug(288704)}})。</li>
+ <li><code><a href="/ja/docs/Web/CSS/::part">::part()</a></code> にセレクターのマッチングとパースを実装しました ({{bug(1545430)}}) および ({{bug(1545425)}})。</li>
+ <li>{{SVGElement("mask")}}、{{SVGElement("marker")}}、{{SVGElement("pattern")}}、{{SVGElement("clipPath")}} など、間接的に描画されるもので <a href="/ja/docs/Web/CSS/CSS_Transforms">CSS Transforms</a> をサポートしました ({{bug(1323962)}})。</li>
+ <li>
+ <p>互換性の理由でさまざまなグラデーションプロパティ ({{cssxref("linear-gradient")}}、{{cssxref("radial-gradient")}}、{{cssxref("repeating-radial-gradient")}}) の接頭辞がついたものを使用可能に維持していますが、接頭辞がないものにより似た形で扱うように処理を変更しました。これは、既存のスタイルの一部が正しく動作しなくなることを意味します。</p>
+
+ <p>特に、角度と位置の両方を持つ複雑な構文は動作しません。また <code>&lt;side-or-corner&gt;</code> の <code>to</code> キーワードは、接頭辞があるグラデーションプロパティで必須ではありません。広くサポートされているため、接頭辞がない標準のグラデーションプロパティを使用することが推奨されます ({{bug(1547939)}})。</p>
+ </li>
+</ul>
+
+<h4 id="Removals_3" name="Removals_3">廃止</h4>
+
+<ul>
+ <li>{{CSSxRef("scroll-snap-coordinate")}}、{{CSSxRef("scroll-snap-destination")}}、{{CSSxRef("scroll-snap-type-x")}}、{{CSSxRef("scroll-snap-type-y")}} を削除しました。</li>
+ <li>{{CSSxRef("scroll-snap-type")}} プロパティがロングハンドプロパティになりました。<code>scroll-snap-type:mandatory</code> のような、以前のショートハンド構文は動作しません。<a href="https://www.fxsitecompat.com/docs/2019/legacy-css-scroll-snap-syntax-support-has-been-dropped/">Firefox サイト互換性情報</a> の記事をご覧ください。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("BigInt")}} プリミティブをデフォルトで有効にしました ({{bug(1527902)}})。</li>
+ <li>String のジェネリックメソッドを削除しました ({{bug(1222552)}})。詳しくは <a href="/ja/docs/Web/JavaScript/Reference/Errors/Deprecated_String_generics">非推奨に関する警告</a> をご覧ください。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="CSS_Object_Model_(CSSOM)" name="CSS_Object_Model_(CSSOM)">CSS Object Model (CSSOM)</h4>
+
+<ul>
+ <li>時代遅れの {{domxref("CSSStyleSheet.rules", "rules")}} プロパティ、{{domxref("CSSStyleSheet.addRule", "addRule()")}} メソッド、{{domxref("CSSStyleSheet.removeRule", "removeRule()")}} メソッドを {{domxref("CSSStyleSheet")}} インターフェイスに追加しました。これらは Internet Explorer 9 で導入されて完全には根絶されておらず、いまだに使用しているわずかなサイトの互換性を向上するために追加しました ({{bug(1545823)}})。</li>
+</ul>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Visual_Viewport_API">Visual Viewport API</a> が Android 版でデフォルトで有効になりました ({{bug(1512813)}})。デスクトップ版 Firefox にこの API を追加する作業は {{bug(1551302)}} で追跡しています。</li>
+ <li>{{domxref("Window")}} の <code><a href="/ja/docs/Web/API/Window/open#noreferrer">noreferrer</a></code> 機能をサポートしました。これを指定するとホスト名、IP アドレス、URL、その他のホスト端末を識別する情報を共有せずに、新しいウィンドウのコンテンツを読み込みます ({{bug(1527287)}})。</li>
+ <li><code>HTMLImageElement</code> の {{domxref("HTMLImageElement.decode", "decode()")}} メソッドを実装しました。これは画像を、DOM に追加する前に読み込みおよびデコードするために使用できます ({{bug(1501794)}})。</li>
+ <li>{{domxref("XMLHttpRequest")}} を、{{domxref("XMLHttpRequest.responseType", "responseType")}} で非標準の値 <code>moz-chunked-arraybuffer</code> を受け入れないように更新しました。この値を使用しているコードは、<a href="/ja/docs/Web/API/Streams_API/Using_readable_streams#Consuming_a_fetch_as_a_stream">Fetch API をストリームとして使用する</a> ように更新してください ({{bug(1120171)}})。</li>
+ <li><code>XMLHttpRequest</code> で {{domxref("Window.unload_event", "unload")}}、{{domxref("Window.beforeunload_event", "beforeunload")}}、{{domxref("Window.pagehide_event", "pagehide")}} イベントを処理しているときに同期リクエストを行うと、コンソールに警告を出力するようになりました ({{bug(980902)}})。</li>
+ <li>{{domxref("Document.cookie", "cookie")}} プロパティを {{domxref("HTMLDocument")}} インターフェイスから {{domxref("Document")}} インターフェイスへ移動しました。{{Glossary("HTML")}} 以外の文書でも Cookie を使用できます ({{bug(144795)}})。</li>
+ <li>{{domxref("HTMLElement.focus()")}} および {{domxref("SVGElement.focus()")}} メソッドで、新たにフォーカスを得た要素が表示されるようにブラウザーがスクロールすることをブロックするかを指定する論理値の <code>preventScroll</code> オプションをもつ、省略可能なオブジェクトを受け入れるようになりました ({{bug(1374045)}})。</li>
+</ul>
+
+<h4 id="DOM_events" name="DOM_events">DOM イベント</h4>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Firefox_for_Android">Android 版 Firefox</a> が、最初のフレームが描画された後まで {{domxref("Window.resize_event", "resize")}} イベントを誤って送信する不具合を修正しました。このイベントが発生しないと想定するサイトとのウェブ互換性が向上します ({{bug(1528052)}})。</li>
+ <li>マウスの第 1 ボタン以外のボタンのイベントが、より仕様書に近い形で発生するようになりました。第 1 ボタン以外のボタンをクリックしても {{domxref("Element.click_event", "click")}} イベントが発生しなくなり、代わりに {{domxref("Element.auxclick_event", "auxclick")}} を使用します。また、{{domxref("Element.dblclick_event", "dblclick")}} は第 1 ボタンだけで発生します ({{bug(1379466)}})。</li>
+ <li>独自仕様の {{domxref("MouseEvent.mozPressure")}} プロパティが非推奨になり、コンソールへ警告を表示するようになりました ({{bug(1165211)}})。</li>
+</ul>
+
+<h4 id="Media_Web_Audio_and_WebRTC" name="Media_Web_Audio_and_WebRTC">メディア、Web Audio、WebRTC</h4>
+
+<ul>
+ <li>Google Play ストアの規約変更により Android 版 Firefox 68 から、WebRTC 接続で AVC/H.264 動画を扱っていた OpenH264 コーデックをダウンロードおよびインストールすことができなくなりました。このため Android デバイスに新規インストールした Firefox は、WebRTC 接続で AVC をサポートしません。すでにコーデックをダウンロードしている旧バージョンの Firefox を更新した場合は、引き続き動作します。これは、ほかのプラットフォームには<em>影響がありません</em>。詳しくは <a href="https://support.mozilla.org/en-US/kb/firefox-android-openh264">SUMO の記事</a> または {{bug(1548679)}} をご覧ください。</li>
+ <li>{{domxref("RTCPeerConnection.icecandidate", "icecandidate")}} イベントハンドラーに <code>null</code> 候補が渡されたことを認識するように、WebRTC を更新しました。後続の候補がないことを示しており、これが発生するとICE の収集 ({{domxref("RTCPeerConnection.iceGatheringState", "iceGatheringState")}}) が <code>complete</code> 状態になります ({{bug(1318167)}})。</li>
+ <li>{{domxref("RTCRtpReceiver")}} の {{domxref("RTCRtpReceiver.getContributingSources", "getContributingSources()")}} および {{domxref("RTCRtpReceiver.getSynchronizationSources", "getSynchronizationSources()")}} メソッドで動画トラックをサポートしました。以前は音声のみ動作していました ({{bug(1534466)}})。</li>
+ <li>Web Audio API の {{domxref("MediaStreamTrackAudioSourceNode")}} インターフェイスと {{domxref("AudioContext.createMediaStreamTrackSource()")}} メソッドをサポートしました ({{bug(1324548)}})。</li>
+ <li>{{domxref("RTCDataChannel.negotiated")}} を実装しました ({{bug(1529695)}})。</li>
+ <li>ストリームの "最初の音声トラック" の ID が辞書順で最初に来るトラックであると定義する現行の仕様書に準拠するよう、{{domxref("MediaStreamAudioSourceNode.MediaStreamAudioSourceNode", "MediaStreamAudioSourceNode()")}} コンストラクターを更新しました ({{bug(1324548)}})。</li>
+ <li>
+ <p>{{domxref("MediaDevices.getUserMedia", "getUserMedia()")}} は安全でないコンテキストから使用できなくなりました。使用を試みると <code>NotAllowedError</code> 例外が発生します。安全なコンテキストは HTTPS を使用して読み込むもの、<code>file:///</code> スキームを使用して示すもの、<code>localhost</code> から読み込むものです。今のところ、必要であれば設定項目 <code>media.getusermedia.insecure.enabled</code> を <code>true</code> に設定すると、<code>getUserMedia()</code> を安全でないコンテキストから呼び出すことを再有効化できます ({{bug(1335740)}})。</p>
+
+ <div class="blockIndicator note">
+ <p><strong>注記:</strong> 将来、Firefox は {{domxref("navigator.mediaDevices")}} プロパティも安全でないコンテキストで廃止して、{{domxref("MediaDevices")}} API へのアクセスを完全に遮断する予定です。<strong>これは Nightly ビルドですでに実施しています。</strong></p>
+ </div>
+ </li>
+</ul>
+
+<h4 id="Removals_4" name="Removals_4">廃止</h4>
+
+<ul>
+ <li>非標準の {{DOMxRef("XMLDocument.load()")}} メソッドを削除しました ({{bug(332175)}})。</li>
+ <li>非標準の {{DOMxRef("XMLDocument.async")}} プロパティを削除しました ({{bug(1328138)}})。</li>
+ <li>{{domxref("RTCIceCredentialType")}} の値 <code>token</code> を削除しました ({{bug(1529595)}})。</li>
+</ul>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/HTTP">HTTP</a> の {{HTTPHeader("Clear-Site-Data")}} ヘッダーで <code>executionContexts</code> ディレクティブのサポートを廃止しました。これは、ナビゲーションプロセスのさまざまな時点でさまざまな種類のデータの間の相互接続における相互作用の問題や、仕様書の設計の問題のために削除しました。この理由でディレクティブを仕様書から削除することが <a href="https://github.com/w3c/webappsec-clear-site-data/issues/59">提案されています</a> ({{bug(1548034)}})。</li>
+</ul>
+
+<h4 id="Removals_5" name="Removals_5">廃止</h4>
+
+<ul>
+ <li>標準化の状況に懸念があるため、{{HTTPHeader("Content-Security-Policy")}} の <code>require-sri-for</code> ディレクティブのサポートを廃止しました。以前は設定変更により使用できており、既定値は無効でした ({{bug(1386214)}})。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<ul>
+ <li><a href="https://www.mozilla.org/en-US/security/advisories/mfsa2019-21/#CVE-2019-11730">CVE-2019-11730: Same-origin policy treats all files in a directory as having the same-origin</a> のため、同じディレクトリーにあるファイルを別々のオリジンとして扱うように Firefox を変更しました。これは、file:// URL で読み込んだドキュメントの動作でいくつかの副作用が発生します (調査について {{bug("file-fallout")}} をご覧ください)。例えば、workers を読み込むことができません。</li>
+</ul>
+
+<h3 id="WebDriver_conformance_(Marionette)" name="WebDriver_conformance_(Marionette)">WebDriver conformance (Marionette)</h3>
+
+<h4 id="Bug_fixes" name="Bug_fixes">バグ修正</h4>
+
+<ul>
+ <li><code>WebDriver:SwitchToWindow</code> が別のウィンドウを選択すると、元のウィンドウに戻るまで <code>focus</code> および <code>activate</code> イベントを待機するようになりました ({{bug(1335085)}})。</li>
+ <li><code>TypeError: this.tabModal is null</code> の不具合を修正しました。これはモーダルダイアログやユーザープロンプトと対話しているときに発生することがありました ({{bug(1538782)}})。</li>
+</ul>
+
+<h4 id="Other_2" name="Other_2">その他</h4>
+
+<ul>
+ <li>トップレベルのブラウザーコンテキストが突然消えてしまうことを防ぐため、メモリーが少ない状況でバックグラウンドのタブを強制的にアンロードする機能を無効化しました ({{bug(1553748)}})。</li>
+ <li>新しいタブを開いた後にウェブサイトへ移動するときに HTTP 認証ダイアログが表示されない、特権付きコンテンツプロセスを無効化しました ({{bug(1558763)}})。</li>
+</ul>
+
+<h3 id="Plugins" name="Plugins">プラグイン</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<h3 id="API_changes" name="API_changes">API の変更点</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/proxy/register">proxy.register()</a></code> および <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/proxy/unregister">proxy.unregister()</a></code> 関数が非推奨になり、Firefox 71 で削除される予定です ({{bug(1545811)}})。</li>
+ <li><code>boolean</code> 型の <code>incognito</code> フラグを <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/proxy/RequestDetails">proxy.RequestDetails</a> オブジェクトに追加しました。<code>true</code> を設定すると、プライベートブラウジングの要求であったことを示します ({{bug(1545163)}})。</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/RequestFilter">webRequest.RequestFilter</a> が incognito パラメーターを持てるようになりました。これを与えると、incognito の状態 (<code>true</code> または <code>false</code>) に合致しない要求を除去できます ({{bug(1548177)}})。</li>
+ <li>現在のコンテキストにおける Cookie のストア ID を表す、<code>string</code> 型の <code>cookieStoreId</code> を <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/proxy/RequestDetails">proxy.RequestDetails</a> オブジェクトに追加しました ({{bug(1545420)}})。</li>
+ <li>アドオンがブックマークフォルダーをルートフォルダーへ追加しようとしたときのエラーメッセージが、より直感的になりました ({{bug(1512171)}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/duplicate">browser.tabs.duplicate()</a></code> が返す promise がタブが完全に読み込まれる前に、直ちに解決するようになりました ({{bug(1394376)}})。</li>
+ <li>chrome.storage.managed をサポートして、拡張機能の設定をエンタープライズポリシーで設定できるようになりました ({{bug(1230802)}})。</li>
+</ul>
+
+<h3 id="Manifest_changes" name="Manifest_changes">マニフェストの変更点</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.mozilla.org/firefox/68.0/releasenotes/">Firefox 68.0 リリースノート</a></li>
+ <li><a href="https://www.fxsitecompat.com/versions/68/">Firefox 68 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(67)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/69/index.html b/files/ja/mozilla/firefox/releases/69/index.html
new file mode 100644
index 0000000000..df41f8f3c3
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/69/index.html
@@ -0,0 +1,180 @@
+---
+title: Firefox 69 for developers
+slug: Mozilla/Firefox/Releases/69
+tags:
+ - '69'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/69
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">Firefox 69 は、米国時間 2019 年 9 月 3 日 にリリースされました。このページでは、開発者に影響する Firefox 69 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<h4 id="Debugger" name="Debugger">Debugger</h4>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Debugger/Set_event_listener_breakpoints">イベントリスナーブレークポイント</a> で、ブラウザーのイベントに対してどのコードを実行したかを分析できます。<code>click</code> や <code>keydown</code> など特定の型、あるいはすべてのマウス入力イベントのようにイベントのカテゴリー全体を選択できます ({{bug(1526082)}})。</li>
+ <li>デバッガーの <a href="/ja/docs/Tools/Debugger/UI_Tour#Source_list_pane">ソースリストペイン</a> に表示しているスクリプトを、コンテキストメニューの <em>ファイルをダウンロード</em> で保存できるようになりました ({{bug(888161)}})。</li>
+ <li>デバッガーのソースリストペインで、拡張機能が UUID に代わって拡張機能の名前で表示されるようになりました ({{bug(1486416)}})。デバッグしたい拡張機能のコードを見つけやすくなります。</li>
+ <li>スクリプトの読み込みを遅延させることで、デバッガーの起動がかなり早くなりました ({{bug(1527488)}})。</li>
+</ul>
+
+<h4 id="Console" name="Console">コンソール</h4>
+
+<ul>
+ <li>リソースやストレージへのアクセスが何度もブロックされることによるノイズを減らすため、<a href="/ja/docs/Mozilla/Firefox/Privacy/Tracking_Protection">トラッキング防止のエラー</a>、<a href="/ja/docs/Web/HTTP/CSP">CSP のエラー</a>、<a href="/ja/docs/Web/HTTP/CORS/Errors">CORS のエラー</a> による <a href="/ja/docs/Tools/Browser_Console">ブラウザーコンソール</a> のメッセージを自動的にグループ化するようになりました ({{bug(1522396)}})。</li>
+ <li>コンソールに表示されているログを、コンテキストメニューの新しい項目である [表示メッセージをエクスポート] でファイルに保存、またはクリップボードにコピーして共有できるようになりました ({{bug(1517728)}})。</li>
+ <li>コンソールのツールバーが、縦方向の領域を節約するためレスポンシブに高さを 1 行に減らすようになりました ({{bug(972530)}})。</li>
+ <li>Firefox のフロントエンドが発したログに集中するため、コンソールでコンテンツが発したメッセージを隠せるようになりました ({{bug(1523842)}})。</li>
+</ul>
+
+<h4 id="Network" name="Network">ネットワーク</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/HTTP/CSP">CSP</a> または <a href="/ja/docs/Web/Security/Mixed_content">混在コンテンツ</a> のためにブロックされたリソースを、詳しい理由とともにネットワークパネルに表示するようになりました ({{bug(1556451)}})。</li>
+ <li>ネットワークパネルで、リソースの完全な URL を表示する <em>URL</em> 列が新たに使用可能になりました ({{bug(1341155)}})。</li>
+</ul>
+
+<h4 id="Inspector" name="Inspector">インスペクター</h4>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Page_Inspector">ページインスペクター</a> で要素にマウスポインターを載せたときに表示される情報バーで、その要素が flex コンテナーや flex アイテムであることを表示するようになりました ({{bug(1521188)}})。</li>
+</ul>
+
+<h4 id="Remote_debugging" name="Remote_debugging">リモートデバッグ</h4>
+
+<ul>
+ <li>私たちのモバイルウェブブラウザーのために、リモートデバッグの機能を古い WebIDE から再設計した <a href="/ja/docs/Tools/about:debugging">about:debugging</a> に移行しました。USB を通してリモート端末の <a href="https://hacks.mozilla.org/2019/06/geckoview-in-2019/">GeckoView</a> をリモートデバッグするエクスペリエンスが向上します ({{bug(1462208)}})。</li>
+</ul>
+
+<h4 id="General" name="General">全般</h4>
+
+<ul>
+ <li>開発ツールのパネルの並び順を、人気を反映して変更しました ({{bug(1558630)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>さらに仕様書へ準拠させるため、既定の <code>disabled</code> {{domxref("TextTrack.mode", "mode")}} で生成された {{HTMLElement("track")}} 要素では、要素に関連付けられたテキストトラックがテキストキューを含む WebVTT ファイルを読み込まないようになりました。<code>mode</code> が <code>disabled</code> であるキューにアクセスまたは操作するには、<code>mode</code> を <code>started</code> または <code>hidden</code> に変更します。これによって WebVTT データの読み込みが発生します ({{bug(1550633)}})。</li>
+</ul>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<ul>
+ <li>HTML {{HTMLElement("keygen")}} 要素を Firefox から削除しました。これは以前から非推奨であり、また用途がほかの技術に取って代わられました ({{bug(1315460)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("white-space")}} プロパティの値 <code>break-spaces</code> を実装しました ({{bug(1351432)}})。</li>
+ <li>SVG ジオメトリー属性 ({{SVGAttr("width")}} や {{SVGAttr("height")}} など) が、CSS のプロパティとしても定義されました ({{bug(1383650)}})。</li>
+ <li><a href="/ja/docs/Web/API/WebVTT_API">WebVTT</a> で表示されるキャプション ("cues") にスタイルを設定するために使用する {{cssxref("::cue")}} セレクターで、仕様書に従ってキューに使用できる CSS プロパティが制限されるようになりました ({{bug(1321488)}})。</li>
+ <li>仕様書に従って、{{cssxref("::marker")}} に適用できるプロパティを制限しました ({{bug(1552578)}})。</li>
+ <li>{{cssxref("overflow-block")}} および {{cssxref("overflow-inline")}} プロパティを実装しました ({{bug(1470695)}})。</li>
+ <li>CSS Feature Queries ({{cssxref("@supports")}}) で <code>selector()</code> メソッドを使用して、セレクターをサポートしているかをテストできるようになりました ({{bug(1513643)}})。</li>
+ <li>対象の要素でユーザーがテキストを選択できるかを指定する {{cssxref("user-select")}} プロパティの接頭辞を外しました ({{bug(1492739)}})。</li>
+ <li>リトアニア語のロケール固有の大文字・小文字規則を実装しました ({{bug(1322992)}})。<a href="/ja/docs/Web/CSS/text-transform#lowercase_lithuanian">こちらの例をご覧ください</a>。</li>
+ <li>CSS Text の {{cssxref("line-break")}} プロパティを実装しました ({{bug(1011369)}}) および ({{bug(1531715)}})。</li>
+ <li>要素とその内容物が DOM ツリーのほかの部分からおおむね独立していることを開発者が定義できる {{cssxref("contain")}} プロパティを実装しました ({{bug(1487493)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<ul>
+ <li>gzip で圧縮された SVG-in-OpenType をサポートしました ({{bug(1359240)}})。</li>
+ <li>{{domxref("SVGGeometryElement.isPointInFill()")}} および {{domxref("SVGGeometryElement.isPointInStroke()")}} メソッドを実装しました ({{bug(1325319)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Classes#Field_declarations">パブリッククラスフィールド</a> をデフォルトで有効にしました ({{bug(1555464)}})。詳しくは <a href="/ja/docs/Web/JavaScript/Reference/Classes/Class_fields">Class fields</a> もご覧ください。</li>
+ <li>promise の拒絶イベントである <code><a href="/ja/docs/Web/API/Window/unhandledrejection_event">unhandledrejection</a></code> および <code><a href="/ja/docs/Web/API/Window/rejectionhandled_event">rejectionhandled</a></code> をデフォルトで有効にしました ({{bug(1362272)}})。これらの動作について詳しくは {{SectionOnPage("/docs/Web/JavaScript/Guide/Using_promises", "Promise rejection events")}} をご覧ください。</li>
+</ul>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<ul>
+ <li>HTTP の {{HTTPHeader("Access-Control-Expose-Headers")}}、{{HTTPHeader("Access-Control-Allow-Methods")}}、{{HTTPHeader("Access-Control-Allow-Headers")}} ヘッダーが、資格情報がないリクエストを示すワイルドカード値 "<code>*</code>" を受け入れるようになりました ({{bug(1309358)}})。この変更は Firefox 68 ESR に反映されました。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Resize_Observer_API">Resize Observer API</a> をデフォルトで有効にしました ({{bug(1543839)}})。</li>
+ <li>Microtask API ({{domxref("WindowOrWorkerGlobalScope.queueMicrotask()")}}) を実装しました ({{bug(1480236)}})。</li>
+</ul>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>workers で {{domxref("DOMMatrix")}}、{{domxref("DOMPoint")}}、および関連オブジェクトをサポートしました ({{bug(1420580)}})。</li>
+ <li>仕様書に準拠させるため、<code>pageX</code> および <code>pageY</code> プロパティを {{domxref("UIEvent")}} から {{domxref("MouseEvent")}} に移動しました ({{bug(1178763)}})。これらのプロパティは、<code>UIEvent</code> から継承する {{domxref("CompositionEvent")}}、{{domxref("FocusEvent")}}、{{domxref("InputEvent")}}、{{domxref("KeyboardEvent")}}、{{domxref("TouchEvent")}} インターフェイスに公開されなくなりました。</li>
+ <li>{{domxref("Blob.text()")}}、{{domxref("Blob.arrayBuffer()")}}、{{domxref("Blob.stream()")}} メソッドを実装しました ({{bug(1557121)}})。</li>
+ <li>{{domxref("DOMMatrix.fromMatrix()")}} を実装しました ({{bug(1560462)}})。</li>
+ <li>引数が 6 個の {{domxref("DOMMatrix.scale()")}} メソッドをサポートしました ({{bug(1397945)}})。</li>
+ <li>仕様書に従って {{domxref("DOMMatrix.translate()")}}、{{domxref("DOMMatrix.skewX()")}}、{{domxref("DOMMatrix.skewY()")}} の引数がすべて省略可能になりました ({{bug(1397949)}})。</li>
+ <li>{{domxref("navigator.userAgent")}}、{{domxref("navigator.platform")}}、{{domxref("navigator.oscpu")}} プロパティが、64 ビット版 OS で 32 ビット版 Firefox を実行していることを公表しないようになりました ({{bug(1559747)}})。<code>Linux i686 on x86_64</code> に代わって <code>Linux x86_64</code>、<code>WOW64</code> に代わって <code>Win64</code> を示します。</li>
+ <li>{{domxref("HTMLDocument")}} に残されているメソッドを、{{domxref("Document")}} に移動しました。これはほとんどの場合、目に見えるほどの影響は発生しないでしょう。特に {{domxref("document.close", "close()")}}、{{domxref("document.open", "open()")}}、{{domxref("document.write", "write()")}} メソッドが移動しました。よって、さまざまなプロパティだけでなく {{domxref("document.execCommand", "execCommand()")}} などのエディター関連メソッドも持つようになりました ({{bug(1549560)}})。</li>
+ <li>{{domxref("AbstractRange")}} および {{domxref("StaticRange")}} を実装しました ({{bug(1444847)}})。</li>
+</ul>
+
+<h4 id="Media_Web_Audio_and_WebRTC" name="Media_Web_Audio_and_WebRTC">メディア、Web Audio、WebRTC</h4>
+
+<ul>
+ <li>ユーザーのセキュリティを向上させるため、および最新版の <a href="/ja/docs/Web/API/Media_Streams_API">Media Capture and Streams</a> 仕様書に合わせるために、安全でないコンテキストでは {{domxref("navigator.mediaDevices")}} プロパティを提供しないようになりました。{{domxref("MediaDevices.getUserMedia", "getUserMedia()")}}、{{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}}、{{domxref("MediaDevices.enumerateDevices", "enumerateDevices()")}} などを使用するには、{{Glossary("HTTPS")}} を使用してコンテンツを読み込むようにしてください ({{bug(1528031)}})。</li>
+ <li>Web Audio API の {{domxref("AudioParam.value")}} プロパティが、現時点のプロパティの実際の値を、その値に適用されるすべての予定済みまたは段階的な変更を考慮したうえで返すようになりました。以前の Firefox は、(<code>value</code> セッターを使用して) 直近に明示的に設定された値だけを返していました({{bug(893020)}}).</li>
+ <li>新たにトラックを辞書式順序で使用するように {{domxref("MediaStreamAudioSourceNode")}} を更新しました。以前はトラックの順序が個々のブラウザー次第であり、任意に変更することもできました。加えて、音声トラックがないストリームを使用して <code>MediaStreamAudioSourceNode</code> を作成しようとすると <code>InvalidStateError</code> 例外が発生するようになりました ({{bug(1553215)}})。</li>
+ <li>{{domxref("MediaTrackSettings.facingMode", "facingMode")}}、{{domxref("MediaTrackSettings.deviceId", "deviceId")}}、{{domxref("MediaTrackSettings.groupId", "groupId")}} 設定が、{{domxref("MediaStreamTrack.getSettings()")}} を呼び出すと返される {{domxref("MediaTrackSettings")}} オブジェクトのメンバーに含まれるようになりました ({{bug(1537986)}})。</li>
+</ul>
+
+<h4 id="Removals_2" name="Removals_2">廃止</h4>
+
+<ul>
+ <li>{{domxref("DOMMatrix.scaleNonUniformSelf()")}} メソッドを削除しました ({{bug(1560119)}})。</li>
+</ul>
+
+<h3 id="WebDriver_conformance_Marionette" name="WebDriver_conformance_(Marionette)">WebDriver conformance (Marionette)</h3>
+
+<h4 id="Other" name="Other">その他</h4>
+
+<ul>
+ <li>Marionette が、モーダルダイアログやユーザープロンプトの開く・閉じるを動的に制御するようになりました ({{bug(1477977)}})。これは、複数開くプロンプトも制御されることを意味します ({{bug(1487358)}})。</li>
+ <li>DOM の一部が削除されたり追加の通知が出たりすることを防ぐため、デフォルトでトラッキング防止と DOM push 機能を無効化するようになりました ({{bug(1542244)}})。</li>
+ <li>Firefox が低メモリ状態になったときにバッググラウンドのタブを自動的にアンロードする機能を無効化しました。これはタブを切り替えるときの自動化に悪影響がありました ({{bug(1553748)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<h3 id="API_changes" name="API_changes">API の変更点</h3>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/userScripts">UserScripts API</a> をデフォルトで有効にしました。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/topSites/get">topSites.get()</a></code> メソッドで、新たなオプションである <code>includePinned</code> および <code>includeSearchShortcuts</code> が使用可能になりました ({{bug(1547669)}})。</li>
+</ul>
+
+<h3 id="Other_changes" name="Other_changes">その他の変更点</h3>
+
+<ul>
+ <li>ホワイトリストに記載されたものを除く<em>すべての</em>拡張機能をブラックリストに登録する <a href="https://github.com/mozilla/policy-templates/blob/master/README.md#extensionsettings">グループポリシー設定</a> を追加しました ({{bug(1522823)}})。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/versions/69/">Firefox 69 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(68)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/7/index.html b/files/ja/mozilla/firefox/releases/7/index.html
new file mode 100644
index 0000000000..c541bb346e
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/7/index.html
@@ -0,0 +1,185 @@
+---
+title: Firefox 7 for developers
+slug: Mozilla/Firefox/Releases/7
+tags:
+ - Firefox
+ - Firefox 7
+ - Gecko 7
+translation_of: Mozilla/Firefox/Releases/7
+---
+<p>Firefox 7 は2011 年 9 月 27 日にリリースされました。このページは Firefox 7 のリリースにあたり、開発者に関係する変更についてまとめたものです。</p>
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">Web 開発者向けの変更点一覧</h2>
+<h3 id="HTML">HTML</h3>
+<ul>
+ <li>{{ domxref("HTMLHeadElement") }} の <code>profile</code> プロパティが削除されました。このプロパティは {{ gecko("2.0") }} から非推奨となっていました。</li>
+ <li>{{ domxref("HTMLImageElement") }} の <code>x</code> プロパティと <code>y</code> プロパティが削除されました。</li>
+ <li>{{ domxref("HTMLSelectElement") }} の <code>add()</code> メソッドの <code>before</code> 引数が optional となりました。</li>
+ <li>{{ HTMLElement("body") }} の {{ htmlattrxref("background", "body") }} 属性が URI として解決されなくなりました。この変更は HTML 仕様への準拠によるものです。</li>
+ <li>{{ HTMLElement("option") }} の {{ htmlattrxref("label", "option") }} 属性が指定されていない場合、要素の内容テキストを反映するようになりました。</li>
+</ul>
+<h4 id="Canvas">Canvas</h4>
+<ul>
+ <li><code>setTransform()</code>, <code>bezierCurveTo()</code>, <code>arcTo()</code> に不正な値を与え呼び出したとき、例外が投げられなくなりました。これらは無視されます。</li>
+ <li><a href="/ja/docs/DOM/CanvasRenderingContext2D#isPointInPath()" title="DOM/CanvasRenderingContext2D#isPointInPath()"><code>isPointInPath()</code></a> メソッドに与えられた点と現在のパスを比較するにあたり、変換マトリクスを適切に考慮するようになりました。</li>
+ <li><code>strokeRect()</code> メソッドが幅 0 高さ 0 で呼び出された場合、何もしなくなりました。</li>
+ <li><a href="/ja/docs/DOM/CanvasRenderingContext2D#drawImage()" title="DOM/CanvasRenderingContext2D#drawImage()"><code>drawImage()</code></a> メソッドが幅 0 もしくは高さ 0 で呼び出された場合、{{ HTMLElement("canvas") }} は <code>INVALID_STATE_ERR</code> を投げるようになりました。</li>
+ <li><a href="/ja/docs/DOM/CanvasRenderingContext2D#drawImage()" title="DOM/CanvasRenderingContext2D#drawImage()"><code>drawImage()</code></a> メソッドが非定形の座標で呼び出された場合に、例外が投げられなくなりました。</li>
+ <li><code>toDataURL()</code> が JPEG の品質を制御する引数を受け付けるようになりました。</li>
+ <li><code>globalCompositeOperation</code> の値から、非標準だった <code>clear</code> と <code>over</code> が削除されました。</li>
+ <li><a href="/ja/docs/Canvas_tutorial/Applying_styles_and_colors#Shadows" title="Canvas_tutorial/Applying_styles_and_colors#Shadows">影</a> が <code>source-over</code> 合成処理の場合にのみ描画されるようになりました。</li>
+ <li>Canvas の塗りつぶし方を設定する <a href="/ja/docs/DOM/CanvasRenderingContext2D#Attributes" title="DOM/CanvasRenderingContext2D#Attributes"><code>mozFillRule</code></a> アトリビュートが追加されました。</li>
+</ul>
+<h3 id="CSS">CSS</h3>
+<ul>
+ <li>{{ cssxref("text-overflow") }} がサポートされました。</li>
+ <li>{{ cssxref("orient", "-moz-orient") }} が修正され、縦配置の {{ HTMLElement("progress") }} でも進行方向が適切なものになりました。</li>
+</ul>
+<h3 id="MathML">MathML</h3>
+<ul>
+ <li>XLink href が復活し、また MathML3 の <code>href</code> 属性もサポートされました。リンクには後者の属性を使うことが望まれます。</li>
+ <li>{{ MathMLElement("mpadded") }} 要素に <code>voffset</code> 属性のサポートが追加されました。また <code>lspace</code> 属性の挙動も修正されました。</li>
+ <li>トップレベル要素である {{ MathMLElement("math") }} 要素が {{ MathMLElement("mstyle") }} 要素のもつ属性すべてを受け入れるようになりました。</li>
+ <li><a class="external" href="http://www.ctan.org/tex-archive/fonts/Asana-Math/">Asana Math</a> フォントのサポートが追加されました。</li>
+ <li>{{ MathMLElement("mfrac") }} 要素によって表される分数の線の太さ <code>medium</code> が修正され、規定の太さになりました。</li>
+ <li><a href="/ja/docs/MathML/Attributes/Values#Constants_(namedspaces)" title="MathML/Attributes/Values#Constants_(namedspaces)">負のスペースを表すキーワード</a> がサポートされました。</li>
+</ul>
+<h3 id="DOM">DOM</h3>
+<ul>
+ <li>{{ domxref("File") }} インターフェースの非標準なメソッド <code>getAsBinary()</code>, <code>getAsDataURL()</code>, <code>getAsText()</code> が削除されました。あわせて、非標準なプロパティ <code>fileName</code> と <code>fileSize</code>も削除されました。</li>
+ <li>{{ domxref("Blob") }} によってデータが指定され、また <code>Content-Disposition</code> HTTP ヘッダが送信されたとき、{{ domxref("XMLHttpRequest/FormData", "FormData") }} インターフェースはファイル名を空文字列として報告しないようになりました。これによって幾つかのサーバに起こっていたエラーが解消されます。</li>
+ <li>{{ domxref("element.dir") }} 属性が結果を常に小文字で返すようになりました。これは HTML 仕様の要件によるものです。</li>
+ <li>{{ domxref("FileReader") }} の <code>readAsArrayBuffer()</code> メソッドが実装されました。</li>
+ <li>{{ domxref("document.createEntityReference") }} が削除されました。このメソッドは適切に実装されておらず、他のブラウザのほとんどで実装されていませんでした。</li>
+ <li><code>document.normalizeDocument</code> が削除されました。今後は {{ domxref("Node.normalize") }} を利用してください。</li>
+ <li><code>index</code> が範囲外の場合、{{ domxref("DOMTokenList.item") }} が <code>undefined</code> を返すようになりました。これまでは <code>null</code> を返していました。</li>
+ <li><code>Node.getFeature</code> が削除されました。</li>
+ <li><code>HTMLInsElement</code> インターフェースと <code>HTMLDelElement</code> インターフェースが削除されました。これは {{ HTMLElement("ins") }} と {{ HTMLElement("del") }} 要素が実際には {{ domxref("HTMLModElement") }} を使用していたためです。</li>
+ <li>新しい <a class="external" href="http://www.w3.org/TR/dom/">DOM4</a> 仕様にある {{ domxref("Attr") }} が {{ domxref("Node") }} を継承しない (DOM Core 1, 2, 3 まではしていた) という定義に準拠するため、{{ domxref("Attr") }} インターフェース上の {{ domxref("Node") }}} プロパティやメソッドについて、将来的にこれらを削除するといった意味の <a href="/ja/docs/DOM/Attr#Deprecated_properties_and_methods" title="DOM/Attr#Deprecated_properties_and_methods">警告を出す</a> ようになりました。</li>
+ <li>{{ domxref("Window") }} オブジェクトに {{ domxref("window.ondeviceorientation") }} プロパティと {{ domxref("window.ondevicemotion") }} プロパティのサポートを追加しました。</li>
+ <li>{{ domxref("window.resizeTo") }}、{{ domxref("window.resizeBy") }}、{{ domxref("window.moveTo") }}、{{ domxref("window.moveBy") }} はメインウィンドウに適用されなくなりました。</li>
+</ul>
+<h3 id="JavaScript">JavaScript</h3>
+<ul>
+ <li><code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Function/arity" title="JavaScript/Reference/Global_Objects/Function/arity">Function.arity</a></code> プロパティが削除されました。今後は <code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Function/length" title="JavaScript/Reference/Global_Objects/Function/length">Function.length</a></code> を利用してください。</li>
+</ul>
+<h3 id="WebSocket">WebSocket</h3>
+<ul>
+ <li>設定項目に <code>network.websocket.max-connections</code> が導入されました。これは WebSocket の同時最大接続数を決定するために使用されます。既定値は 200 です。</li>
+ <li>WebSocket プロトコルで使用するプロトコルバージョンが、IETF draft 10 で指定されているバージョン 8 になりました。Firefox 6 ではバージョン 7 が使われていました。</li>
+ <li>WebSocket API が Firefox Mobile でも利用可能になりました。</li>
+</ul>
+<h3 id="Console_API">Console API</h3>
+<ul>
+ <li><a href="/ja/docs/Using_the_Web_Console" title="Using the Web Console">web console</a> が開かれる前に <code>console.log</code> によって記録されたメッセージもあらかじめ記録され、<a href="/ja/docs/Using_the_Web_Console" title="Using the Web Console">web console</a> が開かれた時に表示されるようになりました。</li>
+</ul>
+<div class="changelog">
+ <h3 id="Web_Timing">Web Timing</h3>
+ <ul>
+ <li><a class="external" href="http://www.w3.org/TR/navigation-timing/">Navigation Timing</a> 仕様の初期実装が完了しました。</li>
+ </ul>
+ <h3 id="XML">XML</h3>
+ <ul>
+ <li>XSLT スタイルシートはこれまでサポートされていた <code>text/xsl</code> に加えて、<code>正式な </code>MIME 型<code> application/xslt+xml</code> も利用可能になりました。(スタイルシート処理命令もしくは <a class="external" href="http://tools.ietf.org/html/rfc5988">HTTP Link ヘッダ</a>で利用できます。)</li>
+ </ul>
+</div>
+<h2 id="Mozilla_開発者とアドオン開発者向けの変更点">Mozilla 開発者とアドオン開発者向けの変更点</h2>
+<p>これらの変更は、アドオン開発者と、Mozilla 本体のコードに関わっている開発者の双方に影響するものです。アドオン開発者は <a href="/ja/docs/Firefox/Updating_extensions_for_Firefox_7" title="Firefox/Updating_extensions_for_Firefox_7">アドオンの Firefox 7 対応</a> に書かれている追加情報も参照してください。</p>
+<div class="note">
+ <strong>注:</strong> Firefox 7 では、従来のメジャーリリースと同様に、バイナリコンポーネントをコンパイルし直す必要があります。詳しくは <a href="/ja/docs/Developer_Guide/Interface_Compatibility#Binary_Interfaces" title="Developer_Guide/Interface_Compatibility#Binary_Interfaces">バイナリインタフェース</a> をご覧ください。</div>
+<h3 id="JavaScript_コードモジュール">JavaScript コードモジュール</h3>
+<h4 id="FileUtils.jsm">FileUtils.jsm</h4>
+<ul>
+ <li>書き込みのための、安全でない状態のファイル出力ストリームを開ける <code>openFileOutputStream()</code> メソッドが追加されました。</li>
+</ul>
+<h4 id="AddonManager.jsm">AddonManager.jsm</h4>
+<ul>
+ <li>アプリケーション起動中に変更が行われたアドオンの一覧を管理できるメソッドがアドオンマネージャに追加されました。<a href="/ja/docs/Addons/Add-on_Manager/AddonManager#addStartupChange%28%29" title="Addons/Add-on_Manager/AddonManager#addStartupChange%28%29"><code>addStartupChange()</code></a>、<a href="/ja/docs/Addons/Add-on_Manager/AddonManager#removeStartupChange%28%29" title="Addons/Add-on_Manager/AddonManager#removeStartupChange%28%29"><code>removeStartupChange()</code></a>、<a href="/ja/docs/Addons/Add-on_Manager/AddonManager#getStartupChanges%28%29" title="Addons/Add-on_Manager/AddonManager#getStartupChanges%28%29"><code>getStartupChanges()</code></a> の 3 つです。</li>
+</ul>
+<h3 id="XUL">XUL</h3>
+<ul>
+ <li><a href="/ja/docs/XUL/tree" title="XUL/tree"><code>tree</code></a> 要素で、<a href="/ja/docs/XUL/Attribute/datasources" title="XUL/Attribute/datasources"><code>datasources</code></a> 属性によって参照されたノードがすべて <code>id</code> 属性で指定された固有 ID を持っていた場合、3 種類の公開状態を記憶できるようになりました。</li>
+ <li><a href="/ja/docs/XUL/panel" title="XUL/panel"><code>panel</code></a> 要素で、新しい <a href="/ja/docs/XUL/Attribute/backdrag" title="XUL/Attribute/backdrag"><code>backdrag</code></a> 属性を使って、<a href="/ja/docs/XUL/PopupGuide/Panels#Letting_panels_be_dragged_by_grabbing_the_background" title="XUL/PopupGuide/Panels#Letting_panels_be_dragged_by_grabbing_the_background">ユーザがバックグラウンドの任意の場所をクリックして、その要素をドラッグできるように</a> 設定することが可能となりました。</li>
+</ul>
+<h3 id="XPCOM">XPCOM</h3>
+<ul>
+ <li><a href="/ja/docs/Components.utils.schedulePreciseGC" title="Components.utils.schedulePreciseGC"><code>Components.utils.schedulePreciseGC()</code></a> メソッドが追加されました。これは、以後どこかの時点で JavaScript コードが何も実行されていないときに、完全なガベージコレクション処理を行う予定を入れられるものです。</li>
+ <li><a href="/ja/docs/Components.utils.unload" title="Components.utils.unload"><code>Components.utils.unload()</code></a> メソッドが追加されました。これは、<a href="/ja/docs/Components.utils.load" title="Components.utils.load"><code>Components.utils.load()</code></a> で読み込まれた JavaScript コードモジュールを破棄できるようにするものです。</li>
+</ul>
+<h3 id="ユーザ体験の変更">ユーザ体験の変更</h3>
+<ul>
+ <li>拡張機能のオプションが、再起動不要型と従来型のいずれでも <a href="/ja/docs/Extensions/Inline_Options" title="Extensions/Inline_Options">アドオンマネージャ内に表示</a> されるようになりました。</li>
+ <li>ダウンロードされたファイルの保存先がサイトごとに記憶されるようになりました。このデータは <a href="/ja/docs/JavaScript_code_modules/DownloadLastDir.jsm" title="JavaScript_code_modules/DownloadLastDir.jsm">DownloadLastDir.jsm</a> を使ってアクセスできます。</li>
+</ul>
+<h3 id="ビルドシステムの変更">ビルドシステムの変更</h3>
+<ul>
+ <li>ActiveX 組み込み API はビルドされなくなり、ビルドシステムでのサポートも削除されました。関連インタフェースも削除されました。下記 {{ anch("削除されたインタフェース") }} を参照してください。</li>
+ <li>Windows でのビルド時に <code>-Zc:wchar_t-</code> を指定できなくなりました。詳しくは、更新された <a href="/ja/docs/Developer_Guide/Build_Instructions#Build_and_install" title="Developer_Guide/Build_Instructions#Build_and_install">ビルド手順</a> をご覧ください。</li>
+</ul>
+<h3 id="インタフェースの変更">インタフェースの変更</h3>
+<ul>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsISocketTransport" title="XPCOM_Interface_Reference/nsISocketTransport"><code>nsISocketTransport</code></a> に新しい接続フラグ <code>DISABLE_IPV6</code> が追加されました。これは、利用可能な IPv6 アドレスがあってもそれを無視して、IPv4 アドレスのみに接続するようソケットを設定するものです。また、<a href="/ja/docs/XPCOM_Interface_Reference/nsIDNSService" title="XPCOM_Interface_Reference/nsIDNSService"><code>nsIDNSService</code></a> に新しい解決フラグ <code>RESOLVE_DISABLE_IPV6</code> が追加されました。これは、利用可能な IPv6 アドレスがあってもそれを無視して、IPv4 ホストのみを考慮してドメイン名解決を行うものです。これらの変更は、IPv4 と IPv6 の両方に対応している (その中でも特に IPv6 接続がうまくいかない) ホストへ接続する際の応答時間を短縮する <a class="external" href="http://tools.ietf.org/html/draft-wing-http-new-tech-00">「幸せな目玉」戦略</a> を実装するために使われます。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/inIDOMUtils" title="XPCOM_Interface_Reference/inIDOMUtils"><code>inIDOMUtils</code></a> に 2 つのメソッドが追加されました。あるノードの子ノード一覧を返す <a href="/ja/docs/XPCOM_Interface_Reference/inIDOMUtils#getChildrenForNode%28%29" title="XPCOM_Interface_Reference/inIDOMUtils#getChildrenForNode%28%29"><code>getChildrenForNode()</code></a> と、選択範囲内で使用されているフォントフェース一覧を返す <a href="/ja/docs/XPCOM_Interface_Reference/inIDOMUtils#getUsedFontFaces%28%29" title="XPCOM_Interface_Reference/inIDOMUtils#getUsedFontFaces%28%29"><code>getUsedFontFaces()</code></a> です。</li>
+ <li><code>nsIMarkupDocumentViewer_MOZILLA_2_0_BRANCH</code> インタフェースは <a href="/ja/docs/XPCOM_Interface_Reference/nsIMarkupDocumentViewer" title="XPCOM_Interface_Reference/nsIMarkupDocumentViewer"><code>nsIMarkupDocumentViewer</code></a> インタフェースへ統合されました。</li>
+ <li><code>nsIDOMWindow2</code> インタフェースは <a href="/ja/docs/XPCOM_Interface_Reference/nsIDOMWindow" title="XPCOM_Interface_Reference/nsIDOMWindow"><code>nsIDOMWindow</code></a> インタフェースへ統合されました。</li>
+ <li><code>nsIDOMWindow_2_0_BRANCH</code> インタフェースは <a href="/ja/docs/XPCOM_Interface_Reference/nsIDOMWindowInternal" title="XPCOM_Interface_Reference/nsIDOMWindowInternal"><code>nsIDOMWindowInternal</code></a> インタフェースへ統合されました。</li>
+ <li>URI 引数付きで <a href="/ja/docs/XPCOM_Interface_Reference/nsINavHistoryObserver" title="XPCOM_Interface_Reference/nsINavHistoryObserver"><code>nsINavHistoryObserver</code></a> メソッドを使う場合、GUID も必要となります。</li>
+ <li><code>nsISHistory_2_0_BRANCH</code> インタフェースは <a href="/ja/docs/XPCOM_Interface_Reference/nsISHistory" title="XPCOM_Interface_Reference/nsISHistory"><code>nsISHistory</code></a> インタフェースへ統合されました。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsITelemetry" title="XPCOM_Interface_Reference/nsITelemetry"><code>nsITelemetry</code></a> に、ID からヒストグラムを返す <a href="/ja/docs/XPCOM_Interface_Reference/nsITelemetry#getHistogramById%28%29" title="XPCOM_Interface_Reference/nsITelemetry#getHistogramById%28%29"><code>getHistogramById()</code></a> メソッドと、<code>false</code> 設定時に <a class="external" href="http://mozilla.jp/legal/privacy/firefox/#telemetry">使用統計情報 (Telemetry)</a> の記録を無効化できる <code>canRecord</code> 属性が追加されました。使用統計情報はプライベートブラウジングモードでは記録されなくなりました。({{ bug("661574") }}、{{ bug("661573") }})<br>
+ <a href="/ja/docs/XPCOM_Interface_Reference/nsITelemetry#newHistogram%28%29" title="XPCOM_Interface_Reference/nsITelemetry#newHistogram%28%29"><code>newHistogram()</code></a> で定義された使用統計ヒストグラムは、Mozilla への定期報告に含まれません。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsIMemoryReporter" title="XPCOM_Interface_Reference/nsIMemoryReporter"><code>nsIMemoryReporter</code></a> インタフェースに大幅な変更が行われました。使用する場合はコードに変更を加える必要があるでしょう。</li>
+ <li><a href="/ja/docs/nsIXMLHttpRequest#setRequestHeader%28%29" title="nsIXMLHttpRequest#setRequestHeader%28%29"><code>nsIXMLHttpRequest.setRequestHeader()</code></a> によって設定されたヘッダが、リダイレクトを辿る際にもリクエストに含まれて送信されるようになりました。これまでこの方法で設定されたヘッダは送信されていませんでした。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsIDocShell" title="XPCOM_Interface_Reference/nsIDocShell"><code>nsIDocShell</code></a> に <code>allowWindowControl</code> 属性が追加されました。<code>true</code> を設定すると、docshell のコンテンツがウィンドウをコントロールできるようになります (ウィンドウの移動やサイズ変更など)。</li>
+ <li><code>nsIThreadInternal2</code> インタフェースは <a href="/ja/docs/XPCOM_Interface_Reference/nsIThreadInternal" title="XPCOM_Interface_Reference/nsIThreadInternal"><code>nsIThreadInternal</code></a> インタフェースへ統合されました。</li>
+</ul>
+<h4 id="新しいインタフェース">新しいインタフェース</h4>
+<dl>
+ <dt>
+ <a href="/ja/docs/XPCOM_Interface_Reference/nsIDOMFontFace" title="XPCOM_Interface_Reference/nsIDOMFontFace"><code>nsIDOMFontFace</code></a></dt>
+ <dd>
+ ひとつのフォントフェースを表します。</dd>
+ <dt>
+ <a href="/ja/docs/XPCOM_Interface_Reference/nsIDOMFontFaceList" title="XPCOM_Interface_Reference/nsIDOMFontFaceList"><code>nsIDOMFontFaceList</code></a></dt>
+ <dd>
+ <a href="/ja/docs/XPCOM_Interface_Reference/nsIDOMFontFace" title="XPCOM_Interface_Reference/nsIDOMFontFace"><code>nsIDOMFontFace</code></a> で表されたフォントフェースの一覧を表します。</dd>
+</dl>
+<h4 id="削除されたインタフェース">削除されたインタフェース</h4>
+<p>以下のインタフェースは、不要となり削除された実装です。</p>
+<ul>
+ <li><code>nsIDOM3Attr</code></li>
+ <li><code>nsIDOM3Node</code></li>
+ <li><code>nsIDOM3TypeInfo</code></li>
+ <li><code>nsIDOM3Text</code></li>
+ <li><code>nsIDOMDocumentStyle</code></li>
+ <li><code>nsIDOMNSDocument</code></li>
+ <li><code>nsIDOMNSFeatureFactory</code></li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsIDOMNSHTMLDocument" title="XPCOM_Interface_Reference/nsIDOMNSHTMLDocument"><code>nsIDOMNSHTMLDocument</code></a></li>
+ <li><code>nsIDOMNSHTMLFormElement</code></li>
+ <li><code>nsIDOMNSHTMLHRElement</code></li>
+ <li><code>nsIDOMNSHTMLTextAreaElement</code></li>
+</ul>
+<p>以下のインタフェースは、ActiveX 組み込み API 廃止の一環として削除されました。</p>
+<ul>
+ <li><code>DITestScriptHelper</code></li>
+ <li><code>DWebBrowserEvents</code></li>
+ <li><code>DWebBrowserEvents2</code></li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/IDispatch" title="XPCOM_Interface_Reference/IDispatch"><code>IDispatch</code></a></li>
+ <li><code>IMozControlBridge</code></li>
+ <li><code>IMozPluginHostCtrl</code></li>
+ <li><code>IWebBrowser</code></li>
+ <li><code>IWebBrowser2</code></li>
+ <li><code>IWebBrowserApp</code></li>
+ <li><code>IXMLDocument</code></li>
+ <li><code>IXMLElement</code></li>
+ <li><code>IXMLElementCollection</code></li>
+ <li><code>IXMLError</code></li>
+ <li><code>nsIActiveXSecurityPolicy</code></li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsIDispatchSupport" title="XPCOM_Interface_Reference/nsIDispatchSupport"><code>nsIDispatchSupport</code></a></li>
+ <li><code>nsIMozAxPlugin</code></li>
+ <li><code>nsIScriptEventHandler</code></li>
+ <li><code>nsIScriptEventManager</code></li>
+</ul>
+<h2 id="See_also" name="See_also">参考</h2>
+<ul>
+ <li><a class="external" href="http://mozilla.jp/firefox/preview/faq/">高速リリースサイクルに関するよくある質問</a></li>
+</ul>
+<div>{{Firefox_for_developers('6')}}</div>
diff --git a/files/ja/mozilla/firefox/releases/70/index.html b/files/ja/mozilla/firefox/releases/70/index.html
new file mode 100644
index 0000000000..816f85205d
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/70/index.html
@@ -0,0 +1,206 @@
+---
+title: Firefox 70 for developers
+slug: Mozilla/Firefox/Releases/70
+tags:
+ - '70'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/70
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">Firefox 70 は、米国時間 2019 年 10 月 22 日 にリリースされました。このページでは、開発者に影響する Firefox 70 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<h4 id="Debugger_updates" name="Debugger_updates">デバッガーの更新</h4>
+
+<ul>
+ <li><a class="gr-progress" href="/ja/docs/Tools/Debugger">デバッガー</a> で <a href="/ja/docs/Tools/Debugger/Break_on_DOM_mutation">DOM Mutation</a> にブレークポイントを設定できるようになりました。ノードやその属性が変化したときや、ノードが DOM から削除されたときに一時停止できます ({{bug(1576219)}})。</li>
+ <li>デバッガーで一時停止したときに、ステップ実行や復帰ができるボタンを持つオーバーレイをページ上に表示するようになりました ({{bug(1574646)}})。</li>
+ <li>デバッガーで、すでにエンジンによって破棄されているソース (たいてい、ページを読み込むときにに 1 回実行するスクリプト) を表示するようになりました。よって次に実行するとき、デバッグするためのブレークポイントを正しく設定できます ({{bug(1572280)}})。</li>
+ <li>デバッガーの <a href="/ja/docs/Tools/Debugger/Using_the_Debugger_map_scopes_feature">スコープパネル</a> のグループ化を簡単にして、以前表示した追加スコープをトップレベル関数の上に統合しました (例: <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/let">let</a></code>、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/with">with</a></code>、<a href="/ja/docs/Web/JavaScript/Reference/Statements/if...else"><code>if</code>/<code>else</code></a> で作成されたブロック) ({{bug(1448166)}})。</li>
+ <li>デバッガーが、ステップ実行中に <a href="/ja/docs/Tools/Debugger/Using_the_Debugger_map_scopes_feature">スコープパネル</a> で現在選択および展開している変数を維持するようになりました ({{bug(1405402)}})。</li>
+ <li>デバッガーが、非同期関数のステップオーバーを正しく扱うようになりました。<a href="/ja/docs/Web/JavaScript/Reference/Statements/async_function">非同期関数</a> のデバッグが容易になります ({{bug(1570178)}})。</li>
+ <li><a href="https://support.mozilla.org/kb/containers">コンテナーセッション</a> (異なるログイン状態でテストする際に便利です) でデバッグするとき、デバッガーでソースを正しく表示するようになりました ({{bug(1375036)}})。</li>
+ <li>デバッガーで <code><a href="/ja/docs/Web/JavaScript/Reference/Statements/debugger">debugger</a></code> 文にブレークポイントを設定して "ここでは停止しない" に切り替えると、<code>debugger</code> 文を無効にできます ({{bug(925269)}})。</li>
+ <li>WebExtensions の開発者は、ストレージタブの拡張機能ストレージで <code>browser.storage.local</code> を調査できます ({{bug(1585499)}})。</li>
+</ul>
+
+<h4 id="Other_updates" name="Other_updates">その他の更新</h4>
+
+<ul>
+ <li>An icon will be displayed next to inactive CSS properties in the <a href="/ja/docs/Tools/Page_Inspector">インスペクター</a> の <a href="/ja/docs/Tools/Page_Inspector/UI_Tour#Rules_view">ルールビュー</a> で、使用されていない CSS プロパティの隣にアイコンを表示するようになりました。アイコンにマウスポインターを載せると、なぜ使用されていないかの情報を表示します ({{bug(1306054)}})。</li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/UI_Tour#Rules_view">CSS ルールビュー</a> で前景色の <a href="/ja/docs/Tools/Page_Inspector/How_to/Inspect_and_select_colors">カラーピッカー</a> に、背景色とのコントラストがアクセシビリティの基準に準拠しているかを表示するようになりました ({{bug(1478156)}})。</li>
+ <li><a href="/ja/docs/Tools/Accessibility_inspector">アクセシビリティインスペクター</a> の <a href="/ja/docs/Tools/Accessibility_inspector#Check_for_accessibility_issues">チェック項目</a> ドロップダウンメニューに、キーボードのアクセシビリティチェックを追加しました ({{bug(1564968)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>以下の状況で、安全に生成されたパスワードを Firefox がユーザーに提案できるようになりました:
+ <ul>
+ <li><code>autocomplete="new-password"</code> 属性を設定した {{HTMLelement("input")}} 要素。</li>
+ <li>新しいパスワードを意図したかにかかわらず、パスワード入力要素でユーザーがコンテキストメニューを開いた。</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("opacity")}} や {{SVGAttr("stop-opacity")}} の、不透明度の値をパーセンテージで指定できるようになりました ({{Bug(1562086)}})。</li>
+ <li>{{cssxref("grid-auto-columns")}} および {{cssxref("grid-auto-rows")}} が、複数のトラックサイズの値を受け入れるようになりました ({{Bug(1339672)}})。</li>
+ <li>いくつかのテキスト関連の CSS プロパティを、デフォルトで有効にしました ({{bug(1573631)}}):
+ <ul>
+ <li>{{cssxref("text-decoration-thickness")}}。</li>
+ <li>{{cssxref("text-underline-offset")}}。</li>
+ <li>{{cssxref("text-decoration-skip-ink")}}。既定値は <code>auto</code> であり、下線や上線が {{Glossary("glyph", "グリフ")}} を横切る場所で途切れるようになりました。</li>
+ </ul>
+ </li>
+ <li>{{cssxref("display")}} プロパティが、内部表示種別と外部表示種別を表す 2 つのキーワードを受け入れるようになりました ({{Bug(1038294)}}、{{Bug(1105868)}}、{{Bug(1557825)}})。</li>
+ <li>{{cssxref("font-size")}} プロパティが新しいキーワード <code>xxx-large</code> を受け入れるようになりました ({{Bug(1553545)}})。</li>
+ <li>ロジックとパフォーマンスの都合で、{{cssxref(":visited")}} 疑似クラスが {{htmlelement("link")}} 要素にマッチしないようになりました ({{bug(1572246)}}、理由について詳しくは <a href="https://groups.google.com/forum/#!msg/mozilla.dev.platform/1NP6oJzK6zg/ftAz_TajAAAJ">Intent to ship: Make &lt;link&gt; elements always unvisited</a> および <a href="https://github.com/w3c/csswg-drafts/issues/3817">[selectors] :link and &lt;link&gt;</a> をご覧ください)。</li>
+ <li>{{cssxref("quotes")}} プロパティで値 <code>auto</code> をサポートしました ({{bug(1421938)}})。</li>
+ <li>パフォーマンスを向上させるため、{{htmlelement("style")}} 要素内のスタイルシートを再使用のためキャッシュするようになりました ({{bug(1480146)}})。現在、<code>@import</code> 規則を持つスタイルシートは含まれませんので注意してください。</li>
+ <li><code>&lt;ratio&gt;</code> 型の値として <code>&lt;number&gt;/&lt;number&gt;</code> や 1 つの <code>&lt;number&gt;</code> を受け入れるようになりました ({{bug(1565562)}})。</li>
+</ul>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<ul>
+ <li>3 値の &lt;position&gt; のサポートを廃止しました(背景の位置を除く) ({{Bug(1559276)}})。<a href="https://www.fxsitecompat.dev/docs/2019/3-valued-css-position-is-no-longer-supported-except-for-background-position/">互換性情報をご覧ください</a>。</li>
+ <li>{{cssxref("counter")}} および {{cssxref("counters")}} で値 <code>none</code> が無効になりました。Level 3 仕様を CSS 2.1 に合わせるための変更です {{Bug(1576821)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<ul>
+ <li>切り取り、コピー、貼り付けのイベントを、SVG グラフィック要素へディスパッチするようになりました ({{bug(1569474)}})。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<ul>
+ <li>{{MathMLElement("math")}} 要素の非推奨属性である <code>mode</code> を削除しました ({{bug(1573438)}})。</li>
+ <li>0 ではない単位なしの長さの値、例えば <code>500%</code> を表す <code>5</code> をサポートしなくなりました。</li>
+ <li>ドットで終わる長さの値、例えば <code>2.</code> や <code>34.px</code> もサポートしなくなりました。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar#Numeric_separators">Numeric separators</a> をサポートしました ({{Bug(1435818)}})。</li>
+ <li>{{jsxref("RelativeTimeFormat.formatToParts", "Intl.RelativeTimeFormat.formatToParts()")}} メソッドを実装しました ({{bug(1473229)}})。</li>
+ <li>ECMAScript 402 Intl API に対応して、{{jsxref("BigInt.prototype.toLocaleString()")}} メソッドが <code>locales</code> および <code>options</code> 引数とともに動作するように更新しました。また、{{jsxref("NumberFormat.format", "Intl.NumberFormat.format()")}} および {{jsxref("NumberFormat.formatToParts", "Intl.NumberFormat.formatToParts()")}} が {{jsxref("BigInt")}} 値を受け入れるようになりました ({{bug(1543677)}})。</li>
+ <li>最新の ECMAScript 仕様に対応して、先頭のゼロを <a href="/ja/docs/Web/JavaScript/Reference/Lexical_grammar#BigInt_literal">BigInt リテラル</a> で拒否するようになりました。<code>08n</code> や <code>09n</code> は、<code>07n</code> のような古い 8 進数値を使用した場合のエラーと同様に無効です。8 進 <code>BigInt</code> 数値では常に、先頭のゼロと文字 "o" (小文字または大文字) を使用してください (すなわち <code>0755n</code> ではなく <code>0o755n</code>)。{{bug(1568619)}} をご覧ください。</li>
+ <li>{{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}} コンストラクターで Unicode 拡張キーの "nu" をサポートしました。また、{{jsxref("RelativeTimeFormat.resolvedOptions", "Intl.RelativeTimeFormat.resolvedOptions()")}} メソッドが <code>numberingSystem</code> も返すようになりました ({{bug(1521819)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>{{domxref("History.back","back()")}}、{{domxref("History.forward","forward()")}}、{{domxref("History.go","go()")}} メソッドが非同期になりました。ナビゲーションが完了した通知を得るには、<code>{{domxref("Document/defaultView/popstate_event", "popstate")}}</code> イベントにリスナーを追加します({{Bug(1563587)}})。</li>
+ <li>web workers で {{DOMxRef("DOMMatrix")}}、{{DOMxRef("DOMPoint")}} などをサポートしました ({{bug(1420580)}})。</li>
+ <li>{{domxref("Document.all")}}、{{domxref("Document.clear")}}、{{domxref("Document.captureEvents")}}、{{domxref("Document.clearEvents")}} を {{domxref("HTMLDocument")}} から {{domxref("Document")}} に移動しました ({{bug(1558570)}}、{{bug(1558571)}})。</li>
+ <li>クロスオリジン {{htmlelement("iframe")}} の内部から <a href="/ja/docs/Web/API/Notifications_API">通知</a> の許可を要求できないようになりました ({{bug(1560741)}})。</li>
+</ul>
+
+<h4 id="WorkersService_workers" name="WorkersService_workers">Workers/Service workers</h4>
+
+<ul>
+ <li>worker や shared worker のスクリプト、すなわち {{domxref("Worker.Worker()", "Worker()")}} や {{domxref("SharedWorker.SharedWorker()", "SharedWorker()")}} コンストラクターの対象で、厳格な MIME タイプの確認を強制するようになりました ({{bug(1523706)}})。</li>
+</ul>
+
+<h4 id="Media_Web_Audio_and_WebRTC" name="Media_Web_Audio_and_WebRTC">メディア、Web Audio、WebRTC</h4>
+
+<ul>
+ <li>{{domxref("RTCPeerConnection.restartIce()")}} メソッドを追加しました。これは新しい "perfect negotiation" の仕組みを実装するために必要な、4 つの変更点のひとつです。残りは将来の Firefox の更新で実現する予定です ({{bug(1551316)}})。</li>
+ <li>{{domxref("RTCPeerConnection.setRemoteDescription()")}} メソッドを引数なしで呼び出せるようになりました。これはもうひとつの "perfect negotiation" に関する更新です ({{bug(1568292)}})。</li>
+ <li>{{domxref("MediaTrackSupportedConstraints.groupId")}} をサポートしました。また、{{domxref("MediaTrackConstraints.groupId")}} プロパティをサポートしましたので <code>true</code> を返すようになりました ({{bug(1561254)}})。</li>
+ <li>新たな Web Audio API 機能をいくつか実装および更新しました:
+ <ul>
+ <li>{{domxref("AudioContext.getOutputTimestamp()")}} を実装しました ({{bug(1324545)}})。</li>
+ <li>{{domxref("AudioContext.baseLatency")}} および {{domxref("AudioContext.outputLatency")}} を実装しました ({{bug(1324552)}})。</li>
+ <li>{{domxref("MediaElementAudioSourceNode.mediaElement")}} および {{domxref("MediaStreamAudioSourceNode.mediaStream")}} を実装しました ({{bug(1350973)}})。</li>
+ <li>{{domxref("ChannelMergerNode.ChannelMergerNode()", "ChannelMergerNode()")}} コンストラクターで、<code>channelCount</code> や <code>channelCountMode</code> に無効な値を設定しようとした場合にエラーが発生するようになりました ({{bug(1456263)}})。</li>
+ </ul>
+ </li>
+</ul>
+
+<h4 id="Canvas_and_WebGL" name="Canvas_and_WebGL">Canvas と WebGL</h4>
+
+<ul>
+ <li>{{domxref("CanvasRenderingContext2D.getTransform()")}} と、引数として行列の個々の要素を表す複数のパラメータに代わり matrix オブジェクトを受け入れる {{domxref("CanvasRenderingContext2D.setTransform()")}} の新しい派生形をサポートしました ({{bug(928150)}})。</li>
+</ul>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Firefox/Privacy/Tracking_Protection">強化型トラッキング防止機能</a> が有効であるときの、サードパーティーのトラッキングリソースに対する既定のリファラーのポリシーが <code>strict-origin-when-cross-origin</code> になりました ({{bug(1569996)}})。</li>
+ <li>{{httpheader("Referer")}} 要求ヘッダーのサイズが 4 KB (4,096 バイト) に制限されました。過大なリファラーが制限を超えた場合は、オリジンの部分のみ送信します ({{bug(1557346)}})。</li>
+ <li><a href="/ja/docs/Web/HTTP/Caching">HTTP キャッシュ</a> が、トップレベルドキュメントのオリジンごとに分割されました ({{bug(1536058)}})。</li>
+</ul>
+
+<h4 id="Removals_2" name="Removals_2">廃止</h4>
+
+<ul>
+ <li>{{HTTPHeader("X-Frame-Options")}} の <code>allow-from <em>uri</em></code> ディレクティブを削除しました。代わりに、{{CSP("frame-ancestors")}} ディレクティブを付加した {{HTTPHeader("Content-Security-Policy")}} ヘッダーを使用してください ({{bug(1301529)}})。</li>
+</ul>
+
+<h3 id="WebDriver_conformance_Marionette" name="WebDriver_conformance_Marionette">WebDriver conformance (Marionette)</h3>
+
+<ul>
+ <li><code>WebDriver:TakeScreenshot</code> コマンドを、<a href="https://wiki.mozilla.org/Project_Fission">Fission</a> 互換に更新しました。<a href="/ja/docs/Web/Security/Same-origin_policy">クロスオリジン</a> iframe 由来のコンテンツが、ページのスクリーンショットに含まれるようになります。あるいは chrome スコープから呼び出したとき、ブラウザーウィンドウの内部に、アクティブなタブの内容が見えるようになります ({{bug(1559592)}})。</li>
+ <li><code>WebDriver:TakeScreenshot</code> が、ハイライトに使用する DOM 要素のリストを受け入れないようになりました ({{bug(1575511)}})。</li>
+ <li><code>WebDriver:ExecuteScript</code> および <code>WebDriver:ExecuteAsyncScript</code> が、<code>window.onunload</code> をウェブに公開される方法で設定しないようになりました ({{bug(1568991)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<h3 id="API_changes" name="API_changes">API の変更点</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/topSites/get">topSites.get()</a></code> メソッドに、ユーザーが新しいタブを開いたときに表示するページの一覧を返すようにするための新しい引数を追加しました ({{bug(1568617)}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/privacy/network">privacy.network</a></code> プロパティの <code>WebRTCIPHandlingPolicy</code> サブプロパティで許可される値を、Chrome で見られる動作に合うよう修正しました ({{bug(1452713)}}):
+ <ul>
+ <li>以前はプロキシが設定されていない場合に、<code>disable_non_proxied_udp</code> が WebRTC の使用を妨げていました。現在は、プロキシが設定されている場合は常にプロキシを使います。設定されていない場合は、プロキシを経由しない接続を許可するようになりました。</li>
+ <li><code>proxy_only</code> を、古い動作を提供するために使用できるようになりました。これは、プロキシを使用した TURN on TCP による ICE ネゴシエーションのみ許可する効果があります。これ以外の接続は許可されません。</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="Manifest_changes" name="Manifest_changes">マニフェストの変更点</h3>
+
+<h4 id="Removals_3" name="Removals_3">廃止</h4>
+
+<ul>
+ <li>chromium ベースのブラウザーで使用するテーマキーの別名として提供された、以下の <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">theme</a> キープロパティを削除しました:
+
+ <ul>
+ <li><code>images</code> プロパティの <code>headerURL</code>。今後は <code>theme_frame</code> を使用してください。</li>
+ <li><code>colors</code> プロパティ:
+ <ul>
+ <li><code>accentcolor</code>。今後は <code>frame</code> を使用してください。</li>
+ <li><code>textcolor</code>。今後は <code>tab_background_text</code> を使用してください。</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>Hacks ブログのリリース記事: <a href="https://hacks.mozilla.org/2019/10/firefox-70-a-bountiful-release-for-all/">Firefox 70 — a bountiful release for all</a></li>
+ <li><a href="https://www.fxsitecompat.com/versions/70/">Firefox 70 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(69)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/71/index.html b/files/ja/mozilla/firefox/releases/71/index.html
new file mode 100644
index 0000000000..8b90398ed0
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/71/index.html
@@ -0,0 +1,164 @@
+---
+title: Firefox 71 for Developers
+slug: Mozilla/Firefox/Releases/71
+tags:
+ - '71'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/71
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">Firefox 71 は、米国時間 2019 年 12 月 3 日 にリリースされました。このページでは、開発者に影響する Firefox 71 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p><a href="/ja/docs/Tools/Web_Console">コンソール</a>:</p>
+
+<ul>
+ <li>コンソールの <a href="/ja/docs/Tools/Web_Console/The_command_line_interpreter#Multi-line_mode">マルチラインモード</a> をデフォルトで有効にしました。</li>
+ <li>コンソールの設定項目が、新しい <a href="/ja/docs/Tools/Web_Console/Opening_the_Web_Console#Toolbar">ツールバーの設定メニュー</a> に統合されました ({{bug(1523868)}})。</li>
+</ul>
+
+<p><a href="/ja/docs/Tools/Debugger">JavaScript デバッガー</a>:</p>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Debugger/How_to/Set_a_breakpoint#Inline_variable_preview">インラインの変数プレビュー</a> を有効にしました ({{bug(1576679)}})。</li>
+ <li>as is the ability to <a href="/ja/docs/Tools/Debugger/Set_event_listener_breakpoints#Filter_by_event_type">イベントのタイプによるフィルタリング</a> と同様に、<a href="/ja/docs/Tools/Debugger/Set_event_listener_breakpoints#Logging_on_events">イベントのログ記録</a> が可能になりました ({{bug(1110276)}})。</li>
+ <li>デバッガーの新しい <a href="/ja/docs/Tools/Debugger/How_to/Step_through_code#Pause_on_breakpoints_overlay">一時停止のオーバーレイ</a> を、設定項目 <code>devtools.debugger.features.overlay</code> を使用して無効化できるようになりました ({{bug(1579768)}})。</li>
+ <li>デバッガーを開く新しい <a href="/ja/docs/Tools/Keyboard_shortcuts">キーボードショートカット</a> が使用可能になりました: Linux/Windows では <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>Z</kbd>、macOS では <kbd>Cmd</kbd> + <kbd>Opt</kbd> + <kbd>Z</kbd> です ({{bug(1583042)}})。</li>
+ <li><a href="/ja/docs/Tools/Debugger/Break_on_DOM_mutation">DOM Mutation のブレークポイント</a> で一時停止すると、ブレークポイントを持つ DOM ノードや (存在すれば) 追加/削除された子ノードを表示するようになりました ({{bug(1576145)}})。</li>
+ <li><a href="/ja/docs/Tools/Debugger/How_to/Pretty-print_a_minified_file">整形されたソース</a> 内の位置が、整形した後やインスペクターの <a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_event_listeners">イベントリスナーのツールチップ</a> からジャンプしたときも正確になりました ({{bug(1500222)}})。</li>
+</ul>
+
+<p><a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a>:</p>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Network_Monitor/Inspecting_web_sockets">Web sockets インスペクター</a> をデフォルトで有効化しました ({{bug(1573805)}})。</li>
+ <li>要求/応答のボディ、ヘッダー、Cookie の <a href="/ja/docs/Tools/Network_Monitor/request_list#Search_in_requests">全文検索</a> が可能になりました。</li>
+ <li>読み込み時に <a href="/ja/docs/Tools/Network_Monitor/request_list#Blocking_specific_URLs">特定の URL をブロックする</a> パターンを入力できるようになりました。</li>
+ <li><a href="/docs/Tools/Network_Monitor/request_details#Timings">タイミングタブ</a> で、{{httpheader("Server-Timing")}} ヘッダーで送信したタイミングデータを表示するようになりました ({{bug(1403051)}})。</li>
+</ul>
+
+<p><a href="/ja/docs/Tools/Page_Inspector">インスペクター</a>:</p>
+
+<ul>
+ <li>色の値を持つ CSS 変数の定義の隣に、色見本を表示するようになりました ({{bug(1456167)}})。</li>
+ <li>{{cssxref(":visited")}} のスタイルを CSS ルールビューで表示するようになりました ({{bug(713106)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>CSS Grid Level 2 から値 <a href="/ja/docs/Web/CSS/CSS_Grid_Layout/Subgrid">subgrid</a> を、{{cssxref("grid-template-columns")}} および {{cssxref("grid-template-rows")}} に追加しました ({{bug(1580894)}})。</li>
+ <li><a href="/ja/docs/Web/CSS/CSS_Columns">段組みレイアウト</a> で {{cssxref("column-span")}} をサポートしました ({{bug(1426010)}})。</li>
+ <li>{{cssxref("clip-path")}} で <code>path()</code> の値をサポートしました ({{bug(1488530)}})。</li>
+ <li>{{htmlelement("img")}} 要素の <code>height</code> および <code>width</code> HTML 属性を、内部の {{cssxref("aspect-ratio")}} プロパティにマッピングしました ({{bug(1585637)}})。<a href="/ja/docs/Web/Media/images/aspect_ratio_mapping">この機能について、MDN のガイドをご覧ください</a>。</li>
+</ul>
+
+<h4 id="Removals_2" name="Removals_2">廃止</h4>
+
+<ul>
+ <li>CSS Radial Gradients が、負の値の半径を受け入れないようになりました ({{bug(1583736)}})。<a href="https://www.fxsitecompat.dev/docs/2019/css-radial-gradients-no-longer-accept-negative-radii/">サイト互換性情報の記事</a> をご覧ください。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("Promise.allSettled()")}} メソッドをサポートしました ({{bug(1549176)}})。このメソッドは、先のコードを実行する前に promise のセットに含まれるすべての promise が解決または拒否されるまで待つことを容易にします。</li>
+</ul>
+
+<h4 id="Removals_3" name="Removals_3">廃止</h4>
+
+<ul>
+ <li>Array の非標準のジェネリックメソッドを、Firefox 71 で削除しました ({{bug(1222547)}})。これらは始めに Firefox 1.5 (<a href="/ja/docs/Web/JavaScript/New_in_JavaScript/1.6">JavaScript 1.6</a>) で導入されて、Firefox 68 から非推奨になりました。配列状のオブジェクトで Array のジェネリックメソッドを使用している場合は、<code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/from">Array.from()</a></code> を使用してオブジェクトを適切な配列に変換して、標準のメソッドを使用するようにしてください。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/MathML/Element">MathML 要素</a> が MathML DOM を実装しました。クラスは {{domxref("MathMLElement")}} です。例えば適切な MathML DOM と、<code>mathmlEl.style</code>、グローバルイベントハンドラーを使用できます。従来は MathML 要素が {{domxref("Element")}} クラスのみ実装していました ({{bug(1571487)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<p><a href="/ja/docs/Web/API/Media_Session_API">Media Session API</a> を部分的に実装しました。この API は、メディアの再生状態に関するオペレーティングシステムの情報をコンテンツと共有するための標準的な仕組みを提供します。これはアーティスト、アルバム、トラック名、あるいはアルバムのアートワークといったメタデータを含みます ({{bug(1580602)}})。</p>
+
+<p>またこの API は、デバイスのメディア操作 (再生、停止、シークボタンなど) がユーザーによって行われたときに通知を受ける手段も提供します。このために {{domxref("MediaSession")}} インターフェイスを部分的に実装して、現在再生しているメディアのメタデータを設定および取得する機能や {{domxref("MediaSession.setActionHandler", "setActionHandler()")}} メソッドをサポートしました。<code>MediaSession</code> API へアクセスするには、{{domxref("navigator.mediaSession")}} プロパティを使用してください。</p>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>{{domxref("StaticRange.StaticRange()", "StaticRange()")}} コンストラクターをサポートしました ({{bug(1575980)}})。</li>
+ <li>MathML の {{domxref("MathMLElement")}} インターフェイスを実装しました ({{bug(1571487)}})。</li>
+</ul>
+
+<h4 id="Media_Web_Audio_and_WebRTC" name="Media_Web_Audio_and_WebRTC">メディア、Web Audio、WebRTC</h4>
+
+<ul>
+ <li>{{domxref("MediaRecorder")}} インターフェイスに {{domxref("MediaRecorder.audioBitsPerSecond", "audioBitsPerSecond")}} および {{domxref("MediaRecorder.videoBitsPerSecond", "videoBitsPerSecond")}} プロパティを実装しました ({{bug(1514158)}})。</li>
+</ul>
+
+<h4 id="Canvas_and_WebGL" name="Canvas_and_WebGL">Canvas と WebGL</h4>
+
+<ul>
+ <li>{{domxref("OVR_multiview2")}} および {{domxref("OES_fbo_render_mipmap")}} WebGL 拡張をデフォルトで公開しました ({{bug(1584277)}}, {{bug(1583878)}})。</li>
+</ul>
+
+<h4 id="Removals_4" name="Removals_4">廃止</h4>
+
+<p>{{domxref("DataTransfer")}} の、非標準のメンバーを削除しました ({{bug(1345192)}}):</p>
+
+<ul>
+ <li>{{domxref("DataTransfer.mozItemCount")}}</li>
+ <li>{{domxref("DataTransfer.mozClearDataAt()")}}</li>
+ <li>{{domxref("DataTransfer.mozGetDataAt()")}}</li>
+ <li>{{domxref("DataTransfer.mozSetDataAt()")}}</li>
+ <li>{{domxref("DataTransfer.mozTypesAt()")}}</li>
+</ul>
+
+<h3 class="highlight-spanned" id="WebDriver_conformance_Marionette"><span class="highlight-span">WebDriver conformance (Marionette)</span></h3>
+
+<ul>
+ <li><code>WebDriver:TakeScreenshot</code> および <code>WebDriver:TakeElementScreenshot</code> コマンドを、未処理のプロンプトの動作設定を尊重するように更新しました ({{bug(1584927)}})。</li>
+ <li><code>Marionette:Quit</code> コマンドを、Firefox 以外の Gecko 駆動アプリケーションも終了または再起動できるように更新しました ({{bug(1298921)}})。</li>
+ <li>Android の GeckoView ベースブラウザーで、セッション機能で返される <code>browserName</code> が常に <code>firefox</code> になります ({{bug(1587364)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<h3 id="API_changes" name="API_changes">API の変更点</h3>
+
+<ul>
+ <li>{{WebExtAPIRef("downloads.download")}} が、以下の HTTP レスポンスコードをエラーとして識別および報告するようになりました:
+ <ul>
+ <li>404 で <code>SERVER_BAD_CONTENT</code> を返します</li>
+ <li>403 で <code>SERVER_FORBIDDEN</code> を返します</li>
+ <li>402 および Proxy 407 で <code>SERVER_UNAUTHORIZED</code> を返します</li>
+ <li>上記以外の 400 で <code>SERVER_FAILED</code> を返します ({{bug(1576333)}})。</li>
+ </ul>
+ </li>
+ <li>{{WebExtAPIRef("downloads.download")}} の省略可能な <code>options</code> 引数に、<code>allowHttpErrors</code> プロパティを含むようになりました。この <code>boolean</code> フラグを <code>true</code> に設定すると、HTTP エラーが発生した後もダウンロードを続けることができます。<code>false</code> に設定すると HTTP エラーが発生した際にダウンロードをキャンセルします。既定値は <code>false</code> です ({{bug(1578955)}})。</li>
+</ul>
+
+<h4 id="Removals_5" name="Removals_5">廃止</h4>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/proxy/register" title="This method has been deprecated in Firefox 68 and will be removed from Firefox 71. In Firefox 68 or later, calling this method logs an error message to the console:"><code>proxy.register()</code></a> および <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/proxy/unregister" title="This method has been deprecated in Firefox 68 and will be removed from Firefox 71. In Firefox 68 or later, calling this method logs an error message to the console:"><code>proxy.unregister()</code></a> 関数を削除しました ({{bug(1443259)}})。要求のプロキシ使用を制御するには {{WebExtAPIRef("proxy.onRequest")}} を使用してください。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>Hacks ブログのリリース記事: <a href="https://hacks.mozilla.org/2019/12/firefox-71-a-year-end-arrival/">Firefox 71: A year-end arrival</a></li>
+ <li><a href="https://www.fxsitecompat.com/versions/71/">Firefox 71 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(70)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/72/index.html b/files/ja/mozilla/firefox/releases/72/index.html
new file mode 100644
index 0000000000..c53ad2e7bc
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/72/index.html
@@ -0,0 +1,183 @@
+---
+title: Firefox 72 for Developers
+slug: Mozilla/Firefox/Releases/72
+tags:
+ - '72'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/72
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">Firefox 72 は、米国時間 2020 年 1 月 7 日にリリースされました。このページでは、開発者に影響する Firefox 72 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<p><a href="/ja/docs/Tools/Web_Console">コンソール</a>:</p>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Web_Console/The_command_line_interpreter#Multi-line_mode">インタラクティブ JS インタープリターのマルチラインモード</a> で、キーボードショートカット <kbd>Ctrl</kbd> + <kbd>O</kbd> および <kbd>Ctrl</kbd> + <kbd>S</kbd> を使用してファイルを開いたり保存したりできるようになりました ({{bug(1592308)}})。</li>
+ <li><a href="/ja/docs/Tools/Web_Console/Console_messages#Async_stack_frames">非同期メッセージを視覚的に分ける設定</a> が可能になりました ({{bug(1592969)}})。</li>
+</ul>
+
+<p><a href="/ja/docs/Tools/Debugger">JavaScript デバッガー</a>:</p>
+
+<ul>
+ <li>スコープパネルでオブジェクトを右クリックまたは <kbd>Ctrl</kbd> を押しながらクリックして<em>プロパティの設定</em> または <em>プロパティの取得</em> を選択すると、<a href="/ja/docs/Tools/Debugger/How_to/Use_watchpoints#Set_a_watchpoint">ウォッチポイント</a> を設定できます ({{bug(1574192)}})。</li>
+</ul>
+
+<p><a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a>:</p>
+
+<ul>
+ <li>タイミングタブで、それぞれのリソースの <a href="/ja/docs/Tools/Network_Monitor/request_details#Queued_Started_Downloaded">Queued、Started、Downloaded</a> 時間を表示するようになりました ({{bug(1580431)}})。</li>
+</ul>
+
+<p><a href="/ja/docs/Tools/Page_Inspector">インスペクター</a>:</p>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/CSS/@media/prefers-color-scheme">prefers-color-scheme</a></code> メディア特性のさまざまな値の <a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#View_media_rules_for_color-scheme-preference">シミュレーターを有効化する設定</a> が可能になりました ({{bug(1550804)}})。</li>
+</ul>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Scratchpad">スクラッチパッド</a> を削除しました ({{bug(1519103)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>CSS Shadow Parts が有効になりました。これは <a href="/ja/docs/Web/HTML/Global_attributes/part"><code>part</code> 属性</a> や <a href="/ja/docs/Web/CSS/::part"><code>::part</code> 疑似要素</a> が含まれており、スタイル設定のためにシャドーホストが自身のシャドーツリーから選択した要素を選択的に出力ページへ公開できます ({{bug(1559074)}})。</li>
+ <li><a href="/ja/docs/Web/CSS/CSS_Motion_Path">CSS Motion Path</a> を実装しました ({{bug(1582554)}} および <a href="https://groups.google.com/forum/#!topic/mozilla.dev.platform/nOOIRsuxvuc">実装目的</a> をご覧ください)。以下のプロパティが含まれます:
+ <ul>
+ <li>{{cssxref("offset")}}</li>
+ <li>{{cssxref("offset-path")}}</li>
+ <li>{{cssxref("offset-anchor")}}</li>
+ <li>{{cssxref("offset-distance")}}</li>
+ <li>{{cssxref("offset-rotate")}}</li>
+ </ul>
+ </li>
+ <li>個々の変形関連プロパティ ({{cssxref("scale")}}、{{cssxref("rotate")}}、{{cssxref("translate")}}) をデフォルトで有効にしました ({{bug(1424900)}})。</li>
+</ul>
+
+<h4 id="Removals_2" name="Removals_2">廃止</h4>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing_operator">nullish coalescing operator</a> を実装しました ({{bug(1566141)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li>{{domxref("FormDataEvent")}} および <a href="/ja/docs/Web/API/FormData/Using_FormData_Objects#Using_a_formdata_event">イベントに基づくフォームへの関与</a> をデフォルトで有効にしました ({{bug(1594708)}})。</li>
+</ul>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>最近の仕様変更に応じて、<a href="/ja/docs/Web/API/Geolocation_API">Geolocation API</a> でいくつかのインターフェイス名を更新しました ({{bug(1575144)}}):
+
+ <ul>
+ <li>{{domxref("Coordinates")}} を {{domxref("GeolocationCoordinates")}} に変更しました。</li>
+ <li>{{domxref("Position")}} を {{domxref("GeolocationPosition")}} に変更しました。</li>
+ <li>{{domxref("PositionError")}} を {{domxref("GeolocationPositionError")}} に変更しました。</li>
+ </ul>
+ </li>
+ <li>いくつかのプロパティを、標準の stringifier を使用するように更新しました ({{bug(824857)}}):
+ <ul>
+ <li>{{domxref("DOMTokenList.value")}}</li>
+ <li>{{domxref("HTMLHyperlinkElementUtils.href")}}</li>
+ <li>{{domxref("Location.href")}}</li>
+ <li>{{domxref("MediaList.mediaText")}}</li>
+ <li>{{domxref("URL.href")}}</li>
+ <li>{{domxref("WorkerLocation.href")}}</li>
+ </ul>
+ </li>
+</ul>
+
+<h4 id="DOM_events" name="DOM_events">DOM イベント</h4>
+
+<ul>
+ <li>{{domxref("Notification.requestPermission()")}} および {{domxref("PushManager.subscribe()")}} が、<code><a href="/ja/docs/Web/API/Element/click_event">click</a></code> イベントのようなユーザー操作に応じてのみ呼び出せるようになりました ({{bug(1593644)}})。</li>
+</ul>
+
+<h4 id="Service_workers" name="Service_workers">Service workers</h4>
+
+<ul>
+ <li>{{domxref("WindowOrWorkerGlobalScope.crossOriginIsolated")}} プロパティをサポートしました ({{bug(1591892)}})。</li>
+</ul>
+
+<h4 id="Media_Web_Audio_and_WebRTC" name="Media_Web_Audio_and_WebRTC">メディア、Web Audio、WebRTC</h4>
+
+<ul>
+ <li>{{domxref("MediaDevices.getDisplayMedia()")}} メソッドが、<code><a href="/ja/docs/Web/API/Element/click_event">click</a></code> イベントのようなユーザー操作に応じてのみ呼び出せるようになりました ({{bug(1580944)}})。</li>
+ <li>{{domxref("RTCRtpContributingSource")}} ディクショナリーが {{domxref("RTCRtpContributingSource.rtpTimestamp", "rtpTimestamp")}} プロパティを持てるようになりました。これはパケットのメディアが生成またはサンプリングされた時点の source-generated time です ({{bug(1583867)}})。</li>
+</ul>
+
+<h4 id="Removals_3" name="Removals_3">廃止</h4>
+
+<ul>
+ <li>非標準の {{DOMxRef("window.mozPaintCount")}} プロパティを削除しました ({{bug(1591968)}})。</li>
+ <li>{{domxref("BatteryManager")}} インターフェイスは web content で使用できなくなりました ({{bug(1441976)}})。</li>
+ <li>{{domxref("Navigator.vibrate()")}} はクロスオリジンの {{htmlelement("iframe")}} でサポートされなくなりました ({{bug(1591113)}})。</li>
+ <li>WebRTC は <code>simulcast</code> で <code>rid=</code> および <code>pt=</code> のパラメーターをサポートしなくなりました。"<code>a=simulcast: send rid=7 recv rid=8</code>" のような行の新しい構文は "<code>a=simulcast: send 7 recv 8</code>" です。新しい構文は Firefox 68 からサポートしており、古い構文のサポートを廃止する時期になりました ({{bug(1470568)}})。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<ul>
+ <li>{{HTTPHeader("Content-type")}} が提供されていれば、{{HTTPHeader("X-Content-Type-Options")}} を使用した MIME スニッフィングのオプトアウトをトップレベルドキュメントも適用するようになりました。HTML ウェブページを <code>text/html</code> 以外の MIME タイプで提供するとき、表示する代わりにダウンロードさせることができます。両方のヘッダーを正しく設定するようにしてください ({{bug(1591932)}})。</li>
+ <li>採択率の低さと相互運用性の問題のため、<a href="/ja/docs/Web/HTTP/Public_Key_Pinning">HTTP Public Key Pinning (HPKP)</a> のサポートを廃止しました。{{HTTPHeader("Public-Key-Pins")}} および {{HTTPHeader("Public-Key-Pins-Report-Only")}} ヘッダーは黙って無視されるようになりました ({{bug(1412438)}})。</li>
+</ul>
+
+<h3 id="Plugins" name="Plugins">プラグイン</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="WebDriver_conformance_Marionette" name="WebDriver_conformance_Marionette">WebDriver conformance (Marionette)</h3>
+
+<ul>
+ <li><code>WebDriver:FindElement</code> および <code>WebDriver:FindElements</code> コマンドから、<code>Anon</code> および <code>AnonAttribute</code> ストラテジーを削除しました ({{bug(1587627)}})。</li>
+ <li><code>Webdriver:TakeScreenshot</code> が、キャプチャーされた領域が canvas の幅、高さ、サイズの最大上限値を超えても失敗しないようになりました ({{bug(1590064)}}).</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<h3 id="API_changes" name="API_changes">API の変更点</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/ftpProtocolEnabled">browserSettings.ftpProtocolEnabled</a></code> プロパティを実装しました ({{bug(1592687)}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/types/BrowserSetting/onChange">BrowserSetting.onChange</a></code> イベントを実装しました ({{bug(1410412)}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/captivePortal/canonicalURL">captivePortal.canonicalURL</a></code> プロパティを実装しました ({{bug(1592932)}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browserAction/onClicked">browserAction.onClicked</a></code> および <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/pageAction/onClicked">pageAction.onClicked</a></code> イベントのコールバック関数が、キーボードモディファイアとともに押されたマウスボタンを示すプロパティを持つオブジェクトを含む、<code>OnClickData</code> プロパティを含むようになりました ({{bug(1405031)}})。これは、付加的な種類のマウスクリックのサポートを可能にします。</li>
+</ul>
+
+<h3 id="Manifest_changes" name="Manifest_changes">マニフェストの変更点</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>Hacks ブログのリリース記事: <a href="https://hacks.mozilla.org/2020/01/firefox-72-our-first-song-of-2020/">Firefox 72 — our first song of 2020</a></li>
+ <li><a href="https://www.fxsitecompat.com/versions/72/">Firefox 72 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(71)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/73/index.html b/files/ja/mozilla/firefox/releases/73/index.html
new file mode 100644
index 0000000000..155cada75f
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/73/index.html
@@ -0,0 +1,113 @@
+---
+title: Firefox 73 for developers
+slug: Mozilla/Firefox/Releases/73
+tags:
+ - '73'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/73
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">Firefox 73 は、米国時間 2020 年 2 月 11 日にリリースされました。このページでは、開発者に影響する Firefox 73 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/HTTP/CORS/Errors">CORS のエラー</a> をコンソールでエラーとして示す (警告として表示しない) ことで、適切な表示になりました ({{bug(1602093)}})。</li>
+ <li>ウェブコンソールの文字列検索や正規表現検索で、<a href="/ja/docs/Tools/Web_Console/Console_messages#Filtering_and_searching">'-' を前につけて否定することが可能になりました</a> ({{bug(1291192)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("overscroll-behavior-x")}} および {{cssxref("overscroll-behavior-y")}} を論理的にしたものである {{cssxref("overscroll-behavior-block")}} および {{cssxref("overscroll-behavior-inline")}} を追加しました ({{bug(833953)}})。</li>
+</ul>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<ul>
+ <li>独自仕様である <code><a href="/ja/docs/Web/CSS/@media/-moz-touch-enabled">-moz-touch-enabled</a></code> メディアクエリーを削除しました ({{bug(1486964)}})。代わりに <code><a href="/ja/docs/Web/CSS/@media/pointer">pointer: coarse</a></code> を使用してください。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<ul>
+ <li>{{SVGAttr("letter-spacing")}} および {{SVGAttr("word-spacing")}} プロパティが SVG で動作するようになりました ({{bug(371787)}})。</li>
+</ul>
+
+<h3 id="MathML" name="MathML">MathML</h3>
+
+<h4 id="Removals_2" name="Removals_2">廃止</h4>
+
+<ul>
+ <li>非推奨の {{MathMLElement("mfenced")}} 要素を削除しました ({{bug(1603773)}})。代わりに {{MathMLElement("mrow")}} および {{MathMLElement("mo")}} 要素を使用してください。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>The <code>yearName</code> および <code>relatedYear</code> フィールドが <code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts">DateTimeFormat.prototype.formatToParts()</a></code> メソッドで使用可能になりました。CJK カレンダー向けに役立つフォーマットです ({{bug(1591664)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>{{domxref("Window")}} オブジェクトの {{domxref("Window.innerWidth", "innerWidth")}} および {{domxref("Window.innerHeight", "innerHeight")}} プロパティが、ときどき視覚的なビューポートに基づいて幅や高を返すことなく、常にレイアウトビューポートの幅や高さを返すようになりました。特に、以前は <a href="/ja/docs/Tools/Responsive_Design_Mode">レスポンシブデザインモード</a> を使用するときに視覚的なビューポートの寸法を返しており、想定とは異なる動作でした ({{bug(1514429)}})。</li>
+</ul>
+
+<h4 id="WebVR" name="WebVR">WebVR</h4>
+
+<ul>
+ <li>非推奨の <a href="/ja/docs/Web/API/WebVR_API">WebVR API</a> (<a href="https://ja.wikipedia.org/wiki/%E6%8B%A1%E5%BC%B5%E7%8F%BE%E5%AE%9F">拡張現実</a> および <a href="https://ja.wikipedia.org/wiki/%E3%83%90%E3%83%BC%E3%83%81%E3%83%A3%E3%83%AB%E3%83%BB%E3%83%AA%E3%82%A2%E3%83%AA%E3%83%86%E3%82%A3">バーチャル・リアリティ</a> アプリケーションの両方をサポートする <a href="/ja/docs/Web/API/WebXR_Device_API">WebXR</a> に取って代わられました) を動作させるために、{{Glossary("HTTPS")}} プロトコルを使用する <a href="/ja/docs/Web/API/WebVR_API#API_availability">安全なコンテキストが必要になりました</a>。これは、個人情報を含む可能性がある機微な入力ソースを使用できるためです ({{bug(1381645)}})。</li>
+</ul>
+
+<h4 id="Removals_3" name="Removals_3">廃止</h4>
+
+<ul>
+ <li>{{domxref("VideoPlaybackQuality")}} の {{domxref("VideoPlaybackQuality.corruptedVideoFrames", "corruptedVideoFrames")}} プロパティは仕様書で非推奨とされており、Firefox から削除しました ({{bug(1602163)}})。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="WebDriver_conformance_Marionette" name="WebDriver_conformance_Marionette">WebDriver conformance (Marionette)</h3>
+
+<ul>
+ <li>カレントページを PDF 文書として印刷する <code>WebDriver:Print</code> を追加しました ({{bug(1604506)}})。</li>
+ <li><code>Webdriver:TakeScreenshot</code> が、キャプチャーする要素が指定されていない場合に現在選択されているブラウジングコンテキストではなく、常にトップレベルのブラウジングコンテキストをキャプチャーするようになりました ({{bug(1398087)}}, {{bug(1606794)}})。</li>
+ <li><code>Webdriver:TakeScreenshot</code> の <code>full</code> 引数を使用すると、ページ全体をキャプチャーします ({{bug(1571424)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<h3 id="API_changes" name="API_changes">API の変更点</h3>
+
+<ul>
+ <li>{{WebExtAPIRef("sidebarAction.toggle()")}} 関数を実装しました (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1453355" rel="noopener" title="FIXED: Expose ftp protocol enabled/disabled via browserSettings">bug 1453355</a>)。</li>
+</ul>
+
+<h3 id="Manifest_changes" name="Manifest_changes">マニフェストの変更点</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>Hacks ブログの記事: <a href="https://hacks.mozilla.org/2020/02/firefox-73-is-upon-us/">Firefox 73 is upon us</a></li>
+ <li><a href="https://www.fxsitecompat.com/versions/73/">Firefox 73 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(72)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/74/index.html b/files/ja/mozilla/firefox/releases/74/index.html
new file mode 100644
index 0000000000..2ccea581e4
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/74/index.html
@@ -0,0 +1,139 @@
+---
+title: Firefox 74 for developers
+slug: Mozilla/Firefox/Releases/74
+tags:
+ - '74'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/74
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">Firefox 74 は、米国時間 2020 年 3 月 10 日にリリースされました。このページでは、開発者に影響する Firefox 74 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<h4 id="Web_console" name="Web_console">ウェブコンソール</h4>
+
+<ul>
+ <li><code>$x()</code> <a href="/ja/docs/Tools/Web_Console/Helpers">ウェブコンソールヘルパー</a> の第 3 引数 (結果の型) が、<a href="/ja/docs/Web/API/XPathResult#Constants"><code>XPathResult</code> 定数</a> と同様に単純な文字列値を受け入れるようになりました ({{bug(1602591)}})。</li>
+ <li>コンソールのオートコンプリートでも使用可能な、optional chaining 演算子 "?." を新たにサポートしました ({{bug(1594009)}})。</li>
+ <li>デバッガーで <a href="/ja/docs/Web/API/Web_Workers_API/Using_web_workers">入れ子の worker</a> を調査およびデバッグできるようになりました ({{bug(1590766)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/CSS/text-underline-position">text-underline-position</a></code> をデフォルトで有効にしました ({{bug(1606997)}})。</li>
+ <li><code><a href="/ja/docs/Web/CSS/text-underline-offset">text-underline-offset</a></code> および <code><a href="/ja/docs/Web/CSS/text-decoration-thickness">text-decoration-thickness</a></code> プロパティがパーセンテージの値を受け入れるようになりました ({{bug(1607534)}})。</li>
+ <li>{{cssxref("outline-style")}} プロパティの値 <code>auto</code> をデフォルトで有効にしました ({{bug(1031664)}})。</li>
+</ul>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<ul>
+ <li><code>-moz-</code> 接頭辞がついた <a href="/ja/docs/Learn/CSS/CSS_layout/Multiple-column_Layout">マルチカラムレイアウト</a> 関連のプロパティを削除しました ({{bug(1308636)}})。詳しくは <a href="https://www.fxsitecompat.dev/docs/2020/prefixed-css-multi-column-properties-have-been-removed/">Firefox サイト互換性情報をご覧ください</a>。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><a href="/docs/Web/JavaScript/Reference/Operators/Optional_chaining">Optional chaining operator</a> を実装しました ({{bug(1566143)}})。</li>
+ <li>JavaScript URL (<code>javascript:</code>) を評価した結果が文字列であるとき、この文字列は HTML 文書を生成するように解析され、そして表示されます。以前は文書の URL (例えば <code><a href="/ja/docs/Web/API/Document/location">document.location</a></code> プロパティで報告されます) が元々の <code>javascript:</code> URL でした。これが <code>javascript:</code> URL を評価した結果の、文書の URL を正しく表すようになりました ({{bug(836567)}})。</li>
+</ul>
+
+<h4 id="Removals_2" name="Removals_2">廃止</h4>
+
+<ul>
+ <li>{{jsxref("Object.toSource()")}} メソッドおよび {{jsxref("uneval()")}} グローバル関数が、ウェブコンテンツや拡張機能で使用できなくなりました ({{bug(1565170)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>{{domxref("IDBTransaction.commit()")}} メソッドを実装しました ({{bug(1497007)}})。</li>
+</ul>
+
+<h4 id="DOM_events" name="DOM_events">DOM イベント</h4>
+
+<ul>
+ <li>Firefox 74 で {{domxref("WorkerGlobalScope.languagechange_event", "languagechange_event")}} イベントと、対応するイベントハンドラープロパティの {{domxref("WorkerGlobalScope.onlanguagechange", "onlanguagechange")}} をサポートしました。これはユーザーが希望する言語を変更したときに発生します ({{bug(1154779)}})。これは過去に Firefox 3.5 からサポートしていると <a href="https://github.com/mdn/browser-compat-data">互換性データベース</a> に記載されていましたが、誤っていました。</li>
+</ul>
+
+<h4 id="Canvas_and_WebGL" name="Canvas_and_WebGL">Canvas と WebGL</h4>
+
+<ul>
+ <li>{{domxref("TextMetrics")}} インターフェイスを、実際のバウンディングボックスを測定する 4 つのプロパティ (<code><a href="/ja/docs/Web/API/TextMetrics/actualBoundingBoxLeft">actualBoundingBoxLeft</a></code>、<code><a href="/ja/docs/Web/API/TextMetrics/actualBoundingBoxRight">actualBoundingBoxRight</a></code>、<code><a href="/ja/docs/Web/API/TextMetrics/actualBoundingBoxAscent">actualBoundingBoxAscent</a></code>、<code><a href="/ja/docs/Web/API/TextMetrics/actualBoundingBoxDescent">actualBoundingBoxDescent</a></code>) を持つように拡張しました。テキストメトリクスは {{domxref("CanvasRenderingContext2D.measureText()")}} メソッドを使用して取得できます ({{bug(1102584)}})。</li>
+</ul>
+
+<h4 id="Removals_3" name="Removals_3">廃止</h4>
+
+<ul>
+ <li><code>IDBDatabase.createMutableFile()</code> メソッド (非標準) が支持されているため、同じく非標準の <code>IDBDatabase.mozCreateFileHandle()</code> メソッドを削除しました ({{bug(1024312)}})。</li>
+ <li>非標準の <code>IDBMutableFile.getFile()</code> メソッドを削除しました ({{bug(1607791)}})。</li>
+ <li>{{domxref("HTMLCanvasElement")}} の非標準メソッドである {{domxref("HTMLCanvasElement.mozGetAsFile", "mozGetAsFile()")}} を削除しました。これは数年前から非推奨でした ({{bug(1588980)}})。</li>
+ <li>{{domxref("FetchEvent")}} の {{domxref("FetchEvent.isReload", "isReload")}} プロパティを、Firefox および仕様書から削除しました ({{bug(1264175)}})。</li>
+</ul>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<ul>
+ <li>Feature Policy をデフォルトで有効にしました! フレームの許可を設定するには {{HTMLElement("iframe")}} 要素の {{htmlattrxref("allow", "iframe")}} 属性 (および {{domxref("HTMLIFrameElement")}} の {{domxref("HTMLIFrameElement.allow", "allow")}} プロパティ) を使用してください ({{bug(1617219)}})。</li>
+ <li><code><a href="/ja/docs/Web/HTTP/Headers/Cross-Origin-Resource-Policy">Cross-Origin-Resource-Policy</a></code> ヘッダーをデフォルトで有効にしました ({{bug(1602363)}})。</li>
+</ul>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<ul>
+ <li>TLS 1.0 および 1.1 のサポートを Firefox から削除しました。今後はサーバーで TLS 1.2 または 1.3 をサポートすることが必要です。今後は古いバージョンの TLS を使用するサーバーに接続すると、<a href="https://support.mozilla.org/en-US/kb/secure-connection-failed-firefox-did-not-connect">Secure Connection Failed</a> エラーが発生します ({{bug(1606734)}})。</li>
+ <li>Firefox 74 から、サイトが {{htmlattrxref("allow", "iframe")}} 属性を使用して {{HTMLElement("iframe")}} 内の埋め込みコンテンツにリソースへのアクセス許可を与えて、埋め込まれたページがそのリソースの使用許可を要求したとき、埋め込まれたドメインにリソースの使用許可や共有許可を与えるかを、外側のページと内側のページの両方が許可を確認するのではなく、親ページがユーザーへ確認するようになりました。外側のぺーが <code>allow</code> 属性で要求された許可を得ていない場合は、<code>&lt;iframe&gt;</code> がユーザーへ確認することなく直ちにアクセスを拒否されます ({{bug(1483631)}})。</li>
+</ul>
+
+<h3 id="Plugins" name="Plugins">プラグイン</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="WebDriver_conformance_Marionette" name="WebDriver_conformance_Marionette">WebDriver conformance (Marionette)</h3>
+
+<ul>
+ <li>カレントページを PDF 文書として印刷する <code>WebDriver:Print</code> を追加しました ({{bug(1604506)}})。</li>
+ <li><code>Webdriver:TakeScreenshot</code> が、キャプチャーする要素が指定されていない場合に現在選択されているブラウジングコンテキストではなく、常にトップレベルのブラウジングコンテキストをキャプチャーするようになりました ({{bug(1398087)}}, {{bug(1606794)}})。</li>
+ <li><code>Webdriver:TakeScreenshot</code> の <code>full</code> 引数を使用すると、ページ全体をキャプチャーします ({{bug(1571424)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<h3 id="API_changes" name="API_changes">API の変更点</h3>
+
+<ul>
+ <li>{{WebExtAPIRef("Commands.update")}} の <code>shortcut</code> に空文字列を渡すと、ショートカットキーを未割り当てにできるようになりました ({{bug(1475043)}})。</li>
+ <li>{{WebExtAPIRef("webrequest")}} のそれぞれのイベントで、<code>details</code> の一部として <code>urlclassification</code> が返るようになりました。これは、要求がフィンガープリンティングやトラッキングに分類されるかの情報を提供します ({{bug(1589494)}})。</li>
+</ul>
+
+<h3 id="Manifest_changes" name="Manifest_changes">マニフェストの変更点</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>Hacks ブログの記事: <a href="https://hacks.mozilla.org/2020/03/security-means-more-with-firefox-74-2/">Security means more with Firefox 74</a></li>
+ <li><a href="https://www.fxsitecompat.com/versions/74/">Firefox 74 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(73)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/75/index.html b/files/ja/mozilla/firefox/releases/75/index.html
new file mode 100644
index 0000000000..fd82a3179b
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/75/index.html
@@ -0,0 +1,156 @@
+---
+title: Firefox 75 for developers
+slug: Mozilla/Firefox/Releases/75
+tags:
+ - '75'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/75
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">Firefox 75 は、米国時間 2020 年 4 月 7 日にリリースされました。このページでは、開発者に影響する Firefox 75 の変更点をまとめています。</p>
+
+<p class="summary"><strong>付随する hacks ブログの記事「<a href="https://hacks.mozilla.org/2020/04/firefox-75-ambitions-for-april/">Firefox 75: Ambitions for April</a>」もご覧ください。</strong></p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Measure_a_portion_of_the_page">測定ツール</a> で長方形のリサイズが可能になりました ({{bug(1152321)}})。</li>
+ <li><a href="/ja/docs/Tools/Page_Inspector">インスペクター</a> で、以前から使用できていた CSS セレクターに加えて、<a href="/ja/docs/Web/XPath">XPath</a> の式を使用して要素を示すことが可能になりました ({{bug(963933)}})。</li>
+ <li>プレーンテキストによる検索に加えて、スラッシュの間に <a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions">正規表現</a> を記述することで <a href="/ja/docs/Web/API/WebSockets_API">WebSocket</a> メッセージをフィルタリングできるようになりました ({{bug(1593837)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("img")}} 要素の {{htmlattrxref("loading", "img")}} 属性を実装しました。この文字列値は <code>lazy</code> を設定することで、画像を <a href="/ja/docs/Web/Performance/Lazy_loading">遅延読み込み</a> するべきであると示します ({{bug(1542784)}})。</li>
+ <li><code><a href="/ja/docs/Web/HTML/Element/style">&lt;style&gt;</a></code> 要素の <code>type</code> 属性の値を、仕様書に従って <code>text/css</code> のみに限定しました ({{bug(1614329)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref("min")}}、{{cssxref("max")}}、{{cssxref("clamp")}} 関数を実装しました ({{bug(1519519)}})。</li>
+ <li>{{cssxref("text-decoration-skip-ink")}} プロパティの値 <code>all</code> を追加しました ({{bug(1611965)}})。</li>
+</ul>
+
+<h3 id="Accessibility" name="Accessibility">アクセシビリティ</h3>
+
+<p><a href="/ja/docs/Web/Accessibility/ARIA/Annotations">ARIA annotations</a> に関する新しいロールやオブジェクトを、Windows および Linux の Firefox で公開しました (これらはスクリーンリーダーがサポートするまで使用できないことを覚えておいてください):</p>
+
+<ul>
+ <li><code>aria-description</code> ({{bug(1608961)}})</li>
+ <li><code><a href="/ja/docs/Web/Accessibility/ARIA/Roles/Mark_role">role="mark"</a></code> および <code><a href="/ja/docs/Web/Accessibility/ARIA/Roles/Suggestion_role">role="suggestion"</a></code> ({{bug(1608965)}})</li>
+ <li><code><a href="/ja/docs/Web/Accessibility/ARIA/Roles/Comment_role">role="comment"</a></code> ({{bug(1608969)}})</li>
+ <li><code>aria-details</code> で複数の ID ({{bug(1608883)}})</li>
+</ul>
+
+<div class="blockIndicator note">
+<p><strong>注記</strong>: macOS では、はじめに Apple が Safari で Apple 方式の属性として VoiceOver へ公開するものを定義することを待っており、それらに一式に従う計画です。</p>
+</div>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Classes/Class_fields#Public_static_fields">Public static class fields</a> をサポートしました ({{bug(1535804)}})。</li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Locale">Intl.Locale</a></code> クラスをサポートしました ({{bug(1613713)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/caller"><code>Function.caller</code></a> プロパティを、最新の <a href="https://github.com/claudepache/es-legacy-function-reflection">ECMAScript 仕様の提案</a> に合わせて更新しました。呼び出し元が strict、async、あるいは generator 関数であった場合に、以前は <code>TypeError</code> が発生していましたが、<code>null</code> を返すようになりました ({{bug(1610206)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>{{domxref("HTMLFormElement")}} インターフェイスへ新たに {{domxref("HTMLFormElement.requestSubmit", "requestSubmit()")}} メソッドを追加しました。古い (現在も使用できる) {{domxref("HTMLFormElement.submit", "submit()")}} メソッドとは異なり、<code>requestSubmit()</code> はフォームのデータを宛先に送信するだけでなく、指定した送信ボタンがクリックされたかのように動作します。よって {{domxref("HTMLFormElement.submit_event", "submit")}} イベントが発生して、フォームはデータを送信する前に妥当性のチェックを受けます ({{bug(1613360)}})。</li>
+ <li>{{domxref("HTMLFormElement.submit_event", "submit")}} イベントが単なる {{domxref("Event")}} ではなく、{{domxref("SubmitEvent")}} 型のオブジェクトとして表すようになりました。<code>SubmitEvent</code> は新たに {{domxref("SubmitEvent.submitter", "submitter")}} プロパティを持っており、これはフォームの送信を発生させた {{domxref("Element")}} です。このイベントにより送信イベントに対してひとつのハンドラーで、複数のボタンやリンクのうちどれがフォームの送信に使用されたかを見わけることが可能になります ({{bug(1588715)}})。</li>
+ <li>切り離された (DOM ツリーの一部ではない) 要素で {{domxref("HTMLElement.click", "click()")}} メソッドを呼び出すと、その要素に <code>click</code> イベントを送信するようになりました ({{bug(1610821)}})。</li>
+</ul>
+
+<h4 id="Web_animations_API" name="Web_animations_API">Web animations API</h4>
+
+<p>Firefox 75 で、<a href="/ja/docs/Web/API/Web_Animations_API">Web Animations API</a> に複数の機能を追加しました:</p>
+
+<ul>
+ <li>ほかの無期限に実行されるアニメーションによって置き換えられたアニメーションを自動的に削除するような、<a href="/ja/docs/Web/API/Web_Animations_API/Keyframe_Formats#Implicit_tofrom_keyframes">Implicit to/from keyframes</a> をサポートしました ({{bug(1618773)}})。これは以下のサポートを含みます:
+
+ <ul>
+ <li><code><a href="/ja/docs/Web/API/Animation/commitStyles">Animation.commitStyles()</a></code></li>
+ <li><code><a href="/ja/docs/Web/API/Animation/onremove">Animation.onremove</a></code></li>
+ <li><code><a href="/ja/docs/Web/API/Animation/persist">Animation.persist()</a></code></li>
+ <li><code><a href="/ja/docs/Web/API/Animation/replaceState">Animation.replaceState</a></code></li>
+ </ul>
+ </li>
+ <li><code><a href="/ja/docs/Web/API/Animation/timeline">Animation.timeline</a></code> ゲッター、<code><a href="/ja/docs/Web/API/Document/timeline">Document.timeline</a></code>、<code><a href="/ja/docs/Web/API/DocumentTimeline">DocumentTimeline</a></code>、<code><a href="/ja/docs/Web/API/AnimationTimeline">AnimationTimeline</a></code> の機能をデフォルトで有効にしました ({{bug(1619178)}})。</li>
+ <li><code><a href="/ja/docs/Web/API/Document/getAnimations">Document.getAnimations()</a></code> および <code><a href="/ja/docs/Web/API/Element/getAnimations">Element.getAnimations()</a></code> メソッドをデフォルトで有効にしました ({{bug(1619821)}})。</li>
+</ul>
+
+<h4 id="Media_Web_Audio_and_WebRTC" name="Media_Web_Audio_and_WebRTC">メディア、Web Audio、WebRTC</h4>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/API/RTCPeerConnection/setLocalDescription">RTCPeerConnection.setLocalDescription()</a></code> メソッドを引数なしで呼び出せるようになりました。この場合、WebRTC ランタイムは新しいローカルセッションデスクリプション自体を作成しようとします ({{bug(1568292)}})。</li>
+</ul>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<ul>
+ <li>CSS セレクターや <code>.getAttribute("nonce")</code> の呼び出しなど、スクリプト以外をソースとする <a href="/ja/docs/Web/HTTP/CSP">CSP</a> nonce が隠されるようになりました。代わりに、スクリプトから nonce へアクセスするには <code><a href="/ja/docs/Web/API/HTMLOrForeignElement/nonce">.nonce</a></code> プロパティを確認してください ({{bug(1374612)}})。</li>
+</ul>
+
+<h3 id="Plugins" name="Plugins">プラグイン</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Security_2" name="Security_2">セキュリティ</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="WebDriver_conformance_Marionette" name="WebDriver_conformance_Marionette">WebDriver conformance (Marionette)</h3>
+
+<ul>
+ <li>Firefox が起動するとき常に Marionette の初期化が行われる不具合を修正しました。コマンドライン引数や環境変数で制限されるようになりました ({{bug(1622012)}})。</li>
+ <li><code>WebDriver:Print</code> が、文書に余分なマージンを追加しないようになりました ({{bug(1616932)}})。</li>
+ <li>投機的な接続を強制的に無効化するため <code>network.http.speculative-parallel-limit</code> の設定値を <code>0</code> に変更していた動作を修正しました ({{bug(1617869)}})。</li>
+</ul>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<h3 id="API_changes" name="API_changes">API の変更点</h3>
+
+<ul>
+ <li>{{WebExtAPIRef("browserSettings")}} に新たな設定を追加しました ({{bug(1286953)}}):
+ <ul>
+ <li>ズームがサイトごとかタブごとかを制御する {{WebExtAPIRef("browserSettings.zoomSiteSpecific")}}。</li>
+ <li>ズームがページ全体に適用されるかテキストのみに適用されるかを制御する {{WebExtAPIRef("browserSettings.zoomFullPage")}}。</li>
+ </ul>
+ </li>
+ <li>{{WebExtAPIRef("tabs.saveAsPDF")}} を使用して PDF 形式で保存するときに使用するファイル名を、<code>tabs.PageSettings</code> の <code>toFileName</code> で指定できるようになりました ({{bug(1483590)}})。</li>
+</ul>
+
+<h3 id="Manifest_changes" name="Manifest_changes">マニフェストの変更点</h3>
+
+<ul>
+ <li>"privacy" パーミッションが省略可能になりました ({{bug(1618399)}})。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/versions/75/">Firefox 75 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(74)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/76/index.html b/files/ja/mozilla/firefox/releases/76/index.html
new file mode 100644
index 0000000000..c2393ceb54
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/76/index.html
@@ -0,0 +1,120 @@
+---
+title: Firefox 76 for developers
+slug: Mozilla/Firefox/Releases/76
+tags:
+ - '76'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/76
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">このページでは、開発者に影響する Firefox 76 の変更点をまとめています。Firefox 76 は、<a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates/docs/">2020 年 5 月 5 日</a> にリリースされました。</p>
+
+<p class="summary"><strong>付随する hacks ブログの記事「<a href="https://hacks.mozilla.org/2020/05/firefox-76-audio-worklets-and-other-tricks/">Firefox 76: Audio worklets and other tricks</a>」もご覧ください。</strong></p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<h4 id="Debugger" name="Debugger">デバッガー</h4>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Debugger/UI_Tour#Source_list_pane">ソースリストペイン</a> のコンテキストメニューで、ソースグループやフォルダーのブラックボックス化や解除が可能になりました ({{bug(1118152)}})。</li>
+ <li><a href="/ja/docs/Tools/Debugger/UI_Tour#Call_stack">コールスタックペイン</a> のコンテキストメニュー項目「<em>スタックトレースをコピー</em>」で、ファイル名だけでなく URL 全体をコピーするようになりました ({{bug(1619039)}})。</li>
+</ul>
+
+<h4 id="Network_monitor" name="Network_monitor">ネットワークモニター</h4>
+
+<ul>
+ <li>ネットワーク要求の一覧で列の境目をダブルクリックすると、境目の左側の列を内容に合わせてリサイズするようになりました ({{bug(1615102)}})。</li>
+ <li>ネットワーク要求のコンテキストメニュー項目「<em>コピー &gt; <a href="/ja/docs/Tools/Network_Monitor/request_list#Copy_as_cURL">cURL としてコピー</a></em> で新たなオプション <code>--globoff</code> が利用可能になりました。これはコピーした URL に各括弧文字が含まれている場合に、cURL の globbing (ワイルドカードのマッチング) を抑制します ({{bug(1549773)}})。</li>
+ <li><a href="/ja/docs/Tools/Network_Monitor/Inspecting_web_sockets">WebSocket 要求</a> の詳細ペインにある <em>メッセージ</em> タブに、制御フレームを表示する新たなフィルターである <em>Control</em> を追加しました。また、フィルターが選択リストにグループ分けされました ({{bug(1566780)}})。</li>
+</ul>
+
+<h4 id="Web_console" name="Web_console">ウェブコンソール</h4>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Web_Console/The_command_line_interpreter#Multi-line_mode">マルチラインモード</a> で、5 行を超えるコードスニペットを 5 行に省略して先頭に展開用の三角印 (あるいは "twistie")、末尾に省略記号 (…) をつけるようになりました。これらの領域をクリックするとコードを表示できます。もう一度クリックすると折りたたむことができます ({{bug(1578212)}})。</li>
+ <li>コンソールに出力した DOM 要素の参照のコンテキストメニュー項目に「インスペクターで確認」を追加しました。これは、<a href="/ja/docs/Tools/Page_Inspector">インスペクター</a> の HTML ペインで要素を表示します ({{bug(1612276)}})。</li>
+</ul>
+
+<h4 id="Remote_debugging" name="Remote_debugging">リモートデバッグ</h4>
+
+<ul>
+ <li>開発ツールのバージョンの違いのため、デスクトップ版の Firefox 69 以降からバージョン 68 ベースの Android 版 Firefox をデバッグすることができません。デバッグしようとするとデスクトップ版 Firefox は、この問題の説明と利用可能な次のステップをユーザーに知らせるメッセージを表示します ({{bug(1625906)}})。詳しくは <a href="/ja/docs/Tools/about:debugging#Connection_to_Firefox_for_Android_68">Connection to Firefox for Android 68</a> をご覧ください。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("input")}} 要素の {{htmlattrxref("min", "input")}} および {{htmlattrxref("max", "input")}} 属性が、値が周期的な (すなわち、ある時点で値が最小値に戻る) コントロールで <code>min</code> の値が <code>max</code> の値より大きい場合に、正しく動作するようになりました。これは、例えば日付や時刻の入力で午後 11 時から午前 2 時の範囲を指定するようなときに、特に役に立ちます ({{bug(1608010)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/CSS/color_value#System_Colors">CSS4 system colors</a> を Firefox でサポートしました ({{bug(1590894)}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("Intl.NumberFormat")}}、{{jsxref("Intl.DateTimeFormat")}}、{{jsxref("Intl.RelativeTimeFormat")}} コンストラクターの <code>numberingSystem</code>、<code>calendar</code> オプションを、デフォルトで有効にしました ({{bug(1625975)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li>Firefox で、audio worklets と {{domxref("BaseAudioContext.audioWorklet", "AudioContext.audioWorklet")}} をデフォルトでサポートしました。これは、メインスレッドの外部で音声をリアルタイム処理するために {{domxref("AudioWorkletProcessor")}} および {{domxref("AudioWorkletNode")}} インターフェイスを使用可能にします ({{bug(1616725)}})。</li>
+</ul>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>{{domxref("window.open()")}} の引数 <code>windowFeatures</code> の UI 部品に関する項目で、UI 部品ごとに表示・非表示を制御できなくなり、ポップアップウィンドウを開くか否かの条件になりました ({{bug(1507375)}})。</li>
+ <li><code><a href="/ja/docs/Web/API/Location/href">location.href</a></code> や <code><a href="/ja/docs/Web/HTML/Element/meta">&lt;meta http-equiv="refresh"&gt;</a></code> のような方法を使用して未知のプロトコルへ移動しようとするとブロックされるようになりました ({{bug(1528305)}}、詳しくは <a href="https://www.fxsitecompat.dev/ja/docs/2020/navigation-to-unknown-protocol-will-be-blocked/">未知のプロトコルへのページ遷移はブロックされます</a> をご覧ください)。</li>
+ <li>{{domxref("IntersectionObserver.IntersectionObserver", "IntersectionObserver()")}} コンストラクターが、<code>root</code> として {{domxref("Element")}} オブジェクトと同様に {{domxref("Document")}} オブジェクトも受け入れるようになりました ({{bug(1623623)}})。これにより、要素間交差の境界としてウィンドウのコンテンツ領域全体を明示的に使用できます。</li>
+ <li><a href="/ja/docs/Web/API/Fetch_API">Fetch API</a> で、要求の <code>audioworklet</code> {{domxref("Request.destination", "destination")}} をサポートしました。これにより、受信したデータが {{domxref("AudioWorklet")}} へ送られます ({{bug(1402784)}})。</li>
+</ul>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Window/appinstalled_event">Window の <code>appinstalled</code> イベント</a> (および関連するハンドラープロパティの <code><a href="/ja/docs/Web/API/Window/onappinstalled">Window.onappinstalled</a></code>) を完全に削除しました。これらは公開されたことがなく、また <a href="https://w3c.github.io/manifest/">Web Manifest 仕様</a> から削除されました ({{bug(1625384)}})。</li>
+</ul>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="WebDriver_conformance_Marionette" name="WebDriver_conformance_Marionette">WebDriver conformance (Marionette)</h3>
+
+<ul>
+ <li>geckodriver でオートメーションやテストを行っているとき、<code>navigator.webdriver</code> が <code>false</code> を返さないようになりました ({{bug(1632556)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/versions/76/">Firefox 76 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(75)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/77/index.html b/files/ja/mozilla/firefox/releases/77/index.html
new file mode 100644
index 0000000000..5da47e17c8
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/77/index.html
@@ -0,0 +1,103 @@
+---
+title: Firefox 77 for developers
+slug: Mozilla/Firefox/Releases/77
+tags:
+ - '77'
+ - Firefox
+ - Mozilla
+ - Releases
+translation_of: Mozilla/Firefox/Releases/77
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">このページでは、開発者に影響する Firefox 77 の変更点をまとめています。Firefox 77 は、<a href="https://wiki.mozilla.org/RapidRelease/Calendar">2020 年 6 月 2 日</a> にリリースされました。</p>
+
+<p class="summary"><strong>付随する hacks ブログの記事「<a href="https://hacks.mozilla.org/2020/06/new-in-firefox-77-devtool-improvements-and-web-platform-updates/">New in Firefox 77: DevTool improvements and web platform updates</a>」もご覧ください。</strong></p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>Firefox Developer Edition のインスペクターで、ページで使用している CSS プロパティをサポートするブラウザーを表示する <a href="/ja/docs/Tools/Page_Inspector/UI_Tour#Compatibility_view">互換性パネル</a> を提供します ({{bug("1625134")}})。</li>
+ <li>デバッガーの <a href="/ja/docs/Tools/Page_Inspector/UI_Tour#Toolbar">ツールバーに設定メニュー</a> を追加しました。メニューの項目は (まだ) <strong>JavaScript を無効化</strong> だけです ({{bug("1630957")}})。</li>
+ <li><a href="/ja/docs/Tools/Network_Monitor/toolbar">ネットワークモニターのツールバー</a> に、ログデータを管理する <strong>アクション</strong> メニューを追加しました ({{bug("1459175")}}):
+ <ul>
+ <li><strong>永続ログ</strong></li>
+ <li><strong>HAR ファイルのインポート</strong></li>
+ <li><strong>HAR 形式ですべて保存</strong></li>
+ <li><strong>HAR 形式ですべてコピー</strong></li>
+ </ul>
+ </li>
+ <li>ネットワークモニターの <a href="/ja/docs/Tools/Network_Monitor/request_list#Blocking_specific_URLs">要求ブロックパネル</a> に、すべての要求ブロック項目を有効化・無効化・削除するコンテキストメニューを追加しました ({{bug("1588076")}})。</li>
+ <li>デバッガーの <a href="/ja/docs/Tools/Debugger/UI_Tour#Call_stack">コールスタック</a> にあるフレーム内をクリックして選択行を変更した場合に、<strong>ステップオーバー</strong> (<kbd>F10</kbd>) をクリックすると、デバッガーが新たに選択した行に達するまで実行するようになりました (デバッガーがもともと停止していた行は無視します) ({{bug("1630642")}})。</li>
+ <li>値の取得 ("get") や設定 ("set") と同様に、値を <a href="/ja/docs/Tools/Debugger/How_to/Use_watchpoints#Set_a_watchpoint">取得または設定 ("get または set")</a> したときに実行停止するウォッチポイントを設定できるようになりました ({{bug("1580585")}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>{{HTMLElement("option")}} 要素の内容物が空であるときに、<a href="/ja/docs/web/HTML/element/option#Browser_compatibility">label 属性の値</a> を表示するようになりました ({{bug("40545")}})。</li>
+</ul>
+
+<h3 id="SVG" name="SVG">SVG</h3>
+
+<ul>
+ <li>{{SVGAttr("transform-origin")}} プレゼンテーション属性をサポートしました ({{bug(1581691)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{JSxRef("String.prototype.replaceAll()")}} をサポートしました ({{bug(1608168)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="IndexedDB" name="IndexedDB">IndexedDB</h4>
+
+<ul>
+ <li>{{DOMxRef("IDBCursor.request")}} プロパティを実装しました ({{bug(1536540)}})。</li>
+</ul>
+
+<h3 id="WebDriver_conformance_Marionette" name="WebDriver_conformance_Marionette">WebDriver conformance (Marionette)</h3>
+
+<ul>
+ <li>ウィンドウをクリックして閉じるなど、現在選択中のトップレベルのブラウジングコンテキストが削除されたとき、いくつかのコマンドが Marionette をハングアップさせていた問題を修正しました ({{bug(1619481)}})。</li>
+ <li>既知の問題: Firefox 77 での変更により、現在のページから移動する際に、開いているユーザープロンプトが早く閉じられる場合があります。この問題は Firefox 78 で修正する予定です ({{bug(1631362)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<h3 id="API_changes" name="API_changes">API の変更点</h3>
+
+<ul>
+ <li>{{WebExtAPIRef("tabs.goBack")}} および {{WebExtAPIRef("tabs.goForward")}} をサポートしました ({{bug(1603796)}})。</li>
+ <li><code>serviceWorkers</code> および <code>indexedDB</code> タイプの {{WebExtAPIRef("browsingData.remove")}} で、ホスト名による削除をサポートしました ({{bug(1632990)}} および {{bug(1551301)}})。</li>
+ <li>{{WebExtAPIRef("tabs.duplicate")}} API で <code>duplicateProperties</code> をサポートしました。複製したタブの位置やアクティブ状態を指定できます ({{bug(1560218)}})。</li>
+ <li>{{WebExtAPIRef("permissions")}} API の {{WebExtAPIRef("permissions.onAdded")}} および {{WebExtAPIRef("permissions.onRemoved")}} イベントをサポートしました ({{bug(1444294)}})。</li>
+ <li>{{WebExtAPIRef("webRequest.onHeadersReceived")}} で複数の <code>Content-Security-Policy</code> ヘッダーを変更する要求が統合されるようになりました ({{bug(1462989 )}})。</li>
+</ul>
+
+<h3 id="Manifest_changes" name="Manifest_changes">マニフェストの変更点</h3>
+
+<ul>
+ <li>以下のパーミッションが要求可能になりました。これらは <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/optional_permissions">optional_permissions</a></code> マニフェストキーで指定可能であり、{{WebExtAPIRef("permissions")}} API を使用して要求できます: <code>browsingData</code> ({{bug(1630417)}})、<code>pkcs11</code> ({{bug(1630418)}})、<code>proxy</code> ({{bug(1548011)}}), and <code>sessions</code> ({{bug(1630414)}})。</li>
+</ul>
+
+<h3 id="Other" name="Other">その他</h3>
+
+<ul>
+ <li><code>unlimitedStorage</code> パーミッションを使用することを、拡張機能のインストールや更新の際に表示しないようになりました。詳しくは <a href="https://extensionworkshop.com/documentation/develop/request-the-right-permissions/">Requesting the right permissions</a> をご覧ください ({{bug(1630413)}})。</li>
+ <li><a href="/ja/docs/Web/HTTP/Headers/Set-Cookie/SameSite">SameSite cookie</a> に関する変更により、拡張機能のページのホスト向けのトラッキング防止機能をバイパスする <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">host パーミッション</a> を設定するときに、フルドメインまたはワイルドカードをつけて指定しなければなりません。ただし Content スクリプトのトラッキング防止は、フルドメインで指定したホストに限りバイパスできます。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/versions/77/">Firefox 77 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(76)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/78/index.html b/files/ja/mozilla/firefox/releases/78/index.html
new file mode 100644
index 0000000000..a3800ca871
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/78/index.html
@@ -0,0 +1,121 @@
+---
+title: Firefox 78 for developers
+slug: Mozilla/Firefox/Releases/78
+tags:
+ - '78'
+ - Firefox
+ - Mozilla
+ - Releases
+translation_of: Mozilla/Firefox/Releases/78
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">このページでは、開発者に影響する Firefox 78 の変更点をまとめています。Firefox 78 は、<a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates/docs/">2020 年 6 月 30 日</a> にリリースされました。</p>
+
+<p class="summary">Mozilla hacks の記事「<a href="https://hacks.mozilla.org/2020/06/new-in-firefox-78/">New in Firefox 78: DevTools improvements, new regex engine, and abundant web platform updates</a>」もご覧ください。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<h4 id="Debugger" name="Debugger">デバッガー</h4>
+
+<ul>
+ <li><a href="/ja/docs/Tools/about:debugging#Connecting_to_a_remote_device">about:debugging</a> パネルで、リモート端末がアクセスする URL を変更できるようになりました ({{bug("1617237")}})。</li>
+ <li><a href="/ja/docs/Tools/Debugger/UI_Tour">デバッガー</a> のメニュー項目 "<strong>JavaScript を無効化</strong>" が現在のタブにのみ作用するようになりました。また、開発ツールを閉じるとリセットされるようになりました ({{bug("1640318")}})。</li>
+ <li><a href="/ja/docs/Tools/Debugger/UI_Tour#Scopes">スコープペイン</a> で <strong>マッピング</strong> を有効にすると、<a href="/ja/docs/Tools/Debugger/Set_a_logpoint">ログポイント</a> でソースマップを適用したコードの変数名と元の変数名をマッピングできます ({{bug("1536857")}})。</li>
+</ul>
+
+<h4 id="Network_Monitor" name="Network_Monitor">ネットワークモニター</h4>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Network_Monitor/request_list#Network_request_columns">ネットワークモニター</a> で、要求リストの表の列の境界をどこでもドラッグして、リサイズできるようになりました ({{bug("1618409")}})。</li>
+ <li>ネットワークモニターの <a href="/ja/docs/Tools/Network_Monitor/request_details">要求の詳細パネル</a> の UX を改良しました ({{bug("1631302")}}, {{bug("1631295")}})。</li>
+ <li>要求がブロックされたとき、<a href="/ja/docs/Tools/Network_Monitor/request_list">要求リスト</a> でアドオン、CSP、CORS、強化型トラッキング防止などの理由を表示するようになりました ({{bug("1555057")}}, {{bug("1445637")}}, {{bug("1556451")}})。</li>
+</ul>
+
+<h4 id="Other_tools" name="Other_tools">その他のツール</h4>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Accessibility_inspector">アクセシビリティ</a> インスペクターがベータ版から脱しました。このツールを使用して、サイトのさまざまなアクセシビリティの問題を確認できます ({{bug("1602075")}})。</li>
+ <li>キャッチされていない promise エラーについて、名前やスタックを含む詳細情報をコンソールに表示するようになりました ({{bug("1636590")}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{CSSxRef(":is", ":is()")}} および {{CSSxRef(":where", ":where()")}} 疑似クラスをデフォルトで有効にしました ({{bug(1632646)}})。</li>
+ <li>{{CSSxRef(":read-only")}} および {{CSSxRef(":read-write")}} 疑似クラスを、接頭辞なしでサポートしました ({{bug(312971)}})。
+ <ul>
+ <li>また <code>:read-write</code> のスタイルが、無効化した <code><a href="/ja/docs/Web/HTML/Element/input">&lt;input&gt;</a></code> および <code><a href="/ja/docs/Web/HTML/Element/textarea">&lt;textarea&gt;</a></code> 要素に適用されないようになりました。これは <a href="https://html.spec.whatwg.org/#selector-read-write">HTML 仕様書</a> に違反していました ({{bug(888884)}})。</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl/ListFormat">Intl.ListFormat</a></code> API をサポートしました ({{bug(1589095)}})。</li>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat">Intl.NumberFormat()</a></code> コンストラクターを、<a href="https://github.com/tc39/proposal-unified-intl-numberformat">Intl.NumberFormat Unified API Proposal</a> で定義された新しいオプションをサポートするように拡張しました ({{bug(1633836)}})。特に、以下のようなものがあります:
+ <ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#Scientific_engineering_or_compact_notations">指数表記のサポート</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#Unit_formatting">単位</a>、<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#Currency_formatting">通貨</a>、<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#Displaying_signs">符号表示</a> の整形</li>
+ </ul>
+ </li>
+ <li>{{JSxRef("RegExp")}} エンジンを <a href="https://hacks.mozilla.org/2020/06/a-new-regexp-engine-in-spidermonkey/">更新</a> して、ECMAScript 2018 で導入したすべての新機能をサポートしました:
+ <ul>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions/Assertions">後読み言明</a> ({{bug(1225665)}})</li>
+ <li>{{JSxRef("RegExp.prototype.dotAll")}} ({{bug(1361856)}})</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes">Unicode property escapes</a> ({{bug(1361876)}})</li>
+ <li><a href="/ja/docs/Web/JavaScript/Guide/Regular_Expressions/Groups_and_Ranges">名前付きキャプチャグループ</a> ({{bug(1362154)}})</li>
+ </ul>
+ </li>
+ <li>2020 年中頃の <a href="https://github.com/heycam/webidl/pull/357">WebIDL 仕様書の変更</a> により、<a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/toStringTag#toStringTag_available_on_all_DOM_prototype_objects"><code>Symbol.toStringTag</code> プロパティをすべての DOM プロトタイプオブジェクトに追加しました</a> ({{bug(1277799)}})。</li>
+ <li>{{jsxref("WeakMap")}} オブジェクトのガベージコレクションを改良しました。<code>WeakMaps</code> を徐々にマークするようになりました ({{bug(1167452)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>{{DOMxRef("ParentNode.replaceChildren()")}} メソッドを実装しました ({{bug(1626015)}})。</li>
+</ul>
+
+<h4 id="Service_workers" name="Service_workers">Service workers</h4>
+
+<ul>
+ <li><a href="https://www.mozilla.org/firefox/organizations/">Extended Support Releases (ESR)</a>: Firefox 78 は <a href="/ja/docs/Web/API/Service_Worker_API">Service workers</a> (および <a href="/ja/docs/Web/API/Push_API">Push API</a>) をサポートする最初の ESR リリースです。過去の ESR リリースはサポートしていませんでした ({{bug(1547023)}})。</li>
+</ul>
+
+<h3 id="WebAssembly" name="WebAssembly">WebAssembly</h3>
+
+<ul>
+ <li><a href="https://hacks.mozilla.org/2019/11/multi-value-all-the-wasm/">Wasm Multi-value</a> をサポートしました。WebAssembly の関数が複数の値を返したり、命令シーケンスが複数のスタックの値を使用および生成したりすることが可能になりました ({{bug(1628321)}})。</li>
+ <li>WebAssembly で、<code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/BigInt">BigInt</a></code> を使用して JavaScript から 64-bit 整数の関数パラメーター (i64) をインポートおよびエクスポートできるようになりました ({{bug(1608770)}})。</li>
+</ul>
+
+<h3 id="TLS_1.0_and_1.1_removal" name="TLS_1.0_and_1.1_removal">TLS 1.0 および 1.1 の廃止</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/Security/Transport_Layer_Security">Transport Layer Security</a> (TLS) プロトコルのバージョン 1.0 および 1.1 のサポートを、すべてのブラウザーで廃止しました。以前の告知と、影響を受ける場合の対処について、<a href="https://hacks.mozilla.org/2019/05/tls-1-0-and-1-1-removal-update/">TLS 1.0 and 1.1 Removal Update</a> をご覧ください ({{bug(1643229)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<ul>
+ <li>{{WebExtAPIRef("browsingData.removeCache")}} および {{WebExtAPIRef("browsingData.removePluginData")}} が、ホスト名による削除をサポートしました ({{bug(1636784)}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/proxy/onRequest">proxy.onRequest</a></code> を使用するとき、タブやウィンドウの ID に基づいて制限するフィルターが正しく適用されるようになりました。これは、プロキシの機能をひとつのウィンドウだけに提供したいアドオンで役に立つでしょう。</li>
+ <li>"すべてのタブ" ドロップダウンから <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/menus/onClicked">コンテキストメニューでクリックするとき</a>、適切なタブオブジェクトが渡されるようになりました。以前は、誤ってアクティブなタブが渡されていました。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/downloads/download">downloads.download</a></code> に saveAs オプションをつけて使用したとき、最近使用したディレクトリーを記憶するようになりました。この情報は開発者が使用できませんでしたが、ユーザーにはとても便利でした。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/versions/78/">Firefox 78 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(77)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/79/index.html b/files/ja/mozilla/firefox/releases/79/index.html
new file mode 100644
index 0000000000..15f1493099
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/79/index.html
@@ -0,0 +1,138 @@
+---
+title: Firefox 79 for developers
+slug: Mozilla/Firefox/Releases/79
+tags:
+ - '79'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/79
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">このページでは、開発者に影響する Firefox 79 の変更点をまとめています。Firefox 79 は、2020 年 7 月 28 日にリリースされました。</p>
+
+<p class="summary">Mozilla hacks の記事「<a href="https://hacks.mozilla.org/2020/07/firefox-79/">Firefox 79: The safe return of shared memory, new tooling, and platform updates</a>」もご覧ください。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<h4 id="Console" name="Console">コンソール</h4>
+
+<ul>
+ <li>レスポンスコードが 400-499 および 500-599 の範囲にあるネットワークメッセージを、エラーとみなすようになりました。また、<a href="/ja/docs/Tools/Web_Console/Console_messages#Filtering_by_category">要求や XHR のフィルターが無効であっても</a> 表示するようになりました ({{bug(1635460)}})。</li>
+ <li>(ブラウザーや拡張機能によって) ブロックされた要求のネットワークメッセージが、<a href="/ja/docs/Tools/Web_Console/Console_messages">コンソール</a> で "禁止" アイコンがつくようになりました ({{bug(1629875)}})。</li>
+</ul>
+
+<h4 id="Debugger" name="Debugger">デバッガー</h4>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Debugger/How_to/Black_box_a_source">ソースファイルを "ブラックボックス化"</a> を、ソースファイルを "無視" と呼ぶようになりました ({{bug(1642811)}})。</li>
+ <li><a href="/ja/docs/Tools/Debugger/How_to/Breaking_on_exceptions">例外</a> でインラインプレビューが可能になりました ({{bug(1581708)}})。</li>
+ <li>監視式やスコープのセクションにある項目にマウスポインターを載せると、それらの値を表示するツールチップが現れるようになりました ({{bug(1631545)}})。</li>
+ <li><a href="/ja/docs/Tools/Debugger/UI_Tour#Call_stack">コールスタックセクション</a> のコンテキストメニューの項目に、現在のスタックフレームをはじめから実行する <strong>フレームを再実行</strong> を追加しました ({{bug(1594467)}})。</li>
+</ul>
+
+<h4 id="Other_tools" name="Other_tools"><span>その他のツール</span></h4>
+
+<ul>
+ <li>新たに <a href="/ja/docs/Tools/Application">アプリケーションパネル</a> が使用可能になりました。まずは <a href="/ja/docs/Web/API/Service_Worker_API">service worker</a> および <a href="/ja/docs/Web/Manifest">ウェブアプリマニフェスト</a> の調査やデバッグの機能を提供します。</li>
+ <li>ネットワークモニターのメッセージタブを、<a href="/ja/docs/Tools/Network_Monitor/request_details#Response_tab">応答タブ</a> に統合しました ({{bug(1636421)}})。</li>
+ <li>アクセシビリティインスペクターが、タブにアクセスすると自動的に有効化します。明示的に有効化することが不要になりました ({{bug(1602075)}})。</li>
+ <li><a href="/ja/docs/Tools/Responsive_Design_Mode#Controlling_Responsive_Design_Mode">レスポンシブデザインモード</a> でタッチシミュレーションを有効にしたとき、マウスドラッグのイベントをタッチ &amp; ドラッグまたはスワイプのイベントとして解釈するようになりました ({{bug(1621781)}})。</li>
+ <li><a href="/ja/docs/Tools/about:debugging#Connecting_to_a_remote_device">リモートデバッグ</a> で、リモートブラウザーのナビゲーションを支援するための <strong>戻る</strong> および <strong>進む</strong> ボタンを URL バーに追加しました ({{bug(1639425)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/HTML/Element/iframe">&lt;iframe&gt;</a></code> 要素の <code>sandbox</code> 属性で <code>allow-top-navigation-by-user-activation</code> トークンをサポートしました ({{bug(1359867)}})。</li>
+ <li><code><a href="/ja/docs/Web/HTML/Element/a">&lt;a&gt;</a></code> および <code><a href="/ja/docs/Web/HTML/Element/area">&lt;area&gt;</a></code> 要素で <code>target="_blank"</code> を設定すると、<code>rel="noopener"</code> も指定したときと同じ動作を暗黙的に提供するようになりました ({{bug(1522083)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>外部スタイルシートが、ドキュメントグループごとにキャッシュされるようになりました ({{bug(1599160)}})。同じオリジンのページへ移動するとき、Firefox はキャッシュされたスタイルシートの検索や再検証を最小限にします。単純な再読み込み (例えば <kbd>F5</kbd>) では、キャッシュされた CSS ファイルを再検証しません。現在のバージョンのスタイルシートを読み込むには、キャッシュをバイパスしてページを再読み込みします (<kbd>Cmd</kbd>/<kbd>Ctrl</kbd> + <kbd>F5</kbd>)。</li>
+</ul>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<ul>
+ <li>メディア特性 <code><a href="/ja/docs/Web/CSS/@media/prefers-color-scheme">prefers-color-scheme</a></code> の値 <code>no-preference</code> が、<a href="https://drafts.csswg.org/mediaqueries-5/#descdef-media-prefers-color-scheme">media queries 仕様書</a> および Firefox から削除されました ({{bug(1643656)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>{{jsxref("SharedArrayBuffer")}} を、post-Spectre-safe な方法で再び有効化しました。クロスオリジン分離のサイトで使用できます ({{bug(1619649)}})。
+ <ul>
+ <li>サイトをクロスオリジン分離にするには、新たに {{HTTPHeader("Cross-Origin-Embedder-Policy")}} (COEP) および {{HTTPHeader("Cross-Origin-Opener-Policy")}} (COOP) ヘッダーを設定することが必要です。</li>
+ </ul>
+ </li>
+ <li>{{jsxref("Promise.any()")}} が使用可能になりました ({{bug(1599769)}})。</li>
+ <li>{{jsxref("WeakRef")}} オブジェクトを実装しました ({{bug(1639246)}})。</li>
+ <li><a href="https://github.com/tc39/proposal-logical-assignment">Logical assignment operators</a> をサポートしました ({{bug(1639591)}})。
+ <ul>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_nullish_assignment">Logical nullish assignment (<code>??=</code>)</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_AND_assignment">Logical AND assignment (<code>&amp;&amp;=</code>)</a></li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Operators/Logical_OR_assignment">Logical OR assignment (<code>||=</code>)</a></li>
+ </ul>
+ </li>
+ <li>{{jsxref("Atomics")}} オブジェクトが、共有されていないメモリーでも動作するようになりました ({{bug(1630706)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat"><code>Intl.DateTimeFormat()</code> コンストラクター</a> で、<code>dateStyle</code> および <code>timeStyle</code> オプションをサポートしました ({{bug(1557718)}})。</li>
+ <li><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat"><code>Intl.NumberFormat()</code> コンストラクター</a> で、さらに多くの表記法をサポートしました ({{bug(1413504)}})。</li>
+</ul>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<ul>
+ <li>新たな {{HTTPHeader("Cross-Origin-Embedder-Policy")}} (COEP) および {{HTTPHeader("Cross-Origin-Opener-Policy")}} (COOP) ヘッダー使用する、クロスオリジン分離を実装しました。これは {{jsxref("SharedArrayBuffer")}} オブジェクトや {{domxref("Performance.now()")}} の制限されていないタイマーといった、特定の機能へのアクセスを可能にします。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/API/FileReader">FileReader</a></code> インターフェイスの <a href="/ja/docs/Web/API/FileReader/loadstart_event"><code>loadstart</code> イベント</a> が、仕様書に従って非同期に発生するようになりました ({{bug(1502403)}})。</li>
+ <li>{{domxref("CanvasPattern.setTransform()")}} が、入力パラメーターとして {{domxref("SVGMatrix")}} オブジェクトと同様に {{domxref("DOMMatrix")}} オブジェクトもサポートしました ({{bug(1565997)}})。</li>
+</ul>
+
+<h4 id="Media_WebRTC_and_Web_Audio" name="Media_WebRTC_and_Web_Audio">Media、WebRTC、Web Audio</h4>
+
+<ul>
+ <li>{{domxref("RTCStatsType")}} が <code>remote-outbound-rtp</code> である統計レコードのリモートタイムスタンプを、Firefox でサポートしました。これらの統計情報を提供するために使用する {{domxref("RTCRemoteOutboundRtpStreamStats")}} ディクショナリーに、{{domxref("RTCRemoteOutboundRtpStreamStats.remoteTimestamp", "remoteTimestamp")}} プロパティが含まれるようになりました。これは統計値が収集または生成されたときの、リモートピアのタイムスタンプを表します ({{bug(1615191)}})。</li>
+</ul>
+
+<h4 id="Removals_2" name="Removals_2">廃止</h4>
+
+<ul>
+ <li>偶然にもウェブに公開されていた複数の Gecko 内部のイベント (<code>DOMWindowClose</code> など) を、意図したとおり内部限定にしました ({{bug(1557407)}})。</li>
+</ul>
+
+<h3 id="WebAssembly" name="WebAssembly">WebAssembly</h3>
+
+<ul>
+ <li><a href="/ja/docs/WebAssembly/Understanding_the_text_format#Bulk_memory_operations">WebAssembly の Bulk memory operations</a> をサポートしました ({{bug(1528294)}})。</li>
+ <li><a href="/ja/docs/WebAssembly/Understanding_the_text_format#Reference_types">WebAssembly の Reference types</a> をサポートしました ({{bug(1637884)}})。</li>
+ <li><a href="/ja/docs/WebAssembly/Understanding_the_text_format#WebAssembly_threads">WebAssembly の Threads</a> (Shared memory および Atomics) をサポートしました ({{bug(1389458)}}, {{bug(1648685)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<ul>
+ <li>新しい API: <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/warmup">tabs.warmup()</a></code> ({{bug(1402256)}})</li>
+ <li><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/storage/sync#Storage_quotas_for_sync_data">ストレージのクォータが、<code>sync</code> ストレージ領域に適用されるようになりました</a> ({{bug(1634615)}}) (<a href="https://blog.mozilla.org/addons/2020/07/09/changes-to-storage-sync-in-firefox-79/">addons.mozilla.org ブログの記事</a>)</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/versions/79/">Firefox 79 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(78)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/8/index.html b/files/ja/mozilla/firefox/releases/8/index.html
new file mode 100644
index 0000000000..0cc545fca1
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/8/index.html
@@ -0,0 +1,202 @@
+---
+title: Firefox 8 for developers
+slug: Mozilla/Firefox/Releases/8
+tags:
+ - Firefox
+ - Firefox 8
+ - Gecko 8
+translation_of: Mozilla/Firefox/Releases/8
+---
+<p>Firefox 8 は 2011 年 11 月 8 日にリリースされました。このページでは、開発者に影響する Firefox 8 の変更点をまとめています。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/HTMLImageElement" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>HTMLImageElement</code></a> に <code>crossOrigin</code> プロパティが追加され、また <a href="/ja/docs/Web/HTML/Element/img" title="HTML の &lt;img> 要素は、文書に画像を埋め込みます。これは置換要素です。"><code>&lt;img&gt;</code></a> 要素に <code><a href="/ja/docs/Web/HTML/Element/img#attr-crossorigin">crossorigin</a></code> 属性が追加されました。(参考: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=664299" title="FIXED: Add crossorigin attribute">バグ 664299</a>)</li>
+ <li><a href="/ja/docs/Web/API/HTMLSelectElement#add()" title=""><code>HTMLSelectElement.add()</code></a> メソッドの引数に、インデックスが追加されました。インデックスが指す要素の前に、新たな項目が挿入されます。このメソッドはこれまで、項目のみがサポートされていました。(参考: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=666200" title="FIXED: support select.add(element, long before)">バグ 666200</a>)</li>
+ <li><code>HTMLIsIndexElement</code> コンストラクタが削除されました。Firefox 4 以前から、どの要素もこのインターフェースをインプリメントしていませんでした。</li>
+ <li>HTML5 のコンテキストメニュー機能 (contextmenu 属性) がサポートされました。この機能によって、要素固有のメニュー項目をネイティブのコンテキストメニューに追加できます。(この機能は HTML5 仕様の変更を待っている関係で、現時点では試験実装という扱いです。参考: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=617528" title='FIXED: implement the HTML5 "context menu" feature (contextmenu attribute)'>バグ 617528</a>)</li>
+ <li>すべての要素に <a href="/ja/docs/HTML/Global_attributes#attr-accesskeylabel" title="https://developer.mozilla.org/ja/HTML/Global_attributes#attr-accesskeylabel"><code>accesskeylabel</code></a> 属性がサポートされました。</li>
+ <li><a href="/ja/docs/Web/HTML/Element/input" title="HTML の &lt;input> 要素は、ユーザーからデータを受け取るための、ウェブベースのフォーム用の対話的なコントロールを作成するために使用します。"><code>&lt;input&gt;</code></a> と <a href="/ja/docs/Web/HTML/Element/textarea" title="HTML の &lt;textarea> 要素は、複数行のプレーンテキスト編集コントロールを表し、レビューのコメントやお問い合わせフォーム等のように、ユーザーが大量の自由記述テキストを入力できるようにするときに便利です。"><code>&lt;textarea&gt;</code></a> に <code>selectionDirection</code> アトリビュートが追加されました。また、<code>setSelectionRange()</code> メソッドが選択方向を指定できるようになりました。</li>
+ <li><code>tabindex</code> 属性でフォーカス可能になった要素にフォーカスしたとき、ほとんどの要素でフォーカスリングが描画されるようになりました。</li>
+</ul>
+
+<h3 id="DOM">DOM</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Element/insertAdjacentHTML" title="insertAdjacentHTML() は、第二引数で指定するテキストを HTML または XML としてパースし、その結果であるノードを DOM ツリー内の指定された位置(第一引数で指定)に挿入します。これは挿入先の要素を再度パースするものではないため、既存の要素や要素内部の破壊を伴いません。余分なシリアル化のステップを回避できる分、 innerHTML への代入による直接的な操作よりもはるかに高速な動作となります。"><code>insertAdjacentHTML</code></a> メソッドが実装されました。</li>
+ <li><a href="/ja/docs/Web/API/BlobBuilder" title="BlobBuilder インターフェースは、Blob オブジェクトを構築する簡単な方法を提供します。単に BlobBuilder を作成し、 append() メソッドを使ってデータのチャンクを付け足していってください。blobの生成が完了したら getBlob() メソッドを呼んで、あなたがビルダに送り込んだデータの Blob を取得してください。"><code>BlobBuilder</code></a> に <code>getFile()</code> メソッドが追加されました。このメソッドは blob の内容をファイルとして返します。</li>
+ <li>入れ子になった <a href="/ja/docs/Web/HTML/Element/label" title="HTML の &lt;label> 要素は、ユーザーインターフェイスの項目のキャプションを表します。"><code>&lt;label&gt;</code></a> のイベントハンドリングが修正されました。</li>
+ <li>ウィンドウ間での <a href="/ja/docs/Web/API/Window/postMessage" title="window.postMessage が呼び出された場合、実行されなければならない保留中のスクリプトが完了した後に MessageEvent が対象ウィンドウにディスパッチされます。(例えば、window.postMessage がイベントハンドラから呼ばれた場合のまだ実行されていない残りのイベントハンドラや、以前に設定された保留中のタイムアウト、など)。 MessageEvent には message という型、window.postMessage に与えられる第一引数の文字列の値に設定される data プロパティ、 window.postMessage が呼び出されたとき、window.postMessage を呼び出しているウィンドウ内のメインドキュメントの生成元に対応する origin プロパティ、window.postMessage を呼び出したウィンドウである source プロパティがあります。(他のイベントの標準プロパティがそれらの期待される値で存在します)"><code>window.postMessage()</code></a> に <a href="/ja/docs/Web/API/File" title="File インターフェイスは、ファイルについての情報を提供したり、ウェブページ内の JavaScript でその内容にアクセスできるようにしたりします。"><code>File</code></a> と <a href="/ja/docs/Web/API/FileList" title='この型のオブジェクトは、 &amp;lt;input> 要素の files プロパティによって返されます;これによって、 &amp;lt;input type="file"> 要素で選択されたファイルのリストにアクセスできます。 また、drag and drop API を使用しているとき、Web コンテンツにドロップされたファイルのリストにアクセスするためにも使用されます;この使用方法の詳細は DataTransfer オブジェクトを見てください。'><code>FileList</code></a> が使えるようになりました。</li>
+ <li><a href="/ja/docs/Web/API/Element/contenteditable" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>element.contenteditable</code></a> な領域において、見出しで改行した際、もしくはリスト編集モードから2回開業して抜け出す際、段落が挿入されるようになりました。(これまでは<a href="/ja/docs/Web/HTML/Element/br" title="HTML の &lt;br> 要素 は、文中に改行(キャリッジリターン)を生成します。詩や住所など、行の分割が重要な場合に有用です。"><code>&lt;br&gt;</code></a>でしたが、これからは<a href="/ja/docs/Web/HTML/Element/p" title="HTML の &lt;p> 要素は、テキストの段落を表します。"><code>&lt;p&gt;</code></a>が挿入されます。)</li>
+ <li><a href="/ja/docs/Web/API/Element/contenteditable" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>element.contenteditable</code></a> な領域において、1行目に均等割付を与えたときに適切な処理を妨げるバグを修正しました。</li>
+ <li><a href="/ja/docs/Web/API/Element/contenteditable" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>element.contenteditable</code></a> な領域の最初で delete もしくは backspace を押した際に、前のブロックに影響するバグを修正しました。</li>
+ <li><a href="/ja/docs/Web/API/Document/getSelection" title="DOM の getSelection() メソッドは、 Window インタフェース及び Document インタフェースで利用可能です。
+ 詳細については window.getSelection() の頁を参照して下さい。"><code>document.getSelection()</code></a> が文字列化ではなく、<a href="/ja/docs/Web/API/Window/getSelection" title="ユーザーが選択した文字列の範囲やキャレットの現在位置を示す Selection オブジェクトを返します。"><code>window.getSelection()</code></a> と同じ <code>Selection</code> オブジェクトを返すようになりました。</li>
+ <li>HTML5 の <code>selectionDirection</code> プロパティが実装されました。編集可能テキストで選択した方向を指定できます。</li>
+ <li><a href="/ja/docs/Web/API/HTMLMediaElement" title="HTMLMediaElement は HTMLElement に音声や動画といったメディア関連機能の属性とメソッドを追加します。HTMLVideoElement と HTMLAudioElement はこのインタフェースを継承しています。"><code>HTMLMediaElement</code></a> の <code>seekable</code> プロパティが実装されました。このプロパティは <a href="/ja/docs/Web/API/TimeRanges" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>TimeRanges</code></a> を返します。</li>
+ <li><a href="/ja/docs/Web/API/HTMLMediaElement" title="HTMLMediaElement は HTMLElement に音声や動画といったメディア関連機能の属性とメソッドを追加します。HTMLVideoElement と HTMLAudioElement はこのインタフェースを継承しています。"><code>HTMLMediaElement</code></a><code>.preload</code> 属性が適切な <em>enumerated value</em> を反映するようになりました。</li>
+ <li><a href="/ja/docs/HTML/CORS_settings_attributes" title="HTML/CORS_settings_attributes"><code>crossOrigin</code> プロパティ</a> に不正な値が使われた場合は "Anonymous" と扱われるようになりました。</li>
+ <li><a href="/ja/docs/Web/API/Window/navigator/cookieEnabled" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>window.navigator.cookieEnabled</code></a> が、サイトごとの設定で Cookie の設定が上書きされている場合においても正しい情報を返すようになりました。</li>
+</ul>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>引数なしで呼び出された <a href="/ja/docs/JavaScript/Reference/Global_Objects/RegExp/exec" title="JavaScript/Reference/Global Objects/RegExp/exec"><code>RegExp.exec()</code></a>, <a href="/ja/docs/JavaScript/Reference/Global_Objects/RegExp/test" title="JavaScript/Reference/Global Objects/RegExp/test"><code>RegExp.test()</code></a> が文字列 "undefined" にマッチするようになりました。</li>
+ <li>引数なし、もしくは <code>undefined</code> をとり呼び出された <a href="/ja/docs/JavaScript/Reference/Global_Objects/String/search" title="JavaScript/Reference/Global Objects/String/search"><code>String.search()</code></a>, <a href="/ja/docs/JavaScript/Reference/Global_Objects/String/match" title="JavaScript/Reference/Global Objects/String/match"><code>String.match()</code></a> が空文字列にマッチするようになり、つまりはすべての文字列にマッチするようになりました。</li>
+ <li>ウォッチリストのサポートが行われました。ウォッチリストは (非標準の) <a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/watch" title="JavaScript/Reference/Global_Objects/Object/watch"><code>watch()</code></a> メソッドおよび <a href="/ja/docs/JavaScript/Reference/Global_Objects/Object/unwatch" title="JavaScript/Reference/Global_Objects/Object/unwatch"><code>unwatch()</code></a> メソッドから利用できます。</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/CSS/resolution" title="CSS の &lt;resolution> データ型 は メディアクエリー の resolutions で使われ、出力デバイスのピクセル密度である、解像度を表します。"><code>&lt;resolution&gt;</code></a> が仕様に従い、<a href="/ja/docs/Web/CSS/integer" title="CSS プロパティで使用される整数値には単位がありません。"><code>&lt;integer&gt;</code></a> だけでなく <a href="/ja/docs/Web/CSS/number" title="CSS の &lt;number> データ型は、整数または小数部分のある数値を表します。"><code>&lt;number&gt;</code></a> もサポートしました。</li>
+ <li><a href="/ja/docs/Web/CSS/hyphens" title="CSS の hyphens プロパティは、文字列を複数行にわたって折り返す際に、単語のハイフネーションを行う方法を指定します。ハイフネーションをまったく行わなかったり、文字列中に手動で指定された位置でハイフネーションを行ったり、ブラウザーに適切な位置にハイフンを挿入させたりすることができます。"><code>hyphens</code></a> 利用時のハイフネーション規則がより多くの言語でサポートされました。</li>
+ <li><a href="/ja/docs/Web/CSS/background-size" title="CSS の background-size プロパティは、要素の背景画像の寸法を設定します。画像は自然な寸法になったり、引き伸ばされたり、利用可能な領域に収まるように縮小されたりします。"><code>background-size</code></a> の処理が仕様により従ったものになりました。</li>
+ <li>これまで Quriks モードでの <a href="/ja/docs/Web/CSS/text-decoration" title="CSS の text-decoration プロパティは、テキストの装飾的な線の表示を設定します。これは text-decoration-line, text-decoration-color, text-decoration-style の一括指定です。"><code>text-decoration</code></a> は、太い線で描画され、また子孫要素のテキストに沿って描画されていました。Firefox 8 からは、標準モードにより近い表示になります。</li>
+ <li>要素の水平方向への配置がより仕様に沿った実装になりました。この件に関するドキュメントを準備中ですが、今は <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=682780" title="jig.com looks different in aurora vs. firefox">バグ 682780</a> のコメント 23 をお読みください。</li>
+ <li><a href="/ja/docs/CSS/Scaling_of_SVG_backgrounds" title="CSS/Scaling_of_SVG_backgrounds">SVG 画像の拡大縮小</a> が背景画像においても適切に処理されるようになりました。</li>
+</ul>
+
+<h3 id="Network">Network</h3>
+
+<ul>
+ <li>ダブルクォートが <a href="https://tools.ietf.org/html/rfc2231">RFC 2231</a>/<a href="https://tools.ietf.org/html/rfc5987">RFC 5987</a> エンコーディングの区切り子として利用できなくなりました。これはそれらの RFC への準拠によるものです。</li>
+ <li>MIME ヘッダフィールドのパーサは、引数に「=」が含まれない <code>Content-Disposition</code> ヘッダを受け付けなくなりました。</li>
+ <li>JavaScript が無効な環境ではスクリプトファイルをダウンロードしないようになりました。</li>
+ <li>SSL 2.0 のサポートが打ち切られました。</li>
+</ul>
+
+<h3 id="WebSocket">WebSocket</h3>
+
+<ul>
+ <li>WebSocket オブジェクトの <a href="/ja/docs/WebSockets/WebSockets_reference/WebSocket#send()" title="WebSockets/WebSockets_reference/WebSocket#send()"><code>send()</code></a> メソッドが不適切に真偽値を返していた挙動が修正されました。</li>
+ <li><a href="/ja/docs/WebSockets/WebSockets_reference/WebSocket" title="WebSocket"><code>WebSocket</code></a> オブジェクトの <a href="/ja/docs/WebSockets/WebSockets_reference/WebSocket#close()" title="WebSockets/WebSockets_reference/WebSocket#close()"><code>close()</code></a> メソッドが現在の標準草案に従ったものになりました。また、クローズイベントが適切に <a href="/ja/docs/WebSockets/WebSockets_reference/CloseEvent" title="CloseEvent"><code>CloseEvent</code></a> インターフェースを利用するようになりました。</li>
+ <li>The <a href="/ja/docs/WebSockets/WebSockets_reference/WebSocket" title="WebSocket"><code>WebSocket</code></a> オブジェクトの <code>extensions</code> アトリビュートがサポートされました。</li>
+ <li>WebSocket コンストラクタがひとつのプロトコル文字列だけではなく、プロトコルの配列もサポートするようになりました。</li>
+ <li>SSL と 非 SSL の混在が WebSocket で認められなくなりました。</li>
+ <li>WebSocket の接続エラーが <code>onerror</code> ハンドラをトリガーするようになりました。</li>
+ <li><a href="/ja/docs/WebSockets" title="WebSockets">WebSocket</a> API が最新版の仕様に追従しました。(参考: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=674890" title="FIXED: Update WebSocket API to latest draft - send() should return void">バグ 674890</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=674527" title="FIXED: Update WebSocket API to latest draft - array of protocols in ctor">バグ 674527</a>, <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=674716" title="FIXED: Update WebSocket API to latest draft - close codes and reasons">バグ 674716</a>)</li>
+ <li>WebSocket の deflate-stream 拡張が無効にされました。この拡張は非推奨とされており、またいくつかの Web サイトとの互換性を損ねていました。</li>
+</ul>
+
+<h3 id="WebGL">WebGL</h3>
+
+<ul>
+ <li>他のドメインからのテクスチャ読み込みが再び可能になりました。ただし、CORS によってアクセスを許可されている場合に限ります。(参考: <a href="/ja/docs/WebGL/Cross-Domain_Textures" title="WebGL/Cross-Domain_Textures">Cross-domain textures</a>)</li>
+ <li>Cross-process rendering with Direct2D/Direct3D 10.</li>
+</ul>
+
+<h3 id="MathML">MathML</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/MathML/Element/math" title="&lt;math>">&lt;math&gt;</a></code> 要素に <code>displaystyle</code> 属性のサポートが追加されました。</li>
+ <li><code><a href="/ja/docs/Web/MathML/Element/mtable" title="&lt;mtable>">&lt;mtable&gt;</a></code> 要素の <code>align</code> において、<em>負の行数</em> の解釈が修正されました。</li>
+</ul>
+
+<h3 id="Developer_tools" name="Developer_tools">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Using_the_Web_Console#The_console_object" title="Using_the_Web_Console#The_console_object"><code>console</code></a> オブジェクトが <code>dir()</code> メソッドをサポートしました。個のメソッドは指定したオブジェクトについて、インタラクティブなプロパティリストを表示します。</li>
+</ul>
+
+<h2 id="Mozilla_開発者とアドオン開発者向けの変更点">Mozilla 開発者とアドオン開発者向けの変更点</h2>
+
+<p>アドオンを Firefox 8 互換にする際に必要となりそうな変更点は <a href="/ja/docs/Firefox/Updating_add-ons_for_Firefox_8" title="Firefox/Updating_add-ons_for_Firefox_8">Updating add-ons for Firefox 8</a> にまとめられています。</p>
+
+<div class="note"><strong>注:</strong> Firefox 8 では、従来のメジャーリリースと同様に、バイナリコンポーネントをコンパイルし直す必要があります。詳しくは <a href="/ja/docs/Developer_Guide/Interface_Compatibility#Binary_Interfaces" title="Developer_Guide/Interface_Compatibility#Binary_Interfaces">バイナリインタフェース</a> をご覧ください。</div>
+
+<h3 id="XPCOM">XPCOM</h3>
+
+<dl>
+ <dt><a href="/ja/docs/Components.utils" title="Components.utils"><code>Components.utils</code></a></dt>
+ <dd>特定のコンパートメントでより簡単にオブジェクトを作成できるようにするため、新しいメソッド <a href="/ja/docs/Components.utils.createObjectIn" title="Components.utils.createObjectIn"><code>createObjectIn()</code></a> と <a href="/ja/docs/Components.utils.makeObjectPropsNormal" title="Components.utils.makeObjectPropsNormal"><code>makeObjectPropsNormal()</code></a> が追加されました。</dd>
+</dl>
+
+<h4 id="Other_XPCOM_related_changes" name="Other_XPCOM_related_changes">その他の XPCOM 関連の変更</h4>
+
+<ul>
+ <li>You can now instantiate DOM <a href="/ja/docs/Web/API/File" title="File インターフェイスは、ファイルについての情報を提供したり、ウェブページ内の JavaScript でその内容にアクセスできるようにしたりします。"><code>File</code></a> objects from component code by simply doing new File, instead of having to instantiate an <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFile" title="">nsIDOMFile</a></code> directly.</li>
+ <li>The <code>nsTPtrArray</code> array type has been removed. Its functionality is now all available on <code>nsTArray</code>, which now offers the <code>SafeElementAt()</code> method when instantiated using a pointer type. See the section on <a href="/ja/docs/XPCOM_array_guide#Bounds-safe_access_to_elements" title="XPCOM_array_guide#Bounds-safe_access_to_elements"><code>SafeElementAt()</code></a> in the <a href="/ja/docs/XPCOM_array_guide" title="XPCOM array guide">XPCOM array guide</a> for more information.</li>
+</ul>
+
+<h3 id="Workers">Workers</h3>
+
+<p>ChromeWorkers から XPCOM オブジェクトにアクセスできなくなりました。XPConnect は <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=649537" title="FIXED: Workers: Make one OS thread and JS runtime per worker, and lose XPConnect">バグ 649537</a> によりワーカーコンテキストで無効にされています。</p>
+
+<h3 id="XUL">XUL</h3>
+
+<ul>
+ <li>A bug in <a href="/ja/docs/Web/API/Document/execCommand" title="HTML 文書が designMode に切り替えられた時、 document オブジェクトは、フォーム入力欄や contenteditable を持った要素のように現在編集可能な領域を操作するためにコマンドを実行するために、 execCommand メソッドを公開します。"><code>document.execCommand()</code></a> that occurred when calling it on the value of <code><span><a href="https://developer.mozilla.org/ja/docs/XUL/Property/contentDocument">contentDocument</a></span></code> has been fixed. Since Firefox 3, this resulted in errors instead of working correctly.</li>
+ <li><a href="/ja/docs/Extensions/Bootstrapped_extensions" title="Bootstrapped extensions">Bootstrapped add-ons</a> can now load chrome using a <a href="/ja/docs/Chrome_Registration" title="chrome.manifest"><code>chrome.manifest</code></a> file. See the section <a href="/ja/docs/Extensions/Bootstrapped_extensions#Adding_user_interface_with_a_chrome.manifest" title="Extensions/Bootstrapped_extensions#Adding_user_interface_with_a_chrome.manifest">Adding user interface with a chrome.manifest</a> for details.</li>
+</ul>
+
+<h3 id="JavaScript_コードモジュール">JavaScript コードモジュール</h3>
+
+<h4 id="ISO8601DateUtils.jsm">ISO8601DateUtils.jsm</h4>
+
+<ul>
+ <li>このコードモジュールは削除されました。<code><a href="/ja/docs/JavaScript/Reference/Global_Objects/Date/parse" title="JavaScript/Reference/Global_Objects/Date/parse">Date.parse()</a></code> が ISO 8601 形式の日付を受け付けるようになり、新しい <a href="/ja/docs/JavaScript/Reference/Global_Objects/Date/toISOString" title="JavaScript/Reference/Global_Objects/Date/toISOString"><code>Date.toISOString()</code></a> で ISO 形式の日付と時刻を出力できます。今後は ISO8601DateUtils.jsm の代わりにこれらのメソッドを使ってください。なお、今のところこれらは <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=693077">タイムゾーンに対応していません</a>。</li>
+</ul>
+
+<h3 id="ビルドシステムの変更">ビルドシステムの変更</h3>
+
+<ul>
+ <li>以下のビルド設定オプションは削除されました。
+ <ul>
+ <li><code>--enable-timeline</code></li>
+ <li><code>--disable-storage</code></li>
+ <li><code>--necko-disk-cache</code></li>
+ </ul>
+ </li>
+ <li>When compiling IDL files to headers, the header file <code>jspubtd.h</code> is automatically included when needed. Manual inclusions of <code>jspubtd.h</code> and/or <code>jsapi.h</code> in IDL files that use jsval or [implicit_jscontext] are no longer necessary.</li>
+</ul>
+
+<h3 id="クロームの登録">クロームの登録</h3>
+
+<ul>
+ <li>Gecko のバージョン互換性を指定する <a href="/ja/docs/Chrome_Registration#platformversion" title="Chrome_Registration#platformversion"><code>platformversion</code></a> フラグが chrome.manifest でも使えるようになりました。</li>
+</ul>
+
+<h3 id="インタフェースの変更">インタフェースの変更</h3>
+
+<ul>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/mozIJSSubScriptLoader#loadSubScript%28%29" title="XPCOM_Interface_Reference/mozIJSSubScriptLoader#loadSubScript%28%29"><code>mozIJSSubScriptLoader.loadSubScript()</code></a> メソッドが、可能な場合、起動キャッシュからスクリプトを読み込むようになりました。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/NsIAccessNode" title="XPCOM_Interface_Reference/NsIAccessNode"><code>nsIAccessNode</code></a> インタフェースから <code>ownerWindow</code> 属性が削除されました。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsIDOMStorageWindow" title="XPCOM_Interface_Reference/nsIDOMStorageWindow"><code>nsIDOMStorageWindow</code></a> インタフェースは <a href="/ja/docs/XPCOM_Interface_Reference/nsIDOMWindow" title="XPCOM_Interface_Reference/nsIDOMWindow"><code>nsIDOMWindow</code></a> インタフェースへ統合されました。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsIDOMWindowInternal" title="XPCOM_Interface_Reference/nsIDOMWindowInternal"><code>nsIDOMWindowInternal</code></a> インタフェースの全メンバーが <a href="/ja/docs/XPCOM_Interface_Reference/nsIDOMWindow" title="XPCOM_Interface_Reference/nsIDOMWindow"><code>nsIDOMWindow</code></a> インタフェースへ移動されました。インタフェース自体は互換性維持のため Firefox 9 まで (メンバーを持たない状態で) 残されます。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsIMemoryReporter" title="XPCOM_Interface_Reference/nsIMemoryReporter"><code>nsIMemoryReporter</code></a> の <code>KIND_MAPPED</code> 属性が廃止され、代わりに <code>KIND_NONHEAP</code> 属性と新しい単位型 <code>UNITS_COUNT_CUMULATIVE</code>、<code>UNITS_PERCENTAGE</code> が追加されました。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsINetworkLinkService" title="XPCOM_Interface_Reference/nsINetworkLinkService"><code>nsINetworkLinkService</code></a> インタフェースに <code>linkType</code> 属性が追加されました。この属性で使用中のネットワーク接続の種類を参照できます。ただし、今のところすべての OS で <code>LINK_TYPE_UNKNOWN</code> が返ります。Android 対応は、セキュリティの懸念が報告されたため、バックアウトされました。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsISelection2" title="XPCOM_Interface_Reference/nsISelection2"><code>nsISelection2</code></a> インタフェースは <a href="/ja/docs/XPCOM_Interface_Reference/nsISelectionPrivate" title="XPCOM_Interface_Reference/nsISelectionPrivate"><code>nsISelectionPrivate</code></a> インタフェースへ統合されました。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsISelection3" title="XPCOM_Interface_Reference/nsISelection3"><code>nsISelection3</code></a> インタフェースは <a href="/ja/docs/DOM/Selection" title="nsISelection"><code>nsISelection</code></a> インタフェースへ統合されました。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsISessionStartup" title="XPCOM_Interface_Reference/nsISessionStartup"><code>nsISessionStartup</code></a> の属性の状態が、パフォーマンス上の理由から、文字列型ではなく <a href="/ja/docs/SpiderMonkey/JSAPI_Reference/Jsval" title="SpiderMonkey/JSAPI_Reference/Jsval"><code>jsval</code></a> 型になりました。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsIDocShell" title="XPCOM_Interface_Reference/nsIDocShell"><code>nsIDocShell</code></a> の <code>isActive</code> 属性は、最小化されたウィンドウでは <code>false</code> を返すようになりました。</li>
+</ul>
+
+<h4 id="Removed_interfaces" name="Removed_interfaces">削除されたインターフェース</h4>
+
+<p>次のインターフェースは内部で使用されていたもので、必要がなくなったため削除されました。</p>
+
+<ul>
+ <li><code>nsITimelineService</code></li>
+ <li><code>nsIDOMHTMLIsIndexElement</code></li>
+</ul>
+
+<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWorkerFactory" title="">nsIWorkerFactory</a></code> インターフェースも削除されました。ワーカーは <code>Worker</code>, <code>ChromeWorker</code> コンストラクタから生成可能です。</p>
+
+<h3 id="Other_changes" name="Other_changes">その他の変更</h3>
+
+<ul>
+ <li>ウィンドウが最小化されたとき、最小化から復帰したとき、あるいは全画面表示と通常表示の切り替えが行われたときに、<code>window</code> が <code>sizemodechange</code> イベントを受け取るようになりました。</li>
+ <li><a href="/ja/docs/Installing_extensions#Preventing_automatic_install_from_specific_locations" title="Installing_extensions#Preventing_automatic_install_from_specific_locations"><code>extensions.autoDisableScopes</code> 設定を使う</a> ことで、特定の場所からのアドオン自動インストールを無効化できるようになりました。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">参考</h2>
+
+<div><div class="multiColumnList">
+<ul>
+<li><a href="/ja/docs/Mozilla/Firefox/Releases/7">Firefox 7 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/6">Firefox 6 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/5">Firefox 5 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/4">Firefox 4 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/3.6">Firefox 3.6 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/3.5">Firefox 3.5 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/3">Firefox 3 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/2">Firefox 2 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/1.5">Firefox 1.5 for developers</a></li></ul>
+</div></div>
diff --git a/files/ja/mozilla/firefox/releases/80/index.html b/files/ja/mozilla/firefox/releases/80/index.html
new file mode 100644
index 0000000000..edc616f4ff
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/80/index.html
@@ -0,0 +1,103 @@
+---
+title: Firefox 80 for developers
+slug: Mozilla/Firefox/Releases/80
+translation_of: Mozilla/Firefox/Releases/80
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">このページでは、開発者に影響する Firefox 80 の変更点をまとめています。Firefox 80 は、2020 年 8 月 25 日にリリースされました。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>ウェブコンソールの <a href="/ja/docs/Tools/Web_Console/Helpers">ヘルパーコマンド</a> <code>:block</code> および <code>:unblock</code> を使用して、ネットワーク要求をブロックおよびブロック解除できるようになりました ({{bug("1546394")}})。</li>
+ <li>ページインスペクターのルールペインで要素に <a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Viewing_and_changing_classes_on_an_element">クラスを追加</a> するとき、既存のクラスをオートコンプリートで提案するようになりました ({{bug("1492797")}})。</li>
+ <li>デバッガーが <a href="/ja/docs/Tools/Debugger/How_to/Breaking_on_exceptions">例外でブレークするとき</a>、ソースペインのツールチップでスタックトレースを展開するための三角印を表示するようになりました ({{bug("1643633")}})。</li>
+ <li><a href="/ja/docs/Tools/Network_Monitor/request_list#Network_request_columns">ネットワークモニターの要求リスト</a> で、待ち時間のしきい値 (設定可能) を超える "遅い" 要求に亀のアイコンを表示するようになりました ({{bug("1648373")}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>標準化されて接頭辞がない {{CSSxRef("appearance", "appearance")}} プロパティをサポートしました。既存の <code>-moz-appearance</code> および <code>-webkit-appearance</code> は、接頭辞がないプロパティの別名になります ({{bug(1620467)}})。</li>
+</ul>
+
+<h4 id="Removals_2" name="Removals_2">廃止</h4>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>ECMAScript 2021 の、<code><a href="/ja/docs/Web/JavaScript/Reference/Statements/export">export</a></code> 文の <code>export * as namespace</code> 構文をサポートしました ({{bug(1496852)}})。</li>
+</ul>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<ul>
+ <li>以前は <code><a href="/ja/docs/Web/HTML/Element/iframe">&lt;iframe&gt;</a></code> に (<code>allow</code> 属性で) <a href="/ja/docs/Web/HTTP/Headers/Feature-Policy/fullscreen">fullscreen</a> ディレクティブが適用されていたとき、<code>allowfullscreen</code> 属性も与えていなければ動作しませんでした。この問題を修正しました ({{bug(1608358)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li>Web Animations API の合成操作をサポートしました。<code><a href="/ja/docs/Web/API/KeyframeEffect/composite">KeyframeEffect.composite</a></code> および <code><a href="/ja/docs/Web/API/KeyframeEffect/iterationComposite">KeyframeEffect.iterationComposite</a></code> をご覧ください ({{bug(1652676)}})。</li>
+</ul>
+
+<h4 id="Media_WebRTC_and_Web_Audio" name="Media_WebRTC_and_Web_Audio">Media、WebRTC、Web Audio</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Media_Session_API">Media Session API</a> で <a href="/ja/docs/Web/API/MediaSessionAction#seekto"><code>seekto</code> アクション</a> をサポートしました。コードが再生中のメディアの指定した時間へシークすることを、メディアコントロールが要求できるようにします ({{bug(1621403)}})。</li>
+ <li>Media Session API で <a href="/ja/docs/Web/API/MediaSessionAction#skipad"><code>skipad</code> アクション</a> もサポートしました。スキップ機能が存在して、ユーザーのサブスクリプションや権限のレベルで許可されていれば、広告コンテンツをスキップしてメインのメディアコンテンツの再生を継続します ({{bug(1582569)}})。</li>
+</ul>
+
+<h4 id="WebGL" name="WebGL">WebGL</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/WebGL_API/Using_Extensions">WebGL 拡張</a> の {{domxref("KHR_parallel_shader_compile")}} をサポートしました ({{bug(1536674)}})。</li>
+</ul>
+
+<h4 id="Removals_3" name="Removals_3">廃止</h4>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/API/Window/open">Window.open()</a></code> の<code>outerHeight</code> および <code>outerWidth</code> 機能を、ウェブコンテンツに公開しないようになりました ({{bug(1623826)}})。</li>
+</ul>
+
+<h3 id="WebAssembly" name="WebAssembly">WebAssembly</h3>
+
+<ul>
+ <li>Atomic 操作を、非共有メモリーで許可しました ({{bug(1619196)}})。</li>
+</ul>
+
+<h3 id="WebDriver_conformance_Marionette" name="WebDriver_conformance_Marionette">WebDriver conformance (Marionette)</h3>
+
+<ul>
+ <li>ヘッドレスモードでテストを実行するとき、新しいタブを開くために <code>WebDriver:NewWindow</code> を使用すると戻るのが早すぎる問題を修正しました ({{bug(1653281)}})。</li>
+ <li><code>WebDriver:SwitchToWindow</code> から引数 <code>name</code> を削除しました。これは W3C 準拠モードでサポートされておらず、使用するべきではありません ({{bug(1588424)}})。</li>
+ <li>以下のコマンドで Fission のサポートを始めました: <code>WebDriver:FindElement</code>、<code>WebDriver:FindElements</code>、<code>WebDriver:GetElementAttribute</code>、<code>WebDriver:GetElementProperty</code>。</li>
+ <li><strong>既知の問題</strong>: <code>WebDriver:NewWindow</code> を使用するか、<code>window.open()</code> を呼び出す任意のスクリプトで新しいをタブを開くと、自動的に新しいウィンドウに切り替わります ({{bug(1661495)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="Removals_4" name="Removals_4">廃止</h4>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/versions/80/">Firefox 80 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(79)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/81/index.html b/files/ja/mozilla/firefox/releases/81/index.html
new file mode 100644
index 0000000000..bba2e2910a
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/81/index.html
@@ -0,0 +1,106 @@
+---
+title: Firefox 81 for developers
+slug: Mozilla/Firefox/Releases/81
+tags:
+ - '81'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/81
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">このページでは、開発者に影響する Firefox 81 の変更点をまとめています。Firefox 81 は 2020 年 9 月 22 日にリリースされました。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Debugger">デバッガー</a> で、<code>.ts</code> および <code>.tsx</code> ファイルに対して TypeScript のアイコンを使用するようになりました ({{bug(1642769)}})。以前は汎用ファイルのアイコンを使用していました。</li>
+ <li><a href="/ja/docs/Tools/Debugger/UI_Tour#Source_pane">デバッガーのソースペイン</a> で行の折り返しをサポートしました ({{bug(1590885)}})。</li>
+ <li><a href="/ja/docs/Tools/Accessibility_inspector">アクセシビリティインスペクター</a> から、不必要な <a href="/ja/docs/Tools/Accessibility_inspector/Simulation">色覚シミュレーション</a> (1 型 3 色覚、2 型 3 色覚、3 型 3 色覚) を削除して、1 色覚 (全色盲) のシミュレーションを追加しました ({{bug(1655053)}})。</li>
+ <li><a href="/ja/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Viewing_and_changing_classes_on_an_element">要素にクラスを追加する</a> 際のオートコンプリートをサポートしました。文書内にあるクラスに基づいて、クラスを提案します ({{bug(1492797)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li>サンドボックス化された <code><a href="/ja/docs/Web/HTML/Element/iframe">&lt;iframe&gt;</a></code> 要素で、自動ダウンロードをブロックするようになりました ({{bug(1558394)}})。</li>
+</ul>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<ul>
+ <li>非標準の <code>mozallowfullscreen</code> 属性を、<code><a href="/ja/docs/Web/HTML/Element/iframe">&lt;iframe&gt;</a></code> から削除しました。代わりに <code>allow="fullscreen"</code> を検討してください ({{bug(1657599)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{CSSxRef("overflow")}} プロパティの値 <code>overflow:-moz-hidden-unscrollable</code> を改名して、値 <code>clip</code> をサポートしました ({{bug(1531609)}})。</li>
+ <li>仕様書に合わせて、{{CSSxRef("text-combine-upright")}} プロパティをアニメーション不可にしました ({{bug(1654195)}})。</li>
+</ul>
+
+<h4 id="Removals_2" name="Removals_2">廃止</h4>
+
+<ul>
+ <li>非標準の {{CSSxRef("::-moz-focus-outer")}} <a href="/ja/docs/Web/CSS/Pseudo-elements">疑似要素</a> を削除しました ({{bug(1655859)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<ul>
+ <li>Firefox で、空白を含むクォートされていないファイル名を持つ非標準の <code><a href="/ja/docs/Web/HTTP/Headers/Content-Disposition">Content-Disposition</a></code> ヘッダーを受け入れるようになりました ({{bug(1440677)}})。</li>
+ <li>Firefox で HTTP <code><a href="/ja/docs/Web/HTTP/Headers/Feature-Policy">Feature-Policy</a></code> ヘッダーの <code><a href="/ja/docs/Web/HTTP/Headers/Feature-Policy/web-share">web-share</a></code> ディレクティブをサポートしました。これは、<a href="/ja/docs/Web/API/Navigator/share">Web Share API</a> へのアクセスを信頼されたオリジンに制限するために使用できます。現時点で Firefox は Web Share API 自体をサポートしていないことに注意してください ({{bug(1653199)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="Gamepad" name="Gamepad">ゲームパッド</h4>
+
+<ul>
+ <li>ゲームパッドのジョイスティックがアクティブになるしきい値を上げました。これにより、アイドル時に小さな軸の値を送信するコントローラーや、ごく小さな打撃によって意図せずゲームパッドがアクティブになる可能性を減らします。({{bug(1539178)}})</li>
+</ul>
+
+<h4 id="WorkersService_workers" name="WorkersService_workers">Workers/Service workers</h4>
+
+<ul>
+ <li>worker や shared worker のスクリプトで、厳格な MIME タイプの確認を強制するようになりました。すなわち {{domxref("Worker.Worker()", "Worker()")}} や {{domxref("SharedWorker.SharedWorker()", "SharedWorker()")}} コンストラクターの対象になるスクリプトは <code>text/javascript</code> で提供しなければなりません ({{bug(1523706)}})。</li>
+</ul>
+
+<h3 id="WebDriver_conformance_Marionette" name="WebDriver_conformance_Marionette">WebDriver conformance (Marionette)</h3>
+
+<ul>
+ <li><code>setWindowRect</code> 機能の既定値が、すべてのデスクトップアプリケーション (Thunderbird を含む) で <code>true</code> に、Android の GeckoView で <code>false</code> になりました ({{bug(1650872)}})。</li>
+ <li>以下のコマンドで Fission をサポートしました: <code>WebDriver:SwitchToFrame</code>、<code>WebDriver:SwitchToParentFrame</code>、<code>WebDriver:GetCurrentURL</code>。すべての Fission 互換コマンドは、<code>marionette.actors.enabled</code> が <code>true</code> に設定されている場合に限って利用できます。</li>
+ <li>新しいウィンドウを開いた後、ブラウジングコンテキストの監視が破損する問題を修正しました ({{bug(1661495)}})。</li>
+ <li><code>WebDriver:SwitchToWindow</code> が失敗したとき、統一された <code>NoSuchWindowError</code> が常に返るようになりました ({{bug(1663429)}})。</li>
+</ul>
+
+<h4 id="Removals_3" name="Removals_3">廃止</h4>
+
+<ul>
+ <li>WebDriver 仕様書に含まれておらず、またすでに使用されていない <code>WebDriver:GetActiveFrame</code> を削除しました ({{bug(1659502)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/saveAsPDF">tabs.saveAsPDF()</a></code> を macOS でサポートしました ({{bug(1653354)}})。</li>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/webNavigation/getFrame">webNavigation.getFrame()</a></code> および <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/webNavigation/getAllFrames">webNavigation.getAllFrames()</a></code> の動作を変更しました。次のページへ進んでタブが破棄されたとき、promise が <code>null</code> 値で解決します ({{bug(1654842)}})。</li>
+</ul>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/versions/81/">Firefox 81 サイト互換性情報</a></li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(80)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/82/index.html b/files/ja/mozilla/firefox/releases/82/index.html
new file mode 100644
index 0000000000..503a553f7c
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/82/index.html
@@ -0,0 +1,87 @@
+---
+title: Firefox 82 for developers
+slug: Mozilla/Firefox/Releases/82
+tags:
+ - '82'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/82
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">このページでは、開発者に影響する Firefox 82 の変更点をまとめています。Firefox 82 は、2020 年 10 月 20 日にリリースされました。</p>
+
+<div class="blockIndicator note">
+<p class="summary"><strong>注記</strong>: Mozilla Hacks の <a href="https://hacks.mozilla.org/2020/10/coming-through-with-firefox-82/">Coming through with Firefox 82</a> もご覧ください。</p>
+</div>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Network_Monitor">ネットワークモニター</a> を使用して <a href="/ja/docs/Tools/Network_Monitor/Inspecting_server-sent_events">server-sent events を調査できる</a> ようになりました ({{bug(1640857)}})。</li>
+ <li>ネットワークモニターの<em>メッセージ</em>パネルを<em>応答</em>パネルに統合しました。メッセージ (例えば WebSockets や server-sent events) を応答の一覧で確認できます ({{bug(1636421)}})。</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/HTML/Element/input/color">&lt;input type="color"&gt;</a></code> で使用するカラーピッカーが、キーボードで操作可能になりました ({{bug(1526820)}})。</li>
+ <li><code><a href="/ja/docs/Web/HTML/Element/iframe">&lt;iframe sandbox&gt;</a></code> 属性の <code>allow-downloads</code> フラグをサポートしました ({{bug(1656212)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{CSSxRef("::file-selector-button", "::file-selector-button")}} 疑似要素を新たにサポートしました。この疑似要素は、<a href="/ja/docs/Web/HTML/Element/input/file"><code>&lt;input type="file"&gt;</code></a> 要素の内部にあるファイル選択ボタンを表します ({{bug(1635675)}}, {{bug(1662478)}})。</li>
+ <li>{{CSSxRef(":is", ":is()")}} および {{CSSxRef(":where", ":where()")}} 疑似クラスのエラー回復を改良しました。これらの疑似クラスは寛容なセレクターリストを受け入れるようになり、リスト内に無効なセレクターがあってもリスト全体が無効にはなりません ({{bug(1664718)}})。</li>
+ <li><code>appearance: button</code> をボタンのみに適用するようになりました。従って、{{CSSxRef("appearance")}} の値 <code>button</code> は <code>auto</code> のように動作します ({{bug(1662703)}})。</li>
+</ul>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<ul>
+ <li>独自仕様である <code><a href="/ja/docs/Web/CSS/:-moz-user-disabled">:-moz-user-disabled</a></code> 疑似クラスを削除しました ({{bug(1664432)}})。</li>
+</ul>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<ul>
+ <li>HTML <a href="/ja/docs/Web/HTML/Element/a"><code>&lt;a&gt;</code></a> 要素で <code>download</code> 属性が設定されている場合 (<a href="/ja/docs/Web/Security/Same-origin_policy">同一オリジンの URL</a>) に、<code><a href="/ja/docs/Web/HTTP/Headers/Content-Disposition">Content-Disposition</a></code> ヘッダーの <code>inline</code> ディレクティブが無視されるようになりました。<code>Content-Disposition</code> ヘッダーの <code>filename</code> を設定すると、<code>download</code> 属性で指定したファイル名より優先して使用されますので注意してください ({{bug(1658877)}})。</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<h4 id="New_APIs" name="New_APIs">新規 API</h4>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Media_Session_API">Media Session API</a> をデフォルトで有効にしました ({{bug(1665496)}})。</li>
+</ul>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/API/Document/execCommand">Document.execCommand()</a></code> の入れ子または再帰的な呼び出しのサポートを廃止して、<code>false</code> が返るようになりました ({{bug(1634262)}})。</li>
+ <li><a href="https://w3c.github.io/pointerevents/#setting-pointer-capture">仕様書</a> に従って、<code><a href="/ja/docs/Web/API/Element/setPointerCapture">Element.setPointerCapture()</a></code> でポインターの <code>id</code> が無効である場合に <code>NotFoundError</code> 例外が発生するようになりました ({{bug(1662124)}})。以前は誤って <code>InvalidPointerId</code> 例外が発生していました。</li>
+ <li>タブで別のドメインからページを読み込んだときに <code><a href="/ja/docs/Web/API/Window/name">window.name</a></code> プロパティを空文字列リセットして、元のページが (例えば "戻る" ボタンで) 再読み込みされたときに復元するようになりました。これは信頼されないページが、前のページが変数に保存していた可能性がある情報にアクセスすることを防ぎます。この変更は、ドメイン間のメッセージ送信に <code>window.name</code> を使用するフレームワークに影響があります ({{bug(444222)}})。</li>
+</ul>
+
+<h3 id="WebDriver_conformance_Marionette" name="WebDriver_conformance_Marionette">WebDriver conformance (Marionette)</h3>
+
+<ul>
+ <li>より現実的なユーザーナビゲーションをシミュレートするため、サポートされるすべてのナビゲーションコマンドを親プロセスに移動しました ({{bug(1612831)}})。</li>
+ <li>WebDriver 仕様書との適合性を向上させるため、すべてのコマンドで現在またはトップレベルのブラウジングコンテキストの確認を更新しました ({{bug(1493108)}})。</li>
+ <li><code>WebDriver:ElementClick</code> で、click イベントが実際に合成される前にコマンドが返る場合がある不具合を修正しました ({{bug(1394354)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/captureTab">tabs.captureTab()</a></code> および <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/tabs/captureVisibleTab">tabs.captureVisibleTab()</a></code> メソッドで、与えた <code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/extensionTypes/ImageDetails">options</a></code> オブジェクトの <code>rect</code> プロパティで関連するタブのコンテンツ領域を取得する、あるいはオブジェクトを与えない場合にタブで見えている領域を取得することが可能になりました ({{bug(1636508)}})。以前は <code>rect</code> プロパティが使用できず、これらのメソッドは常に関連するタブで見ている領域を取得していました。</li>
+</ul>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(81)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/83/index.html b/files/ja/mozilla/firefox/releases/83/index.html
new file mode 100644
index 0000000000..cfa83930bf
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/83/index.html
@@ -0,0 +1,65 @@
+---
+title: Firefox 83 for developers
+slug: Mozilla/Firefox/Releases/83
+tags:
+ - '83'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/83
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">このページでは、開発者に影響する Firefox 83 の変更点をまとめています。Firefox 83 は、2020 年 11 月 17 日にリリースされました。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li><a href="/ja/docs/Tools/Web_Console">ウェブコンソール</a> で <code>:screenshot</code> <a href="/ja/docs/Tools/Web_Console/Helpers">ヘルパーコマンド</a> を使用するとき、<code>--fullpage</code> を使用して全画面のスクリーンショットを撮影する場合も <code>--dpr</code> 引数を無視しないようになりました ({{bug(1645284)}})。</li>
+ <li>開発者が <a href="/ja/docs/Tools/Page_Inspector/How_to/Debug_Scrollable_Overflow">スクロール可能なオーバーフローをデバッグする</a> ために、<a href="/ja/docs/Tools/Page_Inspector">インスペクター</a> で <code>スクロール</code> バッジを使用できるようになりました。バッジを選択すると、オーバーフローを<em>発生させている</em>要素を強調して、<code>オーバーフロー</code> バッジをつけます ({{bug(1669129)}})。</li>
+</ul>
+
+<h3 id="HTMLXML" name="HTMLXML">HTML/XML</h3>
+
+<ul>
+ <li><code>&lt;link rel=icon&gt;</code> で <code>crossorigin</code> 属性をサポートしました ({{bug(1661075)}})。</li>
+ <li><code>displaystyle</code> <a href="/ja/docs/Web/MathML/Attribute">属性</a> をすべての MathML 要素に実装しました ({{bug(1666075)}})。</li>
+</ul>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>ベンダー接頭辞がつく <code>:-moz-any()</code> を、標準の {{CSSxRef(":is", ":is()")}} CSS 疑似クラス関数の別名にしました ({{bug(1666086)}})。</li>
+ <li><a href="/ja/docs/Web/CSS/conic-gradient">CSS Conic Gradients</a> をサポートしました ({{bug(1632351)}}) および ({{bug(1175958)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/JavaScript/Reference/Global_Objects/Intl/@@toStringTag">Intl[@@toStringTag]</a></code> を追加しました。既定値 <code>Intl</code> を返します (最近 ECMA 仕様書に追加されました)。({{bug(1670053)}})</li>
+</ul>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<p><em>変更なし。</em></p>
+
+<h3 id="WebDriver_conformance_Marionette" name="WebDriver_conformance_Marionette">WebDriver conformance (Marionette)</h3>
+
+<ul>
+ <li><code>WebDriver:SwitchToShadowRoot</code> の予備的なサポートを削除しました。これは WebDriver の仕様書にまだ追加されていません ({{bug(1662468)}})。</li>
+ <li><code>WebDriver:Back</code> および <code>WebDriver:Forward</code> で、削除された <code><a href="/ja/docs/Web/HTML/Element/iframe">&lt;iframe&gt;</a></code> によってナビゲーションが発生したときに Marionette がハングアップする不具合を修正しました ({{bug(1672758)}})。</li>
+</ul>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<p><em>変更なし。</em></p>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(82)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/84/index.html b/files/ja/mozilla/firefox/releases/84/index.html
new file mode 100644
index 0000000000..c0cf8feff6
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/84/index.html
@@ -0,0 +1,93 @@
+---
+title: Firefox 84 for developers
+slug: Mozilla/Firefox/Releases/84
+tags:
+ - '84'
+ - Firefox
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases/84
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="summary">このページでは、開発者に影響する Firefox 84 の変更点をまとめています。Firefox 84 は現在 <a href="https://www.mozilla.org/firefox/channel/desktop/#nightly">Nightly バージョン</a> であり、米国時間 <a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates">2020 年 12 月 15 日</a> にリリースする予定です。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">ウェブ開発者向けの変更点一覧</h2>
+
+<h3 id="Developer_Tools" name="Developer_Tools">開発者ツール</h3>
+
+<ul>
+ <li>Firefox の <a href="/ja/docs/Tools/Accessibility_inspector">アクセシビリティインスペクター</a> で、ウェブページの <a href="/ja/docs/Tools/Accessibility_inspector##Show_web_page_tabbing_order">タブオーダー</a> の表示をサポートしました。ページがキー操作でどのようなナビゲーションになるかを、単にリンクをタブ移動するよりも高レベルな概要で示します。({{bug(1654956)}})</li>
+</ul>
+
+<h3 id="HTML" name="HTML">HTML</h3>
+
+<h4 id="Removals" name="Removals">廃止</h4>
+
+<h3 id="CSS" name="CSS">CSS</h3>
+
+<ul>
+ <li>{{cssxref(":not()")}} 疑似クラスで、複雑なセレクターをサポートしました ({{bug(933562)}})。</li>
+</ul>
+
+<h4 id="Removals_2" name="Removals_2">廃止</h4>
+
+<ul>
+ <li>独自仕様である <code>-moz-default-appearance</code> プロパティの値 <code>scrollbar-small</code> (代わりに <code>scrollbar-width: thin</code> を使用します) および <code>scrollbar</code> (macOS 限定。代わりに <code>scrollbar-horizontal</code> や <code>scrollbar-vertical</code> を使用します) を削除しました ({{bug(1673132)}})。</li>
+</ul>
+
+<h3 id="JavaScript" name="JavaScript">JavaScript</h3>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="Removals_3" name="Removals_3">廃止</h4>
+
+<h3 id="HTTP" name="HTTP">HTTP</h3>
+
+<ul>
+ <li></li>
+</ul>
+
+<h4 id="Removals_4" name="Removals_4">廃止</h4>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<ul>
+ <li>Firefox で <em>http://localhost/</em> や <em>http://dev.localhost/</em> のような <code>localhost</code> URL が、ローカルホストのループバックインターフェイス (例えば <em>http://127.0.0.1</em>) を参照するものとして保証されるようになりました。この結果、<code>localhost</code> から読み込まれるリソースが安全に提供された (<a href="/ja/docs/Web/Security/Secure_Contexts">安全なコンテキスト</a> を参照) とみなされ、<a href="/ja/docs/Web/Security/Mixed_content">混在コンテンツ</a> として扱われなくなります。({{bug(1220810)}}, {{bug(1488740)}})</li>
+ <li>Firefox が、安全なページで <a href="/ja/docs/Web/Security/Mixed_content#Upgrading_mixed-display_resources">混在表示コンテンツを自動的に HTTP から HTTPS に切り替える</a> ようになりました。切り替えに失敗した (メディアのホストが HTTPS をサポートしないため) 場合は、メディアが読み込まれません。また、切り替えが成功したことを示す警告を新たにコンソールへ表示します。({{bug(1633743)}}, {{bug(1435733)}})</li>
+</ul>
+
+<h3 id="APIs" name="APIs">API</h3>
+
+<ul>
+ <li>Paint Timing API の {{domxref('PerformancePaintTiming')}} インターフェイスをサポートしました ({{bug(1518999)}})。</li>
+ <li>{{domxref('Navigator.registerProtocolHandler()')}} メソッドが、<code>scheme</code> と <code>url</code> の 2 つの引数のみ受け入れるようになりました。<code>title</code> は削除されました ({{bug(1631464)}})。</li>
+</ul>
+
+<h4 id="DOM" name="DOM">DOM</h4>
+
+<h4 id="Media_WebRTC_and_Web_Audio" name="Media_WebRTC_and_Web_Audio">Media、WebRTC、Web Audio</h4>
+
+<ul>
+ <li>{{domxref('MediaRecorder.start()')}} メソッドで、記録されているストリームのいくつかのトラックが変更されたときに <code>InvalidModificationError</code> が発生するようになりました。({{bug(1581139)}})</li>
+</ul>
+
+<h4 id="Removals_5" name="Removals_5">廃止</h4>
+
+<h3 id="WebAssembly" name="WebAssembly">WebAssembly</h3>
+
+<p><em>変更なし。</em></p>
+
+<h4 id="Removals_6" name="Removals_6">廃止</h4>
+
+<h2 id="Changes_for_add-on_developers" name="Changes_for_add-on_developers">アドオン開発者向けの変更点</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Add-ons/WebExtensions/API/browsingData/remove">browsingData.remove</a></code> API が、<code>cookieStoreId</code> でデータ型のサブセットの削除をサポートしました。</li>
+</ul>
+
+<h4 id="Removals_7" name="Removals_7">廃止</h4>
+
+<h2 id="Older_versions" name="Older_versions">過去のバージョン</h2>
+
+<p>{{Firefox_for_developers(83)}}</p>
diff --git a/files/ja/mozilla/firefox/releases/9/index.html b/files/ja/mozilla/firefox/releases/9/index.html
new file mode 100644
index 0000000000..f8cc288282
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/9/index.html
@@ -0,0 +1,160 @@
+---
+title: Firefox 9 for developers
+slug: Mozilla/Firefox/Releases/9
+tags:
+ - Firefox
+ - Firefox 9
+ - Gecko 9
+translation_of: Mozilla/Firefox/Releases/9
+---
+<p>Firefox 9 は Windows 向けに 2011 年 12 月 20 日にリリースされました。その直後に見つかったクラッシュバグを修正した Mac 版および Linux 版のバージョン 9.0.1 は、2011 年 12 月 21 日にリリースされました。</p>
+
+<h2 id="Changes_for_web_developers" name="Changes_for_web_developers">Web 開発者向けの変更点一覧</h2>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/HTML/Element/li" title="HTML の &lt;li> 要素は、リストの項目を表すために用いられます。この要素は、その項目が属する順序付きリスト (&lt;ol>)、順序なしリスト (&lt;ul>)、メニュー (&lt;menu>) のいずれかの子要素として配置する必要があります。メニュー要素および順序なしリスト内においては、リストの項目は通常、行頭文字伴って表示され、順序付きリスト内では、数字や文字による連番のリストマーカーを伴って表示されます。"><code>&lt;li&gt;</code></a> 要素の <code>value</code> 属性が負の値を取れるようになりました。これは HTML5 仕様に基づくもので、HTML5 以前は 0 に変換されていました。</li>
+ <li><a href="/ja/docs/Web/HTML/Element/audio" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>&lt;audio&gt;</code></a> と <a href="/ja/docs/Web/HTML/Element/video" title="HTML の映像要素 (&lt;video>) は、文書中に映像再生に対応するメディアプレイヤーを埋め込みます。"><code>&lt;video&gt;</code></a> 要素を用いるときのメディアの URI において、<a href="/ja/docs/Using_HTML5_audio_and_video#Specifying_playback_range" title="Using_HTML5_audio_and_video#Specifying_playback_range">メディアの開始時間と終了時間を指定</a> できるようになりました。</li>
+ <li><a href="/ja/docs/Web/HTML/Element/input" title="HTML の &lt;input> 要素は、ユーザーからデータを受け取るための、ウェブベースのフォーム用の対話的なコントロールを作成するために使用します。"><code>&lt;input&gt;</code></a> 要素と <a href="/ja/docs/Web/HTML/Element/textarea" title="HTML の &lt;textarea> 要素は、複数行のプレーンテキスト編集コントロールを表し、レビューのコメントやお問い合わせフォーム等のように、ユーザーが大量の自由記述テキストを入力できるようにするときに便利です。"><code>&lt;textarea&gt;</code></a> 要素が、スペルチェッカーの実行において <a href="/ja/docs/HTML/Controlling_spell_checking_in_HTML_forms#Controlling_the_spellchecker_language" title="HTML/Controlling_spell_checking_in_HTML_forms#Controlling_the_spellchecker_language"><code>lang</code> 属性の値を加味</a>するようになりました。</li>
+ <li>Android 版 Firefox において、 <code>t</code><code>ype="file"</code> と <code>accept="image/*" を指定している </code><a href="/ja/docs/Web/HTML/Element/input" title="HTML の &lt;input> 要素は、ユーザーからデータを受け取るための、ウェブベースのフォーム用の対話的なコントロールを作成するために使用します。"><code>&lt;input&gt;</code></a> 要素<code>のときに</code>、ユーザがブラウザからアプリを切り替えることなく電話のカメラを用いて写真を撮れるようになりました。</li>
+ <li>Windows Vista スタイル PNG ICO イメージがサポートされるようになりました。</li>
+ <li>CORS が許可されているときに、CORS アクセスを要求するために <a href="/ja/docs/HTML/CORS_settings_attributes" title="CORS settings attributes"><code>crossorigin</code></a> 属性 を用いた画像を描いても、不正に <a href="/ja/docs/CORS_Enabled_Image#What_is_a_.22tainted.22_canvas.3F" title="CORS_Enabled_Image#What_is_a_.22tainted.22_canvas.3F">Canvas を制限状態に</a>しないようになりました。</li>
+ <li><code><a href="/ja/docs/Web/HTML/Element/td#attr-rowspan">rowspan</a></code> 属性に指定できる値の最大値が 8190 から 65,534 になりました。</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li><a href="/ja/docs/Web/CSS/font-stretch" title="font-stretch CSS プロパティは、フォントの normal, condensed, expanded のフェイスを選択します。"><code>font-stretch</code></a> プロパティがサポートされました。</li>
+ <li><a href="/ja/docs/Web/CSS/columns" title="CSS の columns プロパティは、段組みされた要素の段の幅や段数を設定します。"><code>columns</code></a> プロパティが <span class="inlineIndicator prefixBox prefixBoxInline" title="prefix"><a href="/ja/docs/Web/Guide/Prefixes" title="The name of this feature is prefixed with '-moz' as this browser considers it experimental">-moz</a></span> 接頭辞付きでサポートされました。このプロパティは <a href="/ja/docs/Web/CSS/column-width" title="CSS の column-width プロパティは、段組みレイアウトで理想的な段の幅を指定します。"><code>column-width</code></a> と <a href="/ja/docs/Web/CSS/column-count" title="CSS の column-count プロパティは、指定された段数で要素のコンテンツを分割します。"><code>column-count</code></a> をまとめて記述する短縮形プロパティです。</li>
+ <li><a href="/ja/docs/Web/HTML/Element/link" title='HTML 外部リソースへのリンク要素 (&amp;lt;link>) は、現在の文書と外部のリソースとの関係を指定します。この要素はスタイルシートへのリンクに最もよく使用されますが、サイトのアイコン ("favicon" スタイルのアイコンとモバイルのホーム画面/アプリのアイコンの両方) の確立や、その他のことにも使用されます。'><code>&lt;link&gt;</code></a> 要素を用いて取り込まれたスタイルシートが完全にロードされてパースされたとき (しかしまだドキュメントに適用されていない状態)、<a href="/ja/docs/HTML/Element/link#Stylesheet_load_events" title="HTML/Element/link#Stylesheet_load_events"><code>load</code> イベント</a> が発生するようになりました。また、スタイルシートの処理においてエラーが起きた場合、<code>error</code> イベントが発生します。</li>
+ <li><a href="/ja/docs/Web/CSS/text-overflow" title="CSS の text-overflow プロパティは、表示されないあふれた内容をどのようにユーザーに知らせるのかを指定します。切り取られるか、省略記号 ('…', U+2026 Horizontal Ellipsis) を表示するか、独自の文字列を表示するかです。"><code>text-overflow</code></a> 向けの2 つの値を指定できる新しい構文を用いて、左端と右端の両方のオーバフロー設定を指定できるようになりました。</li>
+</ul>
+
+<h3 id="DOM">DOM</h3>
+
+<dl>
+ <dt><a href="/ja/docs/DOM/Using_full-screen_mode" title="Using full-screen mode">フルスクリーンモードの利用</a></dt>
+ <dd>新しい full-screen API は、ブラウザインターフェースを表示せずに、画面全体を用いてコンテンツを表示する方法を提供します。これはビデオおよびゲームにとって素晴らしいものです。この API は現在実験的かつプレフィックス付きです。</dd>
+</dl>
+
+<ul>
+ <li><a href="/ja/docs/Web/API/Node/contains" title="Node.contains メソッドは指定ノードの子孫ノードに特定の子ノード(※自身も含む)が含まれるかどうかを示す真偽値を返します。"><code>Node.contains()</code></a> メソッドがサポートされました。このメソッドによって、あるノードが別のノードの子孫であるかを調べられます。</li>
+ <li><a href="/ja/docs/Web/API/Node/parentElement" title="Node.parentElementのread-only プロパティはDOM ノード上の親の Element を返します。親ノードが存在しない場合や親ノードが DOM Element で無い場合、null が返ります。"><code>Node.parentElement</code></a> 属性が実装されました。このメソッドは DOM ノードの親 <a href="/ja/docs/Web/API/Element" title="Element は Document の中にあるすべての要素が継承する、もっとも一般的な基底クラスです。このインターフェイスは、すべての種類の要素に共通するメソッドとプロパティを記述するだけのものです。多くの具体的なクラスが Element を継承します。"><code>Element</code></a> 、または、親が要素ではない場合は <code>null</code> を返します。</li>
+ <li>DOM Level 3 <a href="/ja/docs/DOM/CompositionEvent" title="CompositionEvent">Compositionイベント</a> がサポートされました。</li>
+ <li><a href="/ja/docs/Web/API/Document/scripts" title="Document インターフェイスの scripts プロパティは、文書中の &lt;script> 要素のリストを返します。返されるオブジェクトは単一の HTMLCollection オブジェクトです。"><code>Document.scripts</code></a> 属性が実装されました。このメソッドはドキュメントのすべての <a href="/ja/docs/Web/HTML/Element/script" title="HTML の &lt;script> 要素は、実行できるコードを埋め込んだり参照したりするために使用されます。ふつうは JavaScript のコードの埋め込みや参照に使用されます。"><code>&lt;script&gt;</code></a> 要素の <a href="/ja/docs/Web/API/HTMLCollection" title="HTMLCollection は要素群 (document 内の順序) の一般的な集合 (arguments に似た配列状のオブジェクト) を表現したインターフェイスで、リストから選択するためのメソッドとプロパティを提供します。"><code>HTMLCollection</code></a> を返します。</li>
+ <li><a href="/ja/docs/Web/API/Document/queryCommandSupported" title="Document.queryCommandSupported() メソッドは指定したエディタコマンドがブラウザでサポートされているかどうかを報告します。"><code>Document.queryCommandSupported()</code></a> メソッドが実装されました。</li>
+ <li>標準 IDL インターフェースとして Event ハンドラが実装されました。多くのケースで、これはコンテンツに影響を及ぼさないはずですが、<a href="/ja/docs/DOM/DOM_event_handlers#Event_handler_changes_in_Firefox_9" title="DOM/DOM_event_handlers#Event_handler_changes_in_Firefox_9">例外が存在します。</a></li>
+ <li>新しいレスポンスタイプ、 "moz-json" が XMLHttpRequest に追加されました。 そのタイプを用いると、 XMLHttpRequest に自動的に <a href="/ja/docs/JSON" title="JSON">JSON</a> 文字列をパースさせられます。つまり、このタイプをリクエストしたときはパースされた JSON 文字列が返るので、<code>response</code> プロパティの値がパース結果の JavaScript オブジェクトになります。</li>
+ <li><a href="/ja/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest#Monitoring_progress" title="DOM/XMLHttpRequest/Using_XMLHttpRequest#Monitoring_progress">XMLHttpRequest の progress イベント</a> が受け取ったデータの各チャンクに対して確実に送信されるようになりました。つまり、以前のバージョンでは受け取ったデータの最後のチャンクが progeress イベントを発生させない可能性がありました。データの最後のチャンクを受け取ったかを判定するために load イベントも監視する必要はもう無くなり、progress イベントだけで進捗を追えるようになります。</li>
+ <li>過去に、<code>null</code> のリスナーを指定した <a href="/ja/docs/DOM/element.addEventListener" title="element.addEventListener"><code>addEventListener()</code></a> の呼び出しは例外を投げていましたが、エラーを出すことなく、何の影響も及ぼさずに処理を戻すようになりました。</li>
+ <li>新しい <a href="/ja/docs/Web/API/Navigator/doNotTrack" title='ユーザーの do-not-track 設定を返します。ユーザーがウェブサイトやコンテンツ、広告にトラッキングされたくないと要求している場合、この値は "1" です。'><code>navigator.doNotTrack</code></a> プロパティを用いることで、コンテンツ中で簡単にユーザが do-no-track 設定を有効にしているかを判定できます。この値が "yes" ならば、ユーザを追跡するべきではありません。</li>
+ <li><a href="/ja/docs/Web/API/Text/splitText" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>splitText()</code></a> や <a href="/ja/docs/Web/API/Node/normalize" title="指定ノードの空のノードを削除し、隣接するテキストノードをひとつに纏め、文書を「正規化 (normalize)」します。"><code>normalize()</code></a> が呼び出されたとき、<a href="/ja/docs/Web/API/Range" title="Range インターフェイスとは document の断片で、ある document 中のノードやテキストノードの一部を含むことのできるものです。"><code>Range</code></a> オブジェクトや <a href="/ja/docs/Web/API/Selection" title="このオブジェクトのクラスは window.getSelection() やその他のメソッドによって返されるものです。"><code>Selection</code></a> オブジェクトがとる挙動が仕様通りになりました。</li>
+ <li>doctype ノードに対しての <a href="/ja/docs/Web/API/Node/ownerDocument" title="ownerDocument プロパティは、指定ノードを内包するノードツリーのトップレベルのドキュメントオブジェクトを返します。"><code>Node.ownerDocument</code></a> の値が、<code>null</code> ではなく、ノードを作成するために呼ばれた <a href="/ja/docs/DOM/DOMImplementation.createDocumentType" title="DOMImplementation.createDocumentType"><code>createDocumentType()</code></a> 上のドキュメントになるようになりました。</li>
+ <li><code>window.navigator.taintEnabled</code> が削除されました。このプロパティは長年サポートされていませんでした。</li>
+</ul>
+
+<h3 id="Workers">Workers</h3>
+
+<ul>
+ <li>Firefox 8 では、blob URL で実装された Workers が壊れていましたが、Firefox 9 から再び動作するようになりました。</li>
+</ul>
+
+<h3 id="MathML">MathML</h3>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/MathML/Element/maction" title="&lt;maction>">&lt;maction&gt;</a></code> 要素の <code>actiontype</code> 属性における非推奨な値 <code>restyle</code> が削除されました。</li>
+ <li>まだ要素自体はサポートされていませんが、<code><a href="/ja/docs/Web/MathML/Element/mlabeledtr" title="&lt;mlabeledtr>">&lt;mlabeledtr&gt;</a></code> 要素を用いても、描画を完全に壊さないようになりました。この要素の実際のサポートの進捗は <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=689641" title="Add support for mlabeledtr">バグ 689641</a> を参照してください。</li>
+</ul>
+
+<h3 id="Networking">Networking</h3>
+
+<ul>
+ <li>You can now send the contents of <a href="/ja/docs/JavaScript_typed_arrays" title="JavaScript typed arrays">JavaScript typed arrays</a> (that is, the contents of an <a href="/ja/docs/JavaScript_typed_arrays/ArrayBuffer" title="ArrayBuffer"><code>ArrayBuffer</code></a> object) <a href="/ja/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest#Sending_typed_arrays_as_binary_data" title="DOM/XMLHttpRequest/Using_XMLHttpRequest#Sending_typed_arrays_as_binary_data">using XMLHttpRequest</a>.</li>
+ <li>WebSocket connections now permit non-characters in otherwise valid UTF-8 data frames to be received, instead of failing.</li>
+ <li>The HTTP <code>Accept</code> header for XSLT requests has been changed to simply "*/*" for simplicity. Since fetching XSLT has always fallen back to "*/*" anyway, it made sense to simplify the initial request.</li>
+ <li>Attempts by a server to use the <code>301 Moved Permanently</code> or <code>307 Temporary Redirect</code> response codes to redirect the user to a <code>javascript:</code> URI now <a href="/ja/docs/HTTP#More_on_redirection_responses" title="HTTP#More_on_redirection_responses">result in a "bad connection" error</a> instead of actually redirecting. This prevents certain types of cross-site scripting attacks.</li>
+ <li>Content served with an empty <a href="/ja/docs/Web/HTTP/Headers/Content-Disposition" title="本文が multipart/form-data である場合、 Content-Disposition ヘッダーは、マルチパートを構成する各サブパートに付与され、そのフィールドに関する情報を示します。サブパートはContent-Type ヘッダーで定義された boundary によって区切られます。マルチパートの本文体に付与した場合、 Content-Disposition は何の意味も持ちません。"><code>Content-Disposition</code></a> were previously treated as if the <a href="/ja/docs/Web/HTTP/Headers/Content-Disposition" title="本文が multipart/form-data である場合、 Content-Disposition ヘッダーは、マルチパートを構成する各サブパートに付与され、そのフィールドに関する情報を示します。サブパートはContent-Type ヘッダーで定義された boundary によって区切られます。マルチパートの本文体に付与した場合、 Content-Disposition は何の意味も持ちません。"><code>Content-Disposition</code></a> were "attachment"; this didn't always work as expected. These are now handled as if the <a href="/ja/docs/Web/HTTP/Headers/Content-Disposition" title="本文が multipart/form-data である場合、 Content-Disposition ヘッダーは、マルチパートを構成する各サブパートに付与され、そのフィールドに関する情報を示します。サブパートはContent-Type ヘッダーで定義された boundary によって区切られます。マルチパートの本文体に付与した場合、 Content-Disposition は何の意味も持ちません。"><code>Content-Disposition</code></a> were "inline".</li>
+ <li>The default maximum size of an item in the disk cache has been increased to 50 MB; previously, only items up to 5 MB were cached.</li>
+</ul>
+
+<h3 id="Developer_tools">Developer tools</h3>
+
+<ul>
+ <li>The web console now supports basic <a href="/ja/docs/Using_the_Web_Console#String_substitutions" title="Using_the_Web_Console#String_substitutions">string substitutions</a> in its logging methods.</li>
+ <li>You can now <a href="/ja/docs/Using_the_Web_Console#Using_groups_in_the_console" title="Using_the_Web_Console#Using_groups_in_the_console">create visually nested blocks of output</a> in the web console, to help make it easier to read.</li>
+</ul>
+
+<h2 id="Mozilla_開発者とアドオン開発者向けの変更点">Mozilla 開発者とアドオン開発者向けの変更点</h2>
+
+<p>See <a href="/ja/docs/Firefox/Updating_add-ons_for_Firefox_9" title="Firefox/Updating add-ons for Firefox 9">Updating add-ons for Firefox 9</a> for an overview of the changes you may need to make to get your add-ons working in Firefox 9.</p>
+
+<h3 id="XUL">XUL</h3>
+
+<ul>
+ <li>The <code><a href="/ja/docs/Mozilla/Tech/XUL/tab" title="tab">tab</a></code> element now has a <code id="a-pending"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/pending">pending</a></code> attribute, whose value is <code>true</code>, when the tab is in the process of being restored by the session store service. This can be used for styling the tab in themes. The attribute isn't present on tabs that aren't pending.</li>
+ <li>The <code><a href="/ja/docs/Mozilla/Tech/XUL/tab" title="tab">tab</a></code> element now has an <code id="a-unread"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/unread">unread</a></code> attribute, whose value is <code>true</code>, when the tab has changed since the last time it was the active tab or if it hasn't been selected since the current session began. The attribute isn't present on tabs that are not unread.</li>
+ <li>You can now use a <code><a href="/ja/docs/Mozilla/Tech/XUL/panel" title="panel">panel</a></code> as a drag image for DOM drag and drop operations. This lets you use the standard drag &amp; drop API for <a href="/ja/docs/DragDrop/Drag_Operations#Using_XUL_panels_as_drag_images" title="DragDrop/Drag_Operations#Using_XUL_panels_as_drag_images">drag and drop of XUL content</a>.</li>
+ <li>The <code><a href="/ja/docs/Mozilla/Tech/XUL/notificationbox" title="notificationbox">notificationbox</a></code> element's <span id="m-appendNotification"><code><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Method/appendNotification">appendNotification</a></code></span> method now lets you specify a callback that gets called for interesting events related to the notification box. Currently, the only event is "removed", which tells you the box has been removed from its window.</li>
+</ul>
+
+<h3 id="JavaScript_code_module_changes">JavaScript code module changes</h3>
+
+<ul>
+ <li><a href="/ja/docs/JavaScript_code_modules/FileUtils.jsm" title="FileUtils.jsm"><code>FileUtils.jsm</code></a> now has a <code>File</code> constructor that returns an <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFile" title="">nsIFile</a></code> object representing a file specified by its pathname.</li>
+</ul>
+
+<h3 id="Service_changes">Service changes</h3>
+
+<ul>
+ <li>サイト別設定サービスが <a href="/ja/docs/Using_content_preferences#private-browsing" title="Using_content_preferences#private-browsing">プライベートブラウジングモードを考慮するようになりました</a> (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=679784" title="FIXED: nsIContentPrefService should handle private browsing mode">バグ 679784</a> 参照)。</li>
+</ul>
+
+<h3 id="Interface_changes">Interface changes</h3>
+
+<h4 id="Removed_interfaces">Removed interfaces</h4>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIGlobalHistory3" title="">nsIGlobalHistory3</a></code> has been removed during streamlining of the Places and DocShell code.</li>
+</ul>
+
+<h4 id="Miscellaneous_interface_changes">Miscellaneous interface changes</h4>
+
+<ul>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsISound" title="XPCOM_Interface_Reference/nsISound"><code>nsISound</code></a> インタフェースに新しい定数 <code>EVENT_EDITOR_MAX_LEN</code> が導入され、テキスト欄に入力された文字数が制限を超えた場合にシステム効果音を鳴らせるようになりました。今のところ、これは Windows のみで使用されています。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsIScriptError2" title="XPCOM_Interface_Reference/nsIScriptError2"><code>nsIScriptError2</code></a> インタフェースに新しいプロパティ <code>timeStamp</code> と <code>innerWindowID</code> が追加されました。また、<code>initWithWindowID()</code> メソッドが、外部ウィンドウ ID の代わりに内部ウィンドウ ID を受け取るようになりました。</li>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference/nsIBidiKeyboard" title="XPCOM_Interface_Reference/nsIBidiKeyboard"><code>nsIBidiKeyboard</code></a> インタフェースに <a href="/ja/docs/XPCOM_Interface_Reference/nsIBidiKeyboard#haveBidiKeyboards" title="XPCOM_Interface_Reference/nsIBidiKeyboard#haveBidiKeyboards"><code>haveBidiKeyboards</code></a> 属性が追加されました。これは、OS に少なくともひとつ各方向 (LTR もしくは RTL) のキーボードがインストールされているかどうかを判別できるものです。.</li>
+ <li>The new <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIEditor#isSelectionEditable">nsIEditor.isSelectionEditable</a></code> attribute lets you determine if the current selection anchor is editable. This helps to support cases where only parts of the document are editable, by letting you see if the current selection is in an editable section.</li>
+ <li>The <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIBrowserHistory#registerOpenPage()">nsIBrowserHistory.registerOpenPage()</a></code> and <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIBrowserHistory#unregisterOpenPage()">nsIBrowserHistory.unregisterOpenPage()</a></code> methods have been removed as part of a performance overhaul in the Places system. You can use the corresponding methods in <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIPlacesAutoComplete" title="">mozIPlacesAutoComplete</a></code> instead.</li>
+ <li>The <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIDOMWindowUtils#wrapDOMFile()">nsIDOMWindowUtils.wrapDOMFile()</a></code> method has been added; this returns a DOM <a href="/ja/docs/Web/API/File" title="File インターフェイスは、ファイルについての情報を提供したり、ウェブページ内の JavaScript でその内容にアクセスできるようにしたりします。"><code>File</code></a> object for a given <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFile" title="">nsIFile</a></code>.</li>
+ <li>The <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIChromeFrameMessageManager#removeDelayedFrameScript()">nsIChromeFrameMessageManager.removeDelayedFrameScript()</a></code> method was added to support removing delayed load scripts. Bootstrapped add-ons should use this, at shutdown, to remove any scripts it loaded using <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIChromeFrameMessageManager#loadFrameScript()">nsIChromeFrameMessageManager.loadFrameScript()</a></code> with the delayed load flag set. This is exposed to add-ons as <code>browser.messageManager.removeDelayedFrameScript()</code>.</li>
+ <li>The <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAppStartup" title="">nsIAppStartup</a></code> interface has a new <code>interrupted</code> attribute, which lets you know if the startup process was interrupted at any point by an interactive prompt. This can be helpful, for example, when timing startups during performance evaluation, to be able to drop numbers from sessions that were interrupted.</li>
+ <li>The <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIEditorSpellCheck" title="">nsIEditorSpellCheck</a></code> interface has been revised to support per-site selection of spell checker dictionaries.</li>
+</ul>
+
+<h3 id="IDL_パーサ">IDL パーサ</h3>
+
+<p>IDL パーサから、これまで完全に実装されたことのなかったユニークポインタの概念が削除されました。</p>
+
+<h3 id="Build_system_changes">Build system changes</h3>
+
+<ul>
+ <li>The <code>--enable-application=standalone</code> option for building standalone XPConnect has been removed; it hasn't worked since 2007 anyway.</li>
+ <li>The build system now looks for <code>.mozconfig</code> at <code>$topsrcdir/.mozconfig</code> or <code>$topsrcdir/mozconfig</code>, and nowhere else, unless you override the <code>.mozconfig</code> path using the <code>MOZCONFIG</code> environment variable.</li>
+ <li>The xpidl utility has been replaced in the SDK with <a href="/ja/docs/XPIDL/pyxpidl" title="pyxpidl">pyxpidl</a>.</li>
+</ul>
+
+<h3 id="Other_changes">Other changes</h3>
+
+<ul>
+ <li>The spell checker no longer has an arbitrary 130-character word-length limit on the length of words it will attempt to spell check. This limit was previously in place to prevent crashes that were occurring in the spell checker, but the underlying bugs have since been fixed.</li>
+ <li>You can now register components to add features to the <a href="/ja/docs/Web/API/Window/navigator" title="navigator オブジェクトへの参照を返します。 navigator オブジェクトを用いることで、スクリプトを実行しているアプリケーションについての情報を得ることができます。"><code>window.navigator</code></a> object by using the "JavaScript-navigator-property" category. See <a href="/ja/docs/Developer_Guide/Adding_APIs_to_the_navigator_object" title="Developer_Guide/Adding APIs to the navigator object">Adding APIs to the navigator object</a> for details and examples.</li>
+</ul>
+
+<h2 id="See_also" name="See_also">参考</h2>
+
+<div><div class="multiColumnList">
+<ul>
+<li><a href="/ja/docs/Mozilla/Firefox/Releases/8">Firefox 8 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/7">Firefox 7 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/6">Firefox 6 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/5">Firefox 5 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/4">Firefox 4 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/3.6">Firefox 3.6 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/3.5">Firefox 3.5 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/3">Firefox 3 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/2">Firefox 2 for developers</a></li><li><a href="/ja/docs/Mozilla/Firefox/Releases/1.5">Firefox 1.5 for developers</a></li></ul>
+</div></div>
diff --git a/files/ja/mozilla/firefox/releases/index.html b/files/ja/mozilla/firefox/releases/index.html
new file mode 100644
index 0000000000..359155bb42
--- /dev/null
+++ b/files/ja/mozilla/firefox/releases/index.html
@@ -0,0 +1,23 @@
+---
+title: Firefox 開発者向けリリースノート
+slug: Mozilla/Firefox/Releases
+tags:
+ - Firefox
+ - Landing
+ - Mozilla
+ - Release
+translation_of: Mozilla/Firefox/Releases
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p class="summary">以下は、開発者向けの Firefox リリースノートへのリンクです。どの機能や API が追加され、改善されたか、Firefox の各バージョンでどのようなバグが修正されたかについての詳細が、懇切丁寧に記されています。これらは皆さん開発者がほしいかと思って用意したものです。えっへん。</p>
+
+<div class="multiColumnList">{{ListSubpages("",1,1,1)}}</div>
+
+<p>Firefox がいっぱい!すごい!</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Thunderbird/Releases">Thunderbird 開発者向けリリースノート</a></li>
+</ul>
diff --git a/files/ja/mozilla/firefox/security_best_practices_for_firefox_front-end_engi/index.html b/files/ja/mozilla/firefox/security_best_practices_for_firefox_front-end_engi/index.html
new file mode 100644
index 0000000000..fefd9703e1
--- /dev/null
+++ b/files/ja/mozilla/firefox/security_best_practices_for_firefox_front-end_engi/index.html
@@ -0,0 +1,48 @@
+---
+title: Firefox のフロントエンドエンジニアのためのセキュリティのベストプラクティス
+slug: Mozilla/Firefox/Security_best_practices_for_Firefox_front-end_engi
+translation_of: Mozilla/Firefox/Security_best_practices_for_Firefox_front-end_engi
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p>このガイドは、Firefoxの開発者がセキュリティコントロールを理解し、Firefoxのフロントエンドを開発する際の一般的な落とし穴を避けるのに役立ちます。</p>
+
+<h2 id="既存のセキュリティコントロール">既存のセキュリティコントロール</h2>
+
+<h3 id="innerHTMLやそれに関連するものを通してDOMに入るすべての文字列をサニタイズする">innerHTMLやそれに関連するものを通してDOMに入るすべての文字列をサニタイズする</h3>
+
+<p>Chrome 特権で実行されるコードでは、Chrome 特権文書用に作成されたすべてのHTMLフラグメントをサニタイズします。これには文字列を受け取りDOMツリーに解析するすべてのDOM APIが含まれます。</p>
+
+<p>私たちは、Sanitizerに組み込まれた次の<a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIParserUtils#Constants">フラグ</a>を使用します。</p>
+
+<pre><code id="line-5195">SanitizerAllowStyle
+</code><code id="line-5196">SanitizerAllowComments
+</code><code id="line-5197">SanitizerDropForms
+</code><code id="line-5198">SanitizerLogRemovals</code></pre>
+
+<p>サニタイザはすべてのスクリプト (スクリプトタグ、イベントハンドラ) とフォーム要素 (<code>form</code>, <code>input</code>, <code>keygen</code>, <code>option</code>, <code>optgroup</code>, <code>select</code>, <code>button</code>, <code>datalist</code>) を削除します。<a href="https://searchfox.org/mozilla-central/source/dom/base/nsTreeSanitizer.cpp#38">ホワイトリストに載っている要素のリスト</a>の正式なものはソースコードです。<br>
+ <br>
+ 最後のフラグは開発者が問題を早期に発見し、提供後ではなく開発サイクル内で問題を回避できることを保証します。</p>
+
+<h3 id="非衛生的なDOMの相互作用に対するLinterの規則">非衛生的なDOMの相互作用に対するLinterの規則</h3>
+
+<p>Security Assuranceチームは、<code>innerHTML</code>などのDOM APIの安全でない使用を禁止する <a href="https://github.com/mozilla/eslint-plugin-no-unsanitized">ESLint ルール</a>を維持しています。Linterは善意の開発者を想定して、ソースコードにハードコードされた文字列リテラルを使用するコードの例外を作成します。 開発者は次のような<a href="/ja/docs/Web/JavaScript/Reference/template_strings">テンプレート文字列</a>と組み合わせてエスケープ関数を使用することで、ルールをトリッピングすることを避けることができます。</p>
+
+<pre class="brush: js"><span class="pl-smi">bar</span>.<span class="pl-smi">innerHTML</span> <span class="pl-k">=</span> <span class="pl-s"><span class="pl-en">escapeHTML</span><span class="pl-pds">`</span>&lt;<span class="pl-ent">a</span> <span class="pl-e">href</span>=<span class="pl-s"><span class="pl-pds">'</span>${url}<span class="pl-pds">'</span></span>&gt;About&lt;/<span class="pl-ent">a</span>&gt;<span class="pl-pds">`</span></span>;</pre>
+
+<p>Chrome 特権コードでは、残っているスクリプトは引き続きGoogleのサニタイザで削除されます。</p>
+
+<h2 id="付録">付録</h2>
+
+<h4 id="許可されていない_DOM_API_の一覧"><a name="list-disallowed">許可されていない DOM API の一覧</a></h4>
+
+<ul>
+ <li><code>innerHTML</code></li>
+ <li><code>outerHTML</code></li>
+ <li><code>insertAdjacentHTML()</code></li>
+ <li><code>createContextualFragment()</code></li>
+ <li><code>document.write()</code></li>
+ <li><code>document.writeln()</code></li>
+</ul>
+
+<p><a href="https://github.com/mozilla/eslint-plugin-no-unsanitized/tree/master/docs/rules">Please take a look at the repository for an updated list</a></p>
diff --git a/files/ja/mozilla/firefox_for_ios/index.html b/files/ja/mozilla/firefox_for_ios/index.html
new file mode 100644
index 0000000000..b49013cb47
--- /dev/null
+++ b/files/ja/mozilla/firefox_for_ios/index.html
@@ -0,0 +1,46 @@
+---
+title: iOS 版 Firefox
+slug: Mozilla/Firefox_for_iOS
+tags:
+ - Beginner
+ - Firefox
+ - Mobile
+ - iOS
+translation_of: Mozilla/Firefox_for_iOS
+---
+<p>多くの人にとって、モバイル端末は Web にアクセスする第一の方法であり、場合によっては唯一の方法になってきています。<a class="link-https" href="https://www.mozilla.org/ja/firefox/ios/">iOS 版 Firefox</a> (Android 版と同様にコードネームは Fennec です) は、デスクトップ版 Firefox のようにオープンで、ハック可能な、ウェブ標準に準じたブラウザーです。</p>
+
+<p>iOS 版 Firefox は <a href="/ja/docs/Archive/Mozilla/XUL">XUL</a> の代わりにネイティブなウィジェットでUIを構築しています。これは大幅に性能、特に起動時間、メモリー消費量を改善させます。Apple の App Store の制限のため、iOS 上では iOS 組み込みの <code>WKWebView</code> も使用しています。これは Gecko でなく WebKit をベースにしています。</p>
+
+<h2 id="Contribute_to_Firefox_for_iOS" name="Contribute_to_Firefox_for_iOS">iOS 版 Firefox に貢献する</h2>
+
+<p>我々は iOS 版 Firefox 作成に力を入れており、また我々はあなたの助けを求めています。iOS 版 Firefox プロジェクトへの貢献に興味があるの主な出発点は <a class="external external-icon" href="https://github.com/mozilla-mobile/firefox-ios">GitHub のページ </a>にあります。</p>
+
+<p>iOS 版 Firefox の構築、改善を以下によって手助けすることができます:</p>
+
+<ul>
+ <li><a class="external external-icon" href="https://mail.mozilla.org/listinfo/mobile-firefox-dev">mobile-firefox-dev メーリングリスト</a> の購読</li>
+ <li><a class="link-irc" href="irc://irc.mozilla.org/#mobile">IRC</a> 上のチームに連絡</li>
+ <li><a class="external external-icon" href="https://wiki.mozilla.org/Mobile/Notes">Wednesday development meeting</a> への参加</li>
+ <li><a class="external" href="http://planet.firefox.com/mobile/">Planet Firefox Mobile</a>、<a class="external external-icon" href="https://fennecnightly.tumblr.com/">Tumblr</a> や <a class="external external-icon" href="https://twitter.com/FirefoxiOS">Twitter</a> からプロジェクトの最新情報の取得</li>
+ <li><a class="external external-icon" href="https://github.com/mozilla-mobile/firefox-ios">iOS 版 Firefoxのビルドとハック</a> (Fennec)</li>
+</ul>
+
+<h2 id="Opening_links_in_Firefox_iOS" name="Opening_links_in_Firefox_iOS">iOS 版 Firefox でリンクを開く</h2>
+
+<p>iOS ではデフォルトのブラウザーを変更できません。そのため、サードパーティー製のブラウザーを使用するユーザーは、コピー・ペーストを使用する必要があります。代わりに、ユーザーを幸せになるためにネイティブアプリにおいていくつかできる方法があります:</p>
+
+<ul>
+ <li>ユーザーへの iOS アプリの拡張システムを利用できるようにします。iOS 版 Firefoxはあなたのアプリからオープンすること、ブックマークを作成すること、Firefox のリーディングリストに追加することなどの、いくつかのアプリの機能拡張を提供します。NSHipster は、あなたのアプリに UIActivityViewController を追加する方法の <a class="external external-icon" href="https://nshipster.com/uiactivityviewcontroller/">詳しい概要</a> を説明しています。</li>
+ <li>簡単に Firefox がインストールされているかどうかを検出し、表示するためのオプションとして、<a class="external external-icon" href="https://github.com/mozilla-mobile/firefox-ios-open-in-client">Open-In-Firefox SDK</a> を使用してください。今後のリリースでは、それが簡単に、ユーザーが Firefox で記事を読んだ後に、簡単にあなたのアプリに戻る方法を提供するつもりです。</li>
+</ul>
+
+<h2 id="Addons" name="Addons">アドオン</h2>
+
+<p>iOS 版 Firefox は現在の iOS 拡張エコシステムをサポートしていますが、デスクトップ版や Android 版 Firefox のような JavaScript のアドオンを (まだ) サポートしていません。</p>
+
+<p>{{bug(1210119)}} で <a href="/ja/docs/Mozilla/Add-ons/Themes/Lightweight_themes">軽量テーマ</a> に取り組んでおり、{{bug(1466496)}} で <a href="/ja/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">WebExtension ベースのテーマ</a> に取り組んでいます。</p>
+
+<h2 id="Get_help" name="Get_help">ヘルプはこちら</h2>
+
+<p>文書化と使用についてのチュートリアルと iOS 用 Firefox のトラブルシューティングは、<a class="external" href="https://support.mozilla.org/products/ios" title="https://support.mozilla.org/products/ios">Mozilla サポートのウェブサイト</a> で利用できます。</p>
diff --git a/files/ja/mozilla/gecko/chrome/api/chromeworker/index.html b/files/ja/mozilla/gecko/chrome/api/chromeworker/index.html
new file mode 100644
index 0000000000..db2f4f08de
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/api/chromeworker/index.html
@@ -0,0 +1,54 @@
+---
+title: ChromeWorker
+slug: Mozilla/Gecko/Chrome/API/ChromeWorker
+translation_of: Mozilla/Gecko/Chrome/API/ChromeWorker
+---
+<div>
+<section class="Quick_links" id="Quick_Links">
+<ol>
+ <li><strong><a href="/en-US/docs/Web/API/Mozilla"><code>Mozilla</code></a></strong></li>
+</ol>
+</section>
+
+<div class="blockIndicator nonStandard nonStandardHeader">
+<p><strong><span class="gt-baf-term-text"><span class="gt-baf-cell gt-baf-word-clickable">非標準</span></span></strong><br>
+ この機能は標準的ではなく、標準化もされていません。 Web に公開している本番サイトでは使用しないでください。すべてのユーザに対して機能するわけではありません。実装間には大きな非互換性があり、その振る舞いは将来変更されるかもしれません。</p>
+</div>
+</div>
+
+<h2 id="要約">要約</h2>
+
+<p>特権コードを開発していて、ネイティブコードへの呼び出しを実行するために <a href="/en/js-ctypes" title="en/js-ctypes">js-ctypes</a> を使用できる worker を作成したい場合は、標準の <a href="/ja/docs/Web/API/Worker" title="The Worker interface of the Web Workers API represents a background task that can be easily created and can send messages back to its creator. Creating a worker is as simple as calling the Worker() constructor and specifying a script to be run in the worker thread."><code>Worker</code></a> オブジェクトの代わりに <code>ChromeWorker</code> を使用してください。worker のグローバルスコープで利用可能なグローバル <code>ctypes</code> オブジェクトを介して <a href="/en/js-ctypes" title="en/js-ctypes">js-ctypes</a> にアクセスできることを除けば、標準の <a href="/ja/docs/Web/API/Worker" title="The Worker interface of the Web Workers API represents a background task that can be easily created and can send messages back to its creator. Creating a worker is as simple as calling the Worker() constructor and specifying a script to be run in the worker thread."><code>Worker</code></a> とまったく同じように機能します。ChromeWorker による js-ctypes の使用例は Github で入手でき、<a href="#seealso">下記の関連項目セクション</a>からリンクされています。Promise を特徴とするコールバックバージョンの ChromeWorker で postMessage を使用するには、<a href="/ja/docs/Web/API/PromiseWorker">PromiseWorker</a> を参照してください。</p>
+
+<p>アドオンは worker をロードするために絶対 URL を使用しなければならず、それらの URL は <code>chrome://</code> または <code>resource://</code> プロトコル (<code>file://</code> は受け入れられません) を使用する必要があります。 <code>file://</code> URL を使用したいアドオンは、まず次のようなコードを使用してリソース置換パスを登録する必要があります。</p>
+
+<pre class="brush: js">var fileuri = Services.io.newFileURI(file);
+Services.io.getProtocolHandler('resource').
+ QueryInterface(Ci.nsIResProtocolHandler).
+ setSubstitution('my-cool-addon', fileuri);
+ var worker = new Worker('resource://my-cool-addon/worker.js');</pre>
+
+<p>More references:</p>
+
+<ul>
+ <li>You can use <code>ChromeWorker</code> from <a href="/en/JavaScript_code_modules" title="en/JavaScript code modules">JavaScript code modules</a>. See <a href="/en/JavaScript_code_modules/Using_workers_in_JavaScript_code_modules" title="en/JavaScript code modules/Using workers in JavaScript code modules">Using workers in JavaScript code modules</a> for details.</li>
+ <li>You can use <a href="https://developer.mozilla.org/en-US/docs/Mozilla/ChromeWorkers/Chrome_Worker_Modules">ChromeWorker modules</a> in ChromeWorkers.</li>
+ <li>See <a class="internal" href="/En/Using_web_workers" title="en/Using DOM workers">Using web workers</a> for examples and details.</li>
+</ul>
+
+<h2 id="あわせて参照">あわせて参照<a id="seealso" name="seealso"></a></h2>
+
+<ul>
+ <li><a class="internal" href="/en/Using_web_workers" title="en/Using DOM workers">Using web workers</a></li>
+ <li><a href="/en/JavaScript_code_modules/Using_workers_in_JavaScript_code_modules" title="en/JavaScript code modules/Using workers in JavaScript code modules">Using workers in JavaScript code modules</a></li>
+ <li><a href="/en-US/docs/Web/API/Worker" title="The Worker interface of the Web Workers API represents a background task that can be easily created and can send messages back to its creator. Creating a worker is as simple as calling the Worker() constructor and specifying a script to be run in the worker thread."><code>Worker</code></a></li>
+ <li><code><a class="internal" href="/en/DOM/SharedWorker" title="en/DOM/SharedWorker">SharedWorker</a></code></li>
+ <li><a class="external" href="http://www.whatwg.org/specs/web-workers/current-work/" title="http://www.whatwg.org/specs/web-workers/current-work/">Web Workers specification</a></li>
+ <li><a href="/en-US/docs/Web/API/WorkerGlobalScope" title="The WorkerGlobalScope interface of the Web Workers API is an interface representing the scope of any worker. Workers have no browsing context; this scope contains the information usually conveyed by Window objects — in this case event handlers, the console or the associated WorkerNavigator object. Each WorkerGlobalScope has its own event loop."><code>WorkerGlobalScope</code></a></li>
+ <li><a href="https://github.com/Noitidart/ChromeWorker">GitHub :: ChromeWorker</a> - A fully working demo addon using js-ctypes from a chrome worker. Uses WinAPI example.</li>
+ <li><a href="/en-US/docs/Web/API/PromiseWorker">PromiseWorker</a>
+ <ul>
+ <li><a href="https://github.com/Noitidart/PromiseWorker">GitHub :: PromiseWorker</a> - Shows how to uses promises as an twist on postMessage feature of ChromeWorker</li>
+ </ul>
+ </li>
+</ul>
diff --git a/files/ja/mozilla/gecko/chrome/api/index.html b/files/ja/mozilla/gecko/chrome/api/index.html
new file mode 100644
index 0000000000..3885f415f1
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/api/index.html
@@ -0,0 +1,31 @@
+---
+title: Chrome-only API reference
+slug: Mozilla/Gecko/Chrome/API
+tags:
+ - API
+ - 'API:Mozilla Extensions'
+ - Chrome
+ - Gecko
+ - Mozilla
+ - NeedsTranslation
+ - Non-standard
+ - Overview
+ - Reference
+ - TopicStub
+translation_of: Mozilla/Gecko/Chrome/API
+---
+<p>{{FirefoxSidebar}}</p>
+
+<p class="seoSummary">This page lists APIs that only run in Gecko Chrome code (and sometimes in other privileged circumstances).</p>
+
+<div class="blockIndicator note">
+<p><strong>Note</strong>: Most of the APIs exposed to the Web in general are also usable in Chrome code: see <a href="/en-US/docs/Web/API">Web APIs</a> for a list of these.</p>
+</div>
+
+<p>{{LandingPageListSubpages}}</p>
+
+<dl>
+ <dd class="landingPageList"> </dd>
+</dl>
+
+<p> </p>
diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text(hover)/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text(hover)/index.html
new file mode 100644
index 0000000000..0c92782256
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text(hover)/index.html
@@ -0,0 +1,16 @@
+---
+title: ':-moz-tree-cell-text(hover)'
+slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell-text(hover)'
+tags:
+ - CSS
+ - Non-standard
+ - Reference
+ - XUL
+ - 疑似クラス
+translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell-text(hover)'
+---
+<div>{{Non-standard_header}}{{CSSRef}}{{gecko_minversion_header(1.9)}}</div>
+
+<p><a href="/ja/docs/Web/CSS">CSS</a> の <strong><code>:-moz-tree-cell-text(hover)</code></strong> <a href="/ja/docs/Web/CSS/Pseudo-classes">擬似クラス</a>は、マウスカーソルがツリーセル内のテキストに合わせてあるとき、要素に一致します。</p>
+
+<p>このセレクターは、主にテーマ開発者によって使用されるものです。</p>
diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text/index.html
new file mode 100644
index 0000000000..030edc7899
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell-text/index.html
@@ -0,0 +1,27 @@
+---
+title: ':-moz-tree-cell-text'
+slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell-text'
+tags:
+ - CSS
+ - CSS Reference
+ - Non-standard
+translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell-text'
+---
+<p>{{Non-standard_header}}{{CSSRef}}</p>
+
+<p><code>properties</code> 属性によってアクティブ化されます。</p>
+
+<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2>
+
+<ul>
+ <li>{{XULElem("treecell")}}</li>
+</ul>
+
+<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2>
+
+<ul>
+ <li>{{cssxref("font")}}</li>
+ <li>{{cssxref("visibility")}}</li>
+ <li>{{cssxref("color")}}</li>
+ <li>{{cssxref("text-decoration")}}</li>
+</ul>
diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell/index.html
new file mode 100644
index 0000000000..e1ab2e64f0
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-cell/index.html
@@ -0,0 +1,35 @@
+---
+title: ':-moz-tree-cell'
+slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell'
+tags:
+ - CSS
+ - CSS Reference
+ - Non-standard
+translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-cell'
+---
+<div>{{CSSRef}}{{Non-standard_header}}</div>
+
+<p><code>properties</code> 属性によって活性化されます。</p>
+
+<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2>
+
+<ul>
+ <li>{{XULElem("treecell")}}</li>
+</ul>
+
+<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2>
+
+<ul>
+ <li>{{cssxref("background")}}</li>
+ <li>{{cssxref("border")}}</li>
+ <li>{{cssxref("margin")}}</li>
+ <li>{{cssxref("outline")}}</li>
+ <li>{{cssxref("padding")}}</li>
+ <li>{{cssxref("visibility")}}</li>
+</ul>
+
+<h2 id="参照">参照</h2>
+
+<ul>
+ <li><a href="/ja/docs/XUL/Tutorial/Styling_a_Tree">ツリーのスタイル付け</a></li>
+</ul>
diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-column/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-column/index.html
new file mode 100644
index 0000000000..cec1fd82a2
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-column/index.html
@@ -0,0 +1,26 @@
+---
+title: ':-moz-tree-column'
+slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-column'
+tags:
+ - CSS
+ - CSS Reference
+ - Non-standard
+translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-column'
+---
+<div>{{CSSRef}}{{Non-standard_header}}</div>
+
+<p><code>properties</code> 属性によって活性化されます。</p>
+
+<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2>
+
+<ul>
+ <li>{{XULElem("treecol")}}</li>
+</ul>
+
+<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2>
+
+<ul>
+ <li>{{cssxref("margin")}}</li>
+ <li>{{cssxref("visibility")}}</li>
+ <li>{{cssxref("text style")}}</li>
+</ul>
diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-drop-feedback/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-drop-feedback/index.html
new file mode 100644
index 0000000000..18603774d5
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-drop-feedback/index.html
@@ -0,0 +1,25 @@
+---
+title: ':-moz-tree-drop-feedback'
+slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-drop-feedback'
+tags:
+ - CSS
+ - CSS Reference
+ - Non-standard
+translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-drop-feedback'
+---
+<div>{{Non-standard_header}}{{CSSRef}}</div>
+
+<p><code>properties</code> 属性によって活性化されます。</p>
+
+<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2>
+
+<ul>
+ <li>{{XULElem("treerow")}}</li>
+</ul>
+
+<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2>
+
+<ul>
+ <li>{{cssxref("margin")}}</li>
+ <li>{{cssxref("visibility")}}</li>
+</ul>
diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-image/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-image/index.html
new file mode 100644
index 0000000000..cf19d79e47
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-image/index.html
@@ -0,0 +1,31 @@
+---
+title: ':-moz-tree-image'
+slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-image'
+tags:
+ - CSS
+ - CSS Reference
+ - Non-standard
+translation_of: 'Mozilla/Gecko/Chrome/CSS/:-moz-tree-image'
+---
+<div>{{CSSRef}}{{Non-standard_header}}</div>
+
+<p><code>properties</code> 属性によって活性化されます。</p>
+
+<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2>
+
+<ul>
+ <li>{{XULElem("treeitem")}}</li>
+ <li>{{XULElem("treecell")}}</li>
+</ul>
+
+<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2>
+
+<ul>
+ <li>{{cssxref("margin")}}</li>
+ <li>{{cssxref("list-style")}}</li>
+ <li>{{cssxref("position")}}</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p><a class="external" href="http://forums.mozillazine.org/viewtopic.php?t=610762">Bookmark icons in the Places window - Mozillazine Forum</a></p>
diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-indentation/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-indentation/index.html
new file mode 100644
index 0000000000..f0b8edee2f
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-indentation/index.html
@@ -0,0 +1,24 @@
+---
+title: ':-moz-tree-indentation'
+slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-indentation'
+tags:
+ - CSS
+ - CSS Reference
+ - Non-standard
+translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-indentation'
+---
+<p>{{CSSRef}}{{Non-standard_header}}</p>
+
+<p><code>properties</code> 属性によって活性化されます。</p>
+
+<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2>
+
+<ul>
+ <li>{{XULElem("treeitem")}}</li>
+</ul>
+
+<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2>
+
+<ul>
+ <li>{{cssxref("position")}}</li>
+</ul>
diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-line/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-line/index.html
new file mode 100644
index 0000000000..058ae755d4
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-line/index.html
@@ -0,0 +1,25 @@
+---
+title: ':-moz-tree-line'
+slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-line'
+tags:
+ - CSS
+ - CSS Reference
+ - Non-standard
+translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-line'
+---
+<p>{{Non-standard_header}}{{CSSRef}}</p>
+
+<p><code>properties</code> 属性によって活性化されます。</p>
+
+<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2>
+
+<ul>
+ <li>{{XULElem("treeitem")}}</li>
+</ul>
+
+<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2>
+
+<ul>
+ <li>{{cssxref("border")}}</li>
+ <li>{{cssxref("visibility")}}</li>
+</ul>
diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-progressmeter/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-progressmeter/index.html
new file mode 100644
index 0000000000..a037c191bd
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-progressmeter/index.html
@@ -0,0 +1,25 @@
+---
+title: ':-moz-tree-progressmeter'
+slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-progressmeter'
+tags:
+ - CSS
+ - CSS Reference
+ - Non-standard
+translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-progressmeter'
+---
+<div>{{Non-standard_header}}{{CSSRef}}</div>
+
+<p><code>type</code> 属性に <code>progressmeter</code> が設定されることによって活性化されます。</p>
+
+<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2>
+
+<ul>
+ <li>{{XULElem("treecell")}}</li>
+</ul>
+
+<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2>
+
+<ul>
+ <li>{{cssxref("margin")}}</li>
+ <li>{{cssxref("color")}}</li>
+</ul>
diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row(hover)/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row(hover)/index.html
new file mode 100644
index 0000000000..cda60c7101
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row(hover)/index.html
@@ -0,0 +1,16 @@
+---
+title: ':-moz-tree-row(hover)'
+slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-row(hover)'
+tags:
+ - CSS
+ - CSS Reference
+ - Non-standard
+translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-row(hover)'
+---
+<p>{{Non-standard_header}}{{ CSSRef() }}{{ Fx_minversion_header(3) }}</p>
+
+<h2 id="Summary" name="Summary">概要</h2>
+
+<p>マウスカーソルが tree 行の上に合わせてあるとき、<code>:-moz-tree-row(hover)</code> は要素にマッチします。</p>
+
+<p>このセレクタは主にテーマ開発者によって使用されるものです。</p>
diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row/index.html
new file mode 100644
index 0000000000..ff4d962ceb
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-row/index.html
@@ -0,0 +1,48 @@
+---
+title: ':-moz-tree-row'
+slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-row'
+tags:
+ - CSS
+ - CSS Reference
+ - Non-standard
+translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-row'
+---
+<p>{{CSSRef}}{{Non-standard_header}}</p>
+
+<p><code>-moz-tree-row</code> CSS <a href="/ja/docs/Web/CSS/Pseudo-elements">擬似要素</a>は、列の選択と tree 列のスタイル付けに使用されます。</p>
+
+<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2>
+
+<ul>
+ <li>{{XULElem("treerow")}}</li>
+</ul>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">treechildren::-moz-tree-row { <em>style プロパティ</em> }
+</pre>
+
+<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2>
+
+<ul>
+ <li>{{cssxref("background")}}</li>
+ <li>{{cssxref("border")}}</li>
+ <li>{{cssxref("margin")}}</li>
+ <li>{{cssxref("outline")}}</li>
+ <li>{{cssxref("padding")}}</li>
+ <li>{{cssxref("display")}}</li>
+ <li>{{cssxref("-moz-appearance")}}</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<pre class="brush:css">treechildren::-moz-tree-row( foo bar )
+{
+ margin: 2%;
+}
+</pre>
+
+<p>...次の位置に適用されます...</p>
+
+<pre class="brush:html"> &lt;treerow properties="foo"&gt;...&lt;/treerow&gt;
+</pre>
diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-separator/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-separator/index.html
new file mode 100644
index 0000000000..3c3d83f284
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-separator/index.html
@@ -0,0 +1,26 @@
+---
+title: ':-moz-tree-separator'
+slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-separator'
+tags:
+ - CSS
+ - CSS Reference
+ - Non-standard
+translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-separator'
+---
+<div>{{Non-standard_header}}{{CSSRef}}</div>
+
+<p><code>properties</code> 属性によって活性化されます。</p>
+
+<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2>
+
+<ul>
+ <li>{{XULElem("treeseparator")}}</li>
+</ul>
+
+<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2>
+
+<ul>
+ <li>{{cssxref("border")}}</li>
+ <li>{{cssxref("display")}}</li>
+ <li>{{cssxref("-moz-appearance")}}</li>
+</ul>
diff --git a/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-twisty/index.html b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-twisty/index.html
new file mode 100644
index 0000000000..50cb0808df
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/css/_doublecolon_-moz-tree-twisty/index.html
@@ -0,0 +1,30 @@
+---
+title: ':-moz-tree-twisty'
+slug: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-twisty'
+tags:
+ - CSS
+ - CSS Reference
+ - Non-standard
+translation_of: 'Mozilla/Gecko/Chrome/CSS/::-moz-tree-twisty'
+---
+<p>{{ CSSRef() }}{{Non-standard_header}}</p>
+
+<p><code>properties</code> 属性によって活性化されます。</p>
+
+<h2 id="Associated_Elements" name="Associated_Elements">関連付けられた要素</h2>
+
+<ul>
+ <li>{{XULElem("treecell")}}</li>
+</ul>
+
+<h2 id="Style_Properties" name="Style_Properties">Style プロパティ</h2>
+
+<ul>
+ <li>{{cssxref("border")}}</li>
+ <li>{{cssxref("margin")}}</li>
+ <li>{{cssxref("padding")}}</li>
+ <li>{{cssxref("display")}}</li>
+ <li>{{cssxref("list-style")}}</li>
+ <li>{{cssxref("position")}}</li>
+ <li>{{cssxref("-moz-appearance")}}</li>
+</ul>
diff --git a/files/ja/mozilla/gecko/chrome/css/display-xul/index.html b/files/ja/mozilla/gecko/chrome/css/display-xul/index.html
new file mode 100644
index 0000000000..4d48fdef55
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/css/display-xul/index.html
@@ -0,0 +1,61 @@
+---
+title: <display-xul>
+slug: Mozilla/Gecko/Chrome/CSS/display-xul
+tags:
+ - CSS
+ - CSS データ型
+ - CSS 表示
+ - Deprecated
+ - Firefox
+ - Gecko
+ - Mozilla
+ - Mozilla 拡張
+ - Non-standard
+ - Reference
+ - XUL
+translation_of: Mozilla/Gecko/Chrome/CSS/display-xul
+---
+<div>{{CSSRef}}{{Non-standard_Header}}{{Deprecated_Header(62)}}</div>
+
+<p class="summary">Firefox は以下の <code>-moz-</code> の接頭辞が付いた <a href="/ja/docs/Mozilla/Tech/XUL">XUL</a> 表示値に対応しています。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<dl>
+ <dt><code>-moz-box</code> {{Non-standard_Inline}} {{Deprecated_Inline}}</dt>
+ <dd>XUL ボックス、 <code style="white-space: nowrap;">flex</code> とほぼ等価</dd>
+ <dt><code>-moz-inline-box</code> {{Non-standard_Inline}} {{Deprecated_Inline}}</dt>
+ <dd>XUL インラインボックス、 <code style="white-space: nowrap;">inline-flex</code> とほぼ等価</dd>
+ <dt><code>-moz-grid</code> {{Non-standard_Inline}}{{Obsolete_Inline(62)}}</dt>
+ <dd>XUL グリッド</dd>
+ <dt><code>-moz-inline-grid</code> {{Non-standard_Inline}}{{Obsolete_Inline(62)}}</dt>
+ <dd>XUL インライングリッド</dd>
+ <dt><code>-moz-grid-group</code> {{Non-standard_Inline}}{{Obsolete_Inline(62)}}</dt>
+ <dd>XUL グリッドグループ</dd>
+ <dt><code>-moz-grid-line</code> {{Non-standard_Inline}}{{Obsolete_Inline(62)}}</dt>
+ <dd>XUL グリッド線</dd>
+ <dt><code>-moz-stack</code> {{Non-standard_Inline}}{{Obsolete_Inline(62)}}</dt>
+ <dd>XUL スタック</dd>
+ <dt><code>-moz-inline-stack</code> {{Non-standard_Inline}}{{Obsolete_Inline(62)}}</dt>
+ <dd>XUL インラインスタック</dd>
+ <dt><code>-moz-deck</code> {{Non-standard_Inline}}{{Obsolete_Inline(62)}}</dt>
+ <dd>XUL デッキ</dd>
+ <dt><code>-moz-popup</code> {{Non-standard_Inline}}{{Obsolete_Inline(62)}}</dt>
+ <dd>XUL ポップアップ</dd>
+</dl>
+
+<p>XUL 表示値はすべて、 <code style="white-space: nowrap;">-moz-box</code> および <code style="white-space: nowrap;">-moz-inline-box</code> を除き、 {{bug(1288572)}} で削除されました。詳しくは <a class="external" href="https://www.fxsitecompat.com/en-CA/docs/2018/most-of-non-standard-css-display-values-have-been-dropped/">this Firefox Site Compatibility post</a> をご覧ください。</p>
+
+<p> <code style="white-space: nowrap;">-moz-box</code> および <code style="white-space: nowrap;">-moz-inline-box</code> の値は、後に {{bug(879275)}} で削除される予定です。詳細は <a class="external" href="https://www.fxsitecompat.com/en-CA/docs/2018/display-moz-box-and-display-moz-inline-box-have-been-deprecated/">this Firefox Site Compatibility post</a> をご覧ください。</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li>{{CSSxRef("display")}}</li>
+ <li>{{CSSxRef("&lt;display-inside&gt;")}}</li>
+ <li>{{CSSxRef("&lt;display-outside&gt;")}}</li>
+ <li>{{CSSxRef("&lt;display-listitem&gt;")}}</li>
+ <li>{{CSSxRef("&lt;display-internal&gt;")}}</li>
+ <li>{{CSSxRef("&lt;display-box&gt;")}}</li>
+ <li>{{CSSxRef("&lt;display-legacy&gt;")}}</li>
+</ul>
diff --git a/files/ja/mozilla/gecko/chrome/css/index.html b/files/ja/mozilla/gecko/chrome/css/index.html
new file mode 100644
index 0000000000..45808aee2a
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/css/index.html
@@ -0,0 +1,21 @@
+---
+title: CSS
+slug: Mozilla/Gecko/Chrome/CSS
+tags:
+ - CSS
+ - Chrome
+ - Gecko
+ - Mozilla
+ - NeedsTranslation
+ - TopicStub
+translation_of: Mozilla/Gecko/Chrome/CSS
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p class="summary">This page lists CSS properties that are only available in Gecko Chrome code (and sometimes in other privileged circumstances, eg. UA stylesheets.)</p>
+
+<div class="note">
+<p><strong>Note</strong>: Most of the CSS properties exposed to the Web in general are also usable in Chrome stylesheets: see the <a href="/en-US/docs/Web/CSS">CSS documentation</a> for a list of these.</p>
+</div>
+
+<p>{{SubpagesWithSummaries}}</p>
diff --git a/files/ja/mozilla/gecko/chrome/index.html b/files/ja/mozilla/gecko/chrome/index.html
new file mode 100644
index 0000000000..af4f7182cf
--- /dev/null
+++ b/files/ja/mozilla/gecko/chrome/index.html
@@ -0,0 +1,17 @@
+---
+title: Gecko Chrome
+slug: Mozilla/Gecko/Chrome
+tags:
+ - Chrome
+ - Gecko
+ - Mozilla
+ - NeedsTranslation
+ - Overview
+ - TopicStub
+translation_of: Mozilla/Gecko/Chrome
+---
+<div>{{FirefoxSidebar}}{{Draft}}</div>
+
+<p class="summary">This page contains information specific to Chrome code running in Gecko.</p>
+
+<p>{{SubpagesWithSummaries}}</p>
diff --git a/files/ja/mozilla/gecko/index.html b/files/ja/mozilla/gecko/index.html
new file mode 100644
index 0000000000..496a56a822
--- /dev/null
+++ b/files/ja/mozilla/gecko/index.html
@@ -0,0 +1,71 @@
+---
+title: Gecko
+slug: Mozilla/Gecko
+tags:
+ - Gecko
+translation_of: Mozilla/Gecko
+---
+<p><img align="right" src="/@api/deki/files/777/=Netscape-gecko-logo.jpg"><strong>Gecko</strong> は、Mozilla プロジェクトによって開発されているレイアウトエンジンの名称です。元々 NGLayout という名前でした。</p>
+<p>Gecko の機能は、<a href="/ja/docs/HTML" title="HTML">HTML</a> 、<a href="/ja/docs/CSS" title="CSS">CSS</a> 、<a href="/ja/docs/XUL" title="XUL">XUL</a> 、そして<a href="/ja/docs/JavaScript" title="JavaScript">JavaScript</a>、Web 上のコンテンツを読み込み、ユーザの画面上に描画もしくは印刷することです。XUL ベースのアプリケーションでは、Gecko はアプリケーションのユーザインターフェースの描画にも利用されています。</p>
+<p>Gecko は、Firefox、Mozilla Suite、Camino などのいくつかのブラウザを含む、様々なアプリケーションで利用されています。(完全なリストは、<a class="external" href="http://en.wikipedia.org/wiki/Gecko_(layout_engine)#Web_browsers">Wikipedia の Gecko についての記事 (英語版)</a>を参照してください。) 同じバージョンの Gecko を利用している製品はまったく同じ標準をサポートしています。</p>
+<p><small>Gecko の名称とロゴは Netscape Communications Corporation の商標です。許可を得て使用しています。</small></p>
+
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h2 class="Documentation" id="Documentation" name="Documentation">ドキュメンテーション</h2>
+ <dl>
+ <dt>
+ <a href="/ja/docs/Gecko_FAQ" title="Gecko_FAQ">Gecko FAQ</a></dt>
+ <dd>
+ <small>Gecko についてのよくある質問と答。</small></dd>
+ <dt>
+ <a href="/ja/docs/Gecko_DOM_Reference" title="Gecko_DOM_Reference">Gecko DOM リファレンス</a></dt>
+ <dd>
+ DOM に関する説明。</dd>
+ <dt>
+ <a href="/ja/docs/Gecko-Specific_DOM_Events" title="Gecko/Gecko event reference">Gecko イベントリファレンス</a></dt>
+ <dd>
+ Gecko 及び Mozilla のアプリケーションで用いられるイベントの解説。<br>
+ <small>※Web 標準の DOM イベントに関しては <a href="/ja/docs/DOM/DOM_event_reference" title="DOM/DOM event reference">『DOM イベントリファレンス』</a> を参照して下さい。</small></dd>
+ <dt>
+ <a href="/ja/docs/Gecko/Versions" title="Gecko/Versions">Gecko versions and application versions</a></dt>
+ <dd>
+ Versions of Gecko and the applications they're used in.</dd>
+ <dt>
+ <a class="external" href="http://www.mozilla.org/newlayout/doc/layout-2006-12-14/master.xhtml">Mozilla のレイアウトエンジン</a></dt>
+ <dd>
+ <small>レイアウトに関するテクニカルトーク。</small></dd>
+ <dt>
+ <a href="/ja/docs/Embedding_Mozilla" title="Embedding_Mozilla">Mozilla の組み込み方</a></dt>
+ <dd>
+ <small>あなたのアプリケーションで Gecko を使う方法について。</small></dd>
+ <dt>
+ <a href="/ja/docs/Character_Sets_Supported_by_Gecko" title="Character Sets Supported by Gecko">Gecko によってサポートされている Character set の一覧</a></dt>
+ <dd>
+ A list of the character sets supported by Gecko.</dd>
+ <dt>
+ <a href="/en-US/docs/Gecko/HTML_parser_threading" title="en-US/docs/Gecko/HTML_parser_threading">HTML パーサーのスレッド処理</a></dt>
+ <dd>
+ HTML パーサ内でのマルチスレッド処理に関する解説。</dd>
+ <dt>
+ {{interwiki('wikimo', 'Gecko:Home_Page', 'Gecko Home Page on MozillaWiki')}}</dt>
+ <dd>
+ <small>アクティブな開発者のためのホームページ。ロードマップおよび、最新のリソースがあります。</small></dd>
+ </dl>
+ <p><span class="alllinks"><a href="/ja/docs/tag/Gecko" title="/ja/docs/tag/Gecko">すべて表示...</a></span></p>
+ </td>
+ <td>
+ <h2 class="Community" id="Community" name="Community">コミュニティ</h2>
+ <ul>
+ <li>Mozilla フォーラムを見る... {{ DiscussionList("dev-tech-layout", "mozilla.dev.tech.layout") }}</li>
+ </ul>
+ <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">関連トピック</h2>
+ <ul>
+ <li><a href="/ja/docs/Web_Standards" title="Web_Standards">Web 標準</a>, <a href="/ja/docs/XUL" title="XUL">XUL</a>, <a href="/ja/docs/Embedding_Mozilla" title="Embedding_Mozilla">Mozilla の組み込み方</a>, <a href="/ja/docs/Developer_Guide" title="Developing_Mozilla">Mozilla の開発</a></li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/ja/mozilla/gecko/versions/index.html b/files/ja/mozilla/gecko/versions/index.html
new file mode 100644
index 0000000000..598fd24443
--- /dev/null
+++ b/files/ja/mozilla/gecko/versions/index.html
@@ -0,0 +1,130 @@
+---
+title: Gecko 及び対応するアプリケーションのバージョンナンバー
+slug: Mozilla/Gecko/Versions
+tags:
+ - Gecko
+translation_of: Mozilla/Gecko/Versions
+---
+<p>以下の表は、Gecko のバージョンと、そのバージョンが使用されているアプリケーションの対応を示すものです。Gecko 5 以降、Firefox と Thunderbird のバージョンナンバーは Gecko のそれと同じものになっています。</p>
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th>Gecko のバージョン</th>
+ <th>対応するアプリケーションのバージョン</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>Gecko 24</td>
+ <td><a href="/ja/docs/Mozilla/Firefox/Releases/24">Firefox 24</a>、<a href="/ja/docs/Mozilla/Thunderbird/Releases/24">Thunderbird 24</a>、<a href="http://www.seamonkey-project.org/releases/seamonkey2.21/changes">SeaMonkey 2.21</a></td>
+ </tr>
+ <tr>
+ <td>Gecko 23</td>
+ <td><a href="/ja/docs/Mozilla/Firefox/Releases/23">Firefox 23</a>、<a href="http://www.seamonkey-project.org/releases/seamonkey2.20/changes">SeaMonkey 2.20</a></td>
+ </tr>
+ <tr>
+ <td>Gecko 22</td>
+ <td><a href="/ja/docs/Mozilla/Firefox/Releases/22">Firefox 22</a>、<a href="http://www.seamonkey-project.org/releases/seamonkey2.19/changes">SeaMonkey 2.19</a></td>
+ </tr>
+ <tr>
+ <td>Gecko 21</td>
+ <td><a href="/ja/docs/Firefox_21_for_developers">Firefox 21</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.18', 'SeaMonkey 2.18') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 20</td>
+ <td><a href="/ja/docs/Firefox_20_for_developers">Firefox 20</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.17', 'SeaMonkey 2.17') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 19</td>
+ <td><a href="/ja/docs/Firefox_19_for_developers">Firefox 19</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.16', 'SeaMonkey 2.16') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 18</td>
+ <td><a href="/ja/docs/Firefox_18_for_developers" title="/ja/docs/Firefox_18_for_developers">Firefox 18</a>、<a href="/ja/docs/Mozilla/Firefox_OS" title="/ja/docs/Mozilla/Firefox_OS">Firefox OS 1.0</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.15', 'SeaMonkey 2.15') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 17</td>
+ <td><a href="/ja/docs/Firefox_17_for_developers" title="/ja/docs/Firefox_17_for_developers">Firefox 17</a>、<a href="https://wiki.mozilla.org/Thunderbird/Support/TB17UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB17UserChanges">Thunderbird 17</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.14', 'SeaMonkey 2.14') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 16</td>
+ <td><a href="/ja/docs/Firefox_16_for_developers" title="/ja/docs/Firefox_16_for_developers">Firefox 16</a>、<a href="https://wiki.mozilla.org/Thunderbird/Support/TB16UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB16UserChanges">Thunderbird 16</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.13', 'SeaMonkey 2.13') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 15</td>
+ <td><a href="/ja/docs/Firefox_15_for_developers" title="Firefox_15_for_developers">Firefox 15</a>、 <a href="https://wiki.mozilla.org/Thunderbird/Support/TB15UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB15UserChanges">Thunderbird 15</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.12', 'SeaMonkey 2.12') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 14</td>
+ <td><a href="/ja/docs/Firefox_14_for_developers" title="Firefox_14_for_developers">Firefox 14</a>、<a href="https://wiki.mozilla.org/Thunderbird/Support/TB14UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB14UserChanges">Thunderbird 14</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.11', 'SeaMonkey 2.11') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 13</td>
+ <td><a href="/ja/docs/Firefox_13_for_developers" title="ja/docs/Firefox_13_for_developers">Firefox 13</a>、<a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB13UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB13UserChanges">Thunderbird 13</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.10', 'SeaMonkey 2.10') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 12</td>
+ <td><a href="/ja/docs/Firefox_12_for_developers" title="ja/docs/Firefox_12_for_developers">Firefox 12</a>、<a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB12UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB12UserChanges">Thunderbird 12</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.9', 'SeaMonkey 2.9') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 11</td>
+ <td><a href="/ja/docs/Firefox_11_for_developers" title="ja/docs/Firefox_11_for_developers">Firefox 11</a>、<a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB11UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB11UserChanges">Thunderbird 11</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.8', 'SeaMonkey 2.8') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 10</td>
+ <td><a class="internal" href="/ja/docs/Firefox_10_for_developers" title="ja/docs/Firefox 10 for developers">Firefox 10</a>、<a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB10UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB10UserChanges">Thunderbird 10</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.7', 'SeaMonkey 2.7') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 9</td>
+ <td><a class="internal" href="/ja/docs/Firefox_9_for_developers" title="ja/docs/Firefox 9 for developers">Firefox 9</a>、<a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB9UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB9UserChanges">Thunderbird 9</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.6', 'SeaMonkey 2.6') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 8</td>
+ <td><a class="internal" href="/ja/docs/Firefox_8_for_developers" title="ja/docs/Firefox 8 for developers">Firefox 8</a>、<a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Support/TB8UserChanges" title="https://wiki.mozilla.org/Thunderbird/Support/TB8UserChanges">Thunderbird 8</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.5', 'SeaMonkey 2.5') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 7</td>
+ <td><a class="internal" href="/ja/docs/Firefox_7_for_developers" title="ja/docs/Firefox 7 for developers">Firefox 7</a>、<a href="/ja/docs/Thunderbird_7_for_developers" title="ja/docs/Thunderbird 7 for developers">Thunderbird 7</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.4', 'SeaMonkey 2.4') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 6</td>
+ <td><a class="internal" href="/ja/docs/Firefox_6_for_developers" title="ja/docs/Firefox 6 for developers">Firefox 6</a>、<a href="/ja/docs/Thunderbird_6_for_developers" title="ja/docs/Thunderbird 6 for developers">Thunderbird 6</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.3', 'SeaMonkey 2.3') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 5</td>
+ <td><a href="/ja/docs/Firefox_5_for_developers" title="ja/docs/Firefox 5 for developers">Firefox 5</a>、<a href="/ja/docs/Thunderbird_5_for_developers" title="ja/docs/Thunderbird 5 for developers">Thunderbird 5</a>、{{ interwiki('wikimo', 'SeaMonkey/Features/2.2', 'SeaMonkey 2.2') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 2</td>
+ <td><a class="internal" href="/ja/docs/Firefox_4_for_developers" title="ja/docs/Firefox 4 for developers">Firefox 4</a>、<span class="st">Thunderbird 3.3、 </span>{{ interwiki('wikimo', 'SeaMonkey/Features/2.1', 'SeaMonkey 2.1') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 1.9.2</td>
+ <td><a class="internal" href="/ja/docs/Firefox_3.6_for_developers" title="ja/docs/Firefox 3.6 for developers">Firefox 3.6</a>、Thunderbird 3.1</td>
+ </tr>
+ <tr>
+ <td>Gecko 1.9.1</td>
+ <td><a class="internal" href="/ja/docs/Firefox_3.5_for_developers" title="ja/docs/Firefox 3.5 for developers">Firefox 3.5</a>、<a class="internal" href="/ja/docs/Thunderbird_3_for_developers" title="ja/docs/Thunderbird 3 for developers">Thunderbird 3</a>、{{ interwiki('wikimo', 'SeaMonkey:New_for_2.0', 'SeaMonkey 2.0') }}</td>
+ </tr>
+ <tr>
+ <td>Gecko 1.9</td>
+ <td><a href="/ja/docs/Firefox_3_for_developers" title="ja/docs/Firefox_3_for_developers">Firefox 3</a></td>
+ </tr>
+ <tr>
+ <td>Gecko 1.8.1</td>
+ <td><a href="/ja/docs/Firefox_2_for_developers" title="ja/docs/Firefox_2_for_developers">Firefox 2</a>、Thunderbird 2、SeaMonkey 1.1</td>
+ </tr>
+ <tr>
+ <td>Gecko 1.8</td>
+ <td><a href="/ja/docs/Firefox_1.5_for_developers" title="ja/docs/Firefox_1.5_for_developers">Firefox 1.5</a>、Thunderbird 1.5、SeaMonkey 1.0</td>
+ </tr>
+ <tr>
+ <td>Gecko 1.7</td>
+ <td>Firefox 1.0、Thunderbird 1.0、Nvu 1.0、Mozilla Suite 1.7</td>
+ </tr>
+ <tr>
+ <td colspan="2"><strong>これより古いバージョンの Gecko のバージョンナンバーは Mozilla Suite のそれと一致します。</strong></td>
+ </tr>
+ </tbody>
+</table>
+<p> </p>
diff --git a/files/ja/mozilla/gecko_almost_standards_mode/index.html b/files/ja/mozilla/gecko_almost_standards_mode/index.html
new file mode 100644
index 0000000000..33c774dd77
--- /dev/null
+++ b/files/ja/mozilla/gecko_almost_standards_mode/index.html
@@ -0,0 +1,58 @@
+---
+title: Gecko's "Almost Standards" Mode
+slug: Mozilla/Gecko_Almost_Standards_Mode
+tags:
+ - Gecko
+ - Web Development
+ - Web Standards
+translation_of: Mozilla/Gecko_Almost_Standards_Mode
+---
+<p>Mozilla は、バージョン 1.0.1 と 1.1 Beta において、「ほぼ標準」モード(準標準モード)と呼ばれる新しいレンダリングモードを実装しました。これは、以前からある「<a href="/ja/docs/Quirks_Mode_and_Standards_Mode">互換</a>」モードと「標準」モードに追加されたものです。</p>
+
+
+<p>「ほぼ標準」モードは、ひとつの挙動を除けば、他は「標準」モードとまったく同じです。その例外とは、テーブルセル内の画像のレイアウトが Gecko の「互換」モードと同様に扱われ、Internet Explorer など他のブラウザとほとんど同じ表示になるという点です。これは、Mozilla 1.0.1 以降のレンダリングエンジンを搭載した Gecko ベースのブラウザで、「互換」あるいは「ほぼ標準」モードでページを表示した場合、テーブルセル内に配置されたスライス画像のレイアウトが崩れる可能性が少なくなるということです。(「標準」モードでそうしたレイアウトがどのように扱われるかについては『<a href="/ja/docs/Images,_Tables,_and_Mysterious_Gaps">画像、テーブル、不可解なずれ</a>』で詳しく解説されています)</p>
+
+
+<p>この違いを除けば、「ほぼ標準」と「標準」モードは、レイアウトやその他の挙動についてはまったく同じです。</p>
+
+
+<h2 id="Triggering_.22Almost_Standards.22" name="Triggering_.22Almost_Standards.22">「ほぼ標準」モードのトリガー</h2>
+<p>「ほぼ標準」モードのトリガーとなる文書型宣言 (DOCTYPE) は、以下のいずれかです。</p>
+<ul>
+ <li>公開識別子 "<code>-//W3C//DTD XHTML 1.0 Transitional//EN</code>"</li>
+ <li>公開識別子 "<code>-//W3C//DTD XHTML 1.0 Frameset//EN</code>"</li>
+ <li>公開識別子 "<code>-//W3C//DTD HTML 4.01 Transitional//EN</code>" とシステム識別子の組み合わせ</li>
+ <li>公開識別子 "<code>-//W3C//DTD HTML 4.01 Frameset//EN</code>" とシステム識別子の組み合わせ</li>
+ <li>IBM のシステム DOCTYPE "<code><span class="nowiki">http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd</span></code>"</li>
+</ul>
+<p>完全な DOCTYPE には公開識別子とシステム識別子が含まれています。DOCTYPE の議論では、多くの人々が、DOCTYPE は「URI 付き」か「URI なし」であると主張しています。URI はシステム識別子です。例えば、以下の DOCTYPE について考えた場合、</p>
+<pre class="brush:html">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd"&gt;</pre>
+<p>それぞれの部分はこのように区別できます。</p>
+<ul>
+ <li>公開識別子: "<code>-//W3C//DTD HTML 4.01 Transitional//EN</code>"</li>
+ <li>システム識別子: "<code>http://www.w3.org/TR/html4/loose.dtd</code>"</li>
+</ul>
+<p>そのため、HTML 4.01 Transitional あるいは Frameset の DOCTYPE は、URI (システム識別子) が付いている場合、「ほぼ標準」モードのトリガーとなります。また、XHTML 1.0 Transitional あるいは Frameset の DOCTYPE は、URI の有無にかかわらずトリガーとなります。IBM 社外の Web 開発者は、同様に「ほぼ標準」モードのトリガーとなる特別な DOCTYPE について気にする必要はありません。</p>
+
+
+<h2 id="Recommendations" name="Recommendations">アドバイス</h2>
+<ul>
+ <li>HTML 4.01 または XHTML 1.0 を用いた正しいマークアップへの移行を検討中で、テーブル内に画像を配置するデザイン概念を持ち続けている開発者は、「ほぼ標準」モードのトリガーとなる DOCTYPE を利用してください。</li>
+</ul>
+
+<h2 id="Also_On_MDC" name="Also_On_MDC">MDC にある他の文書</h2>
+<ul>
+ <li><a href="/ja/docs/Images,_Tables,_and_Mysterious_Gaps">画像、テーブル、不可解なずれ</a></li>
+ <li><a href="/ja/docs/Mozilla's_DOCTYPE_sniffing">Mozilla 製品の DOCTYPE の判別</a></li>
+ <li><a href="/ja/docs/Quirks_Mode_and_Standards_Mode">Mozilla 製品の後方互換モード (Quirks Mode)</a></li>
+</ul>
+<div class="originaldocinfo">
+ <h2 id="Original_Document_Information" name="Original_Document_Information">原文書の情報</h2>
+ <ul>
+ <li>著者: Eric A. Meyer, Netscape Communications</li>
+ <li>最終更新日: 2001 年 11 月 08 日 (公開)</li>
+ <li>著作権: Copyright © 2001-2003 Netscape. All rights reserved.</li>
+ <li>注記: この転載記事は元々 Netscape DevEdge で公開されていました。</li>
+ </ul>
+</div>
diff --git a/files/ja/mozilla/ime_handling_guide/index.html b/files/ja/mozilla/ime_handling_guide/index.html
new file mode 100644
index 0000000000..977fcfafca
--- /dev/null
+++ b/files/ja/mozilla/ime_handling_guide/index.html
@@ -0,0 +1,667 @@
+---
+title: IME handling guide
+slug: Mozilla/IME_handling_guide
+tags:
+ - 入力メソッド
+translation_of: Mozilla/IME_handling_guide
+---
+<p>このドキュメントでは、GeckoがIMEをどのように扱うかを説明します。</p>
+
+<h2 id="はじめに">はじめに</h2>
+
+<p>IMEはInput Method Editorの略です。 これはWindowsの専門用語ですが、最近では他のプラットフォームでも使用されています。</p>
+
+<p>IMEは、ユーザーのテキスト入力を補助するアプリケーションです。 プラットフォームに応じ、フォーカスされているアプリケーションへのネイティブキーイベント前後に処理を行い、コンポジション文字列(別名:編集前文字列)を作成し、ユーザーが入力しようとしているもののリストを提案し、リストから選択された項目として、変換を行わないコンポジション文字列をコミットします。 IMEは、中国語、日本語、韓国語、および台湾のユーザーの文字を入力するために使用されています。 これらの言語では、使用される文字の数が数千を超えているため、IMEを介さずにキーボードから文字を直接入力することはできません。 また、最近のモバイルデバイスでは、ラテン語のオートコンプリートのような入力にもIMEは使用されます。 さらに、IMEは、いくつかのプラットフォーム上で手書きシステムや音声入力システムに使用されることもあります。</p>
+
+
+
+<p>IMEがフォーカスされた要素で利用できる場合は、その状態を"enabled"と呼びます。 IMEが利用可能ではない(例えば、ユーザがIMEを有効にできない)場合の状態を"disabled"と呼びます。</p>
+
+
+
+<p>IMEがenabledになっているがユーザーが直接入力モードを使用する場合(例えばラテン文字を入力するために)、それを"IME is closed"と呼びます。 それ以外の場合は、"IME is open"と呼びます。 (ちなみに:"open"は"active"または"turned on"とも呼ばれます。 "close"は"inactive"または"truned off"とも呼ばれます)</p>
+
+<p>このドキュメントはGeckoのテキスト入力に関するバグを修正しようとしているときに役に立つでしょう。</p>
+
+<h2 id="Composition_string_and_clauses">Composition string and clauses</h2>
+
+<p>Typical Japanese IME can input two or more words into a composition string. When a user converts from Hiragana characters to Chinese characters the composition string, Japanese IME separates the composition string into multiple clauses. For example, if a user types "watasinonamaehanakanodesu", it's converted to Hiragana characters, "わたしのなまえはなかのです", automatically (In the following screenshots, the composition string has a wavy underline and the only one clause is called "raw input clause").</p>
+
+<p><img alt="Screenshot of raw composition string which is inputting Roman character mode of MS-IME (Japanese)" src="https://mdn.mozillademos.org/files/8703/inputting_composition_string.png" style="height: 33px; width: 540px;"></p>
+
+<p><img alt="Screenshot of raw composition string whose all characters are Hiragana character (MS-IME, Japanese)" src="https://mdn.mozillademos.org/files/8705/raw_composition_string.png" style="height: 33px; width: 540px;"></p>
+
+<p>When a user presses <code>Convert</code> key, Japanese IME separates the composition string as "わたしの" (my), "なまえは" (name is) and "なかのです" (Nakano). Then, converts each clause with Chinese characters: "私の", "名前は" and "中野です" (In the following screenshot each clause is underlined and not connected adjacently. These clauses are called "converted clause").</p>
+
+<p><img alt="Screenshot of converted composition string (MS-IME, Japanese)" src="https://mdn.mozillademos.org/files/8707/converted_composition_string.png" style="height: 33px; width: 540px;"></p>
+
+<p>If one or more clauses were not converted as expected, the user can choose one of the clauses with <code>Arrow</code> keys and look for the expected result form the list in the drop down menu (In the following screenshot, the clause with the thicker underline is called "selected clause").</p>
+
+<p><img alt="Screenshot of candidate window of MS-IME (Japanese) which converts the selected clause" src="https://mdn.mozillademos.org/files/8709/candidatewindow.png" style="height: 261px; width: 540px;"></p>
+
+<p>Basically, composition string and each clause style is rendered by Gecko. And the drop down menu is created by IME.</p>
+
+<p>Each clause is represented with selection in the editor. From chrome script, you can check it with <code>nsISelectionController</code>. In native code, you can access it with either <code>nsISelectionController</code> or <code>mozilla::SelectionType</code> (the latter is recommended because of type safer). And editor sets these IME selections from <code>mozilla::TextRangeType</code> which are sent by <code>mozilla::WidgetCompositionEvent</code> as <code>mozilla::TextRangeArray</code>. Following table explains the mapping between them.</p>
+
+<table class="standard-table">
+ <caption>Selection types of each clause of composition string or caret</caption>
+ <thead>
+ <tr>
+ <th scope="row"></th>
+ <th scope="col"><code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/base/nsISelectionController.idl">nsISelectionController</a></code></th>
+ <th scope="col"><code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/base/nsISelectionController.idl">mozilla::SelectionType</a></code></th>
+ <th scope="col"><code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/TextRange.h">mozilla::TextRangeType</a></code></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">Caret</th>
+ <td><code>SELECTION_NORMAL</code></td>
+ <td><code>eNormal</code></td>
+ <td><code>eCaret</code></td>
+ </tr>
+ <tr>
+ <th scope="row">Raw text typed by the user</th>
+ <td><code>SELECTION_IME_RAW_INPUT</code></td>
+ <td><code>eIMERawClause</code></td>
+ <td><code>eRawClause</code></td>
+ </tr>
+ <tr>
+ <th scope="row">Selected clause of raw text typed by the user</th>
+ <td><code>SELECTION_IME_SELECTEDRAWTEXT</code></td>
+ <td><code>eIMESelectedRawClause</code></td>
+ <td><code>eSelectedRawClause</code></td>
+ </tr>
+ <tr>
+ <th scope="row">Converted clause by IME</th>
+ <td><code>SELECTION_IME_CONVERTEDTEXT</code></td>
+ <td><code>eIMEConvertedClause</code></td>
+ <td><code>eConvertedClause</code></td>
+ </tr>
+ <tr>
+ <th scope="row">Selected clause by the user or IME and also converted by IME</th>
+ <td><code>SELECTION_IME_SELECTEDCONVERTEDTEXT</code></td>
+ <td><code>eIMESelectedClause</code></td>
+ <td><code>eSelectedClause</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<p>Note that typically, "Selected clause of raw text typed by the user" isn't used because when composition string is already separated to multiple clauses, that means that the composition string has already been converted by IME at least once.</p>
+
+<h2 id="Modules_handling_IME_composition">Modules handling IME composition</h2>
+
+<h3 id="widget*"><a href="http://mxr.mozilla.org/mozilla-central/source/widget/"><code>widget/*</code></a></h3>
+
+<p>Each widget handles native IME events and dispatches <code>WidgetCompositionEvent</code> with <code>mozilla::widget::TextEventDispatcher</code> to represent the behavior of IME in the focused editor.</p>
+
+<p>This is the only module that depends on the users platform. See also <a href="#Native_IME_handlers">Native IME handlers section</a> for the detail of each platform's implementation.</p>
+
+<div class="note">
+<p>Android widget still does not use <code>TextEventDispatcher</code> to dispatch <code>WidgetCompositionEvent</code>s, see {{Bug(1137567)}}.</p>
+</div>
+
+<h3 id="mozillawidgetTextEventDispatcher"><a href="https://dxr.mozilla.org/mozilla-central/source/widget/TextEventDispatcher.cpp">mozilla::widget::TextEventDispatcher</a></h3>
+
+<p>This class is used by native IME handler(s) on each platform. This capsules the logic to dispatch <code>WidgetCompositionEvent</code> and <code>WidgetKeyboardEvent</code> for making the behavior on each platform exactly same. For example, if <code>WidgetKeyboardEvent</code> should be dispatched when there is a composition is managed by this class in XP level. First of use, native IME handlers get the rights to use <code>TextEventDispatcher</code> with a call of <code>BeginNativeInputTransaction()</code>. Then, <code>StartComposition()</code>, <code>SetPendingComposition()</code>, <code>FlushPendingComposition()</code>, <code>CommitComposition()</code>, etc. are available if <code>BeginNativeInputTransaction()</code> return true. These methods automatically manage composition state and dispatch <code>WidgetCompositionEvent</code> properly.</p>
+
+<p>This is also used by <code>mozilla::TextInputProcessor</code> which can emulates (or implements) IME with chrome script. So, native IME handlers using this class means that the dispatching part is also tested by automated tests.</p>
+
+<h3 id="mozillaWidgetCompositionEvent"><a href="https://dxr.mozilla.org/mozilla-central/source/widget/TextEvents.h">mozilla::WidgetCompositionEvent</a></h3>
+
+<p>Internally, <code>WidgetCompositionEvent</code> represents native IME behavior. Its message is one of following values:</p>
+
+<h4 id="eCompositionStart"><code>eCompositionStart</code></h4>
+
+<p>This is dispatched at starting a composition. This represents a DOM <code>compositionstart</code> event. The <code>mData</code> value is a selected string at dispatching the DOM event and it's automatically set by <code>TextComposition</code>.</p>
+
+<h4 id="eCompositionUpdate"><code>eCompositionUpdate</code></h4>
+
+<p><em>This is dispatched by <code>TextComposition</code></em> when an <code>eCompoitionChange</code> will change the composition string. This represents a DOM <code>compositionupdate</code> event.</p>
+
+<h4 id="eCompositionEnd"><code>eCompositionEnd</code></h4>
+
+<p><em>This is dispatched by <code>TextComposition</code></em> when an <code>eCompositionCommitAsIs</code> or <code>eComposiitonCommit</code> event is dispatched. This represents a DOM <code>compositionend</code> event.</p>
+
+<h4 id="eCompositionChange"><code>eCompositionChange</code></h4>
+
+<p>This is used internally only. This is dispatched at modifying a composition string, committing a composition, changing caret position and/or changing ranges of clauses. This represents a DOM <code>text</code> event which is not in any standards. <code>mRanges</code> should not be empty only with this message.</p>
+
+<h4 id="eCompositionCommitAsIs"><code>eCompositionCommitAsIs</code></h4>
+
+<p>This is used internally only. This is dispatched when a composition is committed with the string. The <code>mData</code> value should be always be an empty string. This causes a DOM <code>text</code> event without clause information and a DOM <code>compositionend</code> event.</p>
+
+<h4 id="eCompositionCommit"><code>eCompositionCommit</code></h4>
+
+<p>This is used internally only. This is dispatched when a composition is committed with specific string. The <code>mData</code> value is the commit string. This causes a DOM <code>text</code> event without clause information and a DOM <code>compositionend</code> event.</p>
+
+<table class="standard-table">
+ <caption>Table of event messages</caption>
+ <thead>
+ <tr>
+ <th scope="row"></th>
+ <th scope="col">meaning of <code>mData</code></th>
+ <th scope="col">who sets <code>mData</code>?</th>
+ <th scope="col"><code>mRanges</code></th>
+ <th scope="col">representing DOM event</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row"><code>eCompositionStart</code></th>
+ <td>selected string before starting composition</td>
+ <td><code>TextComposition</code></td>
+ <td><code>nullptr</code></td>
+ <td><code>compositionstart</code></td>
+ </tr>
+ <tr>
+ <th scope="row"><code>eCompositionUpdate</code></th>
+ <td>new composition string</td>
+ <td><code>TextComposition</code></td>
+ <td><code>nullptr</code></td>
+ <td><code>compositionupdate</code></td>
+ </tr>
+ <tr>
+ <th scope="row"><code>eCompositionEnd</code></th>
+ <td>commit string</td>
+ <td><code>TextComposition</code></td>
+ <td><code>nullptr</code></td>
+ <td><code>compositionend</code></td>
+ </tr>
+ <tr>
+ <th scope="row"><code>eCompositionChange</code></th>
+ <td>new composition string</td>
+ <td>widget (or <code>TextComposition</code>)</td>
+ <td>must not be <code>nullptr</code></td>
+ <td><code>text</code></td>
+ </tr>
+ <tr>
+ <th scope="row"><code>eCompositionCommitAsIs</code></th>
+ <td><em>N/A</em> (must be empty)</td>
+ <td><em>nobody</em></td>
+ <td><code>nullptr</code></td>
+ <td><em>None</em></td>
+ </tr>
+ <tr>
+ <th scope="row"><code>eCompositionCommit</code></th>
+ <td>commit string</td>
+ <td>widget (or <code>TextComposition</code>)</td>
+ <td><code>nullptr</code></td>
+ <td><em>None</em></td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="PresShell"><a href="http://dxr.mozilla.org/mozilla-central/source/layout/base/nsPresShell.cpp"><code>PresShell</code></a></h3>
+
+<p><code>PresShell</code> receives the widget events and decides an event target from focused document and element. Then, it sends the events and the event target to <code>IMEStateManager</code>.</p>
+
+<h3 id="mozillaIMEStateManager"><code><a href="http://dxr.mozilla.org/mozilla-central/source/dom/events/IMEStateManager.cpp">mozilla::IMEStateManager</a></code></h3>
+
+<p><code>IMEStateManager</code> looks for a <code>TextComposition</code> instance whose native IME context is same as the widget' which dispatches the widget event. If there is no proper <code>TextComposition</code> instance, it creates the instance. And it sends the event to the <code>TextComposition</code> instance.</p>
+
+<p>Note that all instances of <code>TextComposition</code> are managed by <code>IMEStateManager</code>. When an instance is created, it's registered to the list. When composition completely ends, it's unregistered from the list (and released automatically).</p>
+
+<h3 id="mozillaTextComposition"><a href="http://dxr.mozilla.org/mozilla-central/source/dom/events/TextComposition.cpp"><code>mozilla::TextComposition</code></a></h3>
+
+<p><code>TextComposition</code> manages a composition and dispatches DOM <code>compositionupdate</code> events.</p>
+
+<p>When this receives an <code>eCompositionChange</code>, <code>eCompositionCommit</code> or <code>eCompositionCommitAsIs</code> event, it dispatches the event to the stored node which was the event target of <code>eCompositionStart</code> event. Therefore, this class guarantees that all composition events for a composition are fired on same element.</p>
+
+<p>When this receives <code>eCompositionChange</code> or <code>eCompositionCommit</code>, this checks if new composition string (or committing string) is different from the last data stored by the <code>TextComposition</code>. If the composition event is changing the composition string, the <code>TextComposition</code> instance dispatches <code>WidgetCompositionEvent</code> with <code>eCompositionUpdate</code> into the DOM tree directly and modifies the last data. The <code>eCompositionUpdate</code> event will cause a DOM <code>compositionupdate</code> event.</p>
+
+<p>When this receives <code>eCompositionCommitAsIs</code> or <code>eCompositionCommit</code>, this dispatches an eCompositionEnd event which will cause a DOM <code>compositionend</code> event after dispatching <code>eCompositionUpdate</code> event and/or <code>eCompositionChange</code> event if necessary.</p>
+
+<p>One of the other important jobs of this is, when a focused editor handles a dispatched <code>eCompositionChange</code> event, this modifies the stored composition string and its clause information. The editor refers the stored information for creating or modifying a text node representing a composition string.</p>
+
+<p>And before dispatching <code>eComposition*</code> events, this class removes ASCII control characters from dispatching composition event's data in the default settings. Although, this can be disabled with <code>"dom.compositionevent.allow_control_characters"</code> pref.</p>
+
+<p>Finally, this class guarantees that requesting to commit or cancel current composition to IME is perefored synchronously. See <a href="#Forcibly_committing_composition">Forcibly committing composition section</a> for the detail.</p>
+
+<h3 id="editorlibeditor"><a href="http://dxr.mozilla.org/mozilla-central/source/editor/"><code>editor/libeditor</code></a></h3>
+
+<p><a href="http://dxr.mozilla.org/mozilla-central/source/editor/libeditor/EditorEventListener.cpp"><code>mozilla::EditorEventListener</code></a> listens for trusted DOM <code>compositionstart</code>, <code>text</code> and <code>compositionend</code> events and notifies <a href="http://dxr.mozilla.org/mozilla-central/source/editor/libeditor/EditorBase.cpp"><code>mozilla::EditorBase</code></a> and <a href="http://dxr.mozilla.org/mozilla-central/source/editor/libeditor/TextEditor.cpp"><code>mozilla::TextEditor</code></a> of the events.</p>
+
+<p>When <code>EditorBase</code> receives an <code>eCompositionStart</code> (DOM <code>"compositionstart"</code>) event, it looks for a proper <code>TextComposition</code> instance and stores it.</p>
+
+<p>When <code>TextEditor</code> receives an <code>eCompositionChange</code> (DOM <code>"text"</code>) event, it creates or modifies a text node which includes the composition string and <a href="https://dxr.mozilla.org/mozilla-central/source/editor/libeditor/CompositionTransaction.cpp">mozilla::CompositionTransaction</a> (it was called <code>IMETextTxn</code>) sets IME selections for representing the clauses of the composition string.</p>
+
+<p>When <code>EditorBase</code> receives an <code>eCompositionEnd</code> (DOM <code>"compositionend"</code>) event, it releases the stored <code>TextComposition</code> instance.</p>
+
+<h3 id="nsTextFrame"><a href="http://dxr.mozilla.org/mozilla-central/source/layout/generic/nsTextFrame.cpp"><code>nsTextFrame</code></a></h3>
+
+<p><code>nsTextFrame</code> paints IME selections.</p>
+
+<h3 id="mozillaIMEContentObserver"><a href="http://dxr.mozilla.org/mozilla-central/source/dom/events/IMEContentObserver.cpp"><code>mozilla::IMEContentObserver</code></a></h3>
+
+<p><code>IMEContentObserver</code> observes various changes of a focused editor. When an editor or a windowless plugin gets focus, an instance is created, starts to observe and notifies <code>widget</code> of IME getting focus. When the editor or windowless plugin loses focus, it notifies <code>widget</code> of IME losing focus, stops observing everything and is released.</p>
+
+<p>This class observes selection changes (caret position changes), text changes of a focused editor and layout changes (by reflow or scroll) of everything in the document. It depends on the result of <code>nsIWidget::GetIMEUpdatePreference()</code> what is observed.</p>
+
+<p>When this notifies something of widget and/or IME, it needs to be safe to run script because notifying something may cause dispatching one or more DOM events and/or new reflow. Therefore, IMEContentObserver only stores which notification should be sent to widget and/or IME. Then, <code>mozilla::IMEContentObserver::IMENotificationSender</code> tries to send the pending notifications when it might become safe to do that. Currently, it's tried:</p>
+
+<ul>
+ <li>after a native event is dispatched from <code>PresShell::HandleEventInternal()</code></li>
+ <li>at changing focus from a windowless plugin</li>
+ <li>when new focused editor receives DOM <code>"focus"</code> event</li>
+</ul>
+
+<div class="note">
+<p>The 3rd timing may not be safe actually, but it causes a lot of oranges of automated tests.</p>
+</div>
+
+<p>See also <a href="#Notifications_to_IME">Notifications to IME section</a> for the detail of sending notifications.</p>
+
+<p>Currently, <code>WidgetQueryContentEvent</code> is handled via <code>IMEContentObserver</code> because if it has a cache of selection, it can set reply of <code>eQuerySelectedText</code> event only with the cache. That is much faster than using <code>ContentEventHandler</code>.</p>
+
+<h2 id="e10s_support">e10s support</h2>
+
+<p>Even when a remote process has focus, native IME handler in chrome process does its job. So, there is process boundary between native IME handler and focused editor. Unfortunately, it's not allowed to use syncronous communication from chrome process to a remote process. This means that chrome process (and also native IME and our native IME handler) cannot query the focused editor contents directly. For fixing this issue, we have <code>ContentCache</code> classes around process boundary.</p>
+
+<h3 id="mozillaContentCache"><code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/ContentCache.cpp">mozilla::ContentCache</a></code></h3>
+
+<p>This is a base class of <code>ContentCacheInChild</code> and <code>ContentCacheInParent</code> and IPC-aware. This has common members of them including all cache data:</p>
+
+<dl>
+ <dt><code>mText</code></dt>
+ <dd>Whole text in focused editor. This may be too big but IME may request all text in the editor.</dd>
+ <dd>If we can separate editor contents per paragraph, moving selection between paragraphs generates pseudo focus move, we can reduce this size and runtime cost of <code>ContentEventHandler</code>. However, we've not had a plan to do that yet. Note that Microsoft Word uses this hack.</dd>
+ <dt><code>mCompositionStart</code></dt>
+ <dd>Offset of composition string in <code>mText</code>. When there is no composition, this is <code>UINT32_MAX</code>.</dd>
+ <dt><code>mSelection::mAnchor</code>, <code>mSelection::mFocus</code></dt>
+ <dd>Offset of selection anchor and focus in <code>mText</code>.</dd>
+ <dt><code>mSelection::mWritingMode</code></dt>
+ <dd>Writing mode at selection start.</dd>
+ <dt><code>mSelection::mAnchorCharRect</code>, <code>mSelection::mFocusCharRect</code></dt>
+ <dd>Next character rect of <code>mSelection::mAnchor</code> and <code>mSelection::mFocus</code>. If correspoinding offset is end of the editor contents, its rect should be caret rect.</dd>
+ <dd>These rects shouldn't be empty rect.</dd>
+ <dt><code>mSelection::mRect</code></dt>
+ <dd>Unifiied character rect in selection range. When the selection is collapsed, this should be caret rect.</dd>
+ <dt><code>mFirstRect</code></dt>
+ <dd>First character rect of <code>mText</code>. When <code>mText</code> is empty string, this should be caret rect.</dd>
+ <dt><code>mCaret::mOffset</code></dt>
+ <dd>Always same as selection start offset even when selection isn't collappsed.</dd>
+ <dt><code>mCaret::mRect</code></dt>
+ <dd>Caret rect at <code>mCaret::mOffset</code>. If caret isn't actually exists, it's computed with a character rect at the offset.</dd>
+ <dt><code>mTextRectArray::mStart</code></dt>
+ <dd>If there is composition, <code>mStart</code> is same as <code>mCompositionStart</code>. Otherwise, UINT32_MAX.</dd>
+ <dt><code>mTextRectArray::mRects</code></dt>
+ <dd>Each character rects of composition string.</dd>
+ <dt><code>mEditorRect</code></dt>
+ <dd>The rect of editor element.</dd>
+</dl>
+
+<h3 id="mozillaContentCacheInChild"><code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/ContentCache.cpp">mozilla::ContentCacheInChild</a></code></h3>
+
+<p>This exists only in remote processes. This is created as a member of <code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/PuppetWidget.cpp">PuppetWidget</a></code>. When <code>PuppetWidget</code> receives notifications to IME from <code>IMEContentObserver</code> in the remote process, it makes this class modify its cached content. Then, this class do that with <code>WidgetQueryContentEvent</code>s. Finally, <code>PuppetWidget</code> sends the notification and <code>ContentCacheInParent</code> instance as <code>ContentCache</code> to its parent process.</p>
+
+<h3 id="mozillaContentCacheInParent"><code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/ContentCache.cpp">mozilla::ContentCacheInParent</a></code></h3>
+
+<p>This exists as a member of <code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/ipc/TabParent.cpp">TabParent</a></code>. When TabParent receives notification from corresponding remote process, it assigns <code>ContentCacheInParent</code> new <code>ContentCache</code> and post the notification to <code>ContentCacheInParent</code>. If all sent <code>WidgetCompositionEvent</code>s and <code>WidgetSelectionEvent</code>s are already handled in the remote process, <code>ContentCacheInParent</code> sending the notifications to widget.</p>
+
+<p>And also this handles <code>WidgetQueryContentEvent</code>s with its cache. Supported event messages of them are:</p>
+
+<ul>
+ <li><code>eQuerySelectedText</code> (only with <code>SelectionType::eNormal</code>)</li>
+ <li><code>eQueryTextContent</code></li>
+ <li><code>eQueryTextRect</code></li>
+ <li><code>eQueryCaretRect</code></li>
+ <li><code>eQueryEditorRect</code></li>
+</ul>
+
+<p>Additionally, this does not support query content events with XP line breakers but this must not be any problem since native IME handlers query contents with native line breakers.</p>
+
+<p><code>ContentCacheInParent</code> also manages sent <code>WidgetCompositionEvent</code>s and <code>WidgetSelectionEvent</code>s. After these events are handled in the remote process, <code>TabParent</code> receives it with a call of <code>RecvOnEventNeedingAckHandled()</code>. Then, it calls <code>ContentCacheInParent::OnEventNeedingAckHandled()</code>. Finally, <code>ContentCacheInParent</code> flushes pending notifications.</p>
+
+<h3 id="How_do_mozillaTextComposition_and_mozillaIMEStateManager_work_in_e10s_mode">How do <code>mozilla::TextComposition</code> and <code>mozilla::IMEStateManager</code> work in e10s mode?</h3>
+
+<p>In remote process, they work as non-e10s mode. On the other hand, they work specially in parent process.</p>
+
+<p>When IMEStateManager in parent process receives  <code>eCompositionStart</code>, it creates <code>TextComposition</code> instance normally. However, if the event target has remote contents, <code>TextComposition::DispatchCompositionEvent()</code> directly sends the event to the remote process instead of dispatching the event into the target DOM tree in the process.</p>
+
+<p>That means that even in a parent process, anybody can retrieve <code>TextComposition</code> instance, but it just does nothing in parent process.</p>
+
+<p>IMEStateManager works more complicated because IMEStateManagers in each processe need to negotiate about owner ship of managing input context.</p>
+
+<p>When a remote process gets focus, temporarily, <code>IMEStateManager</code> in parent process disables IME in the widget. After that, <code>IMEStateManager</code> in the remote process will set proper input context for the focused editor. At this time, <code>IMEStateManager</code> in the parent process does nothing. Therefore, <code>IMEContentObserver</code> is never created while a remote process has focus.</p>
+
+<p>When a remote process loses focus, <code>IMEStateManager</code> in parent process notifies <code>IMEStateManager</code> in the remote process of "Stop IME state management". When <code>IMEStateManager::StopIMEStateManagement()</code> is called in the remote process by this, the <code>IMEStateManager</code> forgets all focus information (i.e., that indicates nobody has focus).</p>
+
+<p>When <code>IMEStateManager</code> in parent process is notified of pseudo focus move from or to menubar while a remote process has focus, it notifies the remote process of "Menu keyboard listener installed". Then, <code>TabChild</code> calls <code>IMEStateManager::OnInstalledMenuKeyboardListener()</code> in the remote process.</p>
+
+<h2 id="Style_of_each_clause">Style of each clause</h2>
+
+<p>The style of each IME selection is managed by <a href="http://dxr.mozilla.org/mozilla-central/source/widget/LookAndFeel.h"><code>LookAndFeel</code></a> class per platform. Therefore, it can be overridden by prefs.</p>
+
+<p>Background color, foreground color (text color) and underline color can be specified with following prefs. The values must be string of "<code>#rrggbb</code>" format.</p>
+
+<ul>
+ <li><code>ui.IMERawInputBackground</code></li>
+ <li><code>ui.IMERawInputForeground</code></li>
+ <li><code>ui.IMERawInputUnderline</code></li>
+ <li><code>ui.IMESelectedRawTextBackground</code></li>
+ <li><code>ui.IMESelectedRawTextForeground</code></li>
+ <li><code>ui.IMESelectedRawTextUnderline</code></li>
+ <li><code>ui.IMEConvertedTextBackground</code></li>
+ <li><code>ui.IMEConvertedTextForeground</code></li>
+ <li><code>ui.IMEConvertedTextUnderline</code></li>
+ <li><code>ui.IMESelectedConvertedTextBackground</code></li>
+ <li><code>ui.IMESelectedConvertedTextForeground</code></li>
+ <li><code>ui.IMESelectedConvertedTextUnderline</code></li>
+</ul>
+
+<p>Underline style can be specified with the following prefs. The values are integer,  <code>0</code>: none, <code>1</code>: dotted, <code>2</code>: dashed, 3: solid, 4: double, 5: wavy (The values same as <code>NS_STYLE_TEXT_DECORATION_STYLE_*</code> defined in <a href="http://dxr.mozilla.org/mozilla-central/source/layout/style/nsStyleConsts.h">nsStyleConsts.h</a>.</p>
+
+<ul>
+ <li><code>ui.IMERawInputUnderlineStyle</code></li>
+ <li><code>ui.IMESelectedRawTextUnderlineStyle</code></li>
+ <li><code>ui.IMEConvertedTextUnderlineStyle</code></li>
+ <li><code>ui.IMESelectedConvertedTextUnderlineStyle</code></li>
+</ul>
+
+<p>Underline width can be specified with "<code>ui.IMEUnderlineRelativeSize</code>" pref. This affects all types of clauses. The value should be <code>100</code> or <code>200</code>. <code>100</code> means normal width, <code>200</code> means double width.</p>
+
+<p>On some platforms, IME may support its own style for each clause. Currently, this feature is supported in TSF mode of Windows and on Linux. The style information is stored in <code>TextRangeStyle</code> which is defined in <a href="http://dxr.mozilla.org/mozilla-central/source/widget/TextRange.h">TextRange.h</a>. It's a member of <code>TextRange</code>. <code>TextRange</code> is stored in <code>mRanges</code> of <code>WidgetCompositionEvent</code> only when its message is <code>eCompositionChange</code>.</p>
+
+<h2 id="Lifetime_of_composition_string">Lifetime of composition string</h2>
+
+<p>When native IME notifies Gecko of starting a composition, a widget dispatches <code>WidgetCompositionEvent</code> with <code>eCompositionStart</code> which will cause a DOM <code>compositionstart</code> event.</p>
+
+<p>When native IME notifies Gecko of a composition string change, a caret position change and/or a change of length of clauses, a widget dispatches <code>WidgetCompositionEvent</code> with <code>eCompositionChange</code> event. It will cause a DOM <code>compositionupdate</code> event when composition string is changing. That is dispatched by <code>TextComposition</code> automatically. After that when the widget and <code>PresShell</code> of the focused editor have not been destroyed yet, the <code>eCompositionChange</code> will cause a DOM <code>text</code> event which is not in any web standards.</p>
+
+<p>When native IME notifies Gecko of the ending of a composition, a widget dispatches <code>WidgetCompositionEvent</code> with <code>eCompositionCommitAsIs</code> or <code>eCompositionCommit</code>. If the committing string is different from the last set of data (i.e., if the event message is <code>eCompositionCommit</code>), <code>TextComposition</code> dispatches a DOM <code>compositionupdate</code> event. After that, when the widget and <code>PresShell</code> of the focused editor have not been destroyed yet, an <code>eCompositionChange</code> event dispatched by <code>TextComposition, that</code> causes a DOM <code>text</code> event. Finally, if the widget and <code>PresShell</code> of the focused editor has not been destroyed yet too, <code>TextComposition</code> dispatches an <code>eCompositionEnd</code> event which will cause a DOM <code>compositionend</code> event.</p>
+
+<h2 id="Limitation_of_handling_composition">Limitation of handling composition</h2>
+
+<p>Currently, <code>EditorBase</code> touches undo stack at receiving every <code>WidgetCompositionEvent</code>. Therefore, <code>EditorBase</code> requests to commit composition when the following cases occur:</p>
+
+<ul>
+ <li>The editor loses focus</li>
+ <li>The caret is moved by mouse or Javascript</li>
+ <li>Value of the editor is changed by Javascript</li>
+ <li>Node of the editor is removed from DOM tree</li>
+ <li>Somethings object is modified in an HTML editor, e.g., resizing an image</li>
+ <li>Composition string is moved to a different position which is specified by native IME (e.g., only a part of composition is committed)</li>
+</ul>
+
+<p>In the future, we should fix this limitation. If we make <code>EditorBase</code> not touch undo stack until composition is committed, some of the cases must be fixed.</p>
+
+<h2 id="Notifications_to_IME">Notifications to IME</h2>
+
+<p>XP part of Gecko uses <code>nsIWidget::NotifyIME()</code> for notifying <code>widget</code> of something useful to handle IME. Note that some of them are notified only when <code>nsIWidget::GetIMEUpdatePreference()</code> returns flags which request the notifications.</p>
+
+<p><code>NOTIFY_IME_OF_TEXT_CHANGE</code>, <code>NOTIFY_IME_OF_SELECTION_CHANGE</code>, <code>NOTIFY_IME_OF_POSITION_CHANGE</code> and <code>NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED</code> are always sent by following order:</p>
+
+<ol>
+ <li><code>NOTIFY_IME_OF_TEXT_CHANGE</code></li>
+ <li><code>NOTIFY_IME_OF_SELECTION_CHANGE</code></li>
+ <li><code>NOTIFY_IME_OF_POSITION_CHANGE</code></li>
+ <li><code>NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED</code></li>
+</ol>
+
+<p>If sending one of above notifications causes higher priority notification, the sender should abort to send remaning notifications and restart from highet priority notification again.</p>
+
+<p>Additionally, all notifications except NOTIFY_IME_OF_BLUR should be sent only when it's safe to run script since the notification may cause querying content and/or dispatching composition events.</p>
+
+<h3 id="NOTIFY_IME_OF_FOCUS"><code>NOTIFY_IME_OF_FOCUS</code></h3>
+
+<p>When an editable editor gets focus and <code>IMEContentObserver</code> starts to observe it, this is sent to <code>widget</code>. This must be called after the previous <code>IMEContentObserver</code> notified widget of <code>NOTIFY_IME_OF_BLUR</code>.</p>
+
+<p>Note that even if there are pending notifications, they are canceled when <code>NOTIFY_IME_OF_FOCUS</code> is sent since querying content with following notifications immediately after getting focus does not make sense. The result is always same as the result of querying contents at receiving this notfication.</p>
+
+<h3 id="NOTIFY_IME_OF_BLUR"><code>NOTIFY_IME_OF_BLUR</code></h3>
+
+<p>When an <code>IMEContentObserver</code> instance ends observing the focused editor, this is sent to <code>widget</code> synchronously because assumed that this notification causes neither query content events nor composition events.</p>
+
+<p>If <code>widget</code> wants notifications even while all windows are deactive, <code>IMEContentObserver</code> doesn't end observing the focused editor. I.e., in this case, <code>NOTIFY_IME_OF_FOCUS</code> and <code>NOTIFY_IME_OF_BLUR</code> are not sent to <code>widget</code> when a window which has a composition is being activated or deactivated.</p>
+
+<p>When <code>widget</code> wants notifications during deactive, <code>widget</code> includes <code>NOTIFY_DURING_DEACTIVE</code> to the result of <code>nsIWidget::GetIMEUpdatePreference().</code></p>
+
+<p>If this notification is tried to sent before sending <code>NOTIFY_IME_OF_FOCUS</code>, all pending notifications and <code>NOTIFY_IME_OF_BLUR</code> itself are canceled.</p>
+
+<h3 id="NOTIFY_IME_OF_TEXT_CHANGE"><code>NOTIFY_IME_OF_TEXT_CHANGE</code></h3>
+
+<p>When text of focused editor is changed, this is sent to <code>widget</code> with a range of the change. But this is sent only when result of <code><code>nsIWidget::GetIMEUpdatePreference()</code></code> includes <code>NOTIFY_TEXT_CHANGE</code>.</p>
+
+<p>If two or more text changes occurred after previous <code>NOTIFY_IME_OF_TEXT_CHANGE</code> or <code>NOTIFY_IME_OF_FOCUS</code>, the ranges of all changes are merged. E.g., if first change is from <code>1</code> to <code>5</code> and second change is from <code>5</code> to <code>10</code>, the notified range is from <code>1</code> to <code>10</code>.</p>
+
+<p>If all merged text changes were caused by composition, <code>IMENotification::mTextChangeData::mCausedOnlyByComposition</code> is set to true. This is useful if native IME handler wants to ignore all text changes which are expected by native IME.</p>
+
+<p>If at least one text change of the merged text changes was caused by <em>current</em> composition, <code>IMENotification::mTextChangeData::mIncludingChangesDuringComposition</code> is set to true. This is useful if native IME handler wants to ignore delayed text change notifications.</p>
+
+<p>If at least one text change of the merged text changes was caused when there was no composition, <code>IMENotification::mTextChangeData::mIncludingChangesWithoutComposition</code> is set to true.</p>
+
+<h3 id="NOTIFY_IME_OF_SELECTION_CHANGE"><code>NOTIFY_IME_OF_SELECTION_CHANGE</code></h3>
+
+<p>When selection (or caret position) is changed in focused editor, <code>widget</code> is notified of this.</p>
+
+<p>If the last selection change was occurred by a composition event event handling, <code>IMENotification::mSelectionChangeData::mCausedByComposition</code> is set to true. This is useful if native IME handler wants to ignore the last selection change which is expected by native IME.</p>
+
+<p>If the last selection change was occurred by an <code>eSetSelection</code> event, <code>IMENotification::mSelectionChangeData::mCausedBySelectionEvent</code> is set to true. This is useful if native IME handler wants to ignore the last selection change which was requested by native IME.</p>
+
+<p>If the last selection is occurred during a composition, <code>IMENotification::mSelectionChangeData::mOccurredDuringComposition</code> is set to true. This is useful if native IME handler wants to ignore the last selection change which occurred by web application's <code>compositionstart</code> or <code>compositionupdate</code> event handler before inserting composition string.</p>
+
+<h3 id="NOTIFY_IME_OF_POSITION_CHANGE"><code>NOTIFY_IME_OF_POSITION_CHANGE</code></h3>
+
+<p>When reflow or scroll occurs in the document, this is sent to <code>widget</code>. But this is sent only when result of <code><code>nsIWidget::GetIMEUpdatePreference()</code></code> includes <code>NOTIFY_POSITION_CHANGE</code>.</p>
+
+<p>This might be useful to update a candidate window position or something.</p>
+
+<h3 id="NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED"><code>NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED</code></h3>
+
+<p>After <code>TextComposition</code> handles <code>eCompositionStart</code>, <code>eCompositionChange</code>, <code>eComposiitionCommit</code> or <code>eCompositionCommitAsIs</code>, this notification is sent to <code>widget</code>. This might be useful to update a candidate window position or something.</p>
+
+<h3 id="NOTIFY_IME_OF_MOUSE_BUTTON_EVENT"><code>NOTIFY_IME_OF_MOUSE_BUTTON_EVENT</code></h3>
+
+<p>When a <code>mousedown</code> event or a <code>mouseup</code> event is fired on a character in a focused editor, this is sent to <code>widget</code>. But this is sent only when result of <code><code>nsIWidget::GetIMEUpdatePreference()</code></code> includes <code>NOTIFY_MOUSE_BUTTON_EVENT_ON_CHAR</code>. This is sent with various information. See <code>IMENotification::mMouseButtonEventData</code> in <a href="http://dxr.mozilla.org/mozilla-central/source/widget/IMEData.h"><code>IMEData.h</code></a> for the detail.</p>
+
+<p>If native IME supports mouse button event handling, <code>widget</code> should notify IME of mouse button events with this. If IME consumes an event, <code>widget</code> should return <code>NS_SUCCESS_EVENT_CONSUMED</code> from <code>nsIWidget::NotifyIME()</code>. Then, <code>nsEditor</code> doesn't handle the mouse event.</p>
+
+<p>Note that if a <code>mousedown</code> event or a <code>mouseup</code> event is consumed by a web application (before a focused editor handles it), this notification is not sent to <code>widget</code>. This means that web applications can handle mouse button events before IME.</p>
+
+<h2 id="Requests_to_IME">Requests to IME</h2>
+
+<p>XP part of Gecko can request IME to commit or cancel composition. This must be requested via <code>IMEStateManager::NotifyIME()</code>. Then, <code>IMEStateManager</code> looks for a proper <code>TextComposition</code> instance. If it's found, <code>TextComposition::RequestToCommit()</code> for calling nsIWidget::NotifyIME() and handles some extra jobs.</p>
+
+<p><code>widget</code> should call the proper native API if it's available. Even if commit or canceling composition does not occur synchronously, <code>widget</code> doesn't need to emulate it since <code>TextComposition</code> will emulate it automatically. In other words, <code>widget</code> should only request to commit or cancel composition to IME.</p>
+
+<h3 id="REQUEST_TO_COMMIT_COMPOSITION"><code>REQUEST_TO_COMMIT_COMPOSITION</code></h3>
+
+<p>A request to commit current composition to IME. See also following "Forcibly committing composition" section for additional information.</p>
+
+<h3 id="REQUEST_TO_CANCEL_COMPOSITION"><code>REQUEST_TO_CANCEL_COMPOSITION</code></h3>
+
+<p>A request to cancel current composition to IME. In other words, a request to commit current composition with an empty string.</p>
+
+<h2 id="Forcibly_committing_composition">Forcibly committing composition</h2>
+
+<p>When <code>TextComposition::RequestToCommit()</code> calls <code>nsIWidget::NotifyIME()</code>, it guarantees synchronous commit or canceling composition.</p>
+
+<p>In order to put it into practice, we need to handle the following four scenarios:</p>
+
+<h3 id="The_composition_is_committed_with_non-empty_string_synchronously">The composition is committed with non-empty string synchronously</h3>
+
+<p>This is the most usual case. In this case, <code>TextComposition</code> handles <code>WidgetCompositionEvent</code> instances during a request normally. However, in a remote process in e10s mode, this case never occurs since requests to native IME is handled asynchronously.</p>
+
+<h3 id="The_composition_is_not_committed_synchronously_but_later">The composition is not committed synchronously but later</h3>
+
+<p>This is the only case in a remote process in e10s mode or occurs on Linux even in non-e10s mode if the native IME is iBus. The callers of <code>NotifyIME(REQUEST_TOCOMMIT_COMPOSITION)</code> may expect that composition string is committed immediately for their next job. For such a case, <code>TextComposition::RequestToCommit()</code> synthesizes DOM <code>composition</code> events and a DOM <code>text</code> event for emulating to commit composition synchronously. Additionally, <code>TextComposition</code> ignores comming events which are dispatched by widget when the widget receives native IME events.</p>
+
+<p>In this case, using the last composition string as commit string.</p>
+
+<p>However, if the last composition string is only an ideographic space (fullwidth space), the composition string may be a placeholder of some old Chinese IME on Windows.</p>
+
+<p><img alt="Screenshot of ChangJie (Traditional Chinese IME) which puts an ideographic space into composition string for placeholder" src="https://mdn.mozillademos.org/files/8713/ChangJie.png" style="height: 48px; width: 527px;"></p>
+
+<p>In this case, although, we should not commit the placeholder character because it's not a character which the user wanted to input but we commit it as is. The reason is, inputting an ideographic space causes a composition. Therefore, we cannot distinguish if committing composition is unexpected. If the user uses such old Chinese IME, <code>"intl.ime.remove_placeholder_character_at_commit"</code> pref may be useful but we don't support them anymore in default settings (except if somebody will find a good way to fix this issue).</p>
+
+<h3 id="The_composition_is_committed_synchronously_but_with_empty_string">The composition is committed synchronously but with empty string</h3>
+
+<p>This case may occur on Linux or with some IME on other platforms. If a web application implements autocomplete, committing with different strings especially an empty string it might cause confusion.</p>
+
+<p>In this case, <code>TextComposition</code> overwrites the commit string of <code>eCompositionChange</code> event dispatched by widget. However, if the last composition string is only an ideographic space, it shouldn't be committed. See the previous case</p>
+
+<p>Note that this case doesn't work as expected when composition is in a remote process in e10s mode.</p>
+
+<h3 id="The_composition_is_not_committed">The composition is not committed</h3>
+
+<p>On Linux, there is no API to request commit or canceling composition forcibly. Instead, Gecko uses <code>gtk_im_context_reset()</code> API for this purpose because most IME cancel composition with it. But there are some IMEs which do nothing when Gecko calls it.</p>
+
+<p>If this occurs, Gecko should restart composition with a DOM <code>compositionstart</code> event , a DOM <code>compositionupdate</code> event and a DOM <code>text</code> event at caret position.</p>
+
+<div class="note">
+<p>This issue hasn't been supported yet.</p>
+</div>
+
+<h2 id="IME_state_management">IME state management</h2>
+
+<p>IME is a text input system. It means that except when a user wants to input some text, IME shouldn't be avaliable. For example, pressing the space key to attempt scrolling a page may be consumed and prevented by IME. Additionally, password editors need to request special behavior with IME.</p>
+
+<p>For solving this issue, Gecko sets the proper IME state at DOM focus change.</p>
+
+<p>First, when a DOM node gets focus, <code>nsFocusManager</code> notifies <code>IMEStateManager</code> of the new focused node (calls <code>IMEStateManager::OnChangeFocus()</code>). <code>IMEStateManager</code> asks desired IME state by calling <code>nsIContent::GetDesiredIMEState()</code> of the node. If the node owns <code>nsEditor</code> instance, it asks for the desired IME state from the editor and returns the result.</p>
+
+<p>Next, <code>IMEStateManager</code> initializes <code>InputContext</code> (defined in <a href="http://dxr.mozilla.org/mozilla-central/source/widget/IMEData.h"><code>IMEData.h</code></a>) with the desired IME state and node information. Then, it calls <code>nsIWidget::SetInputContext()</code> with the <code>InputContext</code>.</p>
+
+<p>Finally, <code>widget</code> stores the <code>InputContext</code> and enables or disables IME if the platform has such an API.</p>
+
+<h3 id="InputContext"><code>InputContext</code></h3>
+
+<p><code>InputContext</code> is a struct. Its <code>mIMEState</code>, <code>mHTMLInputType</code>, <code>mHTMLInputInputMode</code> and <code>mActionHint</code> are set at <code>nsIWidget::SetInputContext()</code> called.</p>
+
+<h4 id="mIMEState"><code>mIMEState</code></h4>
+
+<p>IME state has two abilities. One is enabled state:</p>
+
+<h5 id="ENABLED"><code>ENABLED</code></h5>
+
+<p>This means IME is fully available. E.g., when an editable element such as <code>&lt;input type="text"&gt;</code>, <code>&lt;textarea&gt;</code> or <code>&lt;foo contentediable&gt;</code> has focus.</p>
+
+<h5 id="DISABLED"><code>DISABLED</code></h5>
+
+<p>This means IME is not available. E.g., when a non-editable element has focus or no element has focus, the desired IME state is <code>DISABLED</code>.</p>
+
+<h5 id="PASSWORD"><code>PASSWORD</code></h5>
+
+<p>This means IME state should be the same as the state when a native password field has focus. This state is set only when <code>&lt;input type="password"&gt;</code> (<code><a href="/en-US/docs/Web/CSS/ime-mode">ime-mode</a>: auto;</code>), <code>&lt;input type="text" style="ime-mode: disabled;"&gt;</code> or <code>&lt;textarea style="ime-mode: disabled;"&gt;</code>.</p>
+
+<h5 id="PLUGIN"><code>PLUGIN</code></h5>
+
+<p>This is set only when a windowless plugin has focus.</p>
+
+<div class="note">
+<p>Be careful, even if a password field has focus, <code>mIMEState</code> may be <code>ENABLED</code>. When you need to check if a password field has focus for security reasons, you should use <code>InputContext::IsPasswordEditor()</code>.</p>
+</div>
+
+<p>The other is IME open state:</p>
+
+<h5 id="DONT_CHANGE_OPEN_STATE"><code>DONT_CHANGE_OPEN_STATE</code></h5>
+
+<p>The open state of IME shouldn't be changed. I.e., Gecko should keep the last IME open state.</p>
+
+<h5 id="OPEN"><code>OPEN</code></h5>
+
+<p>Open IME. This is specified only when ime-mode of the new focused element is <code>active</code>.</p>
+
+<h5 id="CLOSE"><code>CLOSE</code></h5>
+
+<p>Close IME. This is specified only when ime-mode of the new focused element is <code>inactive</code>.</p>
+
+<div class="note">
+<p>E.g., on Linux, applications cannot manage IME open state. On such platforms, this is ignored.</p>
+</div>
+
+<div class="note">
+<p>IME open state should be changed only when <code>nsIWidget::SetInputContext()</code> is called at DOM focus change because changing IME open state while an editor has focus makes users confused. The reason why <code>nsIWidget::SetInputContext()</code> is called is stored in <code>InputContextAction::mCause</code>.</p>
+</div>
+
+<h5 id="How_does_Gecko_disable_IME_in_IMM_mode_on_Windows">How does Gecko disable IME in IMM mode on Windows</h5>
+
+<p>Every window on Windows is associated an <code>IMContext</code>. When Gecko disables IME, <a href="http://dxr.mozilla.org/mozilla-central/source/widget/windows/WinIMEHandler.cpp">mozilla::widget::IMEHandler</a>::SetInputContext() disasociates the context from the window.</p>
+
+<h5 id="How_does_Gecko_disable_IME_in_TSF_mode_on_Windows">How does Gecko disable IME in TSF mode on Windows</h5>
+
+<p><a href="http://dxr.mozilla.org/mozilla-central/source/widget/windows/TSFTextStore.cpp"><code>mozilla::widget::TSFTextStore</code></a> sets focus to a dummy context which disables the keyboard.</p>
+
+<h5 id="How_does_Gecko_disable_IME_on_Mac">How does Gecko disable IME on Mac</h5>
+
+<p><code><a href="http://dxr.mozilla.org/mozilla-central/source/widget/cocoa/TextInputHandler.mm">mozilla::widget::TextInputHandler</a>::HandleKeyDownEvent()</code> doesn't call focused view's <code>interpretKeyEvents</code>. This prevents native key events to be passed to IME.</p>
+
+<h5 id="How_does_Gecko_disable_IME_on_GTK">How does Gecko disable IME on GTK</h5>
+
+<p><a href="https://dxr.mozilla.org/mozilla-central/source/widget/gtk/IMContextWrapper.cpp">mozilla::widget::IMContextWrapper</a> sets focus to a dummy context which doesn't have IME composition.</p>
+
+<h5 id="How_does_Gecko_disable_IME_on_Android">How does Gecko disable IME on Android</h5>
+
+<dl>
+ <dt>?</dt>
+</dl>
+
+<h4 id="mHTMLInputType"><code>mHTMLInputType</code></h4>
+
+<p>The value is a string representing the focused editor.</p>
+
+<dl>
+ <dt><code>"text"</code>, <code>"password"</code>, <code>"number"</code>, etc.</dt>
+ <dd>When an <code>&lt;input&gt;</code> element gets focus, the value is the type of the input element.</dd>
+ <dt>"textarea"</dt>
+ <dd>When a <code>&lt;textarea&gt;</code> element gets focus, the value is <code>"textarea"</code>.</dd>
+ <dt>""</dt>
+ <dd>When an HTML editor (an element whose <code>contenteditable</code> attribute is <code>"true"</code> or document whose <code>designMode</code> is <code>"on"</code>) gets focus, the value is empty. And also, when the other elements get focus.</dd>
+</dl>
+
+<h4 id="mHTMLInputInputMode"><code>mHTMLInputInputMode</code></h4>
+
+<p>The value is <code>inputmode</code> attribute value of the focused editor. This is set only when <code>"dom.forms.inputmode"</code> pref is true.</p>
+
+<h4 id="mActionHint"><code>mActionHint</code></h4>
+
+<p>The value is <code>mozactionhint</code> attribute value of the focused editor. This is useful for deciding the caption for the submit button in virtual keyboard. E.g., the value could be <code>"Go"</code>, <code>"Next"</code> or <code>"Search"</code>.</p>
+
+<h2 id="Native_IME_handlers">Native IME handlers</h2>
+
+<p>Following classes handles IME on each platform:</p>
+
+<h3 id="Windows">Windows</h3>
+
+<h4 id="mozillawidgetIMEHandler"><code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/windows/WinIMEHandler.cpp">mozilla::widget::IMEHandler</a></code></h4>
+
+<p>This class manages input mehtod context of each window and makes <code>IMMHandler</code> or <code>TSFTextStore</code> work with active IME and focused editor or windowless plugin. This class has only static members, i.e., never created its instance.</p>
+
+<h4 id="mozillawidgetIMMHandler"><a href="http://dxr.mozilla.org/mozilla-central/source/widget/windows/IMMHandler.cpp"><code>mozilla::widget::IMMHandler</code></a></h4>
+
+<p>This class is used when TSF mode is disabled by pref (<code>"intl.tsf.enable"</code>), focused content is a windowless plugin or active IME is for IMM (i.e., not TIP for TSF).</p>
+
+<p>This class handles <code>WM_IME_*</code>  messages and uses <code>Imm*()</code> API. This is a singleton class since Gecko supports only on IM context in a process. Typically, a process creates windows with default IM context. Therefore, this design is enough (ideally, an instance should be created per IM context, though). The singleton instance is created when it becomes necessary. So, if user doesn't meet a windowless plugin nor use IME on it, this instance is never created.</p>
+
+<h4 id="mozillawidgetTSFTextStore"><a href="http://dxr.mozilla.org/mozilla-central/source/widget/windows/TSFTextStore.cpp"><code>mozilla::widget::TSFTextStore</code></a></h4>
+
+<p>This class handles IME events in TSF mode and when TIP (IME implemented with TSF) is active. This instances are created when an editable element gets focus and released when it loses focus.</p>
+
+<p>TSFTextStore implements some COM interfaces which is necessary to work with TIP. And similarly, there is a singleton class, TSFStaticSink, to observe active TIP changes.</p>
+
+<p>TSF is the most complicated IME API on all platforms, therefore, design of this class is also very complicated.</p>
+
+<p>FIrst, TSF/TIP requests to lock the editor content for querying or modifying the content or selection. However, web standards don't have such mechanim. Therefore, when it's requested, TSFTextStore caches current content and selection with <code>WidgetQueryContentEvent</code>. Then, it uses the cache to reply to query requests, and modifies the cache as they requested. At this time, TSFTextStore saves the requests of modification into the queue called <code>PendingAction</code>. Finally, after unlocking the contents, it flushes the pending actions with dispatches <code>WidgetCompositionEvent</code>s via <code>TextEventDispatcher</code>.</p>
+
+<p>Then, <code>IMEContentObserver</code> will notify some changes caused by the dispatched <code>WidgetCompositionEvent</code>s (they are notified synchronously in chrome or non-e10s mode, but asynchronously from a remote process in e10s mode). At this time, <code>TSFTextStore</code> may receive notifications which indicates web application changes the content differently from cache in TSFTextStore. However, <code>TSFTextStore</code> ignores such fact temporarily until the composition is finished completely. The reason is that, notifying unexpected text or selection changes to TSF and/or TIP during composition may behave them odd.</p>
+
+<p>When a composition is committed and it receives <code>NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED</code>, <code>TSFTextStore</code> clears the cache of contents and notifying TSF of merged text changes and the last selection change if they are not caused by composition. By this step, TSF and TIP may sync its internal cache with actual contents.</p>
+
+<p>Note that if new composition is started before <code>NOTIFY_IME_OF_COMPOSITION_EVENT_HANDLED</code> notification, <code>TSFTextStore</code> handles the new composition with cached contents which may be different from actual contents. So, e.g., reconvertion around caret may not work as unexpectd in such case, but we don't have a good solution for this issue.</p>
+
+<p>On the other hand, <code>TSFTextStore</code> cannot cache character rects since if there are a lot of characters, caching the rects require a lot of CPU cost (to compute each rect) and memory. Therefore, <code>TSFTextStore</code> will use insertion point relative query for them {{Bug(1286157)}}. Then, it can retrieve expected character's rect even if the cache of <code>TSFTextStore</code> is different from the actual contents because TIP typically needs caret position's character rect (for a popup to indicate current input mode or next word suggestion list) or first character rect of the target clause of current composition (for a candidate list window of conversion).</p>
+
+<h3 id="Mac">Mac</h3>
+
+<p>Both IME and key events are handled in <a href="http://dxr.mozilla.org/mozilla-central/source/widget/cocoa/TextInputHandler.mm"><code>TextInputHandler.mm</code></a>.</p>
+
+<p><code>mozilla::widget::TextInputHandlerBase</code> is the most base class. <code>mozilla::widget::PluginTextInputHandler</code> inherits <code>TextInputHandlerBase</code> and handles key events and IME events on focused plugin. <code>mozilla::widget::IMEInputHandler</code> inherits <code>TextInputHandlerBase</code> and handles IME related events. <code>mozilla::widget::TextInputHandler</code> inherits <code>TextInputHandlerBase</code> and implements <code>NSTextInput</code> protocol of Cocoa. The instance is created per <a href="http://dxr.mozilla.org/mozilla-central/source/widget/cocoa/nsChildView.mm"><code>nsChildView</code></a> instance.</p>
+
+<h3 id="GTK">GTK</h3>
+
+<p><code><a href="http://dxr.mozilla.org/mozilla-central/source/widget/gtk/IMContextWrapper.cpp">mozilla::widget::IMContextWrapper</a></code> handles IME. The instance is created per top level window.</p>
+
+<h3 id="Android">Android</h3>
+
+<p><code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/android/nsWindow.cpp">nsWindow::GeckoViewSupport</a></code> handles native IME events and just dispatches <code>Widget*Event</code>.</p>
diff --git a/files/ja/mozilla/implementing_pontoon_in_a_mozilla_website/index.html b/files/ja/mozilla/implementing_pontoon_in_a_mozilla_website/index.html
new file mode 100644
index 0000000000..ea0178a4d0
--- /dev/null
+++ b/files/ja/mozilla/implementing_pontoon_in_a_mozilla_website/index.html
@@ -0,0 +1,76 @@
+---
+title: Mozilla プロジェクトでの Pontoon の実装
+slug: Mozilla/Implementing_Pontoon_in_a_Mozilla_website
+tags:
+ - Localization
+translation_of: Mozilla/Implementing_Pontoon_in_a_Mozilla_website
+---
+<p><a class="external external-icon" href="https://pontoon.mozilla.org">Pontoon</a> は、ウェブベースの WYSIWYG (What-You-See-Is-What-You-Get) ローカライゼーション (localization, l10n) ツールです。Mozilla では、現在 Pontoon を使用して、さまざまな Mozilla プロジェクトや、Gaia という名前で知られる Firefox OS アプリのインターフェイスをローカライズしています。Pontoon は非常にシンプルで直感的なツールで、ローカライズする利用者に技術的なスキルをあまり要求しないため、プロジェクトのローカライズ版を短時間で公開することができるようになります。この記事では、Pontoon をあなたの Mozilla プロジェクトに導入する方法について話します。</p>
+
+<div class="note">
+<p><strong>Pontoon の改善に興味がありますか?</strong> ぜひ <a href="https://github.com/mozilla/pontoon">GitHub</a> を訪れてみてください。</p>
+</div>
+
+<div class="note">
+<p><strong>プロジェクトをローカライズするのは初めてですか?</strong> wiki で <a href="https://wiki.mozilla.org/L10n:NewProjects">getting your project localized</a> を読んでみてください。</p>
+</div>
+
+<h2 id="A._プロジェクトをローカライズ可能にする">A. プロジェクトをローカライズ可能にする</h2>
+
+<p>以下のことがらはすでに Mozilla でのプロジェクトのローカライズにおける標準のベストプラクティスだとみなされていますが、リマインダーとしてここでもう一度軽く説明しておくのもいいでしょう。</p>
+
+<ol>
+ <li>少なくとも1つのローカライゼーションフレームワーク (<a class="external external-icon" href="https://www.gnu.org/software/gettext/">gettext</a>, <a class="external external-icon" href="https://docs.oasis-open.org/xliff/xliff-core/v2.0/xliff-core-v2.0.html">XLIFF</a>, <a class="external external-icon" href="https://projectfluent.org/">L20n</a>, <a class="external external-icon" href="https://github.com/mozilla-l10n/langchecker/wiki/.lang-files-format">lang</a>, <a class="external external-icon" href="https://wikipedia.org/wiki/.properties">properties</a> など) に対応させる。</li>
+ <li>ローカライズ可能な文字列をリソースファイルとして抽出する。</li>
+ <li>リソースファイルをリポジトリ (SVN, HG, Git) にプッシュする。
+ <ul>
+ <li>個別のロケールフォルダはディレクトリツリーの同じレベルになるように配置する。ソースとなるロケールは <code>templates</code>、<code>en</code>、<code>en-US</code> のいずれかの名前にする。ロケール専用の <code>locales</code> フォルダーを作成するといいかもしれません。ロケールコードはファイル名に含まれないようにする。</li>
+ <li>正しいパターン:
+ <pre>/locales/{locale_code}/path/to/file.extension</pre>
+ </li>
+ <li>正しくないパターン:
+ <pre>/locales/{locale_code}/path/to/file.{locale_code}.extension</pre>
+ </li>
+ </ul>
+ </li>
+ <li>Pontoon にリポジトリへの書き込み権限を与える。
+ <ul>
+ <li>GitHub を使用する場合、<a class="external external-icon" href="https://github.com/mozilla-pontoon">mozilla-pontoon</a> または <a href="https://github.com/orgs/mozilla/teams/pontoon-l10n-robots">pontoon-l10n-robots</a> をプロジェクトのコラボレーターとして追加すれば大丈夫です。</li>
+ </ul>
+ </li>
+</ol>
+
+<h2 id="B._オプション_ウェブプロジェクトでページ内ローカライゼーションを有効にする">B. (オプション) ウェブプロジェクトでページ内ローカライゼーションを有効にする</h2>
+
+<ol>
+ <li>HTML の <code>&lt;body&gt;</code> 要素内でスクリプトへのリンクを貼ります。これにより Pontoon がサイトとお話したり、コンテンツを編集したり、その場でローカライズできるようになります。そのために必要なのは、ページ内ローカライゼーションを利用する環境 (たとえば、ステージングサーバー上) で、次のコードを追加することだけです。
+
+ <ul>
+ <li>
+ <pre id="line1"><span> </span><span>&lt;<span class="start-tag">script</span> <span class="attribute-name">src</span>="<a class="attribute-value">https://pontoon.mozilla.org/pontoon.js</a>"</span><span>&gt;&lt;/<span class="end-tag">script</span>&gt;</span></pre>
+ </li>
+ </ul>
+ </li>
+ <li>もしサイトが <a href="/ja/docs/Web/HTTP/CSP">CSP</a> を使用している場合、<code>pontoon.mozilla.org</code> ドメインに対して、次の操作が許可されるようにしてください。
+ <ol>
+ <li>内部での iframe の読み込み</li>
+ <li>リモートの CSS の読み込み</li>
+ <li>リモートの画像の読み込み</li>
+ </ol>
+ </li>
+ <li>もしサイトが <a href="/ja/docs/Web/HTTP/X-Frame-Options">X-Frame-Options</a> ヘッダを使用している場合、<code>pontoon.mozilla.org</code> ドメインに対して iframe の内部での読み込みが許可されるようにしてください。</li>
+ <li>サイトを HTTPS に対応させてください。フリーで自動化できるオープンなサービス、<a href="https://letsencrypt.org/">Let's encrypt</a>! を使いましょう!</li>
+</ol>
+
+<h2 id="C._プロジェクトを_Pontoon_に追加する">C. プロジェクトを Pontoon に追加する</h2>
+
+<p>これで、プロジェクトを Pontoon に追加する準備ができました。<a class="external external-icon" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Localization%20Infrastructure%20and%20Tools&amp;component=Administration%20%2F%20Setup">Localization Infrastructure and Tools :: Administration / Setup</a> にバグ報告としてファイルを作り、以下の情報を知らせてください。</p>
+
+<ul>
+ <li>Project name (プロジェクト名)</li>
+ <li>Repository URL (リポジトリの URL)</li>
+ <li>List of requested locales (リクエストするロケールのリスト)</li>
+ <li>Website URL, including all subpage URLs (only if using in-page localization) (すべてのサブページの URL を含む、ウェブサイトの URL (ページ内ローカライゼーションを利用する場合のみ))</li>
+</ul>
+
+<p>さらに詳しい情報については、<a class="external external-icon" href="mailto:pontoon-team@mozilla.com">Project Management Team</a> に相談してください。</p>
diff --git a/files/ja/mozilla/index.html b/files/ja/mozilla/index.html
new file mode 100644
index 0000000000..69231be11e
--- /dev/null
+++ b/files/ja/mozilla/index.html
@@ -0,0 +1,13 @@
+---
+title: Mozilla
+slug: Mozilla
+tags:
+ - Apps
+ - Landing
+ - Mozilla
+ - アドオン
+translation_of: Mozilla
+---
+<p>以下の記事は、Mozilla のコードをダウンロードしたりビルドしたりすることについてのコンテンツが含まれています。それに加え、コードがどのように動作するかや、Mozilla のアプリケーションやそれに類するアプリケーション向けのアドオンをビルドする方法について手助けとなる記事もあるでしょう。</p>
+
+<p>{{LandingPageListSubpages}}</p>
diff --git a/files/ja/mozilla/javascript_code_modules/components.utils.unload/index.html b/files/ja/mozilla/javascript_code_modules/components.utils.unload/index.html
new file mode 100644
index 0000000000..cea96fd101
--- /dev/null
+++ b/files/ja/mozilla/javascript_code_modules/components.utils.unload/index.html
@@ -0,0 +1,43 @@
+---
+title: Components.utils.unload
+slug: Mozilla/JavaScript_code_modules/Components.utils.unload
+tags:
+ - Modules
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.unload
+---
+<p>{{ Gecko_minversion_header("7.0") }}</p>
+
+<p><code><a href="/ja/docs/Components.utils">Components.utils</a>.unload</code> は<a href="/ja/Firefox_7_for_developers" title="ja/Firefox_7_for_developers">Firefox 7</a> で導入され、 <a href="/ja/JavaScript_code_modules" title="ja/JavaScript code modules">JavaScript コードモジュール</a>をアンロードするために使用されています。これは特に<a href="/ja/Extensions/Bootstrapped_extensions" title="ja/Extensions/Bootstrapped_extensions">再起動不要な(ブートストラップ型)拡張機能</a>において、新しいバージョンの拡張機能をインストールするときに古いバージョンのコードモジュールをアンロードしたいときに便利です。</p>
+
+<p>このメソッドが呼び出されると、モジュールへの参照は引き続き機能しますが、それ以降にモジュールがインポートされるとリロードして新しい参照を与えます。 JavaScript コードモジュールがまだインポートされていない場合、このメソッドは何も行いません。</p>
+
+<p>アプリケーションの一部であるモジュール(<code><a class="external" rel="freelink">resource://gre/</a></code> や <code>resource:///</code> や <code><a class="external" rel="freelink">resource://app/</a></code>)は、他の拡張機能やアプリケーションによって利用されている可能性があるので、アンロードするべきではありません。拡張機能の一部としてインクルードしたモジュールのみをアンロードしてください。</p>
+
+<h3 id="Syntax" name="Syntax">構文</h3>
+
+<pre>Components.utils.unload( <em>url</em> );
+</pre>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>url</code></dt>
+ <dd>アンロードするスクリプトの "resource://" で始まる URL です。スクリプトをロードするために使用したものと同じ URL である必要があります。</dd>
+</dl>
+
+<h3 id="Example" name="Example">例</h3>
+
+<p>以下の1行のコードで、 MyModule.jsm と呼ばれるモジュールをアンロードできます。</p>
+
+<pre class="eval">Components.utils.unload("<span class="nowiki">resource://myaddon/modules/MyModule.jsm</span>");
+</pre>
+
+<div class="note"><strong>注:</strong> 現在、 Components.utils.unload clears はアンロードするモジュールのグローバルオブジェクトをクリアします。これによってアンロードにそれらへの参照を使用すると、モジュールが誤動作する可能性があります。 {{ bug("769253") }} を参照してください。</div>
+
+<h3 id="See_also" name="See_also">関連情報</h3>
+
+<ul>
+ <li>{{ bug("481603") }}</li>
+ <li>{{ Source("js/xpconnect/idl/xpccomponents.idl", "xpccomponents.idl") }} のドキュメント</li>
+ <li>{{ Source("js/xpconnect/tests/unit/") }} のテスト</li>
+</ul>
diff --git a/files/ja/mozilla/javascript_code_modules/ctypes.jsm/index.html b/files/ja/mozilla/javascript_code_modules/ctypes.jsm/index.html
new file mode 100644
index 0000000000..a1a61b823b
--- /dev/null
+++ b/files/ja/mozilla/javascript_code_modules/ctypes.jsm/index.html
@@ -0,0 +1,199 @@
+---
+title: ctypes.jsm
+slug: Mozilla/JavaScript_code_modules/ctypes.jsm
+tags:
+ - 要更新
+---
+<div>{{gecko_minversion_header("2.0")}}</div>
+<div class="note">
+ <strong>註:</strong> <code>ctypes.jsm</code> コードモジュールは機能性の強化のために API 改訂中です。よってこの文書はそれが完了した際に改訂されるでしょう。</div>
+<p><code>ctypes.jsm</code> JavaScript コードモジュールは、自前のバイナリ XPCOM コンポーネントを書くことなく JavaScript コードから C 互換な外部ライブラリ関数の呼び出しを可能にします。</p>
+<div class="note">
+ <strong>註:</strong> <code>ctypes.jsm</code> JavaScript コードモジュールは chrome ――つまり、アプリケーション自身またはアドオンの内部からだけ利用することができます。</div>
+<p>ctypes を利用するにはまず、 JavaScript スコープの中にコードモジュールをインポートする必要があります:</p>
+<pre><span class="nowiki">Components.utils.import("resource://gre/modules/ctypes.jsm")</span></pre>
+<p>一度モジュールをインポートしたら、あとは外部ライブラリを読み込むために利用することができます。</p>
+<h2 id=".E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA.E3.82.92.E9.96.8B.E3.81.8F" name=".E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA.E3.82.92.E9.96.8B.E3.81.8F">ライブラリを開く</h2>
+<p>外部ライブラリを利用する前に、開く必要があります。これは <code>ctypes.open()</code> 関数を用いて行います。</p>
+<pre>var lib = ctypes.open(name);
+</pre>
+<p>ライブラリ <code>name</code> はパス名の文字列、または {{interface("nsILocalFile")}} オブジェクトのどちらかで指定できます。</p>
+<p>ライブラリが無事に読み込まれると、<code>ctypes.open()</code> は節「<a href="/ja/docs/JavaScript_code_modules/ctypes.jsm#.e3.83.a9.e3.82.a4.e3.83.96.e3.83.a9.e3.83.aa.e3.82.aa.e3.83.96.e3.82.b8.e3.82.a7.e3.82.af.e3.83.88.e3.81.ae.e5.88.a9.e7.94.a8">ライブラリオブジェクトの利用</a>」で説明されるライブラリオブジェクトを返します。ライブラリの読み込みに失敗すると、 <code>null</code> を返します。</p>
+<h2 id=".E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E5.88.A9.E7.94.A8" name=".E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AE.E5.88.A9.E7.94.A8">ライブラリオブジェクトの利用</h2>
+<p>一度ライブラリが開かれたら、<code>アクセスしたい</code><code>あらゆる関数</code><code>を</code>ライブラリオブジェクトの <code>declare() メソッドを呼び出すことで</code><code>宣言する必要があります。</code></p>
+<pre>var func = lib.declare(name, abi, returnType, argType1, ...)
+</pre>
+<dl>
+ <dt>name</dt>
+ <dd>宣言する関数の名前。これは開いたライブラリの中で妥当なシンボルでなければならない。</dd>
+ <dt>abi</dt>
+ <dd>利用する呼び出しの取り決め。通常これは <code>ctypes.default_abi</code> になるが、関数が Win32 API の場合は <code>ctypes.stdcall_abi</code> を利用する必要がある。</dd>
+ <dt>returnType</dt>
+ <dd>関数が返す型。これは<a href="/ja/docs/JavaScript_code_modules/ctypes.jsm#.e5.9e.8b.e5.ae.9a.e6.95.b0">型定数</a>の一つでなければならない。</dd>
+ <dt>argType1...</dt>
+ <dd>入力引数型の 0 個以上のリスト。これらは<a href="/ja/docs/JavaScript_code_modules/ctypes.jsm#.e5.9e.8b.e5.ae.9a.e6.95.b0">型定数</a>から選ばれなければならない。</dd>
+</dl>
+<p>一度ライブラリから関数が宣言されたら、ほかの関数と同様に呼び出すことができます。</p>
+<p>ライブラリの利用を終えたら、その <code>close()</code> メソッドを呼んで閉じる必要があります:</p>
+<pre>lib.close();
+</pre>
+<h2 id=".E5.9E.8B.E5.AE.9A.E6.95.B0" name=".E5.9E.8B.E5.AE.9A.E6.95.B0">型定数</h2>
+<p>次の定数は ctypes で対応しているデータ型を定義しています。</p>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">定数</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>ctypes.void_t</code></td>
+ <td>返り型でのみ可能。なにも返さないことを示す。</td>
+ </tr>
+ <tr>
+ <td>ctypes.bool</td>
+ <td>8 ビット真偽値</td>
+ </tr>
+ <tr>
+ <td>ctypes.int8_t</td>
+ <td>8 ビット符号付き整数</td>
+ </tr>
+ <tr>
+ <td>ctypes.int16_t</td>
+ <td>16 ビット符号付き整数</td>
+ </tr>
+ <tr>
+ <td>ctypes.int32_t</td>
+ <td>32 ビット符号付き整数</td>
+ </tr>
+ <tr>
+ <td>ctypes.int64_t</td>
+ <td>64 ビット符号付き整数</td>
+ </tr>
+ <tr>
+ <td>ctypes.uint8_t</td>
+ <td>8 ビット符号なし整数</td>
+ </tr>
+ <tr>
+ <td>ctypes.uint16_t</td>
+ <td>16 ビット符号なし整数</td>
+ </tr>
+ <tr>
+ <td>ctypes.uint32_t</td>
+ <td>32 ビット符号なし整数</td>
+ </tr>
+ <tr>
+ <td>ctypes.uint64_t</td>
+ <td>64 ビット符号なし整数</td>
+ </tr>
+ <tr>
+ <td>ctypes.float</td>
+ <td>浮動小数点数</td>
+ </tr>
+ <tr>
+ <td>ctypes.double</td>
+ <td>倍精度浮動小数点数</td>
+ </tr>
+ <tr>
+ <td>ctypes.string</td>
+ <td>C 文字列 (<code>char *</code>)</td>
+ </tr>
+ <tr>
+ <td>ctypes.ustring</td>
+ <td>16 ビット C 文字列 (<code>char16_t *</code>)</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E4.BE.8B.3A_Windows_.E3.83.AB.E3.83.BC.E3.83.81.E3.83.B3.E3.81.AE.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.99" name=".E4.BE.8B.3A_Windows_.E3.83.AB.E3.83.BC.E3.83.81.E3.83.B3.E3.81.AE.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.99">例: Windows ルーチンの呼び出す</h2>
+<p>この例は Win32 API を呼び出すために ctypes を利用する方法を説明します。</p>
+<pre class="brush: js">Components.utils.import("resource://gre/modules/ctypes.jsm");
+
+var lib = ctypes.open("C:\\WINDOWS\\system32\\user32.dll");
+
+/* Declare the signature of the function we are going to call */
+var msgBox = lib.declare("MessageBoxW",
+ ctypes.stdcall_abi,
+ ctypes.int32_t,
+ ctypes.int32_t,
+ ctypes.ustring,
+ ctypes.ustring,
+ ctypes.int32_t);
+var MB_OK = 3;
+
+var ret = msgBox(0, "Hello world", "title", MB_OK);
+
+lib.close();</pre>
+<p>3行目で、<code>user32.dll</code> システムライブラリが読み込まれています。6 行目は Windows 関数 <a href="http://msdn.microsoft.com/ja-jp/library/ms645505%28VS.85%29.aspx"><code>MessageBoxW</code></a> を呼び出すメソッドとなる <code>msgBox()</code> を宣言しています。15 行目は <code>msgBox()</code> ルーチンを呼び、警告を表示します。</p>
+<p>利用を終えたら私たちが最後に行うのは、ライブラリを閉じるために <code>lib.close()</code> を呼び出すことです。</p>
+<p>パスすべてを定義するのではなく、単にファイル名を与えることもできます。</p>
+<pre>var lib = ctypes.open("user32.dll");
+</pre>
+<p>あるいは拡張子抜きで。</p>
+<pre>var lib = ctypes.open("user32");
+</pre>
+<p>フルパスが与えられなかった場合、Windows は DLL 探すために次の検索順を利用します:</p>
+<ol>
+ <li>アプリケーションが読み込まれたディレクトリ。</li>
+ <li>システムディレクトリ。</li>
+ <li>16 ビットシステムディレクトリ。</li>
+ <li>Windows ディレクトリ。</li>
+ <li>現在のディレクトリ。</li>
+ <li><code>PATH</code> 環境変数に載っているディレクトリ。</li>
+</ol>
+<p>(<a href="http://msdn.microsoft.com/ja-JP/library/ms682586%28VS.85%29.aspx">http://msdn.microsoft.com/ja-jp/library/ms682586%28VS.85%29.aspx</a> より)</p>
+<h2 id=".E4.BE.8B.3A_Mac_OS_X_.E3.81.A7_Carbon_.E3.83.AB.E3.83.BC.E3.83.81.E3.83.B3.E3.81.AE.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.99" name=".E4.BE.8B.3A_Mac_OS_X_.E3.81.A7_Carbon_.E3.83.AB.E3.83.BC.E3.83.81.E3.83.B3.E3.81.AE.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.99">例: Mac OS X で Carbon ルーチンの呼び出す</h2>
+<p>この例は Mac OS X で Carbon 関数を呼び出すために ctypes を利用する方法を説明します。</p>
+<pre class="brush: js">/* build a Str255 ("Pascal style") string from the passed-in string */
+
+function makeStr(str) {
+ return String.fromCharCode(str.length) + str;
+}
+
+Components.utils.import("resource://gre/modules/ctypes.jsm");
+
+var carbon = ctypes.open("/System/Library/Frameworks/Carbon.framework/Carbon");
+
+stdAlert = carbon.declare("StandardAlert", /* function name */
+ ctypes.default_abi, /* ABI type */
+ ctypes.int16_t, /* return type */
+ ctypes.int16_t, /* alert type */
+ ctypes.string, /* primary text */
+ ctypes.string, /* secondary text */
+ ctypes.uint32_t, /* alert param */
+ ctypes.int16_t); /* item hit */
+
+var hit = 0;
+var msgErr = makeStr("Carbon Says...");
+var msgExp = makeStr("We just called the StandardAlert Carbon function from JavaScript!");
+
+var err = stdAlert(1, msgErr, msgExp, 0, hit);
+
+carbon.close();
+</pre>
+<p>The <code>makeStr()</code> 関数は入力として標準の JavaScript 文字列を取り、バイト長の後に文字列そのものの文字が続く Carbon 形式の「Pascal」文字列を返すユーティリティルーチンです。これは文字列が実際に 256 文字以下の場合にだけ正しく動作することを忘れないでください。 長い場合は見事に失敗します。</p>
+<p>9 行目で、システムの Carbon フレームワークから Carbon ライブラリが読み込まれています。</p>
+<p>11 行目は Carbon の <code>StandardAlert</code> ルーチンを呼び出す、<code>stdAlert()</code> 関数を宣言しています。既定の ABI を利用し、 16 ビット整数 (Carbon の <code>OSErr</code> 値) を返し、そして整数(警告タイプ)と 2 つの文字列、私たちは利用しないパラメータブロックへのポインタ、ヒットした項目を返すために用いるもう 1 つの整数を受け入れます。詳しくは <a href="http://developer.apple.com/legacy/mac/library/documentation/Carbon/Reference/Dialog_Manager/Reference/reference.html#//apple_ref/c/func/StandardAlert"><code>StandardAlert</code></a> に関する Apple の文書を参照してください。</p>
+<p>その後、私たちは必要な Str255 文字列を 2 つ生成するために <code>makeStr() を用いて単にパラメータを構成し、<code>stdAlert()</code> を呼び出すと、次の警告ウィンドウが作り出されます:</code></p>
+<p><img alt="ctype-mac-dialog.png" class="internal default" src="/@api/deki/files/3842/=ctype-mac-dialog.png"></p>
+<p>利用を終えたら私たちが最後に行うのは、ライブラリを閉じるために <code>carbon.close()</code> を呼び出すことです。</p>
+<h2 id=".E4.BE.8B.3A_Linux_.E3.81.A7_LibC_.E3.83.AB.E3.83.BC.E3.83.81.E3.83.B3.E3.81.AE.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.99" name=".E4.BE.8B.3A_Linux_.E3.81.A7_LibC_.E3.83.AB.E3.83.BC.E3.83.81.E3.83.B3.E3.81.AE.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.99">例: Linux で LibC ルーチンの呼び出す</h2>
+<p>この例は Linux で libc 関数を呼び出すために ctypes を利用する方法を説明します。</p>
+<pre class="brush: js">/* import js-ctypes */
+Components.utils.import("resource://gre/modules/ctypes.jsm");
+
+/* open a library */
+var libc = ctypes.open("libc.so.6");
+
+/* import a function */
+var puts = libc.declare("puts", /* function name */
+ ctypes.default_abi, /* call ABI */
+ ctypes.int32_t, /* return type */
+ ctypes.string /* argument type */
+);
+var ret = puts("Hello World from js-ctypes!");
+</pre>
+<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2>
+<ul>
+ <li><a href="/ja/docs/JavaScript_code_modules/Using">Using JavaScript code modules</a></li>
+ <li><a href="/ja/docs/JavaScript_code_modules">JavaScript code modules</a></li>
+ <li><a href="/ja/docs/Components.utils.import"><code>Components.utils.import</code></a></li>
+</ul>
diff --git a/files/ja/mozilla/javascript_code_modules/deferredtask.jsm/index.html b/files/ja/mozilla/javascript_code_modules/deferredtask.jsm/index.html
new file mode 100644
index 0000000000..91a3dad875
--- /dev/null
+++ b/files/ja/mozilla/javascript_code_modules/deferredtask.jsm/index.html
@@ -0,0 +1,153 @@
+---
+title: DeferredTask.jsm
+slug: Mozilla/JavaScript_code_modules/DeferredTask.jsm
+tags:
+ - JavaScript
+ - Modules
+translation_of: Mozilla/JavaScript_code_modules/DeferredTask.jsm
+---
+<p>{{ gecko_minversion_header("18.0") }}</p>
+<p>{{ Fx_minversion_note("28.0", "Firefox 28 でインターフェースの変更があり、古いメソッドは削除されました。") }}</p>
+<p><code>{{ Source("toolkit/modules/DeferredTask.jsm", "DeferredTask.jsm") }}</code> JavaScript コードモジュールは、遅延後に実行するタスクのためのユーティリティルーチンを提供します。遅延前に実行が試みられる複数の同じタスクは一本化されます。このモジュールを使用するには、先にコードモジュールをあなたの JavaScript スコープにインポートしておく必要があります:</p>
+<pre>Components.utils.import("resource://gre/modules/DeferredTask.jsm");
+</pre>
+<p>このモジュールは、例えば、ファイルにデータを書き込み、そのすぐ後に再びデータを書き込む可能性がある場合に使用できます。<code>DeferredTask</code> でタスクに数ミリ秒間の遅延を起こし、データへの新しい変更をその間に行ってください。</p>
+<ul>
+ <li>データの最終バージョンのみが実際に書き込まれます。</li>
+ <li>他の変更を考慮していくらかの猶予の遅延が追加されます。</li>
+</ul>
+<p>{{ h1_gecko_minversion("DeferredTask コンストラクタ", "18.0") }}</p>
+<p>2 秒間遅らせたい関数呼び出しがある場合、<code>DeferredTask</code> コンストラクタを使用して次のようにしてください:</p>
+<pre>var task = new DeferredTask(myFunction, 2000);
+</pre>
+<p>{{ fx_minversion_inline("28.0") }} 第一引数にはジェネレータ関数を渡す事もできます。</p>
+<h2 id="Method_overview" name="Method_overview">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>bool <a href="#isPending()">isPending</a>();</code> {{ obsolete_inline("28.0") }}</td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#start()">start</a>();</code> {{ obsolete_inline("28.0") }}</td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#flush()">flush</a>();</code> {{ obsolete_inline("28.0") }}</td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#cancel()">cancel</a>();</code> {{ obsolete_inline("28.0") }}</td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#arm()">arm</a>();</code> {{ gecko_minversion_inline("28.0") }}</td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#disarm()">disarm</a>();</code> {{ gecko_minversion_inline("28.0") }}</td>
+ </tr>
+ <tr>
+ <td><code>Promise <a href="#finalize()">finalize</a>();</code> {{ gecko_minversion_inline("28.0") }}</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Attributes" name="Attributes">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>isArmed</code></td>
+ <td><code><a href="/en/boolean" title="en/boolean">boolean</a></code></td>
+ <td>このタスクが開始を要求されているかどうかを表します。この値はタスクが現在実行中であるかどうかとは関係ありません。 {{ gecko_minversion_inline("28.0") }}</td>
+ </tr>
+ <tr>
+ <td><code>isRunning</code></td>
+ <td><code><a href="/en/boolean" title="en/boolean">boolean</a></code></td>
+ <td>このタスクが現在実行中であるかどうかを表します。タスクの関数内からこの値を取得した場合常に true ですが、タスクが非同期のジェネレータ関数の場合、外部のコードから取得しても true です。 {{ gecko_minversion_inline("28.0") }}</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Methods" name="Methods">メソッド</h2>
+<h3 id="isPending()" name="isPending()">isPending</h3>
+<p>{{ obsolete_inline("28.0") }}</p>
+<p>現在のタスク状態を確認します。</p>
+<pre class="eval">bool isPending();
+</pre>
+<h6 id="Return_value" name="Return_value">戻り値</h6>
+<p>未実行の場合は <code>true</code>、そうでない場合は <code>false</code> を返します。</p>
+<h3 id="start()" name="start()">start</h3>
+<p>{{ obsolete_inline("28.0") }}</p>
+<p>タスクを開始 (または延期) します。</p>
+<pre class="eval">void start();
+</pre>
+<h3 id="flush()" name="flush()">flush</h3>
+<p>{{ obsolete_inline("28.0") }}</p>
+<p>延期したタスクをすぐに実行します。</p>
+<pre class="eval">void flush();
+</pre>
+<h3 id="cancel()" name="cancel()">cancel</h3>
+<p>{{ obsolete_inline("28.0") }}</p>
+<p>未実行のタスクをキャンセルします。</p>
+<pre class="eval">void cancel();
+</pre>
+<h3 id="arm()" name="arm()">arm</h3>
+<p>{{ gecko_minversion_inline("28.0") }}</p>
+<p>タスク構築時に指定した遅延の後、タスクを実行する事を要求します。複数回の呼び出しは追加の遅延を引き起こしません。タスクが実行中である場合、現在の実行の終了後から遅延が開始されます。</p>
+<p>タスク構築時に遅延が 0 に指定されていたとしても、タスクは常にイベントループの異なる瞬間に実行されます。イベントループ中の同じ瞬間における複数回の "arm" の呼び出しは、一回のタスクの実行となる事が保証されます。</p>
+<p>設計では、このメソッドは呼び出し側に対し、次の実行がいつ終了するかを検出する手段や結果を取得する手段を提供しません。実際、これを行う事は往々にして重複処理やログ取得となります。タスクの完了時に特殊な処理やエラーログが必要であれば、タスク中で try/catch/finally 節等を用いてタスク自身が行う方が良いでしょう。"finalize" メソッドは一般的にはシャットダウン時に完了を待つ時に使われます。</p>
+<pre class="eval">void arm();
+</pre>
+<h3 id="disarm()" name="disarm()">disarm</h3>
+<p>{{ gecko_minversion_inline("28.0") }}</p>
+<p>このタスクの遅延された実行の要求をキャンセルします。ただし既に実行中のタスクはキャンセルできません。</p>
+<p>このメソッドは現在実行中のタイマーを停止させます。このため、再度 "arm" メソッドを呼び出した場合、遅延はタスク構築時に指定された元の値から開始されます。</p>
+<pre class="eval">void disarm();
+</pre>
+<h3 id="finalize()" name="finalize()">finalize</h3>
+<p>{{ gecko_minversion_inline("28.0") }}</p>
+<p>保留中のタスクを即座に実行し、最後まで実行される事を保証します。これ以降のタイマーの arm は阻止されます。</p>
+<ul>
+ <li>もしタスクが実行中で、タイマーが arm されている場合、現在のタスクの実行が完了した直後、即座にもう一度タスクが実行され、この後に返り値の promise が解決します。</li>
+ <li>もしタスクが実行中で、タイマーが arm されていない場合、返り値の promise は現在の実行が完了した時に解決されます。</li>
+ <li>もしタスクが実行中ではなく、タイマーが arm されている場合、タスクが即座に開始され、返り値の promise はこの新しい実行が完了した時に解決されます。</li>
+ <li>もしタスクが実行中ではなく、タイマーが arm されていない場合、このメソッドは解決済みの promise を返します。</li>
+</ul>
+<pre class="eval">Promise finalize();
+</pre>
+<h2 id="Example" name="Example">例</h2>
+<p>{{ Fx_minversion_note("28.0", "この節は Firefox 28.0 以降の DeferredTask.jsm について書かれています。") }}</p>
+<p>指定された遅延の後に実行される関数または非同期のタスクを作成します。遅延が経過する前の複数回の "arm" メソッド呼び出しは結合されます。タスクは実行中に再入する事はできませんが、前回の実行が完了した後で再度実行する事はできます。</p>
+<p> </p>
+<p>一般的な使用例は、短期間における複数回の非同期呼び出しによってデータが変更され、その度にファイルに保存しなければいけない場合です。</p>
+<pre class="eval">let saveDeferredTask = new DeferredTask(function* () {
+ yield OS.File.writeAtomic(...);
+ // 補足されない例外は報告されます
+}, 2000);
+
+// このタスクは準備完了ですが、要求されるまで実行はされません
+</pre>
+<p>"arm" メソッドは、タスクを実行する内部タイマーを開始するのに使用します。複数回のタイマーの arm は追加の遅延を引き起こしません。</p>
+<pre class="eval">saveDeferredTask.arm();
+
+// タスクはこの時点から 2 秒後に実行されます
+
+yield waitOneSecond();
+saveDeferredTask.arm();
+
+// タスクはこの時点から 1 秒後に実行されます
+</pre>
+<p>タイマーは遅延をリセットするため、もしくは単純に実行をキャンセルするために arm を解除できます。</p>
+<pre class="eval">saveDeferredTask.disarm();
+saveDeferredTask.arm();
+
+// タスクはこの時点から 2 秒後に実行されます
+</pre>
+<p>指定時間が経過し内部タイマーが発動するとタスクの実行が開始され、このタスクはこれ以降キャンセルできなくなります。しかし、タスクの実行中にタイマーを再び arm する事は可能であり、この場合タイマーが実際に開始するには前のタスクが完了する必要があります。このため、タスクの実行と実行の間の休止時間は指定された遅延以上である事が保証されます。</p>
+<p>"finalize" メソッドはタスクが確実に終了する事を保証するために使用できます。このメソッドが返した promise はタスクの最後の実行が完了した時に解決されます。タスクの実行が最後である事を保証するために、このメソッドは以降再びタイマーを arm する事を拒否します。</p>
+<p>"finalize" メソッドが呼び出された時点でタイマーが既に arm されていた場合、タスクは即座に実行されます。この時点でタスクが既に実行されていた場合、現在の実行が終了し次第、即座に最後の実行が始めから終わりまで再び行なわれます。もしタイマーが arm されていなかった場合、"finalize" メソッドは実行中のタスクが完了する事を保証します。</p>
+<p>例えばシャットダウン中に、もしタイマーが arm されていた場合、最新バージョンのデータを用いた保留中の書き込みが処理される事を保証したいでしょう。</p>
+<pre class="eval">AsyncShutdown.profileBeforeChange.addBlocker(
+ "Example service: shutting down",
+ () =&gt; saveDeferredTask.finalize()
+);
+</pre>
+<p>しかし、どのみち保存されたデータをディスクから削除しようとしている場合、むしろ保留されている書き込みの開始を抑制した方が良いでしょう。ただし、削除しようとしているファイルが使用中ではなくなるように、現在処理中の書き込みが終了する事は保証した上で。</p>
+<pre class="eval">saveDeferredTask.disarm();
+saveDeferredTask.finalize().then(() =&gt; OS.File.remove(...))
+ .then(null, Components.utils.reportError);
+</pre>
diff --git a/files/ja/mozilla/javascript_code_modules/downloads.jsm/index.html b/files/ja/mozilla/javascript_code_modules/downloads.jsm/index.html
new file mode 100644
index 0000000000..f01fc476ac
--- /dev/null
+++ b/files/ja/mozilla/javascript_code_modules/downloads.jsm/index.html
@@ -0,0 +1,297 @@
+---
+title: Downloads.jsm
+slug: Mozilla/JavaScript_code_modules/Downloads.jsm
+translation_of: Mozilla/JavaScript_code_modules/Downloads.jsm
+---
+<p>{{ gecko_minversion_header("26") }}</p>
+
+<p>Downloads.jsmはダウンロードに関する機能を提供するJavaScriptモジュールです。新規にダウンロードを開始したり、ダウンロード中に制御を行ったり、ダウンロードに関連する設定を呼び出したりできます。これを使用するにはまずモジュールをインポートする必要があります。</p>
+
+<pre>Components.utils.import("resource://gre/modules/Downloads.jsm");
+</pre>
+
+<h2 id="メソッドの概要">メソッドの概要</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a>&lt;<a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download">Download</a>&gt; <a href="#createDownload()">createDownload</a>(<a href="/en-US/docs/JavaScript/Reference/Global_Objects/Object" title="/en-US/docs/JavaScript/Reference/Global_Objects/Object">Object</a> aProperties);</code></td>
+ </tr>
+ <tr>
+ <td><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a>&lt;void&gt; <a href="#fetch()">fetch</a>(aSource, aTarget, [optional] <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Object" title="/en-US/docs/JavaScript/Reference/Global_Objects/Object">Object</a> </code><code>aOptions);</code></td>
+ </tr>
+ <tr>
+ <td><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a>&lt;<a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadList" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadList">DownloadList</a>&gt; <a href="#getList()">getList</a>(aType);</code></td>
+ </tr>
+ <tr>
+ <td><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise" title="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm/Promise">Promise</a>&lt;<a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSummary" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSummary">DownloadSummary</a>&gt; <a href="#getSummary()">getSummary</a>(aType);</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="定数">定数</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">定数</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>PUBLIC</code></td>
+ <td>Work on downloads that were not started from a private browsing window.</td>
+ </tr>
+ <tr>
+ <td><code>PRIVATE</code></td>
+ <td>Work on downloads that were started from a private browsing window.</td>
+ </tr>
+ <tr>
+ <td><code>ALL</code></td>
+ <td>Work on both <code>Downloads.PRIVATE</code> and <code>Downloads.PUBLIC</code> downloads.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="プロパティ">プロパティ</h2>
+
+<table class="standard-table" style="width: auto;">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>Error</code> <span class="inlineIndicator readOnly readOnlyInline" title="This value may not be changed.">Read only </span></td>
+ <td><a href="/en-US/docs/JavaScript/Guide/Working_with_Objects#Using_a_constructor_function" title="/en-US/docs/JavaScript/Guide/Working_with_Objects#Using_a_constructor_function"><code>Constructor</code></a></td>
+ <td>Constructor for a <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadError" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadError"><code>DownloadError</code></a> object. When you catch an exception during a download, you can use this to verify if <code>ex instanceof Downloads.Error</code>, before reading the exception properties with the error details. Example (using <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Task.jsm" title="/en-US/docs/Mozilla/JavaScript_code_modules/Task.jsm"><code>Task.jsm</code></a>):
+ <pre class="brush: js">
+try {
+ yield Downloads.fetch(sourceUri, targetFile);
+} catch (ex if ex instanceof Downloads.Error &amp;&amp; ex.becauseTargetFailed) {
+ console.log("Unable to write to the target file, ignoring the error.");
+}</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="メソッド">メソッド</h2>
+
+<h3 id="createDownload()">createDownload()</h3>
+
+<p>新しく<a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download"><code>Download</code></a>オブジェクトを生成します。</p>
+
+<pre>Promise&lt;Download&gt; createDownload(
+ Object aProperties
+);
+</pre>
+
+<h5 id="パラメーター">パラメーター</h5>
+
+<dl>
+ <dt><code>aProperties</code></dt>
+ <dd>Provides the initial properties for the newly created download. This matches the serializable representation of a <code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download">Download</a></code> object. Some of the most common properties in this object include:
+ <ul>
+ <li><code>source</code>: String containing the URI for the download source. Alternatively, may be an {{Interface("nsIURI")}}, a <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSource" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSource"><code>DownloadSource</code></a> object, or an object with the following properties:
+ <ul>
+ <li><code>url</code>: String containing the URI for the download source.</li>
+ <li><code>isPrivate</code>: {{optional_inline()}} Indicates whether the download originated from a private window. If omitted, the download is public.</li>
+ <li><code>referrer</code>: {{optional_inline()}} String containing the referrer URI of the download source. Can be omitted or <code>null</code> if no referrer should be sent or the download source is not HTTP.</li>
+ </ul>
+ </li>
+ <li><code>target</code>: String containing the path of the target file. Alternatively, may be an {{Interface("nsIFile")}}, a <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadTarget" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadTarget"><code>DownloadTarget</code></a> object, or an object with the following properties:
+ <ul>
+ <li><code>path</code>: String containing the path of the target file.</li>
+ </ul>
+ </li>
+ <li><code>saver</code>: {{optional_inline()}} String representing the class of the download operation. If omitted, defaults to "copy". Alternatively, may be the serializable representation of a <code>DownloadSaver</code> object.</li>
+ </ul>
+ </dd>
+</dl>
+
+<h5 id="Promise_resolves_to">Promise resolves to</h5>
+
+<p>新しく生成された<a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download"><code>Download</code></a>オブジェクト.</p>
+
+<h3 id="fetch()">fetch()</h3>
+
+<p>ネットワーク上のデータをローカルにダウンロードします。</p>
+
+<p>この関数はダウンロードをキャンセルしたり再開するインターフェイスを提供していません。その場合は<a href="#createDownload()" title="#createDownload()"><code>createDownload()</code></a>関数を利用して<a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download"><code>Download</code></a>オブジェクトを参照してください。</p>
+
+<p>ダウンロードは再開されないため、たとえダウンロードが失敗しても部分的にダウンロードデータが保存されることはありません。</p>
+
+<pre>Promise fetch(
+ aSource,
+ aTarget,
+ Object aOptions
+);
+</pre>
+
+<h5 id="パラメーター_2">パラメーター</h5>
+
+<dl>
+ <dt><code>aSource</code></dt>
+ <dd>String containing the URI for the download source. Alternatively, may be an {{Interface("nsIURI")}} or a <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSource" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSource"><code>DownloadSource</code></a> object.</dd>
+ <dt><code>aTarget</code></dt>
+ <dd>String containing the path of the target file. Alternatively, may be an {{Interface("nsIFile")}} or a <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadTarget" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadTarget"><code>DownloadTarget</code></a> object.</dd>
+ <dt><code>aOptions</code> {{optional_inline()}}</dt>
+ <dd>An optional object used to control the behavior of this function. You may pass an object with a subset of the following fields:
+ <ul>
+ <li><code>isPrivate</code>: {{optional_inline()}} Indicates whether the download originated from a private window. If omitted, the download is public.</li>
+ </ul>
+ </dd>
+</dl>
+
+<h5 id="Promise_resolves_to_2">Promise resolves to</h5>
+
+<p><code>undefined</code> when the download has finished successfully and you can access the target file.</p>
+
+<h5 id="Promise_can_be_rejected_with">Promise can be rejected with</h5>
+
+<p><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadError" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadError"><code>DownloadError</code></a> if the download failed.</p>
+
+<h3 id="getList()">getList()</h3>
+
+<p>Retrieves the specified type of <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadList" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadList"><code>DownloadList</code></a> object. There is one download list for each type, and this method always retrieves a reference to the same download list when called with the same argument.</p>
+
+<p>この関数を呼び出すと、ダウンロードリストが(すでにロードされている場合をのぞいて)リロードされます。</p>
+
+<pre>Promise&lt;DownloadList&gt; getList(aType);
+</pre>
+
+<h5 id="パラメーター_3">パラメーター</h5>
+
+<dl>
+ <dt><code>aType</code></dt>
+ <dd>This can be <code>Downloads.PUBLIC</code>, <code>Downloads.PRIVATE</code>, or <code>Downloads.ALL</code>. Downloads added to the <code>Downloads.PUBLIC</code> and <code>Downloads.PRIVATE</code> lists are reflected in the <code>Downloads.ALL</code> list, and downloads added to the <code>Downloads.ALL</code> list are also added to either the <code>Downloads.PUBLIC</code> or the <code>Downloads.PRIVATE</code> list based on their properties.</dd>
+</dl>
+
+<h5 id="Promise_resolves_to_3">Promise resolves to</h5>
+
+<p>The requested <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadList" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadList"><code>DownloadList</code></a> object.</p>
+
+<h3 id="getSummary()">getSummary()</h3>
+
+<p>Retrieves the specified type of <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSummary" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSummary"><code>DownloadSummary</code></a> object. There is one download summary for each type, and this method always retrieves a reference to the same download summary when called with the same argument.</p>
+
+<p>Calling this function does not cause the list of public downloads to be reloaded from the previous session. The summary will behave as if no downloads are present until the <a href="#getList()" title="#getList()"><code>getList()</code></a> method is called.</p>
+
+<pre>Promise&lt;DownloadSummary&gt; getSummary(aType);
+</pre>
+
+<h5 id="パラメーター_4">パラメーター</h5>
+
+<dl>
+ <dt><code>aType</code></dt>
+ <dd>This can be <code>Downloads.PUBLIC</code>, <code>Downloads.PRIVATE</code>, or <code>Downloads.ALL</code>.</dd>
+</dl>
+
+<h5 id="Promise_resolves_to_4">Promise resolves to</h5>
+
+<p>The requested <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSummary" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadSummary"><code>DownloadSummary</code></a> object.</p>
+
+<h2 id="例">例</h2>
+
+<h3 id="ローカルにダウンロードする">ローカルにダウンロードする</h3>
+
+<p>この例では、HTMLファイルをダウンロードしています。ダウンロードの進捗状況を表示したり、エラー処理は行っていません。</p>
+
+<pre class="brush: js">Components.utils.import("resource://gre/modules/Downloads.jsm");
+Components.utils.import("resource://gre/modules/osfile.jsm")
+Components.utils.import("resource://gre/modules/Task.jsm");
+
+Task.spawn(function () {
+
+ yield Downloads.fetch("http://www.mozilla.org/",
+ OS.Path.join(OS.Constants.Path.tmpDir,
+ "example-download.html"));
+
+ console.log("example-download.html has been downloaded.");
+
+}).then(null, Components.utils.reportError);
+</pre>
+
+<h3 id="ダウンロードの監視">ダウンロードの監視</h3>
+
+<p>この例では、グローバルなダウンロードリストに変化が発生するたびに、メッセージを記録しています。</p>
+
+<p>To demonstrate the logging, a new download is started while a message box is being shown. The download is stopped and removed from the list when the message box is closed, regardless of whether it has been completed or not.</p>
+
+<pre class="brush: js">Components.utils.import("resource://gre/modules/Downloads.jsm");
+Components.utils.import("resource://gre/modules/osfile.jsm")
+Components.utils.import("resource://gre/modules/Task.jsm");
+
+Task.spawn(function () {
+
+ let list = yield Downloads.getList(Downloads.ALL);
+
+ let view = {
+ onDownloadAdded: download =&gt; console.log("Added", download),
+ onDownloadChanged: download =&gt; console.log("Changed", download),
+ onDownloadRemoved: download =&gt; console.log("Removed", download)
+ };
+
+ yield list.addView(view);
+ try {
+ let download = yield Downloads.createDownload({
+ source: "http://www.mozilla.org/",
+ target: OS.Path.join(OS.Constants.Path.tmpDir, "example-download.html"),
+ });
+ list.add(download);
+ try {
+ download.start();
+ alert("Now monitoring all downloads. Close the message to stop.");
+ } finally {
+ yield list.remove(download);
+ yield download.finalize(true);
+ }
+ } finally {
+ yield list.removeView(view);
+ }
+
+}).then(null, Components.utils.reportError);
+</pre>
+
+<h2 id="Conversion_from_nsIDownloadManager">Conversion from nsIDownloadManager</h2>
+
+<p>Starting in Firefox for Desktop version 26, the {{interface("nsIDownloadManager")}} and {{interface("nsIDownload")}} interfaces are not available anymore.</p>
+
+<p>The new module works differently from the old component. In general, you should be aware of the following highlights:</p>
+
+<ul>
+ <li>There is no difference between active downloads and finished downloads. The <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download"><code>Download</code></a> object can be used without requiring direct database access.</li>
+ <li>Observer notifications (for example, <code>"dl-done"</code>) and download listeners are replaced by views on the <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadList" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/DownloadList"><code>DownloadList</code></a> object returned by the <a href="#getList()" title="#getList()"><code>getList()</code></a> method.</li>
+ <li>Object identity replaces the use of numeric identifiers. You can use <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download"><code>Download</code></a> objects as keys in a <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set"><code>Set</code></a> or <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map"><code>Map</code></a> to associate your own state to them for the session.</li>
+ <li>There is no separate count of active downloads. If a count is needed, it should be maintained using a view on a <code>DownloadList</code>.</li>
+ <li>The <code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download#start()" title="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download#start()">start()</a></code> method can be used to restart a failed download. Handling of downloads that have been paused is also different.</li>
+</ul>
+
+<p>While some of the legacy methods and properties have an equivalent in <code>Downloads.jsm</code>, there might be subtle differences in behavior. For example, the properties that handle progress are now more detailed and don't use the special value <code>-1</code> anymore. You may see the documentation of the new methods and properties for details.</p>
+
+<h2 id="Using_it_in_a_XUL_app">Using it in a XUL app</h2>
+
+<p>In a XUL standalone application (running with XULRunner or <code>firefox --app</code>), you have to do additionnal things in order to use the new download manager. By default it is not enabled. It will be enabled when the <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=851471">bug 851471</a> will be closed. If you don't activate it, you could use Downloads.jsm, but your view will not be called by the external helper app service (when a user click on a file to download, in a web page). To enable the new download manager :</p>
+
+<ul>
+ <li>First you have to set the pref {{pref("browser.download.useJSTransfer")}} to <code>true</code>.</li>
+ <li>Then you should declare the new {{interface("nsITransfer")}} object during the startup of your app.</li>
+</ul>
+
+<pre> Components.manager.QueryInterface(Components.interfaces.nsIComponentRegistrar)
+                   .registerFactory(Components.ID("{1b4c85df-cbdd-4bb6-b04e-613caece083c}"), "", "@mozilla.org/transfer;1", null);
+
+</pre>
+
+<p> </p>
+
+<h2 id="See_also">See also</h2>
+
+<ul>
+ <li><a class="internal" href="/en-US/docs/JavaScript_code_modules/Using" title="en-US/docs/JavaScript code modules/Using JavaScript code modules">Using JavaScript code modules</a></li>
+ <li><a class="internal" href="/en-US/docs/Mozilla/JavaScript_code_modules" title="en-US/docs/Mozilla/JavaScript code modules">JavaScript code modules</a></li>
+ <li><a class="internal" href="/en-US/docs/Components.utils.import" title="en-US/docs/Components.utils.import"><code>Components.utils.import</code></a></li>
+</ul>
+
+<div id="xunlei_com_thunder_helper_plugin_d462f475-c18e-46be-bd10-327458d045bd"> </div>
diff --git a/files/ja/mozilla/javascript_code_modules/index.html b/files/ja/mozilla/javascript_code_modules/index.html
new file mode 100644
index 0000000000..dfded8747d
--- /dev/null
+++ b/files/ja/mozilla/javascript_code_modules/index.html
@@ -0,0 +1,113 @@
+---
+title: JavaScript コードモジュール
+slug: Mozilla/JavaScript_code_modules
+tags:
+ - Add-ons
+ - Extensions
+ - JavaScript
+ - Modules
+ - XPCOM
+ - 要更新
+translation_of: Mozilla/JavaScript_code_modules
+---
+<div>{{ gecko_minversion_header("1.9") }}</div>
+
+<p>JavaScript コードモジュールは 複数の特権 JavaScript スコープにおいてコードを共有することを目的として導入されました。具体的には、Firefox 自身または拡張機能でのコードの重複を避けるために使用することができます。</p>
+
+<div class="note">
+<p>These are <em>not</em> the same thing as standard JavaScript modules. See {{jsxref("Statements/export", "export")}} and {{jsxref("Statements/import", "import")}} to learn more about how to use standard modules.</p>
+</div>
+
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h2 id="一般的な事項">一般的な事項</h2>
+
+ <dl>
+ <dt><a class="internal" href="/ja/docs/JavaScript_code_modules/Using" title="./Using">Using JavaScript code modules</a></dt>
+ <dd>JavaScript コードモジュールの使用方法についてのイントロダクション。</dd>
+ <dt><a class="internal" href="/ja/Components.utils.import" title="ja/Components.utils.import">Component.utils.import</a></dt>
+ <dd>JavaScript コードモジュールのインポートの方法。</dd>
+ <dt><a class="internal" href="/ja/Components.utils.unload" title="ja/Components.utils.unload">Component.utils.unload</a> {{ gecko_minversion_inline("7.0") }}</dt>
+ <dd>JavaScript コードモジュールのアンロード方法。</dd>
+ <dt><a href="/ja/Code_snippets/Modules" title="ja/Code_snippets/Modules">Code snippets: Modules</a></dt>
+ <dd>コードモジュールの使い方の例。</dd>
+ <dt><a class="external" href="http://wiki.mozilla.org/Labs/JS_Modules">Mozilla Labs JS Modules</a></dt>
+ <dd>このページには、拡張機能の開発者が彼らのコードで使用できる JavaScript  モジュール、ならびにダウンロードリンクとドキュメントの一覧が記載されています。</dd>
+ </dl>
+ </td>
+ <td>
+ <h2 id="標準コードモジュール">標準コードモジュール</h2>
+
+ <dl>
+ </dl>
+
+ <dl>
+ <dt><a href="/ja/Addons/Add-on_Manager" title="ja/Addons/Add-on_Manager">AddonManager.jsm</a> {{ gecko_minversion_inline("2.0") }}</dt>
+ <dd>アドオンのインストール、管理、アンインストールのためのインターフェイスです。</dd>
+ <dt><a href="/ja/Addons/Add-on_Repository" title="ja/Addons/Add-on Repository">AddonRepository.jsm</a> {{ gecko_minversion_inline("2.0") }}</dt>
+ <dd>アドオンリポジトリの検索を許容します。</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Assert.jsm" title="./Assert.jsm">Assert.jsm</a> {{gecko_minversion_inline("28.0")}}</dt>
+ <dd>Implements the <a href="http://wiki.commonjs.org/wiki/Unit_Testing/1.1" title="http://wiki.commonjs.org/wiki/Unit_Testing/1.1">CommonJS Unit Testing specification version 1.1</a>, which provides a basic standardized interface for performing in-code logical assertions with optional, customizable error reporting.</dd>
+ <dt><a href="/ja/docs/JavaScript_code_modules/ctypes.jsm" title="./ctypes.jsm">ctypes.jsm</a> {{ fx_minversion_inline("3.6") }}</dt>
+ <dd>XPCOM コンポーネントの開発をせずに JavaScript のコードからネイティブライブラリを呼び出すためのインターフェイスを提供します。</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/CustomizableUI.jsm" title="./ctypes.jsm">CustomizableUI.jsm</a> {{fx_minversion_inline("29")}}</dt>
+ <dd>Allows you to interact with customizable buttons and items in Firefox's main window UI.</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/DeferredTask.jsm" title="./DeferredTask.jsm">DeferredTask.jsm</a> {{gecko_minversion_inline("18.0")}}</dt>
+ <dd>遅延の後にタスクを実行します。</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Dict.jsm" title="./Dict.jsm">Dict.jsm</a> {{gecko_minversion_inline("5.0")}}</dt>
+ <dd>キー・バリュー型の辞書の API を提供します。</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/DownloadLastDir.jsm" title="ja/JavaScript_code_modules/DownloadLastDir.jsm">DownloadLastDir.jsm</a> {{ gecko_minversion_inline("2.0") }}</dt>
+ <dd>最後にダウンロードが行われたディレクトリへのパスを提供します。</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Downloads.jsm" title="./Downloads.jsm">Downloads.jsm</a> {{gecko_minversion_inline("23.0")}}</dt>
+ <dd>プラットフォームのダウンロード性能に影響するシングルエントリポイントを提供します。</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/FileUtils.jsm" title="./FileUtils.jsm">FileUtils.jsm</a> {{gecko_minversion_inline("1.9.2")}}</dt>
+ <dd>ファイルを取り扱うヘルパーを提供します。</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Geometry.jsm" title="./Geometry.jsm">Geometry.jsm</a> {{gecko_minversion_inline("2.0")}}</dt>
+ <dd>座標点および矩形の基本的な幾何学的な操作を行うルーチンを提供します。</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Http.jsm" title="./Geometry.jsm">HTTP.jsm</a> {{gecko_minversion_inline("25.0")}}</dt>
+ <dd>A wrapper for XMLHttpRequest that provides convenient and simplified API for dealing with HTTP requests.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/JNI.jsm">JNI.jsm</a> {{fx_minversion_inline("17.0")}}</dt>
+ <dd>Abstracts the js-ctypes to provide an interface that allows JavaScript code to call code running in native JVMs.</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/ISO8601DateUtils.jsm" title="./ISO8601DateUtils.jsm">ISO8601DateUtils.jsm</a></dt>
+ <dd>JavaScript <a href="/ja/docs/JavaScript/Reference/Global_Objects/Date" title="JavaScript/Reference/Global_Objects/Date"><code>Date</code></a> オブジェクトと ISO 8601 date 文字列を変換するルーチンを提供します。</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Log.jsm">Log.jsm</a> (以前の log4moz) {{gecko_minversion_inline("27.0")}}</dt>
+ <dd><a href="/ja/docs/Tools/Browser_Console">Browser Console</a> やディスク上のファイルなど、様々なエンドポイントへのログメッセージを記録するための <a href="https://en.wikipedia.org/wiki/Log4j">log4j</a> スタイルの API を提供します。</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/NetUtil.jsm" title="./NetUtil.jsm">NetUtil.jsm</a></dt>
+ <dd>データを入力ストリームから出力ストリームに非同期で簡単にコピーする機能を含む、役に立つネットワークユーティリティ関数を提供します。</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/openLocationLastURL.jsm" title="./openLocationLastURL.jsm">openLocationLastURL.jsm</a> {{gecko_minversion_inline("1.9.1.4")}}</dt>
+ <dd>ファイルメニューの "URL を開く" を用いて開かれた最後の URL にアクセスする手段を提供します。</dd>
+ <dt><a href="/ja/docs/JavaScript_OS.File" title="/ja/docs/JavaScript_OS.File">osfile.jsm</a> {{gecko_minversion_inline("16.0")}}</dt>
+ <dd>JavaScript モジュールの <code>OS.File</code> にはファイルを操作するためのプリミティブが含まれます。</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/PerfMeasurement.jsm" title="./PerfMeasurement.jsm">PerfMeasurement.jsm</a> {{fx_minversion_inline("4.0")}}</dt>
+ <dd>低レベルのハードウェアアクセスおよび OS パフォーマンス測定ツールを提供します。</dd>
+ <dt><a href="/ja/docs/Localization_and_Plurals" title="Localization and Plurals">PluralForm.jsm</a></dt>
+ <dd>現在のロケールにおける正確な複数形を取得する簡単な方法と特定の複数形規則に沿ったローカライズ手段を提供します。</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/PopupNotifications.jsm" title="./PopupNotifications.jsm">PopupNotifications.jsm</a> {{gecko_minversion_inline("2.0")}}</dt>
+ <dd>ユーザーに対してモーダルでない通知を表示する簡単な手段を提供します。</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Promise.jsm" title="./Promise.jsm">Promise.jsm</a> {{gecko_minversion_inline("25.0")}}</dt>
+ <dd>2013 年 4 月に提案された <a class="external" href="https://github.com/promises-aplus/promises-spec/blob/1.0.0/README.md" title="https://github.com/promises-aplus/promises-spec/blob/1.0.0/README.md">Promises/A+</a> を実装します。</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/PromiseWorker.jsm">PromiseWorker.jsm</a> {{gecko_minversion_inline("20.0")}}</dt>
+ <dd>A version of {{domxref("ChromeWorker")}} which uses Promises to return the worker's result instead of using an event to do so.</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Services.jsm" title="./Services.jsm">Services.jsm</a> {{gecko_minversion_inline("2.0")}}</dt>
+ <dd>よく使われるサービスへのアクセスを便利に取得できるゲッターを提供します。</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/source-editor.jsm" title="./source-editor.jsm">source-editor.jsm</a> {{fx_minversion_inline("11.0")}}</dt>
+ <dd>ソースエディタはスタイルエディタなどの開発ツールで使用されます。このインターフェイスはエディタを実装し、使用者との間で相互に作用します。</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Sqlite.jsm" title="./Sqlite.jsm">Sqlite.jsm</a> {{gecko_minversion_inline("20.0")}}</dt>
+ <dd>{{ interface("mozIStorage") }}/SQLite に対する Promise ベースの API です。</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Task.jsm" title="./Task.jsm">Task.jsm</a> {{gecko_minversion_inline("17.0")}}</dt>
+ <dd>JavaScript の <code>yield</code> 演算子の力を借りてシーケンシャルで非同期な操作を単純化する <a class="external" href="https://taskjs.org/">Task.js</a> のサブセットを実装します。</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/Timer.jsm" title="/en-US/docs/Mozilla/JavaScript_code_modules/Timer.jsm">Timer.jsm </a>{{gecko_minversion_inline("22.0")}}</dt>
+ <dd><code>window.setTimeout</code> の純粋な JS 実装です。</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Webapps.jsm" title="/en-US/docs/Mozilla/JavaScript_code_modules/Timer.jsm">Webapps.jsm </a>{{gecko_minversion_inline("??.0")}}</dt>
+ <dd>Provides an interface to manage Open Web Apps.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/WebRequest.jsm">WebRequest.jsm</a> {{gecko_minversion_inline("41.0")}}</dt>
+ <dd>Provides an API to add event listeners for the various stages of making an HTTP request. The event listener receives detailed information about the request, and can modify or cancel the request.</dd>
+ <dt><a href="/ja/docs/Mozilla/JavaScript_code_modules/XPCOMUtils.jsm" title="./XPCOMUtils.jsm">XPCOMUtils.jsm</a></dt>
+ <dd>JS コンポーネントローダーによって読み込まれる JavaScript コンポーネントのためのユーティリティを含みます。</dd>
+ </dl>
+ </td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/ja/mozilla/javascript_code_modules/perfmeasurement.jsm/index.html b/files/ja/mozilla/javascript_code_modules/perfmeasurement.jsm/index.html
new file mode 100644
index 0000000000..175d7ad24c
--- /dev/null
+++ b/files/ja/mozilla/javascript_code_modules/perfmeasurement.jsm/index.html
@@ -0,0 +1,302 @@
+---
+title: PerfMeasurement.jsm
+slug: Mozilla/JavaScript_code_modules/PerfMeasurement.jsm
+translation_of: Mozilla/JavaScript_code_modules/PerfMeasurement.jsm
+---
+<p>{{ gecko_minversion_header("2.0") }}</p>
+
+<p><code>PerfMeasurement.jsm</code> JavaScript コードモジュールを使用すると、コードの詳細なパフォーマンス測定値を取得できます。</p>
+
+<p>{{ note("The <code>PerfMeasurement.jsm</code> JavaScript code module can only be used from chrome -- that is, from within the application itself or an add-on.") }}</p>
+
+<p>Before you can use this module, you need to import it into your scope:</p>
+
+<pre><span class="plain">Components.utils.import("resource://gre/modules/PerfMeasurement.jsm")</span></pre>
+
+<p>See <a href="/en/Performance/Measuring_performance_using_the_PerfMeasurement.jsm_code_module" title="en/Performance/Measuring performance using the PerfMeasurement.jsm code module">Measuring performance using the PerfMeasurement.jsm code module</a> for details on how to use this API.</p>
+
+<div class="note"><strong>Note:</strong> At present, <code>PerfMeasurement.jsm</code> is only functional on Linux, but it is planned to add support for Windows ({{ Bug(583322) }}) and OSX ({{ Bug(583323) }}) as well, and we welcome patches for other operating systems.</div>
+
+<h2 id="Method_overview">Method overview</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>static bool <a href="/en/JavaScript_code_modules/PerfMeasurement.jsm#canMeasureSomething()" title="en/JavaScript code modules/PerfMeasurement.jsm#canMeasureSomething()">canMeasureSomething</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="/en/JavaScript_code_modules/PerfMeasurement.jsm#reset()" title="en/JavaScript code modules/PerfMeasurement.jsm#reset()">reset</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="/en/JavaScript_code_modules/PerfMeasurement.jsm#start()" title="en/JavaScript code modules/PerfMeasurement.jsm#start()">start</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="/en/JavaScript_code_modules/PerfMeasurement.jsm#stop()" title="en/JavaScript code modules/PerfMeasurement.jsm#stop()">stop</a>();</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Member_fields">Member fields</h2>
+
+<h3 id="Recorded_data_variables">Recorded data variables</h3>
+
+<p>These variables provide access to the recorded data. Any measurable event that was not being recorded has a value of -1 (that is, 0xFFFFFFFFFFFFFFFF).</p>
+
+<div class="note"><strong>Note:</strong> These values are all zeroed (or set to -1, for events not being measured) when you initialize the <code>PerfMeasurement</code> object, then they are not zeroed again unless you explicitly call the {{ manch("reset") }} method. This lets you accumulate measurements over multiple passes through code that you want to analyze.</div>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">Variable</td>
+ <td class="header">Type</td>
+ <td class="header">Description</td>
+ </tr>
+ <tr>
+ <td><code>cpu_cycles</code></td>
+ <td><code>uint64</code></td>
+ <td>The number of CPU cycles elapsed.</td>
+ </tr>
+ <tr>
+ <td><code>instructions</code></td>
+ <td><code>uint64</code></td>
+ <td>The number of instructions executed.</td>
+ </tr>
+ <tr>
+ <td><code>cache_references</code></td>
+ <td><code>uint64</code></td>
+ <td>The number of memory accesses that occurred.</td>
+ </tr>
+ <tr>
+ <td><code>cache_misses</code></td>
+ <td><code>uint64</code></td>
+ <td>The number of times memory accesses missed the cache.</td>
+ </tr>
+ <tr>
+ <td><code>branch_instructions</code></td>
+ <td><code>uint64</code></td>
+ <td>The number of branch instructions executed.</td>
+ </tr>
+ <tr>
+ <td><code>branch_misses</code></td>
+ <td><code>uint64</code></td>
+ <td>The number of times branch prediction guessed wrong.</td>
+ </tr>
+ <tr>
+ <td><code>bus_cycles</code></td>
+ <td><code>uint64</code></td>
+ <td>The number of memory bus cycles that elapsed.</td>
+ </tr>
+ <tr>
+ <td><code>page_faults</code></td>
+ <td><code>uint64</code></td>
+ <td>The number of page exceptions the OS handled.</td>
+ </tr>
+ <tr>
+ <td><code>major_page_faults</code></td>
+ <td><code>uint64</code></td>
+ <td>The number of times page faults required disk access.</td>
+ </tr>
+ <tr>
+ <td><code>context_switches</code></td>
+ <td><code>uint64</code></td>
+ <td>The number of context switches that occurred involving the thread being profiled.</td>
+ </tr>
+ <tr>
+ <td><code>cpu_migrations</code></td>
+ <td><code>uint64</code></td>
+ <td>The number of times the profiled thread migrated from one CPU core to another.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Event_types_measured_constant">Event types measured constant</h3>
+
+<p>The <code>eventsMeasured</code> constant provides a mask indicating which event types were recorded.</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">Variable</td>
+ <td class="header">Type</td>
+ <td class="header">Description</td>
+ </tr>
+ <tr>
+ <td><code>eventsMeasured</code></td>
+ <td><code>EventMask</code></td>
+ <td>A bit mask of the <a href="/en/JavaScript_code_modules/PerfMeasurement.jsm#Event_mask_constants" title="en/JavaScript code modules/PerfMeasurement.jsm#Event mask constants">event types</a> recorded; this can differ from the events requested if the platform doesn't support all of the event types you specified when creating the <code>PerfMeasurement</code> object.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Constants">Constants</h2>
+
+<h3 id="Event_mask_constants">Event mask constants</h3>
+
+<p>These constants are used to construct the mask indicating which events you want to monitor.</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">Constant</td>
+ <td class="header">Value</td>
+ <td class="header">Description</td>
+ </tr>
+ <tr>
+ <td><code>CPU_CYCLES</code></td>
+ <td><code>0x00000001</code></td>
+ <td>Measure CPU cycles elapsed.</td>
+ </tr>
+ <tr>
+ <td><code>INSTRUCTIONS</code></td>
+ <td><code>0x00000002</code></td>
+ <td>Measure the number of instructions executed.</td>
+ </tr>
+ <tr>
+ <td><code>CACHE_REFERENCES</code></td>
+ <td><code>0x00000004</code></td>
+ <td>Measure the number of cache references.</td>
+ </tr>
+ <tr>
+ <td><code>CACHE_MISSES</code></td>
+ <td><code>0x00000008</code></td>
+ <td>Measure the number of cache misses.</td>
+ </tr>
+ <tr>
+ <td><code>BRANCH_INSTRUCTIONS</code></td>
+ <td><code>0x00000010</code></td>
+ <td>Measure the number of branch instructions executed.</td>
+ </tr>
+ <tr>
+ <td><code>BRANCH_MISSES</code></td>
+ <td><code>0x00000020</code></td>
+ <td>Measure the number of times branch prediction guesses wrong.</td>
+ </tr>
+ <tr>
+ <td><code>BUS_CYCLES</code></td>
+ <td><code>0x00000040</code></td>
+ <td>Measure the number of bus cycles elapsed.</td>
+ </tr>
+ <tr>
+ <td><code>PAGE_FAULTS</code></td>
+ <td><code>0x00000080</code></td>
+ <td>Measure the number of page faults that occurred.</td>
+ </tr>
+ <tr>
+ <td><code>MAJOR_PAGE_FAULTS</code></td>
+ <td><code>0x00000100</code></td>
+ <td>Measure the number of major page faults that occurred.</td>
+ </tr>
+ <tr>
+ <td><code>CONTEXT_SWITCHES</code></td>
+ <td><code>0x00000200</code></td>
+ <td>Measure the number of context switches that occurred.</td>
+ </tr>
+ <tr>
+ <td><code>CPU_MIGRATIONS</code></td>
+ <td><code>0x00000400</code></td>
+ <td>Measure the number of context switches that occurred.</td>
+ </tr>
+ <tr>
+ <td><code>ALL</code></td>
+ <td><code>0x000007FF</code></td>
+ <td>Measure all available events.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Number_of_available_event_types">Number of available event types</h3>
+
+<p>The <code>NUM_MEASURABLE_EVENTS</code> constant tells you how many types of events can be measured.</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">Constant</td>
+ <td class="header">Value</td>
+ <td class="header">Description</td>
+ </tr>
+ <tr>
+ <td><code>NUM_MEASURABLE_EVENTS</code></td>
+ <td><code>11</code></td>
+ <td>The number of types of events that can be measured.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Constructor">Constructor</h2>
+
+<p>Creates a new <code>PerfMeasurement</code> object, configured to record the specified event types.</p>
+
+<pre>PerfMeasurement(
+  EventMask toMeasure
+);
+</pre>
+
+<h6 id="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>toMeasure</code></dt>
+ <dd>A mask of all of the event types you want to record; see <a href="/en/JavaScript_code_modules/PerfMeasurement#Event_mask_constants" title="en/JavaScript code modules/PerfMeasurement#Event mask constants">Event mask constants</a> for a list of values. OR together all the event types you want to record, and pass that value here. Pass <code>PerfMeasurement.ALL</code> to record all event types.</dd>
+</dl>
+
+<h6 id="Return_value">Return value</h6>
+
+<p>A new <code>PerfMeasurement</code> object configured to record the specified event types.</p>
+
+<h2 id="Methods">Methods</h2>
+
+<h3 id="canMeasureSomething()">canMeasureSomething()</h3>
+
+<p>Indicates whether or not the platform on which your code is running supports this code module.</p>
+
+<pre>static bool canMeasureSomething();
+</pre>
+
+<h6 id="Parameters_2">Parameters</h6>
+
+<p>None.</p>
+
+<h6 id="Return_value_2">Return value</h6>
+
+<p>If even one of the <a href="/en/JavaScript_code_modules/PerfMeasurement.jsm#Event_mask_constants" title="en/JavaScript code modules/PerfMeasurement.jsm#Event mask constants">event types</a> can be recorded, this will return <code>true</code>. Otherwise, it returns <code>false</code>.</p>
+
+<h3 id="reset()">reset()</h3>
+
+<p>Resets all the enabled counters to zero.</p>
+
+<pre>void reset();
+</pre>
+
+<h6 id="Parameters_3">Parameters</h6>
+
+<p>None.</p>
+
+<h3 id="start()">start()</h3>
+
+<p>Starts measuring the performance indicators that were specified when the <code>PerfMeasurement</code> object was created.</p>
+
+<pre>void start();
+</pre>
+
+<h6 id="Parameters_4">Parameters</h6>
+
+<p>None.</p>
+
+<h3 id="stop()">stop()</h3>
+
+<p>Stops measuring performance data. For each enabled counter, the number of measured events of that type that occurred are added to the appropriate visible variable.</p>
+
+<pre>void stop();
+</pre>
+
+<h6 id="Parameters_5">Parameters</h6>
+
+<p>None.</p>
+
+<h2 id="See_also">See also</h2>
+
+<ul>
+ <li><a href="/en/Performance/Measuring_performance_using_the_PerfMeasurement.jsm_code_module" title="en/Performance/Measuring performance using the PerfMeasurement.jsm code module">Measuring performance using the PerfMeasurement.jsm code module</a></li>
+ <li><a href="/en/Performance/JS::PerfMeasurement" title="en/Performance/JS::PerfMeasurement">JS::PerfMeasurement</a></li>
+ <li><a href="/en/Performance" title="en/Performance">Performance</a></li>
+</ul>
diff --git a/files/ja/mozilla/javascript_code_modules/popupnotifications.jsm/index.html b/files/ja/mozilla/javascript_code_modules/popupnotifications.jsm/index.html
new file mode 100644
index 0000000000..6443acf9b9
--- /dev/null
+++ b/files/ja/mozilla/javascript_code_modules/popupnotifications.jsm/index.html
@@ -0,0 +1,213 @@
+---
+title: PopupNotifications.jsm
+slug: Mozilla/JavaScript_code_modules/PopupNotifications.jsm
+tags:
+ - Modules
+ - Notifications
+translation_of: Mozilla/JavaScript_code_modules/PopupNotifications.jsm
+---
+<p>{{ gecko_minversion_header("2.0") }}</p>
+
+<p><code>PopupNotifications.jsm</code> JavaScript コードモジュールはポップアップ通知ボックスサービスを提供します。このサービスを使うことにより、例えば、位置情報に関連する通知の表示といった機能を実現できます。</p>
+
+<p><img alt="popupnotification.png" class="default internal" src="/@api/deki/files/4905/=popupnotification.png"></p>
+
+<p>このサービスを使用するためには、最初に、あなたの JavaScript スコープへとコードモジュールをインポートする必要があります:</p>
+
+<pre>Components.utils.import("resource://gre/modules/PopupNotifications.jsm");
+</pre>
+
+<p>モジュールを一度インポートすれば、エクスポートされた <code>PopupNotifications</code> オブジェクトを使用できるようになります。このオブジェクトは、ポップアップ通知パネルの作成と表示のためのメソッドを提供します。</p>
+
+<div class="note"><strong>註:</strong>このコードモジュールは Firefox の chrome ウィンドウによってインポートされます。そのため、多くの拡張機能では改めてインポートする必要はありません。</div>
+
+<h2 id="メソッド概要">メソッド概要</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="/ja/JavaScript_code_modules/PopupNotifications.jsm#locationChange()" title="ja/JavaScript code modules/PopupNotifications.jsm#locationChange()">locationChange</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>Notification <a href="/en/JavaScript_code_modules/PopupNotifications.jsm#getNotification()" title="en/JavaScript code modules/PopupNotifications.jsm#getNotification()">getNotification</a>(id, browser);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="/ja/JavaScript_code_modules/PopupNotifications.jsm#remove()" title="ja/JavaScript code modules/PopupNotifications.jsm#remove()">remove</a>(notification);</code></td>
+ </tr>
+ <tr>
+ <td><code>Notification <a href="/ja/JavaScript_code_modules/PopupNotifications.jsm#show()" title="ja/JavaScript code modules/PopupNotifications.jsm#show()">show</a>(browser, id, message, anchorID, mainAction, secondaryActions, options);</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="プロパティ">プロパティ</h2>
+
+<table class="standard-table" style="width: auto;">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">詳細</td>
+ </tr>
+ <tr>
+ <td><code>isPanelOpen</code></td>
+ <td><code>Boolean</code></td>
+ <td>通知パネルが現在表示されているのであれば <code>true</code> を、そうでない場合は <code>false</code> を返します。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="メソッド">メソッド</h2>
+
+<h3 id="locationChange()">locationChange()</h3>
+
+<p>使用者 (consumer)は、ポップアップ通知モジュールに現在のブラウザのロケーションが変更されたことを知らせるために、このメソッドを呼び出します。これにより通知サービスは、必要に応じて、アクティブな通知を更新することができます。</p>
+
+<div class="note"><strong>註:</strong>Firefox のウィンドウ中で PopupNotifications オブジェクトを使用している場合、あなたは、このメソッドを呼び出す必要はありません。Firefox のコードが自動でうまく取り扱ってくれます。</div>
+
+<pre>void locationChange();
+</pre>
+
+<h6 id="引数">引数</h6>
+
+<p>無し。</p>
+
+<h3 id="getNotification()">getNotification()</h3>
+
+<p>指定した <code>browser</code> 要素および ID に関連づけられている <code>Notification</code> オブジェクトを取得します。</p>
+
+<pre><code>Notification</code> getNotification(
+ string id
+ XULElement browser
+);
+</pre>
+
+<h6 id="引数_2">引数</h6>
+
+<dl>
+ <dt><code>id</code></dt>
+ <dd>検索に使用する <code>Notification</code> ID。</dd>
+ <dt><code>browser</code></dt>
+ <dd><code>Notification</code> オブジェクトを検索する XUL {{ XULElem("browser") }} 要素。 <code>null</code> である場合、現在選択されている {{ XULElem("browser") }} に関連づけられている<code> Notification</code> オブジェクトが検索されます。</dd>
+</dl>
+
+<h6 id="返り値">返り値</h6>
+
+<p>与えられた引数に対応する <code>Notification</code> オブジェクト。対応する<code> Notification </code>オブジェクトが無い場合は <code>null</code> を返します。</p>
+
+<h3 id="remove()">remove()</h3>
+
+<p>指定された通知を削除します。</p>
+
+<pre>void remove(
+  Notification notification
+);
+</pre>
+
+<h6 id="引数_3">引数</h6>
+
+<dl>
+ <dt><code>notification</code></dt>
+ <dd>削除する通知を表す <code>Notification</code> オブジェクト。</dd>
+</dl>
+
+<h3 id="show()">show()</h3>
+
+<p>新しいポップアップ通知を追加し、ユーザーへと表示します。</p>
+
+<pre>Notification show(
+  browser,
+  id,
+  message,
+  anchorID,
+  mainAction,
+  secondaryActions,
+  options
+);
+</pre>
+
+<h6 id="引数_4">引数</h6>
+
+<dl>
+ <dt><code>browser</code></dt>
+ <dd>通知を結びつける XUL {{ XULElem("browser") }} 要素。この値は <code>null</code> であってはいけません。現在のタブへと通知を結びつける場合であれば、単純に <code>gBrowser.selectedBrowser</code> を指定する事が可能です。</dd>
+ <dt><code>id</code></dt>
+ <dd>表示される通知の種類を示すユニーク ID 文字列。例えば、位置情報に関連する通知の場合のIDは "geolocation" となります。同じ ID を持つ通知は、同時にひとつしか表示されません。指定した ID の通知が既に通知されていた場合、新しい通知によって古い通知は置き換えられることになります。</dd>
+ <dt><code>message</code></dt>
+ <dd>通知パネルに表示される文字列。</dd>
+ <dt><code>anchorID</code></dt>
+ <dd>通知ポップアップのアンカーを表示することとなる要素の ID。(つまり、ポップアップの矢印が指し示すであろう要素のことです) <code>null</code> に指定した場合、通知は PopupNotification オブジェクトのアイコンボックスを表示元とします。この anchorID は、PopupNotification オブジェクトのアイコンボックスの内側に含まれる要素を指定しなければなりません。(Firefox ウィンドウであれば、グローバル PopupNotifications オブジェクトは <code>notification-popup-box</code> 要素を使用します)</dd>
+ <dt><code>mainAction</code></dt>
+ <dd>通知パネル中に描画されるボタンを定義するフィールドを含む JavaScript オブジェクトリテラル。詳しくは下記の <a href="/ja/JavaScript_code_modules/PopupNotifications.jsm#Notification_actions" title="ja/JavaScript code modules/PopupNotifications.jsm#Notification actions">Notification actions</a> を参照してください。</dd>
+ <dt><code>secondaryActions</code></dt>
+ <dd>Notification action オブジェクトの配列。これらは通知パネルのボタンのドロップダウンメニューへ項目を追加するのに使われます。</dd>
+ <dt><code>options</code></dt>
+ <dd>通知のオプションとなるプロパティを含む JavaScript オブジェクト。詳しくは下記の <a href="/ja/JavaScript_code_modules/PopupNotifications.jsm#Notification_actions" title="ja/JavaScript code modules/PopupNotifications.jsm#Notification options">Notification options</a> を参照してください。</dd>
+</dl>
+
+<h6 id="返り値_2">返り値</h6>
+
+<p>追加された通知に対応する <a href="/ja/JavaScript_code_modules/PopupNotifications.jsm#The_Notification_object" title="ja/JavaScript code modules/PopupNotifications.jsm#The Notification object"><code>Notification</code></a> オブジェクトを返します。</p>
+
+<h2 id="Notification_actions">Notification actions</h2>
+
+<p>Notification action オブジェクトは、通知に結び付いたアクションのためのユーザーインターフェースを記述します。<strong>main action</strong> は通知パネル中に表示されるボタンの挙動を記述するために使われます。一方、<strong>secondary actions</strong> はボタンからドロップダウン表示されるメニューの挙動を記述するのにつかわれます。</p>
+
+<p>Notification action は以下のプロパティを含まなければなりません:</p>
+
+<dl>
+ <dt><code>label</code></dt>
+ <dd>アクションを説明するラベルのテキスト。</dd>
+ <dt><code>accessKey</code></dt>
+ <dd>アクションを発動するキーストロークを示す文字列。</dd>
+ <dt><code>callback</code></dt>
+ <dd>ユーザーがアクションを選択した際に実行される JavaScript 関数。</dd>
+</dl>
+
+<h2 id="Notification_options">Notification options</h2>
+
+<p>Notification options オブジェクトは通知パネルの更なるカスタマイズを指定できます。以下のプロパティをどのように組み合わせた場合でもカスタマイズは提供されます:</p>
+
+<dl>
+ <dt><code>persistence</code></dt>
+ <dd>通知を存在させ続ける、ページのロード回数を示す整数値。一度に大量のページのロードが発生した場合、通知は自動的に消えるかもしれません。</dd>
+ <dt><code>timeout</code></dt>
+ <dd>少なくとも通知が自動的には消えない時間を指定するタイムスタンプ(UNIX エポックからの経過ミリ秒)。タイムアウト値を指定した通知は、ユーザーの操作によって非表示にならない限り、指定された時間までは自動的に消えることはありません。大抵の使用時において、このパラメータ値は <code>Date.now()</code> に、通知を表示し続ける時間量を示すオフセット値を加えます。(例:30秒とする場合は <code>Date.now() + 30000</code> 。)</dd>
+ <dt><code>persistWhileVisible</code></dt>
+ <dd>ロケーションの変更をまたいでも通知を表示させたままにするかどうかを指定する真偽値。<code>true</code> の場合、別のロケーションへと移動しても、通知は表示されたままになります。</dd>
+ <dt><code>dismissed</code></dt>
+ <dd><strong>非表示通知 (dismissed notification) </strong> として通知を追加するかどうかを指定する真偽値。非表示通知 はアンカーのクリックによってアクティベートされます。この指定により、あなたが作成した通知は、ユーザーがアンカーをクリックした後に表示されます。</dd>
+ <dt><code>eventCallback</code></dt>
+ <dd>通知の状態が変更されたときに呼び出される JavaScript 関数。コールバック関数の最初の引数は、発生した状態の変更を示す文字列となります。詳しくは下記の <a href="/ja/JavaScript_code_modules/PopupNotifications.jsm#Notification_events" title="ja/JavaScript code modules/PopupNotifications.jsm#Notification events">Notification events</a> を参照してください。</dd>
+ <dt><code>neverShow</code></dt>
+ <dd>真偽値。<code>true</code> に指定した場合、ポップアップが表示されるのを永続的に妨げます。通知としてアンカーアイコンのみを表示する目的に使用できます。</dd>
+ <dt><code>removeOnDismissal</code></dt>
+ <dd>通知が非表示である場合(すなわち、ユーザーの操作でポップアップが閉じられている場合はいつでも)、この設定を <code>true</code> にされている通知は削除されます。</dd>
+ <dt><code>popupIconURL</code> {{ fx_minversion_inline("11") }}</dt>
+ <dd>ポップアップに表示される画像の URL を指定する文字列。 これは通常、 CSS で {{ cssxref("list-style-image") }} と <code>.popup-notification-icon[popupid=...]</code> セレクタ―を用いて指定されています。</dd>
+</dl>
+
+<h2 id="Notification_events">Notification events</h2>
+
+<p><code>show()</code> を呼び出す際に <code>options</code> パラメータを使用してイベントコールバックを指定した場合、通知の状態の変更に応じてコールバック関数が呼び出されます。コールバック関数の最初の引数は、状態の変更を示す以下の文字列のうちのいずれかひとつとなります:</p>
+
+<dl>
+ <dt>"dismissed"</dt>
+ <dd>(クリックやタブ切り替えといった)ユーザーの操作によって通知が消えた場合。"removed" とは異なり、通知は再び表示することが可能です。</dd>
+ <dt>"removed"</dt>
+ <dd>通知上でのユーザーの操作、または新たなロケーションへブラウザが移動することによって通知が削除場合。</dd>
+ <dt>"shown"</dt>
+ <dd>通知が表示された場合。通知の非表示と再表示の度に発火します。</dd>
+</dl>
+
+<h2 id="The_Notification_object">The Notification object</h2>
+
+<p>いずれの通知も <code>Notification</code> オブジェクトによって提供されます。このオブジェクトは通知の表示と管理に必要なすべてのデータを含み、1つのメソッドを持っています。<code>anchorElement</code> プロパティは通知のアンカー要素を返します。 <code>remove()</code>メソッドは通知を除去します。</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/Using_popup_notifications" title="ja/Using popup notifications">Using popup notifications</a></li>
+</ul>
+
+<p>{{ languages( { "en": "en/JavaScript_code_modules/PopupNotifications.jsm" } ) }}</p>
diff --git a/files/ja/mozilla/javascript_code_modules/using/index.html b/files/ja/mozilla/javascript_code_modules/using/index.html
new file mode 100644
index 0000000000..d1e91166e7
--- /dev/null
+++ b/files/ja/mozilla/javascript_code_modules/using/index.html
@@ -0,0 +1,208 @@
+---
+title: JavaScript コードモジュールの利用
+slug: Mozilla/JavaScript_code_modules/Using
+tags:
+ - Add-ons
+ - Extensions
+ - XPCOM
+translation_of: Mozilla/JavaScript_code_modules/Using
+---
+<div>{{gecko_minversion_header("1.9")}}</div>
+
+<p>JavaScript コードモジュールは、{{Gecko("1.9")}} で導入されたコンセプトであり、特権を持った異なるスコープ間でコードを共有するために用いられます。また、モジュールは、グローバルな JavaScript のシングルトンオブジェクトを生成するために用いることもできます (以前は JavaScript XPCOM オブジェクトを使う必要がありました)。 JavaScript コードモジュールは、登録されたパスに配置された純粋な JavaScript のコードです。<a href="/ja/docs/Components.utils.import"><code>Components.utils.import()</code></a> や <code><a href="https://developer.mozilla.org/en-US/docs/Components.utils.import">Components.utils["import"]()</a></code> を使って、 XUL スクリプトや JavaScript XPCOM スクリプトのような特定の JavaScript のスコープへモジュールを読み込むことができます。</p>
+
+<h2 id="Creating_a_JavaScript_code_module" name="Creating_a_JavaScript_code_module">JavaScript コードモジュールの作成</h2>
+
+<p>とても単純な JavaScript モジュールの例を以下に示します。</p>
+
+<pre class="brush: js">var EXPORTED_SYMBOLS = ["foo", "bar"];
+
+function foo() {
+ return "foo";
+}
+
+var bar = {
+ name : "bar",
+ size : 3
+};
+
+var dummy = "dummy";
+</pre>
+
+<p>モジュールが普通の JavaScript を使って、関数、オブジェクト、定数、その他あらゆる JavaScript の型のオブジェクトを生成していることに注目してください。また、モジュールは <code>EXPORTED_SYMBOLS</code> という名前の特別な Array を定義します。 <code>EXPORTED_SYMBOLS</code> 内で命名されたすべての JavaScript オブジェクトは、モジュールからエクスポートされてインポート先のスコープ内で使用可能となります。以下に例を示します。</p>
+
+<pre class="brush: js">Components.utils.import("resource://app/my_module.jsm");
+
+alert(foo()); // "foo" と表示される
+alert(bar.size + 3); // "6" と表示される
+alert(dummy); // 'dummy' はモジュールからエクスポートされないため、"dummy is not defined" と表示される
+</pre>
+
+<div class="note">
+<p><strong>Note: </strong>あなたがコードモジュールにテスト変更を加えたとき、実行する前にアプリケーションビルドID(例、バージョンなど) が変わっているかどうか確認してください。 otherwise, you may find yourself running the previous version of your module's code.</p>
+</div>
+
+<h3 id="code_moduleのURL">code moduleのURL</h3>
+
+<p>上記のサンプルからわかる通り、コードモジュールをインポートするためにはURLが必要となります。(上の例ではURLは"resource://app/my_module.jsm"となっています)</p>
+
+<p>Code modulesは<strong>chrome:</strong> ({{gecko_minversion_inline("2")}}), <strong>resource:</strong>, or <strong>file:</strong> URLのどれかを使用してのみロードすることができます。</p>
+
+<ul>
+ <li>If you're writing an extension for Firefox 4 and already have a <a href="https://developer.mozilla.org/en-US/docs/Chrome_Registration">chrome.manifest</a> with a <code>content</code> instruction in it, you can put the code module in your content folder and reference it like your other content files via <code>chrome://&lt;yourextension&gt;/content/&lt;yourmodule&gt;.jsm.</code></li>
+ <li>If your extension or application needs to support Mozilla 1.9.x (Firefox 3.x), you should register a new resource URL. Details on doing this are in the <a href="https://developer.mozilla.org/ja/docs/Mozilla/JavaScript_code_modules/Using$edit#Extending_resource.3A_URLs">"Extending resource: URLs" section</a> below.</li>
+</ul>
+
+<h3 id="Sharing_objects_using_code_modules">Sharing objects using code modules</h3>
+
+<p><a href="/ja/docs/Components.utils.import"><code>Components.utils.import()</code></a> の動作の非常に重要な点は、モジュールが読み込まれた時点でキャッシュされ、次のインポート時には、新しいバージョンのモジュールを再び読み込むことなく、以前にキャッシュされたバージョンを使用するということです。これは、モジュールが複数回インポートされた時に共有されることを意味します。モジュールをインポートしたあらゆるスコープ内で、データ、オブジェクト、関数の変更が可能となります。例えば、単一のモジュールが異なる 2 つの JavaScript のスコープ内へインポートされた場合、一方のスコープでの変更は他方のスコープにも影響します。</p>
+
+<p>スコープ 1:</p>
+
+<pre class="brush: js">Components.utils.import("resource://app/my_module.jsm");
+
+alert(bar.size + 3); // "6" と表示される
+
+bar.size = 10;
+</pre>
+
+<p>スコープ 2:</p>
+
+<pre class="brush: js">Components.utils.import("resource://app/my_module.jsm");
+
+alert(foo()); // "foo" と表示される
+alert(bar.size + 3); // "13" と表示される
+</pre>
+
+<p>このような共有の動作によって、ウィンドウや XUL スクリプト、XPCOM コンポーネントをまたいでデータを共有できるシングルトンのオブジェクトを生成することが可能となります。</p>
+
+<p>{{Note("モジュールをインポートしたスコープごとに、そのモジュールでエクスポートされたシンボルの by-value コピーを受け取ります。シンボルの値の変更は他のスコープに伝搬することはありません。")}}</p>
+
+<p>スコープ 1:</p>
+
+<pre class="brush: js">Components.utils.import("resource://app/my_module.jsm");
+
+bar = "foo";
+alert(bar); // "foo" と表示される
+</pre>
+
+<p>スコープ 2:</p>
+
+<pre class="brush: js">Components.utils.import("resource://app/my_module.jsm");
+
+alert(bar); // "[object Object]" と表示される
+</pre>
+
+<p>by-value コピーの主な効果は単純型のグローバル変数がスコープを横断して共有されないことです。常にラッパークラスの中に変数を置いてラッパーをエクスポートします (上の例にある <em>bar</em> のように)。</p>
+
+<p>{{h2_gecko_minversion("Unloading code modules", "7.0")}}</p>
+
+<p><code><a href="https://developer.mozilla.org/en-US/docs/Components.utils.unload">Components.utils.unload()</a></code> allows you to unload a previously imported code module. Once this method has been called, references to the module will continue to work but any subsequent import of the module will reload it and give a new reference.</p>
+
+<h3 id="Examples">Examples</h3>
+
+<ul>
+ <li>A template to download and edit is seen here on <a href="https://gist.github.com/Noitidart/9045387">GitHub - Gists - _template-BootstrapJSM.xpi</a></li>
+</ul>
+
+<h3 id="resource:_Protocol" name="resource:_Protocol">コードモジュールの配置</h3>
+
+<div class="geckoVersionNote">
+<div>{{gecko_callout_heading("2.0")}}</div>
+
+<p>{{Gecko("2.0")}} より前のバージョンでは、JavaScript コードモジュールは、<strong>file:</strong> または <strong>resource:</strong> URL のみを用いて読み込むことができました。 {{Gecko("2.0")}} では、<strong>chrome:</strong> URL からのモジュールの読み込みが追加されましたが、これらは JAR アーカイブ内に限られます。</p>
+</div>
+
+<p><a href="/ja/docs/Components.utils.import"><code>Components.utils.import()</code></a> を使用する場合、コードモジュールは、ディスク上のファイルを指し示すために <strong>file:</strong> または <strong>chrome:</strong>, <strong>resource:</strong> URL を使用して読み込まれなければなりません。</p>
+
+<h4 id="Using_a_resource.3a_URL" name="Using_a_resource.3a_URL">resource: URL の使用</h4>
+
+<p>{{Gecko("2.0")}} より前のバージョンでは、コードモジュールを読み込む最も一般的な方法は <strong>resource:</strong> URL を使用することでした。 resource URL の基本的な構文は以下のようになります:</p>
+
+<pre>resource://&lt;alias&gt;/&lt;relative-path&gt;/&lt;file.js|jsm&gt;
+</pre>
+
+<p><code>&lt;alias&gt;</code> は通常、アプリケーションや XUL ランタイムの相対的なファイルパスへのエイリアスです。 XUL ランタイムによって予め定義されたいくつかのエイリアスがあります:</p>
+
+<ul>
+ <li><code>app</code> - XUL アプリケーションのパスへのエイリアス。</li>
+ <li><code>gre</code> - XUL ランタイムのパスへのエイリアス。</li>
+</ul>
+
+<p><code>&lt;relative-path&gt;</code> は複数の階層とすることも可能で、常に <code>&lt;alias&gt;</code> で定義されたパスに対する相対パスとなります。一般的な相対パスは "modules" であり、 XUL Runner や Firefox にて使用されています。コードモジュールは拡張子 .js や .jsm の単一の JavaScript ファイルです。</p>
+
+<p><code>&lt;alias&gt;</code> must be unique to your add-on, as the application and other extensions share the same namespace for all aliases.</p>
+
+<h3 id="chrome.manifestを使う">chrome.manifestを使う</h3>
+
+<p>拡張機能や XUL アプリケーションへ独自のエイリアスを追加する最も簡単な方法は、 <a href="/ja/docs/Chrome_Registration">chrome manifest</a> 内の以下のような行によって登録することです:</p>
+
+<pre>resource <em>aliasname</em> <em>uri/to/files/</em></pre>
+
+<p>例えば、拡張機能 <em>foo</em> の XPI ファイルがモジュール <em>bar.js</em> を含むトップレベルの <em>modules/</em> ディレクトリを有する場合 (つまり、<em>modules/</em> ディレクトリが <em>chrome.manifest</em> と <em>install.rdf</em> の兄弟)、以下の命令によってそのディレクトリへのエイリアスを作ることができます:</p>
+
+<pre>resource foo modules/</pre>
+
+<p>(末尾のスラッシュを忘れないこと!) すると、以下の一文でモジュールを JavaScript コードへインポートできるようになります:</p>
+
+<pre class="brush: js">Components.utils.import("<a rel="freelink">resource://foo/bar.js</a>");
+</pre>
+
+<h3 id="プログラムによるエイリアスの追加">プログラムによるエイリアスの追加</h3>
+
+<p>{{interface("nsILocalFile")}} として表せるパスへの独自のエイリアスをプログラムによって追加することもできます。以下に例を示します。</p>
+
+<pre class="brush: js">var ioService = Components.classes["@<a class="linkification-ext" href="http://mozilla.org/network/io-service;1">mozilla.org/network/io-service;1</a>"]
+ .getService(Components.interfaces.nsIIOService);
+var resProt = ioService.getProtocolHandler("resource")
+ .QueryInterface(Components.interfaces.nsIResProtocolHandler);
+
+var aliasFile = Components.classes["@<a class="linkification-ext" href="http://mozilla.org/file/local;1">mozilla.org/file/local;1</a>"]
+ .createInstance(Components.interfaces.nsILocalFile);
+aliasFile.initWithPath("/some/absolute/path");
+
+var aliasURI = ioService.newFileURI(aliasFile);
+resProt.setSubstitution("myalias", aliasURI);
+
+// コードモジュールはサブフォルダではなくエイリアスフォルダ直下にあるとする
+</pre>
+
+<h2 id="Notes">Notes</h2>
+
+<h3 id="Custom_modules_and_XPCOM_components" name="Custom_modules_and_XPCOM_components">カスタムモジュールと XPCOM コンポーネント</h3>
+
+<p>{{Gecko("2.0")}} より前のバージョンでは、JavaScript XPCOM コンポーネントは、chrome が登録される前に読み込まれることに注意してください。これは、コンポーネントソース内のトップレベルにおいて独自の resource URL で <code><a href="/ja/docs/Components.utils.import">Components.utils.import()</a></code> が使用できないことを意味します。可能な解決策は、<a href="/ja/docs/Components.utils.import"><code>Components.utils.import()</code></a> の呼び出しを XPCOM コンポーネントのコンストラクタ内に移動することです (<a href="http://groups.google.com/group/mozilla.dev.apps.firefox/browse_thread/thread/e178d41afa2ccc87?hl=en#">このことについての議論</a>を参照してください)。</p>
+
+<h3 id="Packaging_notes">Packaging notes</h3>
+
+<p>It's important to note that you should not typically put your JavaScript code modules in a JAR file in your add-on. Firefox 3.6 doesn't support them at all, and there's only one case in which it's remotely useful: a Firefox 4-only add-on which must be installed unpacked. Otherwise placing code modules in a JAR file breaks compatibility unnecessarily.</p>
+
+<h2 id="Importing_CommonJS_modules">Importing CommonJS modules</h2>
+
+<p>The JavaScript code modules described here are not the same thing as <a href="http://www.commonjs.org/specs/modules/1.0/">CommonJS modules</a>, but you can import CommonJS modules into any scope where you can use <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.import">Components.utils.import</a>. Just call the following:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">const</span> <span class="punctuation token">{</span> require <span class="punctuation token">}</span> <span class="operator token">=</span> Cu<span class="punctuation token">.</span><span class="keyword token">import</span><span class="punctuation token">(</span><span class="string token">"resource://gre/modules/commonjs/toolkit/require.js"</span><span class="punctuation token">,</span> <span class="punctuation token">{</span><span class="punctuation token">}</span><span class="punctuation token">)</span></code></pre>
+
+<p>This will import <code>require()</code> into your scope.</p>
+
+<p>You can then use that to import CommonJS modules. You can import <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/SDK">Add-on SDK</a> modules in just the same way you could from an SDK add-on:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="comment token">// import the SDK's base64 module</span>
+
+<span class="keyword token">var</span> base64 <span class="operator token">=</span> <span class="function token">require</span><span class="punctuation token">(</span><span class="string token">"sdk/base64"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+base64<span class="punctuation token">.</span><span class="function token">encode</span><span class="punctuation token">(</span><span class="string token">"hello"</span><span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// "aGVsbG8="</span></code></pre>
+
+<p>You can import other CommonJS modules, too, as long as you know the path to them:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="comment token">// import my module</span>
+
+<span class="keyword token">var</span> myModule <span class="operator token">=</span> <span class="function token">require</span><span class="punctuation token">(</span><span class="string token">"resource://path/to/my/module.js"</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p>In this case, though, you might be better off <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/_loader">creating your own loader</a>, so you can specify the <code><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/_loader#paths">paths</a></code> property yourself.</p>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/JavaScript_code_modules">JavaScript コードモジュール</a>のトピックのページ。</li>
+ <li><a href="http://wiki.mozilla.org/Labs/JS_Modules">Mozilla Labs JS Modules</a> - このページは JS モジュールの一覧、加えて拡張機能開発者が利用できるコードのダウンロードリンクと文書を特集しています。</li>
+</ul>
diff --git a/files/ja/mozilla/javascript_style_guide/index.html b/files/ja/mozilla/javascript_style_guide/index.html
new file mode 100644
index 0000000000..7f8e78b58d
--- /dev/null
+++ b/files/ja/mozilla/javascript_style_guide/index.html
@@ -0,0 +1,133 @@
+---
+title: JavaScript style guide
+slug: Mozilla/JavaScript_style_guide
+tags:
+ - Developing Mozilla
+ - JavaScript
+translation_of: Mozilla/JavaScript_Tips
+---
+<p> </p>
+<h2 id=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB" name=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB">はじめに</h2>
+<p>このガイドでは {{ Source("browser", "mozilla/browser") }} 内のコードを対象としています (すなわち Firefox)。</p>
+<p>既存のスクリプトを編集する際には、既存のコードに合わせるためにこれらのガイドラインをいじらなければならないかもしれません。すでに大量の変更を加えているのであれば既存のコードの書式を見直すことも検討すべきですが。</p>
+<p>これは <a class="external" href="http://neil.rashbrook.org/JS.htm" title="http://neil.rashbrook.org/JS.htm">Neil のガイド</a> を元にしていますが、コードレビュー担当者は最新のスタイルに合わせるためにこれを更新してください。</p>
+<h2 id=".E3.83.9B.E3.83.AF.E3.82.A4.E3.83.88.E3.82.B9.E3.83.9A.E3.83.BC.E3.82.B9" name=".E3.83.9B.E3.83.AF.E3.82.A4.E3.83.88.E3.82.B9.E3.83.9A.E3.83.BC.E3.82.B9">ホワイトスペース</h2>
+<ul> <li>基本的なインデントはスペース 2 つです。タブを使ってはいけません。</li> <li>1 行は 80 文字以下になるようにしてください。行を折り返すときは前の行の関係のあるアイテムと並ぶようにインデントしてください。{{ Anch("インデントの例") }} をご覧ください。</li> <li>行末にスペースを入れないようにしてください。たとえ 2 項演算子やコンマやセミコロンの後ろでもだめです。</li> <li>2 項演算子はスペースで離してください。</li> <li>コンマやセミコロンの後ろにスペースを入れてください。前にではありません。</li> <li>キーワードの後ろにスペースを入れてください。例:<code>if (x &gt; 0)</code></li> <li>定義のブロックの間には空行を 1 つ(もしくは 2 つ)入れてください。大きなコードのブロックも空行で分割するようにしてください。</li> <li>ファイルの最後には改行してください。(特に emacs ユーザに当てはまります。)</li>
+</ul>
+<h2 id=".E8.A8.98.E5.8F.B7" name=".E8.A8.98.E5.8F.B7">記号</h2>
+<ul> <li>インラインの関数やオブジェクトでは、コンマやセミコロンの前を除いて波括弧の前後にスペースを入れてください。</li>
+</ul>
+<pre class="eval">function valueObject(aValue) { return { value: aValue }; }
+</pre>
+<ul> <li>パラメータのリストや配列の添え字など、角括弧の中ではスペースは必須ではありません。これは丸括弧の中のインラインオブジェクトを折り返す場合や、<code>for (;;)</code> 構文も該当します。後者に関して、最初のセミコロンの後ろに通常必要なスペースは 2 番目のセミコロンによっていらなくなり、2 番目のセミコロンの後ろのスペースは閉じ括弧によっていらなくなります。</li> <li>二重引用符を使うようにしてください。インラインのイベントハンドラ内や二重引用符をくくる場合は例外です。</li> <li>波括弧はその親の文に対してインデントしないでください。既存のファイルではそこで使われているスタイルを一貫して使ってください。ただし、新しくファイルを作るときは以下の使用可能な構文から好きなものを選んで使っても構いません。</li>
+</ul>
+<pre>if (dlmgrWindow)
+ dlmgrWindow.focus();
+
+if (dlmgrWindow) {
+ dlmgrWindow.focus();
+} else {
+ dlmgr.open(window, null);
+}
+</pre>
+<ul> <li>非 ASCII 文字に関しては <a href="/ja/JavaScript/Guide/Unicode" title="ja/Core_JavaScript_1.5_Guide/Unicode"><code>\uXXXX</code> 形式の Unicode エスケープ</a> を使用してください。XUL、DTD、スクリプト、プロパティファイル向けの文字セットは UTF-8 です。</li>
+</ul>
+<h2 id=".E3.82.B3.E3.83.BC.E3.83.89.E3.82.B9.E3.82.BF.E3.82.A4.E3.83.AB" name=".E3.82.B3.E3.83.BC.E3.83.89.E3.82.B9.E3.82.BF.E3.82.A4.E3.83.AB">コードスタイル</h2>
+<ul> <li>else は上で示したように常に単独の行に書いてください。</li> <li><code>return</code> の後には <code>else</code> を使わないでください。</li>
+</ul>
+<pre>if (x &lt; y)
+ return -1;
+if (x &gt; y)
+ return 1;
+return 0;
+</pre>
+<ul> <li><code>i++</code> も <code>++i</code> も使用可能です。</li> <li>インライン関数はそのデバッグが楽になるように名前を付けてください。関数をプロパティに代入しただけではその関数に名前を付けることはできません。次のようにしてください。</li>
+</ul>
+<pre>var offlineObserver = {
+ observe: function OO_observe(aSubject, aTopic, aState) {
+ if (aTopic == "network:offline-status-changed")
+ setOfflineUI(aState == "offline");
+ }
+};
+</pre>
+<h2 id=".E9.96.A2.E6.95.B0.E3.82.84.E5.A4.89.E6.95.B0.E3.81.AE.E3.83.8D.E3.83.BC.E3.83.9F.E3.83.B3.E3.82.B0" name=".E9.96.A2.E6.95.B0.E3.82.84.E5.A4.89.E6.95.B0.E3.81.AE.E3.83.8D.E3.83.BC.E3.83.9F.E3.83.B3.E3.82.B0">関数や変数のネーミング</h2>
+<ul> <li>名前や列挙値には interCaps のような形式を使用してください。他の定数は UPPER_CASE のようにしてください。</li> <li>コンストラクタは interCaps を使用し、1 文字目は大文字にしてください。</li> <li>インタフェース名用の利便のための定数の名前は nsI から始まるようにしてください。</li>
+</ul>
+<pre class="eval">const nsISupports = Components.interfaces.nsISupports;
+const nsIWBN = Components.interfaces.nsIWebBrowserNavigation;
+</pre>
+<ul> <li>列挙値は k という文字から始まるようにしてください。例:<code>const kDisplayModeNormal = 0;</code></li> <li>グローバル変数は g という文字から始まるようにしてください。例:<code>gFormatToolbar</code></li> <li>引数(パラメータ名)は a という文字から始まるようにしてください。</li> <li>プライベートメンバは _ から始まるようにしてください。例:<code>_internalFunction</code></li> <li>イベントハンドラ関数は on という語から始まるようにしてください。具体的には <code>onLoad</code>、<code>onDialogAccept</code>、<code>onDialogCancel</code> のような名前を使うようにしてください。こうすることで明白になります。</li> <li>関数名、ローカル変数、オブジェクトのメンバに接頭辞はいりません。</li> <li>ローカル変数はできるかぎりそれが使用されるところの近くで宣言するようにしてください。そしてすべての変数を初期化するようにしてください。</li> <li>XUL オーバレイでコードを挿入するときは、既存あるいは将来の関数名や変数名との衝突を避けるために、関数や変数を一意の名前を持つオブジェクトの中に隠蔽してください。</li>
+</ul>
+<pre class="eval">var UniqueName = {
+ _privateMember: 3,
+ publicMember: "A string",
+
+ init: function UN_init() {
+ this.doSomething(this.anotherMember);
+ },
+
+ doSomething: function UN_doSomething(aParam) {
+ alert(aParam);
+ }
+};
+</pre>
+<h2 id="JavaScript_.E3.82.89.E3.81.97.E3.81.84.E9.83.A8.E5.88.86" name="JavaScript_.E3.82.89.E3.81.97.E3.81.84.E9.83.A8.E5.88.86">JavaScript らしい部分</h2>
+<ul> <li>以下のような厳格な JavaScript の警告が書いたコードに対して出ていないかを確認してください。 <ul> <li>変数の宣言の重複</li> <li><code>return;</code> と <code>return value;</code> の混合。</li> <li>JavaScript オブジェクトの宣言における末尾のコンマ。</li> <li>未宣言の変数やメンバ。配列の値が存在するか不確かな場合はインデックスを配列の長さと比較してください。オブジェクトのメンバが存在するか不確かな場合は <code>"name" in aObject</code> を使用してください。期待している特定の型があるのであれば <code>typeof aObject.name == "function"</code>(または期待している型)を使用しても構いません。</li> </ul> </li> <li>JavaScript 配列を作るときは混乱しやすい <code>new Array(value1, value2)</code> よりも <code>{{ mediawiki.external('value1, value2') }}</code> を使用してください。<code>{{ mediawiki.external('value') }}</code> は常に 1 要素の配列を生成するのに対して、<code>new Array(length)</code> は実際には与えられた論理的な長さを持つ物理的には空の配列を生成するからです。配列用にメモリをあらかじめ割り当てることができるかは実際には保証できません。</li> <li>JavaScript オブジェクトを作るときは <code>{ member: value, ... }</code> を使用してください。<code>new Object()</code> に対して有利な点は、初期プロパティを作ることができ、さらに拡張 JavaScript 構文を使用してゲッタやセッタを定義することができることです。デフォルトのプロパティを代入する必要があるコンストラクタが定義されている場合、オブジェクトリテラルをプロトタイププロパティに代入するようにしてください。</li>
+</ul>
+<pre>function SupportsString(data) {
+ this.data = data;
+}
+SupportsString.prototype = {
+ toString: function toString() {
+ return data;
+ }
+};
+</pre>
+<ul> <li>正規表現を使用してください。だだし賢く使用してください。例えば、<code>aString</code> がホワイトスペースではないことをチェックするには <code>/\S/.test(aString);</code> を使用してください。結果の位置を知る必要がある場合でのみ <code>aString.search</code> を使用してください。また、マッチした部分文字列(正規表現では括弧区切り)をまとめたい場合にのみ <code>aString.match</code> を使用してください。マッチするかがあらかじめわかっていない場合や、文字列の決まった既知の場所から部分文字列を抜き出す場合は正規表現はあまり便利ではありません。例えば、<code>aString.slice(-1)</code> は <code>aString</code> の最後の文字を返します。<code>aString</code> が空であれば空の文字列を返します。</li> <li>真偽値を <code>true</code> や <code>false</code> と比較しないでください。例えば、<code>if (ioService.offline)</code> のように書いてください。混乱のおそれがある場合、オブジェクトなら <code>null</code> と、数値なら <code>0</code> と、文字列なら <code>""</code> と比較してください。</li> <li>どんなときでも <a href="/ja/JavaScript/Reference" title="ja/Core_JavaScript_1.5_Reference">JavaScript リファレンス</a> を読む価値があります。例えば、あたかも配列かのように、文字列にインデックスを付けることができるということを忘れないようにするために。</li>
+</ul>
+<h2 id="XPConnect" name="XPConnect">XPConnect</h2>
+<ul> <li>オブジェクトのメソッドやプロパティを必要以上に使用しないでください。一時変数に結果を格納しておくとより高速になります。</li> <li>必要のないメソッドを呼び出さないでください。例えば、1 つのウィンドウに対してならば <code>windowManager.getEnumerator(aType).hasMoreElements()</code> ではなく <code>windowManager.getMostRecentWindow(aType) != null</code> が使用できます。</li> <li>そのインタフェースのメソッドやプロパティにアクセスする必要がないときは、インタフェースにクエリをかけないでください。オブジェクトを比較するときもオブジェクトをパラメータとして渡すときもインタフェースにクエリをかける必要はありません。(C++ では両者とも必要です。)</li> <li>成功しそうでないときは <code>QueryInterface</code> を呼び出さないでください。その代わりに <code>instanceof</code> を使用してください。</li>
+</ul>
+<pre>if (target instanceof Components.interfaces.nsIRDFResource)
+ return target.Value;
+if (target instanceof Components.interfaces.nsIRDFLiteral)
+ return target.Value;
+return null;
+</pre>
+<ul> <li><code>QueryInterface</code> の戻り値をテストしないでください。成功すると常にオリジナルの変数を返します。XPConnect は tearoff に関してすべて知っていますし、既知のインタフェースをすべて得るために <code>QueryInterface</code> や <code>instanceof</code> をしたオブジェクトを変更します。</li> <li>オブジェクトを XPCOM のメソッドに渡す際に、渡すオブジェクトが XPCOM オブジェクトかどうか確認することはしばしば有用です。そうすることで C++ のメソッドは C++ のオブジェクトにアクセスできます。しかし、これは常に必要であるとは限りません。例えば、上で宣言したオフラインオブザーバは XPCOM オブジェクトとともに登録された JavaScript のオブジェクトです。そうすることで XPCOM からのコールバックが JavaScript のメソッドを実行できます。XPCOM メソッドにはいくつかのインタフェースを実装したオブジェクトを期待したものもあります。そのために <code>QueryInterface</code> メソッドを使う必要が出てきます。しかし、C++ だとヘルパクラスを必要とする弱参照については、JavaScript だと至極簡単に書けます。</li>
+</ul>
+<pre>var weakObserver = {
+ QueryInterface: function QueryInterface(aIID) {
+ if (aIID.equals(Components.interfaces.nsIObserver) ||
+ aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
+ aIID.equals(Components.interfaces.nsISupports))
+ return this;
+ throw Components.results.NS_NOINTERFACE;
+ },
+ observe: function observe(aSubject, aTopic, aState) {
+ }
+}
+</pre>
+<ul> <li>XPCOM メソッドを宣言するときは、インタフェース定義で使われているのと同じメソッドのパラメータの名前を使用するようにしてください。</li>
+</ul>
+<h2 id="DOM_.E8.A6.81.E7.B4.A0" name="DOM_.E8.A6.81.E7.B4.A0">DOM 要素</h2>
+<ul> <li>DOM 要素は単にあらかじめいくつかインタフェースが備わっている XPCOM オブジェクトです。</li> <li>ある属性が存在しているかを確かめるのに <a href="/ja/DOM/element.getAttribute" title="ja/DOM/element.getAttribute">getAttribute</a> を呼び出さないでください。その代わりに <a href="/ja/DOM/element.hasAttribute" title="ja/DOM/element.hasAttribute">hasAttribute</a> を呼び出してください。</li> <li>next/previousSibling と一緒に first/lastChild を使うのではなく、childNodes に対するループを使うようにしてください。ただし、<code>childNodes.length &gt; 0</code> ではなく hasChildNodes() を使用してください。同様に、<code>document.getElementsByTagName(aTag).length &gt; 0</code> ではなく <code>document.getElementsByTagName(aTag).item(0) != null</code> を使用するようにしてください。</li> <li>tagName ではなく localName を使用するようにしてください。</li> <li>XUL の要素にはプロパティに対応した属性がたくさんあります。こうなっているのには理由がありますので、どんどん使用してください。そのプロパティは以下のものです。 <ul> <li>id</li> <li>align</li> <li>dir</li> <li>flex</li> <li>orient</li> <li>pack</li> <li>observes</li> <li>contextMenu</li> <li>tooltip</li> <li>width</li> <li>height</li> <li>minWidth</li> <li>minHeight</li> <li>maxWidth</li> <li>maxHeight</li> <li>persist</li> <li>left</li> <li>top</li> <li>datasources</li> <li>ref</li> <li>tooltipText</li> <li>statusText</li> <li>allowEvents</li> </ul> </li> <li>XUL は <code>ordinal</code> 属性も対応させていますが、これがない場合のデフォルトは "1" です。</li> <li>XUL は <code>class</code> 属性も対応させていますが、残念ながら <code>class</code> は予約済みの識別子であるためにプロパティは <code>className</code> という名前です。(プロパティは <code>{{ mediawiki.external('"class"') }}</code> として実装できそうですが、見た目が悪いです。)</li> <li>XUL は <code>hidden</code> および <code>collapsed</code> 属性もプロパティに対応させていますが、上のリストがすべて文字列のプロパティであるのに対してこれらは真偽値のプロパティであることに注意してください。</li> <li>XBL バインディングを使うことで XUL は他の便利なプロパティやメソッドも対応させられますが、これは要素によって異なります。</li> <li>最高のパフォーマンスを求めるために、すべての重要な要素に id を付けてください。しかしながら、タグ名によって要素を特定することに加えて、XUL は属性によって要素を特定することもできます。使える属性は文書の要素によって異なります。</li> <del><code>event.keyCode == 13</code> ではなく <code>event.keyCode == KeyEvent.DOM_VK_RETURN</code> のような DOM 定数を使用するのを忘れないでください。</del><ins>現在、KeyEvent定数はDOM仕様から外れたため(既に他のブラウザでもサポートされていない場合が多い)、数値を用いて比較するのが妥当です。</ins> </ul> <h2 id=".E3.82.A4.E3.83.B3.E3.83.87.E3.83.B3.E3.83.88.E3.81.AE.E4.BE.8B" name=".E3.82.A4.E3.83.B3.E3.83.87.E3.83.B3.E3.83.88.E3.81.AE.E4.BE.8B">インデントの例</h2> <p>妥当なインデントの例:</p> <pre class="eval">var result = prompt(aMessage,
+ aInitialValue,
+ aCaption);
+
+var IOService = Components.classes["@mozilla.org/network/io-service;1"]
+ .getService(Components.interfaces.nsIIOService);
+</pre> <p>XPCOM コンポーネントの初期化の妥当なスタイル:</p> <pre class="eval">var IOService = Components.classes["@mozilla.org/network/io-service;1"]
+ .getService(Components.interfaces.nsIIOService);
+
+const Ci = Components.interfaces;
+const Cc = Components.classes;
+
+var IOService = Cc["@mozilla.org/network/io-service;1"].
+ getService(Ci.nsIIOService);
+
+var IOService = Cc["@mozilla.org/network/io-service;1"].
+ getService(Ci.nsIIOService);
+</pre> <pre class="eval">Cc["@mozilla.org/consoleservice;1"].getService(Ci.nsIConsoleService)
+ .logStringMessage(aMsg);
+</pre> <h2 id=".E3.83.84.E3.83.BC.E3.83.AB" name=".E3.83.84.E3.83.BC.E3.83.AB">ツール</h2> <ul> <li><a class="external" href="http://beaufour.dk/jst-review/">JST Review</a> - C++ 用ではありますが、基本的な JS のルール(タブ、行の長さなど)にも対応しています。</li> </ul> <h2 id=".E5.8F.82.E8.80.83.E8.B3.87.E6.96.99" name=".E5.8F.82.E8.80.83.E8.B3.87.E6.96.99">参考資料</h2> <ul> <li>これは <a class="external" href="http://neil.rashbrook.org/JS.htm" title="http://neil.rashbrook.org/JS.htm">Neil のガイド</a> を転載することから始まりました</li> <li>より新しい情報はこの <a class="external" href="http://dietrich.ganx4.com/blog/?p=226">ブログの投稿</a> にあります</li> </ul> <p>{{ languages( { "en": "en/JavaScript_style_guide" } ) }}</p>
diff --git a/files/ja/mozilla/js-ctypes/index.html b/files/ja/mozilla/js-ctypes/index.html
new file mode 100644
index 0000000000..30ad2d77e2
--- /dev/null
+++ b/files/ja/mozilla/js-ctypes/index.html
@@ -0,0 +1,97 @@
+---
+title: js-ctypes
+slug: Mozilla/js-ctypes
+translation_of: Mozilla/js-ctypes
+---
+<p>{{deprecated_header}}{{jsctypesSidebar("Introduction")}}</p>
+
+<p><strong>js-ctypes</strong> はアプリケーションと拡張コードが C で書かれたネイティブコードとやり取りすることを可能にします。<code>vtable</code> ポインタを通して可能です。<a href="/ja/docs/Mozilla/js-ctypes/Examples/Using_COM_from_js-ctypes">js-ctypes から COM を使う</a>を見てください。 拡張 C++ サポートについての議論は {{bug("505907")}} を見てください。js-ctypes によって可能にされた他の仕事は JNI で、これは <a href="/ja/docs/Mozilla/JavaScript_code_modules/JNI.jsm">JNI.jsm</a> セクションで詳しく説明しますが、js-ctypes セクションではなくすべての js-ctypes を抽象化します。バイナリの XPCOM コンポーネントとは異なり、開発者は Firefox の複数のバージョンで使用するための単一のバイナリをデリバリすることができます。</p>
+
+<div class="note"><strong>Note:</strong> js-ctypes is only available from chrome code; that is, ctypes is not available to websites, only application and extension code.</div>
+
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2>
+
+ <p class="summary">If you are brand new to js-ctypes, and have no idea about it, the pages you should read first is - <a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/ctypes.open">ctypes.open </a>followed by <a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Standard_OS_Libraries">Standard OS Libraries</a>.</p>
+
+ <dl>
+ <dt><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes" title="Mozilla/js-ctypes/Using_js-ctypes">Using JS-Ctypes</a></dt>
+ <dd>
+ <ul>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/ctypes.open">ctypes.open</a>
+ <ul>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/ctypes.open#Custom_Native_File">Custom Native File</a></li>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Standard_OS_Libraries" title="Mozilla/js-ctypes/Standard_Libraries_per_OS">Standard OS Libraries</a>
+ <ul>
+ <li><a href="/en-US/Add-ons/Code_snippets/Finding_Window_Handles">Finding window handles</a></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Working_with_data">Working with Data</a></li>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Working_with_ArrayBuffers">Working with ArrayBuffers</a></li>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Declaring_types">Declaring Types</a></li>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Declaring_and_calling_functions">Declaring and Calling Functions</a></li>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/Callbacks">Declaring and Using Callbacks</a></li>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/Using_js-ctypes/Type_conversion">Type Conversion</a></li>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/Memory_Management">Memory Management</a></li>
+ <li><a href="/en-US/docs/Web/API/ChromeWorker">ChromeWorker</a></li>
+ </ul>
+ </dd>
+ <dt><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference" title="js-ctypes/js-ctypes_reference">JS-ctypes Reference</a></dt>
+ <dd>A reference guide to the js-ctypes API.
+ <ul>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/ABI">ABI</a></li>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/CData">CData</a></li>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/CType">CType</a></li>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/ctypes">ctypes</a></li>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/FunctionType">FunctionType</a></li>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/Int64">Int64</a></li>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/Library">Library</a></li>
+ <li><a href="/en-US/docs/Mozilla/js-ctypes/js-ctypes_reference/UInt64">UInt64</a></li>
+ </ul>
+ </dd>
+ </dl>
+
+ <p><span class="alllinks"><a href="/en-US/docs/tag/js-ctypes" title="tag/js-ctypes">View All...</a></span></p>
+
+ <h2 class="Tools" id="Examples" name="Examples"><a href="/en-US/docs/Mozilla/js-ctypes/Examples" title="Mozilla/js-ctypes/Examples">Examples</a></h2>
+
+ <dl>
+ <dt><a href="/en-US/docs/Mozilla/js-ctypes/Examples/Add_to_iPhoto" title="Mozilla/js-ctypes/Examples/Add_to_iPhoto">Add to iPhoto</a></dt>
+ <dd>A Firefox extension that uses js-ctypes to call Carbon and Core Foundation framework routines on Mac OS X to implement an "Add image to iPhoto" feature in Firefox.</dd>
+ <dt><a href="/en-US/docs/Mozilla/js-ctypes/Examples/Using_C_structs_and_pointers">Using C structs and pointers</a></dt>
+ <dd> </dd>
+ <dt><a href="/en-US/docs/Mozilla/js-ctypes/Examples/Using_COM_from_js-ctypes">Using COM from js-ctypes</a></dt>
+ <dd> </dd>
+ <dt><a href="/en-US/docs/Mozilla/js-ctypes/Examples/Using_Objective-C_from_js-ctypes">Using Objective-C from js-ctypes</a></dt>
+ </dl>
+
+ <dl>
+ <dt><a href="https://github.com/ochameau/jscpptypes">Github :: ochameau / jscpptypes</a></dt>
+ <dd>A mangling library to use C++ from js-ctypes</dd>
+ </dl>
+ </td>
+ <td>
+ <h2 class="Community" id="Community" name="Community">Community</h2>
+
+ <ul>
+ <li>View Mozilla forums...{{DiscussionList("dev-extensions", "mozilla.dev.extensions")}}</li>
+ <li><a href="irc://moznet/jsctypes">IRC - #jsctypes</a></li>
+ <li><a href="http://stackoverflow.com/questions/tagged/jsctypes">Stackoverflow - jsctypes</a></li>
+ </ul>
+
+ <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related Topics</h2>
+
+ <ul>
+ <li><a href="/en-US/docs/Mozilla/Tech/XPCOM/Guide/Changes_in_Gecko_2.0#Binary_components">XPCOM in Gecko 2 - Binary Components</a></li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p> </p>
diff --git a/files/ja/mozilla/localization/bootstrapping_a_new_locale/index.html b/files/ja/mozilla/localization/bootstrapping_a_new_locale/index.html
new file mode 100644
index 0000000000..c323372cd3
--- /dev/null
+++ b/files/ja/mozilla/localization/bootstrapping_a_new_locale/index.html
@@ -0,0 +1,225 @@
+---
+title: 新しいロケールのブートストラップ
+slug: Mozilla/Localization/Bootstrapping_a_new_locale
+translation_of: Mozilla/Localization/Bootstrapping_a_new_locale
+---
+<p>(see also https://developer.mozilla.org/en/Create_a_new_localization)</p>
+
+<div class="warning">
+<p>ここの文書はもはや維持されておらず、不正確です。 L10nのドキュメントは、<a class="external external-icon" href="https://mozilla-l10n.github.io/localizer-documentation/" rel="noopener">https://mozilla-l10n.github.io/localizer-documentation/</a> に移動しました。Mozilla プロジェクトの新しいロケールをブートストラップする方法については、それらのドキュメントを参照してください。</p>
+</div>
+
+<p>In Mozilla, we use the the <a href="/en/Mercurial_basics" title="en/Mercurial basics">Mercurial</a> version control system (Hg) to help manage our localizations. When a <a class="link-https" href="https://wiki.mozilla.org/L10n:Starting_a_localization#Team_building" title="https://wiki.mozilla.org/L10n:Starting_a_localization#Team_building">localization team is registered</a> and your Hg repository is set up for a locale, you can then clone the existing Mozilla release branch (i.e. where active development of the upcoming release of Firefox occurs) and then begin the necessary work for translation.  Hg allows localizers to work locally on their machines and then "push" changes to their official Mozilla repository.</p>
+
+<h2 id="Mercurial_のインストール">Mercurial のインストール</h2>
+
+<p>Depending on your operating system, you will need to install the correct version of Hg on your machine.  <a href="/en/Installing_Mercurial" title="https://developer.mozilla.org/en/Installing_Mercurial">This document</a> will give you the basic information on how to do that.</p>
+
+<h2 id="compare-locales_ユーティリティをインストールする">compare-locales ユーティリティをインストールする</h2>
+
+<p>The next step is to install <code>compare-locales</code>.</p>
+
+<pre>$ sudo easy_install compare-locales
+</pre>
+
+<p>This will download and install the utility.</p>
+
+<h2 id="ソースコードをクローン">ソースコードをクローン</h2>
+
+<p>The next step is to <a class="internal" href="/en/Developer_Guide/Source_Code/Mercurial" rel="internal" title="en/Developer Guide/Source Code/Mercurial">download a copy of the source code</a> to your local system, using Mercurial.  You will need to "hg clone" the existing release branch for Mozilla<br>
+ so you have all the files locally for you to begin localization.  Make sure to have the directory where you intend to work as the current path on your terminal.  (You should "cd" to the directory before beginning.) </p>
+
+<p>In the terminal, type the following command:</p>
+
+<pre>$ hg clone http://hg.mozilla.org/releases/mozilla-x.x.x/</pre>
+
+<p>Where "x.x.x" is the existing release branch version.  For instance, for Firefox 3.6, we use <code>mozilla-1.9.2</code>. Refer to <a class="external" href="http://wiki.mozilla.org/L10n:Branches" title="http://wiki.mozilla.org/L10n:Branches">L10n:Branches</a> for the list of all branches.</p>
+
+<p>If you are interested in localizing Thunderbird 3, SeaMonkey 2 or other Mozilla projects based on Gecko 1.9.1 you'll need to follow the instructions on <a href="../../../../En/Developer_Guide/Source_Code/Getting_comm-central" rel="internal">getting the source-code of the comm-central repository</a>.</p>
+
+<h2 id="Create_a_bare-bones_localization">Create a bare-bones localization</h2>
+
+<p>Next, create a base localization.  This is done by cloning the en-US (United States English) files into your localization.  First, you should specify your locale's language identifier in ab-CD format, where "ab" is the <a class="external" href="http://www.w3.org/WAI/ER/IG/ert/iso639.htm" title="http://www.w3.org/WAI/ER/IG/ert/iso639.htm">ISO 639 language code</a>, and CD is the <a class="external" href="http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_elements.htm" title="http://www.iso.org/iso/country_codes/iso_3166_code_lists/english_country_names_and_code_elements.htm">ISO 3166 country code</a>.  The "-CD" part is only necessary to differentiate between versions of a language that are subtly different from country to country, such as in "en-US" and "en-GB" for United States English and British English.</p>
+
+<p>Before you run the copy commands, you need to make the locale directory at the same level as the <code>mozilla-1.9.x/</code> you just cloned from above.  Navigate to that level making sure you are *not* inside <code>mozilla-1.9.x/</code> and then run the following commands.</p>
+
+<div class="warning"><strong>警告:</strong> これらのコマンドをコピー&ペーストしないでください。"ab-CD" を最初に言語識別子に、1.9.x を最新のリリースブランチに置き換える必要があります。 例えば、Firefox 3.6 は1.9.2ブランチからリリースされています。</div>
+
+<pre><span style="color: #ff0000;">from now on may be needs some corrections, (see expected structure below $cd ab-CD/browser/chrome/browser)
+may be needs $</span>cp -R mozilla-1.9.x/browser/locales/en-US/ ab-CD <span style="color: #ff0000;">and then </span><span>$mv ab-CD/en-US ab-CD/browser</span><span style="color: #ff0000;"> and the same for the others
+the commands seems symbolic and not real ... see also structure expected more below.
+/editor/ is in 1.9.2 ? netwerk not error ?
+</span>
+mkdir -p ab-CD/browser/installer ab-CD/browser/profile/chrome ab-CD/browser/searchplugins ab-CD/browser/updater ab-CD/toolkit
+cp -R mozilla-1.9.x/browser/locales/en-US/ ab-CD/browser
+cp -R mozilla-1.9.x/dom/locales/en-US/ ab-CD/dom
+cp -R mozilla-1.9.x/editor/locales/en-US/ ab-CD/editor
+cp -R mozilla-1.9.x/extensions/reporter/locales/en-US/chrome ab-CD/extensions
+cp -R mozilla-1.9.x/netwerk/locales/en-US/ ab-CD/netwerk
+cp -R mozilla-1.9.x/other-licenses/branding/firefox/locales/en-US/ ab-CD/other-licenses
+cp -R mozilla-1.9.x/security/manager/locales/en-US/ ab-CD/security
+cp -R mozilla-1.9.x/toolkit/locales/en-US/ ab-CD/toolkit
+</pre>
+
+<h2 id="Getting_started">Getting started</h2>
+
+<p>Change your directory to the new working directory so you are in the <code>~/[your working directory]/[ab-CD]/</code> path and can start localizing. We'll first navigate to the directory called "browser" by running the following commands one after the other from your command line:</p>
+
+<pre>$ cd [ab-CD]/browser/chrome/browser</pre>
+
+<p>To see what is contained in "browser" type</p>
+
+<pre>$ ls</pre>
+
+<p>And, you should see the following output from your terminal:</p>
+
+<pre>aboutCertError.dtd pageInfo.dtd aboutDialog.dtd pageInfo.properties aboutPrivateBrowsing.dtd pageReportFirstTime.dtd
+aboutRobots.dtd places aboutSessionRestore.dtd preferences aboutSupport.dtd quitDialog.properties
+baseMenuOverlay.dtd safeMode.dtd browser.dtd safebrowsing browser.properties sanitize.dtd
+credits.dtd search.properties engineManager.dtd searchbar.dtd engineManager.properties setDesktopBackground.dtd
+feeds shellservice.properties history sidebar migration tabbrowser.dtd
+openLocation.dtd tabbrowser.properties openLocation.properties</pre>
+
+<p>As a localizer, you are responsible for localizing each of the ".dtd" and ".properties" in *all* of the sub-directories found in your ab-CD directory.</p>
+
+<h2 id="Directories_to_localize">Directories to localize</h2>
+
+<p>If you're starting from scratch, you should have just downloaded:</p>
+
+<pre>mozilla-1.9.x/browser/locales/en-US/
+mozilla-1.9.x/dom/locales/en-US/
+mozilla-1.9.x/netwerk/locales/en-US/
+mozilla-1.9.x/other-licenses/branding/firefox/locales/en-US
+mozilla-1.9.x/security/manager/locales/en-US/
+mozilla-1.9.x/toolkit/locales/en-US/</pre>
+
+<p>And then copied them so that the files for localization end up in the following directories:</p>
+
+<pre>ab-CD/browser/
+ab-CD/dom/
+ab-CD/netwerk/
+ab-CD/other-licenses/branding/firefox/
+ab-CD/security/manager/
+ab-CD/toolkit/ </pre>
+
+<h2 id="Translating">Translating</h2>
+
+<p>To start editing, you will need a text editing application. You can choose to use:</p>
+
+<ul>
+ <li><a class="external" href="http://notepad-plus.sourceforge.net/uk/site.htm" title="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a> or <a class="external" href="http://www.flos-freeware.ch/notepad2.html" title="http://www.flos-freeware.ch/notepad2.html">Notepad2</a> on Windows,</li>
+ <li><a class="external" href="http://en.wikipedia.org/wiki/Vim_%28text_editor%29" title="http://en.wikipedia.org/wiki/Vim_(text_editor)">vim</a>, <a class="external" href="http://projects.gnome.org/gedit/" title="http://projects.gnome.org/gedit/">gedit</a> or <a class="external" href="http://www.kate-editor.org/kate" title="http://www.kate-editor.org/kate">Kate</a> on GNU/Linux,</li>
+ <li><a class="external" href="http://www.barebones.com/products/TextWrangler/" title="http://www.barebones.com/products/TextWrangler/">TextWrangler</a> on Mac OS X.</li>
+</ul>
+
+<p><span style="font-size: x-small;">(Read more about tools at </span><a class="link-https" href="https://wiki.mozilla.org/L10n:Tools" title="https://wiki.mozilla.org/L10n:Tools"><span style="font-size: x-small;">L10n:Tools</span></a><span style="font-size: x-small;">.)</span></p>
+
+<p>After you have downloaded your editor of choice, type the following command in the same path from above (~/ab-CD/browser/chrome/browser)</p>
+
+<pre>$ edit ab-CD/browser/chrome/browser/aboutCertError.dtd</pre>
+
+<p>Read the top of the file to get any context on how to translate contained in the notes written by the developers or l10n-drivers.  Localization notes will look like this:</p>
+
+<pre>&lt;!-- LOCALIZATION NOTES... --&gt;</pre>
+
+<p>After the localization notes, you will see a list of <code>&lt;!ENTITY&gt;</code> strings like the following:</p>
+
+<pre>&lt;!ENTITY certerror.pagetitle "Untrusted Connection"&gt;</pre>
+
+<p>You should go through each entity, translating  the value in the parameters (e.g. <code>Untrusted Connection</code> in the example above), like so (example for Polish):</p>
+
+<pre>&lt;!ENTITY certerror.pagetitle "Niezaufane połączenie"&gt;</pre>
+
+<p>Once you have translated all the <code>&lt;!ENTITY&gt;</code> strings in this file, you should save your work and open the next .dtd or .property file.  You will need to go through each and every file to in every directory in ab-CD.</p>
+
+<h2 id="Recommended_order_of_localization">Recommended order of localization</h2>
+
+<p>For recommended order of localization, refer to the localization "phase list" which provides a very rough guide on where to start and in what order to proceed through translation.</p>
+
+<ul>
+ <li><a class="external" href="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/" title="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/">The localization phase lists</a> (Firefox 3.5: <a class="external" href="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/ff35.phaselist?view=markup" title="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/ff35.phaselist?view=markup">ff35.phaselist</a>, Firefox 3.6: <a class="external" href="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/ff36.phaselist?view=markup" title="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/ff36.phaselist?view=markup">ff36.phaselist</a>).</li>
+ <li><a class="external" href="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/phases?view=markup" title="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/phases?view=markup">Description of phases.</a></li>
+</ul>
+
+<p>Land your translated files one by one, making sure it follows the *mozilla-1.9.2* structure.  This will familiarize you with our "Hg"<br>
+ commands and will get us something that we can import easily when you are done.</p>
+
+<h2 id="Working_with_Bit_Bucket">Working with Bit Bucket</h2>
+
+<p>Before a team becomes official, we like to get the localizers comfortable with the Hg commands that allow for cloning, pulling, committing, and pushing work to an experimental repository.  We use a web service called <a class="external" href="http://www.bitbucket.org" title="http://www.bitbucket.org/">Bit Bucket</a> to start the learning process.</p>
+
+<p>To begin, contact the l10n-drivers to let them know that you are interested in starting a localization.  The l10n-drivers will help set up an experimental Hg repository in Bit Bucket. You will need to create an account so you can access the service.  Once you have that account, send the l10n-drivers the details to be added as a "writer".  With that level of authority, you will be able to push and pull and manage the repository remotely.  It will be just like working on Hg with Mozilla, yet you will use the Bit Bucket platform to start.</p>
+
+<p>After your new Bit Bucket repository is created by the l10n-drivers, please visit the URL for your repo.  You can do this by entering the following URL into your browser:</p>
+
+<pre>$ https://bitbucket.org/mozillal10n/ab-CD/overview/</pre>
+
+<p>(where ab-CD will be replaced by your locale code)</p>
+
+<p>At that main page of your newly created Bit Bucket repo, you'll see the Hg commands,</p>
+
+<pre style="margin-left: 40px;">$ hg clone http://bitbucket.org/mozillal10n/ab-CD/ ...
+$ hg pull -u # to pull changes and update
+$ hg push # to push changes to this repo
+</pre>
+
+<p style="margin-left: 40px;"><em>Import existing data?</em></p>
+
+<pre style="margin-left: 40px;">$ cd /path/to/existing/hg/repo/
+$ hg push http://bitbucket.org/mozillal10n/ab-CD/</pre>
+
+<p style="margin-left: 40px;"><em>Prefer SSH?</em></p>
+
+<pre style="margin-left: 40px;">$ hg clone ssh://hg@bitbucket.org/mozillal10n/ab-CD/
+$ hg push ssh://hg@bitbucket.org/mozillal10n/ab-CD/</pre>
+
+<p>As you begin to move through your translations, you should "commit" the changes locally and "push" your work to this experimental respository.  For instance, if you have finished translating all the .dtd and .property files in your ~/ab-CD/browser/ directory, then you should</p>
+
+<pre style="margin-left: 40px;">$ cd ~/ab-CD/
+$ hg status
+$ hg commit -m "Translated browser/"
+$ hg push http://bitbucket.org/mozillal10n/ab-CD/
+</pre>
+
+<p>Note that due to the distributed nature of Hg, <code>hg commit</code> saves the changes locally, i.e. in the Hg repository on your computer. You can see the history of commits with <code>hg log</code>. After doing <code>hg commit</code>, you still need to send the changes to BitBucket. This is why you need to do <code>hg push</code>, which sends the already made commits to the remote repository (<code><a class="external" href="http://bitbucket.org/mozillal10n/ab-CD/" rel="freelink">http://bitbucket.org/mozillal10n/ab-CD/</a></code> in the example above).</p>
+
+<p>After you have committed and pushed your initial translation, email the l10n-drivers team to let us know it's ready.</p>
+
+<h2 id="Set_up_for_building">Set up for building</h2>
+
+<p>The next step is to create a <code>.mozconfig</code> file with the compile options for the localized build of Firefox, and to set up the object directory for the localized build.</p>
+
+<pre>cd mozilla-1.9.1
+echo "mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../fx-ab-DC" &gt; .mozconfig
+echo "ac_add_options --with-l10n-base=../" &gt;&gt; .mozconfig
+echo "ac_add_options --disable-compile-environment" &gt;&gt; .mozconfig
+echo "ac_add_options --enable-application=browser" &gt;&gt; .mozconfig
+make -f client.mk configure
+</pre>
+
+<h3 id="Create_a_language_pack" name="Create_a_language_pack">Create a language pack</h3>
+
+<p>First, we'll create a build directory. This sounds worse than it is, you won't need to actually build, but we'll need to setup something that looks like it. You're still in the <code>l10n</code> directory, right? We'll create <code>build</code> right next to it. The name of that directory doesn't really matter, so no reason to change it.</p>
+
+<pre class="eval">mkdir ../build
+cd ../build
+</pre>
+
+<p>Now we'll set up a not-so-compile environment by calling configure. If you just checked out the localizable parts of en-US above, it will create a plethora of warnings <code>No such file or directory</code>, but no errors.</p>
+
+<pre class="eval">../mozilla/configure --disable-compile-environment --enable-application=browser
+</pre>
+
+<p>Whenever you need a build directory, these are the steps that you need to do to initialize it. If you're downloading a new release of Firefox from CVS, you might want to run configure again, too.</p>
+
+<p>Now we can actually create the language pack,</p>
+
+<pre class="eval">make -C browser/locales langpack-en-X-dude
+</pre>
+
+<p>You should find your newly created language pack in <code>dist/install</code>.</p>
+
+<pre class="eval">ls dist/install
+</pre>
+
+<p>You can open that file in Firefox and check it out. You have to set your selected language still. You can either use the <a class="link-https" href="https://addons.mozilla.org/de/firefox/addon/356">Locale Switcher</a> extension, or set it in <code>about:config</code>. Set the <code>general.useragent.locale</code> to your language code, in this case, <code>en-X-dude</code>, and restart Firefox once more.</p>
diff --git a/files/ja/mozilla/localization/index.html b/files/ja/mozilla/localization/index.html
new file mode 100644
index 0000000000..430105cc7b
--- /dev/null
+++ b/files/ja/mozilla/localization/index.html
@@ -0,0 +1,27 @@
+---
+title: Mozilla でのローカライズ
+slug: Mozilla/Localization
+tags:
+ - Landing
+ - Mozilla
+ - l10n
+ - ローカライズ
+ - 翻訳
+translation_of: Mozilla/Localization
+---
+<p><span class="seoSummary"><strong>ローカライゼイション</strong> (L10n) とは、ソフトウェアのユーザインタフェースをある言語に翻訳し、またその言語の文化で扱いやすいように適応させるのための一連の作業のことです。これらのリソースは、ローカライゼイションに関わる技術的な側面に興味のあるすべての人たちのためのものです。</span>特に、開発者とすべての貢献者の役に立つことを意図しています。</p>
+
+<div class="warning">
+<p>ここの文書はもはや維持されておらず、不正確です。 L10nのドキュメントは、<a href="https://mozilla-l10n.github.io/localizer-documentation/">https://mozilla-l10n.github.io/localizer-documentation/</a>に移動しました。Mozilla プロジェクトの新しいロケールをブートストラップする方法については、それらのドキュメントを参照してください。</p>
+</div>
+
+<h2 id="関連項目">関連項目</h2>
+
+<dl>
+ <dt><a href="https://developer.mozilla.org//ja/docs/MDN/Contribute/Localize" title="/ja/docs/MDN/Contribute/Localize">MDN でのローカライズ</a></dt>
+ <dd>こちらの記事では、ここ、つまり MDN にある文書の翻訳について説明します。</dd>
+ <dt><a href="https://developer.mozilla.org/ja/Apps/Build/Localization">App localization</a></dt>
+ <dd>こちらの一連の文書は、アプリのローカライズに特化したものです。Firefox OS アプリも含みます。</dd>
+ <dt><a href="https://developer.mozilla.org/ja/docs/Web/API/L10n">L10n</a></dt>
+ <dd>Firefox OS をローカライズするために Mozilla が使う API のリファレンスです。</dd>
+</dl>
diff --git a/files/ja/mozilla/localization/index/index.html b/files/ja/mozilla/localization/index/index.html
new file mode 100644
index 0000000000..821da2cc9c
--- /dev/null
+++ b/files/ja/mozilla/localization/index/index.html
@@ -0,0 +1,6 @@
+---
+title: 索引
+slug: Mozilla/Localization/Index
+translation_of: Mozilla/Localization/Index
+---
+<p>{{Index("/ja/docs/Mozilla/Localization")}}</p>
diff --git a/files/ja/mozilla/localization/localizing_with_pontoon/index.html b/files/ja/mozilla/localization/localizing_with_pontoon/index.html
new file mode 100644
index 0000000000..7a5e3b0dce
--- /dev/null
+++ b/files/ja/mozilla/localization/localizing_with_pontoon/index.html
@@ -0,0 +1,137 @@
+---
+title: Pontoon でローカライズする
+slug: Mozilla/Localization/Localizing_with_Pontoon
+tags:
+ - Localization
+translation_of: Mozilla/Localization/Localizing_with_Pontoon
+---
+<p><a href="https://pontoon.mozilla.org" title="https://pontoon.mozilla.org">Pontoon</a> は、ウェブベースで、What-You-See-Is-What-You-Get (WYSIWYG) のローカライズ (l10n) ツールです。Mozilla では、すべての Mozilla の製品やウェブサイトをローカライズするために使用します。Pontoon は、l10n のワークフローで技術的なスキルはほとんど必要なく、とても簡単で直感的に使用できるツールです。サインインから貢献を完了するところまで、プロジェクトをローカライズするのに、Pontoon を使用する方法を説明します。手順に沿って、l10n の貢献を効率的に、そして簡単にする素晴らしい機能をいくつか説明します。</p>
+
+<div class="note">
+<p><strong>開発者の場合</strong>、<a href="/docs/Implementing_Pontoon_Mozilla">プロジェクトに Pontoon を実装する方法</a> や <a href="https://github.com/mozilla/pontoon">GitHub</a> で参加する方法をご覧ください。</p>
+</div>
+
+<h2 id="First_steps" name="First_steps">第一ステップ</h2>
+
+<p><a href="https://pontoon.mozilla.org" title="https://pontoon.mozilla.org">Pontoon のホームページ</a> を使用するのはとても簡単です。プロジェクトのローカライズを始めるには、右上のメニューからサインインします。次に、ドロップダウンメニューから作業したいプロジェクトとロケールを選択します。Pontoon で自動的にそのロケールのプロジェクトを開きます。ここでは、<a href="https://affiliates.mozilla.org/">Firefox Affiliates</a> のウェブサイトを使用して Pontoon の機能やワークフローを説明します。Pontoon 内で、以下のような画面が開きます:</p>
+
+<p><em><img alt="Browser app and workspace" src="https://mdn.mozillademos.org/files/8323/affiliates.png" style="height: 558px;"></em></p>
+
+<h3 id="Main_toolbar" name="Main_toolbar">メインツールバー</h3>
+
+<p>見て分かるように、ほとんどのインターフェイスは、翻訳されたウェブサイトの画面になっています。以下の項目が含まれた Pontoon のツールバーのみが上部にあります (左から順に):</p>
+
+<p><img alt="Main toolbar" src="https://mdn.mozillademos.org/files/8325/toolbar.png"></p>
+
+<h4 id="List_of_strings" name="List_of_strings">文字列の一覧</h4>
+
+<p>ローカライズするすべての文字列の一覧がサイドバーで開きます。</p>
+
+<h4 id="Project_selector_(Affiliates)" name="Project_selector_(Affiliates)"><span id="cke_bm_939S" style="display: none;"> </span>プロジェクト選択 (Affiliates)</h4>
+
+<p>ローカライズするプロジェクトを切り替えられます。</p>
+
+<h4 id="Resource_selector_(Homepage)" name="Resource_selector_(Homepage)"><span id="cke_bm_940S" style="display: none;"> </span>リソース選択 (Homepage)</h4>
+
+<p>サブページやローカライズファイルのような、ローカライズするリソースを切り替えます。プロジェクト内に利用できるリソースがない場合は表示されません。</p>
+
+<h4 id="sect1"><span id="cke_bm_941S" style="display: none;"> </span></h4>
+
+<dl>
+</dl>
+
+<h4 id="Locale_selector_(Slovenian)" name="Locale_selector_(Slovenian)">ロケール選択 (Slovenian)</h4>
+
+<p>ローカライズする言語を切り替えられます。</p>
+
+<h4 id="Go">Go</h4>
+
+<p>プロジェクト、リソース、ロケールで選択したものを開きます。</p>
+
+<h4 id="Progress_indicator" name="Progress_indicator">進捗インジケーター</h4>
+
+<p>ローカライズ中のリソースの進捗を表示します。ポップアップで詳しく表示されます。</p>
+
+<dl>
+</dl>
+
+<h4 id="User_menu" name="User_menu"><span id="cke_bm_943S" style="display: none;"> </span>ユーザーメニュー</h4>
+
+<p>リポジトリのコミットや、ファイルのダウンロード、サインアウトなど、ユーザー固有のタスクを行えます。</p>
+
+<h4 id="Info_menu" name="Info_menu">インフォメーションメニュー</h4>
+
+<p>参加したプロジェクトのタイムラインや、キーボードショートカットの一覧のような重要な情報が表示されます。</p>
+
+<dl>
+</dl>
+
+<p>では、翻訳をどうやって行うのでしょうか?<span id="cke_bm_608E" style="display: none;"> </span></p>
+
+<dl>
+</dl>
+
+<h2 id="Translate_strings" name="Translate_strings">文字列の翻訳</h2>
+
+<p>Pontoon を使用してローカライズするとき、文字列を翻訳するにはいくつかののオプションがあります。コンテキスト内、コンテキスト外、両方の組み合わせで翻訳できます。まず、コンテキスト内での翻訳から始めましょう。</p>
+
+<h3 id="In-context" name="In-context">コンテキスト内</h3>
+
+<p>Pontoon のコンテキスト内翻訳モードは、他の翻訳を上書きします。ウェブページ (またはウェブアプリ) を開き、ページをリアルタイムに編集できます。翻訳する方法は:</p>
+
+<p><img alt="In-context localization" src="https://mdn.mozillademos.org/files/8331/in-context.png"></p>
+
+<ol>
+ <li>翻訳したいテキストをマウスでホバーします。</li>
+ <li>テキストに翻訳ボタンが表示されます。このボタンをクリックすると翻訳モードが有効になります。</li>
+ <li>もとのテキストを翻訳した文字列に置き換えます。</li>
+ <li>保存ボタンをクリックして翻訳を保存します。</li>
+</ol>
+
+<div>
+<h3 id="Out-of-context" name="Out-of-context">コンテキスト外</h3>
+
+<p>ウェブサイトの &lt;title&gt; タグのコンテンツや、配置される文字列や複数形のように、コンテキスト内で翻訳することができない文字列もあります。メインツールバーにあるハンバーガーボタンをクリックし、すべての文字列と翻訳の一覧が表示されます。サイドバーを使用してもコンテキスト外ローカライズを行えます:</p>
+
+<p><img alt="Out-of-context localization: list" src="https://mdn.mozillademos.org/files/8337/out-of-context-1.png"> <img alt="Out-of-context localization: translate" src="https://mdn.mozillademos.org/files/8335/out-of-context-2.png"></p>
+
+<ol>
+ <li>翻訳したい文字列をクリックします。</li>
+ <li>翻訳パネルが開き、もとの文字列と詳細 (コメントなど) が表示されます。</li>
+ <li>翻訳エリアで文字列を翻訳します。</li>
+ <li>保存ボタンをクリックし翻訳を保存します。</li>
+</ol>
+
+<p>コンテキスト内でも翻訳できる場合、コンテキスト外で文字列を翻訳すると、ウェブサイトにも翻訳が表示されます。</p>
+
+<h3 id="Translation_helpers" name="Translation_helpers">翻訳ヘルパー</h3>
+</div>
+
+<p>見て分かるように、履歴からの候補、翻訳の記録、機械翻訳や他のロケールがコンテキスト外の翻訳パネルに表示されます。これらを翻訳ヘルパーと呼び、文字列を翻訳する手助けとなります:</p>
+
+<p><img alt="Translation helpers: History" src="https://mdn.mozillademos.org/files/8339/helpers-history.png"> <img alt="Translation helpers: Machinery" src="https://mdn.mozillademos.org/files/8341/helpers-machinery.png"> <img alt="Translation helpers: Other locales" src="https://mdn.mozillademos.org/files/8343/helpers-locales.png"> <img alt="Translation helpers: Search" src="https://mdn.mozillademos.org/files/8345/helpers-menu.png"></p>
+
+<h4 id="History" name="History">履歴</h4>
+
+<p>他のユーザーが翻訳したものも含め、以前に翻訳した候補が表示されます。</p>
+
+<h4 id="Machinery" name="Machinery">機械翻訳</h4>
+
+<p>様々なサービスから一致するものを表示します: 内部の翻訳の記録、<a href="http://transvision.mozfr.org/">Mozilla Transvision</a>、<a href="https://amagama-live.translatehouse.org/">オープンソース翻訳の記憶</a>、<a href="http://www.microsoft.com/Language/">Microsoft terminology</a>、<a href="http://www.bing.com/translator">機械翻訳</a>。</p>
+
+<h4 id="Other_locales" name="Other_locales">他のロケール</h4>
+
+<p>他のロケールから一致する翻訳を表示します。</p>
+
+<h4 id="Search" name="Search">検索</h4>
+
+<p>機械的とほぼ同じですが、もとの文字列の代わりにパラメータとしてキーワードを入力する必要があります。</p>
+
+<p>候補をクリックすると、翻訳エリアにコピーされます。</p>
+
+<dl>
+</dl>
+
+<h2 id="Publishing_your_localization" name="Publishing_your_localization">ローカライズを公開する</h2>
+
+<p>Pontoon で、レポジトリにコミットし、l10n の作業を完了させましょう。この作業も Pontoon で行えます。実際、時間単位で自動的に同期されています。自分のやったことを称えたり、踊ったり、寝たり、他のことをして祝福してください!</p>
diff --git a/files/ja/mozilla/localization/quick_start_guide/index.html b/files/ja/mozilla/localization/quick_start_guide/index.html
new file mode 100644
index 0000000000..4b6a3333ae
--- /dev/null
+++ b/files/ja/mozilla/localization/quick_start_guide/index.html
@@ -0,0 +1,40 @@
+---
+title: ローカライズのクイックスタートガイド
+slug: Mozilla/Localization/Quick_start_guide
+tags:
+ - ガイド
+ - ローカライズ
+ - 翻訳
+translation_of: Mozilla/Localization/Quick_start_guide
+---
+<p>Mozilla のローカライズにようこそ。</p>
+
+<p>Mozilla プロジェクトで独自にローカライズを始めるにしても、既存のローカライズの取り組みに参加しようとするにしても、ここが適切な場所です。<span class="seoSummary">このガイドには、 Mozilla のローカライズプログラムに参加するために必要な基本的な技術情報がすべて記載されています。</span>最初の環境設定から独自のローカライズをテストしてリリースするまでの手順を説明します。 途中で、あなたが貢献できるさまざまなプロジェクトと、それらをローカライズするために使用されるツールについて説明します。</p>
+
+<p>具体的な例を挙げると、 Mozilla で最も広くローカライズされたプロジェクトである Firefox プロジェクトから取り上げていきます。このガイドの終わりに近づくにつれて、あなたはあなたのローカル設定で Firefox を変更してから、その変更を Firefox のユーザーインターフェースで見ることができるはずです。最後に、このガイドを終えると、貢献を開始するために必要なすべてのツールが用意されています。</p>
+
+<p>なお、このガイドは Mozilla のローカライズの技術的な側面についてのみ説明します。プロセス全体については、<a class="link-https" href="https://wiki.mozilla.org/L10n:Localization_Process" title="https://wiki.mozilla.org/L10n:Overview">ローカライズプロセス</a>のページをご覧ください。</p>
+
+<div style="width: 25%; background-color: #4AA02C; float: left; display: block; margin: 1.5%; border: 1px solid #C4C295; text-align: center; padding: 2.5%; padding-top: 0px;">
+<h2 id="初期セットアップ"><a href="/ja/docs/Mozilla/Localization/Quick_start_guide/Initial_setup" title="ja/Localization_Quick_Start_Guide/Initial_setup">初期セットアップ</a></h2>
+ローカライズ前の技術的な準備作業です。</div>
+
+<div style="width: 25%; background-color: #A2BFF4; float: left; display: block; margin: 1.5%; border: 1px solid #C4C295; text-align: center; padding: 2.5%; padding-top: 0px;">
+<h2 id="翻訳フェーズ"><a href="/ja/docs/Mozilla/Localization/Quick_start_guide/Translation_phase" title="ja/Localization_Quick_Start_Guide/Translation_phase">翻訳フェーズ</a></h2>
+翻訳のためのツールとチュートリアルです。</div>
+
+<div style="width: 25%; background-color: orange; float: left; display: block; margin: 1.5%; border: 1px solid #C4C295; text-align: center; padding: 2.5%; padding-top: 0px;">
+<h2 id="品質保証フェーズ"><a href="/ja/docs/Mozilla/Localization/Quick_start_guide/QA_phase" title="ja/Localization_Quick_Start_Guide/QA_phase">品質保証フェーズ</a></h2>
+ローカライズの試験のチュートリアルです。</div>
+
+<div style="width: 92%; background-color: #C0C0C0; float: left; display: block; margin: 1.5%; border: 1px solid #C4C295; text-align: center; padding: 2.5%; padding-top: 0px;">
+<h2 id="リリースフェーズ"><a href="/ja/docs/Mozilla/Localization/Quick_start_guide/Release_phase" title="ja/Localization_Quick_Start_Guide/Release_phase">リリースフェーズ</a></h2>
+ローカライズ作業を世に出す過程です。</div>
+
+<div style="background-color: white; border: 3px solid; display: block; padding: 20px; margin-top: 20px;"><span id="result_box" lang="ja"><span>これらの4つの過程は、ローカライズプログラムの技術面を構成しています。</span> <span>詳細については、上記のいずれかのリンクをクリックしてください。</span> <span>大きな画像を得るには、緑色のところから始め、順番にステージに移動することをお勧めします。</span></span></div>
+
+<p> </p>
+
+<div class="note"><strong>注</strong>: このガイドは、新しくローカライズを始める人と、既存のローカライズに参加している人の2種類の貢献者のために書かれています。どの情報がどの種類の貢献者に適用されるのかを知ることは重要です。適切な情報を見分けられるように、新しくローカライズを始める人に固有の情報は<span style="color: #daa520;">オレンジ色のフォント</span>で表示しています。既存のローカライズに参加する人に関する情報は<span style="color: #0000ff;">青色のフォント</span>で表示しています。</div>
+
+<p>{{ Next("Mozilla/Localization/Quick_start_guide/Initial_setup") }}</p>
diff --git a/files/ja/mozilla/localization/quick_start_guide/initial_setup/index.html b/files/ja/mozilla/localization/quick_start_guide/initial_setup/index.html
new file mode 100644
index 0000000000..37fe583ba6
--- /dev/null
+++ b/files/ja/mozilla/localization/quick_start_guide/initial_setup/index.html
@@ -0,0 +1,83 @@
+---
+title: 初期セットアップ
+slug: Mozilla/Localization/Quick_start_guide/Initial_setup
+tags:
+ - ローカライズ
+translation_of: Mozilla/Localization/Quick_start_guide/Initial_setup
+---
+<p>ローカライズプログラムに貢献するための前提条件として、コードやツールへのアクセス手段や、適切に設定されたローカル環境(つまり、パソコン)が必要です。あなたのロケールにすでにローカライズの取り組みが存在するかどうかを判断する必要もあります。ここでは、必要なアカウントと、貢献する前に設定する必要があるツールと設定について説明します。</p>
+
+<h3 id="新規か既存か">新規か既存か</h3>
+
+<p>何よりも前に、新しいローカライズを始めるのか、既存のローカライズに加わるのかを知る必要があります。これにより、このガイドの後の部分でどの情報が適切かが判断できます。</p>
+
+<p>することは以下の通りです。</p>
+
+<p>既存のローカライズコミュニティのディレクトリを調べて、あなたのロケールのコミュニティがすでに存在するどうかを調べてください。</p>
+
+<ol start="1" style="list-style-type: lower-alpha;">
+ <li><span style="color: #0000cd;">コミュニティが既に存在する場合は、彼らに接触して何を手伝うかを尋ねましょう。</span></li>
+ <li><span style="color: #ff8c00;">コミュニティが存在しない場合は、 <a class="link-https" href="https://groups.google.com/forum/?fromgroups#!forum/mozilla.dev.l10n.new-locales" title="https://groups.google.com/forum/?fromgroups#!forum/mozilla.dev.l10n.new-locales">new-locales ニュースグループにメールを送って</a>案内してもらってください。</span><span style="color: #ff8c00;">.</span></li>
+</ol>
+
+<h3 id="アカウント">アカウント</h3>
+
+<p>始めるにあたって、知っておくべきアカウントがいくつかあります。貢献を始めるときには必要ありませんが、公式リリースを制作する準備をするときに必要になります。今のところ、あなたの貢献が進むにつれてこれらが重要になることを覚えておいてください。これらのアカウントにはコードや貢献したものが保存され、公式のローカリゼーションを作成するのに役立ちます。</p>
+
+<dl>
+ <dt style="margin-left: 40px;">hg (Mercurial)</dt>
+ <dd style="margin-left: 40px;">Mercurial はリビジョン管理環境で、 Mozilla の主要なソースコードと Mozilla の公式ローカライズのためにローカライズされたコードを格納しています。 Mozilla のアプリケーションをローカライズするには、これが必要になります。ローカライズを開始する上で、コミットアクセスは必要<u>ありません</u>。 hg でいくらか経験を積んだ後で、コミットアクセスを取得したくなるかもしれません。 その時点で、 <a class="external" href="http://www.mozilla.org/hacking/committer/" title="http://www.mozilla.org/hacking/committer/">Mozilla Committer のページ</a>にアクセスし、そこに記載されているプロセスに従わなければなりません。プロセスをうまく説明する<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=741305" title="https://bugzilla.mozilla.org/show_bug.cgi?id=741305">バグの例を以下に示します</a>。 hg アカウント登録のためにバグ報告をするとき、<a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=mozilla.org&amp;component=Repository%20Account%20Requests&amp;rep_platform=All&amp;op_sys=All&amp;cc=l10n%40mozilla.com&amp;short_desc=l10n%20hg%20account%20for%20John%20Doe%20(ab-CD)" title="https://bugzilla.mozilla.org/enter_bug.cgi?product=mozilla.org&amp;component=Repository%20Account%20Requests&amp;rep_platform=All&amp;op_sys=All&amp;cc=l10n%40mozilla.com&amp;short_desc=l10n%20hg%20account%20for%20John%20Doe%20(ab-CD)">このバグテンプレート</a>を使用してください。ロケールのリポジトリの作成に関するリクエストを<a class="external" href="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics" title="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics">新しいロケールのニュースグループ</a>に追加してください。</dd>
+ <dt style="margin-left: 40px;">SVN</dt>
+ <dd style="margin-left: 40px;">SVN はリビジョン管理環境で、 Mozilla の公式ローカライズのために、 Mozilla ソースウェブサイトとそのローカライズ版を格納しています。 SVN へアクセス権を得る方法は、<a class="link-https" href="https://wiki.mozilla.org/SVN#SVN_account_for_localizers" title="https://wiki.mozilla.org/SVN#SVN_account_for_localizers">このウィキページ</a>を参照してください。 <a href="https://developer.mozilla.org/en-US/docs/SVN_guide_for_localizers" title="https://developer.mozilla.org/en-US/docs/SVN_guide_for_localizers">ローカライズする人のための SVN ガイド</a>は、ローカライズのために最も重要な SVN コマンドを学ぶのに役立ちます。新しい<a class="external" href="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics" title="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics">ロケールのニュースグループ</a>にロケールのリポジトリの作成に関するリクエストを追加してください。</dd>
+</dl>
+
+<dl>
+ <dt style="margin-left: 40px;">ウェブベースのローカライズツール</dt>
+ <dd style="margin-left: 40px;">これについて少し話があります。今のところ、あなたがそれらを使用することを選択した場合は、個人アカウントを作成する必要があるかもしれないことに注意してください。</dd>
+ <dt style="margin-left: 40px;">Mozilla LDAP</dt>
+ <dd style="margin-left: 40px;">Mozilla のメインリポジトリにローカライズ版を登録する準備ができたら、 Mozilla LDAP アカウントが必要になります。<a class="external" href="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics" title="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics">新しいロケールのニュースグループ</a>に LDAP アカウントの作成に関するリクエストを追加してください。</dd>
+ <dt style="margin-left: 40px;"><span>ロケール固有の Bugzilla コンポーネント</span></dt>
+ <dd style="margin-left: 40px;"><span>ロケール固有の Bugzilla コンポーネントを使用すると、ローカライズの進捗状況を最初のステップから公式リリースに追跡するのに役立ちます。また、ローカリゼーションチームの作業に固有の問題が発生した場合には通知もしてくれます。ロケールの Bugzilla コンポーネントの作成に関するリクエストを</span><a class="external" href="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics" title="http://groups.google.com/group/mozilla.dev.l10n.new-locales/topics"><span>新しいロケールニュースグループ</span></a><span>に追加してください。</span></dd>
+</dl>
+
+<h3 id="ローカル環境のツール">ローカル環境のツール</h3>
+
+<p>アカウントと同様に、パソコンにインストールする必要がある環境ツールがいくつかのあります。これらのツールは、貢献したものを保存し、 Mozilla アプリケーションと言語パックをビルドし、作業をテストするのに役立ちます。</p>
+
+<dl>
+ <dt style="margin-left: 40px;">Hg (Mercurial)</dt>
+ <dd style="margin-left: 40px;">前述のとおり、Mozillaのソースコードとローカライズされたコードを維持するために Mercurial を使用しています。あなたのローカライズを保存するためのローカライズリポジトリだけでなく、 PC にインストールして設定する必要もあります。ローカライズ作業のための Mercurial のインストールと設定についての情報はすべて<a href="/ja/Localizing_with_Mercurial#Install_Mercurial" title="https://developer.mozilla.org/ja/L10n_on_Mercurial#Install_Mercurial">ここ</a>にあります。</dd>
+</dl>
+
+<dl>
+ <dt style="margin-left: 40px;">compare-locales</dt>
+ <dd style="margin-left: 40px;">compare-locales は、 Firefox や他のアプリケーションを実行することなく作業をチェックするのに役立つ Python スクリプトです。インストール手順は<a href="/en/Compare-locales" title="https://developer.mozilla.org/ja/Compare-locales">こ</a>こにあります。</dd>
+ <dt style="margin-left: 40px;">L10n checks</dt>
+ <dd style="margin-left: 40px;">L10n checks は、アプリケーションを実行せずに作業をチェックするのに役立つ別の Python スクリプトです。インストール手順は<a href="/ja/L10n_Checks" title="https://developer.mozilla.org/en/L10n_Checks">ここ</a>にあります。</dd>
+ <dt style="margin-left: 40px;">autoconf 2.13</dt>
+ <dd style="margin-left: 40px;">autoconf は、 Mozilla アプリケーションのビルドと言語パックを手動で作成するために不可欠なユーティリティです。これらのビルドにはバージョン2.13以降を使用します。ソースファイルとインストール手順は<a class="external" href="http://www.gnu.org/software/autoconf/" title="http://www.gnu.org/software/autoconf/">ここ</a>にあります。</dd>
+ <dt style="margin-left: 40px;">wget</dt>
+ <dd style="margin-left: 40px;">wget は、インターネットプロトコルを使用してファイルを取得できるコマンドラインユーティリティです。リポジトリからファイルを取得するために使用します。ソースファイルとインストール手順は<a class="external" href="http://www.gnu.org/s/wget/" title="http://www.gnu.org/s/wget/">ここ</a>にあります。</dd>
+ <dt style="margin-left: 40px;">Perl</dt>
+ <dd style="margin-left: 40px;">Perl は、 Mozilla アプリケーションのビルドと言語パックの作成に役立つプログラミング言語です。ソースファイルとインストール手順は<a class="external" href="http://www.perl.org/" title="http://www.perl.org/">ここ</a>にあります。</dd>
+ <dt style="margin-left: 40px;">Python</dt>
+ <dd style="margin-left: 40px;">Python は、多くのローカライズ用テストスクリプトが書かれたプログラミング言語です。ソースファイルとインストール手順は<a class="external" href="http://python.org/" title="http://python.org/">ここ</a>にあります。</dd>
+ <dt style="margin-left: 40px;">Locale Switcher または Quick Locale Switcher</dt>
+ <dd style="margin-left: 40px;">Locale Switcher と Quick Locale Switcher は、 Mozilla アプリケーションのアドオンです。 Mozilla アプリケーションで作業結果を見るためには、どちらかが必要です。 Firefox のアドオンマネージャでこれらのファイルを検索するか、<a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/locale-switcher/" title="https://addons.mozilla.org/en-US/firefox/addon/locale-switcher/">これら</a>の<a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/quick-locale-switcher/" title="https://addons.mozilla.org/en-US/firefox/addon/quick-locale-switcher/">リンク</a>をたどってインストールすることができます。</dd>
+ <dt style="margin-left: 40px;">堅牢な、 Unicode ベースのテキストエディタ―</dt>
+ <dd style="margin-left: 40px;">いくつかお薦めのものがあります。
+ <ul>
+ <li style="margin-left: 40px;">Windows: <a class="external" href="http://notepad-plus.sourceforge.net/uk/site.htm" rel="external nofollow" title="http://notepad-plus.sourceforge.net/uk/site.htm">Notepad++</a> または <a class="external" href="http://www.flos-freeware.ch/notepad2.html" rel="external nofollow" title="http://www.flos-freeware.ch/notepad2.html">Notepad2</a></li>
+ <li style="margin-left: 40px;">GNU/Linux: <a class="external" href="http://en.wikipedia.org/wiki/Vim_%28text_editor%29" rel="external nofollow" title="http://en.wikipedia.org/wiki/Vim_(text_editor)">vim</a>, <a class="external" href="http://projects.gnome.org/gedit/" rel="external nofollow" title="http://projects.gnome.org/gedit/">gedit</a>, <a class="external" href="http://www.kate-editor.org/kate" rel="external nofollow" title="http://www.kate-editor.org/kate">Kate</a></li>
+ <li style="margin-left: 40px;">Mac OS X: <a class="external" href="http://www.barebones.com/products/TextWrangler/" rel="external nofollow" title="http://www.barebones.com/products/TextWrangler/">TextWrangler</a></li>
+ </ul>
+ </dd>
+ <dt style="margin-left: 40px;">GNU make</dt>
+ <dd style="margin-left: 40px;"><span class="external">Make は実行可能ファイルの生成を制御するツールです。バージョン</span> 3.79.1 以上は<a class="external" href="http://www.gnu.org/software/make/" title="http://www.gnu.org/software/make/">こちら</a>にあります。残念ながら、他の種類の <code>make</code> は利用できません。</dd>
+</dl>
+
+<h2 id="初期セットアップの終了">初期セットアップの終了</h2>
+
+<p>これで初期セットアップが終了したので、翻訳の準備ができました。</p>
+
+<p>{{ PreviousNext("Mozilla/Localization/Quick_start_guide", "Mozilla/Localization/Quick_start_guide/Translation_phase") }}</p>
diff --git a/files/ja/mozilla/localization/quick_start_guide/translation_phase/index.html b/files/ja/mozilla/localization/quick_start_guide/translation_phase/index.html
new file mode 100644
index 0000000000..080e7b74d9
--- /dev/null
+++ b/files/ja/mozilla/localization/quick_start_guide/translation_phase/index.html
@@ -0,0 +1,118 @@
+---
+title: 翻訳フェーズ
+slug: Mozilla/Localization/Quick_start_guide/Translation_phase
+tags:
+ - ローカライズ
+translation_of: Mozilla/Localization/Quick_start_guide/Translation_phase
+---
+<p>初期セットアップの完了おめでとうございます。努力の成果として、ここへ来た目的である Mozilla プロジェクトのローカライズに移ることができます。</p>
+
+<p>ここから、プロセスの技術的側面が別れ始めるところです。 Mozilla では、3つの異なるグループに分類されるさまざまなプロジェクトをローカライズしています。プロジェクトの各グループは、プロジェクトのローカライズのために、異なるローカライズツールを採用しています。ローカライズツールは、ローカライズされたコンテンツをリリースからリリースまで維持し、新しいコンテンツをローカライズする際に既にローカライズされた素材を活用するのに役立ちます。</p>
+
+<p>ここでは、これらのプロジェクトのグループと、それぞれに関連付けられているツールについて説明します。途中で、その特定のプロジェクトグループのローカライズに関する基本的な技術チュートリアルを紹介します。あなたとそのコミュニティは、どのローカライズツールが最も適しているかを判断する必要があります。より多くの経験を積むと、Mozillaが開発したローカライズツールとは独立してローカライズしたくなるかもしれません。</p>
+
+<h2 id="Projects" name="Projects">プロジェクトの種類</h2>
+
+<p>The Mozilla projects and their l10n workflows are divided into these groups: Mozilla applications, Mozilla websites, and Add-ons. Below you'll find the list of all Mozilla projects, their associated l10n tools, and links to tutorials outlining their workflows.</p>
+
+<h3 id="Mozilla_applications" name="Mozilla_applications">Mozilla のアプリケーション</h3>
+
+<p>So you're interested in localizing Mozilla applications. Each l10n tool follows a different workflow for localizing Mozilla application projects. We've linked a brief tutorial to each l10n tool name below. Follow the tutorials to help you decide which l10n tool fits your specific needs.</p>
+
+<p>These are the l10n tools we use to localize Mozilla applications:</p>
+
+<dl>
+ <dt style="margin-left: 40px;"><a class="external" href="http://translate.sourceforge.net/wiki/guide/mozilla" title="http://translate.sourceforge.net/wiki/guide/mozilla">Pootle</a></dt>
+ <dd style="margin-left: 40px;">A user-friendly web portal built on the Translate Toolkit API. This tool includes workspaces for translating strings, reviewing string submissions, and project dashboards. See the <a class="external" href="http://pootle.locamotion.org/" title="http://pootle.locamotion.org/">instance of Pootle used to localize Mozilla applications</a>.</dd>
+</dl>
+
+<dl>
+ <dt style="margin-left: 40px;"><a href="/en/Localizing_with_Koala" title="https://developer.mozilla.org/en/Localizing_with_Koala">Koala</a></dt>
+ <dd style="margin-left: 40px;">A l10n add-on for the offline, stand-alone Komodo Edit text editor.</dd>
+ <dt style="margin-left: 40px;"><a class="external" href="/en/Localizing_with_Mozilla_Translator" title="https://developer.mozilla.org/en/Localizing_with_Mozilla_Translator">Mozilla Translator</a></dt>
+ <dd style="margin-left: 40px;">Am offline, stand-alone, Java-based l10n tool that helps you translate and integrates with your repositories. Visit the <a class="external" href="http://kenai.com/projects/moztrans/downloads" title="http://kenai.com/projects/moztrans/downloads">Mozilla Translator (MT) download page</a> to get your own MT client. Version 5.26 is the latest version.</dd>
+ <dt style="margin-left: 40px;">Virtaal</dt>
+ <dd style="margin-left: 40px;">An offline, stand-alone version of Pootle that is also built on the Translate Toolkit API.</dd>
+</dl>
+
+<p>These are the Mozilla application projects that are localized using the l10n tools above:</p>
+
+<dl>
+ <dt style="margin-left: 40px;">Firefox</dt>
+ <dd style="margin-left: 40px;">The award-winning Firefox® Web browser has security, speed and new features that will change the way you use the Web. <span style="color: #daa520;">See the <a class="external" href="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/firefox.phaselist" title="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/firefox.phaselist">list of the most critical strings for localizing in Firefox</a></span><span style="color: #daa520;">, as well as <a class="external" href="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/phases" title="http://zaf.svn.sourceforge.net/viewvc/zaf/trunk/po/fftb/phases">a guide to understanding how they're organized</a></span><span style="color: #daa520;">.</span></dd>
+ <dt style="margin-left: 40px;">Thunderbird</dt>
+ <dd style="margin-left: 40px;">Enjoy safe, fast and easy email, Mozilla-style. The Thunderbird® email client includes intelligent spam filters, powerful search and customizable views.</dd>
+ <dt style="margin-left: 40px;">Seamonkey</dt>
+ <dd style="margin-left: 40px;">SeaMonkey® is the all-in-one application formerly known as the "Mozilla Application Suite", containing a web browser, a mail and newsgroups client, an HTML editor, web development tools, and an IRC chat client.</dd>
+ <dt style="margin-left: 40px;">Firefox Mobile</dt>
+ <dd style="margin-left: 40px;">By adding Firefox® to your mobile phone, you can access rich Web content and enjoy your favorite Firefox features wherever you go.</dd>
+ <dt style="margin-left: 40px;">Lightning</dt>
+ <dd style="margin-left: 40px;">Lightning is a popular calendaring, scheduling and task management extension.</dd>
+</dl>
+
+<p><span style="color: #0000ff;">If your locale has an hg repository hosted on the Mozilla servers, you can track your localization's current progress by visiting the </span><a class="link-https" href="https://l10n.mozilla.org/teams/" title="https://l10n.mozilla.org/teams/"><span style="color: #0000ff;">l10n dashboards</span></a><span style="color: #0000ff;">.</span></p>
+
+<div class="note">
+<p><strong>Note:</strong> <span style="color: #ff8c00;">If you are starting a new localization and decide to use an offline tool for localizing Mozilla applications, you will need to become familiar with using Mercurial (hg). Visit the </span><a href="https://developer.mozilla.org/ja/docs/Localizing_with_Mercurial" title="https://developer.mozilla.org/ja/docs/Localizing_with_Mercurial"><span style="color: #ff8c00;">tutorial on using hg in your localization efforts here</span></a><span style="color: #ff8c00;">. </span></p>
+</div>
+
+<h3 id="Mozilla_websites" name="Mozilla_websites">Mozilla のウェブサイト</h3>
+
+<p>So you're interested in localizing Mozilla websites. Each l10n tool follows a different workflow for localizing Mozilla web projects. We've linked a brief tutorial to each l10n tool name below. Follow the tutorials to help you decide which l10n tool fits your specific needs.</p>
+
+<p>These are the l10n tools we use to localize Mozilla web projects:</p>
+
+<dl>
+ <dt style="margin-left: 40px;"><a href="/ja/docs/Localizing_with_Pontoon" title="/ja/docs/Localizing_with_Pontoon">Pontoon</a></dt>
+ <dd style="margin-left: 40px;">A web-based, What-You-See-Is-What-You-Get (WYSIWYG) l10n tool that allows you to localize Mozilla websites within the site itself. Visit <a class="external" href="https://pontoon.mozilla.org" title="http://horv.at/pontoon/">Pontoon</a> here. Please note the Pontoon is not available for all web projects yet.</dd>
+</dl>
+
+<p>These are the Mozilla web projects that are localized using the l10n tools above:</p>
+
+<dl>
+ <dt style="margin-left: 40px;">mozilla.org</dt>
+ <dd style="margin-left: 40px;">Every user's first Mozilla experience.</dd>
+ <dt style="margin-left: 40px;">addons.mozilla.org (AMO)</dt>
+ <dd style="margin-left: 40px;">A portal for all users interested in finding add-ons for their local Mozilla applications. Read the <a class="link-https" href="https://addons.mozilla.org/ja/localizers/" title="https://addons.mozilla.org/ja/localizers/">guidelines on localizing AMO</a>, straight from the AMO team.</dd>
+ <dt style="margin-left: 40px;">developer.mozilla.org (MDN)</dt>
+ <dd style="margin-left: 40px;">Where you are now! Help localize the MDN user interface for everyone in your region.</dd>
+ <dt style="margin-left: 40px;">support.mozilla.com (SUMO)</dt>
+ <dd style="margin-left: 40px;">A portal for anyone who needs technical support for their Mozilla applications. Help localize the SUMO user interface for everyone in your region.</dd>
+ <dt style="margin-left: 40px;">Mozilla Engagement Campaigns</dt>
+ <dd style="margin-left: 40px;">Individual campaigns created by Mozilla to attract new contributors.</dd>
+ <dt style="margin-left: 40px;">hacks.mozilla.org</dt>
+ <dd style="margin-left: 40px;">For everyone interested in the leading-edge stuff that people are doing with Mozilla Firefox and the open web.</dd>
+ <dt style="margin-left: 40px;">In-product pages</dt>
+ <dd style="margin-left: 40px;">A set of pages used to interact with and give information to the end-user as part of their first experience with their Mozilla applications.</dd>
+</dl>
+
+<p><span style="color: #ff8c00;">If you are creating your own localization, there are a number of Mozilla websites that need to be localized before your efforts become an officially released localization. See the</span><span style="color: #ff8c00;"> <a class="link-https" href="https://wiki.mozilla.org/L10n:Web_parts#Firefox_in-product_pages" title="https://wiki.mozilla.org/L10n:Web_parts#Firefox_in-product_pages">list of localized Mozilla websites</a>. </span></p>
+
+<p>You should also read <a class="link-https" href="https://wiki.mozilla.org/L10n:Web_parts" title="https://wiki.mozilla.org/L10n:Web_parts">more information on localizing Mozilla web projects</a>.</p>
+
+<dl>
+ <dt> </dt>
+</dl>
+
+<h3 id="Add-ons" name="Add-ons">アドオン</h3>
+
+<p>l10n for add-ons is handled by at least two other organizations/services called Babelzilla and Adofex. They both have created comprehensive programs and l10n tools for localizing any and all third-party add-ons for Mozilla applications. Visit their websites to learn how to get involved.</p>
+
+<ul>
+ <li><a class="external" href="http://babelzilla.org" title="http://babelzilla.org">Babelzilla</a></li>
+ <li><a class="external" href="http://adofex.clear.com.ua/" title="http://adofex.clear.com.ua/">Adofex</a></li>
+</ul>
+
+<h2 id="Tool-independent_localization" name="Tool-independent_localization">ツールに依存しないローカライズ</h2>
+
+<p>Are you a command-line master? Do you prefer Unicode text editors to any other applications on Earth? Do you have a pet CAT (computer-assisted translation) tool, like OmegaT? Then you may not be interested in using any of the tools listed above for your localizations. If that is the case, then this section is for you!</p>
+
+<p>For localizers who prefer localizing without a specialized tool the workflows for localizing Mozilla applications and Mozilla websites are essentially the same.<a href="/en/Localizing_without_a_specialized_tool" title="https://developer.mozilla.org/en/Localizing_without_a_specialized_tool"> This tutorial</a> should provide you with all of the technical information you need to secure and maintain your tool independence.</p>
+
+<h2 id="製品化">製品化</h2>
+
+<p>Productization is an essential part of localizing Mozilla products. This is where you research and select the search plugins, content and protocol handlers, bookmarks, and links to recommended sites on the in-product pages that your locale's users will find in their Mozilla products.</p>
+
+<p><a href="https://developer.mozilla.org/ja/docs/Productization_guide" title="https://developer.mozilla.org/en/Productization_patches">This tutorial will walk you through performing these productization tasks</a>, creating productization patches, and submitting them for review.</p>
+
+<p>{{ PreviousNext("Localization_Quick_Start_Guide/Initial_setup", "Localization_Quick_Start_Guide/QA_phase") }}</p>
diff --git a/files/ja/mozilla/marketplace/options/open_web_apps_for_desktop/index.html b/files/ja/mozilla/marketplace/options/open_web_apps_for_desktop/index.html
new file mode 100644
index 0000000000..5781937470
--- /dev/null
+++ b/files/ja/mozilla/marketplace/options/open_web_apps_for_desktop/index.html
@@ -0,0 +1,115 @@
+---
+title: Open Web Apps for Desktop
+slug: Mozilla/Marketplace/Options/Open_web_apps_for_desktop
+translation_of: Archive/Marketplace/Options/Open_web_apps_for_desktop
+---
+<div class="summary">
+<p>デスクトップ版Firefoxのユーザーはフリーのマーケットプレイスアプリを'通常'のWindowsアプリ・Mac/Linuxアプリとしてインストールできます。これらのアプリは、デスクトップ版Webランタイム上で動作し、デスクトップ版Firefoxの機能を使ってインストールしています。Firefoxマーケットプレイス以外でもこの機能を使う事はできます。</p>
+</div>
+
+<h2 id="デスクトップの_Open_Web_Appsとは?">デスクトップの Open Web Appsとは?</h2>
+
+<p>デスクトップのOpen Web AppsはWindows/Mac/Linuxコンピューターユーザーマーケットプレイスアプリをインストールできるようにしています。一度インストールされたアプリは、通常のデスクトップアプリとして起動することが出来ます。<br>
+ アプリはデスクトップ版Firefoxに含まれるデスクトップ版Webランタイム上で実行されます。</p>
+
+<p>デスクトップのOpen Web Apps開発時には、デスクトップ開発知識や、特殊な開発ステップ、'ネイティブ'デスクトップアプリの配信の知識などは不要です。</p>
+
+<div class="note">
+<p><strong>Note</strong>: デスクトップのOpen Web Appsは、デスクトップ版Firefox 29以降でサポートしています。</p>
+</div>
+
+<p>デスクトップ版Webランタイムはデスクトップの機能(<a href="/ja/docs/IndexedDB">IndexedDB</a>, <a href="/en-US/docs/Web/API/Geolocation">Geolocation</a>, <a href="/ja/docs/WebAPI/Battery_Status">Battery status</a>など。)にアクセスするための12個のAPIをサポートしています。<br>
+ APIの詳細についは<a href="https://wiki.mozilla.org/WebAPI#APIs">complete list of supported APIs</a> を御覧ください。"Available"列の"D"セルがデスクトップ版Webランタイムでの各APIの対応状況を示しています。緑色のセルは全機能をサポートしてます。マウスをかざすとさらなる情報が表示されます。</p>
+
+<p>近い将来、デスクトップ版WebランタイムでサポートするAPIをは追加されていきます。</p>
+
+<div class="note">
+<p><strong>Note</strong>: アプリがレスポンシブデザインで作られていない場合、Firefox OSとデスクトップコンピュータのように、大幅に異なるプラットフォームでは狙ったどおりに表示されません。これは、Firefox OS端末と違ってデスクトップコンピュータユーザの解像度(DPI)やサイズが異なるためです。レスポンシブデザインを考慮した設計をするように常に心がけでください。レスポンシブデザインに関する詳しい情報は<a href="https://developer.mozilla.org/ja/docs/Web/Apps/Design">アプリセンターのデザインセクション</a>を御覧ください。</p>
+</div>
+
+<h2 id="Firefoxマーケットプレイスからデスクトップ版Open_Web_Appsを利用する">Firefoxマーケットプレイスからデスクトップ版Open Web Appsを利用する</h2>
+
+<p>このセクションではデスクトップ版Open Web Appsの利用方法、Firefoxマーケットプレイスへ与える効果、アプリアップデートの情報を提供します。</p>
+
+<h3 id="アプリの提出">アプリの提出</h3>
+
+<p><a href="/ja/docs/Web/Apps/Submitting_an_app">Firefoxマーケットプレイスにアプリを提出する</a>際、デスクトップ版Firefoxを選択することが可能です。</p>
+
+<h3 id="アプリのレビュー">アプリのレビュー</h3>
+
+<p>アプリのレビュー時にレビューアは、Firefoxマーケットプレイスのレビューセクションからアプリをインストールします。デスクトップからレビューする際、デスクトップ版Firefoxはレビューアのコンピュータへアプリをインストールします。これにより、通常のアプリ同様完全な動作をレビューする事が可能になります。</p>
+
+<h3 id="アプリのインストール">アプリのインストール</h3>
+
+<p>Firefoxマーケットプレイスからユーザーがアプリを選択すると以下の動作をします。</p>
+
+<ol>
+ <li><a href="https://marketplace.firefox.com/">Firefoxマーケットプレイス</a>では通常アプリの詳細と<strong>無料</strong>ボタンが表示されます。</li>
+ <li>ユーザーが無料ボタンをクリックしたら、インストール確認用のFirefox標準ダイアログが表示されます。ダイアログには特権が必要なアプリの場合は必要となるパーミッションのリストが表示されます。このダイアログにはユーザーが懸念していることに関する説明も含まれます。</li>
+ <li>ユーザーがインストール継続をするためにインストールをクリックすると、<a href="/ja/docs/Web/API/Apps/install" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>Apps.install</code></a> / <a href="/ja/docs/Web/API/Apps/installPackage" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>Apps.installPackage</code></a>が意図されたとおりに実行され、デスクトップ版FirefoxはFirefoxマーケットプレイスからアプリの詳細を要求します。パッケージがタアプリノ場合はアプリのZipファイルをダウンロードします(これはアプリがホスト型か、パッケージ型かに依存します)。<br>
+ デスクトップ版FirefoxはデスクトップOSにアプリをインストールします。これによって、オフラインでもアプリを利用することが可能になります。(もし<a href="/ja/docs/Web/Apps/Manifest#appcache_path">AppCacheの記載</a>があれば、パッケージ型の場合はZipを、ホスト型の場合はアプリのアセットをインストールします。)</li>
+</ol>
+
+<p>一度アプリがインストールされると、通常のデスクトップOSのアプリと同じように表示されます。起動と削除方法も他のデスクトップアプリと変わりはありません。</p>
+
+<h3 id="アプリのアップデート">アプリのアップデート</h3>
+
+<p>デスクトップ版Webランタイムではアップデート可能なアプリをユーザーへ通知する仕組みを搭載しています。</p>
+
+<p>もし、ホスト型アプリであれば、いつでもサーバー上のコンテンツを変更すればユーザーの次回起動時に変更が反映されて動作します。</p>
+
+<p>他の全ての変更についてはFirefoxマーケットプレイスで新しいバージョンを追加する必要があります。</p>
+
+<ul>
+ <li>ホスト型アプリの場合、更新するマニフェストファイルを含むサーバー上のアプリへのリンク</li>
+ <li>パッケージ型アプリの場合、更新するマニフェストとコンテンツが含まれるzipファイル</li>
+</ul>
+
+<p>アプリが動作中の場合、デスクトップ版Webランタイムは毎日アプリのマニフェストファイルのバージョン番号のチェックをします。もし変更されている場合はユーザーに対してアップデートが入手できることを通知します。ユーザーは新しいバージョンをインストールする事を選択する事ができます。</p>
+
+<h2 id="他のロケーションからデスクトップ版Open_Web_Apps_を利用する">他のロケーションからデスクトップ版Open Web Apps を利用する</h2>
+
+<p>自身で構築したマーケットプレイスまたはサーバーにホスト型またはパッケージ型のOpen Web Apps を提供する事が可能であれば、そのケースではデスクトップ版 Open Web Appsを利用して自動インストールが可能です。Open Web Apps のオリジナルのロケーションで、新しいバージョンを検知した場合、Firefoxはアプリのアップデートをハンドリングします。</p>
+
+<h2 id="デスクトップ版Open_Web_Apps_のアプリインストール仕様">デスクトップ版Open Web Apps のアプリインストール仕様</h2>
+
+<p>このセクションではFirefox がどのように、デスクトップ版Open Web Apps をインストールするかを説明します。</p>
+
+<ol>
+ <li>ユーザーがアプリのインストールを選択した場合、上述した通り、デスクトップ版Firefox はホストしているサーバーに対し、アプリのマニフェストファイルやアイコン画像をを要求します。(Firefox Marketplace またはアプリをホストしているサーバーに対して要求)
+ <ul>
+ <li>ホスト型アプリの場合はメインのマニフェストファイル</li>
+ <li>パッケージ型アプリの場合は、ミニマニフェストファイル</li>
+ </ul>
+ </li>
+ <li>パッケージ型アプリでは、ホストしているサーバーに対して デスクトップ版Firefox はアプリのZIp ファイルを要求します。</li>
+ <li>デスクトップ版Firefoxはアプリのインストール処理をします。
+ <ul>
+ <li>ホスト型アプリの場合、Windows / Mac / Linux で実行可能なURL にラッピングし、デスクトップコンピュータ上に配置する</li>
+ <li>パッケージ型アプリの場合、Windows / Mac / Linux で実行可能なアプリのコンテンツをラッピングし、デスクトップコンピュータ上に配置する</li>
+ </ul>
+ </li>
+</ol>
+
+<p>以下のフロー図は、デスクトップ版Open Web Appsを利用したアプリのインストールワークフローを示したものです。</p>
+
+<p style="text-align: center;"><img alt="Open Web Apps for Desktop Sequence Diagram" src="https://mdn.mozillademos.org/files/8005/Open%20Web%20Apps%20for%20Desktop%20Sequence%20Diagram%20v4.png" style="height: 633px; width: 623px;"></p>
+
+<h2 id="FAQ">FAQ</h2>
+
+<p>ここでは、デスクトップ版Open Web Appsに関してよく聞かれる質問をまとめています。</p>
+
+<h3 id="アプリ内課金と有料アプリの機能はいつから提供されますか?">アプリ内課金と有料アプリの機能はいつから提供されますか?</h3>
+
+<p>この機能の実装時期は計画中です。デスクトップ版Open Web Appsに実装された場合信頼されたUIへのアクセスや、<a href="/ja/docs/Web/API/window.navigator.mozPay">mozPay</a>、そしてすべてのアプリ内課金支払いプロセスが提供されます。</p>
+
+<h3 id="デスクトップで動作させた場合のデバッグはどうすれば良いですか?">デスクトップで動作させた場合のデバッグはどうすれば良いですか?</h3>
+
+<p>コンソール( 他のリモート開発者ツール )にアクセスして、-debug フラグとオプション定義されたポート番号を使ってコマンドラインからアプリをスタートする事が可能です。<br>
+ Macの例では、Mykzilla テストアプリを以下のように開始します。</p>
+
+<p><code>&gt; /Applications/Mykzilla.app/Contents/MacOS/webapprt -debug 6000</code></p>
+
+<p>そして、Firefox の<strong>開発ツール</strong>メニューの<strong>接続... </strong>をクリックして、localhostの指定したポートに接続します。その後、Firefox の<strong>接続</strong>をクリックして、アプリへ戻り接続状況を確認してください。Firefoxに戻り、"tab"(たとえばアプリの開いているウィンドウ)を選択するかWeb ランタイムのChrome コードをデバッグするための"メインプロセス"を選択します。</p>
+
+<p>Firefox のリモート開発ツールのコピーは新しいウィンドウとして開くと、"tab"に接続できます。</p>
diff --git a/files/ja/mozilla/mathml_project/index.html b/files/ja/mozilla/mathml_project/index.html
new file mode 100644
index 0000000000..ffe7f765cf
--- /dev/null
+++ b/files/ja/mozilla/mathml_project/index.html
@@ -0,0 +1,75 @@
+---
+title: Mozilla MathML Project
+slug: Mozilla/MathML_Project
+tags:
+ - MathML
+ - MathML Project
+ - NeedsTranslation
+ - TopicStub
+translation_of: Mozilla/MathML_Project
+---
+<p>The Mozilla MathML project is Mozilla's project to build and enhance <a href="/en-US/docs/Web/MathML" title="/en-US/docs/Web/MathML">MathML</a> support within Firefox and other Mozilla-based applications. For a quick overview, see the <a href="http://fred-wang.github.io/MozSummitMathML/index.html">slides for the innovation fairs at Mozilla Summit 2013</a>.</p>
+
+<h2 id="Updates">Updates</h2>
+
+<p><img alt="Mathzilla" class="default internal" src="https://mdn.mozillademos.org/files/6281/mathzilla.svg" style="float: right; height: 150px; width: 150px;"></p>
+
+<ul>
+ <li><a href="/docs/Mozilla/MathML_Project/Status" title="Mozilla MathML Project/Status">Status of each tag</a></li>
+ <li><a href="/docs/Mozilla/MathML_Project/MathML3Testsuite" title="Mozilla MathML Project/MathML3Testsuite">Result of the MathML 3 Testsuite</a></li>
+ <li><a class="external" href="https://www.wg9s.com/mozilla/firefox/">Unofficial nightly builds with MathML patches applied</a> (maintained by Bill Gianopoulos)</li>
+ <li><a href="/docs/Mozilla/MathML_Project/Updates" title="Mozilla_MathML_Project/Updates">More updates and archived content</a></li>
+</ul>
+
+<h2 id="Community">Community</h2>
+
+<ul>
+ <li>View Mozilla forums... {{DiscussionList("dev-tech-mathml", "mozilla.dev.tech.mathml")}}</li>
+ <li><a class="link-irc" href="irc://irc.mozilla.org/%23mathml" rel="external" title="irc://irc.mozilla.org/%23mathml">IRC channel</a></li>
+ <li><a class="link-https" href="https://wiki.mozilla.org/MathML:Home_Page">Wiki used by contributors</a> - check out the latest developments and help us improving MathML in Mozilla.</li>
+</ul>
+
+<h2 id="Links">Links</h2>
+
+<ul>
+ <li>Installing <a href="/docs/Mozilla/MathML_Project/Fonts" title="Mozilla MathML Project/Fonts">fonts for Mozilla's MathML engine</a></li>
+ <li><a class="external" href="http://www.w3.org/TR/MathML3/">MathML Version 3.0</a> - W3C Recommendation, 21 October 2010</li>
+ <li><a class="external" href="http://www.w3.org/Math/testsuite/"><abbr>W3C</abbr> <abbr>MathML</abbr> Test Suite</a> - Designed to check the implementation of each element one attribute (or built-in rendering behavior) at a time in a fairly thorough manner.</li>
+ <li><a href="/docs/Web/MathML" title="MathML">MathML in Mozilla Developer Network</a></li>
+ <li><a href="/en-US/docs/Mozilla/MathML_Project/a11y">MathML Accessibility in Mozilla</a></li>
+</ul>
+
+<h3 id="Sample_MathML_Documents">Sample <abbr>MathML</abbr> Documents</h3>
+
+<ul>
+ <li><a href="/docs/Mozilla/MathML_Project/Screenshots" title="Mozilla MathML Project/Screenshots">Screenshots</a></li>
+ <li><a href="/docs/Mozilla/MathML_Project/Start" title="Mozilla_MathML_Project/Start"><abbr>MathML</abbr> Start Page</a> - with translations in different languages ( <a href="/ar/docs/Mozilla_MathML_Project/Start" title="/ar/Mozilla_MathML_Project/Start">Arabic</a>, <a href="/zh-CN/docs/Mozilla_MathML_Project/Start" title="/zh-CN/Mozilla_MathML_Project/Start">Chinese</a>, <a href="/he/docs/Mozilla_MathML_Project/Start" title="/he/Mozilla_MathML_Project/Start">Hebrew</a>, <a href="/th/docs/Mozilla_MathML_Project/Start" title="/th/Mozilla_MathML_Project/Start">Thai</a>)</li>
+ <li><a class="external" href="/docs/Mozilla/MathML_Project/Basics">MathML Basics</a> - Document tailored to display correctly with just the Symbol font that is pre-installed by default on most OS configurations.</li>
+ <li><a class="external" href="/docs/Mozilla/MathML_Project/MathML_Torture_Test"><abbr>MathML</abbr> Torture Test</a> - Comparative testing of MathML rendering against TeX.</li>
+ <li>Demo of some MathML tags: <a class="external" href="/docs/Mozilla/MathML_Project/mfrac">mfrac</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mo">mo</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mtable">mtable</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mspace">mspace</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mmultiscripts">mmultiscripts</a>, <a class="external" href="/docs/Mozilla/MathML_Project/roots">msqrt-mroot</a>.</li>
+ <li><a class="external" href="/docs/Mozilla/MathML_Project/Extras">MathML Extras</a> - Technology demonstration of some interesting upshots from building natively upon the browser environment.</li>
+ <li><a href="/docs/Mozilla/MathML_Project/Various" title="Mozilla_MathML_Project/Various">Various MathML Tests</a> - These pages were imported from <code>layout/mathml/tests/</code>.</li>
+ <li><a class="external" href="http://golem.ph.utexas.edu/~distler/blog/archives/000104.html">Blog</a> with comments that include MathML.</li>
+</ul>
+
+<h3 id="Create_MathML_Documents">Create <abbr>MathML</abbr> Documents</h3>
+
+<ul>
+ <li><a href="/docs/Web/MathML/Authoring" title="Mozilla MathML Project/Authoring">Authoring MathML</a></li>
+ <li><a class="external" href="http://www.w3.org/Math/Software/mathml_software_cat_editors.html">Editors</a></li>
+ <li><a class="external" href="http://www.w3.org/Math/Software/mathml_software_cat_converters.html">Converters</a></li>
+ <li><a class="external" href="http://www.w3.org/Math/Software/mathml_software_cat_stylesheets.html">Stylesheets</a></li>
+</ul>
+
+<div class="originaldocinfo">
+<h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2>
+
+<ul>
+ <li>Author(s): Roger B. Sidje</li>
+ <li>Other Contributors: Frédéric Wang</li>
+ <li>Last Updated Date: April 4, 2010</li>
+ <li>Copyright Information: Portions of this content are © 1999–2010 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">Details</a>.</li>
+</ul>
+</div>
+
+<p> </p>
diff --git a/files/ja/mozilla/mathml_project/mathml_torture_test/index.html b/files/ja/mozilla/mathml_project/mathml_torture_test/index.html
new file mode 100644
index 0000000000..fb5e870e38
--- /dev/null
+++ b/files/ja/mozilla/mathml_project/mathml_torture_test/index.html
@@ -0,0 +1,1322 @@
+---
+title: MathML 耐久テスト
+slug: Mozilla/MathML_Project/MathML_Torture_Test
+tags:
+ - Intermediate
+ - MathML
+translation_of: Mozilla/MathML_Project/MathML_Torture_Test
+---
+<h2 id="MathML_Torture_Test" name="MathML_Torture_Test">MathML 耐久テスト</h2>
+
+<div style="display: none;">
+<h3 id="HTML_Content">HTML Content</h3>
+
+<pre class="brush: html">&lt;p&gt;
+ Render mathematics with:
+ &lt;select name="MathFont" id="MathFont"&gt;
+ &lt;option value="Default" selected="selected"&gt;Default fonts&lt;/option&gt;
+ &lt;option value="Asana"&gt;Asana&lt;/option&gt;
+ &lt;option value="Cambria"&gt;Cambria&lt;/option&gt;
+ &lt;option value="LatinModern"&gt;Latin Modern&lt;/option&gt;
+ &lt;option value="LucidaBright"&gt;Lucida Bright&lt;/option&gt;
+ &lt;option value="Minion"&gt;Minion&lt;/option&gt;
+ &lt;option value="STIX"&gt;STIX&lt;/option&gt;
+ &lt;option value="TeXGyreBonum"&gt;TeX Gyre Bonum&lt;/option&gt;
+ &lt;option value="TeXGyrePagella"&gt;TeX Gyre Pagella&lt;/option&gt;
+ &lt;option value="TeXGyreSchola"&gt;TeX Gyre Schola&lt;/option&gt;
+ &lt;option value="TeXGyreTermes"&gt;TeX Gyre Termes&lt;/option&gt;
+ &lt;option value="XITS"&gt;XITS&lt;/option&gt;
+ &lt;option value="XITSRTL"&gt;XITS RTL&lt;/option&gt;
+ &lt;/select&gt; &lt;br/&gt;
+&lt;/p&gt;
+
+&lt;table&gt;
+
+&lt;tr&gt;
+&lt;td&gt;&lt;/td&gt;
+&lt;th scope="col"&gt;As rendered by TeX&lt;/th&gt;
+&lt;th scope="col"&gt;As rendered by your browser&lt;/th&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;1&lt;/td&gt;
+
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4578/=ex1.png" width="38" height="22"
+alt="TeXbook, 16.2-16.3" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;msup&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;msup&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;2&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4579/=ex2.png" width="30" height="17" alt="TeXbook, 16.2-16.3" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;!--
+&lt;mrow&gt;
+ &lt;msub&gt;&lt;mi&gt;&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;
+ &lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;
+&lt;/mrow&gt;
+--&gt;
+&lt;mrow&gt;
+
+ &lt;mmultiscripts&gt;
+ &lt;mi&gt;F&lt;/mi&gt;
+ &lt;mn&gt;3&lt;/mn&gt;&lt;none/&gt;
+ &lt;mprescripts/&gt;
+ &lt;mn&gt;2&lt;/mn&gt;&lt;none/&gt;
+ &lt;/mmultiscripts&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;3&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4586/=ex21.png" width="58" height="47" alt="TeXbook, 17-17.1" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mfrac&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+
+ &lt;msup&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;/mrow&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;4&lt;/td&gt;
+
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4587/=ex22.png" width="76" height="25" alt="TeXbook, 17-17.1" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;msup&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;mfrac&gt;
+
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+
+ &lt;/msup&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;5&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4588/=ex23.png" width="30" height="42" alt="TeXbook, 17-17.1" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mfrac&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+
+ &lt;mrow&gt;
+ &lt;mi&gt;b&lt;/mi&gt;
+ &lt;mo&gt;/&lt;/mo&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;6&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4589/=ex24.png" width="220" height="138" alt="TeXbook, 17.5-17.6" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+
+ &lt;/msub&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mfrac&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mstyle displaystyle="true" scriptlevel="0"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mfrac&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mstyle displaystyle="true" scriptlevel="0"&gt;
+ &lt;msub&gt;
+
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mfrac&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mstyle displaystyle="true" scriptlevel="0"&gt;
+
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mn&gt;3&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mfrac&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+
+ &lt;mstyle displaystyle="true" scriptlevel="0"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mn&gt;4&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mstyle&gt;
+ &lt;/mfrac&gt;
+ &lt;/mstyle&gt;
+ &lt;/mfrac&gt;
+
+ &lt;/mstyle&gt;
+ &lt;/mfrac&gt;
+ &lt;/mstyle&gt;
+ &lt;/mfrac&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;7&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4590/=ex25.png" width="200" height="85" alt="TeXbook, 17.5-17.6" /&gt;&lt;/td&gt;
+&lt;td&gt;
+
+&lt;math&gt;
+&lt;mrow&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mfrac&gt;
+
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mrow&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+
+ &lt;mfrac&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mrow&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msub&gt;
+
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mfrac&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mrow&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mn&gt;3&lt;/mn&gt;
+
+ &lt;/msub&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mfrac&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mrow&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+
+ &lt;mn&gt;4&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;8&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4591/=ex26.png" width="54" height="50" alt="TeXbook, 17.5-17.6" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mo&gt;(&lt;/mo&gt;
+
+ &lt;mfrac linethickness="0px"&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+ &lt;mo&gt;/&lt;/mo&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/mrow&gt;
+
+ &lt;/mfrac&gt;
+ &lt;mo&gt;)&lt;/mo&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;9&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4592/=ex27.png" width="237" height="50" alt="TeXbook, 17.7" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mrow&gt;
+
+
+ &lt;mo&gt;(&lt;/mo&gt;
+ &lt;mfrac linethickness="0px"&gt;
+ &lt;mi&gt;p&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/mfrac&gt;
+ &lt;mo&gt;)&lt;/mo&gt;
+ &lt;/mrow&gt;
+
+ &lt;msup&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;msup&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;mrow&gt;
+
+ &lt;mi&gt;p&lt;/mi&gt;
+ &lt;mo&gt;-&lt;/mo&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;/msup&gt;
+ &lt;mo&gt;-&lt;/mo&gt;
+ &lt;mfrac&gt;
+
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mrow&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;-&lt;/mo&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+
+ &lt;mfrac&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mrow&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;-&lt;/mo&gt;
+ &lt;msup&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;10&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4593/=ex29.png" width="116" height="63" alt="TeXbook, 17.7-17.8" /&gt;&lt;/td&gt;
+
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;munder&gt;
+ &lt;mo&gt;&amp;sum;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mfrac linethickness="0px"&gt;
+ &lt;mrow&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+ &lt;mo&gt;&amp;leq;&lt;/mo&gt;
+
+ &lt;mi&gt;i&lt;/mi&gt;
+ &lt;mo&gt;&amp;leq;&lt;/mo&gt;
+ &lt;mi&gt;m&lt;/mi&gt;
+ &lt;/mrow&gt;
+ &lt;mrow&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+ &lt;mo&gt;&amp;lt;&lt;/mo&gt;
+
+ &lt;mi&gt;j&lt;/mi&gt;
+ &lt;mo&gt;&amp;lt;&lt;/mo&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+ &lt;/mrow&gt;
+ &lt;/munder&gt;
+ &lt;mi&gt;P&lt;/mi&gt;
+
+ &lt;mo stretchy="false"&gt;(&lt;/mo&gt;
+ &lt;mi&gt;i&lt;/mi&gt;
+ &lt;mo&gt;,&lt;/mo&gt;
+ &lt;mi&gt;j&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;)&lt;/mo&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;11&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4580/=ex3.png" width="27" height="18" alt="TeXbook, 16.2-16.3" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+&lt;msup&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mrow&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;/mrow&gt;
+&lt;/msup&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;12&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4594/=ex30.png" width="175" height="61" alt="TeXbook, 17.8" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+
+ &lt;munderover&gt;
+ &lt;mo&gt;&amp;sum;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;i&lt;/mi&gt;
+ &lt;mo&gt;=&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/mrow&gt;
+
+ &lt;mi&gt;p&lt;/mi&gt;
+ &lt;/munderover&gt;
+ &lt;munderover&gt;
+ &lt;mo&gt;&amp;sum;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;j&lt;/mi&gt;
+ &lt;mo&gt;=&lt;/mo&gt;
+
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;mi&gt;q&lt;/mi&gt;
+ &lt;/munderover&gt;
+ &lt;munderover&gt;
+ &lt;mo&gt;&amp;sum;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+
+ &lt;mo&gt;=&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;mi&gt;r&lt;/mi&gt;
+ &lt;/munderover&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+
+ &lt;mrow&gt;
+ &lt;mi&gt;i&lt;/mi&gt;
+ &lt;mi&gt;j&lt;/mi&gt;
+ &lt;/mrow&gt;
+ &lt;/msub&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;b&lt;/mi&gt;
+
+ &lt;mrow&gt;
+ &lt;mi&gt;j&lt;/mi&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+ &lt;/mrow&gt;
+ &lt;/msub&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+
+ &lt;mrow&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+ &lt;mi&gt;i&lt;/mi&gt;
+ &lt;/mrow&gt;
+ &lt;/msub&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+
+&lt;td&gt;13&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4595/=ex31.png" width="405" height="100" alt="TeXbook, 17.9-17.10" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;msqrt&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;msqrt&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;msqrt&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;msqrt&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+
+ &lt;msqrt&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;msqrt&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;msqrt&gt;
+
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;/msqrt&gt;
+ &lt;/msqrt&gt;
+ &lt;/msqrt&gt;
+ &lt;/msqrt&gt;
+
+ &lt;/msqrt&gt;
+ &lt;/msqrt&gt;
+ &lt;/msqrt&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;14&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4596/=ex34.png" width="272" height="50" alt="TeXbook, 17.10" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+
+ &lt;mrow&gt;
+ &lt;mo&gt;(&lt;/mo&gt;
+ &lt;mfrac&gt;
+ &lt;msup&gt;
+ &lt;mo&gt;&amp;part;&lt;/mo&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;mrow&gt;
+
+ &lt;mo&gt;&amp;part;&lt;/mo&gt;
+ &lt;msup&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+
+ &lt;mfrac&gt;
+ &lt;msup&gt;
+ &lt;mo&gt;&amp;part;&lt;/mo&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;mrow&gt;
+ &lt;mo&gt;&amp;part;&lt;/mo&gt;
+ &lt;msup&gt;
+
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+ &lt;mo&gt;)&lt;/mo&gt;
+ &lt;/mrow&gt;
+
+ &lt;msup&gt;
+ &lt;mrow&gt;
+ &lt;mo minsize="150%"&gt;|&lt;/mo&gt;
+ &lt;mi&gt;&amp;#x3C6; &lt;!-- \varphi --&gt;&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;(&lt;/mo&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+
+ &lt;mi mathvariant="normal"&gt;i&lt;/mi&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;)&lt;/mo&gt;
+ &lt;mo minsize="150%"&gt;|&lt;/mo&gt;
+ &lt;/mrow&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+
+ &lt;/msup&gt;
+ &lt;mo&gt;=&lt;/mo&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;15&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4581/=ex4.png" width="31" height="22" alt="TeXbook, 16.2-16.3" /&gt;&lt;/td&gt;
+&lt;td&gt;
+
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;msup&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;msup&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;msup&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;/msup&gt;
+ &lt;/msup&gt;
+ &lt;/msup&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;16&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4597/=ex40.png" width="55" height="49" alt="TeXbook, 18.10-18.11" /&gt;&lt;/td&gt;
+
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;msubsup&gt;
+ &lt;mo stretchy="false"&gt;&amp;int;&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;/msubsup&gt;
+ &lt;mfrac&gt;
+
+ &lt;mrow&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;
+ &lt;mi&gt;t&lt;/mi&gt;
+ &lt;/mfrac&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;17&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4599/=ex41.png" width="91" height="47" alt="TeXbook, 18.12-18.13" /&gt;&lt;/td&gt;
+&lt;td&gt;
+
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;msub&gt;
+ &lt;mo&gt;&amp;#x222C; &lt;!-- \iint --&gt;&lt;/mo&gt;
+ &lt;mi&gt;D&lt;/mi&gt;
+ &lt;/msub&gt;
+ &lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;
+ &lt;mspace width="thinmathspace"/&gt;
+
+ &lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;y&lt;/mi&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;18&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4600/=ex43.png" width="250" height="66" alt="TeXbook, 18.23" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mi&gt;f&lt;/mi&gt;
+
+ &lt;mo stretchy="false"&gt;(&lt;/mo&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;)&lt;/mo&gt;
+ &lt;mo&gt;=&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mo&gt;{&lt;/mo&gt;
+
+ &lt;mtable&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mrow&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;/&lt;/mo&gt;
+ &lt;mn&gt;3&lt;/mn&gt;
+
+ &lt;/mrow&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="left"&gt;
+ &lt;mrow&gt;
+ &lt;mtext&gt;if&amp;nbsp;&lt;/mtext&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+ &lt;mo&gt;&amp;leq;&lt;/mo&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+
+ &lt;mo&gt;&amp;leq;&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;;&lt;/mo&gt;
+ &lt;/mrow&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;mrow&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;mo&gt;/&lt;/mo&gt;
+ &lt;mn&gt;3&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;mrow&gt;
+ &lt;mtext&gt;if&amp;nbsp;&lt;/mtext&gt;
+ &lt;mn&gt;3&lt;/mn&gt;
+ &lt;mo&gt;&amp;leq;&lt;/mo&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mo&gt;&amp;leq;&lt;/mo&gt;
+ &lt;mn&gt;4&lt;/mn&gt;
+
+ &lt;mo&gt;;&lt;/mo&gt;
+ &lt;/mrow&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+ &lt;/mtd&gt;
+
+ &lt;mtd columnalign="left"&gt;
+ &lt;mtext&gt;elsewhere.&lt;/mtext&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;/mtable&gt;
+ &lt;/mrow&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;19&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4601/=ex44.png" width="101" height="44" alt="TeXbook, 18.23-18.24" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mover&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mo&gt;...&lt;/mo&gt;
+
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;/mrow&gt;
+ &lt;mover&gt;
+ &lt;mo&gt;&amp;OverBrace;&lt;/mo&gt;
+ &lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt; &lt;mspace width="thinmathspace"/&gt; &lt;mtext&gt;times&lt;/mtext&gt;&lt;/mrow&gt;
+ &lt;/mover&gt;
+
+&lt;/mover&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;20&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4582/=ex5.png" width="25" height="13" alt="TeXbook, 16.2-16.3" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;msup&gt;
+
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;/msub&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;21&lt;/td&gt;
+
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4602/=ex51.png" width="253" height="56" alt="TeXbook, 18.40" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;munder&gt;
+ &lt;mo&gt;&amp;sum;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;p&lt;/mi&gt;
+ &lt;mtext&gt;&amp;nbsp;prime&lt;/mtext&gt;
+ &lt;/mrow&gt;
+
+ &lt;/munder&gt;
+ &lt;mi&gt;f&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;(&lt;/mo&gt;
+ &lt;mi&gt;p&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;)&lt;/mo&gt;
+ &lt;mo&gt;=&lt;/mo&gt;
+
+ &lt;msub&gt;
+ &lt;mo stretchy="false"&gt;&amp;int;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;t&lt;/mi&gt;
+ &lt;mo&gt;&amp;gt;&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;/msub&gt;
+
+ &lt;mi&gt;f&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;(&lt;/mo&gt;
+ &lt;mi&gt;t&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;)&lt;/mo&gt;
+ &lt;mspace width="thinmathspace"/&gt;
+ &lt;mi&gt;d&lt;/mi&gt;
+ &lt;mi&gt;&amp;pi;&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;(&lt;/mo&gt;
+ &lt;mi&gt;t&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;)&lt;/mo&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;22&lt;/td&gt;
+
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4603/=ex52.png" width="159" height="81" alt="TeXbook, 18.41" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mo stretchy="false"&gt;{&lt;/mo&gt;
+ &lt;munder&gt;
+ &lt;mrow&gt;
+ &lt;mover&gt;
+ &lt;mrow&gt;
+ &lt;mpadded width="0em"&gt;&lt;mphantom&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;/mphantom&gt;&lt;/mpadded&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mo&gt;,&lt;/mo&gt;
+ &lt;mo&gt;...&lt;/mo&gt;
+ &lt;mo&gt;,&lt;/mo&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;/mrow&gt;
+
+ &lt;mover&gt;
+ &lt;mo&gt;&amp;OverBrace;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+ &lt;mtext&gt;&amp;nbsp;&lt;/mtext&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mtext&gt;'s&lt;/mtext&gt;
+
+ &lt;/mrow&gt;
+ &lt;/mover&gt;
+ &lt;/mover&gt;
+ &lt;mo&gt;,&lt;/mo&gt;
+ &lt;mover&gt;
+ &lt;mrow&gt;
+ &lt;mpadded width="0em"&gt;&lt;mphantom&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;/mphantom&gt;&lt;/mpadded&gt;
+ &lt;mi&gt;b&lt;/mi&gt;
+ &lt;mo&gt;,&lt;/mo&gt;
+ &lt;mo&gt;...&lt;/mo&gt;
+ &lt;mo&gt;,&lt;/mo&gt;
+ &lt;mi&gt;b&lt;/mi&gt;
+ &lt;/mrow&gt;
+
+ &lt;mover&gt;
+ &lt;mo&gt;&amp;OverBrace;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;&amp;ell;&lt;/mi&gt;
+ &lt;mtext&gt;&amp;nbsp;&lt;/mtext&gt;
+ &lt;mi&gt;b&lt;/mi&gt;
+ &lt;mtext&gt;'s&lt;/mtext&gt;
+ &lt;/mrow&gt;
+
+ &lt;/mover&gt;
+ &lt;/mover&gt;
+ &lt;/mrow&gt;
+ &lt;munder&gt;
+ &lt;mo&gt;&amp;UnderBrace;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+
+ &lt;mi&gt;&amp;ell;&lt;/mi&gt;
+ &lt;mtext&gt;&amp;nbsp;elements&lt;/mtext&gt;
+ &lt;/mrow&gt;
+ &lt;/munder&gt;
+ &lt;/munder&gt;
+ &lt;mo stretchy="false"&gt;}&lt;/mo&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;23&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4604/=ex53.png" width="213" height="108" alt="TeXbook, 18.42" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mo&gt;(&lt;/mo&gt;
+ &lt;mtable&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;mrow&gt;
+ &lt;mo&gt;(&lt;/mo&gt;
+ &lt;mtable&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;mi&gt;b&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;mi&gt;d&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;/mtable&gt;
+ &lt;mo&gt;)&lt;/mo&gt;
+ &lt;/mrow&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;mrow&gt;
+ &lt;mo&gt;(&lt;/mo&gt;
+ &lt;mtable&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mi&gt;e&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;mi&gt;f&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mi&gt;g&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;mi&gt;h&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;/mtable&gt;
+ &lt;mo&gt;)&lt;/mo&gt;
+ &lt;/mrow&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mrow&gt;
+ &lt;mo&gt;(&lt;/mo&gt;
+ &lt;mtable&gt;
+
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mi&gt;i&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mi&gt;j&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mi&gt;l&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+
+ &lt;/mtable&gt;
+ &lt;mo&gt;)&lt;/mo&gt;
+ &lt;/mrow&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;/mtable&gt;
+ &lt;mo&gt;)&lt;/mo&gt;
+&lt;/mrow&gt;
+
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;24&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4605/=ex54.png" width="344" height="130" alt="TeXbook, 18.43" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mi&gt;det&lt;/mi&gt;
+ &lt;mo&gt;|&lt;/mo&gt;
+ &lt;mtable&gt;
+
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mo&gt;&amp;mldr;&lt;/mo&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mn&gt;3&lt;/mn&gt;
+
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mo&gt;&amp;mldr;&lt;/mo&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+
+ &lt;mrow&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+
+ &lt;/mtr&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mn&gt;3&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mn&gt;4&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mo&gt;&amp;mldr;&lt;/mo&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/mrow&gt;
+
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mo&gt;&amp;#x22EE;&lt;/mo&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mo&gt;&amp;#x22EE;&lt;/mo&gt;
+
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mo&gt;&amp;#x22EE;&lt;/mo&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mo&gt;&amp;#x22EE;&lt;/mo&gt;
+ &lt;/mtd&gt;
+
+ &lt;/mtr&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+
+ &lt;/mrow&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mo&gt;&amp;mldr;&lt;/mo&gt;
+ &lt;/mtd&gt;
+
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mrow&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+ &lt;/mrow&gt;
+
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;/mtable&gt;
+ &lt;mo&gt;|&lt;/mo&gt;
+ &lt;mo&gt;&amp;gt;&lt;/mo&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+&lt;/mrow&gt;
+
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;25&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4598/=ex6.png" width="25" height="14" alt="TeXbook, 16.2-16.3" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;msub&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msub&gt;
+&lt;/msub&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;26&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4583/=ex7.png" width="90" height="23" alt="TeXbook, 16.4-16.5" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;msubsup&gt;
+
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mn&gt;92&lt;/mn&gt;
+ &lt;mn&gt;31415&lt;/mn&gt;
+ &lt;/msubsup&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mi&gt;&amp;pi;&lt;/mi&gt;
+&lt;/mrow&gt;
+
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;27&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4584/=ex8.png" width="27" height="36" alt="TeXbook, 16.4-16.5" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;msubsup&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;msubsup&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+
+ &lt;mi&gt;b&lt;/mi&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;/msubsup&gt;
+ &lt;msubsup&gt;
+ &lt;mi&gt;z&lt;/mi&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mi&gt;d&lt;/mi&gt;
+
+ &lt;/msubsup&gt;
+&lt;/msubsup&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;28&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4585/=ex9.png" width="24" height="22" alt="TeXbook, 16.4-16.5" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;msubsup&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;mn&gt;3&lt;/mn&gt;
+ &lt;mo&gt;&amp;#x2034;&lt;/mo&gt;
+&lt;/msubsup&gt;
+&lt;/math&gt;
+
+&lt;/td&gt;&lt;/tr&gt;
+&lt;/table&gt;</pre>
+
+<h3 id="CSS_Content">CSS Content</h3>
+
+<pre class="brush: css"> /* Table style */
+
+ body {
+ text-align: center;
+ }
+
+ table
+ {
+ border: solid thin;
+ border-collapse: collapse;
+ margin-left: auto;
+ margin-right: auto;
+ }
+
+ th
+ {
+ background-color: #ddf;
+ border: solid thin;
+ color: black;
+ padding: 5px;
+ }
+
+ td
+ {
+ border: solid thin;
+ padding: 5px;
+ text-align: center;
+ }
+
+ .Asana math { font-family: Asana Math; }
+ .Cambria math { font-family: Cambria Math; }
+ .LatinModern math { font-family: Latin Modern Math; }
+ .LucidaBright math { font-family: Lucida Bright Math; }
+ .Minion math { font-family: Minion Math; }
+ .STIX math { font-family: STIX Math; }
+ .TeXGyreBonum math { font-family: TeX Gyre Bonum Math; }
+ .TeXGyrePagella math { font-family: TeX Gyre Pagella Math; }
+ .TeXGyreSchola math { font-family: TeX Gyre Schola Math; }
+ .TeXGyreTermes math { font-family: TeX Gyre Termes Math; }
+ .XITS math { font-family: XITS Math; }
+ .XITSRTL math { font-family: XITS Math; direction: rtl; }
+</pre>
+
+<h3 id="JavaScript_Content">JavaScript Content</h3>
+
+<pre class="brush: js"> function updateMathFont()
+ {
+ var mathFont = document.getElementById("MathFont").value;
+ if (mathFont == "Default") {
+ document.body.removeAttribute("class");
+ } else {
+ document.body.setAttribute("class", mathFont);
+ }
+ }
+
+ function load()
+ {
+ document.getElementById("MathFont").
+ addEventListener("change", updateMathFont, false)
+ }
+
+ window.addEventListener("load", load, false);
+
+</pre>
+</div>
+
+<p>次のテストは Knuth の TeX 本の TeX の数式のサンプルと MathML による同等の表現を含んでいます。デフォルトの Latin Modern Math フォントを使用した XeTeX エンジンによる描画と、あなたのブラウザがデフォルトの数学フォント又は代わりとなる OpenType MATH フォントを使用して描画する MathML を比較します。良い描画を得るために、適切な<a href="/ja/docs/Mozilla_MathML_Project/Fonts">数学フォント</a>があなたのシステムにインストールされていて、Gecko 31.0 {{GeckoRelease("31.0")}} 以上のような OpenType MATH がサポートされているブラウザを使用していることを確かめてください。また代わりに、ウェブフォントに基づいた <a href="http://fred-wang.github.io/MathFonts/">Mathematical OpenType Fonts のテストページ</a>を試すこともできます。最後に、この Mozilla ブラウザのいろいろなスクリーンリーダでテストがどのように読まれるか比較する<a href="/ja/docs/Mozilla/MathML_Project/a11y#mathml_torture_test">テーブル</a>をチェックしたいかもしれません。</p>
+
+<p>{{ EmbedLiveSample('MathML_Torture_Test', '100%', '2500px') }}</p>
+
+<div id="cke_pastebin" style="position: absolute; top: 74.6667px; width: 1px; height: 1px; overflow: hidden; left: -1000px;"> </div>
diff --git a/files/ja/mozilla/mobile/firefox_mobile_for_developers/index.html b/files/ja/mozilla/mobile/firefox_mobile_for_developers/index.html
new file mode 100644
index 0000000000..daf2fce7c9
--- /dev/null
+++ b/files/ja/mozilla/mobile/firefox_mobile_for_developers/index.html
@@ -0,0 +1,27 @@
+---
+title: Firefox Mobile for developers
+slug: Mozilla/Mobile/Firefox_Mobile_for_developers
+tags:
+ - Mobile
+ - NeedsUpdate
+translation_of: Mozilla/Mobile/Firefox_Mobile_for_developers
+---
+<h2 id="Compiling_and_testing" name="Compiling_and_testing">Compiling and testing</h2>
+<p>Instructions for building and testing Firefox Mobile can be found at <a class="link-https" href="https://wiki.mozilla.org/Mobile/Fennec/Android" rel="freelink">https://wiki.mozilla.org/Mobile/Fennec/Android</a></p>
+<h2 id="User_agent" name="User_agent">User agent</h2>
+<p>See <a href="/ja/docs/Gecko_user_agent_string_reference" title="Gecko_user_agent_string_reference">Gecko User Agent string reference</a> for details on the User-Agent headers sent by Firefox on mobile devices.  For more information about user agents, please see our article on <a href="/ja/docs/Browser_Detection_and_Cross_Browser_Support" title="Browser Detection and Cross Browser Support">Browser Detection</a>.</p>
+<h2 id="Mobile-specific_APIs" name="Mobile-specific_APIs">Mobile-specific APIs</h2>
+<p>There are some APIs that are specific to mobile, or are more useful to mobile.  They are listed below.</p>
+<h3 id="CSS_for_touch-specific_UI_elements" name="CSS_for_touch-specific_UI_elements">CSS for touch-specific UI elements</h3>
+<p>Mozilla supports the <a href="/ja/docs/CSS/Media_queries#-moz-touch-enabled" title="CSS/Media queries"><code>-moz-touch-enabled</code> CSS media query</a> that you can use to change CSS if you're on a touch device.  This is available and will work on Firefox for desktops as well, but is more likely to be useful for mobile devices.  You can use this to render larger buttons for people to press.</p>
+<h3 id="Viewport_meta_tag" name="Viewport_meta_tag">Viewport meta tag</h3>
+<p>Firefox supports the <code>viewport</code> meta tag on Mobile devices.  For details, see <a href="/ja/docs/Mobile/Viewport_meta_tag" title="Mobile/Using the viewport meta tag to improve the mobile browsing experience">Using the viewport meta tag to improve the mobile browsing experience</a>.</p>
+<p>More information on the <a href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html" title="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html">viewport meta tag can be found in the Safari reference documentation</a>.</p>
+<div class="note">
+ <strong>注記:</strong> The <code>viewport</code> meta tag is ignored on desktop versions of Firefox.</div>
+<h3 id="Media_queries" name="Media_queries">Media queries</h3>
+<p><a href="/ja/docs/CSS/Media_queries" title="CSS/Media queries">CSS Media queries</a> are supported in Firefox for desktops and mobile devices.  They can be used to change layout based on screen size and are the best way to build a UI that will work on desktops and mobile devices.</p>
+<h2 id="See_also" name="See_also">関連情報</h2>
+<ul>
+ <li><a href="http://starkravingfinkle.org/blog/2009/11/fennec-mobile-optimzed-web-pages/" title="http://starkravingfinkle.org/blog/2009/11/fennec-mobile-optimzed-web-pages/">Mark Finkle on Mobile Optimized Web pages</a></li>
+</ul>
diff --git a/files/ja/mozilla/mobile/index.html b/files/ja/mozilla/mobile/index.html
new file mode 100644
index 0000000000..5d3f8c6472
--- /dev/null
+++ b/files/ja/mozilla/mobile/index.html
@@ -0,0 +1,30 @@
+---
+title: Mobile
+slug: Mozilla/Mobile
+tags:
+ - Mobile
+translation_of: Mozilla/Mobile
+---
+<h2 id="Firefox_OS" name="Firefox_OS"><a href="/en-US/docs/Archive/B2G_OS">Firefox OS</a></h2>
+
+<p>Firefox OS は Linux と Mozilla の Gecko を使ったオープンソースのモバイル OS で、その上で、ユーザーインターフェイスと HTML / CSS / JavaScript のアプリケーションが動作します。</p>
+
+<p>Firefox OS のインストール方法とアプリの開発方法については、上記文書を参照してください。</p>
+
+<h2 id="Firefox_for_Android" name="Firefox_for_Android"><a href="/docs/Mozilla/Firefox_for_Android">Andriod 版 Firefox</a></h2>
+
+<p>Android 版 Firefox は Android 端末向けの Mozilla のモバイルウェブブラウザです。最近、Android のネイティヴ UI に刷新し、より高速・よりコンパクト・よりレスポンシブになっています。そして、カメラや電話帳などの端末機能にアクセスするためのより強力な API をサポートしています。</p>
+
+<p>Android 版 Firefox の作成方法に関するヘルプや、デバイス API の使い方、モバイル add-on の作り方については、上記文書を参照してください。</p>
+
+<h2 id="Firefox_for_iOS" name="Firefox_for_iOS"><a href="/docs/Mozilla/Firefox_for_iOS">iOS 版 Firefox</a></h2>
+
+<p>iOS 版 Firefox は iOS 端末向けに近々リリース予定の Mozilla のモバイルウェブブラウザです。AppStore の制約から、Gecko ではなく iOS が提供している WebView を利用しています。</p>
+
+<p>iOS 版 Firefox についてのヘルプや、他の iOS アプリとの統合方法については上記文書を参照してください。</p>
+
+<h2 id="Mobile_web_development" name="Mobile_web_development"><a href="/docs/Web/Guide/Mobile">モバイルウェブ開発</a></h2>
+
+<p>モバイル端末はデスクトップやラップトップとハードウェアの特徴が異なります。そしてハードウェアを扱うための API の多くは標準化へ向けて作業中です。</p>
+
+<p>モバイル端末上で動作するようにウェブサイトを開発する用法や、端末の性能を発揮するための作り方については上記文書を参照してください。そしてブラウザーごとに挙動が異なることも学んで臭い。</p>
diff --git a/files/ja/mozilla/mobile/viewport_meta_tag/index.html b/files/ja/mozilla/mobile/viewport_meta_tag/index.html
new file mode 100644
index 0000000000..04ab7c37b6
--- /dev/null
+++ b/files/ja/mozilla/mobile/viewport_meta_tag/index.html
@@ -0,0 +1,91 @@
+---
+title: モバイルブラウザでのレイアウトを制御するために meta タグの viewport を使う
+slug: Mozilla/Mobile/Viewport_meta_tag
+translation_of: Mozilla/Mobile/Viewport_meta_tag
+---
+<p><a class="link-https" href="https://wiki.mozilla.org/Mobile/Fennec">Mobile Firefox (Fennec)</a> 1.1 の来たるリリースでは、 <a href="/en-US/docs/Web/HTML/Element/meta#Attributes"><code>&lt;meta name="viewport"&gt;</code></a> タグのサポートを強化しています。Fennec の前のバージョンでは、width、height、そして initial-scale といったビューポートのプロパティをサポートしていました。しかし、iPhone や Android ブラウザ用につくられたいくつかのサイトでは<a class="external" href="http://starkravingfinkle.org/blog/2010/01/perils-of-the-viewport-meta-tag/">不具合</a>が出ていました。新しいバージョンでは Mobile Safari の同様のプロパティをサポートしました。また Fennec では、異なるサイズと解像度の画面でも、モバイルサイトをより同じように表示できるように変更しました。</p>
+
+<p class="caption">touch.facebook.com のこれまでの表示:</p>
+
+<p class="figure"><img alt="05-11-fennec-meta-viewport-2.png" class="default internal" src="/@api/deki/files/4371/=05-11-fennec-meta-viewport-2.png"></p>
+
+<p class="caption">touch.facebook.com の新しい表示:</p>
+
+<p class="figure"><img alt="05-11-fennec-meta-viewport-1.png" class="default internal" src="/@api/deki/files/4372/=05-11-fennec-meta-viewport-1.png"></p>
+
+<p>あなたは、これらの変更点を、Maemo、Windows、Mac、そして Linux のそれぞれで、<a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mobile-1.9.2/">Fennec 1.1</a> の最新版と、<a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mobile-trunk/">Trunk</a> の最新版のコードからビルドした版で、確認することができます。</p>
+
+<h2 id="背景">背景</h2>
+
+<p>Fennec のようなモバイルブラウザは、視覚的な「窓」(=ビューポート)のなかに、ページとして表示するので、ページはたいていは画面よりも幅が広いものの、モバイルブラウザは狭い窓のなかにそれぞれのページを割り付けるように押し込む必要はありません。(そして、それは多くのモバイルに最適化されていないサイトが崩れることにもなっています) ユーザーは、ページのそれぞれの領域を見るために、上下左右に動かしたり、ズームすることができます。</p>
+
+<p>Mobile Safari は、ウェブ開発者がビューポートのサイズと拡大率を制御できるよう、「viewport meta タグ」を導入しました。これはウェブ標準の何かではありませんが、他の多くのモバイルブラウザが、今ではこのタグをサポートしています。Apple の<a class="external" href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html#//apple_ref/doc/uid/TP40006509-SW29">解説文書</a>は、ウェブ開発者がこのタグをどのように使えばよいかを、良く説明しています。しかし、Fennec でそれがどのように実装されているかを正確に理解するために、いくつかの検証をしなければなりませんでした。例えば、Safari の文書では、中身は「コンマで区切られたリスト」とされています。しかし、既存のブラウザとウェブページは、コンマとセミコロン、半角スペースの混在で区切られています。</p>
+
+<p>quirksmode.org の「<a class="external" href="http://www.quirksmode.org/mobile/viewports2.html" title="http://www.quirksmode.org/mobile/viewports2.html">A Tale of Two Viewports</a>」という記事で、異なるモバイルブラウザでのビューポートについて、より詳しく知ることができます。</p>
+
+<h2 id="ビューポートの基本">ビューポートの基本</h2>
+
+<p>モバイルに最適化したサイトは、次のような記述を含んでいるのが典型的です:</p>
+
+<pre>&lt;meta name="viewport" content="width=device-width, initial-scale=1"&gt;</pre>
+
+<p><code>width</code> プロパティはビューポートのサイズを制御します。例えば、<code>width=600</code> というような任意のピクセル数を設定するか、<code>device-width</code> という、拡大率が 100% のときの、CSS ピクセルでの画面の幅を示す定数を設定します。(<code>height</code> と <code>device-height</code> 定数も紐づいています。こちらは、ビューポートの高さによって大きさや位置が変わる要素のあるページで便利でしょう)</p>
+
+<p><code>initial-scale </code>プロパティは、ページが最初にロードされたときの拡大率を制御します。<code>maximum-scale</code>、<code>minimum-scale</code>、そして <code>user-scalable</code> プロパティは、ページをズームインまたはズームアウトできるかどうかを制御します。</p>
+
+<h2 id="「1ピクセル」は1ピクセルではない">「1ピクセル」は1ピクセルではない</h2>
+
+<p>The iPhone and many popular Android phones have 3- to 4-inch (7–10 cm) screens with 320—480 pixels (~160 dpi). Firefox for Maemo runs on the Nokia N900, which has the same physical size but 480—800 pixels (~240 dpi). Because of this, the last version of Fennec displayed many pages about one third smaller (in actual, physical size) than iPhone or Android. This caused usability and readability problems on many touch-optimized web sites. Peter-Paul Koch wrote about this problem in <a class="external" href="http://www.quirksmode.org/blog/archives/2010/04/a_pixel_is_not.html">A pixel is not a pixel</a>.</p>
+
+<p>Fennec 1.1 for Maemo will use 1.5 hardware pixels for each CSS "pixel," following the lead of Android's WebKit-based browser. This means a page with <code>initial-scale=1</code> will render at close to the same physical size in Fennec for Maemo, Mobile Safari for iPhone, and the Android Browser on both <a class="external" href="http://developer.android.com/guide/practices/screens_support.html#range">HDPI and MDPI</a> phones. This is consistent with the <a class="external" href="http://www.w3.org/TR/CSS2/syndata.html#length-units">CSS 2.1 specification</a>, which says:</p>
+
+<blockquote>
+<p>If the pixel density of the output device is very different from that of a typical computer display, the user agent should rescale pixel values. It is recommended that the pixel unit refer to the whole number of device pixels that best approximates the reference pixel. It is recommended that the reference pixel be the visual angle of one pixel on a device with a pixel density of 96dpi and a distance from the reader of an arm's length.</p>
+</blockquote>
+
+<p>For web developers, this means that 320px be full width in portrait mode at scale=1, on all of the above-mentioned handheld devices, and they may size their layouts and images accordingly. But remember that not all mobile devices are the same width; you should also make sure that your pages work well in landscape mode, and on larger devices like the iPad and Android tablets.</p>
+
+<p>On 240-dpi screens, pages with <code>initial-scale=1</code> will effectively be zoomed to 150% by both Fennec and Android WebKit. Their text will be smooth and crisp, but their bitmap images will probably not take advantage of the full screen resolution. To get sharper images on these screens, web developers may want to design images – or whole layouts – at 150% of their final size (or 200%, to support 320-dpi devices such as a retina display iPhone) and then scale them down using CSS or viewport properties.</p>
+
+<p>The default ratio depends on the display density.  On a display with density less than 200dpi, the ratio is 1.0.  On displays with density between 200 and 300dpi, the ratio is 1.5.  For displays with density over 300dpi, the ratio is the integer floor(<em>density</em>/150dpi).  Note that the default ratio is true only when the viewport scale equals 1. Otherwise, the relationship between CSS pixels and device pixels depends on the current zoom level.</p>
+
+<h2 id="Viewport_width_and_screen_width">Viewport width and screen width</h2>
+
+<p>Many sites set their viewport to <code>"width=320, initial-scale=1"</code> to fit precisely onto the iPhone display in portrait mode. As mentioned above, this caused <a class="external" href="http://starkravingfinkle.org/blog/2010/01/perils-of-the-viewport-meta-tag/">problems</a> when Fennec 1.0 rendered these sites, especially in landscape mode. To fix this, Fennec 1.1 will expand the viewport width if necessary to fill the screen at the requested scale. This matches the behavior of Android and Mobile Safari, and is especially useful on large-screen devices like the iPad. (Allen Pike's <a class="external" href="http://www.antipode.ca/2010/choosing-a-viewport-for-ipad-sites/">Choosing a viewport for iPad sites</a> has a good explanation for web developers.)</p>
+
+<p>For pages that set an initial or maximum scale, this means the <code>width</code> property actually translates into a <em>minimum</em> viewport width. For example, if your layout needs at least 500 pixels of width then you can use the following markup. When the screen is more than 500 pixels wide, the browser will expand the viewport (rather than zoom in) to fit the screen:</p>
+
+<pre>&lt;meta name="viewport" content="width=500, initial-scale=1"&gt;</pre>
+
+<p>Fennec 1.1 also adds support for <code>minimum-scale</code>, <code>maximum-scale</code>, and <code>user-scalable</code>, with defaults and limits similar to <a class="external" href="http://developer.apple.com/safari/library/documentation/AppleApplications/Reference/SafariHTMLRef/Articles/MetaTags.html">Safari's</a>. These properties affect the initial scale and width, as well as limiting changes in zoom level.</p>
+
+<p>Mobile browsers handle orientation changes slightly differently. For example, Mobile Safari often just zooms the page when changing from portrait to landscape, instead of laying out the page as it would if originally loaded in landscape. If web developers want their scale settings to remain consistent when switching orientations on the iPhone, they must add a <code>maximum-scale</code> value to prevent this zooming, which has the sometimes-unwanted side effect of preventing users from zooming in:</p>
+
+<pre>&lt;meta name="viewport" content="initial-scale=1, maximum-scale=1"&gt;</pre>
+
+<p>This is not necessary in Fennec; when the device changes orientation, Fennec updates the viewport size, the page layout, and JavaScript/CSS properties like <code>device-width</code>, based on its new window dimensions.</p>
+
+<h2 id="Common_viewport_sizes_for_mobile_and_tablet_devices">Common viewport sizes for mobile and tablet devices</h2>
+
+<p>If want to know what mobile and tablet devices have which viewport widths, there is a comprehensive list of <a href="http://viewportsizes.com/" title="http://viewportsizes.com/">mobile and tablet viewport sizes here</a>. This gives information such as viewport width on portrait and landscape orientation as well as physical screen size, operating system and the pixel density of the device.</p>
+
+<h2 id="Specifications">Specifications</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Status</th>
+ <th scope="col">Comment</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('CSS3 Device', '#viewport-meta', '&lt;meta name="viewport"&gt;')}}</td>
+ <td>{{Spec2('CSS3 Device')}}</td>
+ <td>Non-normatively describes the Viewport META element</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>There is clearly demand for the viewport meta tag, since it is supported by most popular mobile browsers and used by thousands of web sites. It would be good to have a true standard for web pages to control viewport properties. As the standardization process proceeds, we at Mozilla will work to make sure we can implement any changes made during standardization.</p>
diff --git a/files/ja/mozilla/performance/adding_a_new_telemetry_probe/index.html b/files/ja/mozilla/performance/adding_a_new_telemetry_probe/index.html
new file mode 100644
index 0000000000..8b7506683f
--- /dev/null
+++ b/files/ja/mozilla/performance/adding_a_new_telemetry_probe/index.html
@@ -0,0 +1,31 @@
+---
+title: Adding a new Telemetry probe
+slug: Mozilla/Performance/Adding_a_new_Telemetry_probe
+tags:
+ - data
+ - ガイド
+ - テレメトリ
+translation_of: Mozilla/Performance/Adding_a_new_Telemetry_probe
+---
+<p>Firefox では、テレメトリシステムが Firefox のパフォーマンス、ハードウェア、使用状況、カスタマイズのさまざまな測定値を収集し、Mozilla に送信します。 この記事では、ドキュメントへのポインタを提供します。</p>
+
+<div class="note">
+<p><strong>メモ: </strong>Firefoxのすべての新しいデータコレクションには、データコレクションピアからの<a href="https://wiki.mozilla.org/Firefox/Data_Collection#Requesting_Approval">データコレクションレビュー</a>が必要になりました。データピアの1つに feedback? フラグを設定するだけです。1営業日以内に返信を試みます。</p>
+</div>
+
+<h2 id="はじめに">はじめに</h2>
+
+<p>新しい Telemetry プローブの追加は、<a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/start/adding-a-new-probe.html">Mozilla Source Tree のドキュメント</a>に記載されています。</p>
+
+<p>その他のテレメトリツールとドキュメントを見つけるには、<a href="https://telemetry.mozilla.org/">テレメトリポータル</a>にアクセスしてください。</p>
+
+<h2 id="助けを得る">助けを得る</h2>
+
+<p>テレメトリチームが問題の解決を支援します。私たちに接触することができます:</p>
+
+<ul>
+ <li>IRC の <em>#telemetry</em></li>
+ <li>Slack の <em>#fx-metrics</em></li>
+ <li>the <a href="https://mail.mozilla.org/listinfo/fx-data-dev">fx-data-dev mailing list</a></li>
+ <li>flags for <a href="https://wiki.mozilla.org/Modules/Toolkit#Telemetry">one of the peers</a> on Bugzilla or direct e-mail</li>
+</ul>
diff --git a/files/ja/mozilla/performance/gecko_profiler_faq/index.html b/files/ja/mozilla/performance/gecko_profiler_faq/index.html
new file mode 100644
index 0000000000..5648673301
--- /dev/null
+++ b/files/ja/mozilla/performance/gecko_profiler_faq/index.html
@@ -0,0 +1,415 @@
+---
+title: Gecko Profiler のFAQ
+slug: Mozilla/Performance/Gecko_Profiler_FAQ
+translation_of: Mozilla/Performance/Gecko_Profiler_FAQ
+---
+<p>This documents lists a number of questions asked by people in preparation for a tutorial session about the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Profiling_with_the_Built-in_Profiler">Gecko Profiler</a>.  mstange and ehsan tried to respond to some of the questions in advance in writing, and you can find the answers below.</p>
+
+<ul id="docs-internal-guid-81b866d2-12e9-cfc9-07fb-bc00c016f7e3" style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Is it possible to locate hot spots occurring within a single function?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The Gecko Profiler currently doesn’t have the ability to show you information about line numbers, neither for JS code nor for native code.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">For JS code, the profiler platform doesn’t capture any information about lines. It only knows what function was executed and what line this function starts at.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">For native code, the profiler captures the necessary information but doesn’t have a way to display it.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Similarly it also can’t show you instruction level information about where each sample was captured (this is why there is no support for line-level sampling for native code either.)  At this point the granularity of each sample it displays is a native function.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Therefore the Gecko Profiler is not a suitable tool for finding hotspots within a single function.  For this purpose you should try to use a native profiler on your platform of choice (for example xperf/vtune on Windows, Instruments on OSX, and perf/Zoom on Linux.)</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">One workaround is to break the hot function into several explicitly-non-inline helpers, recompile, and re-profile. This can change some performance characteristics, but is a decent way to get a sense of which parts of a large function are expensive.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How to profile startup code that regresses just a little (&lt;10-15ms ts_paint/tpaint)</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] We currently don’t have a good way to do that. You can write your own tools to assist you in this process, though. I did something like this a few years ago with the old profiler and I think something similar would work here:</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">I think there are three main challenges here. You need deterministic profiles that can be compared meaningfully, you need to gather enough data / samples, and you need a way to compare profiles.</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: square; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">To increase determinism, you really want an automated way of gathering the data. And you’ll want to make sure the profiles only contain data for the time range you’re interested in. To stop the profiler from gathering more samples after the “startup end” marker that you’re interested in, you can call Services.profiler.pause(); or you can insert a marker with a special string and then write a script that filters out all samples that were gathered after your marker.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: square; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">To increase the amount of data, you should run your automated gathering procedure many times, and then combine multiple profiles into one. We don’t have a script that combines profiles, but I can help you write one if you’re interested. In the end, you should have one big “before” profile and one big “after” profile.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: square; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Profile comparison is tricky. The only way that I’ve tried before is to use a “difference calltree”: In the regular call tree, each node of the calltree is assigned a weight which is just the number of samples that were under this call stack. In a difference call tree, each node’s weight instead is computed as &lt;number of samples under this stack in the “after” profile&gt; minus &lt;number of samples under this stack in the “before” profile&gt;. That tree is then displayed in the usual way, with weights in decreasing order from top to bottom. Then the call stacks whose cost increased the most in the “after” profile will be at the top, and those are the ones you usually want to look at if you caused a regression.</span><br>
+ <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">In this view, the timestamps of individual samples / stacks will not be meaningful.</span><br>
+ <span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Perf.html does not have a comparison view at the moment. I can help you add one, though.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">There is </span><a href="https://github.com/devtools-html/perf.html/blob/master/docs/gecko-profile-format.md" style="text-decoration: none;"><u>documentation for the Gecko profile format</u></a><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Is it worth slowing down CPU to increase the profiler resolution?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">It depends on what you are trying to profile to some extent.  Usually you should be really careful when changing the characteristics of the environment that you are trying to measure to avoid measuring the wrong thing.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">If the issue you are trying to avoid is not profiling on fast machines that Mozilla developers typically use to build Firefox on, a better solution may be using a less high-end machine that actually has lower spec’d hardware instead of artificially slowing down just the CPU.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Another approach to get more precision is also raising the sampling frequency to sub-millisecond ranges (it won’t work on Windows.)  High frequency sampling may also be an area where native profilers are a useful alternative tool to try.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How do we profile "leaks" that show up after running Firefox for &gt; 40 mins?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The Gecko Profiler has been designed specifically for the use case of having it run always in the background, and it’s pretty good at that!  It is quite reasonable to actually run the browser for 40 minutes and once the said leaks have happened capture the profiles and study what went wrong.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] I have been profiling my real browser usage for months now, and so can you.  :-)</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">However, if it’s really just “leaks” that are the problem, it’s possible that those profiles only show you that we spend a lot of time in GC / CC. In that case, the Gecko Profiler is the wrong tool to debug this. Even about:memory would be more useful.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Overview of the changes in the last (year?) to Cleopatra/etc</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Faster, hopefully more reliable</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Has a Timeline tab</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Lets you hide threads with a context menu</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Supports symbolication for local builds on Windows if you run “mach buildsymbols” first</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Profiling non-nsThreads?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The current setup requires each thread that you want to profile to notify the profiler about its existence. We have this hooked up for nsThreads, and as of very recently also for rayon threads (used in stylo). We have not attempted to register other threads with the profiler. </span><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1341811" style="text-decoration: none;"><u>Bug 1341811</u></a><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> suggests hooking platform thread spawning functions but nobody has looked at it yet.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Profiling all nsThreads - how bad is the overhead?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] I don’t know. I think Julian Seward has done some measurements on this, I think.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] Try clicking the toolbar icon for the extension, expanding the Settings section, and enter the secret cheat code “,” in the Threads field and click on “Apply (Restart Profiler)”.  This will capture all of the threads that the Gecko Profiler has been hooked to.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">This mode is usually recommended when you want to find a thread you want to do more focused profiling on, so that you can find its name and then construct a more useful thread filter string based on the found thread name.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How can I run (micro-?) benchmarks on the memory allocator to see if changes in it (or entire allocator replacements) are slower/faster?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What you *don’t* want to do is writing a micro-benchmark that call malloc/free in a loop and the like and call it a day!</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">A better idea would be picking up a real browser workload where through previous profiling we know that malloc overhead contributes a measurable percentage of overhead to the overall time and then study the change to that workload after replacing the allocator.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">You do want to think about various characteristics of an allocator which may have an impact on performance.  For example, see Julian’s great investigation on the impact of cache line sharing across multiple cores on jemalloc’s multi-core performance in </span><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1291355#c26" style="text-decoration: none;"><u>https://bugzilla.mozilla.org/show_bug.cgi?id=1291355#c26</u></a><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What's the best way to measure the cost of new compiler flags (that affect all or most functions)?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] This is similar to the previous question to some extent, but the specific answer really depends on what kind of compiler flag we’re talking about and what performance impact we’re interested to study.  But the short answer is picking up real browser workloads, and finding ways to split out the overall cost contributed by the thing that your change is going to affect and compare things before and after.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] This question is more about benchmarking than about profiling. If you want to measure things, please measure without the profiler running, because the profiler can add its own overhead.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How do we find performance regressions caused by third-party and system addons, especially ones that only show up after extended uptime?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">By running into them. I wish I had a better answer to this question.  In general, the Gecko Profiler is a profiling tool that helps you figure out what happens inside the browser as a performance issue is happening, it doesn’t help with reproducing the performance issues in the first place.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">TaskTracer: how to diagnose dispatch delays? (a demo)</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">TaskTracer is currently not in a usable state. Sorry.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">TaskTracer: from the above, how do we decide on prioritization on the same thread event queue?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">See above.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Do we profile memory page faults? (i.e. when we are accessing a virtual memory page that needs to reload from disk)</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The Gecko Profiler does not know about page faults.  On Linux, perf does a good job at visualizing page faults, for example, they will show up as part of the same call stack as the user-space call stack for the program you are profiling.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">If so, how complicated is to find out the reason the page has been purged?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] I don’t know.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] I don’t think this is very interesting in the general situation, since OSes can basically decide to swap out part of your virtual address space and you’d page fault when you access that page next and there is very little that the program can do about that.  Many times the reason you incur a page fault is merely that you are touching a memory page that hasn’t been touched in awhile.  For example, we have observed that the first access to large hashtables when doing a hashtable lookup can incur a page fault in many cases, and while the specific reason behind each one of those page faults may be different, the general conclusion from that observation would be something about the overall efficiency of your memory access patterns.  Typically we wouldn’t be optimizing away a single page fault anyway.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What is the status of I/O detection, on any thread?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The Gecko profiler has a “mainthreadio” feature which will cause markers for main thread IO to be inserted into the profile. However, the profiler add-on currently doesn’t have a checkbox to enable this feature.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Are the timer probes synchronized, or random/independent?  (I'd guess they're independent).  When profiling hundred(s) of threads at low intervals, does this distort the measurement or operation? (I.e. I want to profile all threads, not just Main plus a couple of others)</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">We haven’t done any measurements of how frequent sampling distorts measurement or operation.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">There is only one sampler thread. It runs a loop that works like this:</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: square; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Iterate over all threads. For each thread, suspend it, walk its stack, resume it.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: square; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Sleep until the next sample is due. Then go to the previous step.</span></p>
+ </li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">I there an equivalent to ITIMER_PROF vs ITIMER_REAL settings?  (ITIMER_PROF interrupts every N ms regardless of which thread used the time, REAL interrupts every Nms of wall-clock time)</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The Gecko profiler does not know which thread is used at which time. It interrupts all threads based on wall-clock time.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[jesup] Ok, that's the equivalent to ITIMER_REAL, kinda, except that per the previous question it doesn't interrupt every thread at once and snapshot the thread you started the itimer on, it interrupts each thread one at a time, which likely means distortion of the measurement if the number of threads monitored is significant (especially at high sample rates).  A cleaner snapshot would stop all threads, walk all their stacks, and then resume all threads, especially on high-core systems.  (ITIMER_REAL (due to posix) requires the signal occur on the calling thread, not a random thread.  ITIMER_PROF interrupts the then-running thread, whichever one it is.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Is there a way to isolate or filter a profile (at least of mainthread and maybe one or two other ones that make sense) to a specific tab/document/eventqueue?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Currently not. Some functions (reflow, painting, JS excecution) insert the URL of the associated document into the call stack frame, so you can get a rough idea, but we don’t have instrumentation at the tab/document/eventqueue level.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">For isolated profiles I recommend profiling a separate browser instance with only the tab that you’re interested in.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What are the recommended native profilers across all OS's?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Mac: Instruments; Linux: perf, zoom, callgrind; Windows: Concurrency Visualizer, VTune, xperf</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">When to use Gecko profiler vs. native profilers?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Gecko profiler: If you need JS callstacks or Gecko-specific instrumentation, or need to use any of its nifty UI features.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Native profilers: If you’re interested in lower-level information or are running into the Gecko profiler’s limitations. (See many of the questions above for examples of such limitations.)</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Note that these tools should all be considered as complementary, it’s typical to capture a profile in Gecko Profiler and based on some investigations decide to delve into some part of it using a native profiler, etc.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Nothing stands out in the profile, how can I accurately find the next bottleneck?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">This is a hard question.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">You’ll probably want to accumulate costs that are somehow “similar” or “in the same bucket” but distributed over different parts of the call tree / time line, and then attack the biggest bucket.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Neither the process of accumulation, nor the process of assigning things to buckets, is easily doable with the current UI.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">There are many cases where code is slow due to a death by a thousand cuts scenario, in which case you would need to find many micro-optimizations that overall amount to something significant.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How to go from a web-page to a micro-benchmark which is representative of the web-page?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Please let me know if you find a way to do this. It would make our job a lot easier.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">In the off-chance where we have been able to do this, it typically happens as one of the last stages of the work, since you’d typically have finished fully analyzing the issue and through that have managed to figure out how to write a micro-benchmark that reproduces the exact issue.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">It’s better to start getting used to profiling and analyzing real pages more.  :-)</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What's the best way to profile startup performance?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Install the Gecko profiler add-on. Quit the browser. Start the browser with the environment variable MOZ_PROFILER_STARTUP=1 set. As soon as startup is done, collect a profile.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What's the best way to do repeatable tests? ie: I want to measure perf of loading the same page with different stylo configurations.</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Probably by using Talos, especially if you want to measure and not profile.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">You can make your own Talos pageload test which has just the one page that you’re interested in in its manifest.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What actually means the percentage of the running time?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">The percentage of samples with stacks under this stack.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How you identify a user action in the main thread </span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">We’re missing UI for this at the moment. The profile contains markers for DOM events, and those include user-generated events like mouse clicks, but these markers are only exposed as a huge unsearchable list in the Markers tab.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">If you have a rough idea of what the user was doing, try searching for functions that you’d expect in the call tree and see where they are in the thread timeline.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">What is a suggested comprehensive performance analysis workflow for code changes that impact UI?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] I don’t know if anybody has written down such a workflow.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">My usual, very unscientific approach is: Use it for a while, and if you notice slowness, profile it. Pay attention to the red jank markers at the top.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] Mike Conley’s </span><a href="https://mikeconley.github.io/ohnoreflow/" style="text-decoration: none;"><u>Oh No Reflow! Add-on</u></a><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> is helpful.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">How do we know when profiler output is statistically significant (for comparing across runs / across machines)?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] Hard to say. Prefer to do comparisons by measuring your timings with code instead of by inspecting profiles. Always keep in mind that profiler overhead has the potential to skew the results.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Is it better to profile across multiple platforms, or to focus time on Windows (since that's the bulk of our users)?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] In my opinion, as long as you double-check that the problems you find are actually present on Windows, it doesn’t matter much what platform you find them on.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] That being said, we do see a lot of Windows-specific issues that you will not find on other platforms, for example sometimes code calls into a Windows API that requires loading a DLL the first time you call it that takes 10s of milliseconds to finish, etc.  Unless if you profile on Windows you will never find those specific issues.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">And when you get to the platform specific parts of the browser stack (such as graphics, media, etc.) then profiling on Windows would be certainly a lot more valuable than on other platforms.</span></p>
+ </li>
+ </ul>
+ </li>
+ <li dir="ltr" style="list-style-type: disc; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">Should I profile known to be slow sites on slower hardware to get a better signal?</span></p>
+
+ <ul style="margin-top: 0pt; margin-bottom: 0pt;">
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[mstange] That’s probably a good idea. As long as the slower hardware is still capable enough that the profiler can successfully complete symbolication.</span></p>
+ </li>
+ <li dir="ltr" style="list-style-type: circle; font-size: 11pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;">
+ <p dir="ltr" style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;"><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;">[ehsan] Performance issues are just much easier to spot on slower hardware, so if nothing else, using slower hardware will help </span><em>you</em><span style="background-color: transparent; color: #000000; font-family: Arial; font-size: 11pt; font-style: normal; font-variant: normal; font-weight: 400; text-decoration: none; vertical-align: baseline;"> find problems easier.  And don’t forget that if you’re interested in finding IO slowness issues, profiling on a machine with a fast SSD isn’t recommended.</span></p>
+ </li>
+ </ul>
+ </li>
+</ul>
+
+<p> </p>
diff --git a/files/ja/mozilla/performance/index.html b/files/ja/mozilla/performance/index.html
new file mode 100644
index 0000000000..dc454cda2e
--- /dev/null
+++ b/files/ja/mozilla/performance/index.html
@@ -0,0 +1,143 @@
+---
+title: Performance
+slug: Mozilla/Performance
+tags:
+ - Add-ons
+ - Debugging
+ - Development
+ - Mozilla
+ - Performance
+translation_of: Mozilla/Performance
+---
+<p>ここからリンクされている記事は、コアな Mozilla のコードやアドオン開発をしていなくてもパフォーマンスを改善する手助けになります。</p>
+
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h3 id="Documentation" name="Documentation">ドキュメンテーション</h3>
+
+ <dl>
+ <dt><a href="/ja/Performance/Reporting_a_Performance_Problem">パフォーマンスの問題を報告する</a></dt>
+ <dd>A user friendly guide to reporting a performance problem. A development environment is not required.</dd>
+ <dt><a href="Benchmarking" title="Performance/Benchmarking advice">Benchmarking</a></dt>
+ <dd>Tips on generating valid performance metrics.</dd>
+ <dt><a href="/ja/Extensions/Performance_best_practices_in_extensions" title="en/Extensions/Performance best practices in extensions">Performance best practices in extensions</a></dt>
+ <dd>A performance "best practices" guide for extension developers.</dd>
+ <dt><a href="/ja/Performance/Measuring_add-on_startup_performance" title="en/Measuring Add-on Startup Performance">Measuring Add-on Startup Performance</a></dt>
+ <dd>A guide for add-on developers on how to set up a performance testing environment.</dd>
+ <dt><a href="/ja/XUL_School/Appendix_A:_Add-on_Performance" title="en/XUL School/Appendix A: Add-on Performance">XUL School: Add-on Performance</a></dt>
+ <dd>Tips for add-on developers to help them avoid impairing application performance.</dd>
+ <dt><a href="/ja/Performance/GPU_performance">GPU パフォーマンス</a></dt>
+ <dd>Tips for profiling and improving performance when using a GPU.</dd>
+ <dt><a href="/ja/docs/Mozilla/Performance/ScrollLinkedEffects">Scroll-Linked Effects</a></dt>
+ <dd>Information on scroll-linked effects, their effect on performance, related tools, and possible mitigation techniques.</dd>
+ <dt><a href="/ja/docs/Mozilla/Performance/Automated_Performance_Testing_and_Sheriffing">Automated Performance Testing and Sheriffing</a></dt>
+ <dd>Information on automated performance testing and sheriffing at Mozilla.</dd>
+ <dt><a href="/ja/docs/Mozilla/Firefox/Performance_best_practices_for_Firefox_fe_engineers">Best practices for Front-end Engineers</a></dt>
+ <dd>Tips for reducing impacts on browser performance in front-end code.</dd>
+ </dl>
+
+ <p><span class="alllinks"><a class="internal" href="/Special:Tags?tag=Performance" title="Special:Tags?tag=Performance">View all pages tagged with "Performance"...</a></span></p>
+
+ <h3 id="Memory_profiling_and_leak_detection_tools" name="Memory_profiling_and_leak_detection_tools">メモリープロファイリングとリーク検出ツール</h3>
+
+ <dl>
+ <dt><a href="https://developer.mozilla.org/ja/docs/Tools/Memory" title="en/Performance/Profiling with the Built-in Profiler">開発者ツールの "メモリー" パネル</a></dt>
+ <dd>The memory panel in the devtools supports taking heap snapshots, diffing them, computing dominator trees to surface "heavy retainers", and recording allocation stacks.</dd>
+ </dl>
+
+ <dl>
+ <dt><a href="/ja/docs/Mozilla/Performance/about:memory">about:memory</a></dt>
+ <dd>about:memory is the easiest-to-use tool for measuring memory usage in Mozilla code, and is the best place to start. It also lets you do other memory-related operations like trigger GC and CC, dump GC &amp; CC logs, and dump DMD reports. about:memory is built on top of Firefox's <a href="/ja/docs/Mozilla/Performance/Memory_reporting">memory reporting</a> infrastructure.</dd>
+ <dt><a href="/ja/docs/Mozilla/Performance/DMD">DMD</a></dt>
+ <dd>DMD is a tool that identifies shortcomings in about:memory's measurements, and can also do multiple kinds of general heap profiling.</dd>
+ <dt><a href="/ja/docs/Mozilla/Performance/AWSY">Are We Slim Yet</a></dt>
+ <dd>areweslimyet.com (a.k.a. AWSY) is a memory usage and regression tracker.</dd>
+ <dt><a href="https://developer.mozilla.org/ja/docs/Mozilla/Performance/BloatView">BloatView</a></dt>
+ <dd>BloatView prints per-class statistics on allocations and refcounts, and provides gross numbers on the amount of memory being leaked broken down by class. It is used as part of Mozilla's continuous integration testing.</dd>
+ <dt><a href="https://developer.mozilla.org/ja/docs/Mozilla/Performance/Refcount_tracing_and_balancing">Refcount tracing and balancing</a></dt>
+ <dd>Refcount tracing and balancing are ways to track down leaks caused by incorrect uses of reference counting. They are slow and not particular easy to use, and thus most suitable for use by expert developers.</dd>
+ <dt><a href="/ja/docs/Mozilla/Performance/GC_and_CC_logs">GC と CC のログ</a></dt>
+ <dd>GC and CC logs can be generated and analyzed to in various ways. In particular, they can help you understand why a particular object is being kept alive.</dd>
+ <dt><a href="/ja/docs/Mozilla/Testing/Valgrind">Valgrind</a></dt>
+ <dd><a class="external text" href="http://valgrind.org/" rel="nofollow">Valgrind</a> is a tool that detects various memory-related problems at runtime, including leaks. Valgrind is used as <a class="external text" href="/ja/docs/Valgrind_test_job" rel="nofollow">part</a> of Mozilla's continuous integration testing, though the coverage is limited because Valgrind is slow.</dd>
+ <dt><a href="https://developer.mozilla.org/ja/docs/Mozilla/Testing/Firefox_and_Address_Sanitizer#LeakSanitizer">LeakSanitizer</a></dt>
+ <dd><span class="external text">LeakSanitizer</span> (a.k.a. LSAN) is similar to Valgrind, but it runs faster because it uses static source code instrumentation. LSAN is part of Mozilla's continuous integration testing, with most tests running through it as part of the AddressSanitizer (a.k.a. ASAN) test jobs.</dd>
+ <dt><a href="https://developer.apple.com/documentation/Performance/Conceptual/ManagingMemory/Articles/FindingLeaks.html">Apple のツール</a></dt>
+ <dd>Apple は、Mac OS X 向けに LSAN や Valgrind によってレポートされる問題と似た問題をレポートするツールを提供します。この「リーク」ツールは、SpiderMonkey や Firefox で使用することは推奨されません。タグ付けされたポインターによって混乱し、オブジェクトが存在しない場合、リークを引き起こすためです (<a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=390944" rel="nofollow">bug 390944</a> をご覧ください)。</dd>
+ <dt><a href="/ja/docs/Mozilla/Performance/Leak_Gauge">Leak Gauge</a></dt>
+ <dd>Leak Gauge は、ドキュメント、ウィンドウオブジェクト、docshell を含む、Gecko 内の特定の種類のリークを検出するのに使用できます。</dd>
+ <dt><a href="https://dxr.mozilla.org/mozilla-central/source/memory/replace/logalloc/README">LogAlloc</a></dt>
+ <dd>LogAlloc は、Gecko 内のメモリー割り当てのログのダンプを取得するツールです。That log can then be replayed against Firefox's default memory allocator independently or through another replace-malloc library, allowing the testing of other allocators under the exact same workload.</dd>
+ <dt><a href="/ja/docs/Mozilla/Performance/Memory_Profiler">メモリープロファイラー</a></dt>
+ <dd>The memory profiler samples allocation events and provides different views to analyze the allocation characteristic.</dd>
+ </dl>
+
+ <p>See also the documentation on <a href="/ja/docs/Mozilla/Performance/Leak-hunting_strategies_and_tips">Leak-hunting strategies and tips.</a></p>
+ </td>
+ <td>
+ <h3 id="Profiling_and_performance_tools" name="Profiling_and_performance_tools">プロファイリングツールとパフォーマンスツール</h3>
+
+ <dl>
+ <dt><a href="https://developer.mozilla.org/ja/docs/Tools/Performance" title="en/Performance/Profiling with the Built-in Profiler">Profiling with the Developer Tools Profiler</a></dt>
+ <dd>The profiler built into the developer tools has a high-level waterfall, detailed call tree, allocations and GC profiling, and flame graphs. It is available on all platforms and release channels, and also supports remote profiling b2g and Fennec.</dd>
+ </dl>
+
+ <dl>
+ <dt><a href="/ja/Performance/Profiling_with_the_Built-in_Profiler" title="en/Performance/Profiling with the Built-in Profiler">Profiling with the Gecko Profiler Addon</a> {{ gecko_minversion_inline("16.0") }}</dt>
+ <dd>The Gecko Profiler Addon is a good tool to start with.</dd>
+ <dt><a href="/ja/Performance/Profiling_with_Instruments" title="en/Performance/Profiling with Instruments">Profiling with Instruments</a></dt>
+ <dd>How to use Apple's Instruments tool to profile Mozilla code.</dd>
+ <dt><a href="/ja/Performance/Profiling_with_Xperf" title="en/Performance/Profiling with Xperf">Profiling with Xperf</a></dt>
+ <dd>How to use Microsoft's Xperf tool to profile Mozilla code.</dd>
+ <dt><a href="/ja/docs/Performance/Profiling_with_Concurrency_Visualizer" title="en/Performance/Profiling with Concurrency Visualizer">Profiling with Concurrency Visualizer</a></dt>
+ <dd>How to use Visual Studio's Concurrency Visualizer tool to profile Mozilla code.</dd>
+ <dt><a href="/ja/Performance/Profiling_with_Zoom" title="en/Performance/Profiling with Zoom">Profiling with Zoom</a></dt>
+ <dd>Zoom is a profiler for Linux done by the people who made Shark</dd>
+ <dt><a href="/ja/Performance/Measuring_performance_using_the_PerfMeasurement.jsm_code_module" title="en/Performance/Measuring performance using the PerfMeasurement.jsm code module">Measuring performance using the PerfMeasurement.jsm code module</a> {{ gecko_minversion_inline("2.0") }}</dt>
+ <dd>Using <a href="/jaJavaScript_code_modules/PerfMeasurement.jsm" title="en/JavaScript code modules/PerfMeasurement.jsm"><code>PerfMeasurement.jsm</code></a> to measure performance data in your JavaScript code.</dd>
+ <dt><a href="/ja/docs/Performance/Adding_a_new_Telemetry_probe" title="https://developer.mozilla.org/ja/docs/Performance/Adding_a_new_Telemetry_probe">Adding a new Telemetry probe</a></dt>
+ <dd>Information on how to add a new measurement to the Telemetry performance-reporting system</dd>
+ <dt><a href="/ja/Performance/Profiling_JavaScript_with_Shark" title="en/Performance/Profiling JavaScript with Shark">Profiling JavaScript with Shark</a> {{ gecko_minversion_inline("1.9") }}</dt>
+ <dd>How to use the Mac OS X Shark profiler to profile JavaScript code in Firefox 3.5 or later.</dd>
+ <dt><a href="/ja/Performance/Profiling_with_Shark" title="en/Performance/Profiling with Shark">Profiling with Shark</a></dt>
+ <dd>How to use Apple's Shark tool to profile Mozilla code.</dd>
+ <dt><a href="/ja/docs/Mozilla/Performance/Investigating_CSS_Performance">Investigating CSS Performance</a></dt>
+ <dd>How to figure out why restyle is taking so long</dd>
+ </dl>
+
+ <h3 id="Power_profiling">Power profiling</h3>
+
+ <dl>
+ <dt><a href="/ja/docs/Mozilla/Performance/Power_profiling_overview">Power profiling overview</a></dt>
+ <dd>This page provides an overview of relevant information, including details about hardware, what can be measured, and recommended approaches. It should be the starting point for anybody new to power profiling.</dd>
+ <dt><code><a href="/ja/docs/Mozilla/Performance/tools_power_rapl">tools/power/rapl</a></code> (Mac, Linux)</dt>
+ <dd><code>tools/power/rapl</code> is a command-line utility in the Mozilla codebase that uses the Intel RAPL interface to gather direct power estimates for the package, cores, GPU and memory.</dd>
+ <dt><code><a href="/ja/docs/Mozilla/Performance/powermetrics">powermetrics</a></code> (Mac-only)</dt>
+ <dd><code>powermetrics</code> is a command-line utility that gathers and displays a wide range of global and per-process measurements, including CPU usage, GPU usage, and various wakeups frequencies.</dd>
+ <dt><a href="/ja/docs/Mozilla/Performance/TimerFirings_logging">TimerFirings logging</a> (All platforms)</dt>
+ <dd>TimerFirings logging is a built-in logging mechanism that prints data on every time fired.</dd>
+ <dt><code><a href="/ja/docs/Mozilla/Performance/dtrace">dtrace</a></code> (Mac-only)</dt>
+ <dd><code>dtrace</code> is a powerful kernel instrumentation tool. One of its many features is the ability to instrument wakeups in a high-context fashion.</dd>
+ <dt><a href="/ja/docs/Mozilla/Performance/Activity_Monitor_and_top">Activity Monitor, Battery Status Menu and <code>top</code></a> (Mac-only)</dt>
+ <dd>The battery status menu, Activity Monitor and <code>top</code> are three related Mac tools that have major flaws but often consulted by users, and so are worth understanding.</dd>
+ <dt><a href="/ja/docs/Mozilla/Performance/Intel_Power_Gadget">Intel Power Gadget</a> (Windows, Mac, Linux)</dt>
+ <dd>Intel Power Gadget provides real-time graphs for package and processor RAPL estimates. It also provides an API through which those estimates can be obtained.</dd>
+ <dt><code><a href="/ja/docs/Mozilla/Performance/perf">perf</a></code> (Linux-only)</dt>
+ <dd><code>perf</code> is a powerful command-line utility that can measure many different things, including energy estimates and high-context measurements of things such as wakeups.</dd>
+ <dt><code><a href="/ja/docs/Mozilla/Performance/turbostat">turbostat</a></code> (Linux-only)</dt>
+ <dd><code>turbostat</code> is a command-line utility that gathers and displays various power-related measurements, with a focus on per-CPU measurements such as frequencies and C-states.</dd>
+ <dt><code><a href="https://01.org/powertop">powertop</a></code> (Linux-only)</dt>
+ <dd><code>powertop</code> is an interactive command-line utility that gathers and displays various power-related measurements.</dd>
+ </dl>
+
+ <h3 id="Related_Topics" name="Related_Topics">関連トピック</h3>
+
+ <dl>
+ <dd><a href="/ja/JavaScript" title="en/JavaScript">JavaScript</a>, <a href="/ja/XPCOM" title="en/XPCOM">XPCOM</a>, <a href="/ja/Developer_Guide" title="en/Developing_Mozilla">Developing Mozilla</a>, <a href="/ja/Extensions" title="en/Extensions">Extensions</a>, <a href="/ja/Addons" title="en/Addons">Addons</a></dd>
+ </dl>
+ </td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/ja/mozilla/performance/profiling_with_the_built-in_profiler/index.html b/files/ja/mozilla/performance/profiling_with_the_built-in_profiler/index.html
new file mode 100644
index 0000000000..c5bb8e1b80
--- /dev/null
+++ b/files/ja/mozilla/performance/profiling_with_the_built-in_profiler/index.html
@@ -0,0 +1,360 @@
+---
+title: Geckoプロファイラでプロファイリングする
+slug: Mozilla/Performance/Profiling_with_the_Built-in_Profiler
+translation_of: Mozilla/Performance/Profiling_with_the_Built-in_Profiler
+---
+<p>{{ gecko_minversion_header("16.0") }}</p>
+
+<div class="summary">
+<p><span class="seoSummary">Gecko ProfilerはFirefoxに組み込まれたプロファイラです。外部のプロファイラよりも Firefoxとの統合が強化されており、開発者以外のマシンやロックされたAndroid端末など、外部プロファイラが利用できない状況でも利用できます。 </span></p>
+</div>
+
+<div class="note">
+<p>Gecko Profilerは以前は「SPS」と「組み込みプロファイラ」として知られていました。私たちは可能な限り多くの古い名前への参照を変更しましたが、まだまだあります。</p>
+</div>
+
+<h2 id="Gecko_Profilerアドオンの入手">Gecko Profilerアドオンの入手</h2>
+
+<p>まず最初に、Firefoxの正しいビルドを使用しているかどうかを確認する必要があります。公式のNightlyまたはBetaまたはReleaseビルドが動作します。ローカルビルドを使用している場合は、mozconfigで--enable-profilingオプションを有効にしてください。</p>
+
+<p>Gecko Profilerには2つのインターフェースがあります:</p>
+
+<ol>
+ <li>Web 開発者にとっては、ツール &gt; Web 開発 &gt; パフォーマンス のメニューから開くことができる簡略化されたプロファイラがあります</li>
+ <li><a href="https://perf-html.io/">Gecko Profiler アドオン</a>をインストールすることで、Mozillaの内部の開発者用のより高度なインターフェースにアクセスすることができます(<a href="/ja/docs/Mozilla/Performance/Reporting_a_Performance_Problem">インストールの詳細が利用できます</a>)。</li>
+</ol>
+
+<div class="note">
+<p><a href="/ja/docs/Mozilla/Performance/Reporting_a_Performance_Problem">パフォーマンスの問題を報告</a>するときに、Firefox開発者からリクエストされたときにプロファイルを入手するためのステップバイステップガイドがあります。</p>
+
+<p><a href="/ja/docs/Mozilla/Performance/Reporting_a_Thunderbird_Performance_Problem_with_G">Thunderbirdのパフォーマンスの問題を報告</a>するときに、Thunderbird開発者が要求したときにプロファイルを取得するためのステップバイステップガイドがあります。</p>
+</div>
+
+<h2 id="プロファイルの理解">プロファイルの理解</h2>
+
+<p>Gecko Profilerに関する<a href="/ja/docs/Mozilla/Performance/Gecko_Profiler_FAQ">よくある質問</a>を確認することができます。</p>
+
+<p>Ehsanのビデオをいくつか調べてみましょう。</p>
+
+<p>
+ <video controls src="https://vid.ly/e6v7s4?content=video&amp;format=hd_webm">Your browser doesn't appear to support WebM video playback.</video>
+</p>
+
+<div class="note">
+<p>役に立つと思われる機能がある場合は、<a href="https://github.com/mstange/Gecko-Profiler-Addon/">詳細とともにバグを記録</a>してください。</p>
+</div>
+
+<h3 id="インターフェイス">インターフェイス</h3>
+
+<h4 id="1._タイムライン">1. タイムライン</h4>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/14877/profiler-timeline.png" style="height: 327px; width: 1751px;"></p>
+
+<p>タイムラインには、興味深いイベントを示すトレースマーカー(色付きセグメント)の行がいくつかあります。より多くの情報を表示するには、それらの上にカーソルを置きます。トレースマーカーの下には、さまざまなスレッドのアクティビティに対応する行があります。</p>
+
+<div class="note">
+<p><strong>Tip</strong>: [default] と注釈されたスレッドは、親プロセス(「UI」、別名「ブラウザクロム」、別名「メイン」)プロセスにあり、[tab] で注釈付けされたスレッドはWebコンテンツ ")プロセス。</p>
+</div>
+
+<div class="note">
+<p><strong>Tip</strong>: 親プロセスの長時間実行されるタスクはブラウザUI(「UIジャンク」とも呼ばれます)ですべての入力または描画をブロックしますが、コンテンツプロセスで長時間実行されるタスクはページとの対話性をブロックしますが、 APZのおかげです。</p>
+</div>
+
+<h5 id="トレースマーカー">トレースマーカー</h5>
+
+<ul>
+ <li>赤色:イベントループが応答していないことを示します。 vsyncなどの優先度の高いイベントはここには含まれていないことに注意してください。また、これは待っているイベントがあった場合に起こったことを示しており、必ずしもそれが保留中のイベントがあるとは限りません。</li>
+ <li>ブラック:同期IPCコールを示します。</li>
+</ul>
+
+<h5 id="範囲">範囲</h5>
+
+<p><img alt="Timeline showing ranged breadcrumbs and zoom icon" src="https://mdn.mozillademos.org/files/14893/profiler-breadcrumbsandzoom.png" style="height: 490px; width: 2450px;"></p>
+
+<p>トレースマーカーまたはスレッド領域の任意の場所をクリックしてドラッグすると、時間の範囲を拡大できます。範囲が選択されると、その範囲にズームする拡大鏡が表示されます。トレースマーカーをクリックすると、その期間に対応する選択肢が作成され、興味のある時間の範囲を容易にズームインできます。範囲を拡大すると、以前選択した範囲またはプロファイル全体(「フルレンジ」と表示されます)に簡単に戻ることができるパンくずリストが作成されます。</p>
+
+<div class="note">
+<p><strong>Tip</strong>: While zooming out to a previously-selected range deletes the narrower range, the browser back button can be used to restore the narrower range.</p>
+</div>
+
+<h5 id="Thread_Timeline(s)">Thread Timeline(s)</h5>
+
+<p><strong>Thread/Process Timelines</strong>: Below the tracing markers we have a list of profiled threads. These threads may come from different processes. In this case, we have the 'GeckoMain [default]' process' main thread, a content process' main thread, and the main thread of the compositor process. Each of these timelines is aligned with wall clock time. So, for example, when a thread is blocked, like 'GeckoMain [tab]', on a thread like 'GeckoMain [default]', we can see what's occurring on the latter thread that is preventing it from responding to the former.</p>
+
+<p><strong>X (Time) axis</strong>: The timelines go from left to right as wall clock time increases along the X axis. Elements in the timeline are spaced at the sampling frequency with an attempt to align them with time. Factors such as sampling or stack-walking variance and system load can lead to sampling delays which manifest as gaps in the timeline.</p>
+
+<div class="note">
+<p><strong>Note:</strong> because this is a sampling profiler, be cautious when examining running time that is equal to the sampling interval. For very time-sensitive profiling, you may want to consider a non-sampling profiler.</p>
+</div>
+
+<p><strong>Y (Stack) axis: </strong>The Y axis is the stack depth, not the CPU activity. The change in stack height is useful to find patterns like long blocking calls (long flatlines) or very tall spiky blocks (recursive calls and JS). With more experience you can read profiles faster by recognizing patterns. Also note that you can click on timeline elements (the selected element gets darker when selected) and the tree view (see below) reflects the selected element.</p>
+
+<ul>
+</ul>
+
+<h4 id="2._コールツリー">2. コールツリー</h4>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/14895/profiler-calltree.png" style="height: 726px; width: 1751px;"></p>
+
+<p>The Call Tree shows the samples organized by 'Running Time' which will show the data by wall clock time. There are lighter grey names to the right of tree elements that indicate where the code comes from. Be aware that elements can be from JavaScript, Gecko, or system libraries. Note that if some functions are not yet named properly, symbolication may not yet be finished.</p>
+
+<div class="note">
+<p>Tip: You can right-click on a function name to get an option to copy its name to the clipboard.</p>
+</div>
+
+<p>A significant portion of time can be spent in idle, blocking calls like waiting for events. This is ideal for a responsive application to be ready to service incoming events. There are OS-specific waiting functions like <code>NtWaitForMultipleObjects </code>seen in the example above taken on Windows or <code>mach_msg_trap</code> on macOS.</p>
+
+<div class="note">
+<p>Tip: You can quickly go deeper into the call tree by holding down your right arrow key. Alternatively, expand an entire tree segment by holding Alt and clicking on the arrow to the left of the collapsed tree segment.</p>
+</div>
+
+<p>As we progress into a more specific part of the tree, you'll notice that the 'Running time' decreases. This happens when a function has 2 or more non-trivial calls: the running time will be split between its children.</p>
+
+<div class="note">
+<p>Tip: Focus on one section of the tree by clicking on the "arrow-in-a-circle" icon that appears to the right of the tree element as you hover over it. A "tree breadcrumb" will appear similar to the range breadcrumbs noted above.</p>
+</div>
+
+<p>Clicking the "JavaScript only" option will only show JavaScript code in the Call Tree. You could compare the time with this option checked and the total time to get an idea of how much time was spent running JS. Note that long-running JS function execution may not actually be taking as long as you think because further down the call stack there may be something like painting happening.</p>
+
+<p>Clicking the "Invert call stack" option will sort by the time spent in a function in descending order. Note that the running time here is only the running time of that particular frame and not the total of all called instances of that function. You can see the samples in the Timeline get darker as you select different functions in the Call Tree; these are samples that were taken when the selected function was running.</p>
+
+<p>"Filter stacks" will allow you to search for functions by name. One of the easiest ways to find slowness caused by a page's JS is to type its URL into the "Filter stacks" box. You can then select corresponding Call Tree entries and watch the Timeline for entries in the content process main thread that get darker as you select Call Tree entries.</p>
+
+<div class="note">
+<p>Tip: If things are blank elsewhere in the UI, you may have text entered into the "Filter stacks" box.</p>
+</div>
+
+<h5 id="Custom_Annotations">Custom Annotations</h5>
+
+<p>In <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1334218">bug 1334218</a> an annotation was added to <code>PresShell::Paint</code> to show the URL of the document being painted. These annotations are not too complex to add so if you would like something added, <a href="https://bugzilla.mozilla.org/enter_bug.cgi">file a bug</a>.</p>
+
+<h4 id="3._Sharing_the_profile">3. Sharing the profile</h4>
+
+<p>Click "Share..." &gt; Share acknowledging that the URLs you had open and your Firefox extensions will be included in the profile data sent to the server. If you select a different time range, the URL revealed by pressing "Permalink" will change so that you can be sure the recipient of the URL will see the same things you are seeing.</p>
+
+<h3 id="Tips">Tips</h3>
+
+<p>Understanding profiles can be difficult. If you're unfamiliar with Gecko's internals, you can click the <em>JavaScript only</em> button to see where your JavaScript code is slow. Each entry in the Call Tree shows a call stack and how much time is spent in that call stack. For example:<img alt="" src="https://mdn.mozillademos.org/files/14905/profiler-timespent.png" style="display: block; height: 382px; margin: 0px auto; width: 1180px;">In the results above we can see that we're spending ~287 milliseconds in <code>Startup::XRE_InitChildProcess</code>, 194 ms of which are spent in <code>PVsync::Msg_Notify</code> and <strong>all</strong> child functions that it calls. It is useful to scan down the "Running Time" column and look for when the time changes. While looking for performance problems, you're looking for the processes that are taking the most time; then you can figure out how to optimize them.</p>
+
+<h3 id="Common_Performance_Bugs_in_Firefox">Common Performance Bugs in Firefox</h3>
+
+<p>Inefficient code that is on the reflow or restyle paths is often to blame for jank. So is code that is run often in the parent process or in parts of the codebase that apply to many users.</p>
+
+<p>Synchronous re-flow can be caused by JS that, for example, makes changes to the page content in a loop and queries about the layout of the page in that same loop.</p>
+
+<p>A PresShell:Flush means that we are either recomputing styles or recomputing layout. These sorts of flushes should be avoided if possible, as they can be quite expensive. Keep your eyes out for flushes like this that are blocking the main thread for a long time. If you notice these things happening in a loop, that's a bug to be fixed, since we're likely "layout thrashing".</p>
+
+<p>Some more tips and answers to common questions are available in a <a href="/en-US/docs/Mozilla/Performance/Gecko_Profiler_FAQ">mid-2017 FAQ document</a>.</p>
+
+<p>It's a good idea to search <a href="https://bugzilla.mozilla.org/">bugzilla</a> before filing a bug about a performance problem in Firefox but sometimes it's hard to find issues that have already been reported. Therefore, it's usually a good idea to <a href="https://bugzilla.mozilla.org/enter_bug.cgi">file a bug</a>.</p>
+
+<h2 id="ローカルWindowsビルドのプロファイリング">ローカルWindowsビルドのプロファイリング</h2>
+
+<p>If you built Firefox for Windows <strong>locally</strong> and you would like to use the local symbols with the profiler, you will need to run an additional tool; see <a href="/en-US/docs/Performance/Profiling_with_the_Built-in_Profiler_and_Local_Symbols_on_Windows" title="/en-US/docs/Performance/Profiling_with_the_Built-in_Profiler_and_Local_Symbols_on_Windows">Profiling with the Gecko Profiler and Local Symbols on Windows</a>.</p>
+
+<h2 id="ビルドをプロファイリングする">ビルドをプロファイリングする</h2>
+
+<p>The profiler currently doesn't really support symbolication for profiles from Try builds. For Linux builds, there seem to be symbols inside the binaries, which the profiler should pick up correctly. But on Windows and macOS, you'll have to do some tricks to make it work:</p>
+
+<ol>
+ <li><span>Put your firefox build into a directory with the name <code>dist</code>.</span></li>
+ <li><span>Download the crashreporter symbols zip for your build. It should be one of the "artifacts" of the build job of your try build.</span></li>
+ <li><span>Unzip the crashreporter symbols into <code>dist/crashreporter-symbols/</code>.</span></li>
+ <li><span>Now profile as usual.</span></li>
+</ol>
+
+<p>(This abuses the symbolication logic for local builds. It's at <a href="http://searchfox.org/mozilla-central/rev/51b3d67a5ec1758bd2fe7d7b6e75ad6b6b5da223/browser/components/extensions/ext-geckoProfiler.js#172">ext-geckoProfiler.js</a> and may stop working at any time.)</p>
+
+<h2 id="Firefoxモバイルのプロファイリング">Firefoxモバイルのプロファイリング</h2>
+
+<p>Firefox 61 for Android supports Gecko profiler again; see <a href="https://perf-html.io/docs/#/./guide-remote-profiling">Remote profiling on Android</a> for details.</p>
+
+<p>The following information is old version of Firefox for Android.</p>
+
+<ol>
+ <li>For local builds of Fennec, you should build with optimization and <code>STRIP_FLAGS="--strip-debug"</code> but <strong>NOT</strong> with <code>--enable-profiling</code>. Nightly builds are already built with the appropriate flags.</li>
+ <li>You'll need to have <code>adb</code> and <code>arm-eabi-addr2line</code> (which is part of the <a href="http://developer.android.com/tools/sdk/ndk/index.html#Installing" title="http://developer.android.com/tools/sdk/ndk/index.html#Installing">Android NDK</a>) in your bash <code>PATH</code>, so use <code>locate arm-eabi-addr2line</code> (on Linux) or<code> mdfind name:arm-eabi-addr2line</code> (on OS X) and stick an export to its location in <code>~/.bash_profile</code>. The extension will invoke bash to use <code>adb</code> and <code>addr2line</code>.</li>
+ <li>Install the <a href="https://github.com/bgirard/Gecko-Profiler-Addon/raw/master/geckoprofiler.xpi" title="https://github.com/bgirard/Gecko-Profiler-Addon/raw/master/geckoprofiler.xpi">latest pre-release build</a> in your host machine's Firefox browser that has your phone reachable via <a href="/en-US/Firefox_OS/Debugging/Installing_ADB">ADB</a>. This will add a icon in the top right of the browser.</li>
+ <li>Set <code>devtools.debugger.remote-enabled</code> to <code>true</code> in <code>about:config</code> for Fennec.</li>
+ <li>Select target <em>Mobile USB</em> and press <em>Connect</em>. The first run will take an additional 1 minute or so to pull in the required system libraries.</li>
+</ol>
+
+<h2 id="Firefoxの起動のプロファイリング">Firefoxの起動のプロファイリング</h2>
+
+<ol>
+ <li>Start your Firefox with the environment variable <code>MOZ_PROFILER_STARTUP=1</code> set. This way the profiler is started as early as possible during startup.</li>
+ <li>Then capture the profile using the add-on as usual.</li>
+</ol>
+
+<p>Startup profiling does not use the settings that you configured in the add-on's panel. It uses settings that can be configured with the environment variables <code>MOZ_PROFILER_STARTUP_ENTRIES</code> and <code>MOZ_PROFILER_STARTUP_INTERVAL</code>:</p>
+
+<ul>
+ <li>If it looks like the buffer is not large enough, you can tweak the buffer size with the env var <code>MOZ_PROFILER_STARTUP_ENTRIES</code>. This defaults to 1000000, which is 9MB. If you want 90MB use 10000000, and 20000000 for 180MB, which are good values to debug long startups.</li>
+ <li>If you'd like a coarser resolution, you can also choose a different interval using <code>MOZ_PROFILER_STARTUP_INTERVAL</code>, which defaults to 1 (unit is millisecond). You can't go below 1 ms but you can use e.g. 10 ms.</li>
+</ul>
+
+<h2 id="JSベンチマーク(xpcshell)のプロファイリング">JSベンチマーク(xpcshell)のプロファイリング</h2>
+
+<ol>
+ <li>To profile the script <code>run.js</code> with IonMonkey (<code>-I</code>), type inference (<code>-n</code>) and JäegerMonkey (<code>-m</code>). Thgis requires the following command:
+
+ <pre><code class="brush: bash">$ xpcshell -m -I -n -e '
+ const Ci = Components.interfaces;
+ const Cc = Components.classes;
+ var profiler = Cc["@mozilla.org/tools/profiler;1"].getService(Ci.nsIProfiler);
+ profiler.StartProfiler(
+ 10000000 /* = profiler memory */,
+ 1 /* = sample rate: 100µs with patch, 1ms without */,
+ ["stackwalk", "js"], 2 /* = features, and number of features. */
+ );
+ ' -f ./run.js -e '
+ var profileObj = profiler.getProfileData();
+ print(JSON.stringify(profileObj));
+ ' | tail -n 1 &gt; run.cleo</code></pre>
+ The xpcshell output all benchmark information and on its last line it output the result of the profiling, you can filter it with <code>tail -n 1</code> and redirect it to a file to prevent printing it in your shell.  The expected size of the output is around 100 of MB.</li>
+ <li>To add symbols to your build, you need to call <code>./scripts/profile-symbolicate.py</code> available in B2G repository.
+ <pre><code>$ GECKO_OBJDIR=&lt;objdir&gt; PRODUCT_OUT=&lt;objdir&gt; TARGET_TOOLS_PREFIX= \
+ ./scripts/profile-symbolicate.py -o run.symb.cleo run.cleo</code></pre>
+ </li>
+ <li><a href="https://github.com/bgirard/cleopatra" title="https://github.com/bgirard/cleopatra">Clone Cleopatra</a> and start the server with <code>./run_webserver.sh</code>.</li>
+ <li>Access Cleopatra from your web browser by loading the page <code>localhost:8000</code>, and upload <code>run.symb.cleo</code> to render the profile with most of the symbol information.</li>
+</ol>
+
+<h2 id="ネイティブスタックとラベルスタック">ネイティブスタックとラベルスタック</h2>
+
+<p>The profiler periodically samples the stack of the selected threads in Firefox and collects a stack trace. This stack trace is the combined stack of three different stacks: The native stack, the JavaScript stack, and the label stack.</p>
+
+<h3 id="Native_stack">Native stack</h3>
+
+<p>The native stack is the regular C / C++ / rust function stack that you know from your debugger. It's only collected if the "Stack walk" checkbox in the gecko profiler add-on's settings is checked.</p>
+
+<h3 id="JavaScript_stack">JavaScript stack</h3>
+
+<p>The JavaScript stack is collected by the JS engine. This is controlled by the "JavaScript" checkbox in the gecko profiler add-on's settings panel.</p>
+
+<h3 id="Label_stack">Label stack</h3>
+
+<p>The label stack (formerly called "Pseudo stack") uses function entry/exit tags added by hand to important points in the code base.  The stacks you see in the UI are chains of these tags.  This is good for highlighting particularly interesting parts of the code, but they miss out on un-annotated areas of the code base, and give no visibility into system libraries or drivers.</p>
+
+<p>Tagging is done by adding macros of the form <code>AUTO_PROFILER_LABEL("NAMESPACE", "NAME")</code>. These add RAII helpers, which are used by the profiler to track entries/exits of the annotated functions.  For this to be effective, you need to liberally use <code>AUTO_PROFILER_LABEL</code> throughout the code. See <code>GeckoProfiler.h</code> for more variations like <code>AUTO_PROFILER_LABEL_DYNAMIC</code>.</p>
+
+<p>Because of the non-zero overhead of the instrumentation, the sample label shouldn't be placed inside hot loops.  A profile reporting that a large portion is spent in "Unknown" code indicates that the area being executed doesn't have any sample labels.  As we focus on using this tool and add additional sample labels coverage should improve.</p>
+
+<h2 id="Sharing_saving_and_loading_profiles">Sharing, saving and loading profiles</h2>
+
+<p>After capturing and viewing a profile you will see "Share..." and "Save as file..." buttons in the top-right of the window. Sharing will upload your profile to perf-html.io and make it public. More <a href="/en-US/docs/Mozilla/Performance/Reporting_a_Performance_Problem#Capturing_and_sharing_a_profile">information on sharing profiles</a> is available.</p>
+
+<h2 id="ハングしたプロセスのプロファイリング">ハングしたプロセスのプロファイリング</h2>
+
+<p>It is possible to get profiles from hung Firefox processes using lldb<sup><a href="http://mikeconley.ca/blog/2015/04/04/things-ive-learned-this-week-march-30-april-3-2015/#fn1-2699" rel="footnote" title="Unfortunately, this technique will not work for Windows. ">1</a></sup>.</p>
+
+<ol>
+ <li>After the process has hung, <a href="https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/gdb_to_lldb_transition_guide/document/lldb-terminal-workflow-tutorial.html#//apple_ref/doc/uid/TP40012917-CH4-SW5">attach lldb</a>.</li>
+ <li>Type in<sup><a href="http://mikeconley.ca/blog/2015/04/04/things-ive-learned-this-week-march-30-april-3-2015/#fn2-2699" rel="footnote" title="Assuming you’re running a build after this revision landed.">2</a></sup>, :
+ <pre>p (void)<code id="line-232">profiler_save_profile_to_file</code>("somepath/profile.txt")</pre>
+ </li>
+ <li><a href="https://github.com/mstange/analyze-tryserver-profiles">Clone mstange’s handy profile analysis repository.</a></li>
+ <li>Run:
+ <pre>python symbolicate_profile.py somepath/profile.txt</pre>
+
+ <p>To graft symbols into the profile. mstange’s scripts do some fairly clever things to get those symbols – if your Firefox was built by Mozilla, then it will retrieve the symbols from the Mozilla symbol server. If you built Firefox yourself, it will attempt to use some cleverness<sup><a href="http://mikeconley.ca/blog/2015/04/04/things-ive-learned-this-week-march-30-april-3-2015/#fn3-2699" rel="footnote" title="A binary called dump_syms_mac in mstange’s toolkit, and nm on Linux">3</a></sup> to grab the symbols from your binary.</p>
+
+ <p>Your profile will now, hopefully, be updated with symbols. Upload it for further analysis!</p>
+
+ <p>I haven’t yet had the opportunity to try this, but I hope to next week. I’d be eager to hear people’s experience giving this a go – it might be a great tool in determining what’s going on in Firefox when it’s hung!</p>
+ </li>
+</ol>
+
+<h2 id="スレッドのプロファイリング">スレッドのプロファイリング</h2>
+
+<p>The Gecko Profiler has rudimentary support for profiling multiple threads. To enable it, check the 'Multi-Thread' box then enter one or more thread names into the textbox beside it. Thread names are the strings passed to the base::Thread class at initialization. At present there is no central list of these thread names, but you can find them by grepping the source.</p>
+
+<p>Examples: <a href="http://mxr.mozilla.org/mozilla-central/source/ipc/glue/BrowserProcessSubThread.cpp#24">1</a> <a href="http://mxr.mozilla.org/mozilla-central/source/gfx/layers/ipc/CompositorParent.cpp#133">2</a></p>
+
+<p>If the filter you entered is invalid, no threads will be profiled. You can identify this by hitting Analyze (Cleopatra will show you an error message). If the filter is left empty, only the main thread is captured (as if you had not enabled Multi-Thread.)</p>
+
+<h2 id="プロファイラの機能">プロファイラの機能</h2>
+
+<p>The profiler supports several features. These are options to gather additional data in your profiles. Each option will increase the performance overhead of profiling so it's important to activate only options that will provide useful information for your particular problem to reduce the distortion.</p>
+
+<h3 id="Stackwalk">Stackwalk</h3>
+
+<p>When taking a sample the profiler will attempt to unwind the stack using platform specific code appropriate for the ABI. This will provide an accurate callstack for most samples. On ABIs where framepointers are not avaiable this will cause a significant performance impact.</p>
+
+<h3 id="JS_Profiling">JS Profiling</h3>
+
+<p>Javascript callstacks will be generated and interleaved with the c++ callstacks. This will introduce an overhead when running JS.</p>
+
+<h3 id="GC_Stats">GC Stats</h3>
+
+<p>Will embed GC stats from 'javascript.options.mem.notify' in the profile.</p>
+
+<h3 id="Main_Thread_IO">Main Thread IO</h3>
+
+<p>This will interpose file I/O and report them in the profiles.</p>
+
+<h3 id="Multi-Thread">Multi-Thread</h3>
+
+<p>This will sample other threads. This fields accept a comma seperated list of thread names. A thread can only be profiled if it is registered to the profiler.</p>
+
+<h3 id="GPU">GPU</h3>
+
+<p>This will insert a timer query during compositing and show the result in the Frames view. This will appropriate how much GPU time was spent compositing each frame.</p>
+
+<h3 id="Layers_Texture">Layers &amp; Texture</h3>
+
+<p>The profiler can be used to view the layer tree at each composite, optionally with texture data. This can be used to debug correctness problems.</p>
+
+<h4 id="Viewing_the_Layer_Tree">Viewing the Layer Tree</h4>
+
+<p>To view the layer tree, the <code>layers.dump</code> pref must be set to <code>true</code> in the Firefox or B2G program being profiled.</p>
+
+<p>In addition, both the compositor thread and the content thread (in the case of B2G, the content thread of whichever app you're interested in) must be profiled. For example, on B2G, when profiling the Homescreen app, you might start the profiler with:</p>
+
+<pre>./profile.sh start -p b2g -t Compositor &amp;&amp; ./profile.sh start -p Homescreen
+</pre>
+
+<p>Having gotten a profile this way, the layer tree for a composite can be seen by clicking on a composite in the "Frames" section of Cleopatra (you may need to a sub-range of samples to make individual composites large enough to be clicked). This will activate the "LayerTree" tab:</p>
+
+<p><img alt="Screenshot of layer tree view in Cleopatra, with no textures." src="https://mdn.mozillademos.org/files/10327/cleopatra-layer-tree-hilite.png" style="height: 1029px; width: 1923px;"></p>
+
+<p>In this screenshot, Composite #143 has been selected. The layer tree structure can be seen in the left panel. It contains, for each layer, the type of the layer, and various metrics about the layer, such as the visible region and any transforms. In the right panel, a visualization of the layer tree (based entirely on the aforementioned metrics) is shown. Hovering over a layer in the left panel highlights the layer in the right panel. This is useful for identifying what content each layer corresponds to. Here, I'm hovering over the last layer in the layer tree (a PaintedLayerComposite), and a strip at the top of the right panel is highlighted, telling me that this layer is for the system notification bar in B2G.</p>
+
+<h4 id="Viewing_Textures">Viewing Textures</h4>
+
+<p>Sometimes, it's useful to see not only the structure of the layer tree for each composite, but also the rendered textures for each layer. This can be achieved by additionally setting the <code>layers.dump-texture</code> pref to <code>true</code>, or by adding <code>-f layersdump </code>to the profiler command line (the latter implies both the <code>layers.dump</code> and <code>layers.dump-texture</code> prefs).</p>
+
+<div class="warning">
+<p>警告: テクスチャデータをダンプすると、パフォーマンスが大幅に低下し、プロファイルファイルに多くの記憶領域が必要になります。 このようにプロファイリングする際には、フレームレートを大幅に下げてレンダリングを実行し、キャプチャ時間を短くして、関心のあるサンプルが上書きされないようにします。</p>
+</div>
+
+<p>Here's how the Layer Tree view looks in Cleopatra with texture data:</p>
+
+<p><img alt="Screenshot of layer tree view in Cleopatra, with textures." src="https://mdn.mozillademos.org/files/10329/cleopatra-layer-tree-textures.png" style="height: 1037px; width: 1920px;"></p>
+
+<p>This time, the visualization in right panel shows the actual textures rather than just the outlines of the layers. This can be very useful for debugging correctness problems such as a temporary visual/rendering glitch, because it allows you to find the precise composite that shows the glitch, and look at the layer tree for that composite.</p>
+
+<h4 id="Visualizing_a_layer_tree_without_a_profile">Visualizing a layer tree without a profile</h4>
+
+<p>If you have a layer dump from somewhere (such as from <code>adb logcat</code> on B2G), you can get Cleopatra to visualize it (just the structure of course, not textures) without needing a profile. To do so, paste the layer dump into the "Enter your profile data here" text field on the front page of Cleopatra:</p>
+
+<p><img alt="Screenshot of front page of Cleopatra, with pasted layer dump." src="https://mdn.mozillademos.org/files/10331/cleopatra-layer-tree-noprofile.png" style="height: 596px; width: 1020px;"></p>
+
+<p>The resulting "profile" will have the Layer Tree view enabled (but nothing else). This is useful in cases where you want to gain a quick visual understanding of a layer dump without having to take a profile.</p>
+
+<div class="note">
+<p>On B2G, each line of a layer dump in <code>adb logcat</code> output is prefixed with something like <code>I/Gecko   (30593):</code>. Cleopatra doesn't currently understand this prefix, so it needs to be removed before pasting.</p>
+</div>
+
+<h3 id="Display_List">Display List</h3>
+
+<p>Dump the display list after each refresh with the texture data. This can be used to debug correctness problems.</p>
+
+<h2 id="Contribute">Contribute</h2>
+
+<ul>
+ <li>Source is located in {{ Source("tools/profiler") }}.</li>
+ <li>The Bugzilla component is Core::Gecko Profile.</li>
+ <li>The profiler add-on repository can be found here: <a class="link-https" href="https://github.com/devtools-html/Gecko-Profiler-Addon" rel="freelink">https://github.com/devtools-html/Gecko-Profiler-Addon</a>.</li>
+ <li>The Cleopatra repository can be found here: <a class="link-https" href="https://github.com/devtools-html/perf.html" rel="freelink">https://github.com/devtools-html/perf.html</a></li>
+</ul>
diff --git a/files/ja/mozilla/performance/reporting_a_performance_problem/index.html b/files/ja/mozilla/performance/reporting_a_performance_problem/index.html
new file mode 100644
index 0000000000..3333b1efc5
--- /dev/null
+++ b/files/ja/mozilla/performance/reporting_a_performance_problem/index.html
@@ -0,0 +1,62 @@
+---
+title: パフォーマンスの問題を報告する
+slug: Mozilla/Performance/Reporting_a_Performance_Problem
+translation_of: Mozilla/Performance/Reporting_a_Performance_Problem
+---
+<p>この記事では、<a href="/ja/docs/Mozilla/Performance/Profiling_with_the_Built-in_Profiler">Gecko Profiler拡張機能</a>を使用してパフォーマンスの問題を報告する方法について説明します。 あなたが読むよりそれを好むなら<a href="https://www.youtube.com/watch?v=kGBs0BQsoQg">ビデオチュートリアル</a>もあります。</p>
+
+<h2 id="Gecko_Profilerの拡張機能を設定する">Gecko Profilerの拡張機能を設定する</h2>
+
+<ol>
+ <li>Download and install the <a class="external" href="https://perf-html.io/" title="geckoprofiler.xpi">latest version of the Gecko Profiler extension</a></li>
+ <li>The profiler extension will show up in the top right of the URL bar as a globe icon (if not, <a href="https://support.mozilla.org/en-US/kb/how-customize-toolbars#w_how-do-i-customize-or-rearrange-toolbar-items">drag it there from the Customize window</a>).<br>
+ <br>
+ <img alt="The Gecko Profiler Add-on installed and visible within the Nightly toolbar." src="https://mdn.mozillademos.org/files/14859/Gecko%20Profiler%20Toolbar%20Button.PNG" style="height: 139px; width: 254px;"></li>
+ <li><strong>Remember to disable or uninstall the extension if you're not using it.</strong></li>
+</ol>
+
+<p><em>macOS only, or to check whether a problem has been fixed in a later Firefox version (macOS release builds will currently produce profiles missing some important information):</em></p>
+
+<ol>
+ <li>Download and start the <a class="external" href="http://nightly.mozilla.org/" title="http://nightly.mozilla.org/">nightly build</a> for your platform. You will have to close all running instance(s) of Firefox before launching nightly.</li>
+ <li>Nightly is a development version, which may contain bugs, so <a href="https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles">test with a new profile or back up your data</a>.</li>
+ <li>Verify that it is running correctly by going to 'About Nightly' by looking for 'nightly' as the update channel (3rd line). The icon should be a blue globe.</li>
+</ol>
+
+<h2 id="Using_the_Add-on">Using the Add-on</h2>
+
+<p>Once installed, the profiler becomes active immediately (the icon being blue indicates it is active). The profiler uses a fixed size buffer to store sample data. When it runs out of space in its buffer, it discards old entries so you may want to increase the buffer size if you find you are unable to capture the profile quickly enough after you notice a performance problem. In the Settings part of the UI you can adjust the size of the buffer (presently defaults to 9 MB) and the time interval between data collection (presently defaults to 1 ms). Note that increasing the buffer size uses more memory and can make capturing a profile take longer.</p>
+
+<p><img alt="Profiler UI" src="https://perf-html.io/e9a699daa7c33fcf80c361278055c65d.png" style="height: 376px; width: 546px;"></p>
+
+<p>Using the keyboard shortcuts is often more convenient than using the mouse to interact with the UI:</p>
+
+<ul>
+ <li><code>Ctrl+Shift+1</code> - Start/Stop the profiler</li>
+ <li><code>Ctrl+Shift+2</code> - Take a profile and launch Cleopatra to view it</li>
+</ul>
+
+<h2 id="Capturing_and_sharing_a_profile">Capturing and sharing a profile</h2>
+
+<ol>
+ <li>Reproduce the performance problem. If possible let the problem manifest itself for 5-10 seconds.</li>
+ <li>Press <code>Ctrl+Shift+2</code> or click on the 'Globe' icon in the top right and select 'Capture Profile'. Try to do this within a few seconds from reproducing the performance problem as only the last few seconds are recorded. If the timeline has a large red block it's a good sign.<br>
+ <img alt="Jank markers appearing in the Perf.html profile analysis tool." src="https://mdn.mozillademos.org/files/14861/Perf%20Dot%20HTML%20Red%20Lines.PNG" style="height: 238px; width: 558px;"></li>
+ <li>The data will open in a new tab. Wait until the "Waiting for symbol tables for library libxul.pdb..." notification disappears before sharing the profile.</li>
+ <li>There will be a button in the top right labeled 'Share' which will upload this profile and once completed will write out a link. Copy this URL to your clipboard by right clicking and add the profile URL to the bug for your performance problem and/or send it to the appropriate person. Try to give some context about what you were doing when the performance problem arose such as the URL you were viewing and what actions were you doing (ex. scrolling on gmail.com).<br>
+ <img alt="The button for sharing a profile." src="https://mdn.mozillademos.org/files/14863/Share.PNG" style="height: 142px; width: 329px;"></li>
+</ol>
+
+<h2 id="Viewing_addon_performance_in_GeckoView">Viewing addon performance in GeckoView</h2>
+
+<p>Sometimes an addon or more are slowing down Firefox. These addons might be using the extension API in ways that were not meant to. You can see which of these addons are causing problems by adding the "moz-extension" filter.</p>
+
+<p><img alt="moz-extension filter print screen" src="https://i.imgur.com/EJCrt4N.png" style="height: 287px; width: 1217px;"></p>
+
+<p>Make sure you are selecting the process that is using up the CPU since all of the processes are shown. You might have a content process using up the CPU and not the main one.</p>
+
+<p>Make sure you are doing whatever it is that slows down Firefox while recording the profile. For example you might have one addon that <a href="https://vimeo.com/269371096">slows down page load</a> and <a href="https://vimeo.com/269371201">another one that slows down tab switch</a>.</p>
+
+<p>Your first reflex once you find what addon is slowing down the profile might be to disable it and search for alternatives. Before you do this, please share the performance profile with the addon authors trough a bug report. Gecko profiler allows you to share a link with the profile.</p>
+
+<p> </p>
diff --git a/files/ja/mozilla/performance/scroll-linked_effects/index.html b/files/ja/mozilla/performance/scroll-linked_effects/index.html
new file mode 100644
index 0000000000..a26aa29a9d
--- /dev/null
+++ b/files/ja/mozilla/performance/scroll-linked_effects/index.html
@@ -0,0 +1,110 @@
+---
+title: スクロール連動エフェクト
+slug: Mozilla/Performance/Scroll-linked_effects
+tags:
+ - CSS
+ - JavaScript
+ - Performance
+ - Scroll
+ - Scroll-Linked Effects
+ - Web Animations
+ - compositor
+translation_of: Mozilla/Performance/Scroll-linked_effects
+---
+<p class="summary">スクロール連動エフェクトはスクロール位置に基づいて Web ページを変化させるエフェクト実装です。(例えば、スクロールによる視差エフェクトを生み出すために位置プロパティを更新させるなど) この記事はスクロール連動エフェクトについてパフォーマンス・関連するツール・移行技術の可能性について記載しています。</p>
+
+<h2 id="スクロールエフェクトとは">スクロールエフェクトとは</h2>
+
+<p>時々スクロールエフェクトは {{event("scroll")}} イベントを監視し、いくつかの手段(通常は CSS の {{cssxref("position")}} や {{cssxref("transform")}} プロパティ)でページ内の要素を更新して実装されます。このようなエフェクトは <a href="https://github.com/RByers/css-houdini-drafts/blob/master/css-scroll-api/UseCases.md">CSS Scroll API: Use Cases</a> でサンプルを見ることができます。</p>
+
+<p>これらのエフェクトは、スクロールがブラウザのメインスレッドで同期的に完了するブラウザの場合はうまく動作します。しかし、現在多くのブラウザはユーザに一貫した 60 FPS の体験を提供するために何らかの非同期スクロールを提供しています。非同期スクロールモデルでは、表示されているスクロールポジションはコンポジタースレッドで更新されて {{event("scroll")}} イベントが DOM 内で更新されメインスレッドで発火される以前にユーザーに表示されます。これは、実装されたエフェクトがユーザーが更新されたスクロール位置を見るよりも少し遅れることになります。これはエフェクトが遅延したり、カクカクしたり、ユーザーをイライラさせます。つまりできることなら避けたい事象です。</p>
+
+<p>以下は非同期スクロールでうまく動作しないエフェクト例と、適切に動作するサンプルです。</p>
+
+<h3 id="Example_1_Sticky_位置">Example 1: Sticky 位置</h3>
+
+<p>これはスクロールダウンしても "toolbar" div がスクリーンの上部に固定される sticky 位置エフェクトの実装です。</p>
+
+<pre class="brush: html">&lt;body style="height: 5000px" onscroll="document.getElementById('toolbar').style.top = Math.max(100, window.scrollY) + 'px'"&gt;
+ &lt;div id="toolbar" style="position: absolute; top: 100px; width: 100px; height: 20px; background-color: green"&gt;&lt;/div&gt;
+&lt;/body&gt;</pre>
+
+<p>この sticky 位置の実装は "toolbar" div の再配置を監視するスクロールイベントリスナーに基づいています。スクロールイベントリスナーがブラウザーのメインスレッドで動作する JavaScript で動く限り、ユーザーが見えているスクロールとは非同期処理になります。したがって非同期スクロールにおいて、イベントハンドラーはユーザーに見えているスクロールの動きとは相対的に遅延して、div は意図したとおり固定された表示になりません。代わりに、ユーザーのスクロールによって div は移動して、スクロールインベントハンドラーが実行されたときにスクリーンジョブに "すばやく戻ります"。この一連の動きと素早い動作はかくかくした視覚エフェクトになります。スクロールイベントリスナーを利用しない 1 つの実装は、これを目的とした CSS プロパティーを利用する方法です。</p>
+
+<pre class="brush: html">&lt;body style="height: 5000px"&gt;
+ &lt;div id="toolbar" style="position: sticky; top: 0px; margin-top: 100px; width: 100px; height: 20px; background-color: green"&gt;&lt;/div&gt;
+&lt;/body&gt;</pre>
+
+<p>このバージョンは、ユーザーのスクロールによる "toolbar" div の位置更新をブラウザ自身が行うため、非同期スクロールでもうまく動作します。</p>
+
+<h3 id="Example_2_スクロールスナップ">Example 2: スクロールスナップ</h3>
+
+<p class="summary">Thisこの機能は Web 標準から削除されています。いくつかのブラウザではまだサポートされていますが機能削除の最中です。可能ならば利用を避け既存コードを更新してください。<a href="https://developer.mozilla.org/ja-JP/docs/Web/CSS/scroll-snap-coordinate#Browser_compatibility">https://developer.mozilla.org/ja-JP/docs/Web/CSS/scroll-snap-coordinate#Browser_compatibility</a></p>
+
+<p>以下はスクロールスナップの実装で、目的の位置近くでスクロールをユーザーが止めたときに指定した目的のスクロールポジション目的位置に移動するものです。</p>
+
+<pre class="brush: html">&lt;body style="height: 5000px"&gt;
+ &lt;script&gt;
+    function snap(destination) {
+        if (Math.abs(destination - window.scrollY) &lt; 3) {
+            scrollTo(window.scrollX, destination);
+        } else if (Math.abs(destination - window.scrollY) &lt; 200) {
+            scrollTo(window.scrollX, window.scrollY + ((destination - window.scrollY) / 2));
+            setTimeout(snap, 20, destination);
+        }
+    }
+    var timeoutId = null;
+    addEventListener("scroll", function() {
+        if (timeoutId) clearTimeout(timeoutId);
+        timeoutId = setTimeout(snap, 200, parseInt(document.getElementById('snaptarget').style.top));
+    }, true);
+ &lt;/script&gt;
+ &lt;div id="snaptarget" class="snaptarget" style="position: relative; top: 200px; width: 100%; height: 200px; background-color: green"&gt;&lt;/div&gt;
+&lt;/body&gt;</pre>
+
+<p>このサンプルでは、スクロールしたときのポジションが "snaptarget" div の上部 200 ピクセルいないだった場合を検知するスクロールイベントリスナーが存在します。もしその条件だった場合、div の上部へスクロール位置を移動するアニメーションを動かします。アニメーションはブラウザのメインスレッド JavaScript で動作するため、他のタブやウィンドウで動作している JavaScript によって割り込まれるかもしれません。従って、期待通りにスムーズに動かなかったりカクカク動作するようになります。代わりに CSS sap-point プロパティを利用することで、アニメーションを非同期で動作させることをブラウザに許可し、ユーザーにスムーズな視覚エフェクトを提供します。</p>
+
+<pre class="brush: html">&lt;body style="height: 5000px"&gt;
+ &lt;style&gt;
+  body, /* blink currently has bug that requires declaration on `body` */
+    html {
+      scroll-snap-type: y proximity;
+    }
+    .snaptarget {
+      scroll-snap-align: start;
+ position: relative;
+  top: 200px;
+  height: 200px;
+  background-color: green;
+    }
+ &lt;/style&gt;
+ &lt;div class="snaptarget"&gt;&lt;/div&gt;
+&lt;/body&gt;</pre>
+
+<p>このバージョンはブラウザのメインスレッドで重たい JavaScript が動作していたとしてもスムーズにブラウザで動作することが可能です。</p>
+
+<h3 id="他のエフェクト">他のエフェクト</h3>
+
+<p>多くの場合、スクロール連動エフェクトは CSS を利用したりコンポジットスレッドで動作させることで再実装可能です。しかし、いくつかのケースにおいて現在ブラウザが提供している API では許可されない物が有ります。しかし全ての場合において Firefox はスクロール連動エフェクトをページ上で検知すると開発コンソールに警告を表示します。(バージョン 46 以降) JavaScript でスクロールイベントを使わない JavaScript を使ったスクロールエフェクトの場合は警告は表示されません。他の CSS を利用した実装でカクカクした動作を防ぐサンプルを知りたい場合は、<a href="https://staktrace.com/spout/entry.php?id=834">Firefox における非同期スクロール</a> というブログを見てください。</p>
+
+<h2 id="機能改善">機能改善</h2>
+
+<p>更に我々はコンポジターでのさらなるエフェクトをサポートする予定です。これを実現するために、あなたが実装しようとしているスクロール連動エフェクトの種類に関する情報提供を必要としており、それは実現するための手助けになります。現在そのようなエフェクトを許可するためのいくつかの提案があり、これらにはメリット/デメリットがあります。この提案は現在以下の仕様で議論されています。</p>
+
+<ul>
+ <li><a href="https://w3c.github.io/web-animations/">Web Animations</a>: JavaScript で Web アニメーションを正確にコントロールする新しい API です。その<a href="https://wiki.mozilla.org/Platform/Layout/Extended_Timelines">追加提案</a>はスクロール位置と時間をマッピングし、アニメーションのタイムラインとして扱います。</li>
+ <li><a href="https://docs.google.com/document/d/18GGuTRGnafai17PDWjCHHAvFRsCfYUDYsi720sVPkws/edit?pli=1#heading=h.iy9r1phg1ux4">CompositorWorker</a>: 小さい単位で JavaScript をコンポジタースレッドで動かすことを許容し、フレームレートを落とすことがなくなります。</li>
+ <li><a href="https://docs.google.com/document/d/1VnvAqeWFG9JFZfgG5evBqrLGDZYRE5w6G5jEDORekPY/edit?pli=1">Scroll Customization</a>: コンテンツ用の新しい API を利用することでスクロール差分の適用と利用を指定します。この記事を書いている時点で Mozilla はこの提案をサポートする予定はありませんが、この提案は未完成です。</li>
+</ul>
+
+<h3 id="Call_to_action実施要請">Call to action(実施要請)</h3>
+
+<p>以下の事を考えや意見がある場合、</p>
+
+<ul>
+ <li>スクロール連動エフェクトのコンテキストについて上記いずれかの提案</li>
+ <li>スクロール連動エフェクトを実装しようとしている</li>
+ <li>関連する問題やアイデアがある</li>
+</ul>
+
+<p>我々に情報提供してください。<a href="https://lists.w3.org/Archives/Public/public-houdini/">public-houdini</a> メーリングリスト上での議論に参加可能です。</p>
diff --git a/files/ja/mozilla/persona/browser_compatibility/index.html b/files/ja/mozilla/persona/browser_compatibility/index.html
new file mode 100644
index 0000000000..e59ad2f5a1
--- /dev/null
+++ b/files/ja/mozilla/persona/browser_compatibility/index.html
@@ -0,0 +1,90 @@
+---
+title: ブラウザの互換性
+slug: Mozilla/Persona/Browser_compatibility
+tags:
+ - Persona
+ - 要更新
+translation_of: Archive/Mozilla/Persona/Browser_compatibility
+---
+<h2 id="Supported_Browsers" name="Supported_Browsers">サポートされたブラウザ</h2>
+<p>Persona は、以下のブラウザで開発、テスト、サポートされています。Persona のクロスプラットフォームの JavaScript ライブラリのおかげで、ユーザは Persona を使うためにアドオンをインストールする必要はありません。</p>
+<table>
+ <tbody>
+ <tr>
+ <th colspan="3" scope="row" style="text-align: center; background-color: #d3d7cf;"><strong>デスクトップブラウザ</strong></th>
+ </tr>
+ <tr>
+ <th scope="row"><strong>Internet Explorer</strong></th>
+ <td colspan="2" rowspan="1" style="background-color: #8ae234;">8.0<sup>*</sup>, 9.0<sup>†</sup> 10.0<sup>**</sup></td>
+ </tr>
+ <tr>
+ <th scope="row"><strong>Firefox</strong></th>
+ <td colspan="2" style="background-color: #8ae234;">現在の安定版、Beta、Aurora、Nightly、ESR<br>
+ 以前の安定リリース版</td>
+ </tr>
+ <tr>
+ <th scope="row"><strong>Chrome</strong></th>
+ <td colspan="2" style="background-color: #8ae234;">最新の安定リリース版</td>
+ </tr>
+ <tr>
+ <th scope="row"><strong>Safari</strong></th>
+ <td colspan="2" style="background-color: #8ae234;">最新の安定リリース版</td>
+ </tr>
+ <tr>
+ <th scope="row"><strong>Opera</strong></th>
+ <td colspan="2" style="background-color: #8ae234;">最新の安定リリース版<sup>‡</sup></td>
+ </tr>
+ <tr>
+ <th colspan="3" scope="row" style="text-align: center; background-color: #d3d7cf;"><strong>iOS ブラウザ</strong></th>
+ </tr>
+ <tr>
+ <th scope="row"><strong>Mobile Safari</strong></th>
+ <td colspan="2" rowspan="1" style="background-color: #8ae234;">iOS 5.x — 6.x</td>
+ </tr>
+ <tr>
+ <th colspan="3" scope="row" style="text-align: center; background-color: #d3d7cf;"><strong>Android ブラウザ</strong></th>
+ </tr>
+ <tr>
+ <th scope="row"><strong>デフォルトブラウザ</strong></th>
+ <td colspan="2" rowspan="1" style="background-color: #8ae234;">2.x — 4.x</td>
+ </tr>
+ <tr>
+ <th scope="row"><strong>Firefox</strong></th>
+ <td colspan="2" style="background-color: #8ae234;">現在の安定版、Beta、Aurora、Nightly、ESR<br>
+ 以前の安定リリース版</td>
+ </tr>
+ <tr>
+ <th scope="row"><strong>Chrome</strong></th>
+ <td colspan="2" style="background-color: #8ae234;">最新の安定リリース版</td>
+ </tr>
+ </tbody>
+</table>
+<p><sup>*</sup>: Windows XP 向け。 <sup>†</sup>: Windows Vista および Windows 7 向け。 <sup>‡</sup>: 時間の許す限り。</p>
+<h2 id="Internet_Explorer_.22Compatibility_Mode.22" name="Internet_Explorer_.22Compatibility_Mode.22">Internet Explorer "Compatibility Mode"</h2>
+<p>From version 8.0 onwards Internet Explorer supports a feature called Compatibility Mode, in which the browser may be instructed to emulate a pre-8.0 version when rendering a page. This feature may be controlled in three different ways</p>
+<ol>
+ <li>as a local setting in the browser</li>
+ <li>based on the presence and value of the <a href="https://developer.mozilla.org/docs/Quirks_Mode_and_Standards_Mode" title="https://developer.mozilla.org/docs/Quirks_Mode_and_Standards_Mode">DOCTYPE</a> declaration in the page</li>
+ <li>as an instruction sent from the site, using the <a href="http://msdn.microsoft.com/library/cc288325%28v=vs.85%29.aspx" title="http://msdn.microsoft.com/library/cc288325%28v=vs.85%29.aspx">"X-UA-Compatible"</a> header either as an HTTP header or as a <a href="https://developer.mozilla.org/docs/HTML/Element/meta" title="https://developer.mozilla.org/docs/HTML/Element/meta"><code>&lt;meta&gt;</code></a> tag in the page. This method overrides the other two.</li>
+</ol>
+<p>Because versions of Internet Explorer earlier than 8.0 are not supported by Persona, any version of Internet Explorer which is configured to emulate a pre-8.0 version will also not function with Persona. This is typically for one of the following reasons:</p>
+<ul>
+ <li>your site is using "X-UA-Compatible" to explicitly instruct the browser to emulate a pre-8.0 version</li>
+ <li>your site's pages omit the DOCTYPE, do not have the DOCTYPE as the first line of the page, or set the browser to quirks mode, and your site is not setting "X-UA-Compatible" to IE version 8.0 or higher</li>
+ <li>the browser is locally configured to use a pre-8.0 Compatibility Mode, and your site is not overriding this by setting "X-UA-Compatible" to IE version 8.0 or higher</li>
+</ul>
+<p>For more information, see <a href="https://blogs.msdn.com/b/askie/archive/2009/03/23/understanding-compatibility-modes-in-internet-explorer-8.aspx?Redirected=true" title="https://blogs.msdn.com/b/askie/archive/2009/03/23/understanding-compatibility-modes-in-internet-explorer-8.aspx?Redirected=true">"Understanding Compatibility Modes in Internet Explorer 8"</a> and <a href="http://hsivonen.iki.fi/doctype/index.html#ie8" title="http://hsivonen.iki.fi/doctype/index.html#ie8">"IE8 and IE9 Complications"</a>.</p>
+<h2 id="Unsupported_Browsers" name="Unsupported_Browsers">サポートされていないブラウザ</h2>
+<ul>
+ <li>Internet Explorer バージョン 6.0 および 7.0 はサポートされていません。ユーザはブラウザのアップグレードを求められます。</li>
+ <li>Google Chrome Frame はサポートされておらず機能しません。後でサポートが追加される予定です (<a href="https://github.com/mozilla/browserid/issues/796" title="https://github.com/mozilla/browserid/issues/796">Issue #796</a>)。</li>
+ <li>iOS 上のサードパーティ製ブラウザはサポートされておらず機能しません。後でサポートが追加される予定です (<a href="https://github.com/mozilla/browserid/issues/1870" title="https://github.com/mozilla/browserid/issues/1870">Issue #1870</a>, <a href="https://github.com/mozilla/browserid/issues/2034" title="https://github.com/mozilla/browserid/issues/2034">Issue #2034</a>)。</li>
+</ul>
+<h2 id="Other_Browsers" name="Other_Browsers">他のブラウザ</h2>
+<p>サポートされていないブラウザでも、{{domxref("window.postMessage()")}} と {{domxref("Storage", "localStorage")}} が実装されていれば動作します。これらの API は 2010 年 3 月以降のすべての主要なブラウザで利用可能です。</p>
+<h2 id="Known_Issues" name="Known_Issues">既知の問題</h2>
+<ul>
+ <li>すべての機能を動作させるには、ブラウザでサードパーティの Cookie を許可する必要があります (<a href="https://github.com/mozilla/browserid/issues/1352" title="https://github.com/mozilla/browserid/issues/1352">Issue #1352</a>)。</li>
+ <li>デフォルトのブラウザを選択していない Android 2.x ユーザはログインできません (<a href="https://github.com/mozilla/browserid/issues/1854" title="https://github.com/mozilla/browserid/issues/1854">Issue #1854</a>)。</li>
+ <li>Internet Explorer 9 で IE8 のエミュレートを強制した場合、サイトへのログインに失敗する可能性があります。</li>
+</ul>
diff --git a/files/ja/mozilla/persona/faq/index.html b/files/ja/mozilla/persona/faq/index.html
new file mode 100644
index 0000000000..ee4de1f8e7
--- /dev/null
+++ b/files/ja/mozilla/persona/faq/index.html
@@ -0,0 +1,56 @@
+---
+title: FAQ
+slug: Mozilla/Persona/FAQ
+translation_of: Archive/Mozilla/Persona/FAQ
+---
+<h2 id="BrowserID_との違いは何ですか?">BrowserID との違いは何ですか?</h2>
+<p>Persona は Mozilla による新しい分散ログインシステムの完全な実装です。</p>
+<p>BrowserID は Persona がどのように動作するかを規定するオープンなプロトコルです。</p>
+<p>Persona は BrowserID の実装によって Web サイトにユーザーがログインできるようにするものです。それに類似する関係として、Firefox は HTTP の実装によって、ユーザーが Web を閲覧できるようにするものです。</p>
+<h2 id="OpenID_との違いは何ですか?">OpenID<span style="font-size: 2.14285714285714rem;"> との違いは何ですか?</span></h2>
+<p>Persona と OpenID の目的と構造は非常に似ています。どちらのシステムも、ユーザーが所持しなければならないパスワードを減らすことができます。また、どちらも非集中型のシステムとして設計されています。<span style="line-height: 1.5;">This means that any domain can present itself as an Identity Provider without relying on a central authority.</span></p>
+<p>Despite these similarities, Persona is easier to use and easier to add to websites. Persona also does a better job of protecting user privacy. Specifically:</p>
+<dl>
+ <dt>
+ Persona はユーザーに易しいシステムです</dt>
+ <dd>
+ Persona identifies users based on email addresses, which users already know, understand, and naturally associate with online identities. With OpenID, users are forced to learn a new username: an unintuitive URL.</dd>
+ <dd>
+ Logging in with Persona is also easier: it just takes 2 clicks after a one-time setup process.</dd>
+ <dt>
+ Persona <span style="line-height: 1.5;">は開発者に易しいシステムです</span></dt>
+ <dd>
+ Persona has a {{ domxref("navigator.id", "simple API") }} that only takes an afternoon to get started with.</dd>
+ <dd>
+ Persona identities <em>are</em> email addresses, so websites don't have to ask users for additional contact information during signup.</dd>
+ <dd>
+ Because users know and understand their email address, developers don't have to build complex pages with login buttons for all the popular OpenID providers.</dd>
+ <dt>
+ Persona はより適切にユーザーのプライバシーを保護します</dt>
+ <dd>
+ By design, OpenID allows Identity Providers to track their users around the web: whenever a user logs into a website, their browser gets redirected from that site to the user's Identity Provider, and then back to the site that the user requested. These redirects fully expose to the Identity Provider where the user is going.</dd>
+ <dd>
+ In contrast, the BrowserID protocol never leaks tracking information back to the Identity Provider. Rather, it behaves similarly to an ID card: users obtain signed credentials from their Identity Providers which can be presented to websites as a proof of identity. Websites can check the validity of these credentials without ever revealing a user's identity to their identity provider.</dd>
+</dl>
+<h2 id="なぜ_Persona_には_JavaScript_が必要なのですか?">なぜ <span style="font-size: 2.14285714285714rem;">Persona</span><span style="font-size: 2.14285714285714rem;"> </span><span style="font-size: 2.14285714285714rem;">には</span><span style="font-size: 2.14285714285714rem;"> JavaScript が必要なのですか?</span></h2>
+<p>Persona requires JavaScript, but some users choose to selectively block JavaScript by using browser add-ons like NoScript. Many of these users are concerned about the privacy implications of enabling JavaScript, since it is often used to track visitors across websites.</p>
+<p>However, in the case of Persona, JavaScript is actually used to enhance user privacy, as it allows the browser to perform cryptographic operations completely on the client side. By doing these operations on the client, Persona avoids the need to store secret keys anywhere other than in the user's own browser.</p>
+<h2 id="Persona_は登録されたメールアドレスが現在使用されているかどうかを確認しますか?">Persona は<span style="font-size: 2.14285714285714rem;">登録された</span><span style="font-size: 2.14285714285714rem;">メールアドレスが</span><span style="font-size: 2.14285714285714rem;">現在使用されているかどうかを確認しますか?</span></h2>
+<p>No, Persona only guarantees the user's association with an address. As with any email address in any login system, it's possible that the address no longer works or is not regularly checked by the user. For most users, the email address will be functional.</p>
+<h2 id="どのようにしてメールアドレスから所属団体を確かめるのですか?">どのようにしてメールアドレスから所属団体を確かめるのですか?</h2>
+<p>Persona asks the address's domain, which is free to verify its users in any way it chooses. If a domain is not a native Identity Provider, and thus can't verify its own users, the browser asks for verification from Persona's fallback Identity Provider at <a href="https://login.persona.org" title="https://login.persona.org">https://login.persona.org</a>. Before certifying a user's identity, the fallback Identity Provider does test the address by sending an email to it and asking the user to click a link contained within.</p>
+<h2 id="どのような方法で、ユーザーが管理できなくなったメールアドレスのアカウントを復旧させることができますか?">どのような方法で、ユーザーが管理できなくなったメールアドレスのアカウントを復旧させることができますか?</h2>
+<p>The best way to do this is to allow your users to add a secondary email address to their account. See <a href="/en-US/docs/Persona/The_implementor_s_guide/Adding_extra_email_addresses_with_Persona" title="/en-US/docs/Persona/The_implementor_s_guide/Adding_extra_email_addresses_with_Persona">"Adding extra email addresses with Persona"</a>.</p>
+<h2 id="include.js_を独自にホストすることはできますか?_あるいは、httpslogin.persona.org_にあるものを使用しなければなりませんか?">include.js を独自にホストすることはできますか? あるいは、<a class="link-https" href="https://login.persona.org" rel="freelink">https://login.persona.org</a> にあるものを使用しなければなりませんか?</h2>
+<p>The code in <code>include.js</code> is still subject to change. It's not yet recommended that you host it yourself.</p>
+<h2 id="アサーションをローカルで確認することはできますか?_あるいは、リモートの確認サービスを使う必要がありますか?">アサーションをローカルで確認することはできますか? あるいは、リモートの確認サービスを使う必要がありますか?</h2>
+<p>To ensure user privacy, it's important that identity assertions are verified locally rather than with the remote verification service. However, the format of assertions is still subject to change, so local verification is not yet recommended. Even with remote verification, Persona protects the user from tracking by their identity provider.</p>
+<p>Once the protocol has stabilized, libraries will be available to simplify local verification. Follow the <a class="external" href="http://identity.mozilla.com/" title="http://identity.mozilla.com/">Identity Blog</a> to find out when local verification is recommended.</p>
+<h2 id="ほかのサインイン手段を利用しているユーザーが移行するために何か良い方法はありますか?">ほかのサインイン手段を利用しているユーザーが移行するために何か良い方法はありますか?</h2>
+<p>Despite Persona's benefits, it's never easy to move all of your users to a new login system. Conveniently, Persona's focus on email addresses makes it easy to use alongside existing login systems, so you don't have to switch all at once.</p>
+<p>One particularly low-friction approach is to suggest Persona to users who forget their password. Instead of resetting passwords, users can simply log in with Persona.</p>
+<h2 id="新規アカウントを作成する際にも「サインイン」として扱われることを、どのようにして知らせるべきですか?">新規アカウントを作成する際にも<span style="font-size: 2.14285714285714rem;">「サインイン」として扱われることを</span><span style="font-size: 2.14285714285714rem;">、どのようにして知らせるべきですか?</span></h2>
+<h2 id="新しい_API_や非推奨の_API_など、BrowserID_との主な違いはどのようにして調べられますか?"><span style="font-size: 2.14285714285714rem;">新しい API や非推奨の API など、</span><span style="font-size: 2.14285714285714rem;">BrowserID との主な違いはどのようにして調べられますか?</span></h2>
+<p>All major, backwards incompatible changes and deprecations are announced on the low-volume <a href="https://mail.mozilla.org/listinfo/persona-notices" title="https://mail.mozilla.org/listinfo/persona-notices">persona-notices</a> mailing list. Please subscribe to it.</p>
+<p>To find out about new features and enhancements, follow the the <a href="http://identity.mozilla.com/" title="http://identity.mozilla.com/">Identity team blog</a>.</p>
+<p>For development discussion, subscribe to the <a class="link-https" href="https://lists.mozilla.org/listinfo/dev-identity" title="https://lists.mozilla.org/listinfo/dev-identity">dev-identity</a><span class="link-https"> mailing list</span>.</p>
diff --git a/files/ja/mozilla/persona/index.html b/files/ja/mozilla/persona/index.html
new file mode 100644
index 0000000000..64ce7689e6
--- /dev/null
+++ b/files/ja/mozilla/persona/index.html
@@ -0,0 +1,155 @@
+---
+title: Persona
+slug: Mozilla/Persona
+tags:
+ - Persona
+translation_of: Archive/Mozilla/Persona
+---
+<div class="callout-box">
+ <p><strong>Stay in touch or get help!</strong></p>
+ <p>Follow <a class="external" href="http://identity.mozilla.com/" title="http://identity.mozilla.com/">our blog</a>, join <a class="link-https" href="https://lists.mozilla.org/listinfo/dev-identity" title="https://lists.mozilla.org/listinfo/dev-identity">our mailing list</a>, or find us in <a class="link-irc" href="irc://irc.mozilla.org/identity" title="irc://irc.mozilla.org/identity">#identity</a> on <a class="link-https" href="https://wiki.mozilla.org/IRC" title="https://wiki.mozilla.org/IRC"> IRC</a>.</p>
+</div>
+<p><a class="link-https" href="https://www.mozilla.org/persona/" title="https://www.mozilla.org/persona/">Mozilla Persona</a> は、オープンな BrowserID 規格に基づいた、Web サービス向けの完全に分散化された、安全な認証システムです。Persona がどのようなサイトでも、また誰が使おうとも確実に動作するように、Mozilla では現在、<a href="/ja/docs/Persona/Bootstrapping_Persona" title="Persona/Bootstrapping_Persona">小規模なサイトを運営しています。</a></p>
+<p>なぜ、あなたのサイトで Persona を使うべきなのでしょう?</p>
+<ol>
+ <li><strong>Persona を使うことで、サイトごとにパスワードを管理する必要がなくなります。</strong>ユーザ、Web サイト運営者ともに、パスワードの作成、管理、セキュリティ強度といったことに頭を悩ませる必要がなくなります。</li>
+ <li><strong>Persona は簡単に使うことができます。</strong>Persona を使うユーザなら、例えば <a href="http://voo.st" title="http://voo.st">Voost</a> や <a href="http://crossword.thetimes.co.uk/" title="http://crossword.thetimes.co.uk/">The Times Crossword</a> といったサイトに新たに登録する際にも、ほんの2クリックの作業だけでログインすることができます。もう繁雑な登録作業は不要です。</li>
+ <li><strong>Persona は実装するのも簡単です。</strong>Web サイトに Persona を導入する作業は、わずか半日で完了します。</li>
+ <li>特筆すべき長所として、<strong>アカウントの閉め出し</strong>の心配がありません。Persona を使うことで、Web サイトの運営者が全登録ユーザの有効なメールアドレスを取得することができます。また、ユーザはどんなメールアドレスでも登録することができます。</li>
+ <li><strong>Persona は BrowserID に準拠しています。</strong>主要なブラウザベンダが BrowserID を実装してしまえば、<b>ログインにあたって Mozilla に依存し続ける必要はなくなります。</b></li>
+</ol>
+<p>Read on to get started!</p>
+<div class="note">
+ <strong>注意:</strong> Persona は現在活発に開発が進められています。新しい機能については、<a class="external" href="http://identity.mozilla.com/" title="http://identity.mozilla.com/">私たちのブログ</a> をご覧ください。また、<a class="link-https" href="https://lists.mozilla.org/listinfo/dev-identity" title="https://lists.mozilla.org/listinfo/dev-identity">メーリングリスト</a> にてフィードバックをお寄せください!</div>
+<h2 id="Using_Persona_on_your_site" name="Using_Persona_on_your_site">あなたのサイトで Persona を使うために</h2>
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h3 id="Getting_started" name="Getting_started">はじめに</h3>
+ <dl>
+ <dt>
+ <a href="/ja/docs/Persona/Why_Persona" title="Persona/Why_Persona">なぜ Persona?</a></dt>
+ <dd>
+ まずはあなたのサイトを Persona に対応させる利点について説明します。また、他の認証システムとの比較も紹介します。</dd>
+ <dt>
+ <a href="/ja/docs/Persona/Quick_Setup" title="Persona/Quick setup">クイックセットアップ</a></dt>
+ <dd>
+ Web サイトで Persona をサポートする手順について、簡単に説明します。</dd>
+ </dl>
+ </td>
+ <td>
+ <h3 id="Persona_API_reference" name="Persona_API_reference">Persona API リファレンス</h3>
+ <dl>
+ <dt>
+ <a href="/ja/docs/DOM/navigator.id" title="DOM/navigator.id">navigator.id API リファレンス</a></dt>
+ <dd>
+ <code>navigator.id</code> オブジェクトのリファレンスです。 Persona についての作業はここが起点となります。</dd>
+ <dt>
+ <a href="/ja/docs/Persona/Remote_Verification_API" title="Persona/Remote_Verification_API">Verification API リファレンス</a></dt>
+ <dd>
+ <code>https://verifier.login.persona.org/verify</code> でホストされたリモート検証 API のリファレンスです。</dd>
+ </dl>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <h3 id="Guides" name="Guides">ガイド</h3>
+ <dl>
+ <dt>
+ <a href="/ja/docs/Persona/Security_Considerations" title="Persona/Security considerations">セキュリティについて考慮すべき事柄</a></dt>
+ <dd>
+ Practices and techniques to make sure your Persona deployment is secure.</dd>
+ <dt>
+ <a href="/ja/docs/Persona/Browser_compatibility" title="Persona/Browser_compatibility">ブラウザの互換性</a></dt>
+ <dd>
+ Persona をサポートしているブラウザのリスト。</dd>
+ <dt>
+ <a href="/ja/docs/Persona/Internationalization" title="Persona/Internationalization">国際化</a></dt>
+ <dd>
+ Persona の異なる言語の扱いについて。</dd>
+ </dl>
+ </td>
+ <td>
+ <h3 id="Resources" name="Resources">リソース</h3>
+ <dl>
+ <dt>
+ <a class="link-https" href="https://github.com/mozilla/browserid/wiki/Persona-Libraries" title="https://github.com/mozilla/browserid/wiki/BrowserID-Libraries">ライブラリとプラグイン</a></dt>
+ <dd>
+ Find a drop-in library for your favorite programming language, web framework, blog, or content management system.</dd>
+ <dt>
+ <a class="link-https" href="https://github.com/mozilla/browserid-cookbook" title="https://github.com/mozilla/browserid-cookbook">Persona cookbook</a></dt>
+ <dd>
+ Example source code for Persona sites. Includes snippets in PHP, Node.JS, and more.</dd>
+ <dt>
+ <a href="/ja/docs/Persona/branding" title="persona/branding">ブランドリソース</a></dt>
+ <dd>
+ Sign in buttons and other graphics to help present Persona to your users.</dd>
+ </dl>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h2 id="Information_for_Identity_Providers" name="Information_for_Identity_Providers">ID プロバイダについての情報</h2>
+ <p>If you're an email provider or another identity-providing service, check out the links below to learn about becoming a Persona Identity Provider.</p>
+ <dl>
+ <dt>
+ <a href="/ja/docs/Persona/Identity_Provider_Overview" title="IdP Overview">IdP の概要</a></dt>
+ <dd>
+ A high level view of Persona Identity Providers.</dd>
+ <dt>
+ <a href="/ja/docs/Persona/Implementing_a_Persona_IdP" title="Guide to Implementing a Persona IdP">IdP の実装方法</a></dt>
+ <dd>
+ A detailed guide to the technical details of becoming an IdP.</dd>
+ <dt>
+ <a href="/ja/docs/Persona/IdP_Development_tips" title="Developer tips">開発のヒント</a></dt>
+ <dd>
+ A set of tips and tricks useful while developing a new Identity Provider.</dd>
+ <dt>
+ <a href="/ja/docs/Persona/.well-known-browserid" title="Persona/.well-known-browserid">.well-known/browserid</a></dt>
+ <dd>
+ An overview of the structure and purpose of the <code>.well-known/browserid</code> file, which IdPs use to advertise their support for the protocol.</dd>
+ </dl>
+ </td>
+ <td>
+ <h2 id="The_Persona_Project" name="The_Persona_Project">Persona プロジェクト</h2>
+ <dl>
+ <dt>
+ <a href="/ja/docs/Persona/Glossary" title="/Persona/Glossary">用語集</a></dt>
+ <dd>
+ BrowserID and Persona terminology defined.</dd>
+ <dt>
+ <a href="/ja/docs/Persona/FAQ" title="/Persona/FAQ">よくある質問</a></dt>
+ <dd>
+ よくある質問への回答</dd>
+ <dt>
+ <a href="/ja/docs/Persona/Protocol_Overview" title="/Persona/Protocol overview">プロトコルの概要</a></dt>
+ <dd>
+ A mid-level technical overview of the underlying BrowserID protocol.</dd>
+ <dt>
+ <a href="/ja/docs/Persona/Crypto" title="Persona/Crypto">Crypto</a></dt>
+ <dd>
+ A look at the cryptographic concepts behind Persona and BrowserID.</dd>
+ <dt>
+ <a class="link-https" href="https://github.com/mozilla/id-specs/blob/master/browserid/index.md" title="https://github.com/mozilla/id-specs/blob/master/browserid/index.md">仕様書</a></dt>
+ <dd>
+ ここには深い技術の詳細が書かれています。</dd>
+ <dt>
+ <a href="/ja/docs/Persona/Bootstrapping_Persona" title="/Persona/Bootstrapping_Persona">Persona の Web サイト</a></dt>
+ <dd>
+ To get Persona going, we're hosting three services at <a class="link-https" href="https://login.persona.org" rel="freelink">https://login.persona.org</a>: a fallback Identity Provider, a portable implementation of the {{domxref("navigator.id")}} APIs, and an identity assertion verification service.</dd>
+ <dt>
+ <a href="https://github.com/mozilla/browserid">Persona のソースコード</a></dt>
+ <dd>
+ The code behind the Persona website lives in a repository on GitHub. Patches welcome!</dd>
+ </dl>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<p> </p>
+<p><img id="firefoxsddsinfoimg" style="display: none; position: absolute; top: 0px; left: 0px; width: 32px; height: 32px;"><img id="firefoxsddsarrowimg" style="display: none; position: absolute; top: 1885px; left: 534px; width: 32px; height: 32px;"></p>
diff --git a/files/ja/mozilla/persona/internationalization/index.html b/files/ja/mozilla/persona/internationalization/index.html
new file mode 100644
index 0000000000..81f3e2c95d
--- /dev/null
+++ b/files/ja/mozilla/persona/internationalization/index.html
@@ -0,0 +1,52 @@
+---
+title: I18N
+slug: Mozilla/Persona/Internationalization
+tags:
+ - BrowserID
+ - Persona
+ - l10n
+translation_of: Archive/Mozilla/Persona/Internationalization
+---
+<h2 id="Persona_のローカライズ">Persona のローカライズ</h2>
+<p>将来、Persona によるサインインのユーザインターフェースがブラウザに統合され、Persona のローカライズはブラウザアプリケーションのローカライズと一緒に行われるようになるでしょう。Persona が統合されていないブラウザにおける Persona のユーザインターフェースは <a href="https://login.persona.org" title="https://login.persona.org">login.persona.org</a> からのダイアログで構成されます。これらのダイアログは、コミュニティのボランティアチームにより翻訳されており、現在 45 か国の言語で <a href="https://github.com/mozilla/browserid/blob/dev/config/l10n-prod.json" title="https://github.com/mozilla/browserid/blob/dev/config/l10n-prod.json">提供されています</a>。</p>
+<h2 id="Persona_の言語選択について">Persona の言語選択について</h2>
+<p>Persona サービスは、ブラウザ側の要求により送信された <code>Accept-Language</code> ヘッダを利用して言語を選択します。<code>Accept-Language</code> ヘッダを言語に割り当てるアルゴリズムは、<code>mozilla.org</code> で使用されているものと同じです:</p>
+<ol>
+ <li><code>Accept-Language</code> ヘッダの各言語タグに対して:
+ <ul>
+ <li>言語タグにより認識された言語と一致するローカライズ済みの言語があるか確認する</li>
+ <li>言語タグの最初の部分により認識された言語と一致するローカライズ済みの言語があるか確認する</li>
+ </ul>
+ </li>
+ <li>ルール (1) で一致しなかった場合は en-US にフォールバックします。しかしながら、en や en-US はブラウザから送信される accept-lang ヘッダの最後に書かれていることがほとんどです。</li>
+</ol>
+<p>例えば、以下の表は、<code>en-US, es, es-MX</code> がサポートされている場合に、送信された <code>Accept-Language</code> ヘッダから選択される言語のリストです:</p>
+<table>
+ <thead>
+ <tr>
+ <th scope="col"><strong>Accept-Language ヘッダ</strong></th>
+ <th scope="col"><strong>選択される言語</strong></th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>es-AR,es;q=0.8,en-us;q=0.5</code></td>
+ <td><code>es</code></td>
+ </tr>
+ <tr>
+ <td><code>es-MX,es;q=0.8,en-us;q=0.5</code></td>
+ <td><code>es-MX</code></td>
+ </tr>
+ <tr>
+ <td><code>e</code><code>s-es,en-us;q=0.5</code></td>
+ <td><code>en-US</code></td>
+ </tr>
+ <tr>
+ <td><code>e</code><code>s-es</code></td>
+ <td><code>en-US</code></td>
+ </tr>
+ </tbody>
+</table>
+<p>現在は、Web サイト側からダイアログを別の言語に変更する方法はありません。これは、Persona の UI が論理的にブラウザの一部である (将来、ブラウザにネイティブ実装される) ことが理由です。そのため、ダイアログの言語はブラウザの UI と同じ言語であるべきです。</p>
+<h2 id="ローカライズに協力するには">ローカライズに協力するには</h2>
+<p>Persona は、Mozilla Verbatim を利用してボランティアが新しい言語を追加できるようにしています。ローカライズに協力したい方は、<a href="/docs/Localizing_with_Verbatim" title="/docs/Localizing_with_Verbatim">はじめての Verbatim</a> をお読みください。実際の作業は、Verbatim サイトの <a href="https://localize.mozilla.org/projects/browserid/" title="https://localize.mozilla.org/projects/browserid/">"BrowserID" プロジェクト</a> で行います。</p>
diff --git a/files/ja/mozilla/persona/quick_setup/index.html b/files/ja/mozilla/persona/quick_setup/index.html
new file mode 100644
index 0000000000..00fecb5c44
--- /dev/null
+++ b/files/ja/mozilla/persona/quick_setup/index.html
@@ -0,0 +1,242 @@
+---
+title: クイックセットアップ
+slug: Mozilla/Persona/Quick_Setup
+tags:
+ - Persona
+translation_of: Archive/Mozilla/Persona/Quick_Setup
+---
+<p>たった 5 つの手順であなたのサイトに Persona のログインシステムを追加できます:</p>
+
+<ol>
+ <li>Persona の JavaScript ライブラリをページに含める。</li>
+ <li>ログインボタンとログアウトボタンを追加する。</li>
+ <li>ログインとログアウトの操作を監視する。</li>
+ <li>ユーザの信用情報を検証する。</li>
+ <li>ベストプラクティスを見直す。</li>
+</ol>
+
+<p>Persona は、半日もあればあなたのサイトに追加できます。ただし、重要なものから順番に行ってください: Persona をあなたのサイトで利用しようとするときは、その前に <a href="https://mail.mozilla.org/listinfo/persona-notices">Persona notices</a> メーリングリストを購読してください。メールのやりとりはとても少ないですが、あなたのサイトに悪影響を及ぼす可能性のある変更をアナウンスするために使われます。</p>
+
+<h2 id="Step_1.3A_Include_the_Persona_library" name="Step_1.3A_Include_the_Persona_library">ステップ 1: Persona ライブラリを含める</h2>
+
+<p>Persona は、ブラウザ中立で設計されており、<a href="/ja/docs/persona/Browser_compatibility">すべての主要なデスクトップ版とモバイル版</a><a href="/ja/docs/persona/Browser_compatibility">のブラウザ</a> で動作します。</p>
+
+<p>私たちは将来、ブラウザ群がPersonaに母国語の支援を提供するだろうと考えていますが、その間、私たちはユーザーインターフェースとクライアント側のプロトコルを全て備えたJavascriptのライブラリを提供します。</p>
+
+<p>このライブラリが一度ページに読み込まれれば、必要な Persona 関数 ({{domxref("navigator.id.watch()", "watch()")}} および {{domxref("navigator.id.request()", "request()")}}, {{domxref("navigator.id.logout()", "logout()")}}) がグローバルな <code>navigator.id</code> オブジェクトで利用可能になります。</p>
+
+<p>Persona JavaScript ライブラリをページに含めるには、以下の <code>script</code> タグをページのヘッダ(page bodyの末尾)に置いてください:</p>
+
+<pre class="brush: html;">&lt;script src="https://login.persona.org/include.js"&gt;&lt;/script&gt;
+</pre>
+
+<p>このコードは、{{domxref("navigator.id")}} 関数を使用するすべてのページに <strong>含めなければなりません</strong>。なぜならPersona はまだ開発段階であり、<code>include.js</code> ファイルをあなた自身でホストすべきではないからです。</p>
+
+<h3 id="Suppressing_Compatibility_Mode" name="Suppressing_Compatibility_Mode">互換性モードの制限</h3>
+
+<p>Personaを破綻させるため、Internet Explorerのユーザーが互換性モードを使用できないことも確認すべきです。以下をしてください。</p>
+
+<ul>
+ <li><code>すべてscript elementsの前に&lt;meta http-equiv="X-UA-Compatible" content="IE=Edge"&gt;</code> をあなたのページに含める。</li>
+ <li>もしくはあなたのページに以下のHTTP ヘッダを設定する。 <code>X-UA-Compatible: IE=Edge</code>.</li>
+</ul>
+
+<p>For more information, see the notes in <a href="/ja/docs/persona/Browser_compatibility#Internet_Explorer_.22Compatibility_Mode.22" title="persona/Browser_compatibility#Internet_Explorer_.22Compatibility_Mode.22">IE Compatibility Mode</a> and <a href="http://hsivonen.iki.fi/doctype/index.html#ie8" title="http://hsivonen.iki.fi/doctype/index.html#ie8">"IE8 and IE9 Complications"</a>.</p>
+
+<h2 id="Step_2.3A_Add_login_and_logout_buttons" name="Step_2.3A_Add_login_and_logout_buttons">ステップ 2: ログインとログアウトのボタンを追加する</h2>
+
+<p>Persona は DOM API として設計されているため、ユーザがサイト上のログインまたはログアウトボタンをクリックした時に関数を呼び出さなければなりません。Persona ダイアログを開いてユーザがログインできるようにするには、{{domxref("navigator.id.request()")}} を呼び出します。ログアウトする時は {{domxref("navigator.id.logout()")}} を呼び出します。</p>
+
+<p>Note, the call to {{ domxref("navigator.id.logout()", "logout()") }} <em>must</em> be made in the click handler of the logout button.</p>
+
+<p>コード例:</p>
+
+<pre class="brush: js;">var signinLink = document.getElementById('signin');
+if (signinLink) {
+ signinLink.onclick = function() { navigator.id.request(); };
+};
+
+var signoutLink = document.getElementById('signout');
+if (signoutLink) {
+ signoutLink.onclick = function() { navigator.id.logout(); };
+};
+</pre>
+
+<p>これらのボタンの外観については、<a href="/ja/docs/persona/branding">ブランドリソース</a> ページのボタン画像や CSS ベースのボタンをご利用ください。</p>
+
+<h2 id="Step_3.3A_Watch_for_login_and_logout_actions" name="Step_3.3A_Watch_for_login_and_logout_actions">ステップ 3: ログインとログアウトの操作を監視する</h2>
+
+<p>Persona を機能させるために、ユーザがログインまたはログアウトした時に何を行うかを知らせる必要があります。これは、{{domxref("navigator.id.watch()")}} 関数に 3 個の引数を与えて呼び出すことにより行えます:</p>
+
+<ol>
+ <li>コンピューターから現在あなたのサイトにログインしているユーザーのemailアドレス。ユーザがいない場合は <code>null</code> です。例えば、誰がサインインしているのか確かめるためにブラウザのCookieを調べることでしょう。</li>
+ <li><code>onlogin</code> 操作のトリガーが引かれた時に呼び出す関数。この関数には、検証された「ID アサーション」の引数を 1 個渡します。</li>
+ <li><code>onlogout</code> 操作のトリガーが引かれた時に呼び出す関数。この関数には引数を渡しません。</li>
+</ol>
+
+<div class="note style-wrap">
+<p><strong>注意:</strong> {{domxref("navigator.id.watch()")}} を呼び出した時は、常に <code>onlogin</code> と <code>onlogout</code> の両方を含めなければなりません。</p>
+</div>
+
+<p>例えば、あなたが"Bob"で現在あなたのサイトにログインしていると考える場合、次のように書きます:</p>
+
+<pre class="brush: js;">var currentUser = 'bob@example.com';
+
+navigator.id.watch({
+ loggedInUser: currentUser,
+ onlogin: function(assertion) {
+ // ユーザがログインしました! ここで必要なことは:
+ // 1. 検証してセッションを作成するため、アサーションをバックエンドに送信する。
+ // 2. UI を更新する。
+ $.ajax({ /* &lt;-- この例では jQuery を使いますが、他のものも使えます */
+ type: 'POST',
+ url: '/auth/login', // これは、あなたの Web サイト上の URL です。
+ data: {assertion: assertion},
+ success: function(res, status, xhr) { window.location.reload(); },
+ error: function(res, status, xhr) { alert("login failure" + res); }
+ });
+ },
+ onlogout: function() {
+ // ユーザがログアウトしました! ここで必要なことは:
+ // リダイレクトするかバックエンドの呼び出しを行って、ユーザのセッションを破棄する。
+ $.ajax({
+ type: 'POST',
+ url: '/auth/logout', // これは、あなたの Web サイト上の URL です。
+ success: function(res, status, xhr) { window.location.reload(); },
+ error: function(res, status, xhr) { alert("logout failure" + res); }
+ });
+ }
+});
+</pre>
+
+<p>このコード例では、非同期の <code>POST</code> リクエストをサイトのバックエンドで行う <code>onlogin</code> と <code>onlogout</code> の両方が実装されています。バックエンドでは、セッション Cookie 内の情報を設定または削除することによりユーザのログインまたはログインが記録されます。そして、すべてが正しく一致したら、ページが再読み込みしてアカウントを新しいログイン状態にします。</p>
+
+<p>もちろん、AJAX を用いて再読み込みやリダイレクトなしでこれを実装することもできますが、このチュートリアルでは扱いません。</p>
+
+<p>もしID assertionが証明できなかったとき、{{ domxref("navigator.id.logout()") }}を呼びだすべきことに注意してください。これはPersonaに現在誰もログインしていないことを教える働きがあり、それをしないと、Personaは同じassertionでonloginをまた直ちに呼び出し、それが<a href="https://developer.mozilla.org/en-US/docs/Persona/The_implementor_s_guide/Call_logout%28%29_after_a_failed_login" title="/en-US/docs/Persona/The_implementor_s_guide/Call_logout()_after_a_failed_login">endless loop of failed logins</a>につながるかもしれません。</p>
+
+<p>次の例を示します。今度はjQueryをつかいません。</p>
+
+<pre class="brush: js; language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">simpleXhrSentinel<span class="punctuation token">(</span></span>xhr<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">return</span> <span class="keyword token">function</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>xhr<span class="punctuation token">.</span>readyState <span class="operator token">==</span> <span class="number token">4</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>xhr<span class="punctuation token">.</span>status <span class="operator token">==</span> <span class="number token">200</span><span class="punctuation token">)</span><span class="punctuation token">{</span>
+ <span class="comment token"> // reload page to reflect new login state
+</span> window<span class="punctuation token">.</span>location<span class="punctuation token">.</span><span class="function token">reload<span class="punctuation token">(</span></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>
+ navigator<span class="punctuation token">.</span>id<span class="punctuation token">.</span><span class="function token">logout<span class="punctuation token">(</span></span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="function token">alert<span class="punctuation token">(</span></span><span class="string token">"XMLHttpRequest error: "</span> <span class="operator token">+</span> xhr<span class="punctuation token">.</span>status<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="keyword token">function</span> <span class="function token">verifyAssertion<span class="punctuation token">(</span></span>assertion<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="comment token"> // Your backend must return HTTP status code 200 to indicate successful
+</span> <span class="comment token"> // verification of user's email address and it must arrange for the binding
+</span> <span class="comment token"> // of currentUser to said address when the page is reloaded
+</span> <span class="keyword token">var</span> xhr <span class="operator token">=</span> <span class="keyword token">new</span> <span class="class-name token">XMLHttpRequest</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ xhr<span class="punctuation token">.</span><span class="function token">open<span class="punctuation token">(</span></span><span class="string token">"POST"</span><span class="punctuation token">,</span> <span class="string token">"/xhr/sign-in"</span><span class="punctuation token">,</span> <span class="keyword token">true</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="comment token"> // see http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
+</span> <span class="keyword token">var</span> param <span class="operator token">=</span> <span class="string token">"assertion="</span><span class="operator token">+</span>assertion<span class="punctuation token">;</span>
+ xhr<span class="punctuation token">.</span><span class="function token">setRequestHeader<span class="punctuation token">(</span></span><span class="string token">"Content-type"</span><span class="punctuation token">,</span> <span class="string token">"application/x-www-form-urlencoded"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ xhr<span class="punctuation token">.</span><span class="function token">setRequestHeader<span class="punctuation token">(</span></span><span class="string token">"Content-length"</span><span class="punctuation token">,</span> param<span class="punctuation token">.</span>length<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ xhr<span class="punctuation token">.</span><span class="function token">setRequestHeader<span class="punctuation token">(</span></span><span class="string token">"Connection"</span><span class="punctuation token">,</span> <span class="string token">"close"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ xhr<span class="punctuation token">.</span><span class="function token">send<span class="punctuation token">(</span></span>param<span class="punctuation token">)</span><span class="punctuation token">;</span><span class="comment token"> // for verification by your backend
+</span>
+ xhr<span class="punctuation token">.</span>onreadystatechange <span class="operator token">=</span> <span class="function token">simpleXhrSentinel<span class="punctuation token">(</span></span>xhr<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">signoutUser<span class="punctuation token">(</span></span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="comment token"> // Your backend must return HTTP status code 200 to indicate successful
+</span> <span class="comment token"> // sign out (usually the resetting of one or more session variables) and
+</span> <span class="comment token"> // it must arrange for the binding of currentUser to 'null' when the page
+</span> <span class="comment token"> // is reloaded
+</span> <span class="keyword token">var</span> xhr <span class="operator token">=</span> <span class="keyword token">new</span> <span class="class-name token">XMLHttpRequest</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ xhr<span class="punctuation token">.</span><span class="function token">open<span class="punctuation token">(</span></span><span class="string token">"GET"</span><span class="punctuation token">,</span> <span class="string token">"/xhr/sign-out"</span><span class="punctuation token">,</span> <span class="keyword token">true</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ xhr<span class="punctuation token">.</span><span class="function token">send<span class="punctuation token">(</span></span><span class="keyword token">null</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ xhr<span class="punctuation token">.</span>onreadystatechange <span class="operator token">=</span> <span class="function token">simpleXhrSentinel<span class="punctuation token">(</span></span>xhr<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="punctuation token">}</span>
+<span class="comment token">
+// Go!
+</span>navigator<span class="punctuation token">.</span>id<span class="punctuation token">.</span><span class="function token">watch<span class="punctuation token">(</span></span> <span class="punctuation token">{</span>
+ loggedInUser<span class="punctuation token">:</span> currentUser<span class="punctuation token">,</span>
+ onlogin<span class="punctuation token">:</span> verifyAssertion<span class="punctuation token">,</span>
+ onlogout<span class="punctuation token">:</span> signoutUser <span class="punctuation token">}</span> <span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p> </p>
+
+<p>すべてのページ上のログインボタンまたはログアウトボタンで<code>navigator.id.watch()を</code> <strong>呼び出さなければなりません</strong>。サイトのユーザのための、自動ログインやグローバルログアウトのような Persona の機能をサポートするには、この関数をあなたのサイトのすべてのページ上で <strong>呼び出してください</strong>。</p>
+
+<h2 id="Step_4.3A_Verify_the_user.E2.80.99s_credentials" name="Step_4.3A_Verify_the_user.E2.80.99s_credentials">ステップ 4: ユーザの信用情報を検証する</h2>
+
+<p>Persona は、パスワードの代わりに「ID アサーション」を使います。これは、ユーザのメールアドレスに結び付けられた、一つのサイトで一回だけ使えるパスワードのようなものです。ユーザがログインしようとする時、このユーザからのアサーションと共に <code>onlogin</code> コールバックが呼びされます。彼らをログインさせる前に、アサーションが正しいか検証しなければなりません。</p>
+
+<p>アサーションを、ユーザのブラウザ上で実行している JavaScript ではなく、あなたのサーバ上で検証することは <em>とても重要</em> です。ユーザのブラウザ上では簡単に偽造できてしまうからです。上記の例では、jQuery の <code>$.ajax()</code> ヘルパーを使ってアサーションをサイトのバックエンドに手放し、<code>/auth/login</code> に <code>POST</code> しました。</p>
+
+<p>あなたのサーバにアサーションが渡ったら、それをどのように検証したらよいでしょうか? 最も簡単な方法は、Mozilla が提供するヘルパーサービスを使うことです。単純にアサーションを 2 個の引数と共に <code>https://verifier.login.persona.org/verify</code> に <code>POST</code> するだけです:</p>
+
+<ol>
+ <li><code>assertion</code>: ユーザにより提供された ID アサーション。</li>
+ <li><code>audience</code>: あなたの Web サイトのホスト名とポート番号。この値はバックエンドに直接記述してください。ユーザから与えられたいかなるデータも、この引数に渡してはいけません。</li>
+</ol>
+
+<p>例えば、<code>example.com</code> というサイトの場合、コマンドラインで次のようにアサーションをテストできます:</p>
+
+<pre class="brush: bash;">$ curl -d "assertion=&lt;ASSERTION&gt;&amp;audience=https://example.com:443" "https://verifier.login.persona.org/verify"
+</pre>
+
+<p>値が正しければ、次のような JSON レスポンスが返ります:</p>
+
+<pre class="brush: js;">{
+ "status": "okay",
+ "email": "bob@eyedee.me",
+ "audience": "https://example.com:443",
+ "expires": 1308859352261,
+ "issuer": "eyedee.me"
+}
+</pre>
+
+<p>検証サービスについては、<a href="/ja/docs/Persona/Remote_Verification_API">Verification Service API</a> をお読みください。<code>/auth/login</code> の実装例と <a href="http://python.org/">Python</a> を使った <a href="http://flask.pocoo.org/">Flask</a> Web フレームワーク、<a href="http://python-requests.org">Requests</a> HTTP ライブラリは次のようになります:</p>
+
+<pre class="brush: python;">@app.route('auth/login/', methods=['POST'])
+def login():
+ # The request has to have an assertion for us to verify
+ if 'assertion' not in request.form:
+ abort(400)
+
+ # Send the assertion to Mozilla's verifier service.
+ data = {'assertion': request.form['assertion'], 'audience': 'https://example.com:443'}
+ resp = requests.post('https://verifier.login.persona.org/verify', data=data)
+
+ # Did the verifier respond?
+ if resp.ok:
+ # Parse the response
+ verification_data = json.loads(resp.content)
+
+ # Check if the assertion was valid
+ if verification_data['status'] == 'okay':
+ # Log the user in by setting a secure session cookie
+ session.update({'email': verification_data['email']})
+ return resp.content
+
+ # Oops, something failed. Abort.
+ abort(500)
+</pre>
+
+<p>他の言語でPersonaを使う例は<a href="https://github.com/mozilla/browserid-cookbook" title="https://github.com/mozilla/browserid-cookbook">cookbook</a>.を参照してください。</p>
+
+<p>セッション管理は、既存のログインシステムとよく似ているでしょう。最初の大きな変更は、パスワードを確認する代わりにアサーションを確認してユーザの ID を検証することです。他の大きな変更は、ユーザのメールアドレスが利用可能であることを、{{domxref("navigator.id.watch()")}} に <code>loggedInUser</code> 引数を渡して確認することです。</p>
+
+<p>ログアウトは簡単です: 必要なことは、ユーザのセッション Cookie を削除するだけです。</p>
+
+<h2 id="Step_5.3A_Review_best_practices" name="Step_5.3A_Review_best_practices">ステップ 5: ベストプラクティスを見直す</h2>
+
+<p>すべての動作が確認でき、あなたのサイトへのログインとログアウトが成功したら、Persona を安全に安心して使うための <a href="/ja/docs/Persona/Security_Considerations">ベストプラクティス</a> を見直してください。</p>
+
+<p>製品レベルのサイトを制作している場合は、Persona を使ったユーザのログインとログアウトをシミュレートするインテグレーションテストを書きたいでしょう。これを Selenium で容易に行うために、<a href="https://github.com/mozilla/bidpom">bidpom</a> ライブラリの使用を考慮してください。<a href="https://mockmyid.com/">mockmyid.com</a> と <a href="http://personatestuser.org">personatestuser.org</a> のサイトも役立つでしょう。</p>
+
+<p>最後に、セキュリティの問題や Persona API の後方互換性に関わる変更を知るために、<a href="https://mail.mozilla.org/listinfo/persona-notices">Persona notices</a> メーリングリストにサインアップすることを忘れないでください。このメーリングリストのやりとりはとても少ないですが、あなたのサイトに悪影響を及ぼす可能性のある変更をアナウンスするために使われます。</p>
+
+<p> </p>
+
+<p> </p>
diff --git a/files/ja/mozilla/persona/remote_verification_api/index.html b/files/ja/mozilla/persona/remote_verification_api/index.html
new file mode 100644
index 0000000000..f6c5fe4912
--- /dev/null
+++ b/files/ja/mozilla/persona/remote_verification_api/index.html
@@ -0,0 +1,125 @@
+---
+title: Remote Verification API
+slug: Mozilla/Persona/Remote_Verification_API
+tags:
+ - BrowserID
+ - Persona
+translation_of: Archive/Mozilla/Persona/Remote_Verification_API
+---
+<h3 id="Summary" name="Summary">要約</h3>
+<p>ユーザが Web サイトにログインしようとする時、ブラウザが <em>アサーション</em> と呼ばれるデータ構造を生成します。このデータの内容は、暗号化された署名付きのメールアドレスです。ブラウザは、このアサーションを Web サイトに送信し、ユーザにログインを許可する前にアサーションが正当か検証されます。</p>
+<p>アサーションはローカルで検証することもできます。または、<span class="link-https"><code>https://verifier.login.persona.org/verify</code></span> でホストされた API でも検証できます。このページでは、この API の使い方を説明します。</p>
+<h3 id="Methods" name="Methods">メソッド</h3>
+<p><code>https://verifier.login.persona.org/verify</code> に HTTP POST リクエストを送信します。</p>
+<h3 id="引数">引数</h3>
+<p><code>assertion</code>: ユーザが提供したアサーション。{{ domxref("navigator.id.watch()") }} の <code>onlogin</code> 関数に渡す最初の引数として使います。<br>
+ <code>audience</code>: あなたのサイトのプロトコル、ドメイン名、ポート番号。例えば、"<code>https://example.com:443</code>" と指定します。</p>
+<h3 id="戻り値">戻り値</h3>
+<p>この API を呼び出すと、<code>status</code> 要素を含む JSON データ構造を返します。この要素は、"okay" と "failure" のどちらかになります。<code>status</code> の値に依存して、JSON データに以下の追加の要素が含まれることがあります。</p>
+<h4 id="okay">"okay"</h4>
+<p>アサーションは正当です。</p>
+<p>この場合、JSON データ構造に次の追加要素が含まれます:</p>
+<table style="width: 80%;">
+ <tbody>
+ <tr>
+ <td><code>"email"</code></td>
+ <td>アサーションに含まれるメールアドレス。これは、ログインしようとしているユーザのものです。</td>
+ </tr>
+ <tr>
+ <td><code>"audience"</code></td>
+ <td>アサーションに含まれる audience 値。あなたの Web サイトの URL であることが期待されます。</td>
+ </tr>
+ <tr>
+ <td>"<code>expires"</code></td>
+ <td>アサーションの有効期限日。<a href="docs/JavaScript/Reference/Global_Objects/Date/valueOf" title="docs/JavaScript/Reference/Global_Objects/Date/valueOf">Date オブジェクトの初期値</a> を表します。これは、1970 年 1 月 1 日の午前 0 時 (UTC) から経過したミリ秒単位の値です。</td>
+ </tr>
+ <tr>
+ <td><code>"issuer"</code></td>
+ <td>アサーションを発行した ID プロバイダのホスト名。</td>
+ </tr>
+ </tbody>
+</table>
+<h4 id="failure">"failure"</h4>
+<p>アサーションは不正です。この場合、JSON データ構造に 1 個の追加要素が含まれます:</p>
+<table>
+ <tbody>
+ <tr>
+ <td><code>"reason"</code></td>
+ <td>検証が失敗した理由を説明する文字列。</td>
+ </tr>
+ </tbody>
+</table>
+<h3 id="コード例">コード例</h3>
+<h4 id="node.js">node.js</h4>
+<p>このコード例は、express.js を使用する node.js サーバを使用します。</p>
+<pre class="brush: js" style="margin-left: 120px;">var express = require("express"),
+ app = express.createServer(),
+ https = require("https"),
+ querystring = require("querystring");
+/* ... */
+
+// audience は、ブラウザのアドレスバーに表示されている URL と一致しなければなりません。
+// プロトコルとホスト名、ポート番号を含みます。
+var audience = "http://localhost:8888";
+
+app.post("/authenticate", function(req, res) {
+ var vreq = https.request({
+ host: "verifier.login.persona.org",
+ path: "/verify",
+ method: "POST"
+ }, function(vres) {
+ var body = "";
+ vres.on('data', function(chunk) { body+=chunk; } )
+ .on('end', function() {
+ try {
+ var verifierResp = JSON.parse(body);
+ var valid = verifierResp &amp;&amp; verifierResp.status === "okay";
+ var email = valid ? verifierResp.email : null;
+ req.session.email = email;
+ if (valid) {
+ console.log("assertion verified successfully for email:", email);
+ res.json(email);
+ } else {
+ console.log("failed to verify assertion:", verifierResp.reason);
+ res.send(verifierResp.reason, 401);
+ }
+ } catch(e) {
+ console.log("non-JSON response from verifier");
+ // 検証側から偽の応答がありました!
+ res.send("bogus response from verifier!", 401);
+
+ }
+ });
+ });
+ vreq.setHeader('Content-Type', 'application/x-www-form-urlencoded');
+
+ var data = querystring.stringify({
+ assertion: req.body.assertion,
+ audience: audience
+ });
+ vreq.setHeader('Content-Length', data.length);
+ vreq.write(data);
+ vreq.end();
+ console.log("verifying assertion!");
+});
+
+</pre>
+<p>via <a class="link-https" href="https://github.com/lloyd/myfavoritebeer.org/blob/06255b960e1f9078bc935c1c7af0662f33c88818/server/main.js#L112" title="https://github.com/lloyd/myfavoritebeer.org/blob/06255b960e1f9078bc935c1c7af0662f33c88818/server/main.js#L112">Lloyd Hilaiel</a></p>
+<h4 id="PHP">PHP</h4>
+<pre class="brush: php">$url = 'https://verifier.login.persona.org/verify';
+$assert = $_POST['assert'];
+$params = 'assertion='.$assert.'&amp;audience=' .
+ urlencode('http://example.com:80');
+$ch = curl_init();
+$options = array(
+ CURLOPT_URL =&gt; $url,
+ CURLOPT_RETURNTRANSFER =&gt; TRUE,
+ CURLOPT_POST =&gt; 2,
+ CURLOPT_POSTFIELDS =&gt; $params
+);
+curl_setopt_array($ch, $options);
+$result = curl_exec($ch);
+curl_close($ch);
+echo $result;
+</pre>
+<p>Via <a class="link-https" href="https://github.com/codepo8/BrowserID-login-with-PHP/blob/184fdb74c8a554461c262875859968154d09288e/verify.php">Christian Heilmann</a></p>
diff --git a/files/ja/mozilla/persona/security_considerations/index.html b/files/ja/mozilla/persona/security_considerations/index.html
new file mode 100644
index 0000000000..640783acb6
--- /dev/null
+++ b/files/ja/mozilla/persona/security_considerations/index.html
@@ -0,0 +1,91 @@
+---
+title: セキュリティについて考慮すべき事柄
+slug: Mozilla/Persona/Security_Considerations
+tags:
+ - Persona
+ - Security
+translation_of: Archive/Mozilla/Persona/Security_Considerations
+---
+<p>あなたの Web サイトに Persona のサポートを追加する場合、Persona ができるだけセキュリティの重荷を負います。しかしながら、セキュリティのある面においては、あなたの Web サイトでしか対処できないことがあります。以下は、そのリストです。</p>
+
+
+
+<h2 id="Essential_practices" name="Essential_practices">ベストプラクティス</h2>
+
+
+
+<h3 id="Verify_assertions_on_your_server" name="Verify_assertions_on_your_server">あなたのサーバ上でアサーションを検証する</h3>
+
+
+<p>Persona を使う時は、ID アサーションが {{domxref("navigator.id.watch()")}} の <code>onlogin</code> 関数に渡されます。アサーションは、<em>常に</em> あなたの検証サーバに渡してください。その検証結果を基に、あなたのサーバがユーザに追加の許可を与えるかどうかを決定してください:</p>
+<pre class="brush:js;">// navigator.id.watch({ ... 内
+onlogin: function(assertion) {
+ // ユーザがログインしようとしています! ここで必要なことは:
+ // 1. アサーションを検証のためにバックエンドに送信し、セッションを作成する。
+ // 2. UI を更新する。
+},
+</pre>
+<p>ユーザのブラウザで実行される JavaScript を使用してアサーションを検証しようとすると、悪意のあるユーザがローカルのインジェクションコードであなたのサイトのユーザに偽装し、JavaScript コードを覆すことができてしまいます。これは、コードが実行されるユーザのブラウザをあなたが完全に制御できないため、可能となります。</p>
+<p>繰り返しますが、アサーションは、<em>常に</em> あなたの検証サーバに渡してください。リモート検証 API を使用する場合でも同じです。</p>
+
+
+
+<h3 id="Explicitly_specify_the_audience_parameter" name="Explicitly_specify_the_audience_parameter"><code>audience</code> 引数を明記する</h3>
+
+
+
+<p>アサーションを検証するには、POST リクエストを <code>https://verifier.login.persona.org/verify</code> に送信します。このリクエストには <code>audience</code> と呼ばれる引数が含まれます:</p>
+<pre><code>assertion=&lt;ASSERTION&gt;&amp;audience=https://mysite.com:443"</code>
+</pre>
+<p><code>audience</code> 引数は必須です。常に、あなたのコード内かコードの設定内に audience を明記してください。特に次のことに注意してください:</p>
+<ul>
+ <li>ユーザのブラウザが送信した Host ヘッダを信頼してはいけません。</li>
+ <li>ユーザのブラウザが送信した明示的な引数を信頼してはいけません。ただし、<code>document.location</code> など、あなたの JavaScript で生成されたものを除きます。</li>
+</ul>
+<p>ユーザのブラウザから伝えられた audience を信頼してしまうと、悪意のある Web サイトが <em>自身の</em> Web サイトのアサーションを再利用して <em>あなたの</em> Web サイトにログインすることが可能になります。</p>
+
+
+
+<h3 id="Verify_SSL_certificates" name="Verify_SSL_certificates">SSL 証明書を検証する</h3>
+<p>アサーションを検証するには、POST リクエストを <code>https://verifier.login.persona.org/verify</code> に送信します。この HTTPS リクエストで、サーバから送られた証明書を信頼されたルート証明書に照らし合わせて確実に検証しなければなりません。これをしない場合、攻撃者が <code>verifier.login.persona.org</code> になりすまして偽の検証結果を返すことができます。</p>
+<p>使用しているライブラリが証明書の検証リクエストを正しく行い、適切なルート証明書でそれを初期化しているか確認してください。</p>
+<p>例えば、Python 2.7 の標準の <a href="http://docs.python.org/release/2.7.3/library/urllib2.html#urllib2.urlopen" title="http://docs.python.org/release/2.7.3/library/urllib2.html#urllib2.urlopen">urllib2 モジュール</a> は、サーバ証明書を検証しません。代わりに、Python 2.x の "<a href="http://pypi.python.org/pypi/requests">requests</a>" モジュールや "<a href="http://pypi.python.org/pypi/urllib3" title="http://pypi.python.org/pypi/urllib3">urllib3</a>" モジュール、または Python 3.x の標準の <code>http.client.HTTPSConnection</code> クラスの使用を推奨します。Perl の場合は、<code>libwww-perl</code> のバージョン 6.0 以降を使用してください。使用している言語やライブラリ、オペレーティングシステムによりますが、信頼された CA ルートと <code>verifier.login.persona.org</code> で使用されている単独の CA のどちらかのリストを提供する必要があるかもしれません。</p>
+
+
+
+
+<h3 id="Implement_CSRF_protection" name="Implement_CSRF_protection">CSRF プロテクションを実装する</h3>
+
+
+<p>CSRF (Cross-Site Request Forgery) ログイン攻撃では、攻撃者がクロスサイトリクエストフォージェリを利用して、ユーザを攻撃者の資格情報を使った Web サイトにログインさせます。</p>
+<p>例えば: ユーザが <code>form</code> 要素を含む悪意のある Web サイトを訪れたとします。この form の <code>action</code> 属性には、攻撃者のユーザ名とパスワードを含む <a href="http://www.google.com/login" title="http://www.google.com/login">http://www.google.com/login</a> への HTTP POST リクエストがセットされています。ユーザが form を送信すると、リクエストが Google に送信され、Google サーバがユーザのブラウザに Cookie をセットします。これで、ユーザが知らないうちに、攻撃者の Google アカウントへのログインが成功してしまいます。</p>
+<p>この攻撃は、ユーザの個人情報を集めるために使われます。例えば、Google の <a class="link-https" href="https://www.google.com/history/">Web History</a> 機能は、ユーザによるすべての Google 検索の検索語を記録します。ユーザが攻撃者の Google アカウントにログインし、攻撃者が Web History 機能を有効にすると、ユーザはこれらすべての情報を攻撃者に与えることになります。</p>
+<p>CSRF ログイン攻撃とその防御手段は、<a href="http://www.adambarth.com/papers/2008/barth-jackson-mitchell-b.pdf">Robust Defenses for Cross-Site Request Forgery</a> (PDF) に詳しく解説されています。これらは Persona に限ったことではありません。ほとんどのログイン機構は、このような攻撃への潜在的な脆弱性を持っています。</p>
+<p>CSRF ログイン攻撃からサイトを護るために使える手段には、様々なテクニックがあります。上記のドキュメントを参照してください。</p>
+<p>取り得るアプローチ方法の一つは、サーバ内に秘密の ID を作成してブラウザと共有し、ログインリクエストを行う時にそれをブラウザから提供してもらうことです。例えば:</p>
+<ol>
+ <li>ユーザがサイトを訪れたらすぐに (ログインする前に) ユーザのセッションをサーバ上に作成し、セッション ID をブラウザの Cookie に格納します。</li>
+ <li>サーバ上で 10 文字以上のランダムな英数字の文字列を生成します。UUID をランダムに生成するとよいでしょう。これは CSRF トークンです。このトークンをセッションに格納します。</li>
+ <li>CSRF トークンを JavaScript や HTML 内の隠し form 変数に埋め込むことによってブラウザに渡します。</li>
+ <li>AJAX サブミッションや form の POST に CSRF トークンに含めてください。</li>
+ <li>サーバ側では、アサーションを受け取る前に、送信された CSRF トークンがセッションに格納された CSRF トークンと一致するか確認します。</li>
+</ol>
+
+
+
+
+<h2 id="Enhancements" name="Enhancements">さらなる向上</h2>
+
+
+
+
+<h3 id="Content_Security_Policy_(CSP)" name="Content_Security_Policy_(CSP)">コンテントセキュリティポリシー (CSP)</h3>
+<p><a href="/docs/Security/CSP" title="/docs/Security/CSP">コンテントセキュリティポリシー</a> (CSP) は、クロスサイトスクリプティング (XSS) やデータインジェクション攻撃を含む、特定の攻撃の検出と軽減を助けるセキュリティの追加レイヤーです。これらの攻撃は、データの盗難からサイトの破壊、マルウェアの拡散まで、すべての攻撃に使われます。</p>
+<p>あなたのサイトで CSP を使う場合は、サイトポリシーで Persona を有効にする必要があるでしょう。あなたのポリシーに依存しますが、次のことが必要です:</p>
+<ul>
+ <li>インラインの <code>javascript:</code> URI を削除し、追加のスクリプトファイルから読み込んだコードに置き換えてください。このスクリプトファイルでは、対象の要素をその ID を基に見つけ、{{domxref("element.onclick", "onclick")}} を設定するか、{{domxref("element.addEventListener()", "addEventListener()")}} を呼び出すことにより、要素にスクリプトを結び付けます。</li>
+ <li><code>https://login.persona.org</code> に <code>script-src</code> と <code>frame-src</code> の両方を許可し、あなたのサイトがリモートの <code>include.js</code> ファイルを読み込んでフォールバックの Persona 実装と通信できるようにしてください。</li>
+</ul>
+<p>Apache コンフィギュレーションには、次の行を含めることになるでしょう:</p>
+
+<pre>Header set X-Content-Security-Policy: "default-src 'self'; frame-src 'self' https://login.persona.org ; script-src 'self' https://login.persona.org"</pre>
diff --git a/files/ja/mozilla/persona/why_persona/index.html b/files/ja/mozilla/persona/why_persona/index.html
new file mode 100644
index 0000000000..7321201f6c
--- /dev/null
+++ b/files/ja/mozilla/persona/why_persona/index.html
@@ -0,0 +1,48 @@
+---
+title: なぜ Persona?
+slug: Mozilla/Persona/Why_Persona
+tags:
+ - Persona
+translation_of: Archive/Mozilla/Persona/Why_Persona
+---
+<p>ユーザ名とパスワードを使う流行のシステムは長続きしないでしょう: ユーザが利用するすべてのサイトとサービスでは、ユーザが新しく複雑なパスワードを作成して記憶しておくことが求められ、すべてのサイトはパスワードを安全に保持することが求められます。しかしながら、最近のセキュリティ侵害は、優れた企業でさえもユーザの情報を危険にさらし、パスワードの保護に躓くことを証明しています。</p>
+
+<p>Persona は、オープンで分散型の、サイトごとのパスワード認証を置き換える Web スケールの認証システムです。Persona は、Facebook Connect のような中央集権型のシステムに頼らずに、ユーザビリティとプライバシーに関係する OpenID のようなシステムの短所の克服に取り組みました。</p>
+
+<h2 id="Persona_Gets_Rid_of_Per-Site_Passwords" name="Persona_Gets_Rid_of_Per-Site_Passwords">Persona はサイトごとのパスワード認証を廃止します</h2>
+
+<p>Persona を利用すると、サイトごとに異なるパスワードを入力する代わりに、各サイトの認証を単純な一回だけのプロセスを完了した後に 2 回クリックするだけでサイトにログインできます。これは、安全に保護された公開鍵による暗号化の上に構築されています。パスワードを入力する代わりに、ユーザのブラウザが暗号化された「ID アサーション」を生成します。これは、数分後に期限切れになり、一つのサイトでのみ検証されます。サイト固有のパスワードが無いため、Web サイトは、パスワードを安全に保持することやパスワードのデータベースが失われる可能性を気にせずに Persona を使えます。</p>
+
+<p>このクイックサインインのプロセスは、ユーザが新しいサイトを訪れた時の不和も軽減します。</p>
+
+<h2 id="Persona_Identities_are_Email_Addresses" name="Persona_Identities_are_Email_Addresses">Persona の ID はメールアドレス</h2>
+
+<p>Persona は、ユーザが決めるユーザ名ではなく、ユーザのメールアドレスを認証に使用します。これには、ユーザと開発者の両方に利点があります:</p>
+
+<h3 id="User_Benefits_of_Using_Email_Addresses" name="User_Benefits_of_Using_Email_Addresses">メールアドレスを使うことのユーザの利点</h3>
+
+<ul>
+ <li>ユーザはすでに自分のメールアドレスを知っており、OpenID で混乱する可能性のある新しい URL を憶える必要はありません。</li>
+ <li>メールアドレスは、<code>someone@some-context</code> の概念を適切にとらえており、ユーザによる <code>@work</code> や <code>@home</code>、<code>@school</code> などの ID の区別を簡単にします。これは、Facebook や Google+ のようなソーシャルネットワーク上の実名やシングルアカウントのポリシーを通じた ID を統合する傾向とは異なります。</li>
+ <li>メールアドレスは、自身でホストすることも、ユーザの ID のコントロールを他のプロバイダに委ねて代理を頼むこともできます。</li>
+</ul>
+
+<h3 id="Developer_Benefits_of_Using_Email_Addresses" name="Developer_Benefits_of_Using_Email_Addresses">メールアドレスを使うことの開発者の利点</h3>
+
+<ul>
+ <li>メールアドレスは、ユーザと直接連絡をとる手段を開発者に与えます。</li>
+ <li>ほとんどのサイトはユーザのメールアドレスの入手を望んでいます。Persona は、ユーザがログインした時に、サイトにユーザのメールアドレスを提供し、サインアップフォームの後に追加の情報を入力する必要をなくします。</li>
+ <li>多くのログインシステムは、すでにメールアドレスをユニークキーとして扱っています。これは、Persona によるロックインではなく、同時に既存のログインシステムを配備できることを意味しています。</li>
+</ul>
+
+<p>言うまでもなく、メールアドレスは、既に数え切れないほど多くのプロバイダにわたって数十億のアカウントに完全に分散化したシステムです。</p>
+
+<h2 id="How_is_Persona_different_from_other_Single_Sign-On_providers.3F" name="How_is_Persona_different_from_other_Single_Sign-On_providers.3F">Persona は他のシングルサインオンのプロバイダとどう違いますか?</h2>
+
+<p>Persona は、安全で安心、簡単です。Persona は、他のプロバイダがしない、またはできない方法でユーザのプライバシーとコントロール、選択肢を護ります:</p>
+
+<p>Facebook や Google+ のような多くのソーシャルネットワークでは、ユーザに実名を使うことが要求され、一つのアカウントに制限されています。Persona は、メールアドレスの上に構築されることにより、ユーザが職場や家庭、学校、他の場所での ID を分けておくことができます。</p>
+
+<p>Persona はオープンで分散型です: メールアドレスを持つ人は誰でも Persona を使ってサイトにサインインできます。おまけに、誰でも独自の ID プロバイダをホストしたりメールアドレスのように他の機関に代理を頼んだりできます。これは、単一のアカウントを必要とし、中央集権化されたソーシャルなログインサービスとは対照的です。</p>
+
+<p>Persona は、ユーザのブラウザを認証プロセスの中に置くことによる新しいアプローチでユーザのプライバシーを護ります: ブラウザはユーザのメールプロバイダから信用情報を取得し、その信用情報を Web サイトに提供します。メールプロバイダはユーザを追跡できませんが、Web サイトは、信用情報を暗号化された状態で検証することにより、ユーザの ID を信用することができます。多くの他のシステムでは、OpenID のような分散型でさえも、ユーザにログインを許可する前に、サイトとの「確認手続き」(phone home) を必要とします。</p>
diff --git a/files/ja/mozilla/preferences/index.html b/files/ja/mozilla/preferences/index.html
new file mode 100644
index 0000000000..1169ecabf1
--- /dev/null
+++ b/files/ja/mozilla/preferences/index.html
@@ -0,0 +1,48 @@
+---
+title: Preferences
+slug: Mozilla/Preferences
+tags:
+ - NeedsTranslation
+ - TopicStub
+translation_of: Mozilla/Preferences
+---
+<p>The preference system makes it possible to store data for Mozilla applications using a key/value pairing system. These articles provide information about how to use the preference system.</p>
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2>
+ <dl>
+ <dt><a href="/en-US/docs/Preferences/Preferences_system" title="Preferences/Preferences system">Preferences system</a></dt>
+ <dd>An introduction to using the preference system in Mozilla.</dd>
+ <dt><a href="/en-US/docs/XUL_School/Handling_Preferences" title="XUL School/Handling Preferences">XUL School: Handling preferences</a></dt>
+ <dd>The XUL School tutorial chapter on preferences.</dd>
+ <dt><a href="/en-US/docs/Preferences/Preference_reference" title="Preferences/Preference_reference">Mozilla preference reference</a></dt>
+ <dd>A reference guide to all Mozilla preferences; currently a work in progress.</dd>
+ <dt><a href="/en-US/docs/Preferences/A_brief_guide_to_Mozilla_preferences" title="Preferences/A brief guide to Mozilla preferences">A brief guide to Mozilla preferences</a></dt>
+ <dd>An introductory guide to where preferences are stored and other useful information about the core preference system.</dd>
+ <dt><a href="/en-US/docs/Preferences/Using_preferences_from_application_code" title="Preferences/Using preferences from application code">Using preferences from application code</a> {{gecko_minversion_inline("6.0")}}</dt>
+ <dd>Firefox 6 introduced static functions for accessing preferences efficiently from within application code. This API is not available for add-ons, but if you're working on a Gecko application, this API is the preferred way to access preferences.</dd>
+ <dt><a href="/en-US/docs/Preferences/Mozilla_networking_preferences" title="Preferences/Mozilla networking preferences">Mozilla networking preferences</a></dt>
+ <dd>A guide to key networking-related preferences.</dd>
+ <dt><a href="/en-US/docs/Preferences/Mozilla_preferences_for_uber-geeks" title="Preferences/Mozilla preferences for uber-geeks">Mozilla preferences for uber-geeks</a></dt>
+ <dd>A guide to preferences that only truly elite geeks should play with.</dd>
+ </dl>
+ <p><span class="alllinks"><a href="/en-US/docs/tag/Preferences" title="tag/Preferences">View all pages tagged with "Preferences"...</a></span></p>
+ </td>
+ <td>
+ <h2 class="Community" id="Examples" name="Examples">Examples</h2>
+ <dl>
+ <dt><a href="/en-US/docs/Code_snippets/Preferences" title="Code snippets/Preferences">Code snippets</a></dt>
+ <dd>Preference-related code snippets.</dd>
+ <dt><a href="/en-US/docs/Adding_preferences_to_an_extension" title="Adding preferences to an extension">Adding preferences to an extension</a></dt>
+ <dd>How to add preferences to an existing extension.</dd>
+ </dl>
+ <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related Topics</h2>
+ <ul>
+ <li><a href="/en-US/docs/XUL" title="XUL">XUL</a>, <a href="/en-US/docs/JavaScript" title="JavaScript">JavaScript</a>, <a href="/en-US/docs/XPCOM" title="XPCOM">XPCOM</a>, <a href="/en-US/docs/Extensions" title="Extensions">Extensions</a>, <a href="/en-US/docs/Developer_Guide" title="Developing_Mozilla">Developing Mozilla</a></li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/ja/mozilla/preferences/preference_reference/index.html b/files/ja/mozilla/preferences/preference_reference/index.html
new file mode 100644
index 0000000000..100adfa968
--- /dev/null
+++ b/files/ja/mozilla/preferences/preference_reference/index.html
@@ -0,0 +1,13 @@
+---
+title: Preference reference
+slug: Mozilla/Preferences/Preference_reference
+tags:
+ - NeedSubpageList
+ - NeedsTranslation
+ - Preferences
+ - TopicStub
+translation_of: Mozilla/Preferences/Preference_reference
+---
+<p>{{ draft() }}</p>
+<p>This is an automatically-generated list of subpages.</p>
+<p>{{ListSubpages()}}</p>
diff --git a/files/ja/mozilla/preferences/preference_reference/ui.alertnotificationorigin/index.html b/files/ja/mozilla/preferences/preference_reference/ui.alertnotificationorigin/index.html
new file mode 100644
index 0000000000..8cac579a16
--- /dev/null
+++ b/files/ja/mozilla/preferences/preference_reference/ui.alertnotificationorigin/index.html
@@ -0,0 +1,41 @@
+---
+title: ui.alertNotificationOrigin
+slug: Mozilla/Preferences/Preference_reference/ui.alertNotificationOrigin
+tags:
+ - 設定
+translation_of: Mozilla/Preferences/Preference_reference/ui.alertNotificationOrigin
+---
+<p><code>ui.alertNotificationOrigin</code> は、 <a href="/en/XPCOM_Interface_Reference/nsIAlertsService" title="nsIAlertsService">nsIAlertsService</a> によって呼び出されるポップアップ通知において、位置とスライドインの方向を制御します。</p>
+
+<ul style="display: table; padding: 0; border-left: 2px solid; margin-left: 0.5em;">
+ <li style="display: table-row; padding: 3px; margin: 0;"><dfn>Type:</dfn><code>integer</code></li>
+ <li style="display: table-row; padding: 3px; margin: 0;"><dfn>Default value:</dfn>タスクバー(または同等の機能)の表示位置に依存</li>
+ <li style="display: table-row; padding: 3px; margin: 0;"><dfn>Exists by default:</dfn> no</li>
+ <li style="display: table-row; padding: 3px; margin: 0;"><dfn>Application support:</dfn> Gecko 1.8.1.2 (Firefox 2.0.0.2 / Thunderbird 2.0.0.4 / SeaMonkey 1.1)</li>
+ <li style="display: table-row; padding: 3px; margin: 0;"><dfn>Status:</dfn> Active; last updated 2012-02-22</li>
+ <li style="display: table-row; padding: 3px; margin: 0;"><dfn>Introduction:</dfn> Pushed to Nightly on 2007-01-04</li>
+ <li style="display: table-row; padding: 3px; margin: 0;"><dfn>Bugs:</dfn> {{ bug("133527") }} </li>
+</ul>
+
+<h2 id="Values">Values</h2>
+
+<dl>
+ <dt><code>0</code></dt>
+ <dd>右下に表示され、下から縦にスライドインする。</dd>
+ <dt><code>1</code></dt>
+ <dd>右下に表示され、右から横にスライドインする。</dd>
+ <dt><code>2</code></dt>
+ <dd>左下に表示され、下から縦にスライドインする。</dd>
+ <dt><code>3</code></dt>
+ <dd>左下に表示され、左から横にスライドインする。</dd>
+ <dt><code>4</code></dt>
+ <dd>右上に表示され、上から縦にスライドインする。</dd>
+ <dt><code>5</code></dt>
+ <dd>右上に表示され、右から横にスライドインする。</dd>
+ <dt><code>6</code></dt>
+ <dd>左上に表示され、上から縦にスライドインする。</dd>
+ <dt><code>7</code></dt>
+ <dd>左上に表示され、左から横にスライドインする。</dd>
+</dl>
+
+<p>{{ languages( { "zh-cn": "zh-cn/Mozilla/Preferences/Preference_reference/ui.alertNotificationOrigin" } ) }}</p>
diff --git a/files/ja/mozilla/preferences/preferences_system/new_attributes/index.html b/files/ja/mozilla/preferences/preferences_system/new_attributes/index.html
new file mode 100644
index 0000000000..b9c7beb88d
--- /dev/null
+++ b/files/ja/mozilla/preferences/preferences_system/new_attributes/index.html
@@ -0,0 +1,49 @@
+---
+title: 新しい属性
+slug: Mozilla/Preferences/Preferences_system/New_attributes
+tags:
+ - Preferences system
+ - XUL
+translation_of: Mozilla/Preferences/Preferences_system/New_attributes
+---
+<p><code><a href="ja/Preferences_System/prefwindow">&lt;prefwindow&gt;</a></code> の中に置かれたウィジェットは、(標準の属性に加えて)以下の属性を持つことができます。</p>
+<h3 id="preference" name="preference">preference</h3>
+<p>リンクされた <code><a href="ja/Preferences_System/preference">&lt;preference&gt;</a></code> 要素のidを指定します。この設定の <code>value</code> 属性とこのウィジェットの状態は常に同期されます。</p>
+<p>例えば以下の例は、設定 &lt;tt&gt;extensions.example.mypref&lt;/tt&gt; の値に基づいてtextboxの <code>value</code> を自動的に初期化します。またその逆に、ユーザがtextboxの値を変更した時、<code>&lt;preference&gt;</code> 要素の値は更新され、必要に応じて設定システムに書き込まれます。</p>
+<pre class="eval">&lt;preference id="my_pref" name="extensions.example.mypref" type="unichar"/&gt;
+&lt;textbox preference="my_pref"/&gt;
+</pre>
+<h3 id="preference-editable" name="preference-editable">preference-editable</h3>
+<p>既定の状態において、 <code><a href="ja/Preferences_System/preference">&lt;preference&gt;</a></code> 要素は、checkbox, colorpicker, radiogroup, textbox, listitem, listbox, そしてmenulistといったいくつかの標準的なウィジェットの値を自動的に変更します。これ以外のローカル名を持つ要素、例えばXBLによって定義されたウィジェットなどの値を更新したい場合は、<code>preference-editable="true"</code>属性をその要素に設定する必要があります。</p>
+<p>あなたのウィジェットが <code>&lt;preference&gt;</code> の値を変更するために、あなたはそのウィジェットの値が変更された後に<code>change</code>, <code>command</code>, または <code>input</code>イベントが発行されたかどうかを確認する必要があります。</p>
+<p><span class="comment">バグ # または何かテストケース? 注意:これは現在、treeウィジェットにおいては機能しません。もしかしたらそれ以外にもいずれの要素でも機能しないかもしれません。(APIでは、バージョン1.8で利用可能になるだろうと書かれています)。</span></p>
+<h3 id="onsyncfrompreference_.E3.81.8A.E3.82.88.E3.81.B3_onsynctopreference" name="onsyncfrompreference_.E3.81.8A.E3.82.88.E3.81.B3_onsynctopreference">onsyncfrompreference および onsynctopreference</h3>
+<p>あなたはしばしば、与えられた設定の型に簡単には割り当てられない型のユーザインターフェイス要素を持つことがあるでしょう。例えば、チェックされた時に設定に保存される値を整数値の3、チェックされていない時の値を2とするcheckboxを使うことがあるでしょう。このユーザインターフェイス要素を初期化するためには、どちらの値もcheckbox要素に対しては無意味なので、あなたは既定の初期化処理に期待をかけることはできません。あなたは、設定の値をユーザインターフェイス要素の初期値に変換したり、ユーザインターフェイス要素の値を設定ファイルに書き込める何らかの値に変換したりする、関数を書く必要があります。これが、 onsyncfrompreference と onsynctopreference を使う理由です。</p>
+<p><code>onsyncfrompreference</code> は、要素が設定から初期化される時に呼ばれます。もしあなたがこのイベントに対する実装を提供する場合、ユーザインターフェイス要素を初期化するための値か、または、設定システムがユーザインターフェイス要素を既定の値で初期化する(言い替えれば、設定の値に基づいて初期化することを試みる)ことを示すための値 <code>undefined</code> の、いずれかを返すあなたの実装が、初期化処理の間に呼び出されるでしょう。以下のように、あなたは上の例のcheckboxを記述することができます。:</p>
+<pre>&lt;checkbox preference="foo.bar" onsyncfrompreference="return onsyncfrompreference();"/&gt;
+
+.. スクリプト:
+function onsyncfrompreference()
+{
+ var preference = document.getElementById("foo.bar");
+ return preference.value == 3;
+
+ // もしfoo.barが真偽値であり、チェックボックスを初期化するのにその値を使いたければ、
+ // この時、他の何らかの初期化動作を実行したければ、
+ // 私たちはまだこのメソッドの続きを実装することができるでしょう。
+}
+</pre>
+<p><code>onsynctopreference</code> は、現在の状態を指定された設定に書き込める形の値に変換するように、設定システムがそれぞれの要素に要求する時に、呼ばれます。あなたは、特別な値か、値を取得するのに標準的な方法を使うよう設定システムに対して通知するために <code>undefined</code> を返すことができます。上の例でいえば:</p>
+<pre>&lt;checkbox preference="foo.bar" onsynctopreference="return onsynctopreference();"/&gt;
+.. スクリプト:
+function onsynctopreference()
+{
+ var checkbox = document.getElementById("checkbox");
+ return checkbox.checked ? 3 : 2;
+}
+
+// もしfoo.barが真偽値で、その値を設定に書き込むために使いたいなら、
+// この時、他の何らかの初期化動作を実行したければ、
+// 私たちはまだこのメソッドの続きを実装することができるでしょう。
+</pre>
+<div class="moreinfo"> <p><strong><a href="/ja/docs/Preferences_System">設定システム</a>の資料:</strong></p> <ul> <li>簡単な紹介: <a href="/ja/docs/Preferences_System/Getting_Started">Getting Started</a> | <a href="/ja/docs/Preferences_System/Examples">サンプル</a> | <a href="/ja/docs/Preferences_System/Troubleshooting">トラブルシューティング</a></li> <li>リファレンス: <code><a href="/ja/docs/Mozilla/Tech/XUL/prefwindow" title="prefwindow">prefwindow</a></code> | <code><a href="/ja/docs/Mozilla/Tech/XUL/prefpane" title="prefpane">prefpane</a></code> | <code><a href="/ja/docs/Mozilla/Tech/XUL/preferences" title="preferences">preferences</a></code> | <code><a href="/ja/docs/Mozilla/Tech/XUL/preference" title="preference">preference</a></code> | <a href="/ja/docs/Preferences_System/New_attributes">新しい属性</a></li> </ul></div>
diff --git a/files/ja/mozilla/projects/emscripten/index.html b/files/ja/mozilla/projects/emscripten/index.html
new file mode 100644
index 0000000000..7411c9951f
--- /dev/null
+++ b/files/ja/mozilla/projects/emscripten/index.html
@@ -0,0 +1,37 @@
+---
+title: Emscripten
+slug: Mozilla/Projects/Emscripten
+translation_of: Mozilla/Projects/Emscripten
+---
+<p><span class="seoSummary">Emscripten は LLVM のバイトコードの JavaScript へのコンパイラです。LLVM バイトコードは、例えば C/C++ を Clang でコンパイルすることで出力できます。バイトコードを JavaScript に変換することで、それらを Web ブラウザ上で動作させられます。</span></p>
+
+<div class="warning">
+<p><strong>重要</strong>:このページには Emscripten の簡単な概要のみが記載されています。詳しく知るには, <a href="http://kripken.github.io/emscripten-site/index.html">Emscripten の公式 WiKi </a>をご覧ください。</p>
+</div>
+
+<p>Emscripten を利用することで以下のことが可能となります。</p>
+
+<ul>
+ <li>C や C++ のコードを JavaScript へコンパイルできます</li>
+ <li>LLVM バイトコードに出力された他の言語のコードを、JavaScript へコンパイルできます。</li>
+ <li> C/C++ で記述された他の言語の処理系を JavaScript へ変換することで、その言語のコードを間接的に実行できます。既に Python や Lua の処理系が変換されています。</li>
+</ul>
+
+<p>Emscripten を利用することで、ネイティブコードを即座に Web 向けにできます。いくつもの独立した実装をもつ標準化されたプラットフォームを利用することで、PC から iPad まで様々な環境で動作させられます。</p>
+
+<p>つまり Emscripten を利用することで、手動で JavaScript への移植をする必要はなくなります。また JavaScript を学ぶ必要もなくなります。また既存のネイティブユーティリティやライブラリを利用できるため、 Web 開発者にとっても有益です。</p>
+
+<p>実際にポータブルな C/C++ コードベースは Emscripten を用いて JavaScript へコンパイル可能です。その範囲は、グラフィックスや音声の再生、ファイルの読み込みと処理を必要とするハイパフォーマンスなゲームから、Qt のようなアプリケーションフレームワークまでに及びます。</p>
+
+<p>Emscripten は高速なコードを生成します。標準の出力フォーマットは、高度な最適化を可能とする <a href="/docs/Games/Tools/asm.js">asm.js</a> となっています。</p>
+
+<div class="note">
+<p><strong>付記</strong>:興味をお持ちの方は <a href="http://kripken.github.io/emscripten-site/docs/introducing_emscripten/about_emscripten.html">他の Emscripten に関する記事を読み、デモをご覧ください</a>。その後、<a href="http://kripken.github.io/emscripten-site/docs/getting_started/index.html">利用をはじめる</a> と良いでしょう。</p>
+</div>
+
+<h2 id="MDN_上の他の記事">MDN 上の他の記事</h2>
+
+<ul>
+ <li>ゲーム開発において Emscripten はよく利用されています。 <a href="/ja/docs/Games">Games zone</a> には、ゲーム開発に関する記事がまとまっています。</li>
+ <li> <a href="/ja/docs/Mozilla/Projects/Emscripten/Techniques">Emscripten の技法</a>には、Emscripten WiKi にはない、Emscripten に関する有用なアイディアがまとまっています。</li>
+</ul>
diff --git a/files/ja/mozilla/projects/emscripten/techniques/index.html b/files/ja/mozilla/projects/emscripten/techniques/index.html
new file mode 100644
index 0000000000..2690643fcf
--- /dev/null
+++ b/files/ja/mozilla/projects/emscripten/techniques/index.html
@@ -0,0 +1,15 @@
+---
+title: Emscripten techniques
+slug: Mozilla/Projects/Emscripten/Techniques
+translation_of: Mozilla/Projects/Emscripten/Techniques
+---
+<div class="summary">
+<p>このページには Emscripten に関連する特定の技術情報があります。</p>
+</div>
+
+<dl>
+ <dt><a href="/ja/docs/Mozilla/Projects/Emscripten/Techniques/Out_of_memory_error_reports">out-of-memory 問題のデバッグ</a></dt>
+ <dd>
+ <p>Emscripten 使用中に遭遇するよくあるバグは、大きなサイズのゲームのロード時間中に発生する out of memory エラー (OOM) です。<a href="/about:memory">about:memory</a> が新しいタブに読み込まれる前に「計測 (Measure)」ボタンをクリックすると、何が起きたのか、スパイクを起こしていたメモリの使用量がいつ消えるか、診断が困難な一時メモリのスパイクの発生と言った問題を診断することができます。この記事では、このような問題のデバッグ方法を解説しています。</p>
+ </dd>
+</dl>
diff --git a/files/ja/mozilla/projects/index.html b/files/ja/mozilla/projects/index.html
new file mode 100644
index 0000000000..b3ef45a5fd
--- /dev/null
+++ b/files/ja/mozilla/projects/index.html
@@ -0,0 +1,13 @@
+---
+title: プロジェクト
+slug: Mozilla/Projects
+tags:
+ - Mozilla
+ - NeedsContent
+ - Projects
+ - TopicStub
+translation_of: Mozilla/Projects
+---
+<p>このページには、Mozilla の数々のプロジェクト文書へのリンクが表示されます。あるものは Firefox あるいはその他の製品の一部ですが、それ以外のプロジェクトでも使用できます。</p>
+
+<p>{{ LandingPageListSubpages() }}</p>
diff --git a/files/ja/mozilla/projects/l20n/index.html b/files/ja/mozilla/projects/l20n/index.html
new file mode 100644
index 0000000000..6f4ea2fb2f
--- /dev/null
+++ b/files/ja/mozilla/projects/l20n/index.html
@@ -0,0 +1,126 @@
+---
+title: L20n
+slug: Mozilla/Projects/L20n
+translation_of: Mozilla/Projects/L20n
+---
+<div class="note">
+<p><strong>注記</strong>: このドキュメントは草稿段階または古くなっています。現在のドキュメントについては <a href="https://github.com/l20n/l20n.js/tree/master/docs">GitHub 上のドキュメント</a>を読んでください。</p>
+</div>
+
+<div class="summary">自然言語の力をシンプルなコードで表現できる JavaScript ローカライズフレームワーク</div>
+
+<div class="column-container">
+<div class="column-half">
+<h2 id="L20n_の紹介">L20n の紹介</h2>
+
+<p>L20n ソフトウェアのローカライズを革新します。ユーザーは自然言語の完全な表現力に恩恵を受けることができます。L20n はシンプルなことをシンプルなままに、同時に複雑なことも可能にします。</p>
+
+<p>L20n によって、Mozilla は新しい世代の技術を作り、ローカライズする人の手に更なる力を与え用としています。<span class="seoSummary">L20n は、ローカライゼーションとアプリケーションのロジックを分離することで、ローカライズする人に高度で自由な言語表現ができるようにします。</span>L20n を使用すれば、Web アプリケーションを、言語や文化だけでなく、文脈データ、ユーザーのジェンダー、スクリーンの大きさなどにも対応できるようになります。<strong> </strong></p>
+</div>
+
+<div class="column-half">
+<h2 id="L20n_の一例">L20n の一例</h2>
+
+<p>英語の文字列を提供する、シンプルで直感的な例を示します。</p>
+
+<pre class="brush: html notranslate">&lt;brandName "Firefox"&gt;
+&lt;about "About \{{ brandName }}"&gt;</pre>
+
+<p>次は、同じ文字列をスロベニア語で提供した例です。</p>
+
+<pre class="brush: html notranslate">&lt;brandName {
+ nominative: "Firefox",
+ genitive: "Firefoxa",
+ dative: "Firefoxu",
+ accusative: "Firefox",
+ locative: "Firefoxu",
+ instrumental: "Firefoxom"
+}&gt;
+&lt;about "O \{{ brandName.locative }}"&gt;</pre>
+</div>
+</div>
+
+
+
+<div class="column-container">
+<div class="column-third">
+<h2 class="Documentation" id="開発者向け">開発者向け</h2>
+
+<p><strong>Documentation for developers wanting to implement localization functionality on their web apps using L20n.</strong></p>
+
+<dl>
+ <dt>Internationalization for your web app</dt>
+ <dd>L20n インフラストラクチャの使用を検討している開発者向けのはじめに読む説明書。</dd>
+ <dt><a href="/en-US/docs/L20n/HTML_Bindings">L20n's HTML bindings</a></dt>
+ <dd>HTML コードに L20n を実装するためのチュートリアル。</dd>
+ <dt><a href="/en-US/docs/L20n/Javascript_API">L20n JavaScript API</a></dt>
+ <dd>l20n.js の API 。</dd>
+ <dt>L20n syntax cheatsheet for developers</dt>
+ <dd>A simple cheatsheet to help developers as they add L20n to their localization infrastructure.</dd>
+</dl>
+</div>
+
+<div class="column-third">
+<h2 class="Documentation" id="ローカライズする人向け">ローカライズする人向け</h2>
+
+<p><strong>Documentation for Localizers creating localized content for a project that uses L20n.</strong></p>
+
+<dl>
+ <dt><a href="http://l20n.org/learn/">Learn the L20n syntax</a></dt>
+ <dd>How to naturally localize applications using L20n. Complete with use cases and examples of L20n in action.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/L20n/Localization_Use_Cases">Localization use-cases</a></dt>
+ <dd>How to naturally localize applications using L20n. Complete with use cases and examples of L20n in action.</dd>
+ <dt>L20n and Translation Memory eXchange (TMX)</dt>
+ <dd>How L20n impacts the Translation Memory eXchange standard for translation memory data.</dd>
+ <dt>L20n syntax cheatsheet for localizers</dt>
+ <dd>A simple cheatsheet to help localizers as they localize projects with L20n.</dd>
+</dl>
+</div>
+
+<div class="column-third">
+<h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">追加リソース</h2>
+
+<p><strong>L20n に関わる開発者とローカライズする人向けの追加リソースです。</strong></p>
+
+<dl>
+ <dt><a href="http://www.l20n.org" title="http://www.l20n.org">L20n.org</a></dt>
+ <dd>L20n live をブラウザ上で試すことができます。</dd>
+ <dt><a href="http://l20n.github.io/tinker/" title="http://l20n.github.io/tinker/">L20n Tinker</a></dt>
+ <dd>自分が書いた L20n コードを L20n Tinker でテストできます。</dd>
+ <dt><a href="https://github.com/l20n" title="https://github.com/l20n/l20n.js">GitHub</a></dt>
+ <dd>L20n インフラと生きたデザイン仕様のメインコードが置かれている場所です。</dd>
+ <dt><a href="https://wiki.mozilla.org/L20n" title="https://wiki.mozilla.org/L20n">Wiki ページ</a></dt>
+ <dd>L20n の開発プロジェクトの情報があります。</dd>
+</dl>
+</div>
+</div>
+
+<h2 id="Subnav">Subnav</h2>
+
+<ol>
+ <li><a href="#" title="Documentation for developers wanting to implement localization functionality on their web apps using L20n">For Developers</a>
+
+ <ol>
+ <li><a href="#" title="First read for developers looking to use the L20n infrastructure">Internationalization for your web app</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/L20n/HTML_Bindings" title="Tutorial on implementing L20n in your HTML code">L20n's HTML bindings</a></li>
+ <li><a href="#" title="A complete description of the use, function, and role of L20n's .lol format.">.lol file format</a></li>
+ <li><a href="#" title="A simple cheatsheet to help developers as they add L20n to their localization infrastructure.">L20n syntax cheatsheet for developers</a></li>
+ </ol>
+ </li>
+ <li><a href="#" title="Documentation for Localizers creating localized content for a project that uses L20n.">For Localizers</a>
+ <ol>
+ <li><a href="#" title="How to naturally localize applications using L20n. Complete with use cases and examples of L20n in action.">Learn the L20n syntax</a></li>
+ <li><a href="/en-US/docs/L20n/Localization_Use_Cases">Localization use cases</a></li>
+ <li><a href="#" title="How L20n impacts the Translation Memory eXchange standard for translation memory data.">L20n and Translation Memory eXchange (TMX)</a></li>
+ <li><a href="#" title="A simple cheatsheet to help localizers as they localize projects with L20n.">L20n syntax cheatsheet for localizers</a></li>
+ </ol>
+ </li>
+ <li><a href="#" title="Some additional resources for developers and localizers involved with L20n.">Additional resources</a>
+ <ol>
+ <li><a href="http://www.l20n.org" title="You can try L20n live in your browser on the project page">L20n.org</a></li>
+ <li><a href="http://l20n.github.io/tinker/" title="Test out your own L20n code in L20n Tinker">L20n Tinker</a></li>
+ <li><a href="https://github.com/l20n/l20n.js" title="Where the main code for the L20n infrastructure and language lives">L20n GitHub repo</a></li>
+ <li><a href="https://wiki.mozilla.org/L20n" title="Info about the project to develop L20n">Mozilla Wiki</a></li>
+ </ol>
+ </li>
+</ol>
diff --git a/files/ja/mozilla/projects/mochitest/index.html b/files/ja/mozilla/projects/mochitest/index.html
new file mode 100644
index 0000000000..e649f3c059
--- /dev/null
+++ b/files/ja/mozilla/projects/mochitest/index.html
@@ -0,0 +1,220 @@
+---
+title: Mochitest
+slug: Mozilla/Projects/Mochitest
+tags:
+ - Automated testing
+ - Developing Mozilla
+translation_of: Mozilla/Projects/Mochitest
+---
+<p>Mochitestは、<a class="external" href="http://mochikit.com/">MochiKit</a> JavaScriptライブラリに基づいて構築された<a class="internal" href="/ja/docs/Mozilla_automated_testing" title="Mozilla automated testing">自動テストフレームワーク</a>です。これはMozillaによって利用されている、後退バグの自動テストフレームワークの一つです。テストはテストハーネスに対して、JavaScriptの関数を用いて成功あるいは失敗の旨を報告します。</p>
+<p>Mochitestのユニークな特長は、Webページの形で書かれたテストを、完全なブラウザ環境の中でChrome(に昇格した)特権付きで実行できるという点です。これは、他のフレームワークでできることよりも非常に多くの事をテストの中のJavaScriptでできるようにします。通常のスクリプトが可能な事(DOM操作など)に加えて、テストのスクリプトはXPCOMコンポーネントやサービス、そしてブラウザそれ自体にすらもアクセスする事ができます。これによって、例えば、入力が意図されたとおりの結果をもたらすかどうかを確認するために、ブラウザのユーザーインターフェースに対してユーザによる入力をシミュレートして渡すなどのことができます。</p>
+<p>Mochitestにおける、テストの成否を通知するためのJavaScript関数の呼び出し方は、いくつかの種類のテストに対しては不向きです。(Chrome特権付きの)JavaScriptによってテストできるような内容だけが、このフレームワークを使ってテストできます。創造性を発揮する事によって、あなたが最初に考えているよりもずっとたくさんの事ができますが、しかし、例えばスクリプトではないC++のコンポーネントを直接テストするようなMocihkitテストを書く事は不可能です(それを行うには<a class="internal" href="/ja/docs/Compiled-code_automated_tests" title="Compiled-code automated tests">コンパイル済みコードのテスト</a>を使ってください)。</p>
+<h3 id="Running_tests" name="Running_tests">テストを実行する</h3>
+<p>MozillaのビルドマシンはMochitestをビルドの過程の一つとして実行します。そのため、誰かがソースコードにコミットした変更が何かを壊していれば、それを極めて迅速に知る事ができます。しかし依然として、あらゆる新しい危険性のあるコードをコミットする前には、あなた自身の手でMochitestを走らせておくべきです。あなたも、避けられるなら、ツリーを壊して他のみんなの時間を無駄にさせる元凶になどなりたくないでしょう? :-)</p>
+<h4 id="Running_the_whole_test_suite" name="Running_the_whole_test_suite">テストスイート全体を実行する</h4>
+<p>Mochitestを実行するには、まずあなたが行った変更を含めて<a href="/ja/docs/Developer_Guide/Build_Instructions" title="Build_Documentation">Mozillaをビルド</a>します。次に、以下のようにします:</p>
+<ul>
+ <li>1.9.1およびそれ以降(bug 417516が修正されて以降)では、トップレベルのディレクトリで以下のコマンドを実行してください:
+ <ul>
+ <li><code>make -C $(OBJDIR) mochitest-plain</code></li>
+ </ul>
+ </li>
+ <li>それより古いブランチでテストを行う場合は、Mochitestの<code>runtests.py</code>スクリプトをオプション指定無しでコマンドラインから実行してください:
+ <ul>
+ <li><code>cd $(OBJDIR)/_tests/testing/mochitest<br>
+ python runtests.py</code></li>
+ </ul>
+ </li>
+</ul>
+<p><img alt="Image:Mochitest.png" class="internal" src="/@api/deki/files/269/=Mochitest.png"></p>
+<p><strong>注意:</strong> テストを実行している間は、ブラウザウィンドウがフォーカスされた状態を保つべきです。そうでないと、いくつかのテストが失敗する事があります(例えば{{ Bug(330705) }}のテストがそうです)。Linuxユーザは、ダミーのXサーバを使う事でその状態を保存する事ができます(後述の<a href="#Diverting_X_output">Xの出力を迂回させる手順</a>を参照してください)。</p>
+<h4 id="Running_select_tests" name="Running_select_tests">テストを選択して実行する</h4>
+<p>テストを一つだけ実行する場合(あなたが書いたばかりの新しいテストなど)や、Mochitestスイート全体のうち一部分だけを実行する場合は、runtests.pyの<code>--test-pathオプションを使って、実行したいテストまたはサブディレクトリを指定してください。例えば、Mozillaのソースツリーの</code>{{ Source("content/base/test/test_CrossSiteXHR.html", "test_CrossSiteXHR.html") }}のテストだけを実行したい場合は、以下のようなコマンドを使う事になります:</p>
+<pre><code>TEST_PATH=content/base/test/test_CrossSiteXHR.html make -C $(OBJDIR) mochitest-plain</code>
+</pre>
+<p>あるいは、mochitest-plain targetがサポーとされていないブランチでは以下のようにします:</p>
+<pre>python runtests.py --test-path=content/base/test/test_CrossSiteXHR.html</pre>
+<p>{{ Source("content/svg/") }}の中にあるすべてのテストを実行する場合は、以下のコマンドを使います:</p>
+<pre class="eval">TEST_PATH=content/svg/ <code>make -C $(OBJDIR) mochitest-plain</code>
+</pre>
+<p><code>--test-path</code>によって指定されるパスは、Mozillaのソースツリー内のテストまたはディレクトリへの物である事に注意してください。パスがディレクトリの場合、そのディレクトリおよびすべてのサブディレクトリ内のテストが読み込まれます。</p>
+<p>{{ h3_gecko_minversion("Gecko 2.0 およびそれ以降で特定のテストを実行する", "2.0") }}</p>
+<p>Gecko 2.0 {{ geckoRelease("2.0") }} から、mochitest-1 から mochitest-5 までを make コマンドで簡単に実行できるようになりました。例:</p>
+<pre>make mochitest-1
+</pre>
+<p>これによって、すべてのテストスイートを実行したり、トライサーバの buildbot のコードを調べて特定のテストだけを実行するための書き方を調べる代わりに、buildbot の挙動を真似る事ができます。</p>
+<h4 id="個々のテストのデバッグ">個々のテストのデバッグ</h4>
+<p>ある1つのテストについてデバッグする必要が生じた場合に、そのテストだけを実行するために、Firefox にデバッガをアタッチし、デバッガがアタッチされた状態でテストを含むページをリロードするのにも、前述の方法が利用できます。もし問題が起こる前にデバッガをアタッチする事が難しい場合には(例えば、テストが読み込まれた時にブラウザがクラッシュするような場合)、以下のようにしてテストスイート全体をまず最初に実行できます:</p>
+<pre>python $OBJDIR/_tests/testing/mochitest/runtests.py
+</pre>
+<p>この時、デバッガをアタッチして、新しいタブを開き、"<a class="external" href="http://mochi.test:8888/tests/PATH/TO/MY/TEST" rel="freelink">http://mochi.test:8888/tests/PATH/TO/MY/TEST</a>" のようにテストを手動で指定することができます。例: "<a class="external" href="http://mochi.test:8888/tests/modules/plugin/test/test_pluginstream.html" rel="freelink">http://mochi.test:8888/tests/modules...ginstream.html</a>"</p>
+<p>あるいは、あなたはmochitestの実行時にデバッガを指定するよう試みるかもしれません:</p>
+<pre>TEST_PATH='...' EXTRA_TEST_ARGS='--debugger=gdb' make mochitest-plain
+</pre>
+<p>引数の --debuggerArgs と --debuggerInteractive も参照してください。</p>
+<h4 id="Finding_errors" name="Finding_errors">エラーを探す</h4>
+<p>予期されない失敗を探すには、「TEST-UNEXPECTED-FAIL」という文字列を検索してください。最終的なテストの実行結果の要約を見るには「SimpleTest FINISHED」を検索してください。連結されたログではMochitestの出力は最後にあるとは限らないので、すべてのTinderboxのログをまとめて見る時に、後者は特に便利です。</p>
+<h4 id="Logging_results" name="Logging_results">結果のロギング</h4>
+<p>テストの実行による出力は、コンソールおよび(または)ファイルに送る事ができます(デフォルトでは、結果はブラウザ上にのみ表示されます)。出力の詳細さはいくつかのレベルで指定できます。DEBUG、INFO、WARNING、ERROR、FATALの各レベルがあり、DEBUGでは出力は最も詳細(すべて出力)になり、FATALでは出力は最も少なく(テストを中断させるようなイベントが発生した時だけメッセージを出力)なります。</p>
+<p>ファイルにログを保存するには --log-file=<var>ファイルのパス</var> オプションを使います。デフォルトではファイルへのログ出力レベルはINFOですが、--file-level=<var>レベル</var> オプションを使う事でレベルを変更できます。</p>
+<p>コンソールへのログ出力を有効にするには、--console-level=<var>レベル</var> オプションを使います。</p>
+<p>例えば、テスト実行時の出力を <code>~/mochitest.log</code> というファイルにDEBUGレベルの詳細さで保存したい場合は以下のようになります:</p>
+<pre class="eval">python runtests.py --log-file=~/mochitest.log --file-level=DEBUG
+</pre>
+<h4 id="Diverting_X_output" name="Diverting_X_output">Xの出力を迂回させる</h4>
+<p>テスト実行中のコンピュータでユーザが行うあらゆる他の操作による影響を防ぐために、テストは必ずフォーカスされたウィンドウの中で実行されなくてはなりません。Linuxユーザはスイートに指示を与える事で、不可視の仮想デスクトップを使うようにすることができます。もし<a class="external" href="http://en.wikipedia.org/wiki/Xvfb">Xvfb</a>がインストールされている、またはインストールできる場合は、以下のコマンドは現在のセッションをブロックすることなくテストを実行します。:</p>
+<pre class="eval">nice xvfb-run python _tests/testing/mochitest/runtests.py --log-file=./mochitest-plain.log --file-level=DEBUG --autorun --close-when-done --console-level=DEBUG
+</pre>
+<p>他に可能な設定については、{{ Bug(434365) }}で議論されています。</p>
+<h4 id="Other_.27runtests.27_options" name="Other_.27runtests.27_options"><code>runtests.py</code>のその他のオプション</h4>
+<p><code>runtests.py</code>スクリプトは他にもいくつかのオプションを解釈します。それらの一覧を見るには --help オプションを使ってください。ちなみに、<a href="/ja/docs/Chrome_tests" title="Chrome_tests">--chrome</a>、<a href="/ja/docs/Browser_chrome_tests" title="Browser_chrome_tests">--browser-chrome</a>、<a href="/ja/docs/Accessibility" title="Accessibility">--a11y</a>の各オプションについては個別のドキュメントがあります。</p>
+<h3 id="Writing_tests" name="Writing_tests">テストを書く</h3>
+<p>Mochitest用のテストファイルは、いくつかの条件についてテストを行うJavaScriptを含んだシンプルなHTML、XHTML、またはXULのファイルです。</p>
+<p>Mozillaをビルドせずに大部分のテストを実行するために、<a class="external" href="http://ted.mielczarek.org/code/mozilla/mochitest-maker/">Mochitest maker</a>を利用できます。</p>
+<h4 id="Try_to_avoid_Mochitest" name="Try_to_avoid_Mochitest">Mochitestを使わない事を試みる</h4>
+<p>はい、これは冗談ではなく本当にです。様々な理由のために、Mochitestは過剰な物となっています。一般的な用途では、より軽量なテストフレームワーク使うように常に試みる事をお勧めします。例えば、ある一つのXPCOMコンポーネントをテストしたいだけであれば、<a href="/ja/docs/Writing_xpcshell-based_unit_tests" title="Writing_xpcshell-based_unit_tests">xpcshell</a>を使うべきです。また、Mochitestにもできない事や、それをするようには設計されていないという事がいくつかあります。こちらの例は視覚的な出力についてのテストで、その場合は<a href="/ja/docs/Creating_reftest-based_unit_tests" title="Creating_reftest-based_unit_tests">reftest</a>フレームワークを使うのがお勧めです。他の異なる種類の自動テストフレームワークについての情報は、<a href="/ja/docs/Mozilla_automated_testing" title="Mozilla_automated_testing">Mozillaの自動テスト</a>を参照してください。</p>
+<h4 id="Test_templates" name="Test_templates">テストのテンプレート</h4>
+<p>定型的な内容を毎回入力する手間を省くために、{{ Source("testing/mochitest/gen_template.pl", "gen_template.pl") }} Perlスクリプトがテストのテンプレートの生成に利用できます。このスクリプトは2つの省略可能な引数を取ります:</p>
+<ol>
+ <li>-b : バグの番号。</li>
+ <li>-type : 連符レートの種類。html、xhtml、xul のいずれかを選択する。デフォルトはhtml。</li>
+</ol>
+<p>利用例:</p>
+<pre class="eval">cd mozilla/testing/mochitest/
+perl gen_template.pl -b=123456 &gt; path/to/test_bug123456.html
+perl gen_template.pl -b=123456 --type=xul &gt; path/to/test_bug123456.xul
+</pre>
+<p>Mochitest ではすべてのテストのファイル名は「test_」で始まっている必要がある事に注意してください。テストをツリーのどの位置に置けばよいのかを決める手助けとしては、後述の内容を参照してください。</p>
+<p>Mochitest の定型的なコードに加えて、このスクリプトは 'content' という id を持った要素と 'display' という id を持った要素も生成するでしょう。あなたが書くテストでは、これらを他のあなたが追加する要素と同様に操作して構いません。</p>
+<h4 id="Test_functions" name="Test_functions">テスト関数</h4>
+<p>個々のテストは、Mochitestに対してテストが成功したのか失敗したのかを通知するために実行されるいくつかのJavaScriptを含んでいる必要があります。 {{ Source("testing/mochitest/tests/SimpleTest/SimpleTest.js", "SimpleTest.js") }} は、テストにおいてMochitestにテストの成否を知らせるための様々な関数を含んでいます。これらには以下の物が含まれます:</p>
+<ul>
+ <li><code>ok(<var>trueになるべき文</var>, "<var>エラーメッセージ</var>")</code> -- 値が真である事をテストする。</li>
+ <li><code>is(<var>実際の値</var>, <var>期待される値</var>, "<var>エラーメッセージ</var>")</code> -- 二つの値を比較する(===ではなく==を使用)。</li>
+ <li><code>isnot(<var>実際の値</var>, <var>期待されない値</var>, "<var>エラーメッセージ</var>")</code> -- is()の逆。</li>
+</ul>
+<p>これらの関数の使い方の例は、 {{ Source("testing/mochitest/README.txt", "README") }} を参照してください。</p>
+<p>もし、現在のところは失敗するというテストを含めたい場合、単にその部分をコメントアウトしないでください! その代わりに、 相当する「todo」を使ってください。これによってTinderboxは、不意にテストが成功するようになった時に、(いつの時点でテストが成功するようになったのかを)知らせる事ができます。:</p>
+<ul>
+ <li><code>todo(<var>今はfalseになるが本当はtrueになるべき文</var>, "<var>エラーメッセージ</var>"</code><code>)</code></li>
+ <li><code>todo_is(<var>実際の値</var>, <var>期待される値</var>, "<var>エラーメッセージ</var>")</code></li>
+ <li><code>todo_isnot(<var>実際の値</var>, <var>期待されない値</var>, "<var>エラーメッセージ</var>")</code></li>
+</ul>
+<h4 id="Helper_functions" name="Helper_functions">ヘルパー関数</h4>
+<p>現時点では、すべてのMochikitの機能が利用できます(これは{{ Bug(367393) }}によって変わるでしょう)。{{ Bug(367569) }}で、ヘルパー関数として<code>sendChar</code>、<code>sendKey</code>、<code>sendString</code>が追加されました。これらは{{ Source("testing/mochitest/tests/SimpleTest/EventUtils.js") }}において利用できます。</p>
+<h3 id="Adding_tests_to_the_tree" name="Adding_tests_to_the_tree">テストをツリーに追加する</h3>
+<p>新しいテストを書いたら、すぐにそれをMozillaのソースツリーに追加して、ビルドシステムにその事を通知する必要があります。これによって、Mozilla tinderboxはそれを自動的に実行するようになります。</p>
+<h4 id="Choosing_a_location" name="Choosing_a_location">場所の選択</h4>
+<p>新しいMochitestのテストはテストされるコードの近くのどこか、できれば同じモジュールに置かれるべきで、これにより、テストケースが何のための物なのかが明確になります。例えば、あるHTMLの機能のテストを作成した場合、おそらく、テストを{{ Source("content/html/content/test") }}または{{ Source("content/html/document/test") }}に置きたいと思うでしょう。もしも、テストしようとしているコードの近くにテスト用のディレクトリがなければ、{{ Bug(368531) }}のパッチで実際にそうしているように、新しいテスト用のディレクトリを作成する事ができます。</p>
+<h4 id="Makefile_changes" name="Makefile_changes">Makefileの変更</h4>
+<p>あなたが書いた新しいテストの事をビルドシステムに通知するために、あなたが書いたテストファイルの名前をそのテストディレクトリの<code>Makefile.in</code>の中の<code>_TEST_FILES</code>に追加する必要があります。</p>
+<p>もしもあなたが書いたテストが複数のファイルに渡っているなら、その場合はメインのファイルの名前を「test_...」としてください。これは実行するテストのリストに登場する名前となります。他のファイルはそれ以外の名前になっているべきですが、<code>Makefile.in</code>の<code>_TEST_FILES</code>に追加されなければならないという点は変わりません。</p>
+<p>Chromeのテストを追加する場合、テストを <code>_tests/testing/mochitest/<strong>tests</strong></code> ではなく <code>_tests/testing/mochitest/<strong>chrome</strong></code> にインストールするようMakefileを変更する事を忘れないでください。</p>
+<h4 id="Building_and_running_new_tests" name="Building_and_running_new_tests">ビルドと新しいテストの実行</h4>
+<p>新しいテストをコミットする前に、Makefile.inの変更内容が正しく、また、あなたが書いたテストが期待通りに成功する事を確認してください。あなたが書いたテストを確認するには、まず、以下のコマンドでそのテストをMochitestのディレクトリ(ソースツリーのテストファイルの位置と同じ場所)に取り出してください:</p>
+<pre class="eval">make
+</pre>
+<p>次に、Mochitestを前述の通りに開きますが、この時、「Run Tests」リンクをクリックする代わりに、あなたが書いたテストを一覧から探してそれをクリックしてください。</p>
+<h3 id="FAQ" name="FAQ">SSLと<code>https</code>を有効にしたテスト</h3>
+<p>Mochitestのテストは、正常な動作のために <code><span class="nowiki">http://localhost:8888</span></code> で実行されなくてはなりません。しかし、テストの中にはオリジンが異なる場合のための機能のテストとして、他のプロトコル、ホスト、ポートを使う必要があるものもあるでしょう。Mochitestのテストハーネスは、元のサーバのすべてのコンテンツをproxy autoconfigとSSLトンネリングを用いて他の様々なサーバに<em>同期(ミラー)する</em>ことで、この問題を解決します。テストを実行したいすべてのスキーム、ホスト、ポートのリスト(それらはすべて <code><span class="nowiki">http://localhost:8888</span></code> と完全に同じコンテンツを返す必要があります)は{{ Source("build/pgo/server-locations.txt") }}で指定します。ただし、そこに記述されたオリジンのすべてが完全に同じである必要はありません。テスト用として特定のSSL証明書を指定された物や、そのサーバ上のページで特権の昇格の要求を許可する物も設定できます。完全な詳細説明については、ファイルの内容を参照してください。</p>
+<h4 id="動作させる方法">動作させる方法</h4>
+<p><br>
+ Mochitestのハーネスは、要求されたURLをサーバにマッチさせるためにブラウザに<a class="external" href="http://en.wikipedia.org/wiki/Proxy_auto-config" title="http://en.wikipedia.org/wiki/Proxy_auto-config">proxy autoconfig</a> を使わせる設定を含んでいます。<code>network.proxy.autoconfig_url</code> の設定は、要求されたURLがマップされているホストを認識するための<code>FindProxyForURL</code>という JavaScript 関数をエンコードしたdata: URLがセットされます。SSLのサイトがミラーされる場合、その関数はリクエストを、<a class="external" href="http://www.ietf.org/rfc/rfc2817.txt" title="http://www.ietf.org/rfc/rfc2817.txt">RFC 2817</a>で定められた<code>CONNECT</code>メソッドによる説明に応じて、トラフィックを実際のサーバへ透過的に転送するSSLトンネルにマップします。このようにして、<code><a class="external" href="http://127.0.0.1:8888" rel="freelink">http://127.0.0.1:8888</a></code>に立てられた単一のサーバは異なる場所を示す何十ものサーバをエミュレートします。</p>
+<p>MochitestのSSL関連の機能や、署名を変更する方法、新しいhttpsのサーバを追加する手順などのさらに詳細な説明については、<a class="internal" href="/ja/docs/Modifying_Mochitest_SSL_behavior" title="Modifying Mochitest SSL behavior">MochitestのSSLの動作の変更</a>を参照してください。</p>
+<h3 id="stacks" name="stacks">スタックトレースの取得</h3>
+<p>Mochitest がクラッシュした時のスタックトレースを取得する方法は以下の通りです:</p>
+<ol>
+ <li><code><a class="external" href="http://hg.mozilla.org/build/tools/file/b680aba8e49a/breakpad/" rel="freelink">http://hg.mozilla.org/build/tools/fi...e49a/breakpad/</a></code> からあなたのプラットフォーム用の <code>minidump_stackwalk</code> のバイナリを取得します。</li>
+ <li>環境変数 <code>MINIDUMP_STACKWALK</code> にそのバイナリのパスを指定します。</li>
+</ol>
+<p>もし結果のスタックトレースが行番号を含んでいない場合には、必須のシンボルファイルを生成するために <code>make buildsymbols</code> を実行して下さい。詳しくは <a href="/ja/docs/Building_Firefox_with_Debug_Symbols" title="Building Firefox with Debug Symbols">Firefox をデバッグ用のシンボル付きでビルドする</a>を参照して下さい。</p>
+<h3 id="FAQ" name="FAQ">FAQ</h3>
+<h4 id="What_if_my_tests_aren.27t_done_when_onload_fires.3F" name="What_if_my_tests_aren.27t_done_when_onload_fires.3F">onloadイベントの時に実行されるようなテストが動かない時はどうすればいいですか?</h4>
+<p>onloadイベントが発行される前に <code>SimpleTest.waitForExplicitFinish()</code> を呼んでください。その場合は、テストを完了したら <code>SimpleTest.finish()</code> を呼んでください。</p>
+<h4 id="What_if_I_need_to_change_a_preference_to_run_my_test.3F" name="What_if_I_need_to_change_a_preference_to_run_my_test.3F">テストの中で設定(Preference)を変える必要がある時はどうすればいいですか?</h4>
+<pre class="eval">netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+var prefService = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefService);
+var domBranch = prefService.getBranch("dom.");
+var oldVal = domBranch.getIntPref("max_script_run_time");
+domBranch.setIntPref("max_script_run_time", 0);
+
+// 必要な処理(テストの内容)
+
+domBranch.setIntPref("max_script_run_time", oldVal);
+</pre>
+<p>あるテストを実行している間だけ設定を変更する必要がある場合には、make target <code>mochitest-plain</code> を実行する時に環境変数 <code>EXTRA_TEST_ARGS</code> を設定して下さい。</p>
+<pre>EXTRA_TEST_ARGS='--setpref=javascript.options.jit.chrome=false'
+</pre>
+<p>文字列型の設定を変更する必要がある場合は、バックスラッシュでエスケープしたダブルクォートで文字列を括ります:</p>
+<pre>EXTRA_TEST_ARGS='--setpref=webgl.osmesa=\"libOSMesa.so.6\"'
+</pre>
+<h4 id="Can_tests_be_run_under_a_chrome_URL.3F" name="Can_tests_be_run_under_a_chrome_URL.3F">テストはChrome URLの中でも実行できますか?</h4>
+<p>はい。 <code>python runtests.py --chrome</code> を使ってください。ただしXPCOMをテストするための最初の選択肢としては<a href="/ja/docs/Writing_xpcshell-based_unit_tests" title="Writing_xpcshell-based_unit_tests">xpcshellテストハーネス</a>を使うべきであることを心に留めておいてください。Mochitestが必要になるのは、イベントやブラウザの機能、ネットワーク関係の機能がテストに必要な場合だけです。</p>
+<h4 id="How_can_I_get_around_the_error_.22Permission_denied_to_get_property_XPCComponents.classes.22.3F" name="How_can_I_get_around_the_error_.22Permission_denied_to_get_property_XPCComponents.classes.22.3F">どうすれば「Permission denied to get property XPCComponents.classes」エラーを回避できますか?</h4>
+<p>以下の行をあなたの書いたテストファイル(およびそれぞれのイベントハンドラ)に書き加えてください。すべてのXPCOMが利用できるようになるでしょう。</p>
+<pre>netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');</pre>
+<p>この方法は明らかに不便です。これこそが、テスト実行用にテストをChromeのディレクトリにコピーするのに必要なハックを行おうと私たちが作業している理由です。</p>
+<h4 id="How_do_I_change_the_HTTP_headers_or_status_sent_with_a_file_used_in_a_Mochitest.3F" name="How_do_I_change_the_HTTP_headers_or_status_sent_with_a_file_used_in_a_Mochitest.3F">Mochitestで使われるファイルのHTTPヘッダやステータスを変えるにはどうすればよいですか?</h4>
+<p>テキストファイルを作成して、ヘッダを変えたいと思っているファイルの隣に置いてください。テキストファイルの名前はヘッダを変えようとしているファイルの名前の末尾に <code>^headers^</code> を付けた物にします。例えば <code>foo.jpg</code> というファイルがある場合は、テキストファイルの名前は <code>foo.jpg^headers^</code> となります。(ヘッダ指定用のファイルはテストの中で他の目的では使わないでください。HTTPサーバの不可視ファイル機能は、「^」で名前が終わっているすべてのファイルを見えなくするからです。)そして、あなたが設定したいヘッダおよび(もしくは)ステータスをそのファイルの内容として記述してください。例:</p>
+<pre class="eval">HTTP 404 Not Found
+Content-Type: text/html
+Random-Header-of-Doom: 17
+</pre>
+<p>最初の行はそのファイルに関連付けられたHTTPステータスと(任意で)説明文を設定しています。この行は省略可能で、通常のレスポンスステータスと説明文で問題ない場合は記述する必要はありません。他の行は、レスポンスヘッダ中で追加または上書きしたい(後者の最も典型的な例はContent-Typeヘッダでしょう)、そのファイルについて説明する追加のヘッダです。様式はHTTPの仕様でのものと同じですが、HTTPの行末を示す必要は無く、一つのヘッダを複数書く事はできません(同じヘッダを複数回多場合は最後の物だけが有効となります)。 ファイルはUnixのテキストファイルの様式に沿って一つの空行で終わる場合がありますが、それは厳密に必要というわけではありません。</p>
+<h4 id="How_do_I_test_issues_which_only_show_up_when_tests_are_run_across_domains.3F" name="How_do_I_test_issues_which_only_show_up_when_tests_are_run_across_domains.3F">複数のドメインに渡って実行されるテストでのみ発生する事象をテストするにはどうすればよいですか?</h4>
+<p>Mochitestのハーネスはテストを行うために一つのWebサーバだけを起動しますが、proxy autoconfigの働きにより、すべてのテストファイルは異なるドメイン、異なるポートで実行できます。これらのサーバ(権限昇格のための機能に関する2つの例外を除く)で動作しているあらゆるテストは自動的に、UniversalXPConnectなどの特権の取得を要求する事ができるようになります。テストの実行が可能で、<code><span class="nowiki">http://localhost:8888</span></code>と全く同じコンテンツを提供するドメインとポートの完全なリストは、{{ Source("build/pgo/server-locations.txt") }}で指定されます。</p>
+<h4 id="How_do_I_write_tests_that_check_header_values.2C_method_types.2C_etc._of_HTTP_requests.3F" name="How_do_I_write_tests_that_check_header_values.2C_method_types.2C_etc._of_HTTP_requests.3F">HTTPリクエストのヘッダの値、メソッドの種類などを確認するテストはどのように書けばよいですか?</h4>
+<p>その種のテストを書くには、それ用のSJS(server-side JavaScript)を書くだけでよいです。SJSは <code>sjs</code> という拡張子を持つ単純なJavaScriptファイルで、サンドボックス内に読み込まれます。スクリプト内でグローバルな名前空間において <code>handleRequest</code> という名前で定義された関数は、リクエストとレスポンスのオブジェクトを伴って実行され、そのスクリプトはリクエストの情報に基づいてレスポンスを生成します。</p>
+<p>以下は単純なSJSの例です:</p>
+<pre class="eval">function handleRequest(request, response)
+{
+ // avoid confusing cache behaviors
+ response.setHeader("Cache-Control", "no-cache", false);
+
+ response.setHeader("Content-Type", "text/plain", false);
+ response.write("Hello world!");
+}
+</pre>
+<p>引数として渡されるリクエストとレスポンスのオブジェクトが持つ正確なプロパティは、<code>{{ Source("netwerk/test/httpserver/nsIHttpServer.idl", "nsIHttpServer.idl") }}</code>で <code>nsIHttpRequestMetadata</code> と <code>nsIHttpResponse</code> インターフェースとして定義されています。ブラウザはあなたが書いたスクリプトによって生成されたレスポンスを自由にキャッシュする事に気をつけてください。もしSJSが同じURLへの複数のリクエストに対して異なるデータを返したい場合は、   Mochitestの同じセッションで手動で複数回実行された際にテストが意図せず失敗してしまう事を防ぐために、レスポンスに <code>Cache-Control: no-cache</code> ヘッダを加えるとよいでしょう。</p>
+<p>reftestにおけるSJSの簡単な利用例としては、<code>{{ Source("modules/libpr0n/test/reftest/generic/check-header.sjs", "check-header.sjs") }}</code>があります。</p>
+<h4 id="How_do_I_test_issues_which_only_show_up_when_tests_are_run_across_domains.3F" name="How_do_I_test_issues_which_only_show_up_when_tests_are_run_across_domains.3F">異なるサーバサイドスクリプトの間で状態を引き継ぐにはどうすればよいですか?</h4>
+<p>Mochitest のサーバサイドスクリプトは、それぞれの読み込みごとに新たに生成されるサンドボックスの中で実行されます。そのため、ハンドラの中で定義されたいかなる変数も、それぞれの読み込みごとの実行コンテキストを超えて状態を保持し続ける事はありません。状態を保存する手助けとしては、グローバルオブジェクトにおいて定義されている <code>getState(k)</code> および <code>setState(k, v)</code> メソッドを利用します。これらのメソッドはキーと値(どちらも文字列を使用)によるストレージの仕組みをサーバに提供します。(オブジェクトやその他の構造化されたデータを保存するにはJSONを使用してください。)Mochitest における無数のサーバが、プロキシとトンネリングによってそう見せられているだけで実際には単一のサーバであるために、保存された状態はすべてのサーバで常に同じとなることに注意してください。</p>
+<p><code>getState</code> および <code>setState</code> メソッドは、サーバサイドスクリプトが読み込まれた時点のパスでスコープが決まります。<code>/foo/bar/baz</code>, <code>/foo/bar/baz?quux</code>, <code>/foo/bar/baz#fnord</code> のような絶対 URL はすべて同じ状態を共有します(この場合 <code>/foo/bar</code> の状態はそれらとは別に保持されます)。テスト同士の依存性とバグの発生を避けるためにも、可能な限り常に、状態はパスごとに使用するべきです。しかしながら、2つのスクリプトが関連して協調動作することが必要であるなどのレアケースで、そのスクリプトから分岐に応じた挙動を要求するための専用のクエリ文字列を利用できないような場合もあります。<em>このような用途についてのみ</em>、あなたはグローバルオブジェクトで定義されている <code>getSharedState(k, v)</code> および <code>setSharedState(k, v)</code> メソッドを使う事ができます。このサーバ全体で共有される状態へのアクセスについては何も制限はかけられておらず、どのスクリプトからも新しい状態を設定でき、どのスクリプトからもそれを削除できます。衝突を避けるために、あなたは名前空間(意図しない衝突を避けるため、これもテスト用の物を作って下さい)をキーに含める事が望ましいです。例えば、ある HTML5 ビデオのテストで状態を共有する必要がある場合なら、<span style="font-family: monospace;">dom.media.video</span><code>:sharedState</code> のようなキーを使う事になります。</p>
+<p>より強力な状態保存のための機能として、あらゆる <code>nsISupports</code> 形式のオブジェクトを保持することができる <code>getObjectState(k)</code> および <code>setObjectState(k, v)</code> メソッドもあります。これらのメソッドは <code>nsIHttpServer</code> インターフェースにこの形式で存在していますが、SJS レスポンス処理用のサーバで使われるサンドボックスオブジェクトの制限のため、前者のメソッドは SJS リクエストハンドラのグローバル環境においては、<code>getObjectState(k, callback)</code> という形式(<code>callback</code> は、第1引数で示されたキーに対応するオブジェクトを引数として <code>getObjectState</code> の内部で呼ばれるコールバック関数)で存在します。この、値のマッピングのために、値が XPCOM オブジェクトである必要がある必要があることに注意して下さい。<code>QueryInterface</code> メソッドを持たない任意の JavaScript オブジェクトは利用できません。JavaScript のオブジェクトを保持させたい場合には、<code>QueryInterface</code> の実装を持ち、XPConnect でラップされたオブジェクトから実際の JavaScript オブジェクトを取得するための <a class="internal" href="/ja/docs/wrappedJSObject" title="wrappedJSObject">wrappedJSObject</a> プロパティも持つオブジェクトを使って下さい。</p>
+<p>httpd.js によって提供される状態保存の仕組みの詳細については、{{ Source("netwerk/test/httpserver/nsIHttpServer.idl") }} および <code>nsIHttpServer.get(Shared|Object)?State</code> メソッドを参照して下さい。</p>
+<h4 id="非同期にレスポンスを返す_SJS_スクリプトはどのように書けばいいですか?">非同期にレスポンスを返す SJS スクリプトはどのように書けばいいですか?</h4>
+<p>例えば一定の時間待つという風に、リクエストに対するレスポンスを非同期に返したいという場合があるでしょう。これは <code>handleRequest()</code> 関数に渡される <code>response</code> オブジェクトの <code>processAsync()</code> および <code>finish()</code> 関数によって実現できます。</p>
+<p><code>processAsync()</code> は必ず、<code>handleRequest()</code> からリターンする前に呼ばれなくてはなりません。この関数を実行すると、さらに追加のレスポンスを送信するために、request オブジェクトのメソッドを好きな時点で呼ぶ事ができるようになります。必要なレスポンスを送信し終えたら、<code>finish()</code> 関数を呼んでください。例えば、上で説明した <code>setState()</code>/<code>getState()</code> 関数を、request を保存して、後でその内容を参照し、さらに終了するために利用できます。しかしながら、ブラウザはリクエストを異なる順番で行う事があり、そのためあなたが書くコードは時々起こる失敗を避けるよう耐性を高くしなければならないということに気をつけてください。</p>
+<pre class="eval">var timer = null;
+
+function handleRequest(request, response)
+{
+ response.processAsync();
+ response.setHeader("Content-Type", "text/plain", false);
+ response.write("hello...");
+
+ timer = Components.classes["@mozilla.org/timer;1"].createInstance(Components.interfaces.nsITimer);
+ timer.initWithCallback(function()
+ {
+ response.write("world!");
+ response.finish();
+ }, 5 * 1000 /* ミリ秒 */, Components.interfaces.nsITimer.TYPE_ONE_SHOT);
+}
+</pre>
+<p>より詳しい情報については、{{ Source("netwerk/test/httpserver/nsIHttpServer.idl") }} にある <code>processAsync()</code> 関数の説明を参照してください。</p>
+<h4 id="How_do_I_change_the_HTTP_headers_or_status_sent_with_a_file_used_in_a_Mochitest.3F" name="How_do_I_change_the_HTTP_headers_or_status_sent_with_a_file_used_in_a_Mochitest.3F">SJS スクリプトからサーバ上にあるファイルに XPCOM オブジェクトとしてアクセスするにはどうすればよいですか?(Gecko 1.9.3 およびそれ以降の場合)</h4>
+<p>ファイルにアクセスする必要がある場合(例えば、画像データはファイルとして保存しておく方が、SJS スクリプトの中に直接画像を埋め込むよりも扱いが簡単です)、Mochitest で実行されている SJS スクリプトで最初から定義済みの <code>SERVER_ROOT</code> オブジェクトステートを利用して下さい:</p>
+<pre class="eval">function handleRequest(req, res)
+{
+ var file;
+ getObjectState("SERVER_ROOT", function(serverRoot)
+ {
+ file = serverRoot.getFile("tests/content/media/test/320x240.ogv");
+ });
+
+ // この時点で file は指定されたファイルを参照する XPCOM オブジェクトになっています。
+ res.write("file: " + file);
+}
+</pre>
+<p>指定するパスは、httpd.js が取り扱うルートディレクトリからの相対パスとして扱われ、その位置に対応する<code>nsIFile</code> のオブジェクトが返されます。この時は、パスの書き間違いに注意してください。ファイルのオブジェクトはパス文字列を保持しているだけなので、指定したファイルは実際に存在している必要がありません。</p>
diff --git a/files/ja/mozilla/projects/mochitest/specialpowers/index.html b/files/ja/mozilla/projects/mochitest/specialpowers/index.html
new file mode 100644
index 0000000000..c3b6141d06
--- /dev/null
+++ b/files/ja/mozilla/projects/mochitest/specialpowers/index.html
@@ -0,0 +1,471 @@
+---
+title: SpecialPowers
+slug: Mozilla/Projects/Mochitest/SpecialPowers
+tags:
+ - Mochistest
+ - NeedsContent
+ - QA
+ - 'QA:Tools'
+ - Reference
+translation_of: Mozilla/Projects/Mochitest/SpecialPowers
+---
+<p>SpecialPowers は <a href="/en/Mochitest" title="en/Mochitest">Mochitest</a> のテストで利用可能な API 群の 1 つです。Mochitest は通常の Web ページとしてかけるようにする予定です。しかし、セキュリティ的な理由から権限の無い通常の Web ページではテストできないものもあります。そういった場合に SpecialPowers API を使う事で通常の Web ページでは触れることのできない操作をすることができます。</p>
+
+<div class="note">もし Mochitest で幅広い権限を必要とするテストをする場合は、変りに <a href="/en/Chrome_tests" title="en/Chrome tests">Chrome Mochitest</a> を使う方が良いでしょう。</div>
+
+<h2 id="Method_overview">Method overview</h2>
+
+<h3 id="Preference_APIs">Preference APIs</h3>
+
+<table class="standard-table" style="height: 415px; width: 460px;">
+ <tbody>
+ <tr>
+ <td><code>void pushPrefEnv(inPrefs, callback);</code></td>
+ </tr>
+ <tr>
+ <td><code>void popPrefEnv(callback);</code></td>
+ </tr>
+ <tr>
+ <td><code>void flushPrefEnv(callback);</code></td>
+ </tr>
+ <tr>
+ <td><code>bool getBoolPref(aPrefName);</code></td>
+ </tr>
+ <tr>
+ <td><code>int getIntPref(aPrefName);</code></td>
+ </tr>
+ <tr>
+ <td><code>string getCharPref(aPrefName);</code></td>
+ </tr>
+ <tr>
+ <td><code>any getComplexValue(aPrefName);</code></td>
+ </tr>
+ <tr>
+ <td><code>void setBoolPref(aPrefName, aValue);</code></td>
+ </tr>
+ <tr>
+ <td><code>void setIntPref(aPrefName, aValue);</code></td>
+ </tr>
+ <tr>
+ <td><code>void setCharPref(aPrefName, aValue);</code></td>
+ </tr>
+ <tr>
+ <td><code>void setComplexValue(aPrefName, aValue);</code></td>
+ </tr>
+ <tr>
+ <td><code>void clearUserPref(aPrefName);</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Permission_APIs">Permission APIs</h3>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void pushPermissions(inPermissions, callback);</code></td>
+ </tr>
+ <tr>
+ <td><code>void popPermissions(callback);</code></td>
+ </tr>
+ <tr>
+ <td><code>void flushPermissions(callback);</code></td>
+ </tr>
+ <tr>
+ <td><code>void addPermission(type, allow, arg);</code></td>
+ </tr>
+ <tr>
+ <td><code>void removePermission(type, arg);</code></td>
+ </tr>
+ <tr>
+ <td><code>bool hasPermission(type, arg);</code></td>
+ </tr>
+ <tr>
+ <td><code>bool testPermission(type, value, arg);</code></td>
+ </tr>
+ <tr>
+ <td><code>void setFullscreenAllowed(document);</code></td>
+ </tr>
+ <tr>
+ <td><code>void removeFullscreenAllowed(document);</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Event_Listener_Observer_APIs">Event Listener / Observer APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Garbage_Collection_APIs">Garbage Collection APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Privilege_Wrapper_APIs">Privilege Wrapper APIs</h3>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code><a href="#wrap">Object wrap(Object);</a></code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="XPCOM_Components_APIs">XPCOM Components APIs</h3>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code><a href="#Cc">Cc</a></code></td>
+ </tr>
+ <tr>
+ <td><code><a href="#Ci">Ci</a></code></td>
+ </tr>
+ <tr>
+ <td><code><a href="#Cr">Cr</a></code></td>
+ </tr>
+ <tr>
+ <td><code><a href="#Cu">Cu</a></code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Log_APIs">Log APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Environment_APIs">Environment APIs</h3>
+
+<table class="standard-table" style="height: 250px; width: 463px;">
+ <tbody>
+ <tr>
+ <td><code>bool isMainProcess();</code></td>
+ </tr>
+ <tr>
+ <td><code>string getMozFullPath(file);</code></td>
+ </tr>
+ <tr>
+ <td><code>bool isWindowPrivate(aWindow);</code></td>
+ </tr>
+ <tr>
+ <td><code>bool isBackButtonEnabled(aWindow);</code></td>
+ </tr>
+ <tr>
+ <td><code>int assertionCount();</code></td>
+ </tr>
+ <tr>
+ <td><code>void removeExpectedCrashDumpFiles(aExpectingProcessCrash);</code></td>
+ </tr>
+ <tr>
+ <td><code>string[] findUnexpectedCrashDumpFiles();</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Focus_Management_APIs">Focus Management APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Mock_APIs">Mock APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Form_History_APIs">Form History APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Snapshot_APIs">Snapshot APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Clipboard_APIs">Clipboard APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Console_APIs">Console APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Layout_APIs">Layout APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Frame_Message_APIs">Frame Message APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Apps_APIs">Apps APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Other_APIs">Other APIs</h3>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>XMLHttpRequest createSystemXHR();</code></td>
+ </tr>
+ <tr>
+ <td><code>void quit();</code></td>
+ </tr>
+ <tr>
+ <td><code>DOMWindowUtils getDOMWindowUtils(window);</code></td>
+ </tr>
+ <tr>
+ <td><code>void executeSoon(aFun, aWindow);</code></td>
+ </tr>
+ <tr>
+ <td><code>object getDOMRequestService();</code></td>
+ </tr>
+ <tr>
+ <td><code>void openDialog(aWindow, aArg);</code></td>
+ </tr>
+ <tr>
+ <td><code>string sanityCheck();</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Attributes">Attributes</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Type</th>
+ <th scope="col">Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>DOMWindowUtils</code></td>
+ <td> </td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td><code>Services</code></td>
+ <td> </td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Methods">Methods</h2>
+
+<h3 id="Preference_APIs_2">Preference APIs</h3>
+
+<p>内部的に、このメソッドがどのように使われているかは {{ interface("nsIPrefBranch") }} のドキュメントを参照してください。</p>
+
+<h4 id="getBoolPref(aPrefName)"><code>getBoolPref(aPrefName)</code></h4>
+
+<p>boolean 型として aPrefName のプリファレンス値を取得します。</p>
+
+<h4 id="getIntPref(aPrefName)"><code>getIntPref(aPrefName)</code></h4>
+
+<p>integer 型として aPrefName のプリファレンス値を取得します。</p>
+
+<h4 id="getCharPref(aPrefName)"><code>getCharPref(aPrefName)</code></h4>
+
+<p>string 型として aPrefName のプリファレンス値を取得します。</p>
+
+<h4 id="getComplexValue(aPrefName)"><code>getComplexValue(aPrefName)</code></h4>
+
+<p>XPCOM オブジェクトとして aPrefName のプリファレンス値を取得します。</p>
+
+<h4 id="setBoolPref(aPrefName_aValue)"><code>setBoolPref(aPrefName, aValue)</code></h4>
+
+<p>boolean 型の aValue を aPrefName をキーとしてプリファレンスへ設定します。</p>
+
+<h4 id="setIntPref(aPrefName_aValue)"><code>setIntPref(aPrefName, aValue)</code></h4>
+
+<p>integer 型の aValue を aPrefName をキーとしてプリファレンスへ設定します。</p>
+
+<h4 id="setCharPref(aPrefName_aValue)"><code>setCharPref(aPrefName, aValue)</code></h4>
+
+<p>string 型の aValue を aPrefName をキーとしてプリファレンスへ設定します。</p>
+
+<h4 id="setComplexValue(aPrefName_aValue)"><code>setComplexValue(aPrefName, aValue)</code></h4>
+
+<p>XPCOM オブジェクトの aValue を aPrefName をキーとしてプリファレンスへ設定します。</p>
+
+<h4 id="clearUserPref(aPrefName)"><code>clearUserPref(aPrefName)</code></h4>
+
+<p>aPrefName のプリファレンス値を初期値に戻します。</p>
+
+<h3 id="Permission_APIs_2">Permission APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Event_Listener_Observer_APIs_2">Event Listener / Observer APIs</h3>
+
+<h4 id="addChromeEventListener(type_listener_capture_allowUntrusted)"><code>addChromeEventListener(type, listener, capture, allowUntrusted)</code></h4>
+
+<p>TabChildGlobal オブジェクトにイベントリスナーを登録します。</p>
+
+<h4 id="removeChromeEventListener(type_listener_capture)"><code>removeChromeEventListener(type, listener, capture)</code></h4>
+
+<p>TabChildGlobal オブジェクトからイベントリスナーを除去します。</p>
+
+<h3 id="Garbage_Collection_APIs_2">Garbage Collection APIs</h3>
+
+<h4 id="gc()"><code>gc()</code></h4>
+
+<p>強制的にガベージコレクションを発生させます。</p>
+
+<h3 id="Privilege_Wrapper_APIs_2">Privilege Wrapper APIs</h3>
+
+<h4 id="Object_wrap(Object)"><code>Object wrap(Object)</code></h4>
+
+<p>chrome オブジェクトにアクセスするために chrome オブジェクトをラップします。(例えば) XPCOM コンポーネントを返すメソッドの戻り値にアクセスするためには必要です。</p>
+
+<h3 id="XPCOM_Components_APIs_2">XPCOM Components APIs</h3>
+
+<h4 id="Cc"><code>Cc</code></h4>
+
+<p><code>Components.classes</code> の値を取得できます。これは chrome コード内で取得できるものと同じです。</p>
+
+<h4 id="Ci"><code>Ci</code></h4>
+
+<p><code>Components.interfaces</code> の値を取得できます。これは chrome コード内で取得できるものと同じです。</p>
+
+<h4 id="Cr"><code>Cr</code></h4>
+
+<p><code>Components.results </code>の値を取得できます。これは chrome コード内で取得できるものと同じです。</p>
+
+<h4 id="Cu"><code>Cu</code></h4>
+
+<p><code>Components.utils </code>の値を取得できます。これは chrome コード内で取得できるものと同じです。</p>
+
+<h3 id="Log_APIs_2">Log APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Environment_APIs_2">Environment APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Focus_Management_APIs_2">Focus Management APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Mock_APIs_2">Mock APIs</h3>
+
+<h4 id="MockFilePicker"><code>MockFilePicker</code></h4>
+
+<p>これは読み込み・保存のコードをテストするために、標準 File Picker をスクリプトで制御可能にするものに置換します。これを使うと、以下のコードをテストすることができます。</p>
+
+<pre class="brush:js;">var MockFilePicker = SpecialPowers.MockFilePicker;
+MockFilePicker.reset(); // You must call reset before each test
+</pre>
+
+<p><a class="link-https" href="https://bugzilla.mozilla.org/attachment.cgi?id=544963&amp;action=diff" title="https://bugzilla.mozilla.org/attachment.cgi?id=544963&amp;action=diff">このパッチ</a> ではMockFilePicker の使い方と XPCShell テストの使い方の良い例です。<code> testing/mochitest/MockFilePicker.jsm</code> のコードが参考になるでしょう。</p>
+
+<h3 id="Form_History_APIs_2">Form History APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Snapshot_APIs_2">Snapshot APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Clipboard_APIs_2">Clipboard APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Console_APIs_2">Console APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Layout_APIs_2">Layout APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Frame_Message_APIs_2">Frame Message APIs</h3>
+
+<h4 id="loadChromeScript()"><code>loadChromeScript()</code></h4>
+
+<p>TBD</p>
+
+<h3 id="Apps_APIs_2">Apps APIs</h3>
+
+<p>TBD</p>
+
+<h3 id="Other_APIs_2">Other APIs</h3>
+
+<h4 id="createSystemXHR()"><code>createSystemXHR()</code></h4>
+
+<p>完全な "system privileges"  を持った XMLHttpRequest を生成して返します。言い換えれば以下の事が可能になります。</p>
+
+<ul>
+ <li>制限なくクロスサイトリクエスト (cross-site requests) を要求できます。すなわちターゲットとなるサーバーは CORS をサポートする必要がありません。</li>
+ <li>xhr.setRequestHeader を使ってどんなヘッダーでも追加することができます。</li>
+ <li>xhr.getResponseHeader と xhr.getAllResponseHedaders を使ってすべてのレスポンスにアクセスできます。</li>
+ <li>xhr.responseXML のプロパティを使って XUL コンテンツの読み込み・パースができます。</li>
+ <li><code>referer</code> (sic) ヘッダー無しでリクエストを要求できます。もし <code>referer</code> ヘッダーを設定したい場合は、xhr.setRequestHeader を使って手動で設定する必要があります。</li>
+</ul>
+
+<p>しかし、xhr オブジェクトをパースしたドキュメントや xhr.responseXML からアクセスしたドキュメントは null principal として生成されています。そのため、ドキュメントでできることに制限があります。</p>
+
+<h4 id="sanityCheck()"><code>sanityCheck()</code></h4>
+
+<p>"foo" という文字列を返します。</p>
+
+<h2 id="Adding_new_APIs">Adding new APIs</h2>
+
+<p>もし現在定義されていない権限が必要な関数をテストしたい場合、SpecialPowers オブジェクトに新しい API を追加することができます。</p>
+
+<div class="note">SpecialPowers API は Electrolysis(e10s) プロジェクトでは前方互換として設計されています。そのためコンテンツは別プロセスとして動作します。(Firefox Mobile と同様)。変更したもの全てについてこれを考慮しなくてはいけません。考慮しない場合は許可されることは無いでしょう。</div>
+
+<p>プロセス外 (out-of-process) のコンテンツをサポートするために、SpecialPowers の実装は以下の 2 つのファイルに分離されています。</p>
+
+<ul>
+ <li>親プロセスで常に動作する {{ Source("testing/specialpowers/components/SpecialPowersObserver.js", "SpecialPowersObserver.js") }}</li>
+ <li>コンテンツプロセスで動作し、<a href="/en/The_message_manager#The_content_script" title="en/The message manager#The content script">コンテンツスクリプト</a> である{{ Source("testing/specialpowers/content/specialpowers.js", "specialpowers.js") }}</li>
+</ul>
+
+<p>両方のファイルは chrome 権限で実行されます。しかし XPCOM API は恐らくコンテンツプロセスでは利用できないでそう。もし特殊な API でそれを利用する場合は Electrolysis や Mobile チームに相談するべきです。プロセス間メッセージの仕組みについての情報を知りたい場合、 <a href="/en/The_message_manager" title="en/The message manager">Message Manager</a> のドキュメントを参照してください。</p>
+
+<p>{{ interface("nsIScreenManager") }} インターフェイスの <code>numberOfScreens</code>  をアクセス可能にする修正を例にしてみましょう。このインターフェイスはコンテンツアプリではアクセス不可能ですので、サンプルコードでそれを可能にしてみましょう。まず初めに、コンテンツで利用できるように SpecialPowers に新しい API を定義した方が良いでしょう。このオブジェクトは {{ Source("testing/specialpowers/content/specialpowers.js", "the content script") }} に定義します。</p>
+
+<div class="note">SpecialPowers は標準の JavaScript オブジェクトです。そのため、関数・属性・セッター・ゲッターを自由に追加することができます。特殊な <span id="the-code"><span class="a"><code>__exposedProps__</code> property のようにアンダースコア("_") から始まるプロパティを定義することでプロパティを隠すことができます。アンダースコアから始まる関数もプライベートになります。</span></span></div>
+
+<p>最初に<code>SpecialPowers</code> に <code>numberOfScreens</code> のゲッターを追加しましょう。単純に chrome プロセスにブロッキングメッセージを送信し、応答として値を返すだけです。</p>
+
+<pre class="brush:js;" lang="en"><span id="the-code"><span class="v">var </span><a class="d" href="http://mxr.mozilla.org/mozilla-central/ident?i=SpecialPowers">SpecialPowers</a> = {
+ // existing APIs
+ //...
+
+</span><span id="the-code"> // Provide nsIScreenManager.numberOfScreens
+ get numberOfScreens() {
+ // You could pass additional parameters in the second parameter, consult the <a title="en/The message manager">message manager</a> documentation for more details.
+ // Ideally this would be a memoizing getter, that's somewhat out of scope for this document.
+ return sendSyncMessage("SPNumberOfScreens", {})[0];
+ }</span>
+<span id="the-code">};
+</span></pre>
+
+<p>このとき、対応するメッセージのハンドラーを {{ Source("testing/specialpowers/components/SpecialPowersObserver.js", "chrome observer script") }} に定義する必要があります。<span id="the-code"><code>SpecialPowersObserver.observe</code> </span>関数の中で、以下の実在するメッセージを登録します。</p>
+
+<pre class="brush:js;" lang="en"><span id="the-code"><span class="c">// Register for any messages our API needs us to handle
+</span></span><span id="the-code"><a class="d" href="http://mxr.mozilla.org/mozilla-central/ident?i=messageManager">messageManager</a>.<a class="d" href="http://mxr.mozilla.org/mozilla-central/ident?i=addMessageListener">addMessageListener</a>(<span class="s">"SPPrefService"</span>, <span class="v">this)</span>;
+</span><span id="the-code"><a class="d" href="http://mxr.mozilla.org/mozilla-central/ident?i=messageManager">messageManager</a>.<a class="d" href="http://mxr.mozilla.org/mozilla-central/ident?i=addMessageListener">addMessageListener</a>(<span class="s">"SPNumberOfScreens"</span>, <span class="v">this)</span>;</span>
+</pre>
+
+<p>そして、<code><span id="the-code">SpecialPowersObserver.receiveMessage</span></code> 関数の中で、新しいメッセージの分岐を追加し結果を返します。</p>
+
+<pre class="brush:js;" lang="en"><span id="the-code">receiveMessage: <span class="v">function(</span>aMessage) {
+</span><span id="the-code"><span class="v"> switch(aMessage.name) </span>{
+  <span class="v">case </span><span class="s">"SPPrefService"</span>:</span>
+ // existing code...
+
+ case "SPNumberOfScreens":
+ var screenManager = Components.classes["@mozilla.org/gfx/screenmanager;1"]
+ .getService(Components.interfaces.nsIScreenManager);<span id="the-code">}
+ return screenManager.numberOfScreens;
+
+ default:
+</span></pre>
+
+<p>これで終わりです。<br>
+ この修正を反映させるために、testing/mochitest ディレクトリを再ビルドする必要があるでしょう。これで Mochitest で<code>SpecialPowers.numberOfScreens</code> を利用することができるようになります。</p>
+
+<div class="note">新しい API を追加後に、このドキュメントに新 API の説明を書くことを忘れないで下さい。</div>
diff --git a/files/ja/mozilla/projects/nspr/about_nspr/index.html b/files/ja/mozilla/projects/nspr/about_nspr/index.html
new file mode 100644
index 0000000000..179b222508
--- /dev/null
+++ b/files/ja/mozilla/projects/nspr/about_nspr/index.html
@@ -0,0 +1,476 @@
+---
+title: NSPRについて
+slug: Mozilla/Projects/NSPR/About_NSPR
+translation_of: Mozilla/Projects/NSPR/About_NSPR
+---
+<section id="Quick_Links">
+<ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li>
+ <li class="toggle">
+ <details>
+ <summary>Introduction to NSPR</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>NSPR Types</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Threads</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Process Initialization</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Locks</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Condition Variables</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Monitors</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Cached Monitors</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>I/O Types</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>I/O Functions</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Network Addresses</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Atomic Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Interval Timing</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Date and Time</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Memory Management Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>String Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Floating Point Number to String Conversion</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Linked Lists</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Dynamic Library Linking</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Process Management and Interprocess Communication</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Logging</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li&gt;
+ </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Named Shared Memory</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Anonymous Shared Memory</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>IPC Semaphores</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Thread Pools</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Random Number Generator</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Hash Tables</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>NSPR Error Handling</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Contribute</summary>
+ <ol>
+ <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li>
+ <li><a href="/ja/docs/MDN">The MDN Project</a></li>
+ </ol>
+ </details>
+ </li>
+ </ol>
+</section>
+
+<p>NetScape Portable Runtime (NSPR) provides platform independence for non-GUI operating system facilities. These facilities include threads, thread synchronization, normal file and network I/O, interval timing and calendar time, basic memory management (malloc and free) and shared library linking.</p>
+
+<h3 id="History" name="History">歴史</h3>
+
+<p>A good portion of the library's purpose, and perhaps the primary purpose in the Gromit environment, was to provide the underpinnings of the Java VM, more or less mapping the<em>sys layer</em> that Sun defined for the porting of the Java VM to various platforms. NSPR went beyond that requirement in some areas and since it was also the platform independent layer for most of the servers produced by Netscape. It was expected and preferred that existing code be restructured and perhaps even rewritten in order to use the NSPR API. It is not a goal to provide a platform for the porting into Netscape of externally developed code.</p>
+
+<p>At the time of writing the current generation of NSPR was known as NSPR20. The first generation of NSPR was originally conceived just to satisfy the requirements of porting Java to various host environments. NSPR20, an effort started in 1996, built on that original idea, though very little is left of the original code. (The "20" in "NSPR20" does not mean "version 2.0" but rather "second generation".) Many of the concepts have been reformed, expanded, and matured. Today NSPR may still be appropriate as the platform dependent layer under Java, but its primary application is supporting clients written entirely in C or C++.</p>
+
+<h3 id="How_It_Works" name="How_It_Works">How It Works</h3>
+
+<p>NSPR's goal is to provide uniform service over a wide range of operating system environments. It strives to not export the<em>lowest common denominator</em> , but to exploit the best features of each operating system on which it runs, and still provide a uniform service across a wide range of host offerings.</p>
+
+<h4 id="Threads" name="Threads">Threads</h4>
+
+<p>Threads are the major feature of NSPR. The industry's offering of threads is quite sundry. NSPR, while far from perfect, does provide a single API to which clients may program and expect reasonably consistent behavior. The operating systems provide everything from no concept of threading at all up to and including sophisticated, scalable and efficient implementations. NSPR makes as much use of what the systems offer as it can. It is a goal of NSPR that NSPR impose as little overhead as possible in accessing those appropriate system features.</p>
+
+<h4 id="Thread_synchronization" name="Thread_synchronization">Thread synchronization</h4>
+
+<p>Thread synchronization is loosely based on Monitors as described by C.A.R. Hoare in<em>Monitors: An operating system structuring concept</em> , Communications of the ACM, 17(10), October 1974 and then formalized by Xerox' Mesa programming language ("Mesa Language Manual", J.G. Mitchell et al, Xerox PARC, CSL-79-3 (Apr 1979)). This mechanism provides the basic mutual exclusion (mutex) and thread notification facilities (condition variables) implemented by NSPR. Additionally, NSPR provides synchronization methods more suited for use by Java. The Java-like facilities include monitor<em>reentrancy</em> , implicit and tightly bound notification capabilities with the ability to associate the synchronization objects dynamically.</p>
+
+<h4 id="I.2FO" name="I.2FO">I/O</h4>
+
+<p>NSPR's I/O is a slightly augmented BSD sockets model that allows arbitrary layering. It was originally intended to export synchronous I/O methods only, relying on threads to provide the concurrency needed for complex applications. That method of operation is preferred though it is possible to configure the network I/O channels as<em>non-blocking</em> in the traditional sense.</p>
+
+<h4 id="Network_addresses" name="Network_addresses">Network addresses</h4>
+
+<p>Part of NSPR deals with manipulation of network addresses. NSPR defines a network address object that is Internet Protocol (IP) centric. While the object is not declared as opaque, the API provides methods that allow and encourage clients to treat the addresses as polymorphic items. The goal in this area is to provide a migration path between IPv4 and IPv6. To that end it is possible to perform translations of ASCII strings (DNS names) into NSPR's network address structures, with no regard to whether the addressing technology is IPv4 or IPv6.</p>
+
+<h4 id="Time" name="Time">Time</h4>
+
+<p>Timing facilities are available in two forms: interval timing and calendar functions.</p>
+
+<p>Interval timers are based on a free running, 32-bit, platform dependent resolution timer. Such timers are normally used to specify timeouts on I/O, waiting on condition variables and other rudimentary thread scheduling. Since these timers have finite namespace and are free running, they can wrap at any time. NSPR does not provide an<em>epoch</em> , but expects clients to deal with that issue. The<em>granularity</em> of the timers is guaranteed to be between 10 microseconds and 1 millisecond. This allows a minimal timer<em>period</em> in of approximately 12 hours. But in order to deal with the wrap-around issue, only half that namespace may be utilized. Therefore, the minimal usable interval available from the timers is slightly less than six hours.</p>
+
+<p>Calendar times are 64-bit signed numbers with units of microseconds. The<em>epoch</em> for calendar times is midnight, January 1, 1970, Greenwich Mean Time. Negative times extend to times before 1970, and positive numbers forward. Use of 64 bits allows a representation of times approximately in the range of -30000 to the year 30000. There is a structural representation (<em>i.e., exploded</em> view), routines to acquire the current time from the host system, and convert them to and from the 64-bit and structural representation. Additionally there are routines to convert to and from most well-known forms of ASCII into the 64-bit NSPR representation.</p>
+
+<h4 id="Memory_management" name="Memory_management">Memory management</h4>
+
+<p>NSPR provides API to perform the basic malloc, calloc, realloc and free functions. Depending on the platform, the functions may be implemented almost entirely in the NSPR runtime or simply shims that call immediately into the host operating system's offerings.</p>
+
+<h4 id="Linking" name="Linking">Linking</h4>
+
+<p>Support for linking (shared library loading and unloading) is part of NSPR's feature set. In most cases this is simply a smoothing over of the facilities offered by the various platform providers.</p>
+
+<h3 id="Where_It.27s_Headed" name="Where_It.27s_Headed">Where It's Headed</h3>
+
+<p>NSPR is applicable as a platform on which to write threaded applications that need to be ported to multiple platforms. The current implementation supports Macintosh (PPC), WIN-32 (WinNT, Win9x) and 20 versions of UNIX and is still expanding. The basic API is stable and expected to remain that way.</p>
+
+<p>NSPR is functionally complete and has entered a mode of sustaining engineering. As operating system vendors issue new releases of their operating systems, NSPR will be moved forward to these new releases by interested players.</p>
+
+<h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2>
+
+<div class="originaldocinfo">
+<ul>
+ <li>Author: <a class="link-mailto" href="mailto:larryh@netscape.com">larryh@netscape.com</a></li>
+ <li>Last Updated Date: 2000</li>
+ <li>(Portions of the Introduction moved to the history section in 2012)</li>
+</ul>
+</div>
+
+<p> </p>
diff --git a/files/ja/mozilla/projects/nspr/index.html b/files/ja/mozilla/projects/nspr/index.html
new file mode 100644
index 0000000000..0e8c2d9e74
--- /dev/null
+++ b/files/ja/mozilla/projects/nspr/index.html
@@ -0,0 +1,474 @@
+---
+title: NSPR
+slug: Mozilla/Projects/NSPR
+tags:
+ - NSPR
+translation_of: Mozilla/Projects/NSPR
+---
+<section id="Quick_Links">
+<ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li>
+ <li class="toggle">
+ <details>
+ <summary>Introduction to NSPR</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>NSPR Types</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Threads</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Process Initialization</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Locks</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Condition Variables</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Monitors</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Cached Monitors</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>I/O Types</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>I/O Functions</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Network Addresses</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Atomic Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Interval Timing</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Date and Time</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Memory Management Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>String Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Floating Point Number to String Conversion</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Linked Lists</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Dynamic Library Linking</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Process Management and Interprocess Communication</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Logging</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li&gt;
+ </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Named Shared Memory</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Anonymous Shared Memory</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>IPC Semaphores</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Thread Pools</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Random Number Generator</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Hash Tables</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>NSPR Error Handling</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Contribute</summary>
+ <ol>
+ <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li>
+ <li><a href="/ja/docs/MDN">The MDN Project</a></li>
+ </ol>
+ </details>
+ </li>
+ </ol>
+</section>
+
+<p><strong>Netscape Portable Runtime</strong> (<strong>NSPR</strong>) は、システムレベルや libc のような機能のためのプラットフォーム中立な API を提供します。この API は、Mozilla クライアント、Red Hat と Sun の多くのサーバアプリケーション、その他のソフトウェア製品の中で使われています。</p>
+
+<h2 class="Documentation" id="Documentation" name="Documentation">ドキュメンテーション</h2>
+
+<dl>
+ <dt><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">NSPR について</a></dt>
+ <dd>このトピックでは一般的な用語で NSPR の目標とそれを実現する手段の一部について説明しています。</dd>
+ <dt><a href="Reference" title="NSPR_API_Reference">NSPR API リファレンス</a></dt>
+ <dd>各 API のパブリックマクロと、NSPR API の構造体と関数についての記述</dd>
+ <dt><a href="NSPR_build_instructions" title="NSPR_build_instructions">NSPR ビルド手順</a></dt>
+ <dd>ソースコードをチェックアウトしてビルドする方法</dd>
+ <dt><a href="Release_process" title="NSPR_release_process">NSPR リリース手順</a></dt>
+ <dd>NSPR のリリースの準備方法</dd>
+ <dt><a href="http://viewvc.svn.mozilla.org/vc/projects/mozilla.org/trunk/projects/nspr/" title="http://viewvc.svn.mozilla.org/vc/projects/mozilla.org/trunk/projects/nspr/">レガシーバージョンの NSPR </a></dt>
+ <dd>古い NSPR については SVN で参照 / 入手が可能です。</dd>
+</dl>
+
+<h2 id="Getting_NSPR" name="Getting_NSPR">NSPR の入手方法</h2>
+
+<p>NSPRは、各プラットフォームに対し、様々なソースとバイナリパッケージで提供されています。</p>
+
+<ul>
+ <li><strong>Windows:</strong> 『<a href="NSPR_build_instructions" title="NSPR_build_instructions">NSPR ビルド手順</a>』の方法でソースパッケージを構築</li>
+ <li><strong>Mac:</strong> <a href="http://www.macports.org/" title="http://www.macports.org/">MacPorts</a> の <em>NSPR</em> パッケージ、または <a href="http://brew.sh/" title="http://mxcl.github.com/homebrew/">Homebrew</a> NSPR パッケージをインストールします</li>
+ <li><strong>Ubuntu:</strong> <code>apt-get</code> により <em>libnspr4-dev</em> パッケージをインストール</li>
+ <li><strong>Debian:</strong> <code>apt-get</code> により <em>libnspr4-dev</em> パッケージをインストール</li>
+ <li><strong>openSUSE Linux:</strong> Install one or more of the following via <code>yast</code> or <code>zypper</code> :
+ <ul>
+ <li><em>mozilla-nspr</em> : Binary libraries for your platform</li>
+ <li><em>mozilla-nspr-32bit</em> : Binary libraries needed to run 32-bit programs on a 64-bit OS</li>
+ <li><em>mozilla-nspr-devel</em> : Files needed (in addition to the above libraries) to compile programs using NSPR</li>
+ <li><em>mozilla-nspr-debuginfo</em> : Debug information (including build symbols) for package <em>mozilla-nspr</em></li>
+ <li><em>mozilla-nspr-debuginfo-32bit</em> : Debug information (including build symbols) for package <em>mozilla-nspr-32bit</em></li>
+ <li><em>mozilla-nspr-debugsource</em> : Debug sources for all of the above</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 class="Community" id="Community" name="Community">コミュニティ</h2>
+
+<ul>
+ <li>Mozilla のフォーラムを参照してください。</li>
+</ul>
+
+<ul>
+ <li><a href="https://lists.mozilla.org/listinfo/dev-tech-nspr"> メーリングリストとして</a></li>
+
+
+ <li><a href="http://groups.google.com/group/mozilla.dev.tech.nspr"> ニュースグループとして</a></li>
+ <li><a href="http://groups.google.com/group/mozilla.dev.tech.nspr/feeds"> フィードとして</a></li>
+</ul>
+
+<h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">関連トピック</h2>
+
+<ul>
+ <li><a href="/ja/docs/Necko" title="Necko">Necko</a> 、 <a href="/ja/docs/NSS" title="NSS">NSS</a></li>
+</ul>
diff --git a/files/ja/mozilla/projects/nspr/reference/date_and_time/index.html b/files/ja/mozilla/projects/nspr/reference/date_and_time/index.html
new file mode 100644
index 0000000000..562246ae84
--- /dev/null
+++ b/files/ja/mozilla/projects/nspr/reference/date_and_time/index.html
@@ -0,0 +1,64 @@
+---
+title: Date and Time
+slug: Mozilla/Projects/NSPR/Reference/Date_and_Time
+tags:
+ - NSPR
+ - NSPR_API_Reference
+translation_of: Mozilla/Projects/NSPR/Reference/Date_and_Time
+---
+<p>
+{{ PreviousNext("NSPR API Reference:Interval Timing", "NSPR API Reference:Memory Management Operations") }}
+</p><p>この章では、NSPR にある日時関数について解説します。
+</p><p>NSPR は時を二つの方法で表します。絶対時間と時計・カレンダー時間です。NSPR は両方の表記法における型と定数や、二つの間での時間変換の関数も提供します。
+</p>
+<ul><li> 絶対時間による表現は、時間軸に沿った中での点として時間を表現します。時間はエポックと呼ばれる時間軸の原点に対する相対量としてあらわされます。NSPR はエポックを 1970 年 1 月 1 日真夜中 (00:00:00) UTC (Coordinated Universal Time / 協定世界時) をエポックとして採用しています。この形式では、時間はこの時間軸上の点になります。タイムゾーンの概念はありません。
+</li></ul>
+<ul><li> 人間向けに使われる、時計・カレンダー時間では、時間をよりわかりやすい年月日時分秒であらわします。この形式では、タイムゾーンが非常に重要となります。たとえば、タイムゾーンを指定しなければ、1998 年 5 月 1 日 午前 8:00 はあいまいです。NSPR のこのデータ型、分解された時間 (exploded time) では、タイムゾーンの情報も含みますので、絶対時間における位置は特定されます。
+</li></ul>
+<p>絶対時間とカレンダー方式はタイミング制御の中では通常は利用されません。経過時間を測定する方法やタイムアウトにて利用される関数については、<a href="ja/NSPR_API_Reference/Interval_Timing">13 章 "時間間隔"</a> を参照してください。
+</p>
+<ul><li> {{ Anch("Macros for Time Unit Conversion") }}
+</li><li> {{ Anch("Types and Constants") }}
+</li><li> {{ Anch("Time Parameter Callback Functions") }}
+</li><li> {{ Anch("Functions") }}
+</li></ul>
+<p>{{ 英語版章題("Macros for Time Unit Conversion") }}
+</p>
+<h3 name=".E6.99.82.E8.A8.88.E5.8D.98.E4.BD.8D.E5.A4.89.E6.8F.9B.E3.83.9E.E3.82.AF.E3.83.AD" id=".E6.99.82.E8.A8.88.E5.8D.98.E4.BD.8D.E5.A4.89.E6.8F.9B.E3.83.9E.E3.82.AF.E3.83.AD">時計単位変換マクロ</h3>
+<p>秒、ミリ秒、マイクロ秒、ナノ秒同士の変換マクロです。
+</p>
+<ul><li> <a href="ja/PR_MSEC_PER_SEC">PR_MSEC_PER_SEC</a>
+</li><li> <a href="ja/PR_USEC_PER_SEC">PR_USEC_PER_SEC</a>
+</li><li> <a href="ja/PR_NSEC_PER_SEC">PR_NSEC_PER_SEC</a>
+</li><li> <a href="ja/PR_USEC_PER_MSEC">PR_USEC_PER_MSEC</a>
+</li><li> <a href="ja/PR_NSEC_PER_MSEC">PR_NSEC_PER_MSEC</a>
+</li></ul>
+<p>{{ 英語版章題("Types and Constants") }}
+</p>
+<h3 name=".E5.9E.8B.E3.81.A8.E5.AE.9A.E6.95.B0" id=".E5.9E.8B.E3.81.A8.E5.AE.9A.E6.95.B0">型と定数</h3>
+<p>NSPR の時計関数のために定義されている型と定数は以下のものです。
+</p>
+<ul><li> <a href="ja/PRTime">PRTime</a>
+</li><li> <a href="ja/PRTimeParameters">PRTimeParameters</a>
+</li><li> <a href="ja/PRExplodedTime">PRExplodedTime</a>
+</li></ul>
+<p>{{ 英語版章題("Time Parameter Callback Functions") }}
+</p>
+<h3 name=".E3.82.BF.E3.82.A4.E3.83.A0.E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF.E3.81.AE.E3.82.B3.E3.83.BC.E3.83.AB.E3.83.90.E3.83.83.E3.82.AF.E9.96.A2.E6.95.B0" id=".E3.82.BF.E3.82.A4.E3.83.A0.E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF.E3.81.AE.E3.82.B3.E3.83.BC.E3.83.AB.E3.83.90.E3.83.83.E3.82.AF.E9.96.A2.E6.95.B0">タイムパラメータのコールバック関数</h3>
+<p>いくつかの地理的場所においては、夏時間 (Daylight Saving Time / DST) の適用と DST が開始もしくは終了する日付の取り扱い方法は何度か変更されています。このため、タイムゾーン情報を決定するにはコールバック関数が用いられています。
+</p><p><code><a href="ja/PRTimeParamFn">PRTimeParamFn</a></code> の定義に従った形式で、自分自身のこのコールバック関数を定義することもできます。NSPR で提供されるこのタイプのよく利用されるコールバック関数には二つあります :
+</p>
+<ul><li> <a href="ja/PRTimeParamFn">PRTimeParamFn</a>
+</li><li> <a href="ja/PR_LocalTimeParameters">PR_LocalTimeParameters</a> と <a href="ja/PR_GMTParameters">PR_GMTParameters</a>
+</li></ul>
+<p>{{ 英語版章題("Functions") }}
+</p>
+<h3 name=".E9.96.A2.E6.95.B0" id=".E9.96.A2.E6.95.B0">関数</h3>
+<p>日時を作成、取り扱うための関数は :
+</p>
+<ul><li> <a href="ja/PR_Now">PR_Now</a>
+</li><li> <a href="ja/PR_ExplodeTime">PR_ExplodeTime</a>
+</li><li> <a href="ja/PR_ImplodeTime">PR_ImplodeTime</a>
+</li><li> <a href="ja/PR_NormalizeTime">PR_NormalizeTime</a>
+</li></ul>
+{{ languages( { "en": "en/NSPR_API_Reference/Date_and_Time" } ) }}
diff --git a/files/ja/mozilla/projects/nspr/reference/index.html b/files/ja/mozilla/projects/nspr/reference/index.html
new file mode 100644
index 0000000000..312ff85ce0
--- /dev/null
+++ b/files/ja/mozilla/projects/nspr/reference/index.html
@@ -0,0 +1,768 @@
+---
+title: NSPR API リファレンス
+slug: Mozilla/Projects/NSPR/Reference
+tags:
+ - NSPR
+ - NSPR_API_Reference
+translation_of: Mozilla/Projects/NSPR/Reference
+---
+<section id="Quick_Links">
+<ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li>
+ <li class="toggle">
+ <details>
+ <summary>Introduction to NSPR</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>NSPR Types</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Threads</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Process Initialization</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Locks</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Condition Variables</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Monitors</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Cached Monitors</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>I/O Types</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>I/O Functions</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Network Addresses</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Atomic Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Interval Timing</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Date and Time</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Memory Management Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>String Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Floating Point Number to String Conversion</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Linked Lists</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Dynamic Library Linking</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Process Management and Interprocess Communication</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Logging</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li&gt;
+ </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Named Shared Memory</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Anonymous Shared Memory</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>IPC Semaphores</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Thread Pools</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Random Number Generator</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Hash Tables</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>NSPR Error Handling</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Contribute</summary>
+ <ol>
+ <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li>
+ <li><a href="/ja/docs/MDN">The MDN Project</a></li>
+ </ol>
+ </details>
+ </li>
+ </ol>
+</section>
+
+<h3 id="Introduction_to_NSPR" name="Introduction_to_NSPR"><a href="Reference/Introduction_to_NSPR">Introduction to NSPR</a></h3>
+
+<ul>
+ <li><a href="Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li>
+ <li><a href="Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a>
+ <ul>
+ <li><a href="Reference/Introduction_to_NSPR#Thread_Scheduling">Thread Scheduling</a>
+ <ul>
+ <li><a href="Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li>
+ <li><a href="Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li>
+ <li><a href="Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li><a href="Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a>
+ <ul>
+ <li><a href="Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li>
+ <li><a href="Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li>
+ </ul>
+ </li>
+ <li><a href="Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li>
+</ul>
+
+<h3 id="NSPR_Types" name="NSPR_Types"><a href="Reference/NSPR_Types">NSPR Types</a></h3>
+
+<ul>
+ <li><a href="Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li>
+ <li><a href="Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a>
+ <ul>
+ <li><a href="Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a>
+ <ul>
+ <li><a href="Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li>
+ <li><a href="Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li>
+ </ul>
+ </li>
+ <li><a href="Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li>
+ <li><a href="Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li>
+ <li><a href="Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li>
+ </ul>
+ </li>
+ <li><a href="Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a>
+ <ul>
+ <li><a href="Reference/NSPR_Types#Size_Type">Size Type</a></li>
+ <li><a href="Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li>
+ <li><a href="Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li>
+ <li><a href="Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="Threads" name="Threads"><a href="Reference/Threads">Threads</a></h3>
+
+<ul>
+ <li><a href="Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li>
+ <li><a href="Reference/Threads#Threading_Functions">Threading Functions</a>
+ <ul>
+ <li><a href="Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li>
+ <li><a href="Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li>
+ <li><a href="Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li>
+ <li><a href="Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li>
+ <li><a href="Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li>
+ <li><a href="Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="Process_Initialization" name="Process_Initialization"><a href="Reference/Process_Initialization">Process Initialization</a></h3>
+
+<ul>
+ <li><a href="Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a>
+
+ <ul>
+ <li><a href="Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li>
+ </ul>
+ </li>
+ <li><a href="Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li>
+ <li><a href="Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li>
+</ul>
+
+<h3 id="Locks" name="Locks"><a href="Reference/Locks">Locks</a></h3>
+
+<ul>
+ <li><a href="Reference/Locks#Lock_Type">Lock Type</a></li>
+ <li><a href="Reference/Locks#Lock_Functions">Lock Functions</a></li>
+</ul>
+
+<h3 id="Condition_Variables" name="Condition_Variables"><a href="Reference/Condition_Variables">Condition Variables</a></h3>
+
+<ul>
+ <li><a href="Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li>
+ <li><a href="Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li>
+</ul>
+
+<h3 id="Monitors" name="Monitors"><a href="Reference/Monitors">Monitors</a></h3>
+
+<ul>
+ <li><a href="Reference/Monitors#Monitor_Type">Monitor Type</a></li>
+ <li><a href="Reference/Monitors#Monitor_Functions">Monitor Functions</a></li>
+</ul>
+
+<h3 id="Cached_Monitors" name="Cached_Monitors"><a href="Reference/Cached_Monitors">Cached Monitors</a></h3>
+
+<ul>
+ <li><a href="Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li>
+</ul>
+
+<h3 id="I.2FO_Types" name="I.2FO_Types"><a href="Reference/I%2f%2fO_Types">I/O Types</a></h3>
+
+<ul>
+ <li><a href="Reference/I%2f%2fO_Types#Directory_Type">Directory Type</a></li>
+ <li><a href="Reference/I%2f%2fO_Types#File_Descriptor_Types">File Descriptor Types</a></li>
+ <li><a href="Reference/I%2f%2fO_Types#File_Info_Types">File Info Types</a></li>
+ <li><a href="Reference/I%2f%2fO_Types#Network_Address_Types">Network Address Types</a></li>
+ <li><a href="Reference/I%2f%2fO_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li>
+ <li><a href="Reference/I%2f%2fO_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li>
+ <li><a href="Reference/I%2f%2fO_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li>
+</ul>
+
+<h3 id="I.2FO_Functions" name="I.2FO_Functions"><a href="Reference/I%2f%2fO_Functions">I/O Functions</a></h3>
+
+<ul>
+ <li><a href="Reference/I%2f%2fO_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li>
+ <li><a href="Reference/I%2f%2fO_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li>
+ <li><a href="Reference/I%2f%2fO_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li>
+ <li><a href="Reference/I%2f%2fO_Functions#Socket_Manipulation_Functions">Socket Manipulation Functions</a></li>
+ <li><a href="Reference/I%2f%2fO_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li>
+ <li><a href="Reference/I%2f%2fO_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li>
+ <li><a href="Reference/I%2f%2fO_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li>
+ <li><a href="Reference/I%2f%2fO_Functions#Polling_Functions">Polling Functions</a></li>
+ <li><a href="Reference/I%2f%2fO_Functions#Pollable_Events">Pollable Events</a></li>
+ <li><a href="Reference/I%2f%2fO_Functions#Manipulating_Layers">Manipulating Layers</a></li>
+</ul>
+
+<h3 id="Network_Addresses" name="Network_Addresses"><a href="Reference/Network_Addresses">Network Addresses</a></h3>
+
+<ul>
+ <li><a href="Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li>
+ <li><a href="Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li>
+</ul>
+
+<h3 id="Atomic_Operations" name="Atomic_Operations"><a href="Reference/Atomic_Operations">Atomic Operations</a></h3>
+
+<ul>
+ <li><a href="Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li>
+ <li><a href="Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li>
+ <li><a href="Reference/PR_AtomicSet">PR_AtomicSet</a></li>
+</ul>
+
+<h3 id="Interval_Timing" name="Interval_Timing"><a href="Reference/Interval_Timing">Interval Timing</a></h3>
+
+<ul>
+ <li><a href="Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li>
+ <li><a href="Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li>
+</ul>
+
+<h3 id="Date_and_Time" name="Date_and_Time"><a href="Reference/Date_and_Time">Date and Time</a></h3>
+
+<ul>
+ <li><a href="Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li>
+ <li><a href="Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li>
+ <li><a href="Reference/Date_and_Time#Functions">Functions</a></li>
+</ul>
+
+<h3 id="Memory_Management_Operations" name="Memory_Management_Operations"><a href="Reference/Memory_Management_Operations">Memory Management Operations</a></h3>
+
+<ul>
+ <li><a href="Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li>
+ <li><a href="Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li>
+</ul>
+
+<h3 id="String_Operations" name="String_Operations"><a href="Reference/String_Operations">String Operations</a></h3>
+
+<ul>
+ <li><a href="Reference/PL_strlen">PL_strlen</a></li>
+ <li><a href="Reference/PL_strcpy">PL_strcpy</a></li>
+ <li><a href="Reference/PL_strdup">PL_strdup</a></li>
+ <li><a href="Reference/PL_strfree">PL_strfree</a></li>
+</ul>
+
+<h3 id="Floating_Point_Number_to_String_Conversion" name="Floating_Point_Number_to_String_Conversion"><a href="Reference/Floating_Point_Number_to_String_Conversion">Floating Point Number to String Conversion</a></h3>
+
+<ul>
+ <li><a href="Reference/PR_strtod">PR_strtod</a></li>
+ <li><a href="Reference/PR_dtoa">PR_dtoa</a></li>
+ <li><a href="Reference/PR_cnvtf">PR_cnvtf</a></li>
+</ul>
+
+<h2 id="Long_Long_.2864-bit.29_Integers" name="Long_Long_.2864-bit.29_Integers">Long Long (64-bit) Integers</h2>
+
+<h2 id="BitMaps" name="BitMaps">BitMaps</h2>
+
+<h2 id="Formatted_Printing" name="Formatted_Printing">Formatted Printing</h2>
+
+<h2 id="Linked_Lists" name="Linked_Lists"><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Linked_Lists">Linked Lists</a></h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a>
+
+ <ul>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></code></li>
+ </ul>
+ </li>
+ <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a>
+ <ul>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></code></li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Dynamic_Library_Linking" name="Dynamic_Library_Linking"><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking">Dynamic Library Linking</a></h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a>
+
+ <ul>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></code></li>
+ </ul>
+ </li>
+ <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a>
+ <ul>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></code></li>
+ <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li>
+ </ul>
+ </li>
+ <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a>
+ <ul>
+ <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li>
+ <li><a href="https://developer.mozilla.org/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program </a></li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Process_Management_and_Interprocess_Communication" name="Process_Management_and_Interprocess_Communication"><a href="https://developer.mozilla.org/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication">Process Management and Interprocess Communication</a></h2>
+
+<ul>
+ <li><a class="internal" href="https://developer.mozilla.org/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a>
+
+ <ul>
+ <li><code><a class="internal" href="https://developer.mozilla.org/En/PRProcess">PRProcess</a></code></li>
+ <li><code><a class="internal" href="https://developer.mozilla.org/En/PRProcessAttr">PRProcessAttr</a></code></li>
+ </ul>
+ </li>
+ <li><a class="internal" href="https://developer.mozilla.org/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a>
+ <ul>
+ <li><a class="internal" href="https://developer.mozilla.org/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li>
+ <li><a class="internal" href="https://developer.mozilla.org/En/NSPR_API_Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Multiwait_Receive" name="Multiwait_Receive">Multiwait Receive</h2>
+
+<h2 id="System_Information_and_Environment_Variables" name="System_Information_and_Environment_Variables">System Information and Environment Variables</h2>
+
+<h2 id="Logging" name="Logging"><a href="https://developer.mozilla.org/NSPR_API_Reference/Logging">Logging</a></h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/NSPR_API_Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li>
+ <li><a href="https://developer.mozilla.org/NSPR_API_Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a>
+ <ul>
+ <li><code><a href="https://developer.mozilla.org/docs/Mozilla/Projects/NSPR/Reference/Logging/PRLogModuleInfo">PRLogModuleInfo</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/docs/Mozilla/Projects/NSPR/Reference/Logging/PRLogModuleLevel">PRLogModuleLevel</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/docs/Mozilla/Projects/NSPR/Reference/Logging/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/docs/Mozilla/Projects/NSPR/Reference/Logging/NSPR_LOG_FILE">NSPR_LOG_FILE</a></code></li>
+ </ul>
+ </li>
+ <li><a href="https://developer.mozilla.org/NSPR_API_Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a>
+ <ul>
+ <li><code><a href="https://developer.mozilla.org/ja/docs/PR_NewLogModule">PR_NewLogModule</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/ja/docs/PR_SetLogFile">PR_SetLogFile</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/ja/docs/PR_SetLogBuffering">PR_SetLogBuffering</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/ja/docs/PR_LogPrint">PR_LogPrint</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/ja/docs/PR_LogFlush">PR_LogFlush</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/ja/docs/PR_LOG_TEST">PR_LOG_TEST</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/ja/docs/PR_LOG">PR_LOG</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/ja/docs/PR_Assert_">PR_Assert</a></code></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li>
+ <li><code><a href="https://developer.mozilla.org/ja/docs/PR_NOT_REACHED">PR_NOT_REACHED</a></code></li>
+ </ul>
+ </li>
+ <li><a href="https://developer.mozilla.org/NSPR_API_Reference/Logging#Use_Example">Use Example</a></li>
+</ul>
+
+<h2 id="Instrumentation_Counters" name="Instrumentation_Counters">Instrumentation Counters</h2>
+
+<h3 id="Named_Shared_Memory" name="Named_Shared_Memory"><a href="Reference/Named_Shared_Memory">Named Shared Memory</a></h3>
+
+<ul>
+ <li><a href="Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li>
+ <li><a href="Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li>
+</ul>
+
+<h3 id="Anonymous_Shared_Memory" name="Anonymous_Shared_Memory"><a href="Reference/Anonymous_Shared_Memory">Anonymous Shared Memory</a></h3>
+
+<ul>
+ <li><a href="Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li>
+ <li><a href="Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li>
+</ul>
+
+<h3 id="IPC_Semaphores" name="IPC_Semaphores"><a href="Reference/IPC_Semaphores">IPC Semaphores</a></h3>
+
+<ul>
+ <li><a href="Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li>
+</ul>
+
+<h3 id="Thread_Pools" name="Thread_Pools"><a href="Reference/Thread_Pools">Thread Pools</a></h3>
+
+<ul>
+ <li><a href="Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li>
+ <li><a href="Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li>
+</ul>
+
+<h3 id="Random_Number_Generator" name="Random_Number_Generator"><a href="Reference/Random_Number_Generator">Random Number Generator</a></h3>
+
+<ul>
+ <li><a href="Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li>
+</ul>
+
+<h3 id="Hash_Tables" name="Hash_Tables"><a href="Reference/Hash_Tables">Hash Tables</a></h3>
+
+<ul>
+ <li><a href="Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li>
+ <li><a href="Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li>
+</ul>
+
+<h3 id="NSPR_Error_Handling" name="NSPR_Error_Handling"><a href="Reference/NSPR_Error_Handling">NSPR Error Handling</a></h3>
+
+<ul>
+ <li><a href="Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li>
+ <li><a href="Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li>
+ <li><a href="Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li>
+</ul>
diff --git a/files/ja/mozilla/projects/nspr/reference/introduction_to_nspr/index.html b/files/ja/mozilla/projects/nspr/reference/introduction_to_nspr/index.html
new file mode 100644
index 0000000000..e1b5694995
--- /dev/null
+++ b/files/ja/mozilla/projects/nspr/reference/introduction_to_nspr/index.html
@@ -0,0 +1,577 @@
+---
+title: NSPRのイントロダクション
+slug: Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR
+translation_of: Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR
+---
+<section id="Quick_Links">
+<ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li>
+ <li class="toggle">
+ <details open>
+ <summary>Introduction to NSPR</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>NSPR Types</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Threads</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Process Initialization</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Locks</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Condition Variables</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Monitors</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Cached Monitors</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>I/O Types</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>I/O Functions</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Network Addresses</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Atomic Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Interval Timing</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Date and Time</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Memory Management Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>String Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Floating Point Number to String Conversion</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Linked Lists</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Dynamic Library Linking</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Process Management and Interprocess Communication</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Logging</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li&gt;
+ </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Named Shared Memory</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Anonymous Shared Memory</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>IPC Semaphores</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Thread Pools</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Random Number Generator</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Hash Tables</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>NSPR Error Handling</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Contribute</summary>
+ <ol>
+ <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li>
+ <li><a href="/ja/docs/MDN">The MDN Project</a></li>
+ </ol>
+ </details>
+ </li>
+ </ol>
+</section>
+
+<p>Netscape Portable Runtime (NSPR) APIはスレッド、スレッド同期、I/O、内部タイマー、原子的な操作、そしてその他のプラットフォームに依存しない方法で低レイヤーなサービス等のシステムの機能を使ったアプリケーションに準拠しています。このチャプターではNSPRプログラミングのコンセプトの重要な部分をサンプルコードを使って説明します。</p>
+
+<p>現在のNSPRの実装では、単一のソースコードのみで Macintosh (PPC), Win32 (NT 3.51, NT 4.0, WIN'95), その他20以上のバージョンのUNIX上でコンパイルすることができます。</p>
+
+<p>NSPRは既存のコードを移植するためのプラットフォームを提供しません。 ソフトウェアプロジェクトの初めから使用しなければなりません。</p>
+
+<h2 id="NSPR_Naming_Conventions" name="NSPR_Naming_Conventions">NSPRの命名規則</h2>
+
+<p>Naming of NSPR types, functions, and macros follows the following conventions:</p>
+
+<ul>
+ <li>Types exported by NSPR begin with <code>PR</code> and are followed by intercap-style declarations, like this: <code>PRInt</code>, <code>PRFileDesc</code></li>
+ <li>Function definitions begin with <code>PR_</code> and are followed by intercap-style declarations, like this: <code>PR_Read</code>, <code>PR_JoinThread</code></li>
+ <li>Preprocessor macros begin with the letters <code>PR</code> and are followed by all uppercase characters separated with the underscore character (<code>_</code>), like this: <code>PR_BYTES_PER_SHORT</code>, <code>PR_EXTERN</code></li>
+</ul>
+
+<h2 id="NSPR_Threads" name="NSPR_Threads">NSPRのスレッド</h2>
+
+<p>NSPR provides an execution environment that promotes the use of lightweight threads. Each thread is an execution entity that is scheduled independently from other threads in the same process. A thread has a limited number of resources that it truly owns. These resources include the thread stack and the CPU register set (including PC).</p>
+
+<p>To an NSPR client, a thread is represented by a pointer to an opaque structure of type <code><a href="PRThread">PRThread</a></code>. A thread is created by an explicit client request and remains a valid, independent execution entity until it returns from its root function or the process abnormally terminates. (<code>PRThread</code> and functions for creating and manipulating threads are described in detail in <a href="Threads">Threads</a>.)</p>
+
+<p>NSPR threads are lightweight in the sense that they are cheaper than full-blown processes, but they are not free. They achieve the cost reduction by relying on their containing process to manage most of the resources that they access. This, and the fact that threads share an address space with other threads in the same process, makes it important to remember that<em>threads are not processes</em> .</p>
+
+<p>NSPR threads are scheduled in two separate domains:</p>
+
+<ul>
+ <li><strong>Local threads</strong> are scheduled within a process only and are handled entirely by NSPR, either by completely emulating threads on each host operating system (OS) that doesn't support threads, or by using the threading facilities of each host OS that does support threads to emulate a relatively large number of local threads by using a relatively small number of native threads.</li>
+</ul>
+
+<ul>
+ <li><strong>Global threads</strong> are scheduled by the host OS--not by NSPR--either within a process or across processes on the entire host. Global threads correspond to native threads on the host OS.</li>
+</ul>
+
+<p>NSPR threads can also be either user threads or system threads. NSPR provides a function, <code><a href="PR_Cleanup">PR_Cleanup</a></code>, that synchronizes process termination. <code>PR_Cleanup</code> waits for the last user thread to exit before returning, whereas it ignores system threads when determining when a process should exit. This arrangement implies that a system thread should not have volatile data that needs to be safely stored away.</p>
+
+<p>Priorities for NSPR threads are based loosely on hints provided by the client and sometimes constrained by the underlying operating system. Therefore, priorities are not rigidly defined. For more information, see <a href="#Thread_Scheduling">Thread Scheduling</a>.</p>
+
+<p>In general, it's preferable to create local user threads with normal priority and let NSPR take care of the details as appropriate for each host OS. It's usually not necessary to create a global thread explicitly unless you are planning to port your code only to platforms that provide threading services with which you are familiar or unless the thread will be executing code that might directly call blocking OS functions.</p>
+
+<p>Threads can also have "per-thread-data" attached to them. Each thread has a built-in per-thread error number and error string that are updated when NSPR operations fail. It's also possible for NSPR clients to define their own per-thread-data. For details, see <a href="Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a>.</p>
+
+<h3 id="Thread_Scheduling" name="Thread_Scheduling">スレッドスケジューリング</h3>
+
+<p>NSPR threads are scheduled by priority and can be preempted or interrupted. The sections that follow briefly introduce the NSPR approach to these three aspects of thread scheduling.</p>
+
+<ul>
+ <li><a href="#Setting_Thread_Priorities">Setting Thread Priorities</a></li>
+ <li><a href="#Preempting_Threads">Preempting Threads</a></li>
+ <li><a href="#Interrupting_Threads">Interrupting Threads</a></li>
+</ul>
+
+<p>For reference information on the NSPR API used for thread scheduling, see <a href="Threads">Threads</a>.</p>
+
+<h4 id="Setting_Thread_Priorities" name="Setting_Thread_Priorities">Setting Thread Priorities</h4>
+
+<p>The host operating systems supported by NSPR differ widely in the mechanisms they use to support thread priorities. In general, an NSPR thread of higher priority has a statistically better chance of running relative to threads of lower priority. However, because of the multiple strategies to provide execution vehicles for threads on various host platforms, priorities are not a clearly defined abstraction in NSPR. At best they are intended to specify a preference with respect to the amount of CPU time that a higher-priority thread might expect relative to a lower-priority thread. This preference is still subject to resource availability, and must not be used in place of proper synchronization. For more information on thread synchronization, see <a href="#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a>.</p>
+
+<p>The issue is further muddied by inconsistent offerings from OS vendors regarding the priority of their kernel-supported threads. NSPR assumes that the priorities of global threads are not manageable, but that the host OS will perform some sort of fair scheduling. It's usually preferable to create local user threads with normal priority and let NSPR and the host take care of the details.</p>
+
+<p>In some NSPR configurations, there may be an arbitrary (and perhaps large) number of local threads being supported by a more limited number of <strong>virtual processors</strong> (an internal application of global threads). In such situations, each virtual processor will have some number of local threads associated with it, though exactly which local threads and how many may vary over time. NSPR guarantees that for each virtual processor the highest-priority, schedulable local thread is the one executing. This thread implementation strategy is referred to as the <strong>M x N model. </strong></p>
+
+<h4 id="Preempting_Threads" name="Preempting_Threads">Preempting Threads</h4>
+
+<p>Preemption is the act of taking control away from a ready thread at an arbitrary point and giving control to another appropriate thread. It might be viewed as taking the executing thread and adding it to the end of the ready queue for its appropriate priority, then simply running the scheduling algorithm to find the most appropriate thread. The chosen thread may be of higher priority, of the same priority, or even the same thread. It will not be a thread of lower priority.</p>
+
+<p>Some operating systems cannot be made preemptable (for example, Mac OS and Win 16). This puts them at some risk in supporting arbitrary code, even if the code is interpreted (Java). Other systems are not thread-aware, and their runtime libraries not thread-safe (most versions of Unix). These systems can support local level thread abstractions that can be made preemptable, but run the risk of library corruption (<code>libc</code>). Still other operating systems have a native notion of threads, and their libraries are thread-aware and support locking. However, if local threads are also present, and they are preemptable, they are subject to deadlock. At this time, the only safe solutions are to turn off preemption (a runtime decision) or to preempt global threads only.</p>
+
+<h4 id="Interrupting_Threads" name="Interrupting_Threads">Interrupting Threads</h4>
+
+<p>NSPR threads are interruptable, with some constraints and inconsistencies.</p>
+
+<p>To interrupt a thread, the caller of <code><a href="PR_Interrupt">PR_Interrupt</a></code> must have the NSPR reference to the target thread (<code><a href="PRThread">PRThread</a></code>*). When the target is interrupted, it is rescheduled from the point at which it was blocked, with a status error indicating that it was interrupted. NSPR recognizes only two areas where a thread may be interrupted: waiting on a condition variable and waiting on I/O. In the latter case, interruption does cancel the I/O operation. In neither case does being interrupted imply the demise of the thread.</p>
+
+<h2 id="NSPR_Thread_Synchronization" name="NSPR_Thread_Synchronization">NSPRのスレッドの同期</h2>
+
+<p>Thread synchronization has two aspects: locking and notification. Locking prevents access to some resource, such as a piece of shared data: that is, it enforces mutual exclusion. Notification involves passing synchronization information among cooperating threads.</p>
+
+<p>In NSPR, a <strong>mutual exclusion lock</strong> (or <strong>mutex</strong>) of type <code><a href="PRLock">PRLock</a></code> controls locking, and associated <strong>condition variables</strong> of type <code><a href="PRCondVar">PRCondVar</a></code> communicate changes in state among threads. When a programmer associates a mutex with an arbitrary collection of data, the mutex provides a protective <strong>monitor</strong> around the data.</p>
+
+<h3 id="Locks_and_Monitors" name="Locks_and_Monitors">Locks and Monitors</h3>
+
+<p>In general, a monitor is a conceptual entity composed of a mutex, one or more condition variables, and the monitored data. Monitors in this generic sense should not be confused with the monitor type used in Java programming. In addition to <code><a href="PRLock">PRLock</a></code>, NSPR provides another mutex type, <code><a href="PRMonitor">PRMonitor</a></code>, which is reentrant and can have only one associated condition variable. <code>PRMonitor</code> is intended for use with Java and reflects the Java approach to thread synchronization.</p>
+
+<p>To access the data in the monitor, the thread performing the access must hold the mutex, also described as being "in the monitor." Mutual exclusion guarantees that only one thread can be in the monitor at a time and that no thread may observe or modify the monitored data without being in the monitor.</p>
+
+<p>Monitoring is about protecting data, not code. A <strong>monitored invariant</strong> is a Boolean expression over the monitored data. The expression may be false only when a thread is in the monitor (holding the monitor's mutex). This requirement implies that when a thread first enters the monitor, an evaluation of the invariant expression must yield a <code>true</code>. The thread must also reinstate the monitored invariant before exiting the monitor. Therefore, evaluation of the expression must also yield a true at that point in execution.</p>
+
+<p>A trivial example might be as follows. Suppose an object has three values, <var>v1</var>, <var>v2</var>, and <var>sum</var>. The invariant is that the third value is the sum of the other two. Expressed mathematically, the invariant is <code>sum = v1 + v2</code>. Any modification of <var>v1</var> or <var>v2</var> requires modification of <var>sum</var>. Since that is a complex operation, it must be monitored. Furthermore, any type of access to <var>sum</var> must also be monitored to ensure that neither <var>v1</var> nor <var>v2</var> are in flux.</p>
+
+<div class="note"><strong>Note</strong>: Evaluation of the invariant expression is a conceptual requirement and is rarely done in practice. It is valuable to formally define the expression during design, write it down, and adhere to it. It is also useful to implement the expression during development and test it where appropriate. The thread makes an absolute assertion of the expression's evaluation both on entering and on exiting the monitor.</div>
+
+<p>Acquiring a lock is a synchronous operation. Once the lock primitive is called, the thread returns only when it has acquired the lock. Should another thread (or the same thread) already have the lock held, the calling thread blocks, waiting for the situation to improve. That blocked state is not interruptible, nor is it timed.</p>
+
+<h3 id="Condition_Variables" name="Condition_Variables">Condition Variables</h3>
+
+<p>Condition variables facilitate communication between threads. The communication available is a semantic-free notification whose context must be supplied by the programmer. Conditions are closely associated with a single monitor.</p>
+
+<p>The association between a condition and a monitor is established when a condition variable is created, and the association persists for the life of the condition variable. In addition, a static association exists between the condition and some data within the monitor. This data is what will be manipulated by the program under the protection of the monitor. A thread may wait on notification of a condition that signals changes in the state of the associated data. Other threads may notify the condition when changes occur.</p>
+
+<p>Condition variables are always monitored. The relevant operations on conditions are always performed from within the monitor. They are used to communicate changes in the state of the monitored data (though still preserving the monitored invariant). Condition variables allow one or more threads to wait for a predetermined condition to exist, and they allow another thread to notify them when the condition occurs. Condition variables themselves do not carry the semantics of the state change, but simply provide a mechanism for indicating that something has changed. It is the programmer's responsibility to associate a condition with the state of the data.</p>
+
+<p>A thread may be designed to wait for a particular situation to exist in some monitored data. Since the nature of the situation is not an attribute of the condition, the program must test that itself. Since this testing involves the monitored data, it must be done from within the monitor. The wait operation atomically exits the monitor and blocks the calling thread in a waiting condition state. When the thread is resumed after the wait, it will have reentered the monitor, making operations on the data safe.</p>
+
+<p>There is a subtle interaction between the thread(s) waiting on a condition and those notifying it. The notification must take place within a monitor--the same monitor that protects the data being manipulated by the notifier. In pseudocode, the sequence looks like this:</p>
+
+<pre class="eval">enter(monitor);
+... manipulate the monitored data
+notify(condition);
+exit(monitor);
+</pre>
+
+<p>Notifications to a condition do not accumulate. Nor is it required that any thread be waiting on a condition when the notification occurs. The design of the code that waits on a condition must take these facts into account. Therefore, the pseudocode for the waiting thread might look like this:</p>
+
+<pre class="eval">enter(monitor)
+while (!expression) wait(condition);
+... manipulate monitored data
+exit(monitor);
+</pre>
+
+<p>The need to evaluate the Boolean expression again after rescheduling from a wait may appear unnecessary, but it is vital to the correct execution of the program. The notification promotes a thread waiting on a condition to a ready state. When that thread actually gets scheduled is determined by the thread scheduler and cannot be predicted. If multiple threads are actually processing the notifications, one or more of them could be scheduled ahead of the one explicitly promoted by the notification. One such thread could enter the monitor and perform the work indicated by the notification, and exit. In this case the thread would resume from the wait only to find that there's nothing to do.</p>
+
+<p>For example, suppose the defined rule of a function is that it should wait until there is an object available and that it should return a reference to that object. Writing the code as follows could potentially return a null reference, violating the invariant of the function:</p>
+
+<pre class="eval">void *dequeue()
+{
+ void *db;
+ enter(monitor);
+ if ((db = delink()) == null)
+ {
+ wait(condition);
+ db = delink();
+ }
+ exit(monitor);
+ return db;
+}
+</pre>
+
+<p>The same function would be more appropriately written as follows:</p>
+
+<pre class="eval">void *dequeue()
+{
+ void *db;
+ enter(monitor);
+ while ((db = delink()) == null)
+ wait(condition);
+ exit(monitor);
+ return db;
+}
+</pre>
+
+<div class="note"><strong>Caution</strong>: The semantics of <code><a href="PR_WaitCondVar">PR_WaitCondVar</a></code> assume that the monitor is about to be exited. This assumption implies that the monitored invariant must be reinstated before calling <code>PR_WaitCondVar</code>. Failure to do this will cause subtle but painful bugs.</div>
+
+<p>To modify monitored data safely, a thread must be in the monitor. Since no other thread may modify or (in most cases) even observe the protected data from outside the monitor, the thread can safely make any modifications needed. When the changes have been completed, the thread notifies the condition associated with the data and exits the monitor using <code><a href="PR_NotifyCondVar">PR_NotifyCondVar</a></code>. Logically, each such notification promotes one thread that was waiting on the condition to a ready state. An alternate form of notification (<code><a href="PR_NotifyAllCondVar">PR_NotifyAllCondVar</a></code>) promotes all threads waiting on a condition to the ready state. If no threads were waiting, the notification is a no-op.</p>
+
+<p>Waiting on a condition variable is an interruptible operation. Another thread could target the waiting thread and issue a <code><a href="PR_Interrupt">PR_Interrupt</a></code>, causing a waiting thread to resume. In such cases the return from the wait operation indicates a failure and definitively indicates that the cause of the failure is an interrupt.</p>
+
+<p>A call to <code><a href="PR_WaitCondVar">PR_WaitCondVar</a></code> may also resume because the interval specified on the wait call has expired. However, this fact cannot be unambiguously delivered, so no attempt is made to do so. If the logic of a program allows for timing of waits on conditions, then the clock must be treated as part of the monitored data and the amount of time elapsed re-asserted when the call returns. Philosophically, timeouts should be treated as explicit notifications, and therefore require the testing of the monitored data upon resumption.</p>
+
+<h2 id="NSPR_Sample_Code" name="NSPR_Sample_Code">NSPRのサンプルコード</h2>
+
+<p>The documents linked here present two sample programs, including detailed annotations: <code><a href="/I%2f%2fO_Layering_Sample">layer.html</a></code> and <code><a href="/Thread_Synchronization_Sample">switch.html</a></code>. In addition to these annotated HTML versions, the same samples are available in pure source form.</p>
diff --git a/files/ja/mozilla/projects/nspr/reference/logging/index.html b/files/ja/mozilla/projects/nspr/reference/logging/index.html
new file mode 100644
index 0000000000..a580b77cb0
--- /dev/null
+++ b/files/ja/mozilla/projects/nspr/reference/logging/index.html
@@ -0,0 +1,74 @@
+---
+title: Logging
+slug: Mozilla/Projects/NSPR/Reference/Logging
+translation_of: Mozilla/Projects/NSPR/Reference/Logging
+---
+<p>{{ PreviousNext("NSPR API Reference:System Information and Environment Variables", "NSPR API Reference:Instrumentation Counters") }}</p>
+<p>This chapter describes the global functions you use to perform logging. NSPR provides a set of logging functions that conditionally write <code>printf()</code> style strings to the console or to a log file. NSPR uses this facility itself for its own development debugging purposes.</p>
+<p>You can select events to be logged by module or level. A module is a user-defined class of log events. A level is a numeric value that indicates the seriousness of the event to be logged. You can combine module and level criteria to get highly selective logging.</p>
+<p>NSPR also provides "assert"-style macros and functions to aid in application debugging.</p>
+<ul>
+ <li>{{ Anch("Conditional Compilation and Execution") }}</li>
+ <li>{{ Anch("Log Types and Variables") }}</li>
+ <li>{{ Anch("Logging Functions and Macros") }}</li>
+ <li>{{ Anch("Use Example") }}</li>
+</ul>
+<h3 id="Conditional_Compilation_and_Execution" name="Conditional_Compilation_and_Execution">Conditional Compilation and Execution</h3>
+<p>NSPR's logging facility is conditionally compiled in and enabled for applications using it. These controls are platform dependent. Logging is not compiled in for the Win16 platform. Logging is compiled into the NSPR debug builds; logging is not compiled into the NSPR optimized builds. コンパイル時に <code>#define</code> で、<code>DEBUG</code> または <code>FORCE_PR_LOGをセットするとアプリケーション・プログラムで</code>NSPR loggingが有効になります。.</p>
+<p>To enable NSPR logging and/or the debugging aids in your application, compile using the NSPR debug build headers and runtime. Set one of the compile-time defines when you build your application.</p>
+<p>Execution-time control of NSPR's logging uses two environment variables. These variables control which modules and levels are logged as well as the file name of the log file. By default, no logging is enabled at execution time.</p>
+<h3 id="Log_Types_and_Variables" name="Log_Types_and_Variables">Log Types and Variables</h3>
+<p>Two types supporting NSPR logging are exposed in the API:</p>
+<ul>
+ <li><a href="/en/PRLogModuleInfo" title="en/PRLogModuleInfo">PRLogModuleInfo</a></li>
+ <li><a href="/en/PRLogModuleLevel" title="en/PRLogModuleLevel">PRLogModuleLevel</a></li>
+</ul>
+<p>Two environment variables control the behavior of logging at execution time:</p>
+<ul>
+ <li><a href="/en/NSPR_LOG_MODULES" title="en/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li>
+ <li><a href="/en/NSPR_LOG_FILE" title="en/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li>
+</ul>
+<h3 id="Logging_Functions_and_Macros" name="Logging_Functions_and_Macros">Logging Functions and Macros</h3>
+<p>The functions and macros for logging are:</p>
+<ul>
+ <li><a href="/en/PR_NewLogModule" title="en/PR_NewLogModule">PR_NewLogModule</a></li>
+ <li><a href="/en/PR_SetLogFile" title="en/PR_SetLogFile">PR_SetLogFile</a></li>
+ <li><a href="/en/PR_SetLogBuffering" title="en/PR_SetLogBuffering">PR_SetLogBuffering</a></li>
+ <li><a href="/en/PR_LogPrint" title="en/PR_LogPrint">PR_LogPrint</a></li>
+ <li><a href="/en/PR_LogFlush" title="en/PR_LogFlush">PR_LogFlush</a></li>
+ <li><a href="/en/PR_LOG_TEST" title="en/PR_LOG_TEST">PR_LOG_TEST</a></li>
+ <li><a href="/en/PR_LOG" title="en/PR_LOG">PR_LOG</a></li>
+ <li><a href="/en/PR_ASSERT" title="en/PR_ASSERT">PR_Assert</a></li>
+ <li><a href="/en/PR_ASSERT" title="en/PR_ASSERT">PR_ASSERT</a></li>
+ <li><a href="/en/PR_STATIC_ASSERT" title="en/PR_STATIC_ASSERT">PR_STATIC_ASSERT</a> (new in NSPR 4.6.6<span class="comment">XXX this hasn't been released yet; the number is a logical guess</span>)</li>
+ <li><a href="/en/PR_NOT_REACHED" title="en/PR_NOT_REACHED">PR_NOT_REACHED</a></li>
+</ul>
+<h3 id="Use_Example" name="Use_Example">Use Example</h3>
+<p>The following sample code fragment demonstrates use of the logging and debugging aids.</p>
+<ul>
+ <li>Compile the program with DEBUG defined.</li>
+ <li>Before running the compiled program, set the environment variable NSPR_LOG_MODULES to userStuff:5</li>
+</ul>
+<pre class="eval">static void UserLogStuff( void )
+{
+ PRLogModuleInfo *myLM;
+ PRIntn i;
+
+ PR_STATIC_ASSERT(5 &gt; 4); /* NSPR 4.6.6 or newer */
+
+ myLM = PR_NewLogModule( "userStuff" );
+ PR_ASSERT( myLM );
+
+ PR_LOG( myLM, PR_LOG_NOTICE, ("Log a Notice %d\n", 999 ));
+ for (i = 0; i &lt; 10 ; i++ )
+ {
+ PR_LOG( myLM, PR_LOG_DEBUG, ("Log Debug number: %d\n", i));
+ PR_Sleep( 500 );
+ }
+ PR_LOG( myLM, PR_LOG_NOTICE, ("That's all folks\n");
+
+} /* end UserLogStuff() */
+</pre>
+<p>{{ PreviousNext("NSPR API Reference:System Information and Environment Variables", "NSPR API Reference:Instrumentation Counters") }}</p>
+<h3 id="See_also">See also</h3>
+<p><a class="external" href="http://www.mozilla.org/projects/nspr/reference/html/prlog.html" title="http://www.mozilla.org/projects/nspr/reference/html/prlog.html">NSPR Logging reference</a></p>
diff --git a/files/ja/mozilla/projects/nspr/reference/memory_management_operations/index.html b/files/ja/mozilla/projects/nspr/reference/memory_management_operations/index.html
new file mode 100644
index 0000000000..25b9fc1040
--- /dev/null
+++ b/files/ja/mozilla/projects/nspr/reference/memory_management_operations/index.html
@@ -0,0 +1,40 @@
+---
+title: NSPR API リファレンス
+slug: Mozilla/Projects/NSPR/Reference/Memory_Management_Operations
+tags:
+ - NSPR
+ - NSPR_API_Reference
+translation_of: Mozilla/Projects/NSPR/Reference/Memory_Management_Operations
+---
+<p> {{ PreviousNext("NSPR API Reference:Date and Time", "NSPR API Reference:String Operations") }}
+</p><p>この章では、メモリ管理を行う際に利用することになるグローバル関数やマクロについて解説しています。NSPR はおなじみの <code>malloc()</code>, <code>calloc()</code>, <code>realloc()</code> や <code>free()</code> にマップされているヒープベースのメモリ管理関数を提供しています。
+</p>
+<ul><li> {{ Anch("Memory Allocation Functions") }}
+</li><li> {{ Anch("Memory Allocation Macros") }}
+</li></ul>
+<p>{{ 英語版章題("Memory Allocation Functions") }}
+</p>
+<h3 name=".E3.83.A1.E3.83.A2.E3.83.AA.E5.89.B2.E3.82.8A.E5.BD.93.E3.81.A6.E9.96.A2.E6.95.B0" id=".E3.83.A1.E3.83.A2.E3.83.AA.E5.89.B2.E3.82.8A.E5.BD.93.E3.81.A6.E9.96.A2.E6.95.B0">メモリ割り当て関数</h3>
+<p>NSPR は自身にヒープ領域を確保しており、これらの関数はそのヒープ領域に対して動作します。ライブラリは Netscape security libraries などといった NSPR の最初に作成され、これらの関数をメモリの確保や開放に利用しています。これらのライブラリで利用するためにメモリを確保する場合や、これらのライブラリで確保されたメモリを開放する場合は、libc の同等の関数ではなく、必ず NSPR の関数を利用する必要があります。
+</p><p>メモリ割り当て関数は次のものになります :
+</p>
+<ul><li> <a href="ja/PR_Malloc">PR_Malloc</a>
+</li><li> <a href="ja/PR_Calloc">PR_Calloc</a>
+</li><li> <a href="ja/PR_Realloc">PR_Realloc</a>
+</li><li> <a href="ja/PR_Free">PR_Free</a>
+</li></ul>
+<p><code>PR_Malloc()</code>, <code>PR_Calloc()</code>, <code>PR_Realloc()</code> や <code>PR_Free()</code> は、その libc の同等の関数である <code>malloc()</code>, <code>calloc()</code>, <code>realloc()</code> や <code>free()</code> と同じ定数を利用し、同等の動作を行います。(ただし、引数の型の <code>size_t</code> は <code>PRUint32</code> に変換されています。) <code>PR_Malloc()</code>, <code>PR_Calloc()</code> や <code>PR_Realloc()</code> で確保されたメモリ領域は、必ず <code>PR_Free()</code> で開放される必要があります。
+</p><p>{{ 英語版章題("Memory Allocation Macros") }}
+</p>
+<h3 name=".E3.83.A1.E3.83.A2.E3.83.AA.E5.89.B2.E3.82.8A.E5.BD.93.E3.81.A6.E3.83.9E.E3.82.AF.E3.83.AD" id=".E3.83.A1.E3.83.A2.E3.83.AA.E5.89.B2.E3.82.8A.E5.BD.93.E3.81.A6.E3.83.9E.E3.82.AF.E3.83.AD">メモリ割り当てマクロ</h3>
+<p>メモリ割り当て関数のマクロ版も提供されており、プログラミングの利便性のために同様な追加のマクロも提供されています :
+</p>
+<ul><li> <a href="ja/PR_MALLOC">PR_MALLOC</a>
+</li><li> <a href="ja/PR_NEW">PR_NEW</a>
+</li><li> <a href="ja/PR_REALLOC">PR_REALLOC</a>
+</li><li> <a href="ja/PR_CALLOC">PR_CALLOC</a>
+</li><li> <a href="ja/PR_NEWZAP">PR_NEWZAP</a>
+</li><li> <a href="ja/PR_DELETE">PR_DELETE</a>
+</li><li> <a href="ja/PR_FREEIF">PR_FREEIF</a>
+</li></ul>
+{{ languages( { "en": "en/NSPR_API_Reference/Memory_Management_Operations" } ) }}
diff --git a/files/ja/mozilla/projects/nspr/reference/nspr_log_modules/index.html b/files/ja/mozilla/projects/nspr/reference/nspr_log_modules/index.html
new file mode 100644
index 0000000000..acb864a0e7
--- /dev/null
+++ b/files/ja/mozilla/projects/nspr/reference/nspr_log_modules/index.html
@@ -0,0 +1,469 @@
+---
+title: NSPR LOG MODULES
+slug: Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES
+tags:
+ - NSPR
+ - NSPR_API_Reference
+translation_of: Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES
+---
+<section id="Quick_Links">
+<ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li>
+ <li class="toggle">
+ <details>
+ <summary>Introduction to NSPR</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>NSPR Types</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Threads</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Process Initialization</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Locks</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Condition Variables</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Monitors</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Cached Monitors</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>I/O Types</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>I/O Functions</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Network Addresses</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Atomic Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Interval Timing</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Date and Time</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Memory Management Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>String Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Floating Point Number to String Conversion</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Linked Lists</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Dynamic Library Linking</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Process Management and Interprocess Communication</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details open>
+ <summary>Logging</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li&gt;
+ </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Named Shared Memory</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Anonymous Shared Memory</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>IPC Semaphores</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Thread Pools</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Random Number Generator</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Hash Tables</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>NSPR Error Handling</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Contribute</summary>
+ <ol>
+ <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li>
+ <li><a href="/ja/docs/MDN">The MDN Project</a></li>
+ </ol>
+ </details>
+ </li>
+ </ol>
+</section>
+
+<p>この環境変数はどの log モジュールで log の取得が有効化されるのかを指定します。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre><em>moduleName</em>:<em>level</em>[, <em>moduleName</em>:<em>level</em>]*
+</pre>
+
+<p><font face="serif"><em>moduleName</em></font> は <a href="http://www-archive.mozilla.org/projects/nspr/reference/html/prlog.html#25372"><code>PR_NewLogModule</code></a> の呼び出しで指定される名前か、あるいは、下記のリストにある別名のいずれかです。</p>
+
+<p><font face="serif"><em>level</em></font> は 0 から 5 までの以下の意味を持つ値を指定します。</p>
+
+<ul>
+ <li>0 = PR_LOG_NONE: log を取りません</li>
+ <li>1 = PR_LOG_ALWAYS: 重要。全ての log を取ることを意図しています。</li>
+ <li>2 = PR_LOG_ERROR: errors</li>
+ <li>3 = PR_LOG_WARNING: warnings</li>
+ <li>4 = PR_LOG_DEBUG: デバッグメッセージ、注意</li>
+ <li>5: 全部取ります!</li>
+</ul>
+
+<h2 id="Description" name="Description">Description</h2>
+
+<p><a href="http://www-archive.mozilla.org/projects/nspr/reference/html/prlog.html#25372"><code>PR_NewLogModule</code></a> 呼び出しの name 引数に関連した moduleName と、0 以外のレベルを指定することで <code>moduleName</code> の log を有効化します。</p>
+
+<p>実行時に NSPR の log サービスを制御するために、特別な log モジュール名が提供されています。これらの制御は実行時に <code>NSPR_LOG_MODULES</code>環境変数に設定された場合に、あなたのアプリケーションに関係する NSPR の log サービスに影響を与えます。</p>
+
+<ul>
+ <li><strong>all</strong> 全ての log モジュールを有効化します。<a href="http://www-archive.mozilla.org/projects/nspr/reference/html/prlog.html#25497">PR_LOG</a> の呼び出しで全ての log モジュールを有効にするには、下記のように変数をセットします。
+
+ <pre>set NSPR_LOG_MODULES=all:5</pre>
+ </li>
+ <li><strong>timestamp </strong>結果の各行の先頭に "2015-01-15 21:24:26.049906 UTC - "のような形式のタイムスタンプをつけます。</li>
+ <li><strong>append </strong>NSPR_LOG_FILE に参照される現存するファイルにの log エントリーを追加します。もし指定されていないと、現在存在する NSPR_LOG_FILE の内容は書き換えられ、同じ名前で新しいファイルになります。</li>
+ <li><strong>sync</strong> バッファ無しでのログ取得を有効にします。これは全ての log メッセージが書き込まれるように OS で flush されることを保証しますが、プログラムの実行が遅くなる場合があります。</li>
+ <li><strong>bufsize:size</strong> log のバッファサイズを <font face="serif"><em>size </em></font>にします。</li>
+</ul>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>Toolkit::Storage コンポーネントに起こったことすべてを記録します。各行の先頭にタイムスタンプを付け、ログは /tmp/foo.log に記録されます。(ログファイルは実行ファイルが実行されるたびに書き換えられます)。</p>
+
+<pre>set NSPR_LOG_MODULES=timestamp,mozStorage:5
+set NSPR_LOG_FILE=/tmp/foo.log
+</pre>
+
+<h2 id="試験サーバでのログ取得">試験サーバでのログ取得</h2>
+
+<ul>
+ <li><strong>mochitest</strong> では、 <code>testing/mochitest/runtests.py ファイル内の</code> <code>NSPR_LOG_MODULES</code> を編集し、試験サーバにプッシュします。ログファイルのダウンロードは、 ログビュアーより artifact として行います。</li>
+ <li>(その他のテスト?)</li>
+</ul>
diff --git a/files/ja/mozilla/projects/nspr/reference/pr_jointhread/index.html b/files/ja/mozilla/projects/nspr/reference/pr_jointhread/index.html
new file mode 100644
index 0000000000..44ddbfd9a0
--- /dev/null
+++ b/files/ja/mozilla/projects/nspr/reference/pr_jointhread/index.html
@@ -0,0 +1,453 @@
+---
+title: PR_JoinThread
+slug: Mozilla/Projects/NSPR/Reference/PR_JoinThread
+translation_of: Mozilla/Projects/NSPR/Reference/PR_JoinThread
+---
+<section id="Quick_Links">
+<ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li>
+ <li class="toggle">
+ <details>
+ <summary>Introduction to NSPR</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>NSPR Types</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details open>
+ <summary>Threads</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Process Initialization</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Locks</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Condition Variables</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Monitors</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Cached Monitors</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>I/O Types</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>I/O Functions</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Network Addresses</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Atomic Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Interval Timing</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Date and Time</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Memory Management Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>String Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Floating Point Number to String Conversion</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Linked Lists</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Dynamic Library Linking</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Process Management and Interprocess Communication</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Logging</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li&gt;
+ </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Named Shared Memory</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Anonymous Shared Memory</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>IPC Semaphores</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Thread Pools</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Random Number Generator</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Hash Tables</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>NSPR Error Handling</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Contribute</summary>
+ <ol>
+ <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li>
+ <li><a href="/ja/docs/MDN">The MDN Project</a></li>
+ </ol>
+ </details>
+ </li>
+ </ol>
+</section>
+
+<p>引数で受け取ったスレッドが終了するまで呼んだスレッドをブロックします。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="eval">#include &lt;prthread.h&gt;
+
+<a href="PRStatus">PRStatus</a> PR_JoinThread(<a href="PRThread">PRThread</a> *thread);
+</pre>
+
+<h3 id="Parameter" name="Parameter">引数</h3>
+
+<p><code>PR_JoinThread</code>は以下の引数を受け取ります:</p>
+
+<dl>
+ <dt><code>thread</code></dt>
+ <dd>join可能であり、有効なスレッドの識別子。</dd>
+</dl>
+
+<h3 id="Returns" name="Returns">返り値</h3>
+
+<p>関数は以下の値の1つを返します:</p>
+
+<ul>
+ <li>成功した場合、 <code>PR_SUCCESS を返します。</code></li>
+ <li>失敗した場合--例えば、もしjoin可能なスレッドが見つからなかった場合、もしくはターゲットのスレッドがjoin可能でない場合、<code>PR_FAILURE</code>を返します。</li>
+</ul>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>PR_JoinThreadはスレッドの終了を同期させるために使用されます。この関数は</code>呼んだスレッドをターゲットのスレッドがjoinablleな状態になるまでブロックするという点で同期的です。PR_JoinThreadは、ターゲットスレッドがそのルート関数から戻った後にのみ呼び出し元に戻ります。</p>
+
+<p><code>PR_JoinThreadは</code><code>PR_CreateThreadがreturnされるまで</code>呼び出してはならない。 <code>PR_JoinThread</code> が<code>PR_CreateThreadと</code>同じスレッドで呼ばれない場合、呼び出し元は<code>、PR_CreateThread</code> が完了していることを保証する責任を伴う。</p>
+
+<p>複数のスレッドは同一のスレッドが完了するのを待つことができません。呼び出し元のスレッドの1つが正常に動作しますが、その他はエラーPR_FAILUREで終了します。</p>
+
+<p>ターゲットスレッドがすでに終了している場合、呼び出し側スレッドはブロックされません。</p>
+
+<p><code>PR_JoinThread</code>は中断可能です。</p>
diff --git a/files/ja/mozilla/projects/nspr/reference/prthread/index.html b/files/ja/mozilla/projects/nspr/reference/prthread/index.html
new file mode 100644
index 0000000000..f5912c762b
--- /dev/null
+++ b/files/ja/mozilla/projects/nspr/reference/prthread/index.html
@@ -0,0 +1,429 @@
+---
+title: PRThread
+slug: Mozilla/Projects/NSPR/Reference/PRThread
+translation_of: Mozilla/Projects/NSPR/Reference/PRThread
+---
+<section id="Quick_Links">
+<ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/About_NSPR">About NSPR</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference">NSPR API Reference</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/NSPR_build_instructions">NSPR Build Instruction</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Release_process">NSPR Release Process</a></li>
+ <li class="toggle">
+ <details>
+ <summary>Introduction to NSPR</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Naming_Conventions">NSPR Naming Conventions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Threads">NSPR Threads</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Thread_Schedoling">Thread Scheduling</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Setting_Thread_Priorities">Setting Thread Priorities</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Preempting_Threads">Preempting Threads</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Interrupting_Threads">Interrupting Threads</a></li>
+ </ol>
+ </li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Thread_Synchronization">NSPR Thread Synchronization</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Locks_and_Monitors">Locks and Monitors</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#Condition_Variables">Condition Variables</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Introduction_to_NSPR#NSPR_Sample_Code">NSPR Sample Code</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>NSPR Types</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Calling_Convention_Types">Calling Convention Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Algebraic_Types">Algebraic Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#8-.2C_16-.2C_and_32-bit_Integer_Types">8-, 16-, and 32-bit Integer Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Signed_Integers">Signed Integers</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Unsigned_Integers">Unsigned Integers</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#64-bit_Integer_Types">64-bit Integer Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Floating-Point_Number_Type">Floating-Point Integer Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Native_OS_Integer_Types">Native OS Integer Types</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Miscellaneous_Types">Miscellaneous Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Size_Type">Size Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Pointer_Difference_Types">Pointer Difference Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Boolean_Types">Boolean Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Types#Status_Type_for_Return_Values">Status Type for Return Values</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details open>
+ <summary>Threads</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Types_and_Constants">Threading Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Threading_Functions">Threading Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Creating.2C_Joining.2C_and_Identifying_Threads">Creating, Joining, and Identifying Threads</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Thread_Priorities">Controlling Thread Priorities</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Controlling_Per-Thread_Private_Data">Controlling Per-Thread Private Data</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Interrupting_and_Yielding">Interrupting and Yielding</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Setting_Global_Thread_Concurrency">Setting Global Thread Concurrency</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Threads#Getting_a_Thread.27s_Scope">Getting a Thread's Scope</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Process Initialization</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Identity_and_Versioning">Identity and Versioning</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Name_and_Version_Constants">Name and Version Constants</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Initialization_and_Cleanup">Initialization and Cleanup</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Initialization#Module_Initialization">Module Initialization</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Locks</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Type">Lock Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Locks#Lock_Functions">Lock Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Condition Variables</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Type">Condition Variable Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Condition_Variables#Condition_Variable_Functions">Condition Variable Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Monitors</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Type">Monitor Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Monitors#Monitor_Functions">Monitor Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Cached Monitors</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Cached_Monitors#Cached_Monitor_Functions">Cached Monitor Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>I/O Types</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Directory_Type">Directory Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Descriptor_Types">File Descriptor Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#File_Info_Types">File Info Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Network_Address_Types">Network Address Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Types_Used_with_Socket_Options_Functions">Types Used with Socket Options Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Type_Used_with_Memory-Mapped_I.2FO">Type Used with Memory-Mapped I/O</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Types#Offset_Interpretation_for_Seek_Functions">Offset Interpretation for Seek Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>I/O Functions</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Operate_on_Pathnames">Functions that Operate on Pathnames</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Functions_that_Act_on_File_Descriptors">Functions that Act on File Descriptors</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Directory_I.2FO_Functions">Directory I/O Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Socket_Manipolation_Functions">Socket Manipolation Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Converting_Between_Host_and_Network_Addresses">Converting Between Host and Network Addresses</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Memory-Mapped_I.2FO_Functions">Memory-Mapped I/O Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Anonymous_Pipe_Function">Anonymous Pipe Function</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Polling_Functions">Polling Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Pollable_Events">Pollable Events</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/I_O_Functions#Manipulating_Layers">Manipulating Layers</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Network Addresses</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Types_and_Constants">Network Address Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Network_Addresses#Network_Address_Functions">Network Address Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Atomic Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicIncrement">PR_AtomicIncrement</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicDecrement">PR_AtomicDecrement</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_AtomicSet">PR_AtomicSet</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Interval Timing</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Time_Type_and_Constants">Interval Time Type and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Interval_Timing#Interval_Functions">Interval Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Date and Time</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Types_and_Constants">Types and Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Time_Parameter_Callback_Functions">Time Parameter Callback Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Date_and_Time#Functions">Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Memory Management Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Functions">Memory Allocation Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Memory_Management_Operations#Memory_Allocation_Macros">Memory Allocation Macros</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>String Operations</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strlen">PL_strlen</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strcpy">PL_strcpy</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strdup">PL_strdup</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PL_strfree">PL_strfree</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Floating Point Number to String Conversion</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_strtod">PR_strtod</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_dtoa">PR_dtoa</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_cnvtf">PR_cnvtf</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Linked Lists</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Types">Linked List Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRCList">PRCList</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Linked_Lists#Linked_List_Macros">Linked List Macros</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_CLIST">PR_INIT_CLIST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INIT_STATIC_CLIST">PR_INIT_STATIC_CLIST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_APPEND_LINK">PR_APPEND_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_LINK">PR_INSERT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NEXT_LINK">PR_NEXT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_PREV_LINK">PR_PREV_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_LINK">PR_REMOVE_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_REMOVE_AND_INIT_LINK">PR_REMOVE_AND_INIT_LINK</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_BEFORE">PR_INSERT_BEFORE</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_INSERT_AFTER">PR_INSERT_AFTER</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Dynamic Library Linking</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Types">Library Linking Types</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLibrary">PRLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRStaticLinkTable">PRStaticLinkTable</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Library_Linking_Functions">Library Linking Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLibraryPath">PR_SetLibraryPath</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryPath">PR_GetLibraryPath</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_GetLibraryName">PR_GetLibraryName</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FreeLibraryName">PR_FreeLibraryName</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LoadLibrary">PR_LoadLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_UnloadLibrary">PR_UnloadLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbol">PR_FindSymbol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_FindSymbolAndLibrary">PR_FindSymbolAndLibrary</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Finding_Symbols_Defined_in_the_Main_Executable_Program">Finding Symbols Defined in the Main Executable Program</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Platform_Notes">Platform Notes</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Dynamic_Library_Search_Path">Dynamic Library Search Path</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Dynamic_Library_Linking#Exporting_Symbols_from_the_Main_Executable_Program">Exporting Symbols from the Main Executable Program</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Process Management and Interprocess Communication</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Types_and_Constants">Process Management Types and Constants</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcess">PRProcess</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRProcessAttr">PRProcessAttr</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Process_Management_Functions">Process Management Functions</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Setting_the_Attributes_of_a_New_Process">Setting the Attributes of a New Process</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Process_Management_and_Interprocess_Communication#Creating_and_Managing_Processes">Creating and Managing Processes</a></li>
+ </ol>
+ </li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Logging</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Conditional_Compilation_and_Execution">Conditional Compilation and Execution</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Log_Types_and_Variables">Log Types and Variables</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleInfo">PRLogModoleInfo</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PRLogModoleLevel">PRLogModoleLevel</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_MODULES">NSPR_LOG_MODULES</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_LOG_FILE">NSPR_LOG_FILE</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Logging_Functions_and_Macros">Logging Functions and Macros</a>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NewLogModole">PR_NewLogModole</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogFile">PR_SetLogFile</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_SetLogBuffering">PR_SetLogBuffering</a>/li&gt;
+ </li><li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogPrint">PR_LogPrint</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LogFlush">PR_LogFlush</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG_TEST">PR_LOG_TEST</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_LOG">PR_LOG</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_Assert_">PR_Assert</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_ASSERT">PR_ASSERT</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/PR_NOT_REACHED">PR_NOT_REACHED</a></li>
+ </ol>
+ </li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Logging#Use_Example">Use Example</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Named Shared Memory</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Shared_Memory_Protocol">Shared Memory Protocol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Named_Shared_Memory#Named_Shared_Memory_Functions">Named Shared Memory Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Anonymous Shared Memory</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Memory_Protocol">Anonymous Memory Protocol</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Anonymous_Shared_Memory#Anonymous_Shared_Memory_Functions">Anonymous Shared Memory Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>IPC Semaphores</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/IPC_Semaphores#IPC_Semaphore_Functions">IPC Semaphore Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Thread Pools</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Types">Thread Pool Types</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Thread_Pools#Thread_Pool_Functions">Thread Pool Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Random Number Generator</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Random_Number_Generator#Random_Number_Generator_Function">Random Number Generator Function</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Hash Tables</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Tables_and_Type_Constants">Hash Tables and Type Constants</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/Hash_Tables#Hash_Table_Functions">Hash Table Functions</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>NSPR Error Handling</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Type">Error Type</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Functions">Error Functions</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSPR/Reference/NSPR_Error_Handling#Error_Codes">Error Codes</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Contribute</summary>
+ <ol>
+ <li><a href="/ja/docs/MDN/Doc_status/NSPR"></a></li>
+ <li><a href="/ja/docs/MDN">The MDN Project</a></li>
+ </ol>
+ </details>
+ </li>
+ </ol>
+</section>
+
+<p>NSPRのスレッドです。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="eval">#include &lt;prthread.h&gt;
+
+typedef struct PRThread PRThread;
+</pre>
+
+<h3 id="Description" name="Description">説明</h3>
+
+<p>NSPRでは、スレッドはPRThreadタイプのopaque構造体で表されます。このポインタはたいていのスレッドを操作する関数で要求されます。</p>
+
+<p><code>PRThread*</code>は<span lang="ja">新しいスレッドを作成して、成功した結果のポインタです。識別子は</span>root functionが終了するまで有効であり、もしスレッドがjoinableである場合、joinされます。</p>
diff --git a/files/ja/mozilla/projects/nss/an_overview_of_nss_internals/index.html b/files/ja/mozilla/projects/nss/an_overview_of_nss_internals/index.html
new file mode 100644
index 0000000000..c46cd20c9e
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/an_overview_of_nss_internals/index.html
@@ -0,0 +1,102 @@
+---
+title: NSS 内部の概要
+slug: Mozilla/Projects/NSS/An_overview_of_NSS_Internals
+tags:
+ - API
+ - Intermediate
+ - Intro
+ - NSS
+ - Tools
+translation_of: Mozilla/Projects/NSS/An_overview_of_NSS_Internals
+---
+<p style="margin-left: 40px;"><a href="/ja/docs/Mozilla/Projects/NSS">Network Security Services (NSS)</a> の内部をハイレベルで解説</p>
+
+<p style="margin-left: 40px;">Mozilla.org プロジェクトによって開発されたソフトウェアは、伝統的にセキュリティプロトコルと暗号化アルゴリズムの独自の実装を使用していましたが、元々は Netscape Security Services と呼ばれていましたが、現在では Network Security Services (NSS) と呼ばれています。NSSはC言語で書かれたライブラリです。フリーでオープンソースのソフトウェアであり、多くのソフトウェアプロジェクトが利用を決めています。複数のオペレーティングシステム (OS) をサポートするために、Netscape Portable Runtime (NSPR) と呼ばれるクロスプラットフォーム移植性レイヤーをベースにしており、ファイルシステムアクセス、メモリ管理、ネットワーク通信、マルチスレッドプログラミングなどの OS 固有の API のためのクロスプラットフォームアプリケーションプログラミングインターフェース (API) を提供しています。</p>
+
+<p style="margin-left: 40px;">NSS は多くの機能を提供していますが、ここではモジュールのリスト、設計原理、重要な関連規格について説明します。</p>
+
+<p style="margin-left: 40px;">暗号処理を行うソフトウェアとデバイス間の相互運用性を可能にするため、NSS は PKCS#11 と呼ばれる規格に準拠しています。(11という数字に注目することが重要であることに注意してください。異なる数字で全く異なるトピックを定義する他の PKCS 規格が存在するからです)。</p>
+
+<p style="margin-left: 40px;">PKCS#11 規格に準拠したソフトウェアまたはハードウェアモジュールは、モジュールの特性や提供されるサービスを問い合わせることができるCコールのインターフェースを実装しています。NSS 自身のモジュールの複数の要素がこのインタフェースで実装されており、NSS はそれらのモジュールと話すときにこのインタフェースを利用します。この戦略により、NSSは、PKCS#11インタフェースを実装した多くのハードウェアデバイス(例えば、暗号演算に必要な計算を高速化したり、秘密鍵を安全に保護するスマートカードにアクセスしたり)やソフトウェアモジュール(例えば、追加のアルゴリズムを提供したり、鍵や信頼情報を保存するプラグインとしてそのようなモジュールをロードできるようにする)と連携することが可能になります。</p>
+
+<p style="margin-left: 40px;">NSS の中核となる要素は、ハッシュ関数、大数計算、暗号アルゴリズムを提供するベースライブラリである FreeBL です。<br>
+ <br>
+ Softoken は、ほとんどの FreeBL の機能を PKCS#11 モジュールとして公開する NSS モジュールです。</p>
+
+<p style="margin-left: 40px;">暗号技術の中には、暗号化と復号化の両方に同じ秘密鍵を使用するものがあり、例えばパスワードベース暗号化 (PBE) などがあります。自分でデータを暗号化する場合はこれで十分な場合が多いですが、通信相手と署名/暗号化されたデータをやり取りする必要が出てきたら、公開鍵暗号化を使うことで鍵の管理が簡単になります。公開鍵暗号化を利用する方法を説明した環境を PKI (Public Key Infrastructure) と呼びます。パーティ間で交換される公開鍵は、コンテナを使って輸送されます。コンテナは、標準の X.509 バージョン 3 に従い、証明書と呼ばれています。例えば、証明書には、証明書の所有関係に対する信頼を表す第三者による署名が含まれている。第三者によって割り当てられた信頼は、証明書に含まれる証明書の拡張子に記載されている特定の用途に制限されている場合があります。</p>
+
+<p style="margin-left: 40px;">NSS によって実行される操作の多く (ほとんどではないにせよ) は、X.509 証明書 (しばしば "cert" と略されますが、残念ながら「コンピュータ緊急対応チーム」という用語と混同されやすいです) の使用を伴います。</p>
+
+<p style="margin-left: 40px;">証明書が信頼されているかどうかをチェックする際には、通常は認証局 (CA) と呼ばれる信頼された第三者の署名能力を表す関連するトラストアンカー (ルート証明書) を見つける必要があります。トラストアンカーとは、ソフトウェアベンダー、組織インフラストラクチャ内の管理者、またはソフトウェアユーザーによって、すでに知られており、意図的に信頼されているとマークされている別の X.509 証明書にすぎません。NSS は、事前に定義された CA 証明書のセットを出荷します。このセットは、信頼の割り当てを含め、NSS が CKBI (組み込みルート証明書) と呼ばれるソフトウェアモジュールとして提供し、PKCS#11 インターフェイスも実装しています。組織レベルでは、セットの内容は Mozilla CA ポリシーに従って管理されています。技術的なレベルでは、セットはバイナリソフトウェアモジュールです。</p>
+
+<p style="margin-left: 40px;">データ交換に関連した暗号化や復号化などの暗号化トランザクションは、通常、通信相手 (ピア) の X.509 認証を使用して行われます。また、自分の証明書に属する秘密鍵を安全に保管しておくことも求められます。秘密鍵の保管場所を PBE で保護したいと思うかもしれません。NSS が提供するデフォルトのトラストを変更することにするかもしれません。これらすべての作業には、データの保存、検索、取得が必要です。NSS はストレージと管理 API を提供することで、これらの操作を簡素化します。NSS は、プログラマーが個々の証明書や鍵を含む個々のファイルを管理する必要はありません。その代わりに、NSS は独自のデータベースを利用することができます。一度 NSS のデータベースに証明書や鍵をインポートしてしまえば、それらを簡単に検索して再利用することができます。</p>
+
+<p style="margin-left: 40px;">NSS は NSS データベースを使って操作することを期待しているため、初期化呼び出しを実行することが必須です。最も単純なシナリオでは、プログラマーはinit関数のパラメータとしてファイルシステム上のディレクトリを提供し、NSSは残りの部分を行うように設計されています。既存のデータベースを検出して開くか、新しいデータベースを作成します。また、証明書の永続的な記録を使用したくないと判断した場合は、データベースなしモードでNSSを初期化することもできます。通常、新しいデータが恒久的なストレージに追加されるとすぐに、NSS はすべてのデータをディスクにフラッシュする。ストレージは複数のファイルで構成されています。鍵データベースファイルには秘密鍵が格納され、証明書データベースファイルには、自分の証明書の公開部分、ピアや認証局の証明書、信頼決定のリスト(組み込みの認証局を信頼しない、他の認証局を明示的に信頼するなど)が格納されています。データベースファイルの例としては、key3.db と cert8.db があります。3番目のファイルには、NSS が使用するために登録された外部 PKCS#11 モジュールのリストが含まれています。このファイルは secmod.db という名前にすることもできますが、新しい世代のデータベースではpkcs11.txtという名前のファイルが使用されます。</p>
+
+<p style="margin-left: 40px;">これらのデータベースファイルに直接アクセスして操作できるのは NSS だけです。NSS を使用するプログラマーは、これらのファイルに保存されているデータを操作するために NSS が提供する API を経由しなければなりません。プログラマーの仕事は、必要なパラメータ (データベースなど) で NSS を初期化することであり、その後 NSS はデータベースファイルを透過的に管理します。</p>
+
+<p style="margin-left: 40px;">ほとんどの場合、証明書や鍵は NSS のデータベースに格納されることになっています。したがって、最初のインポートや作成の後、プログラマーは通常、それらの生のバイトを処理しません。その代わりに、プログラマはルックアップ関数を使用し、NSS はその後アプリケーションのコードで使用されるアクセスハンドルを提供します。これらのハンドルは参照カウントされます。NSS は通常、証明書がネットワークから受信され、ディスクから読み込まれ、データベースから検索されると、証明書のインメモリ (RAM) プレゼンテーションを作成し、証明書のプロパティを含むインメモリデータ構造を準備します。一旦、アプリケーションがハンドルを使用して終了すると、それは解放され、NSS が関連するリソースを解放することができるようになります。秘密鍵のハンドルを扱う場合、通常、アプリケーションが生の鍵データにアクセスすることは困難であり (望ましくない)、そのため NSS からそのようなデータを抽出することは難しいかもしれません。そのため、NSS からそのようなデータを抽出するのは難しいかもしれません。通常の最低限の要件は、秘密鍵を保護層 (パスワードベースの暗号化など) でラップすることです。これは、セキュリティのためのコードのレビューを容易にするための意図があります。生の秘密鍵にアクセスできるコードが少なければ少ないほど、レビューしなければならないコードは少なくなります。</p>
+
+<p style="margin-left: 40px;">NSS には、生の鍵を検索する機能が限られています。好ましいアプローチは証明書を利用することであり、含まれるサブジェクト名 (証明書の所有者を表す情報) などのプロパティで証明書を検索することです。例えば、NSS は新しい公開鍵/秘密鍵ペアのランダム計算 (生成) をサポートしていますが、このような生の鍵ペアを扱うのは難しいです。通常のアプローチは、アプリケーションの作成ステップが完了するとすぐに証明書署名要求 (CSR) を作成し、鍵ペアへのハンドルを作成します。通常のフォローアップ動作は、CA から署名された証明書を受け取ることです。(ただし、NSS の機能を使用して自己署名証明書を作成することも可能ですが、通常は他の当事者から信頼されません)。受信したら、NSS にそのような新しい証明書を NSS データベースにインポートするように指示すれば十分で、NSS は自動的に埋め込まれた公開鍵の検索を行い、関連する秘密鍵を見つけることができ、その後、それを個人証明書として扱うことができます (個人証明書とは、個人の証明書のことです)。(個人証明書とは、秘密鍵を保有している証明書で、データの署名やデータの復号に使用することができます) インポート時に証明書に一意のニックネームを割り当てることができます。</p>
+
+<p style="margin-left: 40px;">NSS が返すすべてのハンドルについて、NSS は厳密なクリーンアップを要求することに注意してください。アプリケーションは、ハンドルが不要になったら、常に適切な参照解除(破棄)関数を呼び出す必要があります。これは、再起動せずにデータベースを閉じ、別のデータベースを使用してNSSを再初期化する必要があるかもしれないアプリケーションにとって特に重要です。データ要素がまだ参照されている場合、このような操作は実行時に失敗する可能性があります。</p>
+
+<p style="margin-left: 40px;">FreeBL、Softoken、CKBI モジュールに加えて、一般的な操作 (データフォーマット間のエンコード/デコード、標準化されたオブジェクト識別子 (OID) のリストなど) のためのユーティリティライブラリがあります。NSS には、Secure Sockets Layer/Transport Layer Security ネットワークプロトコルを実装する SSL/TLS モジュール、セキュアなメールで使用される CMS メッセージングといくつかのインスタントメッセージング実装を実装する S/MIME モジュール、古典的なデータベースストレージを実装する DBM ライブラリ、そして最後に「その他すべて」の大きなセットのためのコア NSS ライブラリがあります。データベースの新世代は、複数のアプリケーションによる同時アクセスを可能にするために SQLite データベースを使用しています。</p>
+
+<p style="margin-left: 40px;">これらはすべて共有ライブラリとして提供されています。特定の種類の証明書要求を生成するために使用される CRMF ライブラリは、スタティックリンク専用のライブラリとして提供されています。</p>
+
+<p style="margin-left: 40px;">証明書 (X.509) 、PKCS#12 (証明書と鍵) 、PKCS#7 (署名データ) などのファイル形式、CMS としてのメッセージ形式を扱う場合、構造化されたデータを非常に効率的に (小さいサイズの) プレゼンテーションで格納するための構文である ASN.1 に言及しなければなりません。元々は通信システムのために開発されたもので、データをできるだけ少なくすることが重要な時代に開発されました (現在でもこの原理を使うことはパフォーマンスを上げるためには意味がありますが)。ASN.1 フォーマットで利用可能なデータを処理するためには、通常のアプローチでは、データを解析して、(入れ子になった) C データ構造のような、より多くのスペースを必要とするが作業しやすいプレゼンテーションに転送します。その間、NSS は3つの異なる ASN.1 パーサの実装を受け取ってきましたが、それぞれに固有の特性、長所と短所があり、それが今でも使われている理由です (副作用のリスクがあるため、古いものを新しいものに置き換える勇気はまだありません)。ASN.1 パーサを使用する場合、テンプレート定義がパーサに渡され、それに応じて ASN.1 データストリームを解析します。テンプレートは通常、RFC 文書に記載されている定義と密接に一致しています。</p>
+
+<p style="margin-left: 40px;">DER として記述されたデータブロックは通常 ASN.1 形式です。どのデータを期待しているかを把握し、ソフトウェアのインタラクションのコンテキストに基づいて、正しいテンプレートを使用して解析する必要があります。PEM として記述されたデータは DER の base64 エンコードされたプレゼンテーションで、通常は人間が読める BEGIN/END 行の間にラップされています。NSS はバイナリ表示を好みますが、特にファイルからデータをインポートする場合には、base64 または ASCII 表示を使用することができます。最近の開発では、秘密鍵を含む外部の PEM ファイルを読み込むためのサポートが追加されました。</p>
+
+<p style="margin-left: 40px;">コードレベルで見ると、NSS は常に生データのブロックを扱っています。このような型なしブロックを格納するための一般的な構造は SECItem で、サイズと型なし C ポインタ変数を含んでいます。</p>
+
+<p style="margin-left: 40px;">メモリを扱うとき、NSS はアリーナを利用しています。これは C 言語の限られた機能で管理を簡単にする試みです (デストラクタがないので)。これは、クリーンアップを簡単にするために、複数のメモリ割り当てをグループ化するという考えです。ある操作を実行すると、多くの個別のデータ項目を割り当てる必要があり、コードはロジック内の多くの位置でタスクを中止する必要があるかもしれません。アリーナはタスクの処理が開始されると要求され、そのタスクに論理的に関連付けられたすべてのメモリ割り当てが関連付けられたアリーナから要求されます。アリーナの実装により、すべての個々のメモリブロックが追跡されます。タスクが完了すると、それが完了したか中止されたかにかかわらず、プログラマはアリーナを解放するだけで、個々に割り当てられたすべてのブロックが自動的に解放されます。解放はしばしば、攻撃者がメモリダンプから鍵を取り出すことをより困難にするために、アリーナに関連するメモリを即座に消去 (ゼロ化、zfree) することと組み合わされます。<br>
+ <br>
+ NSS は多くの C 言語のデータ構造を使用しています。多くの場合、NSS は同じまたは類似した概念のために複数の実装を持っています。例えば、複数の証明書のプレゼンテーションがあり、NSS 内部 (そして時には NSS を使用するアプリケーション) はそれらの間で変換する必要があるかもしれません。<br>
+ <br>
+ NSS の鍵となる責任は、署名と証明書の検証です。デジタル署名を検証するためには、アプリケーションデータ (例えば、署名された文書)、署名データブロック (デジタル署名)、公開鍵 (署名者であると考えられる証明書に含まれるもので、署名とともに受信したメタデータによって識別されるものなど) を調べなければなりません。署名データブロックが公開鍵の所有者によって生成されたものでなければならないことを示すことができれば、署名は検証されます (関連する秘密鍵を持っているのはその所有者だけなので)。</p>
+
+<p style="margin-left: 40px;">証明書 (A) を検証するには、いくつかの追加ステップが必要です。まず、証明書 (A) の潜在的な署名者 (B) を特定しなければなりません。これは、証明書 (A) の “issuer name” 属性を読み取り、その発行者証明書(B)を見つけようとすることによって行われます (その名前を “subject name” として使用している証明書を探すことによって)。そして、(A) で見つけた署名を (B) で見つけた公開鍵を使って検証しようとします。同じサブジェクト名を持つ複数の証明書 (B1, B2, ...) をそれぞれ試してみる必要があるかもしれません。<br>
+ <br>
+ 成功した後、この手順を再帰的に繰り返す必要があるかもしれません。最終的には、適切なトラストが割り当てられている証明書 B (または C または...) を見つけることが目的です (例えば、CKBI モジュール内で見つけられ、ユーザがトラストの上書き決定を行っていない場合や、ユーザまたはローカル環境で管理されているNSS データベースファイル内で見つけられる場合など)。</p>
+
+<p style="margin-left: 40px;">(複数の) 発行者証明書の署名の検証に成功した後、証明書 A の検証はまだ終わっていません。例えば、署名が行われた時点で証明書が有効であること、証明書内の名前が予想される署名者と一致していること (サブジェクト名、一般名、メール、アプリケーションに基づくチェック) 、証明書内に記録されている信頼制限 (拡張子) が使用を許可していること (例えば、暗号化は許可されているかもしれないが、署名は許可されていない) 、環境/アプリケーションポリシーに基づいて、失効チェック (OCSP または CRL) を行う必要がある場合があります。<br>
+ <br>
+ CKBI モジュールに含まれるトラスト・アンカーは、通常、自己署名されたものであり、サブジェクト名と発行者名のフィールドが同一であると定義されます。自己署名付き証明書が明示的に信頼されているとマークされている場合、NSS は自己署名の有効性のチェックをスキップします。</p>
+
+<p style="margin-left: 40px;">NSSには、証明書の検証を行うための複数のAPIがあります。例えば、(B)発行者候補の証明書がすべて同じサブジェクト名と発行者名を持ち、有効期間によって異なる場合など、非常に安定しており、すべての単純なシナリオで問題なく動作する古典的なエンジンがありますが、より高度なシナリオでは限られた範囲でしか動作しません。残念ながら、最近の証明書の世界はより複雑になっています。新規の認証局が世界の PKI 市場に参入し、事業を開始するために、既存の認証局と取引を行い、いわゆる相互署名証明書を受け取ることがある。その結果、(A) から信頼できるアンカー (ルート) 証明書 (Z) への信頼パスを検索する際に、候補となる発行者証明書のセットが異なる発行者名 (2 番目以上の発行者レベルを参照) を持つ可能性があります。その結果、(Z) を検索しながら、再帰的に複数の異なる代替ルートを試す必要がある。新しい検証エンジン (内部的に libPKIX と名付けられています) だけがこれを適切に行うことができます。<br>
+ <br>
+ これは、ソフトウェアベンダと認証局が、ウェブサイト証明書の証明書を発行するためのより厳格なルールを定義するための努力です。証明書の要求者が希望するウェブサイトのドメインの管理メールアドレスを管理していることを単に検証するのではなく、認証局が実世界の身元確認書類 (国の当局による会社登録書類など) の検証を行うことが要求され、また、ブラウザソフトウェアが証明書の有効性を付与する前に、認証局との失効チェックを行うことが要求されている。EV 証明書を区別するために、CA は証明書にポリシー OID を埋め込み、ブラウザはトラストチェーンがエンドエンティティ (EE) 証明書がポリシーを利用することを許可しているかどうかを検証することが期待されています。ポリシーの検証を実行できるのは、新しい libPKIX エンジンの API だけです。<br>
+ <br>
+ これを機に、サーバへの SSL/TLS 接続について一般的に (EVに限らず、Web サイトに限らず) 話すことにしましょう。このドキュメントでSSLについて言及している場合は、必ず SSL か TLS のどちらかを指しています。(TLS は SSL の新しいバージョンで、機能が強化されています)。</p>
+
+<p style="margin-left: 40px;">サーバへの SSL 接続を確立する際には、(少なくとも) サーバ証明書 (とそのトラストチェーン) がサーバからクライアント (ブラウザなど) に交換され、クライアントはその証明書が検証可能であることを確認します (期待される宛先サーバの名前と一致することを含む)。両者間のハンドシェイクのもう一つの部分は、鍵の交換です。公開鍵暗号化は (双方が同じ鍵を使用する) 対称暗号化よりもコストがかかる (計算が必要) ため、鍵合意プロトコルが実行され、公開鍵と秘密鍵を使用して、交換された初期情報の証明と検証が行われます。鍵合意が行われると、対称暗号化が使用されます (既存のチャネル上で潜在的な再ハンドシェイクが行われるまで)。SSL 接続に使用されるハッシュと暗号化アルゴリズムの組み合わせは暗号化スイートと呼ばれます。</p>
+
+<p style="margin-left: 40px;">NSS は技術的なレベルでサポートしている暗号化スイートのセットを出荷しています。さらに、NSS はデフォルトでどの暗号化スイートを有効にするかを定義するデフォルトポリシーを持っています。アプリケーションは、有効になっている暗号スイートのセットを変更するための関数呼び出しを使用して、プログラム実行時に使用されるポリシーを変更することができます。</p>
+
+<p style="margin-left: 40px;">プログラマが NSS が証明書を検証する方法や、SSL 接続のハンドシェイクで提示されるデータを検証する方法に影響を与えたい場合、適切な時点で NSS によって呼び出されるアプリケーション定義のコールバック関数を登録することができ、NSS によって行われた決定を上書きするために使用することができます。</p>
+
+<p style="margin-left: 40px;">SSL を実装したツールキットとして NSS を使いたい場合は、まず NSS を init しなければならないことを覚えておいてください。しかし、デフォルトのトラストを恒久的に変更することを気にしない (ディスクに記録されている) 場合は、データベースなしの init コールを使用することができます。データ交換のためのネットワークソケットを作成する際には、NSPR と NSS が提供するオペレーティングシステムに依存しない API を使用しなければならないことに注意してください。NSPR ファイルディスクリプタのプロパティに触れておくと面白いかもしれません。これは、データ処理に関与する複数のレイヤーを定義できることを意味します。ファイル記述子は、データを扱う最初のレイヤーへのポインタを持っています。そのレイヤは、潜在的な第2のレイヤへのポインタを持ち、そのレイヤは第3のレイヤへの別のポインタを持っているかもしれません。各レイヤーは、open/close/read/write/poll/select (など) 関数のための独自の関数を定義しています。SSL ネットワーク接続を使用する場合、基本的な NSPR 層と SSL ライブラリ層の 2 つの層を既に持っています。Mozilla アプリケーションでは、アプリケーション固有の処理が行われる第三のレイヤーを定義しています。詳細は NSPR のリファレンスドキュメントを参照してください。</p>
+
+<p style="margin-left: 40px;">NSS は、アプリケーションから要求された接続に加えて、アウトバウンドネットワーク接続を作成しなければならないことがあります。例としては、OCSP (オンライン証明書ステータスプロトコル) 情報の取得や、CRL (証明書失効リスト) のダウンロードなどがあります。ただし、NSS にはネットワークプロキシを使用するための実装がありません。アプリケーションでプロキシをサポートする必要がある場合は、httpリクエストコールバックインターフェースの独自の実装を登録することができ、NSS はプロキシをサポートするアプリケーションコードを使用することができます。</p>
+
+<p style="margin-left: 40px;">ハッシュ化、暗号化、復号化関数を使用する場合は、(大容量バッファ上で動作するのとは対照的に) データをストリーム化することが可能です。操作に必要なすべてのパラメータを提供しながらコンテキストハンドルを作成し、"update" 関数を複数回呼び出して入力のサブセットを NSS に渡します。データは処理され、直接返されるか、コンテキストに登録されたコールバック関数に送られます。処理が終わったら、保留中のデータをフラッシュアウトしてリソースを解放する最終化関数を呼び出します。</p>
+
+<p style="margin-left: 40px;">この行は、今後のセクションで libpkix がどのように動作し、どのように設計されているかを説明するためのプレースホルダです。</p>
+
+<p style="margin-left: 40px;">NSS を使って作業したい場合は、NSS 開発者が提供しているコマンドラインユーティリティを使うと便利なことが多いです。NSS データベースの管理、証明書のダンプや検証、PKCS#11 モジュールをデータベースに登録するためのツール、CMS の暗号化/署名されたメッセージを処理するためのツールなどがあります。</p>
+
+<p style="margin-left: 40px;">例えば、あなた自身の鍵のペアを作成して CA から新しい証明書を要求したい場合、certutil を使って空のデータベースを作成し、あなたのデータベース上で操作して証明書要求を作成し (これは希望する鍵のペアを作成することを含む)、それをファイルにエクスポートし、要求ファイルを CA に提出し、CA からファイルを受け取り、あなたのデータベースに証明書をインポートすることができます。証明書をインポートする際には、後で参照しやすくするために、良いニックネームを割り当てる必要があります。</p>
+
+<p style="margin-left: 40px;">複数のアプリケーションで同時にアクセスできる最初のデータベース形式は key4.db/cert9.db であることに注意してください。つまり、ブラウザやサーバーが古い NSS のデータベース形式で動作している場合は、他のソフトウェアが実行している間は NSS ツールで操作しないようにしてください。執筆時点では、NSS と Mozilla アプリケーションは、各アプリケーションが独自の NSS データベースを持っている古いデータベースファイル形式をデフォルトで使用しています。</p>
+
+<p style="margin-left: 40px;">秘密鍵を含む NSS データベースに保存された証明書のコピーが必要な場合は、pk12util を使って PKCS#12 ファイル形式にエクスポートすることができます。PEM 形式の証明書が必要な場合は、openssl pkcs12 コマンド (これは NSS ではありません) を使用して PKCS#12 ファイルを PEM に変換することができます。</p>
+
+<p style="margin-left: 40px;">この行は、データベースの準備の仕方、証明書のダンプの仕方、データの変換の仕方のプレースホルダです。</p>
+
+<p style="margin-left: 40px;">Firefox や Thunderbird などの Mozilla アプリケーションで NSS が使われているので、NSS を使って作業する気になったかもしれません。Mozilla アプリケーションをビルドすれば、NSS ライブラリも自動的にビルドされます。しかし、NSS のコマンドラインツールで作業したい場合は、スタンドアロンの NSS のビルド手順に従って、Mozilla アプリケーションのソースの外で NSS をビルドする必要があります。</p>
+
+<p style="margin-left: 40px;">鍵データベースファイルには、少なくとも一つの対称鍵が含まれており、これは必要に応じて NSS が自動的に作成し、秘密鍵 (秘密鍵) を保護するために使用されます。この対称鍵は、データベースにマスターパスワードを設定することで PBE で保護することができます。マスターパスワードを設定するとすぐに、攻撃者がマスターパスワードを盗むことに成功しない限り、 鍵データベースを盗む攻撃者は秘密鍵にアクセスできなくなります。</p>
+
+<p style="margin-left: 40px;">今、あなたは <a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">NSS のソースを取得する方法、NSS を構築し、テストする方法</a>に興味があるかもしれません。</p>
diff --git a/files/ja/mozilla/projects/nss/building/index.html b/files/ja/mozilla/projects/nss/building/index.html
new file mode 100644
index 0000000000..01f2a7c355
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/building/index.html
@@ -0,0 +1,112 @@
+---
+title: NSS のビルド
+slug: Mozilla/Projects/NSS/Building
+translation_of: Mozilla/Projects/NSS/Building
+---
+<h2 id="Introduction">Introduction</h2>
+
+<p>This page has detailed information on how to build NSS. Because NSS is a cross-platform library that builds on many different platforms and has many options, it may be complex to build. Please read these instructions carefully before attempting to build.</p>
+
+<h2 id="Build_environment">Build environment</h2>
+
+<p>NSS needs a C and C++ compiler.  It has minimal dependencies, including only standard C and C++ libraries, plus <a href="https://www.zlib.net/">zlib</a>.</p>
+
+<p>For building, you also need <a href="https://www.gnu.org/software/make/">make</a>.  Ideally, also install <a href="https://gyp.gsrc.io/">gyp</a> and <a href="https://ninja-build.org/">ninja</a> and put them on your path.  This is recommended, as the build is faster and more reliable.</p>
+
+<h3 id="Windows">Windows</h3>
+
+<p>NSS compilation on Windows uses the same shared build system as Mozilla Firefox. You must first install the <a href="/en-US/docs/Developer_Guide/Build_Instructions/Windows_Prerequisites">Windows Prerequisites</a>, including <strong>MozillaBuild</strong>.</p>
+
+<p>You can also build NSS on the Windows Subsystem for Linux, but the resulting binaries aren't usable by other Windows applications.</p>
+
+<h2 id="Get_the_source">Get the source</h2>
+
+<p>NSS and NSPR use Mercurial for source control like other Mozilla projects. To check out the latest sources for NSS and NSPR--which may not be part of a stable release--use the following commands:</p>
+
+<pre class="notranslate">hg clone https://hg.mozilla.org/projects/nspr
+hg clone https://hg.mozilla.org/projects/nss
+</pre>
+
+<p>To get the source of a specific release, see <a href="/en-US/docs/Mozilla/Projects/NSS/NSS_Releases">NSS Releases</a>.</p>
+
+<dl>
+ <dd>
+ <dl>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="Build">Build</h2>
+
+<p>Build NSS using our build script:</p>
+
+<pre class="notranslate">nss/build.sh
+</pre>
+
+<p>This builds both NSPR and NSS.</p>
+
+<h2 id="Build_with_make">Build with make</h2>
+
+<p>Alternatively, there is a <code>make</code> target called "nss_build_all", which produces a similar result.  This supports some alternative options, but can be a lot slower.</p>
+
+<pre class="notranslate">make -C nss nss_build_all USE_64=1
+</pre>
+
+<p>The make-based build system for NSS uses a variety of variables to control the build. Below are some of the variables, along with possible values they may be set to.</p>
+
+<dl>
+ <dt>BUILD_OPT</dt>
+ <dd>
+ <dl>
+ <dt>0</dt>
+ <dd>Build a debug (non-optimized) version of NSS. <em>This is the default.</em></dd>
+ <dt>1</dt>
+ <dd>Build an optimized (non-debug) version of NSS.</dd>
+ </dl>
+ </dd>
+ <dt>USE_64</dt>
+ <dd>
+ <dl>
+ <dt>0</dt>
+ <dd>Build for a 32-bit environment/ABI. <em>This is the default.</em></dd>
+ <dt>1</dt>
+ <dd>Build for a 64-bit environment/ABI. <em>This is recommended.</em></dd>
+ </dl>
+ </dd>
+ <dt>USE_ASAN</dt>
+ <dd>
+ <dl>
+ <dt>0</dt>
+ <dd>Do not create an <a href="http://clang.llvm.org/docs/AddressSanitizer.html">AddressSanitizer</a> build. <em>This is the default.</em></dd>
+ <dt>1</dt>
+ <dd>Create an AddressSanitizer build.</dd>
+ </dl>
+ </dd>
+</dl>
+
+<h2 id="Unit_testing">Unit testing</h2>
+
+<p>NSS contains extensive unit tests.  Scripts to run these are found in the <code>tests</code> directory.  Run the standard suite by:</p>
+
+<pre class="notranslate">HOST=localhost DOMSUF=localdomain USE_64=1 nss/tests/all.sh</pre>
+
+<h3 id="Unit_test_configuration">Unit test configuration</h3>
+
+<p>NSS tests are configured using environment variables.<br>
+ The scripts will attempt to infer values for <code>HOST</code> and <code>DOMSUF</code>, but can fail. Replace <code>localhost</code> and <code>localdomain</code> with the hostname and domain suffix for your host. You need to be able to connect to <code>$HOST.$DOMSUF</code>.</p>
+
+<p>If you don't have a domain suffix you can add an entry to <code>/etc/hosts</code> (on Windows,<code> c:\Windows\System32\drivers\etc\hosts</code>) as follows:</p>
+
+<pre class="notranslate"><code>127.0.0.1 localhost.localdomain</code></pre>
+
+<p>Validate this opening a command shell and typing: <code>ping localhost.localdomain</code>.</p>
+
+<p>Remove the <code>USE_64=1</code> override if using a 32-bit build.</p>
+
+<h3 id="Test_results">Test results</h3>
+
+<p>Running all tests can take a considerable amount of time.</p>
+
+<p>Test output is stored in <code>tests_results/security/$HOST.$NUMBER/</code>.  The file <code>results.html</code> summarizes the results, <code>output.log</code> captures all the test output.</p>
+
+<p>Other subdirectories of <code>nss/tests</code> contain scripts that run a subset of the full suite. Those can be run directly instead of <code>all.sh</code>, which might save some time at the cost of coverage.</p>
diff --git a/files/ja/mozilla/projects/nss/getting_started_with_nss/index.html b/files/ja/mozilla/projects/nss/getting_started_with_nss/index.html
new file mode 100644
index 0000000000..49c550df32
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/getting_started_with_nss/index.html
@@ -0,0 +1,58 @@
+---
+title: NSS を始める
+slug: Mozilla/Projects/NSS/Getting_started_with_NSS
+translation_of: Mozilla/Projects/NSS/Getting_started_with_NSS
+---
+<h2 id="NSSとの関わり方">NSSとの関わり方</h2>
+
+<p>Network Security Services (NSS) は、Mozilla ソフトウェアで使用されている暗号アルゴリズムやセキュアなネットワークプロトコルのベースライブラリです。</p>
+
+<p>Mozilla Firefox やその他の NSS を利用したアプリケーションのコアセキュリティを向上させるために、あなたも協力してみませんか?私たちはあなたの貢献を楽しみにしています!</p>
+
+<p>あなたの興味やスキルにマッチした分野を特定するために、私たちはあなたを支援することができます。<a href="/ja/docs/Archive/Mozilla/Getting_started_with_chat">Mozilla IRC</a> のチャンネル #nss や <a href="https://lists.mozilla.org/listinfo/dev-tech-crypto/">mozilla.dev.tech.crypto</a> ニュースグループで質問することができます。</p>
+
+<p>NSS ライブラリとそれをサポートするコマンドラインツールは C プログラミング言語で書かれています。ビルドシステムと自動テストは makefile と bash スクリプトに基づいています。</p>
+
+<p>時間の経過とともに、NSS のさまざまな側面を説明する多くのドキュメントが作成されてきました。まずは以下から始めてみてください。</p>
+
+<ul>
+ <li>現在の<a href="/ja/docs/Mozilla/Projects/NSS">主な NSS ドキュメントのページ</a>から他のドキュメントにリンクしています</li>
+ <li>NSS を使用するアプリケーションの<a href="/ja/docs/Mozilla/Projects/NSS/Overview_of_NSS">一般的な概要</a>と、NSS が提供する機能について説明します</li>
+ <li>ハイレベルで <a href="/ja/docs/Mozilla/Projects/NSS/An_overview_of_NSS_Internals">NSS の内部</a>を紹介します</li>
+ <li><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">NSS ソースの取得、構築、テスト</a>について学びます</li>
+ <li>アーカイブされた mozilla.org ウェブサイトにある<a href="https://www-archive.mozilla.org/projects/security/pki/nss/">古いドキュメント</a></li>
+</ul>
+
+<p>(残念ながら、NSS プロジェクトには現時点でテクニカルライターがいないため、私たちのドキュメントは私たちが望むほど整理されていません。より良い方法でドキュメントを整理することで貢献できるかもしれません)。</p>
+
+<h2 id="NSS_サンプルコード">NSS サンプルコード</h2>
+
+<p>NSS アプリケーションの書き方を学ぶのに適した場所は、NSS 開発者によってメンテナンスされているコマンドラインツールです。サブディレクトリ mozilla/security/nss/cmd にあります。</p>
+
+<p>または、いくつかの基本的な <a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sample_Code">NSS サンプルコー</a>ドを見てみてください。</p>
+
+<p>新しいサンプルのセットは現在開発中で、<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490238">新しい NSS サンプルの作成</a>を参照してください。</p>
+
+<p>サンプルは以下の方法でダウンロードできます:: hg clone https://hg.mozilla.org/projects/nss; cd nss; hg update SAMPLES_BRANCH</p>
+
+<h2 id="How_to_Contribute">How to Contribute</h2>
+
+<p>... (この部分はまだ工事中ですが、貢献の機会はたくさんあります)</p>
+
+<p>bugzilla アカウントをお持ちでない場合は、<a href="https://bugzilla.mozilla.org/">bugzilla.mozilla.org</a> でアカウントを開設してください。</p>
+
+<p>NSS :: Libraries コンポーネントを使用して、作業したい問題を探してください。私たちは <a href="https://bugzilla.mozilla.org/buglist.cgi?keywords=good-first-bug%2C%20&amp;keywords_type=allwords&amp;classification=Components&amp;query_format=advanced&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;component=Libraries&amp;product=NSS">"good-first-bug" というキーワードでマークされた NSS バグ</a>のリストを管理しています。</p>
+
+<h3 id="Creating_your_Patch">Creating your Patch</h3>
+
+<p>パッチの作成を始めるには、<a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">NSS のソース、ビルド、テスト</a>についてのセクションを参照してください。満足したら、コードレビューが必要になります。</p>
+
+<h3 id="Code_Review">Code Review</h3>
+
+<p><a href="https://phabricator.services.mozilla.com">http://phabricator.services.mozilla.com/</a> は、あなたのBugzilla アカウントを使用するコードレビューツールです。<a href="https://moz-conduit.readthedocs.io/en/latest/phabricator-user.html">レビューのためにパッチをアップロードするには、Phabricator のユーザーインストラクション</a>を使用してください。</p>
+
+<p>コードレビュー中に評価されるいくつかの項目は、<a href="https://github.com/mozilla/nss-tools/blob/master/nss-code-review-checklist.yaml">Githubのチェックリストフォーム</a>に記載されています。</p>
+
+<p>レビューを通過した後、あなたのパッチはNSSチームのメンバーによって着地することができます。<a href="/ja/docs/Archive/Mozilla/Getting_started_with_chat">Mozilla IRC</a> のチャンネル #nss で私たちを見つけることができます。</p>
+
+<p>レビューとテストの両方が行われていないコードは着地させないことに注意してください。コードはテストがあって初めて機能し、テストは自動化の一部であるときにのみ機能します。</p>
diff --git a/files/ja/mozilla/projects/nss/index.html b/files/ja/mozilla/projects/nss/index.html
new file mode 100644
index 0000000000..c72ab56cff
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/index.html
@@ -0,0 +1,180 @@
+---
+title: Network Security Services
+slug: Mozilla/Projects/NSS
+tags:
+ - NSS
+ - NeedsMigration
+translation_of: Mozilla/Projects/NSS
+---
+<p><strong>Network Security Services</strong> (<strong>NSS</strong>) は、セキュリティ対応のクライアントおよびサーバアプリケーションのクロスプラットフォーム開発をサポートするために設計されたライブラリのセットです。NSS を使用して構築されたアプリケーションは、SSL v3、TLS、PKCS #5、PKCS #7、PKCS #11、PKCS #12、S/MIME、X.509 v3 証明書、およびその他のセキュリティ標準をサポートすることができます。</p>
+
+<p>サポートされている規格の詳細については、<a href="/ja/docs/Mozilla/Projects/NSS/Overview_of_NSS">NSS の概要</a>を参照してください。よくある質問のリストについては、<a href="/ja/docs/Mozilla/Projects/NSS/NSS_FAQ">FAQ</a>を参照してください。</p>
+
+<p>NSS は Mozilla Public License の下で利用可能です。NSS のリリースを tar ファイルとしてダウンロードする方法については、<a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">Download PKI Source</a> を参照してください。</p>
+
+<p>開発者の方でNSSに貢献したいと思っている方は、NSSの内部の詳細についてのハイレベルな概要と、NSSを使い始めるためのドキュメントを読んでみてはいかがでしょうか。</p>
+
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h2 class="Documentation" id="Documentation" name="Documentation">ドキュメント</h2>
+
+ <h3 id="背景となる情報">背景となる情報</h3>
+
+ <dl>
+ <dt><a href="/ja/docs/Mozilla/Projects/NSS/Overview_of_NSS">NSS の概要</a></dt>
+ <dd>NSS とその能力の概要を説明します。</dd>
+ <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_FAQ">NSS FAQ</a></dt>
+ <dd>NSS に関する基本的な質問に答えます。</dd>
+ <dt><a href="/ja/docs/Introduction_to_Public-Key_Cryptography">公開鍵暗号入門</a></dt>
+ <dd>NSS の基礎となる公開鍵暗号の基本的な概念を解説します。</dd>
+ <dt><a href="/ja/docs/Introduction_to_SSL">SSL 入門</a></dt>
+ <dd>SSL でサポートされている暗号化方式や、SSL ハンドシェイクの手順など、SSL プロトコルを紹介しています。</dd>
+ </dl>
+
+ <h3 id="はじめに">はじめに</h3>
+
+ <dl>
+ <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Releases">NSS のリリース</a></dt>
+ <dd>このページでは、NSS の現在のリリース情報と過去のリリース情報を掲載しています。</dd>
+ <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sources_Building_Testing">ソースコードを取得してビルドする</a></dt>
+ <dd>サポートされている異なるプラットフォーム上で NSS を構築する方法の説明書。</dd>
+ <dt><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Source_Code/Mercurial">Mercurial を使って Mozilla のソースコードを取得する</a></dt>
+ <dd>Mercurial との連携についての情報です。</dd>
+ <dt><a href="/ja/docs/Mozilla/Developer_Guide/Source_Code/CVS">CVS を使った Mozilla ソースコードの取得 (非推奨)</a></dt>
+ <dd>古い非推奨の CVS ドキュメント。</dd>
+ </dl>
+
+ <h3 id="NSS_の_API">NSS の API</h3>
+
+ <dl>
+ <dt><a href="/ja/docs/Mozilla/Projects/NSS/Introduction_to_Network_Security_Services">Network Security Services のご紹介</a></dt>
+ <dd>NSS ライブラリの概要と使用するために知っておくべきことを紹介しています。</dd>
+ <dt><a href="/ja/docs/Mozilla/Projects/NSS/SSL_functions">NSS SSL 公開関数</a></dt>
+ <dd>NSS 共有ライブラリがエクスポートした SSL API をまとめます。</dd>
+ <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_reference">NSS SSL リファレンス</a></dt>
+ <dd>SSL 操作を呼び出すためのAPIです。</dd>
+ <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_API_Guidelines">NSS API ガイドライン</a></dt>
+ <dd>ライブラリとコードがどのように構成されているか、コードを開発する際のガイドライン (命名規則、エラー処理、スレッドの安全性など) を説明します。</dd>
+ <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Tech_Notes">NSS 技術ノート</a></dt>
+ <dd>NSS の新機能に関する最新情報や、NSS を使ったプログラミングの高度なトピックについての補足資料を提供する NSS テクニカルノートのリンク集です。</dd>
+ </dl>
+
+ <h3 id="ツール、テスト、その他技術的な詳細">ツール、テスト、その他技術的な詳細</h3>
+
+ <dl>
+ <dt><a href="/ja/docs/Mozilla/Projects/NSS/Building">NSS のビルド手順</a></dt>
+ <dd>NSS のリリースをチェックアウトしてビルドする方法を説明します。</dd>
+ </dl>
+
+ <dl>
+ <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Developer_Tutorial">NSS 開発者向けチュートリアル</a></dt>
+ <dd>NSS での変更の仕方。コーディングスタイル、ABI 互換性の維持。</dd>
+ </dl>
+
+ <dl>
+ <dt><a href="/ja/docs/Mozilla/Projects/NSS/tools">NSS ツール</a></dt>
+ <dd>NSS を使用したアプリケーションの開発、デバッグ、管理のためのツールです。</dd>
+ <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Sample_Code">サンプルコード</a></dt>
+ <dd>暗号処理、証明書の取り扱い、SSL などに NSS がどのように利用できるかを実演します。</dd>
+ <dt><a href="/ja/docs/Mozilla/Projects/NSS/NSS_Third-Party_Code">サードパーティコード</a></dt>
+ <dd>NSS ライブラリに含まれるサードパーティのコードの一覧です。</dd>
+ <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/testnss_32.html">NSS 3.2 Test Suite</a></dt>
+ <dd><strong>アーカイブ版</strong>。標準の NSS テストの実行方法について説明しています。</dd>
+ <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/performance_reports.html">NSS Performance Reports</a></dt>
+ <dd><strong>アーカイブ版</strong>。NSS 3.2 以降のリリースのパフォーマンスレポートへのリンクです。</dd>
+ <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/nss-3.11/nss-3.11-algorithms.html">Encryption Technologies Available in NSS 3.11</a></dt>
+ <dd><strong>アーカイブ版</strong>。NSS 3.11 で使用されている暗号アルゴリズムの一覧です。</dd>
+ <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/loadable_certs.html">NSS 3.1 Loadable Root Certificates</a></dt>
+ <dd><strong>アーカイブ版</strong>。ルート CA 証明書をロードするスキームについて説明します。</dd>
+ <dt><a href="https://www-archive.mozilla.org/projects/security/pki/nss/db_formats.html">cert7.db</a></dt>
+ <dd><strong>アーカイブ版</strong>。cert7.db データベースの一般的なフォーマット。</dd>
+ </dl>
+
+ <h3 id="PKCS_11_情報">PKCS #11 情報</h3>
+
+ <ul>
+ <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11" title="PKCS11">Documentation on PKCS #11 modules</a></li>
+ <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11_Implement">Implementing PKCS #11 for NSS</a></li>
+ <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11_Module_Specs" title="PKCS11_Module_Specs">The strings NSS uses to load PKCS #11 modules</a></li>
+ <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11_FAQ">PKCS #11 FAQ</a></li>
+ <li><a href="https://wiki.developer.mozilla.org/en-US/docs/PKCS11_Jar_Install">Using the JAR Installation Manager to Install a PKCS #11 Cryptographic Module</a></li>
+ <li><a href="https://www-archive.mozilla.org/projects/security/pki/pkcs11/">PKCS #11 Conformance Testing - Archived version</a></li>
+ </ul>
+
+ <dl>
+ </dl>
+
+ <h3 id="NSS_にプリロードされた_CA_証明書">NSS にプリロードされた CA 証明書</h3>
+
+ <ul>
+ <li><a href="https://www.mozilla.org/projects/security/certs/policy/">Mozilla CA certificate policy</a></li>
+ <li><a href="https://wiki.mozilla.org/CA/Included_Certificates">List of pre-loaded CA certificates</a>
+ <ul>
+ <li>このリストの消費者は、含まれる各ルート証明書のトラストビット設定を考慮する必要があります。<a href="https://www.imperialviolet.org/2012/01/30/mozillaroots.html">More Information</a>, <a href="https://github.com/agl/extract-nss-root-certs">root とそのトラストビットの抽出</a></li>
+ </ul>
+ </li>
+ </ul>
+
+ <dl>
+ </dl>
+
+ <h3 id="NSS_は_Netscape_Portable_Runtime_NSPR_の上に構築されています。">NSS は Netscape Portable Runtime (NSPR) の上に構築されています。</h3>
+
+ <dl>
+ <dt><a href="https://wiki.developer.mozilla.org/ja/docs/Mozilla/Projects/NSPR">Netscape Portable Runtime</a></dt>
+ <dd>NSPR project page.</dd>
+ <dt><a href="https://wiki.developer.mozilla.org/en-US/docs/Mozilla/Projects/NSPR/Reference">NSPR Reference</a></dt>
+ <dd>NSPR API documentation.</dd>
+ </dl>
+
+ <h3 id="その他の情報">その他の情報</h3>
+
+ <ul>
+ <li><a href="https://wiki.developer.mozilla.org/en-US/docs/JavaScript_crypto" title="JavaScript_crypto">Using the window.crypto object from JavaScript</a></li>
+ <li><a href="https://wiki.developer.mozilla.org/en-US/docs/HTTP_Delegation" title="HTTP_Delegation">Delegation of HTTP download for OCSP</a></li>
+ <li><a href="https://wiki.developer.mozilla.org/en-US/docs/TLS_Cipher_Suite_Discovery" title="TLS_Cipher_Suite_Discovery">TLS Cipher Suite Discovery</a></li>
+ <li><a href="https://wiki.developer.mozilla.org/en-US/docs/NSS_Certificate_Download_Specification" title="NSS_Certificate_Download_Specification">NSS Certificate Download Specification</a></li>
+ <li><a href="https://wiki.developer.mozilla.org/en-US/docs/NSS/FIPS_Mode_-_an_explanation" title="FIPS Mode - an explanation">FIPS Mode - an explanation</a></li>
+ <li><a href="https://wiki.developer.mozilla.org/en-US/docs/NSS_Key_Log_Format" title="NSS Key Log Format">Format of key log files</a></li>
+ <li>View <a href="https://wiki.developer.mozilla.org/en-US/docs/tag/NSS" title="/en-US/docs/tag/NSS">all NSS-related articles on MDN</a></li>
+ </ul>
+
+ <h3 id="計画">計画</h3>
+
+ <p>NSS の計画に関する情報は、<a class="external external-icon" href="https://wiki.mozilla.org/NSS">wiki.mozilla.org</a> に掲載されています。</p>
+
+ <ul>
+ <li><a class="external external-icon" href="https://wiki.mozilla.org/FIPS_Validation">FIPS Validation</a></li>
+ <li><a class="external external-icon" href="https://wiki.mozilla.org/NSS:Roadmap">NSS Roadmap page</a></li>
+ <li><a href="https://fedoraproject.org/wiki/User:Mitr/NSS:DeveloperFriendliness" title="https://fedoraproject.org/wiki/User:Mitr/NSS:DeveloperFriendliness">NSS Improvement Project</a></li>
+ </ul>
+ </td>
+ <td>
+ <h2 class="Community" id="Community" name="Community">コミュニティ</h2>
+
+ <ul>
+ <li>Mozilla Security フォーラムを見る...</li>
+ </ul>
+
+ <p>{{ DiscussionList("dev-security", "mozilla.dev.security") }}</p>
+
+ <ul>
+ <li>Mozilla Cryptography フォーラムを見る...</li>
+ </ul>
+
+ <p>{{ DiscussionList("dev-tech-crypto", "mozilla.dev.tech.crypto") }}</p>
+
+ <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">関連トピック</h2>
+
+ <ul>
+ <li><a href="https://wiki.developer.mozilla.org/en-US/docs/Security" title="Security">Security</a></li>
+ </ul>
+
+ <dl>
+ </dl>
+ </td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/ja/mozilla/projects/nss/introduction_to_network_security_services/index.html b/files/ja/mozilla/projects/nss/introduction_to_network_security_services/index.html
new file mode 100644
index 0000000000..921b4d76ab
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/introduction_to_network_security_services/index.html
@@ -0,0 +1,152 @@
+---
+title: Network Security Services のご紹介
+slug: Mozilla/Projects/NSS/Introduction_to_Network_Security_Services
+tags:
+ - NSS
+translation_of: Mozilla/Projects/NSS/Introduction_to_Network_Security_Services
+---
+<p><strong>Network Security Services (NSS)</strong> とは、SSL、S/MIME、その他インターネットセキュリティ規格をサポートするアプリケーションのクロスプラットフォーム開発を支援するように設計されたライブラリの一式です。NSS の一般的な概観やサポートしている規格についての情報は <a href="ja/Overview_of_NSS">NSS 概観</a> をご覧ください。</p>
+
+<h3 id=".E5.85.B1.E6.9C.89.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA" name=".E5.85.B1.E6.9C.89.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA">共有ライブラリ</h3>
+
+<p>Network Security Services は、スタティックライブラリと共有ライブラリの両方を提供します。共有ライブラリを利用するアプリケーションは、ライブラリがエクスポートする API のみを利用しなければなりません。3 つの共有ライブラリは、共通機能をエクスポートします。</p>
+
+<ul>
+ <li>SSL ライブラリは SSL のコア機能をサポートします。</li>
+ <li>S/MIME ライブラリは S/MIME のコア機能をサポートします。</li>
+ <li>NSS ライブラリは暗号化のコア機能をサポートします。</li>
+</ul>
+
+<p>エクスポートされた API を利用しているアプリケーションが、将来のバージョンのライブラリでも互換性を保てることを保証します。NSS 3.2 の共有ライブラリからエクスポートされた共通機能の完全なリストは、<a href="ja/NSS_functions">NSS の機能</a> をご覧ください。</p>
+
+<p>どの NSS 3.1.1 のスタティックライブラリが上記 NSS 3.2 の共有ライブラリに置き換わったのかは、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/release_notes_32.html#migration">Migration from NSS 3.1.1</a> をご覧ください。</p>
+
+<p>下の図 1 は、上に挙げられた 3 つの共有ライブラリと NSPR 間の関係を単純化したものを示しています。NSPR は、スレッド管理や I/O といった、低レベルでのクロスプラットフォームサポートを提供します。(NSPR は、別の Mozilla プロジェクトであることにご注意ください。詳細は、<a href="ja/NSPR">Netscape Portable Runtime</a> をご覧ください。)</p>
+
+<dl>
+ <dt>図 1 NSS コアライブラリ間および NSPR 間の関係</dt>
+</dl>
+
+
+
+<h3 id=".E5.91.BD.E5.90.8D.E8.A6.8F.E5.89.87.E3.81.A8.E7.89.B9.E5.88.A5.E3.81.AA.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA" name=".E5.91.BD.E5.90.8D.E8.A6.8F.E5.89.87.E3.81.A8.E7.89.B9.E5.88.A5.E3.81.AA.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA">命名規則と特別なライブラリ</h3>
+
+<p>Windows と Unix は、スタティックライブラリおよびダイナミックライブラリに対し、それぞれ違った命名規則を利用します。</p>
+
+<table style="text-align: left;">
+ <tbody>
+ <tr>
+ <th></th>
+ <th>Windows</th>
+ <th>Unix</th>
+ </tr>
+ <tr>
+ <th>スタティック</th>
+ <td><code>.lib</code></td>
+ <td><code>.a</code></td>
+ </tr>
+ <tr>
+ <th>ダイナミック</th>
+ <td><code>.dll</code></td>
+ <td><code>.so</code> または <code>.sl</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<p>加えて、Windows はダイナミックライブラリにバインドされた「インポート」ライブラリを持っています。そのため NSS ライブラリは、次の形式になっています。</p>
+
+<ul>
+ <li><code>libnss3.so</code> - Unix 共有ライブラリ</li>
+ <li><code>libnss3.sl</code> - HP-UX 共有ライブラリ</li>
+ <li><code>libnss.a</code> - Unix スタティックライブラリ</li>
+ <li><code>nss3.dll</code> - Windows 共有ライブラリ</li>
+ <li><code>nss3.lib</code> - Windows import library binding to <code>nss3.dll</code> にバインドされた Windows インポートライブラリ</li>
+ <li><code>nss.lib</code> - Windows スタティックライブラリ</li>
+</ul>
+
+<p>NSS、SSL、および S/MIME は、上記すべての形式を備えています。</p>
+
+<p>次のスタティックライブラリは、どの共有ライブラリにも含まれません。</p>
+
+<ul>
+ <li><code>libcrmf.a</code>/<code>crmf.lib</code> は、CRMF 操作に API を提供します。</li>
+ <li><code>libjar.a</code>/<code>jar.lib</code> は、JAR ファイルを生成するために API を提供します。</li>
+</ul>
+
+<p>次のスタティックライブラリは、外部のロード可能な PKCS #11 モジュールにのみ含まれます。</p>
+
+<ul>
+ <li><code>libnssckfw.a</code>/<code>nssckfw.lib</code> は、PKCS #11 モジュールを書くための API を提供します。</li>
+ <li><code>libswfci.a</code>/<code>swfci.lib</code> は、FORTEZZA ソフトウェアをサポートします。</li>
+</ul>
+
+<p>次の共有ライブラリは、独立ロード可能なモジュール (standalone loadable modules) で、直接リンクされることを目的にしていません。</p>
+
+<ul>
+ <li><code>libfort.so</code>/<code>libfort.sl</code>/<code>fort32.dll</code> は、FORTEZZA ハードウェアへのサポートを提供します。</li>
+ <li><code>libswft.so</code>/<code>libswft.sl</code>/<code>swft32.dll</code> は、FORTEZZA ハードウェアへのサポートを提供します。</li>
+ <li><code>libnssckbi.so</code>/<code>libnssckbi.sl</code>/<code>nssckbi.dll</code> は、信頼済みルート証明書のデフォルトセットを定義します。</li>
+</ul>
+
+<h3 id="ILP32_.E3.81.AE.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88" name="ILP32_.E3.81.AE.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88">ILP32 のサポート</h3>
+
+<p>NSS 3.2 以降のバージョンでは、新たに 2 つの共有ライブラリが PARisc CPU 用 HP-UX プラットフォームおよび (Ultra) Sparc (非 x86) CPU 用 Solaris 用に加えられています。これら HP-UX および Solaris プラットフォームは、ILP32 プログラムモデルを 32 ビット CPU および 64 ビット CPU 上で走らせるプログラムを利用できます。新たに加えられた 2 つのライブラリは、それぞれこの 2 つの CPU で使用する際に最適化されたパフォーマンスを提供します。</p>
+
+<p>これら 2 つの共有ライブラリは他のプラットフォーム向けには提供されません。これらのライブラリの名前は、下の表に示すように、プラットフォームに依存しています。</p>
+
+<table style="text-align: left;">
+ <tbody>
+ <tr>
+ <th>プラットフォーム</th>
+ <th>32 ビット CPU 向け</th>
+ <th>64 ビット CPU 向け</th>
+ </tr>
+ <tr>
+ <td>Solaris/Sparc</td>
+ <td><code>libfreebl_pure32_3.so</code></td>
+ <td><code>libfreebl_hybrid_3.so</code></td>
+ </tr>
+ <tr>
+ <td>HPUX/PARisc</td>
+ <td><code>libfreebl_pure32_3.sl</code></td>
+ <td><code>libfreebl_hybrid_3.sl</code></td>
+ </tr>
+ <tr>
+ <td>AIX (将来のリリースを計画)</td>
+ <td><code>libfreebl_pure32_3_shr.a</code></td>
+ <td><code>libfreebl_hybrid_3_shr.a</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<p>これらのライブラリにアプリケーションをリンクしないでください。ライブラリは NSS 作動時に動的にロードされます。プログラムをライブラリのうちどちらかにリンクさせた場合、アプリケーションプログラムが特定の CPU 上でしか作動しなくなったり (例: 64 ビット CPU 上のみで作動し、32 ビット CPU では作動しない)、または 64 ビット CPU 上のより効率的な 64 ビットコードを利用できなくなる場合があります。</p>
+
+<p>これらの共有ライブラリを受け入れることができるプラットフォーム上では、その共有ライブラリがないと NSS 3.2 は作動しません。そのため、アプリケーションがこれらのファイルを NSS 共有ライブラリのディストリビューションを含むようにしてください。これら共有ライブラリは、他の NSS 共有ライブラリ (例えば <code>libnss3.so</code>) がインストールされているディレクトリにインストールされていなければなりません。二つの共有ライブラリはともに、インストール先のシステムが 32 ビット CPU や 64 ビット CPU が使われている場合は、必ずインストールされます。NSS が作動時にローカルシステムに対して正しいファイルを選択します。</p>
+
+<p>NSS 3.x はまた、上記プラットフォーム向けの LP64 モデルも利用可能ですが、NSS 3.x の LP64 モデルはこれら二つの共有ライブラリを持たないことを念頭においてください。</p>
+
+<h3 id=".E7.9F.A5.E3.81.A3.E3.81.A6.E3.81.8A.E3.81.8F.E3.81.B9.E3.81.8D.E3.81.93.E3.81.A8" name=".E7.9F.A5.E3.81.A3.E3.81.A6.E3.81.8A.E3.81.8F.E3.81.B9.E3.81.8D.E3.81.93.E3.81.A8">知っておくべきこと</h3>
+
+<p>NSS を利用する前に、次の話題を理解していることが求められます。</p>
+
+<ul>
+ <li>公開鍵暗号の概念と技術</li>
+ <li>セキュリティつきソケット層 (SSL) プロトコル</li>
+ <li>暗号認証インターフェース (cryptographic token interfaces) の PKCS #11 規格</li>
+ <li>クロスプラットフォーム開発の要点および技術</li>
+</ul>
+
+<h3 id=".E3.82.88.E3.82.8A.E5.A4.9A.E3.81.8F.E3.81.AE.E6.83.85.E5.A0.B1.E3.82.92.E5.BE.97.E3.82.8B.E3.81.AB.E3.81.AF" name=".E3.82.88.E3.82.8A.E5.A4.9A.E3.81.8F.E3.81.AE.E6.83.85.E5.A0.B1.E3.82.92.E5.BE.97.E3.82.8B.E3.81.AB.E3.81.AF">より多くの情報を得るには</h3>
+
+<p>NSS を利用する前に理解しておかなければならない PKI および SSL の情報は、以下のページをご覧ください。</p>
+
+<ul>
+ <li><a href="ja/Introduction_to_Public-Key_Cryptography">公開鍵暗号入門</a></li>
+ <li><a href="ja/Introduction_to_SSL">SSL 入門</a></li>
+</ul>
+
+<p>API に関する参考文献、ビルドガイド、およびその他の有益な情報へのリンクは、<a href="ja/NSS">NSS プロジェクトのページ</a> をご覧ください。</p>
+
+<p>上で述べられているように、NSS は NSPR の上にビルドされています。NSPR 用 API に関する参考文献は、<a href="ja/NSPR_API_Reference">NSPR API リファレンス</a> をご覧ください。</p>
+
+<p>{{ languages( { "en": "en/Introduction_to_Network_Security_Services" } ) }}</p>
diff --git a/files/ja/mozilla/projects/nss/new_nss_samples/index.html b/files/ja/mozilla/projects/nss/new_nss_samples/index.html
new file mode 100644
index 0000000000..be47c481f4
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/new_nss_samples/index.html
@@ -0,0 +1,36 @@
+---
+title: 新しい NSS サンプル
+slug: Mozilla/Projects/NSS/New_NSS_Samples
+tags:
+ - Example
+translation_of: Mozilla/Projects/NSS/New_NSS_Samples
+---
+<h2 id="New_NSS_Sample_Code">New NSS Sample Code</h2>
+
+<p>このサンプルコード集では、暗号処理、証明書の取り扱い、SSL などに NSS をどのように利用できるかを示しています。また、暗号技術の応用におけるベストプラクティスをいくつか示しています。</p>
+
+<p>These new examples are a work in progress. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490238">https://bugzilla.mozilla.org/show_bug.cgi?id=490238</a></p>
+
+<p>サンプルのダウンロード方法</p>
+
+<pre class="bz_comment_text notranslate" id="comment_text_42">hg clone https://hg.mozilla.org/projects/nss; cd nss; hg update SAMPLES_BRANCH
+</pre>
+
+<p>サンプル一覧。</p>
+
+<ol>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Sample1_-_Hashing">Sample Code 1: Hashing</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Sample2_-_Initialize_NSS_Database">Sample Code 2: Init NSS database</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Encrypt_Decrypt_MAC_Using_Token">Sample Code 3: Encrypt/Decrypt and Mac Using Token</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Encrypt_Decrypt_MAC_Keys_As_Session_Objects">Sample Code 4: Encrypt/Decrypt and Mac Using Session Objects</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Enc_Dec_MAC_Output_Plblic_Key_as_CSR">Sample Code 5: Encrypt/Decrypt/MAC Output Public Key as a CSR </a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Enc_Dec_MAC_Using_Key_Wrap_CertReq_PKCS10_CSR">Sample Code 6: Encrypt/Decrypt/MAC Generating a PKCS#11 CSR</a></li>
+</ol>
+
+<p>これらのサンプルで使用されている共通のコード。</p>
+
+<ol>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Sample_Code/Utiltiies_for_nss_samples">Sample Code 0: Utilities</a></li>
+</ol>
+
+<p>これらのサンプルの主執筆者である Mozilla Community のメンバーである Shailendra Jain 氏に感謝します。</p>
diff --git a/files/ja/mozilla/projects/nss/notes_on_tls_-_ssl_3.0_intolerant_servers/index.html b/files/ja/mozilla/projects/nss/notes_on_tls_-_ssl_3.0_intolerant_servers/index.html
new file mode 100644
index 0000000000..b56f599981
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/notes_on_tls_-_ssl_3.0_intolerant_servers/index.html
@@ -0,0 +1,94 @@
+---
+title: Notes on TLS - SSL 3.0 Intolerant Servers
+slug: Mozilla/Projects/NSS/Notes_on_TLS_-_SSL_3.0_Intolerant_Servers
+tags:
+ - Gecko
+ - NSS
+ - Security
+translation_of: Mozilla/Projects/NSS/Notes_on_TLS_-_SSL_3.0_Intolerant_Servers
+---
+<p> </p>
+
+<h3 id=".E4.B8.8D.E5.85.B7.E5.90.88" name=".E4.B8.8D.E5.85.B7.E5.90.88">不具合</h3>
+
+<p>多くの Netscape 6.x/7.x および Mozilla 利用者が、いくつかのセキュリティ保護されたサイト -- オンライントランザクションやオンラインバンクでHTTPSプロトコルを使っている一般的なサイト -- で何も表示されないと報告してきています。 接続は終わっているように見えますが空白ページが表示されます。これがMozillaベースのブラウザがTLS/SSL 3.0 狭量(不寛容)なサーバに遭遇したときの問題の主な症状です。</p>
+
+<h3 id="Cause" name="Cause">原因</h3>
+
+<p>現状、SSL 3.0 仕様の狭量な実装がされたいくつかのWebサーバがあります。 この狭量な実装は<strong>SSL 3.0</strong> および <strong>TLS (aka SSL 3.1)</strong> 仕様に従っているクライアントからの接続の試みを拒否します。 </p>
+
+<p>Netscape 6.x/7.x および Mozilla ブラウザ (0.9.1 以降のバージョン) は、TLSの仕様を正しく実装しており、ユーザはこの問題のあるサイトを利用できません。</p>
+
+<h3 id=".E6.8A.80.E8.A1.93.E6.83.85.E5.A0.B1" name=".E6.8A.80.E8.A1.93.E6.83.85.E5.A0.B1">技術情報</h3>
+
+<p>The <strong>SSL 3.0</strong> and <strong>TLS (aka SSL 3.1)</strong> specs both contain a provision -- the same provision -- for detecting "version rollback attacks". It is designed to permit a server to detect a man-in-the-middle that is altering the SSL client hello (connection) requests as they pass from the client to the server, altering them by changing the protocol version number to a lower version number. This feature was kind of meaningless until <strong>TLS (SSL 3.1)</strong> came along because there was no version higher than 3.0 from which to be rolled back. TLS is now available and used, and products that have implemented the roll-back detection incorrectly are not interoperable with TLS/SSL spec-compliant clients. Normally the servers which have this problem are not equipped to deal with the TLS protocol, but instead of rolling back to SSL 3.0 as the rollback provision provides, they terminate/drop the connection, thus resulting in most cases a blank page display.</p>
+
+<p>For up-to-date information, you can read a Bugzilla bug report which keeps track of this problem with Mozilla-based browsers. See {{ Bug(59321) }}.</p>
+
+<h3 id="Servers_currently_known_to_exhibit_this_intolerant_behavior" name="Servers_currently_known_to_exhibit_this_intolerant_behavior">Servers currently known to exhibit this intolerant behavior</h3>
+
+<p>As of this writing, this problem has been reported for the following servers: (Wherever there is an upgraded version which fixes the problem, it is indicated by an asterisked remark in the parentheses. )</p>
+
+<ul>
+ <li>Domino-Go-Webserver/4.6.2.6 (and perhaps some later versions)</li>
+ <li>IBM_HTTP_Server/1.3.6.3 or earlier (* Update to 1.3.6.4)</li>
+ <li>IBM_HTTP_Server/1.3.12.1 or earlier (* <a class="external" href="http://www6.software.ibm.com/dl/websphere/http-p">Update to 1.3.12.2</a>)</li>
+ <li>Java Web Server 2</li>
+ <li>OSU/3.2 - DECthreads HTTP server for OpenVM</li>
+ <li>Stronghold/2.2</li>
+ <li>Webmail v. 3.6.1 by Infinite Technologies (* Update available)</li>
+</ul>
+
+<p>N.B. There might be servers other than those listed above which exhibit this problem. If you find such a server, feel free to add it to this page. For up-to-date information, you can read this {{bug(59321)}} which keeps a list of TLS/SSL 3.0 intolerant servers.</p>
+
+<h3 id="Users_.E3.81.93.E3.81.AE.E5.95.8F.E9.A1.8C.E3.82.92.E9.81.BF.E3.81.91.E3.82.8B.E3.81.AB.E3.81.AF.3F" name="Users:_.E3.81.93.E3.81.AE.E5.95.8F.E9.A1.8C.E3.82.92.E9.81.BF.E3.81.91.E3.82.8B.E3.81.AB.E3.81.AF.3F">Users: この問題を避けるには?</h3>
+
+<h4 id="Netscape_6.1_Preview_Release_1.2C_.E3.81.BE.E3.81.9F.E3.81.AF_Mozilla_0.9.1_.E4.BB.A5.E5.89.8D" name="Netscape_6.1_Preview_Release_1.2C_.E3.81.BE.E3.81.9F.E3.81.AF_Mozilla_0.9.1_.E4.BB.A5.E5.89.8D">Netscape 6.1 Preview Release 1, または Mozilla 0.9.1 以前</h4>
+
+<p>These versions shipped with the TLS option turned <strong>ON</strong> as the default but with no way to deal with the problem servers. If you are using these old versions, please update to the latest Netscape or Mozilla versions. You can also avoid such a problem by editing an existing profile -- check the preference option setting at: <code>Edit | Preferences | Privacy and Security | SSL | Enable TLS</code>, and turn it <strong>OFF</strong> if it is <strong>ON</strong> for these earlier browsers.</p>
+
+<h4 id="Netscape_6.1_.E3.81.BE.E3.81.9F.E3.81.AF_Mozilla_0.9.2_.E4.BB.A5.E9.99.8D" name="Netscape_6.1_.E3.81.BE.E3.81.9F.E3.81.AF_Mozilla_0.9.2_.E4.BB.A5.E9.99.8D">Netscape 6.1 または Mozilla 0.9.2 以降</h4>
+
+<p>These browsers shipped with the TLS option <strong>ON</strong> but also included a graceful rollback mechanism on the client side when they encounter known TLS/SSL 3.0 intolerant servers.</p>
+
+<h4 id="Firefox_2_.E4.BB.A5.E9.99.8D" name="Firefox_2_.E4.BB.A5.E9.99.8D">Firefox 2 以降</h4>
+
+<p>Firefox 2から、SSL 2.0のサポートは最初から無効にされています; unless it is expressly re-enabled by the user using about:config. See <a href="/ja/Security_in_Firefox_2" title="ja/Security_in_Firefox_2">Security in Firefox 2</a> for details.</p>
+
+<h3 id="Web.E3.82.B5.E3.82.A4.E3.83.88.E7.AE.A1.E7.90.86.E8.80.85_How_to_avoid_this_problem.3F" name="Web.E3.82.B5.E3.82.A4.E3.83.88.E7.AE.A1.E7.90.86.E8.80.85:_How_to_avoid_this_problem.3F">Webサイト管理者: この問題を避けるには?</h3>
+
+<ul>
+ <li>Upgrade to a newer version if available, which corrects this problem. There will be other network clients which implement TLS/SSL 3.0 specification correctly and have a problem with your site. Let's not perpetuate the problem servers.</li>
+ <li>Contact the manufacturer and inquire if there is a new version available which fixes this problem.</li>
+ <li>Post a note on your site instructing users of old versions of browsers like Netscape 6.0/6.01/6.1 Preview Release 1 and Mozilla 0.9.1 and earlier to turn <strong>OFF</strong> the TLS option at: <code>Edit | Preferences | Privacy and Security | SSL | Enable TLS</code>. However, this is a temporary workaround at best. We recommend strongly that you urge users to upgrade to the latest Netscape version (or at least Netscape 6.1) since the newer versions have the graceful rollback implemented in the code.</li>
+ <li>If you have questions concerning Netscape browsers and problem servers, please contact us using the feedback address at the top of this page.</li>
+</ul>
+
+<h3 id="Detecting_intolerant_servers" name="Detecting_intolerant_servers">Detecting intolerant servers</h3>
+
+<p>Because newer versions of Netscape and Mozilla have built-in workaround for the problem servers, it is now unlikely that you will experience this problem. But if you're running Netscape 6.0/6.01/6.1 PR 1 or Mozilla build (prior to 6/11/2001), you should look out for the symptom described below. You may also run this test with versions later than the older versions of Netscape 6.x or Mozilla -- just in case code changes in Netscape 6.1/Mozilla 0.9.2 or later may not catch all problem servers.</p>
+
+<ul>
+ <li>When you find a secure site which simply does not display any page content or drops the connection, check to see if the preference option <code>Edit | Preferences | Privacy and Security | SSL | Enable TLS</code> is turned <strong>ON</strong>. If so, turn it <strong>OFF</strong>.</li>
+ <li>Now re-visit the problem site. If the content displays this time, you are most likely witnessing a TLS/SSL 3.0 intolerant server.</li>
+ <li>Report such a problem to the server's administrator.</li>
+</ul>
+
+<h3 id="How_to_report_an_intolerant_server" name="How_to_report_an_intolerant_server">How to report an intolerant server</h3>
+
+<ul>
+ <li><em>Optional:</em> Get the name of the SSL server software used by the website. To do so, add <code><span class="nowiki">http://toolbar.netcraft.com/site_report?url=</span></code> to the beginning of the URL. The server software will appear next to <strong>Server</strong> under <strong>SSL Certificate Information</strong>.<br>
+ <br>
+ For instance, to check <code><span class="nowiki">https://bugzilla.mozilla.org/</span></code>, then visit <a class="external" href="http://toolbar.netcraft.com/site_report?url=https://bugzilla.mozilla.org/" rel="freelink">http://toolbar.netcraft.com/site_rep...a.mozilla.org/</a>.</li>
+ <li>Add the information on such a server (software, URL) to {{bug(59321)}} at Bugzilla. (Note: You will be asked to provide your email address before you can file a bug at Bugzilla.)</li>
+</ul>
+
+<div class="originaldocinfo">
+<h3 id=".E5.8E.9F.E6.96.87.E6.83.85.E5.A0.B1" name=".E5.8E.9F.E6.96.87.E6.83.85.E5.A0.B1">原文情報</h3>
+
+<ul>
+ <li>著者 : 桃井 勝彦</li>
+ <li>最終更新日: 2003年1月27日</li>
+ <li>Copyright © 2001-2003 Netscape. All rights reserved.</li>
+</ul>
+</div>
diff --git a/files/ja/mozilla/projects/nss/nss_3.18_release_notes/index.html b/files/ja/mozilla/projects/nss/nss_3.18_release_notes/index.html
new file mode 100644
index 0000000000..707389d205
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/nss_3.18_release_notes/index.html
@@ -0,0 +1,150 @@
+---
+title: NSS 3.18 release notes
+slug: Mozilla/Projects/NSS/NSS_3.18_release_notes
+translation_of: Mozilla/Projects/NSS/NSS_3.18_release_notes
+---
+<h2 id="はじめに">はじめに</h2>
+
+<p>NSSチームはマイナーリリースであるNetwork Security Services (NSS) 3.18をリリースしました。</p>
+
+<h2 id="配布情報">配布情報</h2>
+
+<p>HGタグはNSS_3_18_RTMです。NSS 3.18はNSPR 4.10.8またはそれより新しいバージョンを必要とします。</p>
+
+<p>NSS 3.18のソースコードの配布物はftp.mozilla.orgまたは安全なHTTPSのダウンロードリンクから入手できます:</p>
+
+<ul>
+ <li>Source tarballs:<br>
+ <a href="https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_18_RTM/src/">https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_18_RTM/src/</a></li>
+</ul>
+
+<h2 id="NSS_3.18で新しくなった点">NSS 3.18で新しくなった点</h2>
+
+<h3 id="新機能">新機能</h3>
+
+<ul>
+ <li>When importing certificates and keys from a PKCS#12 source, it's now possible to override the nicknames, prior to importing them into the NSS database, using new API SEC_PKCS12DecoderRenameCertNicknames.</li>
+ <li>The tstclnt test utility program has new command-line options -C, -D, -b and -R.<br>
+ Use -C one, two or three times to print information about the certificates received from a server, and information about the locally found and trusted issuer certificates, to diagnose server side configuration issues. It is possible to run tstclnt without providing a database (-D). A PKCS#11 library that contains root CA certificates can be loaded by tstclnt, which may either be the nssckbi library provided by NSS (-b) or another compatible library (-R).</li>
+</ul>
+
+<h4 id="新しい関数">新しい関数</h4>
+
+<ul>
+ <li><em>in certdb.h</em>
+
+ <ul>
+ <li><strong>SEC_CheckCrlTimes</strong> - Check the validity of a CRL at the given time.</li>
+ <li><strong>SEC_GetCrlTimes</strong> - Extract the validity times from a CRL.</li>
+ </ul>
+ </li>
+ <li><em>in p12.h</em>
+ <ul>
+ <li><strong>SEC_PKCS12DecoderRenameCertNicknames</strong> - call an application provided callback for each certificate found in a SEC_PKCS12DecoderContext.</li>
+ </ul>
+ </li>
+ <li><em>in pk11pub.h</em>
+ <ul>
+ <li><strong>__PK11_SetCertificateNickname</strong> - this is an internal symbol for NSS use only, as with all exported NSS symbols that have a leading underscore '_'. Applications that use or depend on these symbols can and will break in future NSS releases.</li>
+ </ul>
+ </li>
+</ul>
+
+<h4 id="新しい型">新しい型</h4>
+
+<ul>
+ <li><em>in p12.h</em>
+
+ <ul>
+ <li><strong>SEC_PKCS12NicknameRenameCallback</strong> - a function pointer definition. An application that uses SEC_PKCS12DecoderRenameCertNicknames must implement a callback function that implements this function interface.</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="NSS_3.18での目立った変更点">NSS 3.18での目立った変更点</h2>
+
+<ul>
+ <li>既定の状態で有効なTLSのプロトコルバージョンの最大値がTLS 1.0からTLS 1.2に引き上げられました。同様に、既定の状態で有効なDTLSのプロトコルバージョンの最大値もDTLS 1.0からDTLS 1.2に引き上げられました。</li>
+ <li>RSA鍵ペアを生成する際にcertutilが使う鍵の既定のサイズが1024ビットから2048ビットに引き上げられました。</li>
+ <li>Mac OS Xでは、OSにsqliteのライブラリのバージョン3.5またはそれ以上がインストールされている場合、既定の状態でsoftokn共有ライブラリにリンクされるようになりました。</li>
+ <li>以下の認証局証明書について、コードとWebサイトの署名に対する<strong>信頼のビットが無効化されました。</strong>
+ <ul>
+ <li>OU = Equifax Secure Certificate Authority
+ <ul>
+ <li>SHA1 Fingerprint: D2:32:09:AD:23:D3:14:23:21:74:E4:0D:7F:9D:62:13:97:86:63:3A</li>
+ </ul>
+ </li>
+ <li>CN = Equifax Secure Global eBusiness CA-1
+ <ul>
+ <li>SHA1 Fingerprint: 7E:78:4A:10:1C:82:65:CC:2D:E1:F1:6D:47:B4:40:CA:D9:0A:19:45</li>
+ </ul>
+ </li>
+ <li>CN = TC TrustCenter Class 3 CA II
+ <ul>
+ <li>SHA1 Fingerprint: 80:25:EF:F4:6E:70:C8:D4:72:24:65:84:FE:40:3B:8A:8D:6A:DB:F5</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>以下の認証局証明書が<strong>追加されました。</strong>
+ <ul>
+ <li>CN = Staat der Nederlanden Root CA - G3
+ <ul>
+ <li>SHA1 Fingerprint: D8:EB:6B:41:51:92:59:E0:F3:E7:85:00:C0:3D:B6:88:97:C9:EE:FC</li>
+ </ul>
+ </li>
+ <li>CN = Staat der Nederlanden EV Root CA
+ <ul>
+ <li>SHA1 Fingerprint: 76:E2:7E:C1:4F:DB:82:C1:C0:A6:75:B5:05:BE:3D:29:B4:ED:DB:BB</li>
+ </ul>
+ </li>
+ <li>CN = IdenTrust Commercial Root CA 1
+ <ul>
+ <li>SHA1 Fingerprint: DF:71:7E:AA:4A:D9:4E:C9:55:84:99:60:2D:48:DE:5F:BC:F0:3A:25</li>
+ </ul>
+ </li>
+ <li>CN = IdenTrust Public Sector Root CA 1
+ <ul>
+ <li>SHA1 Fingerprint: BA:29:41:60:77:98:3F:F4:F3:EF:F2:31:05:3B:2E:EA:6D:4D:45:FD</li>
+ </ul>
+ </li>
+ <li>CN = S-TRUST Universal Root CA
+ <ul>
+ <li>SHA1 Fingerprint: 1B:3D:11:14:EA:7A:0F:95:58:54:41:95:BF:6B:25:82:AB:40:CE:9A</li>
+ </ul>
+ </li>
+ <li>CN = Entrust Root Certification Authority - G2
+ <ul>
+ <li>SHA1 Fingerprint: 8C:F4:27:FD:79:0C:3A:D1:66:06:8D:E8:1E:57:EF:BB:93:22:72:D4</li>
+ </ul>
+ </li>
+ <li>CN = Entrust Root Certification Authority - EC1
+ <ul>
+ <li>SHA1 Fingerprint: 20:D8:06:40:DF:9B:25:F5:12:25:3A:11:EA:F7:59:8A:EB:14:B5:47</li>
+ </ul>
+ </li>
+ <li>CN = CFCA EV ROOT
+ <ul>
+ <li>SHA1 Fingerprint: E2:B8:29:4B:55:84:AB:6B:58:C2:90:46:6C:AC:3F:B8:39:8F:84:83</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>ルート認証局リストのバージョン番号は2.3に更新されました。</li>
+</ul>
+
+<h2 id="NSS_3.18で修正されたバグ">NSS 3.18で修正されたバグ</h2>
+
+<p>NSS 3.18で修正されたバグの一覧を返すBugzillaのクエリは以下の通りです:</p>
+
+<p><a href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Components&amp;query_format=advanced&amp;product=NSS&amp;target_milestone=3.18">https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Components&amp;query_format=advanced&amp;product=NSS&amp;target_milestone=3.18</a></p>
+
+<h2 id="互換性">互換性</h2>
+
+<p>NSS 3.18共有ライブラリはすべての古いNSS 3.x共有ライブラリと後方互換性があります。古いNSS3.x共有ライブラリとリンクされたプログラムは、再コンパイルまたは再リンクなしでNSS 3.18と組み合わせて動作します。また、NSS公開関数に列挙された関数のみに限定してNSSのAPIを利用しているアプリケーションは、将来のバージョンのNSS共有ライブラリにおいても利用できます。</p>
+
+<h2 id="フィードバック">フィードバック</h2>
+
+<p>バグに遭遇した場合は<a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=NSS">、 bugzilla.mozilla.org</a> に(プロダクトとしてNSSを選択して)バグレポートを登録して下さい。</p>
+
+<p> </p>
diff --git a/files/ja/mozilla/projects/nss/nss_3.57_release_notes/index.html b/files/ja/mozilla/projects/nss/nss_3.57_release_notes/index.html
new file mode 100644
index 0000000000..31afee3691
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/nss_3.57_release_notes/index.html
@@ -0,0 +1,118 @@
+---
+title: NSS 3.57 リリースノート
+slug: Mozilla/Projects/NSS/NSS_3.57_release_notes
+translation_of: Mozilla/Projects/NSS/NSS_3.57_release_notes
+---
+<h2 id="Introduction">Introduction</h2>
+
+<p>The NSS team has released Network Security Services (NSS) 3.57 on <strong>18 September 2020</strong>, which is a minor release.</p>
+
+<p>The NSS team would like to recognize first-time contributors:</p>
+
+<ul>
+ <li><cite>Khem Raj</cite></li>
+</ul>
+
+<h2 id="Distribution_Information">Distribution Information</h2>
+
+<p>The HG tag is NSS_3_57_RTM. NSS 3.57 requires NSPR 4.29 or newer.</p>
+
+<p>NSS 3.57 source distributions are available on ftp.mozilla.org for secure HTTPS download:</p>
+
+<ul>
+ <li>Source tarballs:<br>
+ <a href="https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_57_RTM/src/">https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_57_RTM/src/</a></li>
+</ul>
+
+<p>Other releases are available <a href="/en-US/docs/Mozilla/Projects/NSS/NSS_Releases">in NSS Releases</a>.</p>
+
+<h2 id="Notable_Changes_in_NSS_3.57">Notable Changes in NSS 3.57</h2>
+
+<ul>
+ <li>NSPR dependency updated to 4.29.</li>
+</ul>
+
+<h3 id="Certificate_Authority_Changes">Certificate Authority Changes</h3>
+
+<ul>
+ <li>The following CA certificates were Added:
+ <ul>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663049">Bug 1663049 </a>- CN=Trustwave Global Certification Authority
+
+ <ul>
+ <li>SHA-256 Fingerprint: 97552015F5DDFC3C8788C006944555408894450084F100867086BC1A2BB58DC8</li>
+ </ul>
+ </li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663049">Bug 1663049 </a>- CN=Trustwave Global ECC P256 Certification Authority
+ <ul>
+ <li>SHA-256 Fingerprint: 945BBC825EA554F489D1FD51A73DDF2EA624AC7019A05205225C22A78CCFA8B4</li>
+ </ul>
+ </li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663049">Bug 1663049 </a>- CN=Trustwave Global ECC P384 Certification Authority
+ <ul>
+ <li>SHA-256 Fingerprint: 55903859C8C0C3EBB8759ECE4E2557225FF5758BBD38EBD48276601E1BD58097</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>The following CA certificates were Removed:
+ <ul>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1651211">Bug 1651211</a> - CN=EE Certification Centre Root CA
+ <ul>
+ <li>SHA-256 Fingerprint:<br>
+ 3E84BA4342908516E77573C0992F0979CA084E4685681FF195CCBA8A229B8A76</li>
+ </ul>
+ </li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656077">Bug 1656077</a> - O=Government Root Certification Authority; C=TW
+ <ul>
+ <li>SHA-256 Fingerprint:<br>
+ 7600295EEFE85B9E1FD624DB76062AAAAE59818A54D2774CD4C0B2C01131E1B3</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>Trust settings for the following CA certificates were Modified:
+ <ul>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1653092">Bug 1653092</a> - CN=OISTE WISeKey Global Root GA CA
+ <ul>
+ <li>Websites (server authentication) trust bit removed.</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Bugs_fixed_in_NSS_3.57">Bugs fixed in NSS 3.57</h2>
+
+<ul>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1651211">Bug 1651211</a> - Remove EE Certification Centre Root CA certificate.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1653092">Bug 1653092</a> - Turn off Websites Trust Bit for OISTE WISeKey Global Root GA CA.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1656077">Bug 1656077 </a>- Remove Taiwan Government Root Certification Authority certificate.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663049">Bug 1663049 </a>- Add SecureTrust's Trustwave Global root certificates to NSS.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1659256">Bug 1659256</a> - AArch64 AES optimization shouldn't be enabled with gcc 4.8.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1651834">Bug 1651834 </a>- Fix Clang static analyzer warnings.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1661378">Bug 1661378</a> - Fix Build failure with Clang 11.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1659727">Bug 1659727</a> - Fix mpcpucache.c invalid output constraint on Linux/ARM.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1662738">Bug 1662738</a> - Only run freebl_fips_RNG_PowerUpSelfTest when linked with NSPR.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1661810">Bug 1661810</a> - Fix Crash @ arm_aes_encrypt_ecb_128 when building with Clang 11.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1659252">Bug 1659252</a> - Fix Make build with NSS_DISABLE_DBM=1.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1660304">Bug 1660304</a> - Add POST tests for KDFs as required by FIPS.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1663346">Bug 1663346</a> - Use 64-bit compilation on e2k architecture.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1605922">Bug 1605922</a> - Account for negative sign in mp_radix_size.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1653641">Bug 1653641</a> - Cleanup inaccurate DTLS comments, code review fixes.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1660372">Bug 1660372</a> - NSS 3.57 should depend on NSPR 4.29</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1660734">Bug 1660734</a> - Fix Makefile typos.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1660735">Bug 1660735</a> - Fix Makefile typos.</li>
+</ul>
+
+<p>This Bugzilla query returns all the bugs fixed in NSS 3.57:</p>
+
+<p><a class="external" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Components&amp;query_format=advanced&amp;product=NSS&amp;target_milestone=3.57" rel="noopener">https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Components&amp;query_format=advanced&amp;product=NSS&amp;target_milestone=3.57</a></p>
+
+<h2 id="Compatibility">Compatibility</h2>
+
+<p>NSS 3.57 shared libraries are backward compatible with all older NSS 3.x shared libraries. A program linked with older NSS 3.x shared libraries will work with NSS 3.57 shared libraries without recompiling or relinking. Furthermore, applications that restrict their use of NSS APIs to the functions listed in NSS Public Functions will remain compatible with future versions of the NSS shared libraries.</p>
+
+<h2 id="Feedback">Feedback</h2>
+
+<p>Bugs discovered should be reported by filing a bug report with<a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=NSS"> bugzilla.mozilla.org</a> (product NSS).</p>
diff --git a/files/ja/mozilla/projects/nss/nss_api_guidelines/index.html b/files/ja/mozilla/projects/nss/nss_api_guidelines/index.html
new file mode 100644
index 0000000000..d01fc56f20
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/nss_api_guidelines/index.html
@@ -0,0 +1,534 @@
+---
+title: NSS API ガイドライン
+slug: Mozilla/Projects/NSS/NSS_API_Guidelines
+translation_of: Mozilla/Projects/NSS/NSS_API_Guidelines
+---
+<h1 id="NSS_API_ガイドライン">NSS API ガイドライン</h1>
+
+<p>Newsgroup: <a href="news://news.mozilla.org/mozilla.dev.tech.crypto">mozilla.dev.tech.crypto</a></p>
+
+<h2 id="Introduction">Introduction</h2>
+
+<p>This document describes how the NSS code is organized, the libraries that get built from the NSS sources, and guidelines for writing NSS code. These guidelines will familiarize you with some of the ways things can be done in the NSS code. This will help you understand existing NSS code. It should also help you understand how to write new code, and where to place it.</p>
+
+<p>Some of the guidelines in this document, are more forward-looking than documentary. These rules are here to help us all immediately achieve more consistent and usable code, but some existing code won't follow all these rules.</p>
+
+<p><a name="Structure"> </a></p>
+
+<h2 id="NSS_API_Structure"><a name="Structure">NSS API Structure</a></h2>
+
+<p>This section explains the structure and relationships of the NSS libraries. The <a href="#Layering">Layering</a> section explains how the NSS code is layered, and how higher-level functions wrap low-level functions. The <a href="#Libraries"> Libraries</a> section descibes the NSS libraries, the functionality each provides, and the layer in which the library (mostly) operates.</p>
+
+<h3 id="Layering_2"><a name="Layering"></a>Layering</h3>
+
+<p>Each separate component of the API should live in its own layer. The functions in these APIs should never call API layers above them. In addition, some low-level APIs may be completely opaque to higher level layers. That is, access to these functions should only be provided by the API directly above them. The NSS APIs are layered, as shown in this diagram:</p>
+
+<p><img alt='A diagram of the different layers that collectively make up "NSS". Dependencies are only permitted between siblings and layers below them.' src="https://mdn.mozillademos.org/files/5379/layer.gif" style="height: 507px; line-height: 1.572; width: 427px;"></p>
+
+<p><span style="line-height: 1.572;">The boxes in the gray section, towards the center, are exported only through PKCS #11. PKCS #11 is only exported through the Wrappers. The areas which need the most work (both here and throughout the code) is: </span></p>
+
+<ol>
+ <li><span style="line-height: 1.572;">The relationship of the Certificate library with just about every other component (most noticeably PKCS #12, PKCS #7, and PKCS #11)</span></li>
+ <li><span style="line-height: 1.572;">Splitting Low Key and High Key components more clearly</span></li>
+ <li><span style="line-height: 1.572;">The Crypto wrappers (PKCS #11 Wrappers) and High Key </span></li>
+ <li><span style="line-height: 1.572;">PKCS #12 and PKCS #5</span></li>
+</ol>
+
+<p><a name="Libraries"> </a></p>
+
+<h3 id="Libraries_2"><a name="Libraries">Libraries</a></h3>
+
+<p>NSS compiles into the libraries described below. The Layer indicates the main layer, seen in the previous diagram, in which the library operates. The Directory is the location of the library code in the NSS source tree. The Public Headers is a list of header files that contain types, and functions, that are publicly available to higer-level APIs.</p>
+
+<table style="width: 75%;">
+ <tbody>
+ <tr>
+ <th>Library</th>
+ <th>Description</th>
+ <th>Layer</th>
+ <th>Directory</th>
+ <th>Public Headers</th>
+ </tr>
+ <tr>
+ <td>certdb</td>
+ <td>Provides all certificate handling functions and types. The certdb library manipulates the certificate database (add, create, delete certificates and CRLs). It also provides general certificate-handling routines (create a certificate, verify, add/check certificate extensions).</td>
+ <td>Low Cert</td>
+ <td>lib/certdb</td>
+ <td>cdbhdl.h, certdb.h, cert.h, certt.h</td>
+ </tr>
+ <tr>
+ <td>certhi</td>
+ <td>Provides high-level certificate-related functions, that do not access the certificate database, nor individual certificate data directly. Currently, OCSP checking settings are exported through certhi.</td>
+ <td>High Cert</td>
+ <td>lib/certhigh</td>
+ <td>ocsp.h, ocspt.h</td>
+ </tr>
+ <tr>
+ <td>crmf</td>
+ <td>Provides functions, and data types, to handle Certificate Management Message Format (CMMF) and Certificate Request Message Format (CRMF, see <a href="https://tools.ietf.org/html/rfc2511"> RFC 2511</a>) data. CMMF no longer exists as a proposed standard; CMMF functions have been incorporated into the proposal for <a href="https://tools.ietf.org/html/rfc2510"> Certificate Management Protocols (CMP)</a>.</td>
+ <td>Same Level as SSL</td>
+ <td>lib/crmf</td>
+ <td>cmmf.h, crmf.h, crmft.h, cmmft.h, crmffut.h</td>
+ </tr>
+ <tr>
+ <td>cryptohi</td>
+ <td>Provides high-level cryptographic support operations: such as signing, verifying signatures, key generation, key manipulation, hashing; and data types. This code is above the PKCS #11 layer.</td>
+ <td>Sign/Verify</td>
+ <td>lib/cryptohi</td>
+ <td>cryptohi.h, cryptoht.h, hasht.h, keyhi.h, keythi.h, key.h, keyt.h, sechash.h</td>
+ </tr>
+ <tr>
+ <td>fort</td>
+ <td>Provides a PKCS #11 interface, to Fortezza crypto services. Fortezza is a set of security algorithms, used by the U.S. government. There is also a SWFT library that provides a software-only implementation of a PKCS #11 Fortezza token.</td>
+ <td>PKCS #11</td>
+ <td>lib/fortcrypt</td>
+ <td>cryptint.h, fmutex.h, fortsock.h, fpkcs11.h, fpkcs11f.h, fpkcs11t.h, fpkmem.h, fpkstrs.h, genci.h, maci.h</td>
+ </tr>
+ <tr>
+ <td>freebl</td>
+ <td>Provides the API to actual cryptographic operations. The freebl is a wrapper API. You must supply a library that implements the cryptographic operations, such as BSAFE from RSA Security. This is also known as the "bottom layer" API, or BLAPI.</td>
+ <td>Within PKCS #11, wraps Crypto</td>
+ <td>lib/freebl</td>
+ <td>blapi.h, blapit.h</td>
+ </tr>
+ <tr>
+ <td>jar</td>
+ <td>Provides support for reading and writing data in Java Archive (jar) format, including zlib compression.</td>
+ <td>Port</td>
+ <td>lib/jar</td>
+ <td>jar-ds.h, jar.h, jarfile.h</td>
+ </tr>
+ <tr>
+ <td>nss</td>
+ <td>Provides high-level initialiazation and shutdown of security services. Specifically, this library provides NSS_Init() for establishing default certificate, key, module databases, and initializing a default random number generator. NSS_Shutdown() closes these databases, to prevent further access by an application.</td>
+ <td>Above High Cert, High Key</td>
+ <td>lib/nss</td>
+ <td>nss.h</td>
+ </tr>
+ <tr>
+ <td>pk11wrap</td>
+ <td>Provides access to PKCS #11 modules, through a unified interface. The pkcs11wrap library provides functions for selecting/finding PKCS #11 modules and slots. It also provides functions that invoke operations in selected modules and slots, such as key selection and generation, signing, encryption and decryption, etc.</td>
+ <td>Crypto Wrapper</td>
+ <td>lib/pk11wrap</td>
+ <td>pk11func.h, secmod.h, secmodt.h</td>
+ </tr>
+ <tr>
+ <td>pkcs12</td>
+ <td>Provides functions and types for encoding and decoding PKCS #12 data. PKCS #12 can be used to to encode keys, and certificates, for export or import into other applications.</td>
+ <td>PKCS #12</td>
+ <td>lib/pkcs12</td>
+ <td>pkcs12t.h, pkcs12.h, p12plcy.h, p12.h, p12t.h</td>
+ </tr>
+ <tr>
+ <td>pkcs7</td>
+ <td>Provides functions and types for encoding and decoding encrypted data in PKCS #7 format. For example, PKCS #7 is used to encrypt certificate data to exchange between applications, or to encrypt S/MIME message data.</td>
+ <td>PKCS #7</td>
+ <td>lib/pkcs7</td>
+ <td>secmime.h, secpkcs7.h, pkcs7t.h</td>
+ </tr>
+ <tr>
+ <td>softoken</td>
+ <td>Provides a software implementation of a PKCS #11 module.</td>
+ <td>PKCS #11: implementation</td>
+ <td>lib/softoken</td>
+ <td>keydbt.h, keylow.h, keytboth.h, keytlow.h, secpkcs5.h, pkcs11.h, pkcs11f.h, pkcs11p.h, pkcs11t.h, pkcs11u.h</td>
+ </tr>
+ <tr>
+ <td>ssl</td>
+ <td>Provides an implementation of the SSL protocol using NSS and NSPR.</td>
+ <td>SSL</td>
+ <td>lib/ssl</td>
+ <td>ssl.h, sslerr.h, sslproto.h, preenc.h</td>
+ </tr>
+ <tr>
+ <td>secutil</td>
+ <td>Provides utility functions and data types used by other libraries. The library supports base-64 encoding/decoding, reader-writer locks, the SECItem data type, DER encoding/decoding, error types and numbers, OID handling, and secure random number generation.</td>
+ <td>Utility for any Layer</td>
+ <td>lib/util</td>
+ <td>base64.h, ciferfam.h, nssb64.h, nssb64t.h, nsslocks.h, nssrwlk.h, nssrwlkt.h, portreg.h, pqgutil.h, secasn1.h, secasn1t.h, seccomon.h, secder.h, secdert.h, secdig.h, secdigt.h, secitem.h, secoid.h, secoidt.h, secport.h, secrng.h, secrngt.h, secerr.h, watcomfx.h</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Naming_Conventions"><a name="Naming">Naming Conventions</a></h2>
+
+<p>This section describes the rules that (ideally) should be followed for naming and identifying new files, functions, and data types.</p>
+
+<p><a name="CVSID"> </a></p>
+
+<h3 id="CVS_ID"><a name="CVSID">CVS ID</a></h3>
+
+<p>Each file should include a CVS ID string for identification. The preferred format is:</p>
+
+<pre class="notranslate"> "@(#) $RCSfile: nss-guidelines.html,
+            v $ $Revision: 48936 $ $Date: 2009-08-11 07:45:57 -0700 (Tue, 11 Aug 2009) $ $Name$"
+</pre>
+
+<p>You can put the string in a comment or in a static char array. Use #ifdef DEBUG to include the array in debug builds only. The advantage of using an array is that you can use strings(1) to pull the ID tags out of a (debug) compiled library. You can even put them in header files; the header files are protected from double inclusion. The only catch is that you have to determine the name of the array.</p>
+
+<p>Here is an example from lib/base/baset.h:</p>
+
+<pre class="notranslate"> #ifdef DEBUG
+ static const char BASET_CVS_ID[] = "@(#) $RCSfile: nss-guidelines.html,
+            v $ $Revision: 48936 $ $Date: 2009-08-11 07:45:57 -0700 (Tue, 11 Aug 2009) $ $Name$";
+ #endif /* DEBUG */
+</pre>
+
+<p>The difference, between this and Id, is that Id has some useless information (<em>every</em> file is "experimental"), and doesn't have Name. Name is the tag (if any) from which this file was pulled. If you're good with tagging your releases, and then checking out (or exporting!) from the tag for your build, this saves you from messing around with specific files revision numbers.</p>
+
+<h3 id="Header_Files"><a name="HeaderFiles">Header Files</a></h3>
+
+<p>We have a preferred naming system for include files. We had been moving towards one, for some time, but for the NSS 3.0 project we finally wrote it down.<br>
+  </p>
+
+<table style="width: 90%;">
+ <tbody>
+ <tr>
+ <th></th>
+ <th>Data Types</th>
+ <th>Function Prototypes</th>
+ </tr>
+ <tr>
+ <td>Public</td>
+ <td>nss____t.h</td>
+ <td>nss____.h</td>
+ </tr>
+ <tr>
+ <td>Friend (only if required)</td>
+ <td>nss____tf.h</td>
+ <td>nss____f.h</td>
+ </tr>
+ <tr>
+ <td>NSS-private</td>
+ <td>____t.h</td>
+ <td>____.h</td>
+ </tr>
+ <tr>
+ <td>Module-private</td>
+ <td>____tm.h</td>
+ <td>____m.h</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>The files on the right include the files to their left; the files in a row include the files directly above them. Header files always include what they need; the files are protected against double inclusion (and even double opening by the compiler).</p>
+
+<div class="note">
+<p>Note: It's not necessary all eight files exist. Further, this is a simple ideal, and often reality is more complex.</p>
+</div>
+
+<p>We would like to keep names to 8.3, even if we no longer support win16. This usually gives us four characters to identify a module of NSS.</p>
+
+<p>In short:</p>
+
+<ol>
+ <li>Header files for consumption outside NSS start with "nss."</li>
+ <li>Header files with types have a trailing "t", header files with prototypes don't. "extern" declarations of data also go in the prototypes files.</li>
+ <li>"Friend" headers are for things that we really wish weren't used by non-NSS code, but which are. Those files have a trailing "f," and their use should be deprecated.</li>
+ <li>"Module" headers are for things used only within a specific subset of NSS; things which would have been "static" if we had combined separate C source files together. These header files have a trailing "m."<a name="FuncsAndTypes"></a></li>
+</ol>
+
+<h3 id="Functions_and_Types"><a name="FuncsAndTypes">Functions and Types</a></h3>
+
+<p>There are a number of ways of doing things in our API, as well as naming decisions for functions that can affect the usefulness of our library. If our library is self-consistent with how we accomplish these tasks, it makes it easier for the developer to learn how to use our functions. This section of the document should grow as we develop our API.</p>
+
+<p>First some general rules. These rules are derived from existing coding practices inside the security library, since consistency is more important than debates about what might look nice.</p>
+
+<ol>
+ <li><strong>Public functions</strong> should have the form LAYER_Body(), where LAYER is an all caps prefix for what layer the function lives in, and Body is concatenated English words, where the beginning letter of each word is capitalized (also known as <a href="https://en.wikipedia.org/wiki/Camel_case">CamelCase</a>). For Example: LAYER_CapitalizedEnglishWords() or CERT_DestroyCertificate().</li>
+ <li><strong>Data types</strong> and typdefs should have the Form LAYERBody, with the same definitions for LAYER as public functions, and Body in camel case English words. For example: LAYERCapitalizedEnglishWords or SECKEYPrivateKey.</li>
+ <li><strong>Structures</strong> should have the same name as their typedefs, with the string Str added to the end. For example LAYERCapitalizedEnglishWordsStr or SECKEYPrivateKeyStr.</li>
+ <li><strong>Private functions</strong> should have the form layer_Body(), where layer is the all lower case prefix for what layer the function lives in, and Body is camel case English words. Private functions include functions that may be "public" in a C sense, but are not exported out of the layer. For example: layer_CapitalizedEnglishWords() or pk11_GenerateKeyID().</li>
+ <li><strong>Public macros</strong> should have the form LAYER_BODY(), where LAYER is an all caps prefix for what layer the macro lives in, and BODY is English words, all in upper case, separated by underscores. For example: LAYER_UPPER_CASE_ENGLISH_WORDS() or DER_CONVERT_BIT_STRING().</li>
+ <li><strong>Structure members</strong> for exposed data structures should have the form capitalizedEnglishWords (the first letter uncapitalized). For example: PK11RSAGenParamsStr.<strong>keySizeInBits</strong></li>
+ <li>For <strong>members of enums</strong>, our current API has no standard (typedefs for enums should follow the Data types standard). There seem to be three reasonable options:
+ <ol>
+ <li>Enum members have the same standard as exposed data structure members.</li>
+ <li>Enum members have the same standard as data types.</li>
+ <li>Enum members have the same standard as public macros (minus the '()' of course).</li>
+ </ol>
+ Options 2 and 3 are the more preferred options. Option 1, currently the most common used for enums, actually creates namespace pollution.</li>
+ <li><strong>Callback functions</strong>, and functions used in function tables, should have a typedef used to define the complete signature of the given function. Function typedefs should have the following format: LAYERBody(), with the same definitions for LAYER as public functions, and Body is camel case English words. For example: LAYERCapitalizedEnglishWords or SECKEYPrivateKey.<a name="Opaque"></a></li>
+</ol>
+
+<h2 id="Opaque_Data_Structures"><a name="Opaque">Opaque Data Structures</a></h2>
+
+<p>There are many data structures in the security library whose definition is effectively private, to the portion of the security library that defines and operates on those data structures. External code does not have access to these definitions. The goal here is to increase the opaqueness of these structures. This will allow us to modify the size, definition, and format of these data structures in future releases, without interfering with the operation of existing applications that use the security library.</p>
+
+<p>The first task is to ensure the data structure definition lives in a private header file, while its declaration lives in the public. The current standard in the security library is to typedef the data structure name, the easiest way to accomplish this would be to add the typedef to the public header file.</p>
+
+<p>For example, for the structure SECMyOpaqueData you would add:</p>
+
+<pre class="notranslate"> typedef struct SECMyOpaqueDataStr SECMyOpaqueData;</pre>
+
+<p>and add the actual structure definition to the private header file. In this same example:</p>
+
+<pre class="notranslate"> struct SECMyOpaqueDataStr {
+ unsigned long myPrivateData1;
+ unsigned long myPrivateData2;
+ char *myName;
+ };</pre>
+
+<p>the second task is to determine if individual data fields, within the data structure, are part of the API. One example may be the peerCert field, in an SSL data structure. Accessor functions, for these data elements, should be added to the API.</p>
+
+<p>There can be legitimate exceptions to this 'make everything opaque' rule. For example, in container structures, such as SECItem, or maybe linked list data structures. These data structures need to be examined on a case by case basis, to determine if</p>
+
+<ol>
+ <li>They are truly stable and will not change in future release</li>
+ <li>It is necessary for the callers of the API to know the size of these structures, as they may allocate new ones and pass them down.<a name="Arenas"></a></li>
+</ol>
+
+<h2 id="Memory_Allocation_with_Arenas"><a name="Arenas">Memory Allocation with Arenas</a></h2>
+
+<p>This section discusses memory allocation using arenas. NSS code uses arenas, and this section explains some of the improvements we are making.</p>
+
+<p>NSS makes use of traditional memory allocation functions, wrapping NSPR's PR_Alloc in a util function called PORT_Alloc. Though NSS makes further use of an NSPR memory-allocation facility which uses 'Arenas' and 'ArenaPools'. This was added via javascript; a fast, lightweight, non-thread-safe (though 'free-threaded') implementation.</p>
+
+<p>Experience shows that users of the security library expect arenas to be threadsafe, so we added locking, and other useful changes.</p>
+
+<ul>
+ <li>There has always been confusion as to the difference between Arenas and ArenaPools. We will simplify down to one logical 'memory bucket' type. Consensus called this type NSSArena.</li>
+ <li>We have lots of code which takes an optional arena pointer, using the arena if there is one, or alternatively the heap if there isn't. Therefore, we wrap that logic into the allocators. Knowing what to then free does takes discipline not to leak memory, but it simplifies things a lot. Also, the implementation of free works (doesn't crash), no matter if from an arena, or the heap, as long as from our allocators. Combined with purify, this also helps us catch cases where things being allocated by one allocator are freed by another, which is a common Windows pitfall.</li>
+ <li>The security code often wants to be sure to zero memory, when it's being freed; we'll add it to the primitives to deal with.</li>
+</ul>
+
+<p>The ARENA_THREADMARK preprocessor definition (default in debug builds), and code it encloses, will add some checking for the following situation:</p>
+
+<ol>
+ <li>Thread A marks the arena, and allocates some memory from it.</li>
+ <li>Thread B allocates some memory from the arena.</li>
+ <li>Thread A releases the arena back to the mark.</li>
+ <li>Thread B now finds itself with a pointer to released data.</li>
+ <li>Some thread -- doesn't matter which -- allocates some data from the arena; this may overlap the chunk thread B has.</li>
+ <li>Boom!</li>
+</ol>
+
+<p>Threadmark code notes the thread ID, whenever an arena is marked, and disallows any allocations or marks by any other thread. (Frees are allowed.)</p>
+
+<p>The ARENA_DESTRUCTOR_LIST preprocessor definition, and the code it encloses, are an effort to make the following work together:</p>
+
+<ol>
+ <li>Arenas, letting you allocate stuff and then removing them all at once</li>
+ <li>Lazy creation of pure-memory objects from ASN.1 blobs, for example use of NSSPKIXCertificate doesn't drag all the code in for all constituent objects, unless they're actually being used</li>
+ <li>Our agressive pointer-tracking facility</li>
+</ol>
+
+<p>All these are useful, but they don't combine well. Now some of the pointer-tracking pressure has eased off, we can drop its use when it becomes too difficult.</p>
+
+<p>Many routines are defined to take an NSSArena *arenaOpt argument. This means if an arena is specified (non-null), it is used, otherwise (null) the routine uses the heap. You can think of the heap as a default arena you can't destroy.<a name="Errors"></a></p>
+
+<h2 id="Error_Handling"><a name="Errors">Error Handling</a></h2>
+
+<p>NSS 3.0 introduces the concept of an error stack. When something goes wrong, the call stack unwinds, with routines returning an error indication. Each level which flags a problem, adds its own error number to the stack. At the bottom of the stack is the fundamental error, for example: file not found, and on top is an error precisely relating to what you are doing.</p>
+
+<div class="note">
+<p>Note: Error stacks are vertical, and never horizontal. If multiple things go wrong simultaneously, and you want to report them all, use another mechanism.</p>
+</div>
+
+<p>Errors, though not integers, are done as external constants, instead of preprocessor definitions. This is so any additional error doesn't trigger the entire tree to rebuild. Likewise, the external references to errors are made in the prototypes files, with the functions which can return them.  Error stacks are thread-private.</p>
+
+<p>The usual semantic is that public routines clear the stack first, private routines don't. Usually, every public routine has a private counterpart, and the implementation of the public routine looks like this:</p>
+
+<pre class="notranslate"> NSSImplement rv *
+ NSSType_Method
+ (
+ NSSType *t,
+ NSSFoo *arg1,
+ NSSBar *arg2
+ )
+ {
+ nss_ClearErrorStack();
+
+ #ifdef DEBUG
+ if( !nssFoo_verifyPointer(arg1) ) return (rv *)NULL;
+ if( !nssBar_verifyPointer(arg2) ) return (rv *)NULL;
+ #endif /* DEBUG */
+
+ return nssType_Method(t, arg1, arg2);
+ }
+</pre>
+
+<p>Aside from error cases, all documented entry points should check pointers in a debug, wherever possible. Pointers to user-supplied buffers, and templates, should be checked against NULL. Pointers to context-style functions should be checked using special debug macros. These macros only define code when DEBUG is turned on, providing a way for systems to register, deregister, and check valid pointers.</p>
+
+<p>SECPORT_DECL_PTR_CLASS(<em>classname</em>,<em> size</em>) - declare a class of pointers (labelled<em> classname</em>) this object file needs to check. This class is local only to this object file.<em> Size</em> is the expected number of pointers of type<em> classname</em>.</p>
+
+<p>SECPORT_DECL_GLOBAL_PTR_CLASS(<em>classname</em>,<em> size</em>) - same as above except <em>classname</em> can be used in other object files.</p>
+
+<p>SECPORT_ADD_POINTER(<em>classname</em>, <em>pointer</em>) - Add <em>pointer</em> as a valid pointer for class<em>classname</em>. This is usually called by a Create function.</p>
+
+<p>SECPORT_VERIFY_POINTER(<em>classname</em>,<em> pointer</em>,<em> secError</em>,<em> returnValue</em>)- Check if a given <em>pointer</em> really belongs to the requested class. If it doesn't set the error<em> secError</em> and return the value<em> returnValue</em>.</p>
+
+<p>SECPORT_REMOVE_POINTER(<em>classname</em>,<em> pointer</em>) - Remove a pointer from the valid list. Usually called by a destroy function.</p>
+
+<p>Finally, error logging should be added an documented when debug is turned on. Interfaces for these are in NSPR.</p>
+
+<p><a name="ThreadSafety"> </a></p>
+
+<h2 id="Thread_Safety"><a name="ThreadSafety">Thread Safety</a></h2>
+
+<p>Code developed using the NSS APIs needs to make use of thread safety features. First to examine is <strong>object creation</strong> and <strong>deletion</strong>.</p>
+
+<p>Object creation is usually not a problem. No other threads have access to allocated memory just created. Exceptions to this include objects which are created on the fly, or as global objects.</p>
+
+<p>Deletion, on the other hand, may be trickier. Threads may be referencing the object at the same time a another thread tries to delete it. The semantics depend on the way the application uses the object, also how and when the application wants to destroy it. For some data structures, this problem can be removed by protected reference counting. The object does not disappear until all users have released it.</p>
+
+<p>Next we examine <strong>global data</strong>, including function local static structures. Just initialized, and never to be changed global data, does not need to protection from mutexes. We should also determine if global data should be moved to a session context (see <a href="#SessionContext">session context</a> and <a href="#GlobalEffects">global effects </a>below).</p>
+
+<div class="note">
+<p>Note: Permanent objects, like data in files, databases, tokens, etc. should be treated as global data. Global data which is changed rarely, should be protected by reader/writer locks.</p>
+</div>
+
+<p>Aside from global data,<strong> allocated data</strong> that gets modified needs to be examined. Data that's just been allocated, within a function, is safe to modify. No other code has access to that data pointer. Once that data pointer is made visible to the 'outside', either by returning the pointer, or attaching the pointer to an existing visible data structure, access to the data should be protected. Data structures that are read only, like SECKEYPublicKeys or PK11SymKeys, need not be protected.</p>
+
+<p><a name="SessionContext">Many</a> of the data structures in the security code contain some sort of <strong>session state</strong> or <strong>session context</strong>. These data structures may be accessed without data protection as long as:</p>
+
+<ol>
+ <li>This semantic is documented in the functions which use these data structures.</li>
+ <li>These data structures are used for single streams, and not reused.</li>
+</ol>
+
+<p>Examples of these data in structures may include things like the PKCS #7 ContentInfo structure. Example code should be included in the documentation, to show how to safely use these data objects.</p>
+
+<p>A major type of global and allocated data that should be examined is various <strong>data on lists</strong>. Queued, linked, and hash table stored objects should be examined with special care. Make sure adding, removing, accessing, and destroying these objects are all safe operations.</p>
+
+<p>There are a number of strategies, and entire books about how to safely access data on lists. Some simple strategies and their issues:</p>
+
+<ul>
+ <li><strong>Use hash tables:</strong> Hash table lookups are usually quite fast, limiting the contention on the lock. This is best for large lists of objects. Be sure to calculate the hash value first, then only lock over the hash table value itself. Be sure to increment the reference count, on the returned object, before unlocking. Examples of hash tables can be found in security/nss/lib/certdb/pcertdb.c</li>
+ <li><strong>Lock over the entire search: </strong>For small linked listed, queues, or arrays, you can lock over the entire search. This strategy is best when lists are short, or even better if lists are relatively read only (they don't change very often) and using reader/writer locks.</li>
+ <li><strong>Copy the linked list: </strong>Instead of operating on the global list, you can copy the list. This also requires small lists.</li>
+ <li><strong>Lock over single element with retry:</strong> For medium sized lists, you can secure the reference to each element, complete a test, then detect if the given element has been removed from the list. In the case of removal, the search can either be either restarted, or terminated. This method is a more complicated than the other methods: requiring the calling of search code tolerant to often repeated element inspection.</li>
+ <li>Examples of the previous strategies can be found in <a href="https://searchfox.org/mozilla-central/source/security/nss/lib/pk11wrap/pk11slot.c">security/nss/lib/pk11wrap/pk11slot.c.</a></li>
+</ul>
+
+<p>Where possible use the NSPR list primitives. From these you can even set up SECUtil style thread-safe lists that use some combination of the above strategies.</p>
+
+<p><a name="ServiceFunctions"></a>In order to be fully thread safe, your code must understand the semantics of the <strong>service functions </strong>it calls, and whether they are thread safe. For now, we should internally document which service functions we call, and how we expect them to behave in a threaded environment.</p>
+
+<p><a name="GlobalEffects"></a>Finally, from an API point of view, we should examine functions which have <strong>global effects</strong>. Functions like XXX_SetDefaultYYY(); should not operate on global data, particularly if they may be called multiple times, to provide different semantics for different operations. For example, the following should be avoided :</p>
+
+<ul>
+ <li>SEC_SetKey(keyForOperation);<br>
+ SEC_Encrypt(Data,Length);</li>
+</ul>
+
+<p>Instead, a context handle should be created, and the SEC_SetKey() function, above, made on that handle. Fortunately most of the existing API has the correct semantics.</p>
+
+<p>The exception to this global effects rule may be functions which set global state for an application at initialization time.</p>
+
+<p><a name="Design"> </a></p>
+
+<h2 id="MethodsFunctions_Design"><a name="Design">Methods/Functions Design</a></h2>
+
+<p><a name="Design"> </a><a name="InitShutdown"> </a></p>
+
+<h3 id="Init_Shutdown_Functions"><a name="InitShutdown">Init, Shutdown Functions</a></h3>
+
+<p>If a layer has some global initialization tasks, which need to be completed before the layer can be used, that layer should supply an initialization function of the form LAYER_Init(). If an initialization function is supplied, a corresponding LAYER_Shutdown() function should also be supplied. LAYER_INIT() should increment a count of the number of times it is called, and LAYER_Shutdown() should decrement that count, and shutdown when the count reaches '0'.</p>
+
+<p><a name="OpenClose"> </a></p>
+
+<h3 id="Open_Close_Functions"><a name="OpenClose">Open, Close Functions</a></h3>
+
+<p>Open functions should have a corresponding close function. Open and close function are not reference counted, like init and shutdown functions.</p>
+
+<p><a name="CreateFuncs"> </a></p>
+
+<h3 id="Creation_Functions"><a name="CreateFuncs">Creation Functions</a></h3>
+
+<p>In general, data objects should all have functions which create them. These functions should have the form LAYER_CreateDataType[FromDataType](). For instance generating a new key would change from PK11_KeyGen() to PK11_CreateSymKey().</p>
+
+<p><a name="DestroyFuncs"> </a></p>
+
+<h3 id="Destruction_Functions"><a name="DestroyFuncs">Destruction Functions</a></h3>
+
+<p>In the security library we have 3 different ways of saying 'get rid of this data object': Free, Delete, and Destroy.</p>
+
+<p>It turns out there are several different semantics of getting rid of a data object too:</p>
+
+<ol>
+ <li>decrement the reference count, and when the object goes to '0' free/delete/destroy it</li>
+ <li>destroy it right now, this very instance, not matter what</li>
+ <li>make any permanent objects associated with this data object go away</li>
+ <li>a combination of 1 and 3, or 2 and 3</li>
+</ol>
+
+<p>Unfortunately, within the security library Free, Delete, and Destroy are all used interchangeably, for all sorts of object destruction. For instance, CERT_DestroyCertificate() is type 1, PK11_DestroySlot() is type 2, and PK11_DestroyTokenObject() is type 3.</p>
+
+<div class="note">
+<p>Note: In non-reference counted functions, types 1 and 2 are the same.</p>
+</div>
+
+<p>We are standardizing on the following definitions:</p>
+
+<p>Destroy - means #1 for reference counted objects, #2 for non reference counted objects.</p>
+
+<p>Delete - means #3.</p>
+
+<p>This has the advantage of<em> not</em> surfacing the reference countedness of a data object. If you own a pointer to an object, you must always destroy it. There is no way to destroy an object by bypassing it's reference count. Also, the signature of public destruction functions do not have the 'freeit' PRBool, since the structures being freed are opaque.</p>
+
+<p><a name="DupCopy"> </a></p>
+
+<h3 id="Dup_Copy_and_Reference_Functions"><a name="DupCopy">Dup, Copy, and Reference Functions</a></h3>
+
+<p>Functions that return a new reference or copy of a given object should have the form LAYER_DupDataType(). For instance, CERT_DupCertifiate() will remain the same, but PK11_ReferenceSlot() will become PK11_DupSlot(), and PK11_CloneContext() will become PK11_DupContext().</p>
+
+<p><a name="SearchFuncs"> </a></p>
+
+<h3 id="Search_Functions"><a name="SearchFuncs">Search Functions</a></h3>
+
+<p>There are several different kinds of searches done via the security library. The first is a search for exactly one object, meeting a given criteria. These types of searches include CERT_FindCertByDERCert(), PK11_FindAnyCertFromDERCert(), PK11_FindKeyByCert(), PK11_GetBestSlot(). These functions should all have the form LAYER_FindDataType[ByDataType]().</p>
+
+<p>The second kind of search, looks for all the objects that match a given criteria. These functions operate on a variety of levels. Some return allocated arrays of data, some return linked lists of data, others use callbacks to return data elements one at a time. Unfortunately, there are good reasons to maintain all these types. So here are some guidelines to make them more manageable:</p>
+
+<p>All callback operating search functions should be in the low level of the API, if exposed at all. Developers dealing with SSL and PKCS #7 layers should not have to see any of these functions. These functions should have the form LAYER_TraverseStorageObjectOrList().</p>
+
+<p>List and Array returning functions should be available at the higher layers of the API, most wrapping  LAYER_Traverse() functions. They should have the form LAYER_LookupDataType{List|Array}[ByDataType]().</p>
+
+<ul>
+</ul>
+
+<p><a name="Accessors"> </a></p>
+
+<h3 id="Accesssor_Functions"><a name="Accessors">Accesssor Functions</a></h3>
+
+<p>Accessor Functions should take the following formats:</p>
+
+<p>LAYER_DataTypeGetElement() -- Get a specific element of a data structure.<br>
+ LAYER_DataTypeSetElement() -- Set a specific element of a data structure.<br>
+ LAYER_DataTypeExtractDataType() -- Get a pointer to the second data type which was derived for elements of the first data type.</p>
+
+<p>Examples: PK11_SlotGetSeries(), PK11_SymKeyGetSeries(), CERT_CertificateExtractPublicKey()</p>
+
+<p><a name="Params"> </a></p>
+
+<h3 id="Parameter_ordering"><a name="Params">Parameter ordering</a></h3>
+
+<p>Most functions will have a 'Natural' ordering for parameters. To keep consistency we should have some minimal parameter consistency. For most functions, they can be seen as operating on a particular object. This object, that the function is operating on, should come first. For instance, in most SSL functions this is the NSPR Socket, or the SSL Socket structure: Update, final, encrypt, decrypt type functions operating on their state contexts, etc.</p>
+
+<p>All encrypt and decrypt functions, which return data inline, should have a consistent signature:</p>
+
+<pre class="notranslate">SECStatus MY_FunctionName(MyContext *<em>context</em>,
+ unsigned char *<em>outBuf</em>,
+ SECBufferLen *<em>outLen</em>,
+ SECBufferLen<em>maxOutLength</em>,
+ unsigned char *<em>inBuf</em>,
+ SECBufferLen<em>inLen</em>)
+</pre>
+
+<p>Encrypt and decrypt like functions which have different properties, additional parameters, callbacks, etc., should insert their additional parameters between the context (first parameter) and the output buffer.</p>
+
+<p>All hashing update, MACing update, and encrypt/decrypt functions which act like filters should have a consistent signature:</p>
+
+<pre class="notranslate">SECStatus PK11_DigestOp(PK11Context *<em>context</em>,
+ unsigned char *<em>inBuf</em>,
+ SECBufferLen<em>inLen</em>)
+</pre>
+
+<p>Functions like these which have different properties, for example, additional parameters, callbacks, etc., should insert their additional parameters between the context (first parameter) and the input buffer.</p>
+
+<p>Within your layer, multiple similar functions should have consistent parameter order.<a name="Callbacks"></a></p>
+
+<h3 id="Callback_Functions"><a name="Callbacks"> Callback Functions</a></h3>
+
+<p><a name="Callbacks"> </a> Callback functions should all contain an opaque parameter (void *) as their first argument, passed by the original caller. Callbacks which are set, like SSL callbacks, should have defaults which provide generally useful semantics.</p>
diff --git a/files/ja/mozilla/projects/nss/nss_developer_tutorial/index.html b/files/ja/mozilla/projects/nss/nss_developer_tutorial/index.html
new file mode 100644
index 0000000000..125fe4bf2f
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/nss_developer_tutorial/index.html
@@ -0,0 +1,214 @@
+---
+title: NSS 開発者向けチュートリアル
+slug: Mozilla/Projects/NSS/NSS_Developer_Tutorial
+translation_of: Mozilla/Projects/NSS/NSS_Developer_Tutorial
+---
+<div title="Page 1">
+<div>
+<div>
+<div>
+<h2 id="NSS_Coding_Style">NSS Coding Style</h2>
+
+<h3 id="Formatting">Formatting</h3>
+
+<p><strong>Line length</strong> should not exceed 80 characters.</p>
+
+<p><strong>Indentation level</strong> is 4.</p>
+
+<p><strong>Tabs</strong> are used heavily in many NSS source files. Try to stay consistent when you modify existing code. The proper use of tabs has often been confusing for new NSS developers, so in <code>nss/lib/ssl</code>, we're gradually removing the use of tabs.</p>
+
+<p><strong>Curly braces</strong>: both of the following styles are allowed:</p>
+
+<pre class="brush: cpp notranslate">if (condition) {
+ action1();
+} else {
+ action2();
+}</pre>
+
+<p>Or:</p>
+
+<pre class="brush: cpp notranslate">if (condition)
+{
+ action1();
+}
+else
+{
+ action2();
+}</pre>
+
+<p>The former style is more common. When modifying existing code, try to stay consistent. In new code, prefer the former style, as it conserves vertical space.</p>
+
+<p>When a block of code consists of a single statement, NSS doesn’t require curly braces, so both of these examples are fine:</p>
+
+<pre class="brush: cpp notranslate">if (condition) {
+ action();
+}
+</pre>
+</div>
+</div>
+</div>
+</div>
+
+<div title="Page 2">
+<div>
+<div>
+<div>
+<p>Or:</p>
+
+<pre class="brush: cpp notranslate">if (condition)
+ action();</pre>
+
+<p>although the use of curly braces is more common.</p>
+
+<p><strong>Multiple-line comments</strong> should be formatted as follows:</p>
+
+<pre class="brush: cpp notranslate">/*
+ * Line1
+ * Line2
+ */ </pre>
+
+<p>or</p>
+
+<pre class="brush: cpp notranslate">/*
+** Line 1
+** Line 2
+*/
+</pre>
+
+<p>The following styles are also common, because they conserve vertical space:</p>
+
+<pre class="brush: cpp notranslate">/* Line1
+ * Line2
+ */</pre>
+
+<p>or</p>
+
+<pre class="brush: cpp notranslate">/* Line1
+** Line2
+*/</pre>
+
+<p>or</p>
+
+<pre class="brush: cpp notranslate">/* Line1
+ * Line2 */</pre>
+
+<h3 id="Naming">Naming</h3>
+
+<p>Public functions are named <code>FOO_DoOneAction</code>.</p>
+
+<p>Global, but unexported functions, are usually named <code>foo_DoOneAction</code>.</p>
+
+<p>Variable, and function parameter names, always start with a lowercase letter. The most common style is <code>fooBarBaz</code>, although <code>foobarbaz</code> and <code>foo_bar_baz</code> are also used.</p>
+
+<h3 id="Miscellaneous">Miscellaneous</h3>
+
+<p><strong>goto</strong> can be used, to simplify resource deallocation, before returning from a function.</p>
+
+<p>A data buffer is usually represented as:</p>
+</div>
+</div>
+</div>
+</div>
+
+<div title="Page 3">
+<div>
+<div>
+<div>
+<pre class="brush: cpp notranslate">unsigned char *data;
+unsigned int len;</pre>
+
+<p>The buffer pointer is <code>unsigned char *</code>, as opposed to <code>void *</code>, so we can perform pointer arithmetic without casting. Use <code>char *</code> only if the data is interpreted as text characters.</p>
+
+<p>For historical reasons, the buffer length is <code>unsigned int</code>, as opposed to <code>size_t</code>. Unfortunately, this can be a source of integer overflow bugs on 64-bit systems.</p>
+
+<h2 id="C_Features">C Features</h2>
+
+<p>NSS requires C99.  However, not all features from C99 are equally available.</p>
+
+<ul>
+ <li>Variables can be declared, at the point they are first used.</li>
+ <li>The <code>inline</code> keyword can be used.</li>
+ <li>Variadic macro arguments are permitted, but their use should be limited to using <code>__VA_ARGS__</code>.</li>
+ <li>The exact-width integer types in NSPR should be used, in preference to those declared in <code>&lt;stdint.h&gt;</code> (which will be used by NSPR in the future).</li>
+ <li>Universal character names are not permitted, as are wide character types (<code>char16_t</code> and <code>char32_t</code>).  NSS source should only include ASCII text.  Escape non-printing characters (with <code>\x</code> if there is no special escape such as \r, \n, and \t) and avoid defining string literals that use non-ASCII characters.</li>
+ <li>One line comments starting with <code>//</code> are permitted.</li>
+</ul>
+
+<p>Check with nss-dev@ before using a language feature not already used, if you are uncertain. Please update this list if you do.</p>
+
+<p>These restrictions are different for C++ unit tests, which can use most C++11 features.  The <a href="/en-US/docs/Using_CXX_in_Mozilla_code">Mozilla C++ language features guide</a>, and the <a href="https://chromium-cpp.appspot.com/">Chromium C++ usage guide</a>, list C++ features that are known to be widely available and compatible. You should limit features to those that appear in both guides. Ask on nss-dev@ if you think this is restrictive, or if you wish to prohibit a specific feature.</p>
+
+<h2 id="NSS_C_ABI_backward_compatibility">NSS C ABI backward compatibility</h2>
+
+<h3 id="Functions">Functions</h3>
+
+<p>Exported functions cannot be removed.</p>
+
+<p>The function prototype of an exported function, cannot be changed, with these exceptions:</p>
+
+<ul>
+ <li>
+ <p>A <code>Foo *</code> parameter can be changed to <code>const Foo *</code>. This change is always safe.</p>
+ </li>
+ <li>
+ <p>Sometimes an <code>int</code> parameter can be changed to <code>unsigned int</code>, or an <code>int *</code> parameter can be changed to <code>unsigned int *</code>. Whether such a change is safe needs to be reviewed on a case-by-case basis.</p>
+ </li>
+</ul>
+
+<h2 id="Types">Types</h2>
+
+<h3 id="Structs">Structs</h3>
+
+<p>Members of an exported struct, cannot be reordered or removed.</p>
+
+<p>Under certain circumstances, it is safe to add new members to an exported struct at the end.</p>
+
+<p>Opaque structs give us complete freedom to change them, but require applications to call NSS functions, to allocate and free them.</p>
+
+<h3 id="Enums">Enums</h3>
+
+<p>The numeric values of public enumerators cannot be changed. To stress this fact, we often explicitly assign numeric values to enumerators, rather than relying on the values assigned by the compiler.</p>
+
+<h3 id="Symbol_export_lists">Symbol export lists</h3>
+
+<p>The <code>manifest.mn</code> file, in a directory in the NSS source tree, specifies which headers are public, and which headers are private.</p>
+
+<p>Public headers are in the <code>EXPORTS</code> variable.</p>
+
+<p>Private headers,which may be included by files in other directories, are in the <code>PRIVATE_EXPORTS</code> variable.</p>
+</div>
+</div>
+</div>
+</div>
+
+<div title="Page 4">
+<div>
+<div>
+<div>
+<p>Private headers, that are only included by files in the same directory, are not listed in either variable.</p>
+
+<p>Only functions listed in the symbol export lists (<code>nss.def</code>, <code>ssl.def</code>, <code>smime.def</code>, etc.) are truly public functions. Unfortunately, public headers may declare private functions, for historical reasons. The symbol export lists are the authoritative source of public functions.</p>
+
+<h3 id="Behavioral_changes">Behavioral changes</h3>
+
+<p><strong>Bug/quirk compatible</strong>: Occasionally we cannot fix a bug, because applications may depend on the buggy behavior. We would need to add a new function to provide the desired behavior.</p>
+
+<p>Similarly, <strong>new options</strong> often need to be disabled by default.</p>
+
+<h2 id="NSS_reviewfeature_approval_process">NSS review/feature approval process</h2>
+
+<p>NSS doesn’t have 'super reviewers'. We wish to increase the number of NSS developers, who have broad understanding of NSS.</p>
+
+<p>One review is usually enough for the review to pass. For critical code reviews, such as a patch release of a stable branch, two reviews may be more reasonable.</p>
+
+<p>For new features, especially those that appear controversial, try to find a reviewer from a different company or organization than your own, to avoid any perceptions of bias.</p>
+
+<h2 id="Update_NSS_in_mozilla-inbound_and_mozilla-central">Update NSS in mozilla-inbound and mozilla-central</h2>
+
+<p>The procedure is documented at <a href="https://developer.mozilla.org/en-US/docs/Updating_NSPR_or_NSS_in_mozilla-central">https://developer.mozilla.org/en-US/docs/Updating_NSPR_or_NSS_in_mozilla-central. </a></p>
+
+<p>If it is necessary to apply private patches, please document them in <code>&lt;tree&gt;/security/patches/README</code>.</p>
+</div>
+</div>
+</div>
+</div>
diff --git a/files/ja/mozilla/projects/nss/nss_faq/index.html b/files/ja/mozilla/projects/nss/nss_faq/index.html
new file mode 100644
index 0000000000..f1ec76a4c4
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/nss_faq/index.html
@@ -0,0 +1,79 @@
+---
+title: NSS FAQ
+slug: Mozilla/Projects/NSS/NSS_FAQ
+tags:
+ - NSS
+translation_of: Mozilla/Projects/NSS/FAQ
+---
+<h3 id=".E4.B8.80.E8.88.AC.E7.9A.84.E3.81.AA.E8.B3.AA.E5.95.8F" name=".E4.B8.80.E8.88.AC.E7.9A.84.E3.81.AA.E8.B3.AA.E5.95.8F"> 一般的な質問 </h3>
+<h3 id="Network_Security_Services_.28NSS.29_.E3.81.A8.E3.81.AF.E4.BD.95.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="Network_Security_Services_.28NSS.29_.E3.81.A8.E3.81.AF.E4.BD.95.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> Network Security Services (NSS) とは何ですか? </h3>
+<p>NSS とは、セキュリティ機能が利用できるクライアント/サーバアプリケーションのクロスプラットフォーム開発をサポートするようにデザインされたライブラリ、API、ユーティリティ、そして参考文献のセットです。NSS では、Netscape や他の会社で利用されている暗号ライブラリの完全にオープンソースな実装が提供されます。NSS が利用されている製品の例としては、Netscape 6 ブラウザ、iPlanet E-Commerce Solutions のサーバ製品、Gateway Connected Touch Pad with Instant AOL などが挙げられます。
+</p><p>NSS の概要については、<a href="ja/Overview_of_NSS">NSS 概観</a> をご覧ください。オープンソース NSS プロジェクトの詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/">NSS プロジェクトのページ</a> をご覧ください。
+</p>
+<h3 id="NSS_.E3.81.A7.E3.81.AF.E4.BD.95.E3.81.8C.E3.81.A7.E3.81.8D.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F_.E7.A7.81.E3.81.8C.E4.BD.BF.E3.81.A3.E3.81.A6.E3.81.84.E3.82.8B.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.A7.E5.BD.B9.E3.81.AB.E7.AB.8B.E3.81.A4.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.A7.E3.81.AF.E4.BD.95.E3.81.8C.E3.81.A7.E3.81.8D.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F_.E7.A7.81.E3.81.8C.E4.BD.BF.E3.81.A3.E3.81.A6.E3.81.84.E3.82.8B.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.A7.E5.BD.B9.E3.81.AB.E7.AB.8B.E3.81.A4.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F"> NSS では何ができるのですか? 私が使っているアプリケーションで役に立つのでしょうか? </h3>
+<p>あなたが使っているアプリケーションに、SSL、S/MIME、その他のインターネットセキュリティスタンダードの機能を加えたい場合 Netscape Security Services (NSS) を使うことができます。NSS は SSL および TSL のすべてのバージョンをサポートしているので、すでに SSL をサポートしている多数のクライアントやサーバと通信する必要があるアプリケーションにはまさにうってつけといえます。
+</p><p>NSS に PKCS #11 インターフェースが含まれているということは、あなたのアプリケーションがサーバ上の <a href="#.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.8F.E3.83.BC.E3.83.89.E3.82.A6.E3.82.A7.E3.82.A2.E3.82.A2.E3.82.AF.E3.82.BB.E3.83.A9.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F">ハードウェアアクセラレータ</a> や二因子認証 (two-factor authentication) のための <a href="#NSS_.E3.82.92.E5.88.A9.E7.94.A8.E3.81.97.E3.81.A6.E3.82.B9.E3.83.9E.E3.83.BC.E3.83.88.E3.82.AB.E3.83.BC.E3.83.89.E3.82.92.E7.A7.81.E3.81.AE.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F">スマートカード</a> を利用できるということを意味しています。
+</p>
+<h4 id="NSS_.E3.81.AF_OpenSSL_.E3.81.A8.E6.AF.94.E3.81.B9.E3.81.A6.E3.81.A9.E3.81.86.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF_OpenSSL_.E3.81.A8.E6.AF.94.E3.81.B9.E3.81.A6.E3.81.A9.E3.81.86.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> NSS は OpenSSL と比べてどうですか? </h4>
+<p><a class="external" href="http://www.openssl.org/">OpenSSL</a> はサーバサイド SSL、TLS、および汎用暗号化機能ライブラリを実装するオープンソースプロジェクトですが、PKCS #11 をサポートしていません。OpenSSL は Eric A. Young と Tim J. Hudson によって開発された SSLeay ライブラリに基づいており、Apache サーバで幅広く使用されています。Apache スタイルのライセンスが付与されています。
+</p><p>NSS は <a href="ja/PKCS11_FAQ">PKCS #11</a> や S/MIME をはじめとして、サーバおよびクライアント両方のアプリケーションをサポートしています。できるだけ多くの用途を可能にするため、NSS は <a class="external" href="http://www.mozilla-japan.org/MPL/">Mozilla Public License</a> と <a class="external" href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a> の両方でライセンスされています。MPL 条項下または GPL 条項下のどちらでライセンスするかを選択することができます。
+</p>
+<h4 id="NSS_.E3.81.AF_SSLRef_.E3.81.A8.E6.AF.94.E3.81.B9.E3.81.A6.E3.81.A9.E3.81.86.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF_SSLRef_.E3.81.A8.E6.AF.94.E3.81.B9.E3.81.A6.E3.81.A9.E3.81.86.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> NSS は SSLRef と比べてどうですか? </h4>
+<p>SSLRef は初期の SSL プロトコルのレファレンス実装で、フィックスされることのないバグがあり、TLS や新しい 56-bit エクスポート暗号スイートをサポートしていません。さらに SSLRef は PKCS#1 への Bleichenbacher 攻撃に対する修正が施されていません。
+</p><p>Netscape はもう SSLRef を管理していませんし、利用できないようにしています。SSLRef は SSL 実装の一例としてビルドされたものであり、製品としてのアプリケーションのためにビルドされたものではありません。
+</p><p>NSS は商業的な開発者によって利用されるような目的からデザインされたもので、Netscape や他の会社から出されている多くのクライアント/サーバ製品で利用されているセキュリティ機能をサポートするために利用されているのと同じアーキテクチャを使用した完全なソフトウェア開発キットを備えています。
+</p>
+<h4 id=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.97.E3.83.A9.E3.83.83.E3.83.88.E3.83.95.E3.82.A9.E3.83.BC.E3.83.A0.E3.80.81.E9.96.8B.E7.99.BA.E7.92.B0.E5.A2.83.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.97.E3.83.A9.E3.83.83.E3.83.88.E3.83.95.E3.82.A9.E3.83.BC.E3.83.A0.E3.80.81.E9.96.8B.E7.99.BA.E7.92.B0.E5.A2.83.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> どのようなプラットフォーム、開発環境がサポートされているのでしょう? </h4>
+<div class="warning">このセクションの内容は古くなっています</div>
+<p>iPlanet E-Commerce Solutions は NSS 3.1 が 18のプラットフォームで利用できることを確認しています。その中には、AIX 4.3、HP-UX 11.0、Red Hat Linux 6.0、Solaris (2.6 以降) 、Windows NT (4.0 以降) 、そして Windows 2000 が含まれており、他の貢献者がさらに多くのプラットフォームで利用できるよう作業を進めています。NSS 3.1 API には C または C++ 開発環境が必要です。
+</p><p>最新の NSS リリースノートやプラットフォームに関する詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/#Info">プロジェクト情報</a> をご覧ください。
+</p>
+<h4 id=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E6.9A.97.E5.8F.B7.E5.8C.96.E3.82.B9.E3.82.BF.E3.83.B3.E3.83.80.E3.83.BC.E3.83.89.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E6.9A.97.E5.8F.B7.E5.8C.96.E3.82.B9.E3.82.BF.E3.83.B3.E3.83.80.E3.83.BC.E3.83.89.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> どのような暗号化スタンダードがサポートされているのでしょう? </h4>
+<p>NSS は SSL <a href="ja/Glossary#SSL">SSL v2/v3</a>、<a href="ja/Glossary#TLS">TLS</a>、<a href="ja/Glossary#PKCS_.235">PKCS #5</a>、<a href="ja/Glossary#PKCS_.237">PKCS #7</a>、<a href="ja/Glossary#PKCS_.2311">PKCS #11</a>、<a href="ja/Glossary#PKCS_.2312">PKCS #12</a>、<a href="ja/Glossary#S.2FMIME">S/MIME</a>、そして <a href="ja/Glossary#X.509">X.509 v3</a> 証明書をサポートしています。詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/nss-3.11/nss-3.11-algorithms.html">Encryption Technologies Available in NSS 3.11</a> をご覧ください。
+</p>
+<h4 id="NSS_.E3.81.A8_PSM_.E3.81.A8.E3.81.AE.E9.96.A2.E4.BF.82.E3.81.AF.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.82.82.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name="NSS_.E3.81.A8_PSM_.E3.81.A8.E3.81.AE.E9.96.A2.E4.BF.82.E3.81.AF.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.82.82.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> NSS と PSM との関係はどのようなものでしょう? </h4>
+<p>Personal Security Manager (PSM) は NSS の上にビルドされており、セキュリティ機能を備えたアプリケーションのクロスプラットフォーム開発をサポートするようにデザインされたライブラリとデーモンから成っています。PSM バイナリーでは、アプリケーションのために暗号処理を行うクライアントモジュールが提供されます。Netscape Personal Security Manager は、Netscape 6 や Gateway Connected Touch Pad with Instant AOL とともに公開されており、Communicagotr 4.7x でも利用できるようになっています。
+</p><p>PSM オープンソースプロジェクトについての詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/psm/">Personal Security Manager</a> をご覧ください。
+</p>
+<h4 id=".E3.82.BD.E3.83.BC.E3.82.B9.E3.81.AF.E3.81.A9.E3.81.93.E3.81.A7.E6.89.8B.E3.81.AB.E5.85.A5.E3.82.8C.E3.82.89.E3.82.8C.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name=".E3.82.BD.E3.83.BC.E3.82.B9.E3.81.AF.E3.81.A9.E3.81.93.E3.81.A7.E6.89.8B.E3.81.AB.E5.85.A5.E3.82.8C.E3.82.89.E3.82.8C.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> ソースはどこで手に入れられますか? </h4>
+<div class="warning">このセクションの内容は古くなっています</div>
+<p>NSS 3.1 ソースのチェックアウトおよびビルド方法については、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/buildnss_31.html">NSS 3.1 ビルドガイド</a> をご覧ください。
+</p><p>ソースコードは <a class=" link-ftp" href="ftp://ftp.mozilla.org/pub/mozilla.org/security/" rel="freelink">ftp://ftp.mozilla.org/pub/mozilla.org/security/</a> からも tar ファイルとしてダウンロードできます。
+</p>
+<h4 id=".E3.81.84.E3.81.8F.E3.82.89.E3.81.97.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name=".E3.81.84.E3.81.8F.E3.82.89.E3.81.97.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> いくらしますか? </h4>
+<p>NSS ソースコードおよびバイナリ (利用できるようになった暁には) は完全に無料です。ライセンス料、著作権使用料、購読料、すべて無料です。
+</p>
+<h3 id=".E9.96.8B.E7.99.BA.E8.80.85.E5.90.91.E3.81.91.E3.81.AE.E8.B3.AA.E5.95.8F" name=".E9.96.8B.E7.99.BA.E8.80.85.E5.90.91.E3.81.91.E3.81.AE.E8.B3.AA.E5.95.8F"> 開発者向けの質問 </h3>
+<h4 id=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.8F.E3.83.BC.E3.83.89.E3.82.A6.E3.82.A7.E3.82.A2.E3.82.A2.E3.82.AF.E3.82.BB.E3.83.A9.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name=".E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E3.83.8F.E3.83.BC.E3.83.89.E3.82.A6.E3.82.A7.E3.82.A2.E3.82.A2.E3.82.AF.E3.82.BB.E3.83.A9.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.8C.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> どのようなハードウェアアクセラレータがサポートされているのでしょう? </h4>
+<p>NSS はハードウェアアクセラレーションのための PKCS #11 インターフェースをサポートしています。Chrysalis-IT や nCipher、Rainbow Technologies をはじめとする大手のアクセラレータベンダーもこのインターフェースをサポートしているため、NSS が利用できるアプリケーションもまた多様なハードウェアアクセラレーションをサポートできます。
+</p>
+<h4 id="NSS_.E3.82.92.E5.88.A9.E7.94.A8.E3.81.97.E3.81.A6.E3.82.B9.E3.83.9E.E3.83.BC.E3.83.88.E3.82.AB.E3.83.BC.E3.83.89.E3.82.92.E7.A7.81.E3.81.AE.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F" name="NSS_.E3.82.92.E5.88.A9.E7.94.A8.E3.81.97.E3.81.A6.E3.82.B9.E3.83.9E.E3.83.BC.E3.83.88.E3.82.AB.E3.83.BC.E3.83.89.E3.82.92.E7.A7.81.E3.81.AE.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.EF.BC.9F"> NSS を利用してスマートカードを私のプリケーションに組み込むにはどうしたら良いでしょう? </h4>
+<p>NSS は スマートカードのための PKCS #11 インターフェースをサポートしています。そのため、NSS によって提供される PKCS #11 インターフェースを利用するアプリケーションは、ActiveCard や Litronic、SafeNet、SecureID Technologies をはじめとする大手のベンダーのスマートカードをサポートします。これらのカードは PKCS #11 インターフェースをサポートしています。
+</p>
+<h4 id="NSS_.E3.81.AF.E4.BB.96.E3.81.AE_Netscape_.E8.A3.BD.E5.93.81.E3.81.A8.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E4.BA.92.E6.8F.9B.E6.80.A7.E3.81.8C.E3.81.82.E3.82.8A.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF.E4.BB.96.E3.81.AE_Netscape_.E8.A3.BD.E5.93.81.E3.81.A8.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AA.E4.BA.92.E6.8F.9B.E6.80.A7.E3.81.8C.E3.81.82.E3.82.8A.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> NSS は他の Netscape 製品とどのような互換性がありますか? </h4>
+<p>NSS は他の Netscape 製品と二つの方法で緊密に統合されています。第一に、SSL や TLS を実装するために NSS を利用することで SSL および TLS をサポートする Netscape や他のベンダーからのすべての製品と SSL 通信が可能になります。第ニに、NSS を利用することで Netscape クライアントとサーバ製品、そしてあなたのアプリケーションとの間で証明書を簡単に共有することができます。
+</p>
+<h4 id="NSS_.E3.81.AB.E3.81.AF_Netscape_Portable_Runtime_.28NSPR.29_.E3.81.8C.E5.BF.85.E8.A6.81.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AB.E3.81.AF_Netscape_Portable_Runtime_.28NSPR.29_.E3.81.8C.E5.BF.85.E8.A6.81.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> NSS には Netscape Portable Runtime (NSPR) が必要ですか? </h4>
+<p>クロスプラットフォームサポートを提供するため、NSS は Netscape Portable Runtime (NSPR) ライブラリを移植用インターフェースおよびネットワーク I/O やスレッドモデルのための一貫したクロスプラットフォーム・セマンティクスを提供する実装として利用します。アプリケーション全体で NSPR を利用することもできますし、NSS を呼び出す部分内でのみ利用することもできます。Netscape ではマルチスレッドアプリケーションでは NSPR またはネイティブな OS スレッドモデルを採用することを強くお薦めします。(最近の NSPR リリースでは、NSPR のスレッドモデルは、OS がネイティブなスレッドを持っている限り、ネイティブスレッドモデルと互換性を持つようになっています。) あるいは、オープンソース NSPR 実装を採用して、あなたの既存のアプリケーションのスレッドモデルと互換性を持たせることもできます。NSPR に関するより詳しい情報は、<a href="ja/NSPR">Netscape Portable Runtime</a> で見ることができます。
+</p>
+<h4 id=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.97.E3.83.AD.E3.83.88.E3.82.B3.E3.83.AB.E3.81.8C_HTTP_.E3.81.A7.E3.81.AA.E3.81.8F.E3.81.A6.E3.82.82_NSS_.E3.81.AF.E5.88.A9.E7.94.A8.E3.81.A7.E3.81.8D.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.97.E3.83.AD.E3.83.88.E3.82.B3.E3.83.AB.E3.81.8C_HTTP_.E3.81.A7.E3.81.AA.E3.81.8F.E3.81.A6.E3.82.82_NSS_.E3.81.AF.E5.88.A9.E7.94.A8.E3.81.A7.E3.81.8D.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F"> アプリケーションプロトコルが HTTP でなくても NSS は利用できるのでしょうか? </h4>
+<p>はい。SSL はアプリケーションプロトコルとは独立しており、TCP/IP を利用したカスタムアプリケーションプロトコルだけではなく、共通のインターネット標準のアプリケーションプロトコル (HTTP、POP3、FTP、SMTP など) でも作動します。
+</p>
+<h4 id="NSS_.E3.82.92.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.AE.E3.81.8F.E3.82.89.E3.81.84.E6.99.82.E9.96.93.E3.81.8C.E3.81.8B.E3.81.8B.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name="NSS_.E3.82.92.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AB.E7.B5.84.E3.81.BF.E8.BE.BC.E3.82.80.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.AE.E3.81.8F.E3.82.89.E3.81.84.E6.99.82.E9.96.93.E3.81.8C.E3.81.8B.E3.81.8B.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F"> NSS をアプリケーションに組み込むにはどのくらい時間がかかるのでしょうか? </h4>
+<p>統合のための作業は関係する要素の数によります。例えば、開発者の技術やアプリケーションの複雑さ、アプリケーションで要求されるセキュリティのレベルなどです。NSS には、統合プロセスをすぐに開始できるように、SSL API についての詳細な参考文献や基本的な SSL 機能 (暗号化されたセッションの設定、サーバ認証、そしてクライアント認証) のデモ用サンプルコードが含まれています。ただし、あなたのアプリケーションが洗練された証明書管理やスマートカード、ハードウェアアクセラレーションを必要とする場合、統合作業はより広範囲に渡ることになるでしょう。
+</p>
+<h4 id="NSS_.E3.83.84.E3.83.BC.E3.83.AB.E3.81.AF.E3.81.A9.E3.81.93.E3.81.8B.E3.82.89.E3.83.80.E3.82.A6.E3.83.B3.E3.83.AD.E3.83.BC.E3.83.89.E3.81.A7.E3.81.8D.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.83.84.E3.83.BC.E3.83.AB.E3.81.AF.E3.81.A9.E3.81.93.E3.81.8B.E3.82.89.E3.83.80.E3.82.A6.E3.83.B3.E3.83.AD.E3.83.BC.E3.83.89.E3.81.A7.E3.81.8D.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> NSS ツールはどこからダウンロードできますか? </h4>
+<p>いくつかのプラットフォーム向けのコマンドラインツールを含んだ NSS バイナリビルドは <a class=" external" href="http://ftp.mozilla.org/pub/mozilla.org/security/nss/releases" rel="freelink">http://ftp.mozilla.org/pub/mozilla.o...y/nss/releases</a> からダウンロードできます。同時に必要になる NSPR は <a class=" external" href="http://ftp.mozilla.org/pub/mozilla.org/nspr/releases/" rel="freelink">http://ftp.mozilla.org/pub/mozilla.org/nspr/releases/</a> からダウンロードできます。
+</p>
+<h4 id="SSL_.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6.E3.82.88.E3.82.8A.E8.A9.B3.E3.81.97.E3.81.8F.E7.9F.A5.E3.82.8B.E3.81.9F.E3.82.81.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="SSL_.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6.E3.82.88.E3.82.8A.E8.A9.B3.E3.81.97.E3.81.8F.E7.9F.A5.E3.82.8B.E3.81.9F.E3.82.81.E3.81.AB.E3.81.AF.E3.81.A9.E3.81.86.E3.81.97.E3.81.9F.E3.82.89.E8.89.AF.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> SSL についてより詳しく知るためにはどうしたら良いですか? </h4>
+<p>NSS は SSL に関連する広範な参考文献を用意しています。そのなかには高レベルな導入、詳細な API 参考文献、シンプルなクライアント/サーバアプリケーションのためのサンプルコード、オリジナルの SSL 3.0 仕様、デバッグ SSL アプリケーションについての情報が含まれます。詳しくは <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ssl/">SSL/TLS プロジェクトページ</a> をご覧ください。また、デバッグ SSL アプリケーションで利用されているものも含めた NSS ツールについての詳細情報は、<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/tools/">NSS セキュリティツール</a> をご覧ください。
+</p>
+<h3 id=".E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.AB.E9.96.A2.E3.81.99.E3.82.8B.E8.B3.AA.E5.95.8F" name=".E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.AB.E9.96.A2.E3.81.99.E3.82.8B.E8.B3.AA.E5.95.8F"> ライセンスに関する質問 </h3>
+<h4 id="NSS_.E3.81.AF.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AB.E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AB.E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.95.E3.82.8C.E3.81.A6.E3.81.84.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> NSS はどのようにライセンスされていますか? </h4>
+<p>NSS は <a class="external" href="http://www.mozilla-japan.org/MPL/">Mozilla Public License</a> および <a class="external" href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a> でデュアルライセンスされています。詳しくは <a class="external" href="http://www.mozilla-japan.org/crypto-faq.html#1-3">Mozilla Crypto FAQ</a> をご覧ください。
+</p>
+<h4 id="NSS_.E3.81.AF.E5.90.88.E8.A1.86.E5.9B.BD.E5.A4.96.E3.81.A7.E3.82.82.E5.88.A9.E7.94.A8.E3.81.A7.E3.81.8D.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="NSS_.E3.81.AF.E5.90.88.E8.A1.86.E5.9B.BD.E5.A4.96.E3.81.A7.E3.82.82.E5.88.A9.E7.94.A8.E3.81.A7.E3.81.8D.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> NSS は合衆国外でも利用できますか? </h4>
+<div class="warning">このセクションの内容は古くなっています</div>
+<p>利用できます。<a class="external" href="http://www.mozilla.org/projects/security/pki/nss/buildnss_31.html">NSS 3.1 ビルドガイド</a> および <a class=" link-ftp" href="ftp://ftp.mozilla.org/pub/mozilla.org/security/" rel="freelink">ftp://ftp.mozilla.org/pub/mozilla.org/security/</a> をご覧ください。ただし、NSS ソースコードは合衆国輸出規制や他の合衆国の法律の対象となり、特定の国 (2000 年 1 月時点では、キューバ、イラン、イラク、リビア、北朝鮮、スーダン、シリアおよびタリバン支配地域のアフガニスタン) 、あるいは合衆国からの輸出物を受け取ることが禁じられている個人や組織 ((a) 産業安全保障局の Denied Parties List または Entity List、(b) 財務省外国資産管理局の Specially Designated Nationals および Blocked Persons リスト、(c) ミサイル技術、核兵器、化学兵器、生物兵器に関与する) に対しては輸出、再輸出が認められない可能性があります。
+</p><p>暗号化機能を持つソフトウェアの合衆国輸出管理についてのより詳しい情報は、<a class="external" href="http://www.mozilla-japan.org/crypto-faq.html">Mozilla Crypto FAQ</a> をご覧ください。
+</p>{{ languages( { "en": "en/NSS_FAQ" } ) }}
diff --git a/files/ja/mozilla/projects/nss/nss_reference/fc_login/index.html b/files/ja/mozilla/projects/nss/nss_reference/fc_login/index.html
new file mode 100644
index 0000000000..0b7ac5c8a5
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/nss_reference/fc_login/index.html
@@ -0,0 +1,66 @@
+---
+title: FC_Login
+slug: Mozilla/Projects/NSS/NSS_reference/FC_Login
+tags:
+ - NSS
+translation_of: Mozilla/Projects/NSS/Reference/FC_Login
+---
+<p> </p><p><br>
+</p><p>{{ 英語版章題("Name") }}
+</p>
+<h3 id="Name" name="Name"> Name </h3>
+<p><code>FC_Login()</code> - log a user into a token.
+</p><p>{{ 英語版章題("Syntax") }}
+</p>
+<h3 id="Syntax" name="Syntax"> Syntax </h3>
+<pre class="eval"><a href="ja/CK_RV">CK_RV</a> FC_Login(
+ <a href="ja/CK_SESSION_HANDLE">CK_SESSION_HANDLE</a> hSession,
+ <a href="ja/CK_USER_TYPE">CK_USER_TYPE</a> userType,
+ <a href="ja/CK_CHAR">CK_CHAR_PTR</a> pPin,
+ <a href="ja/CK_ULONG">CK_ULONG</a> ulPinLen
+);
+</pre>
+<p>{{ 英語版章題("Parameters") }}
+</p>
+<h3 id="Parameters" name="Parameters"> Parameters </h3>
+<p><code>FC_Login()</code> takes four parameters:
+</p>
+<dl><dt><code>hSession</code>
+</dt><dd>{{ mediawiki.external('in') }} a session handle
+</dd><dt><code>userType</code>
+</dt><dd>{{ mediawiki.external('in') }} the user type (<code>CKU_SO</code> or <code>CKU_USER</code>)
+</dd><dt><code>pPin</code>
+</dt><dd>{{ mediawiki.external('in') }} a pointer that points to the user's PIN
+</dd><dt><code>ulPinLen</code>
+</dt><dd>{{ mediawiki.external('in') }} the length of the PIN
+</dd></dl>
+<p>{{ 英語版章題("Description") }}
+</p>
+<h3 id="Description" name="Description"> Description </h3>
+<p><code>FC_Login()</code> logs a user into a token.
+</p><p>The Security Officer (<code>CKU_SO</code>) only logs in to initialize the normal user's PIN. The SO PIN is the empty string. The NSS cryptographic module doesn't allow the SO to log in if the normal user's PIN is already initialized.
+</p><p>{{ 英語版章題("Return value") }}
+</p>
+<h3 id="Return_value" name="Return_value"> Return value </h3>
+<p><code>FC_Login()</code> returns the following return codes.
+</p>
+<ul><li> <code>CKR_OK</code>: the user logged in successfully.
+</li><li> <code>CKR_DEVICE_ERROR</code>: the token is in the Error state.
+</li><li> <code>CKR_HOST_MEMORY</code>: memory allocation failed.
+</li><li> <code>CKR_PIN_INCORRECT</code>: the PIN is incorrect.
+</li><li> <code>CKR_PIN_LEN_RANGE</code>: the PIN is too long (<code>ulPinLen</code> is greater than 255).<div class="note">The function should return <code>CKR_PIN_INCORRECT</code> in this case.</div>
+</li><li> <code>CKR_SESSION_HANDLE_INVALID</code>: the session handle is invalid.
+</li><li> <code>CKR_USER_ALREADY_LOGGED_IN</code>: the user is already logged in.
+</li><li> <code>CKR_USER_TYPE_INVALID</code>
+<ul><li> The token can't authenticate the user because there is no key database or the user's password isn't initialized.
+</li><li> <code>userType</code> is <code>CKU_SO</code> and the normal user's PIN is already initialized.
+</li></ul>
+</li></ul>
+<p>{{ 英語版章題("See also") }}
+</p>
+<h3 id="See_also" name="See_also"> See also </h3>
+<ul><li> <a href="ja/NSC_Login">NSC_Login</a>
+</li></ul>
+<div class="noinclude">
+</div>
+{{ languages( { "en": "en/FC_Login" } ) }}
diff --git a/files/ja/mozilla/projects/nss/nss_reference/index.html b/files/ja/mozilla/projects/nss/nss_reference/index.html
new file mode 100644
index 0000000000..b1a02b000e
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/nss_reference/index.html
@@ -0,0 +1,200 @@
+---
+title: NSS リファレンス
+slug: Mozilla/Projects/NSS/NSS_reference
+tags:
+ - NSS
+translation_of: Mozilla/Projects/NSS/Reference
+---
+<h3 id=".E6.B3.A8.E6.84.8F.E4.BA.8B.E9.A0.85" name=".E6.B3.A8.E6.84.8F.E4.BA.8B.E9.A0.85">注意事項</h3>
+
+<div class="note">
+<ul>
+ <li>We are migrating the <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/">SSL Reference</a> from www.mozilla.org. If you are inclined to help with this migration, your help would be very much appreciated.</li>
+</ul>
+
+<ul>
+ <li>The proposed chapters below are based on the chapters of the SSL Reference and the categories of functions in <a class="external" href="http://developer.mozilla.org/en/docs/NSS_functions">NSS Public Functions</a>.</li>
+</ul>
+
+<ul>
+ <li>Should a particular page require the use of an underscore, please see the documentation for the <a>Title Override Extension</a>.</li>
+</ul>
+</div>
+
+<h3 id="NSS_.E3.81.AE.E3.83.93.E3.83.AB.E3.83.89.E3.81.A8.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB" name="NSS_.E3.81.AE.E3.83.93.E3.83.AB.E3.83.89.E3.81.A8.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB"><a href="ja/NSS_reference/Building_and_installing_NSS">NSS のビルドとインストール</a></h3>
+
+<h3 id="NSS_.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E6.A6.82.E8.A6.B3" name="NSS_.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.81.AE.E6.A6.82.E8.A6.B3">NSS アプリケーションの概観</h3>
+
+<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/sslintro.html">"Overview of an SSL Application"</a> in the SSL Reference.</p>
+
+<h3 id="NSS_.E5.85.A5.E9.96.80" name="NSS_.E5.85.A5.E9.96.80">NSS 入門</h3>
+
+<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/gtstd.html">"Getting Started With SSL"</a> in the SSL Reference.</p>
+
+<h3 id=".E3.83.87.E3.83.BC.E3.82.BF.E5.9E.8B" name=".E3.83.87.E3.83.BC.E3.82.BF.E5.9E.8B">データ型</h3>
+
+<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/ssltyp.html">"Selected SSL Types and Structures"</a> in the SSL Reference.</p>
+
+<h3 id=".E3.83.A6.E3.83.BC.E3.83.86.E3.82.A3.E3.83.AA.E3.83.86.E3.82.A3.E9.96.A2.E6.95.B0" name=".E3.83.A6.E3.83.BC.E3.83.86.E3.82.A3.E3.83.AA.E3.83.86.E3.82.A3.E9.96.A2.E6.95.B0">ユーティリティ関数</h3>
+
+<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#utils">"Utility Functions"</a> in NSS Public Functions.</p>
+
+<h3 id=".E8.A8.BC.E6.98.8E.E6.9B.B8.E9.96.A2.E6.95.B0" name=".E8.A8.BC.E6.98.8E.E6.9B.B8.E9.96.A2.E6.95.B0">証明書関数</h3>
+
+<p>Based on <a href="ja/NSS_Certificate_Functions">Certificate Functions</a> in the SSL Reference and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#cert">"Certificate Functions"</a> in NSS Public Functions.</p>
+
+<ul>
+ <li><a href="ja/NSS_Certificate_Functions#Validating_Certificates">Validating Certificates</a>
+
+ <ul>
+ <li><a href="ja/NSS_Certificate_Functions#CERT_VerifyCertNow">CERT_VerifyCertNow</a></li>
+ <li><a href="ja/NSS_Certificate_Functions#CERT_VerifyCert">CERT_VerifyCert</a></li>
+ <li><a href="ja/NSS_Certificate_Functions#CERT_VerifyCertName">CERT_VerifyCertName</a></li>
+ <li><a href="ja/NSS_Certificate_Functions#CERT_CheckCertValidTimes">CERT_CheckCertValidTimes</a></li>
+ <li><a href="ja/NSS_Certificate_Functions#NSS_CmpCertChainWCANames">NSS_CmpCertChainWCANames</a></li>
+ </ul>
+ </li>
+ <li><a href="ja/NSS_Certificate_Functions#Manipulating_Certificates">Manipulating Certificates</a>
+ <ul>
+ <li><a href="ja/NSS_Certificate_Functions#CERT_DupCertificate">CERT_DupCertificate</a></li>
+ <li><a href="ja/NSS_Certificate_Functions#CERT_DestroyCertificate">CERT_DestroyCertificate</a></li>
+ <li>SEC_DeletePermCertificate</li>
+ <li>__CERT_ClosePermCertDB</li>
+ </ul>
+ </li>
+ <li><a href="ja/NSS_Certificate_Functions#Getting_Certificate_Information">Getting Certificate Information</a>
+ <ul>
+ <li><a href="ja/NSS_Certificate_Functions#CERT_FindCertByName">CERT_FindCertByName</a></li>
+ <li><a href="ja/NSS_Certificate_Functions#CERT_GetCertNicknames">CERT_GetCertNicknames</a></li>
+ <li><a href="ja/NSS_Certificate_Functions#CERT_FreeNicknames">CERT_FreeNicknames</a></li>
+ <li><a href="ja/NSS_Certificate_Functions#CERT_GetDefaultCertDB">CERT_GetDefaultCertDB</a></li>
+ <li><a href="ja/NSS_Certificate_Functions#NSS_FindCertKEAType">NSS_FindCertKEAType</a></li>
+ </ul>
+ </li>
+ <li><a href="ja/NSS_Certificate_Functions#Comparing_SecItem_Objects">Comparing SecItem Objects</a>
+ <ul>
+ <li><a href="ja/NSS_Certificate_Functions#SECITEM_CompareItem">SECITEM_CompareItem</a></li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id=".E9.8D.B5.E9.96.A2.E6.95.B0" name=".E9.8D.B5.E9.96.A2.E6.95.B0">鍵関数</h3>
+
+<p>Based on <a href="ja/NSS_Key_Functions">Key Functions</a> in the SSL Reference.</p>
+
+<ul>
+ <li><a href="ja/NSS_Key_Functions#SECKEY_GetDefaultKeyDB">SECKEY_GetDefaultKeyDB</a></li>
+ <li><a href="ja/NSS_Key_Functions#SECKEY_DestroyPrivateKey">SECKEY_DestroyPrivateKey</a></li>
+</ul>
+
+<h3 id=".E9.9B.BB.E5.AD.90.E7.BD.B2.E5.90.8D" name=".E9.9B.BB.E5.AD.90.E7.BD.B2.E5.90.8D">電子署名</h3>
+
+<p>This API consists of the routines used to perform signature generation and the routines used to perform signature verification.</p>
+
+<h3 id=".E6.9A.97.E5.8F.B7.E5.8C.96.2F.E5.BE.A9.E5.8F.B7.E5.8C.96" name=".E6.9A.97.E5.8F.B7.E5.8C.96.2F.E5.BE.A9.E5.8F.B7.E5.8C.96">暗号化/復号化</h3>
+
+<h3 id=".E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5" name=".E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5">ハッシュ</h3>
+
+<h3 id=".E9.8D.B5.E7.94.9F.E6.88.90" name=".E9.8D.B5.E7.94.9F.E6.88.90">鍵生成</h3>
+
+<p>Generate keys, key pairs, and domain parameters.</p>
+
+<h3 id=".E4.B9.B1.E6.95.B0.E7.94.9F.E6.88.90" name=".E4.B9.B1.E6.95.B0.E7.94.9F.E6.88.90">乱数生成</h3>
+
+<p>This API consists of the two routines used for pseudorandom number generation -- PK11_GenerateRandomOnSlot and PK11_GenerateRandom -- and the two routines used for seeding pseudorandom number generation -- PK11_SeedRandom and PK11_RandomUpdate.</p>
+
+<h3 id="PKCS_.2311_.E9.96.A2.E6.95.B0" name="PKCS_.2311_.E9.96.A2.E6.95.B0">PKCS #11 関数</h3>
+
+<p>Based on <a href="ja/NSS_PKCS11_Functions">PKCS #11 Functions</a> in the SSL Reference and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#crypto">"Crypto Functions"</a> in NSS Public Functions.</p>
+
+<ul>
+ <li><a href="ja/NSS_PKCS11_Functions#SECMOD_LoadUserModule">SECMOD_LoadUserModule</a></li>
+ <li><a href="ja/NSS_PKCS11_Functions#SECMOD_UnloadUserModule">SECMOD_UnloadUserModule</a></li>
+ <li><a href="ja/NSS_PKCS11_Functions#SECMOD_CloseUserDB">SECMOD_CloseUserDB</a></li>
+ <li><a href="ja/NSS_PKCS11_Functions#SECMOD_OpenUserDB">SECMOD_OpenUserDB</a></li>
+ <li><a href="ja/NSS_PKCS11_Functions#PK11_FindCertFromNickname">PK11_FindCertFromNickname</a></li>
+ <li><a href="ja/NSS_PKCS11_Functions#PK11_FindKeyByAnyCert">PK11_FindKeyByAnyCert</a></li>
+ <li><a href="ja/NSS_PKCS11_Functions#PK11_GetSlotName">PK11_GetSlotName</a></li>
+ <li><a href="ja/NSS_PKCS11_Functions#PK11_GetTokenName">PK11_GetTokenName</a></li>
+ <li><a href="ja/NSS_PKCS11_Functions#PK11_IsHW">PK11_IsHW</a></li>
+ <li><a href="ja/NSS_PKCS11_Functions#PK11_IsPresent">PK11_IsPresent</a></li>
+ <li><a href="ja/NSS_PKCS11_Functions#PK11_IsReadOnly">PK11_IsReadOnly</a></li>
+ <li><a href="ja/NSS_PKCS11_Functions#PK11_SetPasswordFunc">PK11_SetPasswordFunc</a></li>
+</ul>
+
+<h3 id="SSL_.E9.96.A2.E6.95.B0" name="SSL_.E9.96.A2.E6.95.B0">SSL 関数</h3>
+
+<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/sslfnc.html">"SSL Functions"</a> in the SSL Reference and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#ssl">"SSL Functions"</a> and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#dep">"Deprecated SSL Functions"</a> in NSS Public Functions.</p>
+
+<ul>
+ <li>SSL_ConfigServerSessionIDCache</li>
+ <li>SSL_ClearSessionCache</li>
+</ul>
+
+<h3 id="S.2FMIME" name="S.2FMIME">S/MIME</h3>
+
+<p>Based on the <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/smime/">S/MIME Reference</a> (which only has one written chapter) and <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#smime">"S/MIME Functions"</a> in NSS Public Functions.</p>
+
+<h3 id="PKCS_.237_.E9.96.A2.E6.95.B0" name="PKCS_.237_.E9.96.A2.E6.95.B0">PKCS #7 関数</h3>
+
+<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#pkcs7">"PKCS #7 Functions"</a> in NSS Public Functions.</p>
+
+<h3 id="PKCS_.235_.E9.96.A2.E6.95.B0" name="PKCS_.235_.E9.96.A2.E6.95.B0">PKCS #5 関数</h3>
+
+<p>Password-based encryption</p>
+
+<ul>
+ <li>SEC_PKCS5GetIV</li>
+ <li>SEC_PKCS5CreateAlgorithmID</li>
+ <li>SEC_PKCS5GetCryptoAlgorithm</li>
+ <li>SEC_PKCS5GetKeyLength</li>
+ <li>SEC_PKCS5GetPBEAlgorithm</li>
+ <li>SEC_PKCS5IsAlgorithmPBEAlg</li>
+</ul>
+
+<h3 id="PKCS_.2312_.E9.96.A2.E6.95.B0" name="PKCS_.2312_.E9.96.A2.E6.95.B0">PKCS #12 関数</h3>
+
+<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/nssfunctions.html#pkcs12">"PKCS #12 Functions"</a> in NSS Public Functions. Used to exchange data such as private keys and certificates between two parties.</p>
+
+<ul>
+ <li>SEC_PKCS12CreateExportContext</li>
+ <li>SEC_PKCS12CreatePasswordPrivSafe</li>
+ <li>SEC_PKCS12CreateUnencryptedSafe</li>
+ <li>SEC_PKCS12AddCertAndKey</li>
+ <li>SEC_PKCS12AddPasswordIntegrity</li>
+ <li>SEC_PKCS12EnableCipher</li>
+ <li>SEC_PKCS12Encode</li>
+ <li>SEC_PKCS12DestroyExportContext</li>
+ <li>SEC_PKCS12DecoderStart</li>
+ <li>SEC_PKCS12DecoderImportBags</li>
+ <li>SEC_PKCS12DecoderUpdate</li>
+ <li>SEC_PKCS12DecoderFinish</li>
+ <li>SEC_PKCS12DecoderValidateBags</li>
+ <li>SEC_PKCS12DecoderVerify</li>
+ <li>SEC_PKCS12DecoderGetCerts</li>
+ <li>SEC_PKCS12DecoderSetTargetTokenCAs</li>
+ <li>SEC_PKCS12DecoderIterateInit</li>
+ <li>SEC_PKCS12DecoderIterateNext</li>
+ <li>SEC_PKCS12IsEncryptionAllowed</li>
+ <li>SEC_PKCS12SetPreferredCipher</li>
+</ul>
+
+<h3 id=".E3.82.A8.E3.83.A9.E3.83.BC.E3.82.B3.E3.83.BC.E3.83.89" name=".E3.82.A8.E3.83.A9.E3.83.BC.E3.82.B3.E3.83.BC.E3.83.89">エラーコード</h3>
+
+<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/ref/ssl/sslerr.html">"NSS and SSL Error Codes"</a> in the SSL Reference.</p>
+
+<h3 id="NSS_.E7.92.B0.E5.A2.83.E5.A4.89.E6.95.B0" name="NSS_.E7.92.B0.E5.A2.83.E5.A4.89.E6.95.B0"><a href="ja/NSS_reference/NSS_environment_variables">NSS 環境変数</a></h3>
+
+<h3 id="NSS_.E6.9A.97.E5.8F.B7.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB" name="NSS_.E6.9A.97.E5.8F.B7.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB"><a href="ja/NSS_reference/NSS_cryptographic_module">NSS 暗号モジュール</a></h3>
+
+<h3 id="NSS_.E6.8A.80.E8.A1.93.E3.83.8E.E3.83.BC.E3.83.88" name="NSS_.E6.8A.80.E8.A1.93.E3.83.8E.E3.83.BC.E3.83.88">NSS 技術ノート</h3>
+
+<p><a class="external" href="http://www.mozilla.org/projects/security/pki/nss/tech-notes">NSS Tech Notes</a> <a href="ja/NSS_Memory_allocation">NSS Memory allocation</a></p>
+
+<h3 id=".E3.83.84.E3.83.BC.E3.83.AB" name=".E3.83.84.E3.83.BC.E3.83.AB">ツール</h3>
+
+<p>Based on <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/tools/">NSS Tools</a> documentation on www.mozilla.org.</p>
+
+<div class="noinclude"></div>
+
+<p>{{ languages( { "en": "en/NSS_reference" } ) }}</p>
diff --git a/files/ja/mozilla/projects/nss/nss_releases/index.html b/files/ja/mozilla/projects/nss/nss_releases/index.html
new file mode 100644
index 0000000000..f275377979
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/nss_releases/index.html
@@ -0,0 +1,137 @@
+---
+title: NSS の最新バージョンのリリースノート
+slug: Mozilla/Projects/NSS/NSS_Releases
+translation_of: Mozilla/Projects/NSS/NSS_Releases
+---
+<p>現在の NSS の<strong>安定版</strong>リリースは 3.57 で、<strong>2020年9月18日</strong>にリリースされました。(NSS 3.57 のリリースノート)</p>
+
+<p>The current <strong>ESR</strong> releases of NSS are 3.44.4 (<a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.4_release_notes">NSS 3.44.4 release notes</a>), intended for Firefox ESR 68, which was released on <strong>19 May 2020</strong>, and  3.53.1 <a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.53.1_release_notes">(NSS 3.53.1 release notes)</a>, intended for Firefox ESR 78, which was released on <strong>16 June 2020</strong>.</p>
+
+<h2 id="Past_releases">Past releases</h2>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.57_release_notes">NSS 3.57 release notes</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.56_release_notes">NSS 3.56 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.55_release_notes">NSS 3.55 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.54_release_notes">NSS 3.54 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.53.1_release_notes">NSS 3.53.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.53_release_notes">NSS 3.53 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.52.1_release_notes">NSS 3.52.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.4_release_notes">NSS 3.44.4 release notes</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.52_release_notes">NSS 3.52 release notes</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.51.1_release_notes">NSS 3.51.1 release notes</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.51_release_notes">NSS 3.51 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.50_release_notes">NSS 3.50 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.49.2_release_notes">NSS 3.49.2 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.49.1_release_notes">NSS 3.49.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.49_release_notes">NSS 3.49 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.48.1_release_notes">NSS 3.48.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.48_release_notes">NSS 3.48 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.47.1_release_notes">NSS 3.47.1 release notes</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.47_release_notes">NSS 3.47 release notes</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.46.1_release_notes">NSS 3.46.1 release notes</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.46_release_notes">NSS 3.46 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.45_release_notes">NSS 3.45 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.3_release_notes">NSS 3.44.3 release notes</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.2_release_notes">NSS 3.44.2 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44.1_release_notes">NSS 3.44.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.44_release_notes">NSS 3.44 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.43_release_notes">NSS 3.43 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.42.1_release_notes">NSS 3.42.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.42_release_notes">NSS 3.42 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.8_release_notes">NSS 3.36.8 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.7_release_notes">NSS 3.36.7 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.41_release_notes">NSS 3.41 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.40.1_release_notes">NSS 3.40.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.6_release_notes">NSS 3.36.6 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.40_release_notes">NSS 3.40 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.39_release_notes">NSS 3.39 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.38_release_notes">NSS 3.38 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.37.3_release_notes">NSS 3.37.3 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.37.1_release_notes">NSS 3.37.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.37_release_notes">NSS 3.37 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.5_release_notes">NSS 3.36.5 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.4_release_notes">NSS 3.36.4 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.2_release_notes">NSS 3.36.2 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36.1_release_notes">NSS 3.36.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.36_release_notes">NSS 3.36 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.35_release_notes">NSS 3.35 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.34.1_release_notes">NSS 3.34.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.34_release_notes">NSS 3.34 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.33_release_notes">NSS 3.33 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.32_release_notes">NSS 3.32 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.31.1_release_notes">NSS 3.31.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.31_release_notes">NSS 3.31 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.30.2_release_notes">NSS 3.30.2 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.30.1_release_notes">NSS 3.30.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.30_release_notes">NSS 3.30 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29.5_release_notes">NSS 3.29.5 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29.3_release_notes">NSS 3.29.3 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29.2_release_notes">NSS 3.29.2 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29.1_release_notes">NSS 3.29.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.29_release_notes">NSS 3.29 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.5_release_notes">NSS 3.28.5 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.4_release_notes">NSS 3.28.4 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.3_release_notes">NSS 3.28.3 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.2_release_notes">NSS 3.28.2 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28.1_release_notes">NSS 3.28.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.28_release_notes">NSS 3.28 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.27.2_release_notes">NSS 3.27.2 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.27.1_release_notes">NSS 3.27.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.27_release_notes">NSS 3.27 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.26.2_release_notes">NSS 3.26.2 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.26_release_notes">NSS 3.26 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.25.1_release_notes">NSS 3.25.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.25_release_notes">NSS 3.25 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.24_release_notes">NSS 3.24 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.23_release_notes">NSS 3.23 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.22.2_release_notes">NSS 3.22.2 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.22.1_release_notes">NSS 3.22.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.22_release_notes">NSS 3.22 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21.4_release_notes">NSS 3.21.4 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21.3_release_notes">NSS 3.21.3 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21.2_release_notes">NSS 3.21.2 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21.1_release_notes">NSS 3.21.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.21_release_notes">NSS 3.21 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.20.1_release_notes">NSS 3.20.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.20_release_notes">NSS 3.20 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.19.3_release_notes">NSS 3.19.3 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.19.2_release_notes">NSS 3.19.2 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.19.1_release_notes">NSS 3.19.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.19_release_notes">NSS 3.19 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.18.1_release_notes">NSS 3.18.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.18_release_notes">NSS 3.18 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.4_release_notes">NSS 3.17.4 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.3_release_notes">NSS 3.17.3 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.2_release_notes">NSS 3.17.2 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17.1_release_notes">NSS 3.17.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.17_release_notes">NSS 3.17 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.6_release_notes">NSS 3.16.6 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.5_release_notes">NSS 3.16.5 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.4_release_notes">NSS 3.16.4 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.3_release_notes">NSS 3.16.3 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2.3_release_notes">NSS 3.16.2.3 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2.2_release_notes">NSS 3.16.2.2 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2.1_release_notes">NSS 3.16.2.1 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.2_release_notes">NSS 3.16.2 release notes</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_3.16.1_release_notes">NSS 3.16.1 release notes</a></li>
+ <li><a href="/en-US/docs/NSS/NSS_3.16_release_notes">NSS 3.16 release notes</a></li>
+ <li><a href="/en-US/docs/NSS/NSS_3.15.5_release_notes">NSS 3.15.5 release notes</a></li>
+ <li><a href="/en-US/docs/NSS/NSS_3.15.4_release_notes">NSS 3.15.4 release notes</a></li>
+ <li><a href="/en-US/docs/NSS/NSS_3.15.3.1_release_notes">NSS 3.15.3.1 release notes</a></li>
+ <li><a href="/en-US/docs/NSS/NSS_3.15.3_release_notes">NSS 3.15.3 release notes</a></li>
+ <li><a href="/en-US/docs/NSS/NSS_3.15.2_release_notes">NSS 3.15.2 release notes</a></li>
+ <li><a href="/en-US/docs/NSS/NSS_3.15.1_release_notes">NSS 3.15.1 release notes</a></li>
+ <li><a href="/en-US/docs/NSS/NSS_3.15_release_notes" title="NSS 3.15 release notes">NSS 3.15 release notes</a></li>
+ <li><a href="/en-US/docs/NSS/NSS_3.14.5_release_notes" title="NSS 3.14.5 release notes">NSS 3.14.5 release notes</a></li>
+ <li><a href="/en-US/docs/NSS/NSS_3.14.4_release_notes" title="NSS 3.14.4 release notes">NSS 3.14.4 release notes</a></li>
+ <li><a href="/en-US/docs/NSS/NSS_3.14.3_release_notes" title="NSS 3.14.3 release notes">NSS 3.14.3 release notes</a></li>
+ <li><a href="/en-US/docs/NSS/NSS_3.14.2_release_notes" title="NSS 3.14.2 release notes">NSS 3.14.2 release notes</a></li>
+ <li><a href="/en-US/docs/NSS/NSS_3.14.1_release_notes" title="NSS 3.14.1 release notes">NSS 3.14.1 release notes</a></li>
+ <li><a href="/en-US/docs/NSS/NSS_3.14_release_notes" title="NSS 3.14 release notes">NSS 3.14 release notes</a></li>
+ <li><a href="/en-US/docs/NSS/release_notes.html">Older release notes</a></li>
+</ul>
+
+<h2 id="Future_releases">Future releases</h2>
+
+<p>Release planning is done on the Mozilla wiki: {{interwiki("wikimo", "NSS:Release Versions")}}.</p>
diff --git a/files/ja/mozilla/projects/nss/nss_sample_code/index.html b/files/ja/mozilla/projects/nss/nss_sample_code/index.html
new file mode 100644
index 0000000000..4a70911b42
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/nss_sample_code/index.html
@@ -0,0 +1,31 @@
+---
+title: NSS サンプルコード
+slug: Mozilla/Projects/NSS/NSS_Sample_Code
+tags:
+ - Example
+translation_of: Mozilla/Projects/NSS/NSS_Sample_Code
+---
+<h2 id="NSS_Sample_Code">NSS Sample Code</h2>
+
+<p>ここにあるサンプルコード集では、暗号処理、証明書の取り扱い、SSL などに NSS がどのように利用できるかを示しています。また、暗号化の応用におけるベストプラクティスをいくつか示しています。</p>
+
+<p>差し替え中の古いサンプル</p>
+
+<ol>
+ <li><a href="nss_sample_code/NSS_Sample_Code_Sample1">Sample Code 1: Key Generation and Transport Between Servers</a></li>
+ <li><a href="nss_sample_code/NSS_Sample_Code_sample2">Sample Code 2: Symmetric Encryption</a></li>
+ <li><a href="nss_sample_code/NSS_Sample_Code_sample3">Sample Code 3: Hashing, MAC</a></li>
+ <li><a href="nss_sample_code/NSS_Sample_Code_sample4">Sample Code 4: PKI Encryption</a></li>
+ <li><a href="nss_sample_code/NSS_Sample_Code_sample5">Sample Code 5: PKI Encryption with a raw public &amp; private key in DER format</a></li>
+ <li><a href="nss_sample_code/NSS_Sample_Code_sample6">Sample Code 6: Persistent Symmetric Keys in NSS database</a></li>
+</ol>
+
+<p><br>
+ リプレースが必要な非常に古い事例です。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490238">https://bugzilla.mozilla.org/show_bug.cgi?id=490238</a> を参照してください。</p>
+
+<p>新しいサンプルをダウンロードすることができます。</p>
+
+<pre class="bz_comment_text notranslate" id="comment_text_42">hg clone https://hg.mozilla.org/projects/nss; cd nss; hg update SAMPLES_BRANCH
+</pre>
+
+<p>新しいサンプル: <a href="/ja/docs/Mozilla/Projects/NSS/New_NSS_Samples">https://developer.mozilla.org/ja/docs/Mozilla/Projects/NSS/New_NSS_Samples</a></p>
diff --git a/files/ja/mozilla/projects/nss/nss_sources_building_testing/index.html b/files/ja/mozilla/projects/nss/nss_sources_building_testing/index.html
new file mode 100644
index 0000000000..eb799cad8a
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/nss_sources_building_testing/index.html
@@ -0,0 +1,54 @@
+---
+title: NSS ソースのビルドのテスト
+slug: Mozilla/Projects/NSS/NSS_Sources_Building_Testing
+translation_of: Mozilla/Projects/NSS/NSS_Sources_Building_Testing
+---
+<p><a href="/ja/docs/Mozilla/Projects/NSS">Network Security Services (NSS)</a> のソースコードの取得、構築方法、テストスイートの実行方法。</p>
+
+<h2 id="ソースコードの取得と簡単な概要">ソースコードの取得と簡単な概要</h2>
+
+<p>最も簡単な方法は、<a href="https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/">Mozilla のダウンロードサーバ</a>から NSS リリースのアーカイブをダウンロードすることです。バージョン番号が一番高いディレクトリを探してください。NSS はベースライブラリ <a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a> に依存しているので、NSS と NSPR の両方を組み合わせたアーカイブをダウンロードする必要があります。</p>
+
+<p>If you are a software developer and intend to contribute enhancements to NSS, you should obtain the latest development snapshot of NSS using mercurial/hg (a <a href="https://www.mercurial-scm.org/" title="https://www.mercurial-scm.org/">distributed source control management tool</a>). In order to get started, anonymous read-only access is sufficient. Create a new directory on your computer that you will use as your local work area, and run the following commands.</p>
+
+<pre class="language-html notranslate" style='margin-top: 0.5em; margin-bottom: 0.5em; padding: 1em; background-color: rgb(15, 12, 10); font-size: 14px; line-height: 21px; font-family: Consolas, Monaco, "Andale Mono", monospace; color: rgb(255, 255, 255); text-shadow: rgb(0, 0, 0) 0px 1px; direction: ltr;'>hg clone https://hg.mozilla.org/projects/nspr
+hg clone https://hg.mozilla.org/projects/nss</pre>
+
+<p>After the above commands complete, you should have two local directories, named nspr and nss, next to each other.</p>
+
+<p>(Historical information: NSPR and NSS source code have recently been re-organized into a new directory structure. In past versions, all files were located in a directory hierarchy that started with the "mozilla" prefix. The NSPR base library was located in directory mozilla/nsprpub. The subdirectories dbm, security/dbm, security/coreconf, security/nss were part of the NSS sources.)</p>
+
+<p>The nss directory contains the following important subdirectories:</p>
+
+<ul>
+ <li>nss/coreconf<br>
+ Contains knowledge for cross platform building.</li>
+ <li>nss/lib<br>
+ Contains all the library code that is used to create the runtime libraries used by applications.</li>
+ <li>nss/cmd<br>
+ Contains a set of various tool programs that are built using NSS. Several tools are general purpose and can be used to inspect and manipulate the storage files that software using the NSS library creates and modifies. Other tools are only used for testing purposes. However, all these tools are good examples of how to write software that makes use of the NSS library.</li>
+ <li>nss/test<br>
+ This directory contains the NSS test suite, which is routinely used to ensure that changes to NSS don't introduce regressions.</li>
+ <li>nss/gtests<br>
+ Code for NSS unit tests running in <a href="https://github.com/abseil/googletest">Googletest</a>.</li>
+</ul>
+
+<p>It is important to mention the difference between internal NSS code and exported interfaces. Software that would like to use the NSS library must use only the exported interfaces. These can be found by looking at the files with the .def file extension, inside the nss/lib directory hierarchy. Any C function that isn't contained in .def files is strictly for private use within NSS, and applications and test tools are not allowed to call them. For any functions that are listed in the .def files, NSS promises that the binary function interface (ABI) will remain stable.</p>
+
+<h2 id="Building_NSS">Building NSS</h2>
+
+<p>NSS is built using <a class="external external-icon" href="https://gyp.gsrc.io/" rel="noopener">gyp</a> and <a class="external external-icon" href="https://ninja-build.org/" rel="noopener">ninja</a>, or with <a class="external external-icon" href="https://www.gnu.org/software/make/" rel="noopener">make</a> on systems that don't have those tools. The <a href="/en-US/docs/Mozilla/Projects/NSS/Building">complete build instructions</a> include more information.</p>
+
+<p>Once the build is done, you can find the build output below directory dist/?, where ? will be a name dynamically derived from your system's architecture. Exported header files for NSS applications can be found in directory "include", library files in directory "lib", and the tools in directory "bin". In order to run the tools, you should set your system environment to use the libraries of your build from the "lib" directory, e.g., using the LD_LIBRARY_PATH or DYLD_LIBRARY_PATH environment variable.</p>
+
+<h2 id="Running_the_NSS_test_suite">Running the NSS test suite</h2>
+
+<p>This is an important part of development work, in order to ensure your changes don't introduce regressions. When adding new features to NSS, tests for the new feature should be added as well.</p>
+
+<p>You must build NSS prior to running the tests. After the build on your computer has succeeded, before you can run the tests on your computer, it might be necessary to set additional environment variables. The NSS tests will start TCP/IP server tools on your computer, and in order for that to work, the NSS test suite needs to know which hostname can be used by client tools to connect to the server tools. On machines that are configured with a hostname that has been registered in your network's DNS, this should work automatically. In other environments (for example in home networks), you could set the HOST and DOMSUF (for domain suffix) environment variables to tell the NSS suite which hostname to use. As a test, it must be possible to successfully use the command "ping $HOST.$DOMSUF" on your computer (ping reports receiving replies). On many computers the variables HOST=localhost DOMSUF=localdomain works. In case you built NSS in 64 bits, you need to set the USE_64 environment variable to 1 to run the tests. If you get name resolution errors, try to disable IPv6 on the loopback device.</p>
+
+<p>After you have set the required environment variables, use "cd nss/tests" and start the tests using "./all.sh". The tests will take a while to complete; on a slow computer it could take a couple of hours.</p>
+
+<p>Once the test suite has completed, a summary will be printed that shows the number of failures. You can find the test suite results in directory nss/../tests_results (i.e. the results directory ends up next to the nss directory, not within it). Each test suite execution will create a new subdirectory; you should clean them up from time to time. Inside the directory you'll find text file output.log, which contains a detailed report of all tests being executed. In order to learn about the details of test failures, search the file for the uppercase test FAILED.</p>
+
+<p>If desired, it's possible to run only subsets of the tests. Read the contents of file all.sh to learn how that works.</p>
diff --git a/files/ja/mozilla/projects/nss/nss_tech_notes/index.html b/files/ja/mozilla/projects/nss/nss_tech_notes/index.html
new file mode 100644
index 0000000000..c474d6824b
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/nss_tech_notes/index.html
@@ -0,0 +1,21 @@
+---
+title: NSS 技術ノート
+slug: Mozilla/Projects/NSS/NSS_Tech_Notes
+translation_of: Mozilla/Projects/NSS/NSS_Tech_Notes
+---
+<h2 id="NSS_技術ノート">NSS 技術ノート</h2>
+
+<p>Newsgroup: <a href="news://news.mozilla.org/mozilla.dev.tech.crypto">mozilla.dev.tech.crypto</a></p>
+
+<p>NSS technical notes provide latest information about new NSS features and supplementary documentation for advanced topics in programming with NSS.</p>
+
+<ol>
+ <li>TN1: <a href="nss_tech_notes/nss_tech_note1">How to use the NSS ASN.1 and QuickDER decoders</a>.</li>
+ <li>TN2: <a href="nss_tech_notes/nss_tech_note2">Using the PKCS #11 Module Logger</a>.</li>
+ <li>TN3: <a href="nss_tech_notes/nss_tech_note3">All About Certificate Extensions</a>.</li>
+ <li>TN4: <a href="nss_tech_notes/nss_tech_note4">Pulling certificate extension information out of SSL certificates</a>.</li>
+ <li>TN5: <a href="nss_tech_notes/nss_tech_note5">Using NSS to perform miscellaneous cryptographic operations</a>.</li>
+ <li>TN6: <a href="nss_tech_notes/nss_tech_note6">NSS .chk Files for the FIPS Mode</a>.</li>
+ <li>TN7: <a href="nss_tech_notes/nss_tech_note7">RSA Signing and Encryption with NSS</a>.</li>
+ <li>TN8: <a href="nss_tech_notes/nss_tech_note8">Background Information on libSSL's Cache Functions and SIDs</a>.</li>
+</ol>
diff --git a/files/ja/mozilla/projects/nss/nss_third-party_code/index.html b/files/ja/mozilla/projects/nss/nss_third-party_code/index.html
new file mode 100644
index 0000000000..dbf7262a06
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/nss_third-party_code/index.html
@@ -0,0 +1,34 @@
+---
+title: NSS サードパーティコード
+slug: Mozilla/Projects/NSS/NSS_Third-Party_Code
+tags:
+ - NSS
+translation_of: Mozilla/Projects/NSS/NSS_Third-Party_Code
+---
+<p>これは、NSS のリポジトリに含まれるサードパーティ製のコードのリストで、2つのリストに分かれています。NSS ライブラリにコンパイルされるコードと、テストにのみ使用されるコードです。</p>
+
+<p>NSS ライブラリにコンパイルできるコードがすべて<em>そう</em>とは限らないことに注意してください。多くの場合、これはビルド時に様々なトレードオフを考慮して設定することができます。</p>
+
+<h2 id="コンパイル">コンパイル</h2>
+
+<ul>
+ <li>sqlite [/lib/sqlite]</li>
+ <li>BerkleyDB [/lib/dbm]</li>
+ <li>zlib [/lib/zlib]</li>
+ <li>libjar [/lib/jar]</li>
+ <li>Fiat-Crypto, Ring [lib/freebl/ecl]</li>
+</ul>
+
+<h2 id="テストに使用">テストに使用</h2>
+
+<ul>
+ <li>GTest [/gtests]</li>
+</ul>
+
+<h3 id="特定のテストツールでダウンロード">特定のテストツールでダウンロード</h3>
+
+<ul>
+ <li>TLSFuzzer [/tests/tlsfuzzer]</li>
+ <li>BoGo tests [/tests/bogo]</li>
+ <li>BoringSSL, OpenSSL [/tests/interop]</li>
+</ul>
diff --git a/files/ja/mozilla/projects/nss/overview_of_nss/index.html b/files/ja/mozilla/projects/nss/overview_of_nss/index.html
new file mode 100644
index 0000000000..455e20b6cb
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/overview_of_nss/index.html
@@ -0,0 +1,75 @@
+---
+title: NSS の概要
+slug: Mozilla/Projects/NSS/Overview_of_NSS
+tags:
+ - NSS
+translation_of: Mozilla/Projects/NSS/Overview
+---
+<h2 id="Open_Source_Crypto_Libraries">Open Source Crypto Libraries</h2>
+
+<h3 id=".E5.AE.9F.E7.B8.BE.E3.81.AE.E3.81.82.E3.82.8B.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.BB.E3.82.BB.E3.82.AD.E3.83.A5.E3.83.AA.E3.83.86.E3.82.A3.E3.83.BB.E3.82.A2.E3.83.BC.E3.82.AD.E3.83.86.E3.82.AF.E3.83.81.E3.83.A3" name=".E5.AE.9F.E7.B8.BE.E3.81.AE.E3.81.82.E3.82.8B.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.83.BB.E3.82.BB.E3.82.AD.E3.83.A5.E3.83.AA.E3.83.86.E3.82.A3.E3.83.BB.E3.82.A2.E3.83.BC.E3.82.AD.E3.83.86.E3.82.AF.E3.83.81.E3.83.A3">実績のあるアプリケーション・セキュリティ・アーキテクチャ</h3>
+
+<p>もし、SSL、S/MIMEやその他のインターネットセキュリティ標準を貴方のアプリケーションでサポートしたければ、すべてのセキュリティ機能を実装した Network Security Services (NSS) を使うことができます。NSSは、暗号ライブラリの完全なオープンソース実装を提供します。NSSは、AOL、Red Hat、Sunやその他の企業の下記を含む様々な製品で使われています。:</p>
+
+<ul>
+ <li><a class="external" href="http://www.mozilla-japan.org/products/">Mozilla クライアント製品</a>, <a class="external" href="http://www.mozilla-japan.org/products/mozilla1.x/">Mozilla Suite</a>, <a class="external" href="http://www.mozilla.com/firefox/">Firefox</a>, と <a class="external" href="http://www.mozilla.com/thunderbird/">Thunderbird</a>を含む。</li>
+ <li><a class="external" href="http://browser.netscape.com/">Netscape ブラウザ</a></li>
+ <li><a class="external" href="http://communicator.aol.com/">AOL Communicator</a> と <a class="external" href="http://www.aim.com/">AOL Instant Messenger</a> (AIM)</li>
+ <li><a class="external" href="http://www.gnome.org/projects/evolution/">Evolution</a>, <a class="external" href="http://gaim.sourceforge.net/">Gaim</a>, や <a class="external" href="http://www.openoffice.org/">OpenOffice.org</a> 2.0 などのオープンソースクライアントアプリケーション。</li>
+ <li><a class="external" href="http://www.redhat.com/solutions/">Red Hat</a> のサーバ製品: <a class="external" href="http://www.redhat.com/software/rha/directory/">Red Hat Directory Server</a>, <a class="external" href="http://www.redhat.com/software/rha/certificate/">Red Hat Certificate System</a>, と Apache web server の <a class="external" href="http://directory.fedora.redhat.com/wiki/Mod_nss">mod_nss</a> SSL module.</li>
+ <li><a class="external" href="http://www.sun.com/software/javaenterprisesystem/index.xml">Sun Java Enterprise System</a>のサーバ製品、Sun Java System Web Server, Sun Java System Directory Server, Sun Java System Portal Server, Sun Java System Messaging Server, と Sun Java System Application Server.</li>
+</ul>
+
+<p>NSS には、プラットフォームでのパフォーマンスを最適化するために、開発者や OEM がアセンブラコードといったパッチを配布できるようにするフレームワークが含まれています。NSS 3.x は 18 のプラットフォームでその性能を発揮しています。</p>
+
+<p>NSSのより詳しい情報については、 <a class="external" href="http://www.mozilla.org/projects/security/pki/nss/index.html">NSS Project Page</a> と <a href="ja/NSS_FAQ">NSS FAQ</a> を参照してください。</p>
+
+<p>JavaインターフェースからNSSのソースコードは Mozilla CVSツリーにあります。詳細は、 <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/jss/">Network Security Services for Java</a>を参照してください。</p>
+
+<p>NSS は Netscape Portable Runtime(<a href="ja/NSPR">NSPR</a>)を使用します。この NSPR は、プラットフォームに依存しないオープンソースAPIであり、システムファンクションはクロスプラットフォーム開発を可能にするように設計されています。NSS と同様、NSPR はさまざまな製品で厳しいテストを経てきました。より詳しい情報は、<a class="external" href="http://www.mozilla-japan.org/projects/nspr/">NSPR プロジェクトページ</a>を参照してください。</p>
+
+<h3 id=".E7.9B.B8.E4.BA.92.E9.81.8B.E7.94.A8.E6.80.A7.E3.81.A8.E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.83.80.E3.83.BC.E3.83.89" name=".E7.9B.B8.E4.BA.92.E9.81.8B.E7.94.A8.E6.80.A7.E3.81.A8.E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.83.80.E3.83.BC.E3.83.89">相互運用性とオープンスタンダード</h3>
+
+<p>NSSを使って、あなたのアプリケーションで次の一連のセキュリティ標準をサポートすることができます:</p>
+
+<ul>
+ <li><a href="ja/Glossary#SSL">SSL v2 and v3</a>. Secure Sockets Layer (SSL) プロトコルは、クライアントとサーバの相互認証、および、認証され暗号化された接続の確立を可能にします。</li>
+ <li><a class="external" href="http://www.ietf.org/rfc/rfc2246.txt">TLS v1 (</a><a class="external" href="http://tools.ietf.org/html/rfc2246" title="http://tools.ietf.org/html/rfc2246">RFC 2246</a>). IETFによる Transport Layer Security (TLS) プロトコルは、SSLの実装と後方互換性を持ちながら、最終的にはSSLに取って代わります。</li>
+ <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1/index.html">PKCS #1</a>. RSAアルゴリズムに基づいた公開鍵暗号法を統括する実装のRSA標準。</li>
+ <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-3/index.html">PKCS #3</a>. Diffie-Hellman 鍵共有を統括する実装のRSA標準。</li>
+ <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-5/index.html">PKCS #5</a>. ストレージの秘密鍵を暗号化する場合などに使用するパスワードに基づく暗号化を管理するRSA標準。</li>
+ <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-7/index.html">PKCS #7</a>. 電子署名や電子封筒などのデータ暗号化アプリケーションを管理するRSA標準。</li>
+ <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-8/index.html">PKCS #8</a>. 秘密鍵のストレージと暗号化を管理するRSA標準。</li>
+ <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-9/index.html">PKCS #9</a>. PKCS #7、PKCS #8およびPKCS#10と共に使われ、それらのタイプを含む選択された属性タイプ管理するRSA標準。</li>
+ <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-10/index.html">PKCS #10</a>. 証明書の要求構文を管理するRSA標準。</li>
+ <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-11/index.html">PKCS #11</a>. 暗号トークン(ハードウェアアクセラレータやスマートカード、ICカード)とのコミュニケーションを管理し、特定のアルゴリズムと実装から独立したアプリケーションを可能にするRSA標準。</li>
+ <li><a class="external" href="http://www.rsasecurity.com/rsalabs/pkcs/pkcs-12/index.html">PKCS #12</a>. 秘密鍵、証明書、および他の秘密資料の格納または輸送に使われるフォーマットを管理するRSA標準。</li>
+ <li><a href="ja/Glossary#S.2FMIME">S/MIME (RFC 2311 and RFC 2633)</a>. 署名および暗号化されたMIMEデータの送受信のための一貫した方法を提供する、(一般的なインターネットMIME標準に基づいた)IETFメッセージ仕様。</li>
+ <li><a href="ja/Glossary#X.509">X.509 v3</a>. 公開鍵暗号法の中で認証のために使用される証明書のフォーマットを管理するITUの標準。</li>
+ <li><a href="ja/Glossary#OCSP">OCSP (RFC 2560)</a>. オンライン証明書ステータスプロトコル(Online Certificate Status Protocol, OCSP)は、証明書有効性のリアルタイムな確認方法を管理します。</li>
+ <li><a class="external" href="http://www.ietf.org/rfc/rfc3280.txt">PKIX Certificate and CRL Profile (</a><a class="external" href="http://tools.ietf.org/html/rfc3280" title="http://tools.ietf.org/html/rfc3280">RFC 3280</a>). (PKIXで知られている)IETFの公開鍵基盤(X.509)ワーキンググループによって開発中のインターネット用の公開鍵暗号基盤用の4部の標準の第1の部分。</li>
+ <li>RSA, DSA, ECDSA, Diffie-Hellman, EC Diffie-Hellman, <a class="external" href="http://csrc.nist.gov/encryption/aes/">AES</a>, Triple DES, DES, RC2, RC4, SHA-1, SHA-256, SHA-384, SHA-512, MD2, MD5, HMAC: 公開鍵および共通鍵暗号で使われる一般的な暗号化アルゴリズム。</li>
+ <li>FIPS 186-2 疑似乱数生成器。</li>
+</ul>
+
+<p>完全な詳細に関しては、 <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/nss-3.11/nss-3.11-algorithms.html">暗号化技術</a>を参照してください。</p>
+
+<h3 id="FIPS_140_.E5.A6.A5.E5.BD.93.E6.80.A7.E7.A2.BA.E8.AA.8D_.E3.81.A8_NISCC_.E3.83.86.E3.82.B9.E3.83.88" name="FIPS_140_.E5.A6.A5.E5.BD.93.E6.80.A7.E7.A2.BA.E8.AA.8D_.E3.81.A8_NISCC_.E3.83.86.E3.82.B9.E3.83.88">FIPS 140 妥当性確認 と NISCC テスト</h3>
+
+<p>NSS ソフトウェア暗号モジュールは、3度に渡り FIPS 140適合試験のセキュリティレベル1と2に合格しています。 詳細については <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/fips/">NSS FIPS</a> ページ (<a class="external" href="http://wiki.mozilla.org/FIPS_Validation">Or this one</a>)を参照してください。</p>
+
+<p>NSS ライブラリは NISCC の<a class="external" href="http://www.niscc.gov.uk/niscc/docs/re-20030930-00749.pdf?lang=en">TLS/SSL</a> および <a class="external" href="http://www.uniras.gov.uk/niscc/docs/re-20031104-00752.pdf?lang=en">S/MIME</a> のテストスイート(160万の不正入力によるテストケース)を通過しています。</p>
+
+<h3 id="Complete_Software_Development_Kit" name="Complete_Software_Development_Kit">Complete Software Development Kit</h3>
+
+<p>ライブラリとAPIに加えて、NSSは、デバッグ、診断、認証および鍵管理、暗号化モジュール管理および他の開発タスクのために必要な<a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/tools/">セキュリティ・ツール</a>を提供します。</p>
+
+<p>NSSには、大規模で増大する <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/#Documentation">資料</a>が付いています。資料には、入門教材、 API リファレンス、コマンドラインツールの man ページ、および <a class="external" href="http://www.mozilla-japan.org/projects/security/pki/nss/sample-code/">サンプルコード</a>が含まれています。</p>
+
+<p>NSSは、ソースと共有(ダイナミック)ライブラリが利用できます。すべての NSSリリースには以前のバージョンとの後方互換性があり、NSSユーザはそれらのアプリケーションを再コンパイルまたは再リンクすることなく新しいNSS共有ライブラリにアップグレードすることができます。</p>
+
+<h3 id=".E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.82.BD.E3.83.BC.E3.82.B9.E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.A8.E9.85.8D.E5.B8.83" name=".E3.82.AA.E3.83.BC.E3.83.97.E3.83.B3.E3.82.BD.E3.83.BC.E3.82.B9.E3.83.A9.E3.82.A4.E3.82.BB.E3.83.B3.E3.82.B9.E3.81.A8.E9.85.8D.E5.B8.83">オープンソースライセンスと配布</h3>
+
+<p>NSS は、<a class="external" href="http://www.mozilla.org/MPL/">Mozilla Public License</a>, <a class="external" href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a>, <a class="external" href="http://www.gnu.org/copyleft/lesser.html">GNU Lesser General Public License</a>の3種類でライセンスされています。 最新のソースコードは、 <a class="external" href="http://www.mozilla.org" rel="freelink">http://www.mozilla.org</a> とミラーサイトから、世界中で無料で取得できます。</p>
+
+<p>{{ languages( { "en": "en/Overview_of_NSS" } ) }}</p>
diff --git a/files/ja/mozilla/projects/nss/pkcs11/index.html b/files/ja/mozilla/projects/nss/pkcs11/index.html
new file mode 100644
index 0000000000..8c41add1ee
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/pkcs11/index.html
@@ -0,0 +1,17 @@
+---
+title: PKCS11
+slug: Mozilla/Projects/NSS/PKCS11
+tags:
+ - NSS
+ - Security
+translation_of: Mozilla/Projects/NSS/PKCS11
+---
+<p>
+</p><p>暗号化モジュール実装者のための PKCS #11 情報:
+</p>
+<ul><li> <a href="ja/PKCS11_Implement">Implementing PKCS #11 for NSS</a>
+</li><li> <a href="ja/PKCS11_FAQ">PKCS #11 FAQ</a>
+</li><li> <a href="ja/PKCS11_Jar_Install">Using the JAR Installation Manager to Install a PKCS #11 Cryptographic Module</a>
+</li><li> <a href="ja/PKCS11_Conformance">PKCS #11 Conformance Testing</a>
+</li></ul>
+{{ languages( { "en": "en/PKCS11" } ) }}
diff --git a/files/ja/mozilla/projects/nss/ssl_functions/index.html b/files/ja/mozilla/projects/nss/ssl_functions/index.html
new file mode 100644
index 0000000000..58d409092f
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/ssl_functions/index.html
@@ -0,0 +1,300 @@
+---
+title: SSL 関数
+slug: Mozilla/Projects/NSS/SSL_functions
+translation_of: Mozilla/Projects/NSS/SSL_functions
+---
+<p>ここで紹介する公開関数は、SSL および TLS プロトコルを使用して通信するためのソケットを設定するために使用します。SSL をサポートするアプリケーションでは、ここに記載されている機能に加えて、このページで後述する証明書機能、暗号機能、ユーティリティ機能の一部を使用しています。</p>
+
+<p>Other sources of information:</p>
+
+<ul>
+ <li>The <a href="https://developer.mozilla.org/en-US/docs/NSS_reference">NSS_reference</a> documents the functions most commonly used by applications to support SSL.</li>
+ <li>The <a href="https://developer.mozilla.org/en-US/docs/NSS">NSS</a> home page links to additional SSL documentation.</li>
+</ul>
+
+<p>If documentation is available for a function listed below, the function name is linked to either its MDC wiki page or its entry in the <a class="external" href="/en-US/docs/Mozilla/Projects/NSS/SSL_functions/OLD_SSL_Reference">old SSL Reference</a>. The <a class="external" href="https://dxr.mozilla.org/">Mozilla Cross Reference</a> (DXR) link for each function provides access to the function definition, prototype definition, and source code references. The NSS version column indicates which versions of NSS support the function.</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Function name/documentation</th>
+ <th>Source code</th>
+ <th>NSS versions</th>
+ </tr>
+ <tr>
+ <td><a class="external" href="/en-US/docs/Mozilla/Projects/NSS/SSL_functions/sslfnc.html#1106762"><code>NSS_GetClientAuthData</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSS_GetClientAuthData">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1228530"><code>NSS_SetDomesticPolicy</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSS_SetDomesticPolicy">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1100285"><code>NSS_SetExportPolicy</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSS_SetExportPolicy">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><code>NSS_SetFrancePolicy</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSS_SetFrancePolicy">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><code>NSSSSL_VersionCheck</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=NSSSSL_VersionCheck">MXR</a></td>
+ <td>3.2.1 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1088888"><code>SSL_AuthCertificate</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_AuthCertificate">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1088805"><code>SSL_AuthCertificateHook</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_AuthCertificateHook">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1088928"><code>SSL_BadCertHook</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_BadCertHook">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><code>SSL_CertDBHandleSet</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CertDBHandleSet">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><code>SSL_Canbypass</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_Canbypass">MXR</a></td>
+ <td>3.11.7 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1210463"><code>SSL_CipherPolicyGet</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPolicyGet">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1104647"><code>SSL_CipherPolicySet</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPolicySet">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1214800"><code>SSL_CipherPrefGet</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPrefGet">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1208119"><code>SSL_CipherPrefGetDefault</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPrefGetDefault">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1214758"><code>SSL_CipherPrefSet</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPrefSet">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1084747"><code>SSL_CipherPrefSetDefault</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_CipherPrefSetDefault">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1138601"><code>SSL_ClearSessionCache</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ClearSessionCache">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1142625"><code>SSL_ConfigMPServerSIDCache</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ConfigMPServerSIDCache">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1217647"><code>SSL_ConfigSecureServer</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ConfigSecureServer">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1143851"><code>SSL_ConfigServerSessionIDCache</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ConfigServerSessionIDCache">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1142625"><code>SSL_DataPending</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_DataPending">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1133431"><code>SSL_ForceHandshake</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ForceHandshake">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><code>SSL_ForceHandshakeWithTimeout</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ForceHandshakeWithTimeout">MXR</a></td>
+ <td>3.11.4 and later</td>
+ </tr>
+ <tr>
+ <td><code>SSL_GetChannelInfo</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetChannelInfo">MXR</a></td>
+ <td>3.4 and later</td>
+ </tr>
+ <tr>
+ <td><code>SSL_GetCipherSuiteInfo</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetCipherSuiteInfo">MXR</a></td>
+ <td>3.4 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1126622"><code>SSL_GetClientAuthDataHook</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetClientAuthDataHook">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><code>SSL_GetMaxServerCacheLocks</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetMaxServerCacheLocks">MXR</a></td>
+ <td>3.4 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1092869"><code>SSL_GetSessionID</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetSessionID">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><code>SSL_GetStatistics</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_GetStatistics">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1112702"><code>SSL_HandshakeCallback</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_HandshakeCallback">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1085950"><code>SSL_ImportFD</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ImportFD">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1162055"><code>SSL_InheritMPServerSIDCache</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_InheritMPServerSIDCache">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1089420"><code>SSL_InvalidateSession</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_InvalidateSession">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><code>SSL_LocalCertificate</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_LocalCertificate">MXR</a></td>
+ <td>3.4 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1194921"><code>SSL_OptionGet</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_OptionGet">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1204897"><code>SSL_OptionGetDefault</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_OptionGetDefault">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1086543"><code>SSL_OptionSet</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_OptionSet">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1068466"><code>SSL_OptionSetDefault</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_OptionSetDefault">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1096168"><code>SSL_PeerCertificate</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_PeerCertificate">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><code>SSL_PreencryptedFileToStream</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_PreencryptedFileToStream">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><code>SSL_PreencryptedStreamToFile</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_PreencryptedStreamToFile">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1232052"><code>SSL_ReHandshake</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ReHandshake">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><code>SSL_ReHandshakeWithTimeout</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ReHandshakeWithTimeout">MXR</a></td>
+ <td>3.11.4 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1058001"><code>SSL_ResetHandshake</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ResetHandshake">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><code>SSL_RestartHandshakeAfterCertReq</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RestartHandshakeAfterCertReq">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><code>SSL_RestartHandshakeAfterServerCert</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RestartHandshakeAfterServerCert">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><code>SSL_RevealCert</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RevealCert">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1123385"><code>SSL_RevealPinArg</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RevealPinArg">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1081175"><code>SSL_RevealURL</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_RevealURL">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1092805"><code>SSL_SecurityStatus</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SecurityStatus">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><code>SSL_SetMaxServerCacheLocks</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SetMaxServerCacheLocks">MXR</a></td>
+ <td>3.4 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1088040"><code>SSL_SetPKCS11PinArg</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SetPKCS11PinArg">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1124562"><code>SSL_SetSockPeerID</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SetSockPeerID">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><a class="external" href="https://developer.mozilla.org/NSS/SSL_functions/sslfnc.html#1087792"><code>SSL_SetURL</code></a></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_SetURL">MXR</a></td>
+ <td>3.2 and later</td>
+ </tr>
+ <tr>
+ <td><code>SSL_ShutdownServerSessionIDCache</code></td>
+ <td><a class="external" href="http://mxr.mozilla.org/security/ident?i=SSL_ShutdownServerSessionIDCache">MXR</a></td>
+ <td>3.7.4 and later</td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/ja/mozilla/projects/nss/tools/index.html b/files/ja/mozilla/projects/nss/tools/index.html
new file mode 100644
index 0000000000..427ba92a75
--- /dev/null
+++ b/files/ja/mozilla/projects/nss/tools/index.html
@@ -0,0 +1,94 @@
+---
+title: NSS ツール
+slug: Mozilla/Projects/NSS/tools
+translation_of: Mozilla/Projects/NSS/tools
+---
+<h2 id="NSS_セキュリティツール">NSS セキュリティツール</h2>
+
+<p>Newsgroup: <a href="news://news.mozilla.org/mozilla.dev.tech.crypto">mozilla.dev.tech.crypto</a></p>
+
+<h3 id="Overview">Overview</h3>
+
+<p>The NSS Security Tools allow developers to test, debug, and manage applications that use NSS. The <a href="#Tools">Tools Information</a> table below describes both the tools that are currently working and those that are still under development. The links for each tool take you to the source code, documentation, plans, and related links for each tool. The links will become active when information is available.</p>
+
+<p>Currently, you must download the NSS 3.1 source and build it to create binary files for the NSS tools. For information about downloading the NSS source, see <a href="https://developer.mozilla.org/NSS/Building">https://developer.mozilla.org/NSS/Building</a>.</p>
+
+<p>If you have feedback or questions, please feel free to post to <a href="news://news.mozilla.org/mozilla.dev.tech.crypto"> mozilla.dev.tech.crypto</a>. This newsgroup is the preferred forum for all questions about NSS and NSS tools.</p>
+
+<h3 id="Overall_Objectives">Overall Objectives</h3>
+
+<ol>
+ <li>Provide a tool for analyzing and repairing certificate databases (<a href="#dbck">dbck</a>).</li>
+ <li>Migrate tools from secutil.h interface to PKCS #11 interface.</li>
+ <li>Eliminate redundant functionality in tools. Many tools implement private versions of PKCS11Init(), OpenCertDB(), etc.</li>
+ <li>Eliminate use of getopt() and replace with NSPR calls to get command options (to eliminate platform dependencies with getopt()).</li>
+</ol>
+
+<h3 id="Tools_Information"><a name="Tools">Tools Information</a></h3>
+
+<table style="width: 90%;">
+ <tbody>
+ <tr>
+ <th><strong>Tool</strong></th>
+ <th><strong>Description</strong></th>
+ <th><strong>Links</strong></th>
+ </tr>
+ <tr>
+ <td><a name="certutil">certutil 2.0</a></td>
+ <td>Manage certificate and key databases (cert7.db and key3.db).</td>
+ <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/certutil/">Source</a>, <a href="tools/NSS_Tools_certutil">Documentation</a>, <a href="tools/NSS_Tools_certutil-tasks">Tasks/Plans</a> </font></td>
+ </tr>
+ <tr>
+ <td><a name="cmsutil">cmsutil 1.0</a></td>
+ <td>Performs basic CMS operations such as encrypting, decrypting, and signing messages.</td>
+ <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/smimetools/">Source</a>, <a href="tools/NSS_Tools_cmsutil">Documentation</a> </font></td>
+ </tr>
+ <tr>
+ <td><a name="crlutil">crlutil</a></td>
+ <td>Manage certificate revocation lists (CRLs).</td>
+ <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/crlutil/">Source</a>, <a href="tools/NSS_Tools_crlutil">Documentation</a>, </font></td>
+ </tr>
+ <tr>
+ <td><a name="dbck">dbck 1.0</a></td>
+ <td>Analyze and repair certificate databases (not working in NSS 3.2)</td>
+ <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/dbck/">Source</a>, <a href="tools/NSS_Tools_dbck-tasks">Tasks/Plans</a> </font></td>
+ </tr>
+ <tr>
+ <td><a name="modutil">modutil 1.1</a></td>
+ <td>Manage the database of PKCS11 modules (secmod.db). Add modules and modify the properties of existing modules (such as whether a module is the default provider of some crypto service).</td>
+ <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/modutil/">Source</a>, <a href="tools/NSS_Tools_modutil">Documentation</a>, <a href="tools/NSS_Tools_modutil-tasks">Tasks/Plans</a> </font></td>
+ </tr>
+ <tr>
+ <td><a name="pk12util">pk12util 1.0</a></td>
+ <td>Import and export keys and certificates between the cert/key databases and files in PKCS12 format.</td>
+ <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/pk12util/">Source</a>, <a href="tools/NSS_Tools_pk12util">Documentation</a>, <a href="tools/NSS_Tools_pk12util-tasks">Tasks/Plans</a> </font></td>
+ </tr>
+ <tr>
+ <td><a name="signtool">signtool 1.3</a></td>
+ <td>Create digitally-signed jar archives containing files and/or code.</td>
+ <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/signtool/">Source</a>, <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/security/SecurityToolsSummary.html#jarsigner"> Documentation</a>, </font></td>
+ </tr>
+ <tr>
+ <td><a name="signver">signver 1.1</a></td>
+ <td>Verify signatures on digitally-signed objects.</td>
+ <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/signver/">Source</a>, <a href="https://docs.oracle.com/javase/tutorial/deployment/jar/verify.html"> Documentation</a>, <a href="tools/NSS_Tools_signver-tasks">Tasks/Plans</a> </font></td>
+ </tr>
+ <tr>
+ </tr>
+ <tr>
+ <td><a name="sslstrength">sslstrength</a></td>
+ <td>SSL Strength</td>
+ <td><font size="-1"><a href="tools/NSS_Tools_sslstrength">Documentation</a> </font></td>
+ </tr>
+ <tr>
+ <td><a name="ssltap">ssltap 3.2</a></td>
+ <td>Proxy requests for an SSL server and display the contents of the messages exchanged between the client and server. The ssltap tool does not decrypt data, but it shows things like the type of SSL message (clientHello, serverHello, etc) and connection data (protocol version, cipher suite, etc). This tool is very useful for debugging.</td>
+ <td><font size="-1"><a href="https://dxr.mozilla.org/mozilla/source/security/nss/cmd/ssltap/">Source</a>, <a href="tools/NSS_Tools_ssltap">Documentation</a> </font></td>
+ </tr>
+ </tbody>
+</table>
+
+<ol>
+ <li><font size="-1"><a name="note1"></a> Currently points to the Netscape Certificate Management System Administration Guide on docs.sun.com. For additional information about this tool, see <a href="http://developer.netscape.com/docs/manuals/security.html#OBJ">Object Signing</a>. </font></li>
+ <li><font size="-1"><a name="note2"></a> Currently points to the signver documentation on developer.netscape.com. For additional information about this tool, see <a href="http://developer.netscape.com/docs/manuals/security.html#FORM">Form Signing</a> </font></li>
+</ol>
diff --git a/files/ja/mozilla/projects/spidermonkey/build_documentation/index.html b/files/ja/mozilla/projects/spidermonkey/build_documentation/index.html
new file mode 100644
index 0000000000..dd5a4146c2
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/build_documentation/index.html
@@ -0,0 +1,290 @@
+---
+title: SpiderMonkey のビルド
+slug: Mozilla/Projects/SpiderMonkey/Build_Documentation
+tags:
+ - Build documentation
+ - Guide
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/Build_Documentation
+---
+<div>{{SpiderMonkeySidebar("General")}}</div>
+
+<h2 id="SpiderMonkey_のビルド">SpiderMonkey のビルド</h2>
+
+<p>この文書は SpiderMonkey の最新版をソースコードからビルドする方法を解説します。</p>
+
+<p><strong>ビルドを始める前に、必要なツールがインストールされていることを確認してください</strong>。<a href="/En/Developer_Guide/Build_Instructions/Linux_Prerequisites" title="en/Linux_Build_Prerequisites">Linux</a>, <a href="/En/Developer_Guide/Build_Instructions/Windows_Prerequisites" title="en/Windows_Build_Prerequisites">Windows</a>, <a href="/En/Developer_Guide/Build_Instructions/Mac_OS_X_Prerequisites" title="en/Mac_OS_X_Build_Prerequisites">Mac</a>, <a href="/En/Developer_Guide/Build_Instructions" title="en/Build_Documentation">その他の環境</a> での準備は、それぞれのドキュメントをごらんください。28 より古いバージョンのビルドをする際は、<a href="/ja/docs/Mozilla/Projects/NSPR">NSPR</a> が追加で必要となります。</p>
+
+<p style="margin: 0px 0px 1.7em; padding: 0px;">また <a class="internal" href="/En/SpiderMonkey/Getting_SpiderMonkey_source_code#Getting_the_latest_SpiderMonkey_source_code" title="En/SpiderMonkey/Getting SpiderMonkey source code#Getting the latest SpiderMonkey source code">SpiderMonkey 最新版のソースコード</a> も必要です。</p>
+
+<h3 id="非開発者向け_(最適化)_ビルド">非開発者向け (最適化) ビルド</h3>
+
+<p>実運用用のために SpiderMonkey をインストールする場合、またはパフォーマンスベンチマークを実行する場合は、これらの手順を使用してください (SpiderMonkey を C++ アプリケーションのライブラリとして使用したい場合、または SpiderMonkey 自体の改善に取り組んでいる場合は、代わりに下記のように開発者/デバッグビルドを行ってください)。</p>
+
+<pre class="eval line-numbers language-html">cd js/src
+autoconf2.13
+
+# この名前は、バージョン管理システムで無視させるために "_OPT.OBJ" で終わる必要があります。
+mkdir build_OPT.OBJ
+cd build_OPT.OBJ
+../configure
+# Windows では "mozmake" を使います。
+make
+</pre>
+
+<p>これについてのいくつかのメモ:</p>
+
+<ul>
+ <li>
+ <p>最も一般的なビルドの問題は依存関係の問題です。<a href="/ja/docs/Mozilla/Developer_Guide/Build_Documentation#Getting_started">プラットフォーム用のビルド前提条件ページ</a>を見てください。</p>
+ </li>
+ <li>
+ <p>SpiderMonkey はソースディレクトリでの構築をサポートしていません。上記のように、別のビルドディレクトリに設定してビルドする必要があります。</p>
+ </li>
+ <li>
+ <p>はい、autoconf バージョン 2.13 が本当に必要です。 それ以降のバージョンは動作しません (ただし、システムの autoconf としてインストールしないでください。これも機能しません。そのバージョンは非常に古いため、お勧めできません)。</p>
+ </li>
+</ul>
+
+<div class="note">
+<p><strong>メモ</strong>: Mac を使用していて、次のようなエラーが表示される場合</p>
+
+<p>"<code>checking whether the C compiler (gcc-4.2  ) works... no<br>
+ configure: error: installation or configuration problem: C compiler cannot create executables.</code>"</p>
+
+<p>次のように設定してみてください。</p>
+
+<pre><code>CC=clang CXX=clang++ ../configure</code></pre>
+
+<p>baldrdash がコンパイルに失敗する可能性もあります。</p>
+
+<pre class="line-numbers language-html"><code class="language-html">/usr/local/Cellar/llvm/7.0.1/lib/clang/7.0.1/include/inttypes.h:30:15: fatal error: 'inttypes.h' file not found
+
+/usr/local/Cellar/llvm/7.0.1/lib/clang/7.0.1/include/inttypes.h:30:15: fatal error: 'inttypes.h' file not found, err: true</code></pre>
+
+<p>これは Mohave 以降、ヘッダーが /usr/include にインストールされなくなったためです。コマンドラインツール -&gt; 新機能の下の<a href="https://developer.apple.com/documentation/xcode_release_notes/xcode_10_release_notes">リリースノート</a>を参照してください。</p>
+
+<p>リリースノートには、この互換性パッケージは近い将来提供されなくなると記載されているので、macOS 上のビルドシステムは SDK のヘッダを探すように適合させる必要があるでしょう。<br>
+ <br>
+ それまでは、次のことが役に立ちます。</p>
+
+<pre><code>open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pk
+</code></pre>
+</div>
+
+<p>これにより <code>build-release/dist/bin</code> ディレクトリに <code>js</code> という実行可能ファイルが構築されます。ヘルプページを表示する <code>dist/bin/js --help</code> でテストできます。これで、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell">シェルを実行して試す</a>準備が整いました。</p>
+
+<p>Mac、Linux、または UNIX では、追加のコマンド <code>make install</code> を使用してシステムに SpiderMonkey をインストールできます。これは共有ライブラリを <code>/usr/local/lib</code> に、C ヘッダファイルを <code>usr/local/include</code> に、そして <code>js</code> 実行ファイルを <code>/usr/local/bin</code> にインストールします。</p>
+
+<h3 id="開発者向け(デバッグ用)ビルド">開発者向け(デバッグ用)ビルド</h3>
+
+<p>SpiderMonkey 自身の開発やデバッグを目的とする場合、日々のデバッグにはデバッグビルドを、パフォーマンステストには最適化ビルドを、それぞれ別のディレクトリで行うことになります。デバッグビルドを行うには、上記の手順に加えて以下の 3 ステップを行います:</p>
+
+<pre class="eval">cd js/src
+autoconf-2.13
+
+# This name should end with "_DBG.OBJ" to make the version control system ignore it.
+mkdir build_DBG.OBJ
+cd build_DBG.OBJ
+../configure --enable-debug --disable-optimize
+# Use "mozmake" on Windows
+make
+</pre>
+
+<p><code>JS_GC_ZEAL</code> オプションをつけてビルドすると、zealous ガベージコレクションが有効になります。これはメモリリークに代表されるメモリ関連のデバッグを行う時に有用です。詳細は <a class="internal" href="/SpiderMonkey/JSAPI_Reference/JS_SetGCZeal" title="En/SpiderMonkey/JSAPI Reference/JS SetGCZeal"><code>JS_SetGCZeal()</code></a> をご覧ください。</p>
+
+<p>この他のビルドオプションについては、上記で作成したビルドディレクトリ内で次のコマンドを実行してください:</p>
+
+<pre class="eval">../configure --help
+</pre>
+
+<h4 id="コンパイルデータベースの生成">コンパイルデータベースの生成</h4>
+
+<p>一部のツール (IDE、静的アナライザー、リファクタリングツールなど) は、ソフトウェアを構築するために必要なすべての要素の説明を含む <code><a href="https://clang.llvm.org/docs/JSONCompilationDatabase.html">compile_commands.json</a></code> というファイルを使用するため、ツールは構築システムも理解する必要はありません。</p>
+
+<p>SpiderMonkey 設定スクリプトを使用して <code>compile_commands.json</code> を生成するには、次のように CompileDB バックエンドを有効にします。</p>
+
+<pre class="syntaxbox"> ../configure &lt;options&gt; --enable-build-backends=CompileDB,RecursiveMake
+</pre>
+
+<p>(RecursiveMake はあなたもビルドできるようになりたいと思うのでそこにあります!)</p>
+
+<h3 id="Building" name="Building">Windows でのビルド</h3>
+
+<div class="note">
+<p>バージョン 28 以降、<strong>スレッドセーフビルドがデフォルト</strong>となり、すべての POSIX プラットフォームでそのまま使用できるはずです。したがって、次の手順は Windows を使用している場合、または古いバージョンの SpiderMonkey をコンパイルしている場合にのみ関係があります。</p>
+</div>
+
+<p>The <a href="https://wiki.mozilla.org/MozillaBuild">MozillaBuild</a> batch file you used to open your shell (e.g. <code>start-shell-msvc2013.bat</code> or <code>start-shell-msvc2013-x64.bat</code>) determines whether the compiler toolchain will target 32-bit or 64-bit builds. To create a 64-bit build, note that you must configure with <code>--target=x86_64-pc-mingw32 --host=x86_64-pc-mingw32</code>.</p>
+
+<p>Since the POSIX NSPR emulation is not available for Windows, a working version of NSPR must be available to your build. <strong>The easiest option is to configure with <code>--enable-nspr-build.</code></strong><code> </code>This configure option builds the in-tree version of NSPR which is probably what you want; <span style="line-height: normal;"><span style="line-height: normal;">because SpiderMonkey uses newer NSPR symbols, the NSPR that ships with your operating system probably does not work.</span></span></p>
+
+<p>If <code>--enable-nspr-build</code> does not work, explicitly tell <code>configure</code> where to find NSPR using the <code>--with-nspr-cflags</code> and <code>--with-nspr-libs</code> configure options. For example, assuming your local NSPR has been installed to <code>C:/mozilla-build/msys/local</code>:</p>
+
+<pre><span style="line-height: normal;"><code><span style="line-height: normal;"><code><code>./configure<code> --with-nspr-cflags="-IC:/mozilla-build/msys/local/include" \
+     --with-nspr-libs="<span style="line-height: normal;"><code><span style="line-height: normal;"><code><code><code>C:/mozilla-build/msys/local</code></code></code></span></code></span>/lib/libnspr4.a \
+ <span style="line-height: normal;"><code><span style="line-height: normal;"><code><code><code>C:/mozilla-build/msys/local</code></code></code></span></code></span>/lib/libplds4.a \
+ <span style="line-height: normal;"><code><span style="line-height: normal;"><code><code><code>C:/mozilla-build/msys/local</code></code></code></span></code></span>/lib/libplc4.a"</code>
+</code></code></span></code></span></pre>
+
+<p>If you get symbol loading or dynamic library errors, you can force the correct NSPR to load with:</p>
+
+<pre class="line-numbers language-html"><code class="language-html">PATH="$PATH;C:/mozilla-build/msys/local/lib/" ./js</code></pre>
+
+<h2 id="Specifying_installation_directories">Specifying installation directories</h2>
+
+<p><code>make install</code> puts files in the following directories by default. You can override this by passing options to the <code>configure</code> script:</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th>What it is</th>
+ <th>Where it gets put</th>
+ <th><code>configure</code> option</th>
+ </tr>
+ <tr>
+ <td>executables, shell scripts</td>
+ <td><code>/usr/local/bin</code></td>
+ <td><code>--bindir</code></td>
+ </tr>
+ <tr>
+ <td>libraries, data</td>
+ <td><code>/usr/local/lib</code></td>
+ <td><code>--libdir</code></td>
+ </tr>
+ <tr>
+ <td>architecture-independent data</td>
+ <td><code>/usr/local/share</code></td>
+ <td><code>--sharedir</code></td>
+ </tr>
+ <tr>
+ <td>C header files</td>
+ <td><code>/usr/local/include</code></td>
+ <td><code>--includedir</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<p>For convenience, you can pass the <code>configure</code> script an option of the form <code>--prefix=&lt;PREFIXDIR&gt;</code>, which substitutes <code>&lt;PREFIXDIR&gt;</code> for <code>/usr/local</code> in all the settings above, in one step. This is usually the least troublesome thing to do, as it preserves the typical arrangement of <code>lib</code>, <code>bin</code>, and the rest.</p>
+
+<div class="note"><strong>Note:</strong> All directories you pass to <code>configure</code> are recorded in the generated makefile, so you don't need to specify them again until you re-run <code>configure</code>.</div>
+
+<h2 id="Building_SpiderMonkey_as_a_static_library">Building SpiderMonkey as a static library</h2>
+
+<p>By default, SpiderMonkey builds as a shared library. However, you can build SpiderMonkey as a static library by specifying the <code>--disable-shared-js</code> flag when you run <code>configure</code>.</p>
+
+<h2 id="Specifying_compilers_and_compiler_flags">Specifying compilers and compiler flags</h2>
+
+<p>If you want to use a compiler other than the one the <code>configure</code> script chooses for you by default, you can set the <code>CXX</code> variable in the environment when you run <code>configure</code>. This will save the values you specify in the generated makefile, so once you've set it, you don't need to do so again until you re-run <code>configure</code>.</p>
+
+<p>If you'd like to pass certain flags to the compiler, you can set the <code>CXXFLAGS</code> environment variable when you run <code>configure</code>. For example, if you're using the GNU toolchain, the following will pass the <code>-g3</code> flag to the compiler, causing it to emit debug information about macros. Then you can use those macros in <code>gdb</code> commands:</p>
+
+<pre class="eval line-numbers language-html"><code class="language-html">$ CXXFLAGS=-g3 $SRC/configure
+...
+checking whether the C++ compiler (c++ -g3 ) works... yes
+...
+$</code></pre>
+
+<h2 id="Cross-compiling_options">Cross-compiling options</h2>
+
+<p>For cross-compiling you will need a cross-compiling compiler. That tends to be easier with clang as clang has cross-compiling support built in. You may need other libraries though.  For example on debian linux you'll need the following to cross compile from x86_64 to x86.</p>
+
+<pre class="syntaxbox">apt install clang libstdc++-8-dev-i386-cross binutils-i686-gnu zlib1g-dev:i386</pre>
+
+<p>You'll also need rust, in addition to having normal rust set up you'll need to add another target to your existing rust toolchain (don't add a new toolchain spidermonkey will use only one toolchain and use it for both host and target code:</p>
+
+<pre class="syntaxbox">rustup target add i686-unknown-linux-gnu</pre>
+
+<p>To build a 32-bit version on a 64-bit Linux system, you can use the following:</p>
+
+<pre class="eval line-numbers language-html"><code class="language-html">PKG_CONFIG_LIBDIR=/usr/lib/pkgconfig CC="gcc -m32 -mfpmath=sse -msse -msse2" CXX="g++ -m32 -mfpmath=sse -msse -msse2" AR=ar \
+$SRC/configure --target=i686-pc-linux</code></pre>
+
+<p>Or for clang.</p>
+
+<pre class="syntaxbox">$SRC/configure --target=i686-pc-linux-gnu</pre>
+
+<p>To build a 32-bit arm version on a 64-bit Linux system, that runs in the arm simulator, you can use the following:</p>
+
+<pre class="line-numbers language-html"><code class="language-html"> AR=ar CC="gcc -m32 -mfpmath=sse -msse -msse2" CXX="g++ -m32 -mfpmath=sse -msse -msse2" \
+ $SRC/configure --target=i686-pc-linux --enable-simulator=arm</code></pre>
+
+<p>To build a 32-bit version on a 64-bit Mac system (the target version is specific to your OS/X SDK), you can use the following:</p>
+
+<pre class="syntaxbox">$SRC/configure --target=i386-apple-darwin16.7.0 # Choose the appropriate SDK version for your version of OS/X</pre>
+
+<p>To build a 64-bit version on a 32-bit Mac system (e.g. Mac OS X 10.5), you can use the following:</p>
+
+<pre class="eval line-numbers language-html"><code class="language-html">AR=ar CC="gcc -m64" CXX="g++ -m64" ../configure --target=x86_64-apple-darwin10.0.0</code></pre>
+
+<p>To build a 64-bit Windows version, you can use the following:</p>
+
+<pre class="eval line-numbers language-html"><code class="language-html">$SRC/configure --host=x86_64-pc-mingw32 --target=x86_64-pc-mingw32</code></pre>
+
+<div class="note"><strong>Note:</strong> You must have started your MozillaBuild shell with the proper -x64.bat script in order for the 64-bit compilers to be in your PATH.</div>
+
+<p>Whatever compiler and flags you pass to <code>configure</code> are recorded in the generated makefile, so you don't need to specify them again until you re-run <code>configure</code>.</p>
+
+<h2 id="Building_your_application">Building your application</h2>
+
+<p>While "How to build your complete application" is clearly out of scope for this document, here are some tips that will help get you on your way:</p>
+
+<ul>
+ <li>The SpiderMonkey developers frequently and deliberately change the JSAPI ABI. You cannot use headers built for one version/configuration of JSAPI to create object files which will be linked against another.</li>
+ <li>Support for JS_THREADSAFE was recently removed, and threadsafe builds are now enabled by default.</li>
+ <li>The <code>js-config</code> script, described below, is the recommended way to determine correct include paths, required libraries, etc. for your embedding to use during compilation. We highly recommend calling the <code>js-config</code> script from your embedding's makefile to set your CFLAGS, LDFLAGS, and so forth.</li>
+ <li>To install SpiderMonkey somewhere other than the default, you must use the <code>configure</code> <code>--prefix</code> option, as described above. Failure to do so may break your <code>js-config.h</code> header or <code>js-config</code> script.</li>
+ <li>Some features detected by the <code>configure</code> script do not work for cross-compilation.</li>
+</ul>
+
+<h3 id="Using_the_js-config_script">Using the js-config script</h3>
+
+<p>In addition to the SpiderMonkey libraries, header files, and shell, the SpiderMonkey build also produces a shell script named <code>js-config</code> which other build systems can use to find out how to compile code using the SpiderMonkey APIs, and how to link with the SpiderMonkey libraries.</p>
+
+<div class="note"><strong>Note:</strong> In SpiderMonkey 1.8.5, the js-config script is not generated properly on many platforms. If the instructions below do not work, you can try this <a href="https://developer.mozilla.org/en/SpiderMonkey/1.8.5#js-config" title="https://developer.mozilla.org/en/SpiderMonkey/1.8.5#js-config">workaround</a>.</div>
+
+<p>When invoked with the <code>--cflags</code> option, <code>js-config</code> prints the flags that you should pass to the C compiler when compiling files that use the SpiderMonkey API. These flags ensure the compiler will find the SpiderMonkey header files.</p>
+
+<pre class="eval line-numbers language-html"><code class="language-html">$ ./js-config --cflags # Example output: -I/usr/local/include/js -I/usr/include/nspr</code></pre>
+
+<p>When invoked with the <code>--libs</code> option, <code>js-config</code> prints the flags that you should pass to the C compiler when linking an executable or shared library that uses SpiderMonkey. These flags ensure the compiler will find the SpiderMonkey libraries, along with any libraries that SpiderMonkey itself depends upon (like NSPR).</p>
+
+<pre class="eval line-numbers language-html"><code class="language-html">$ ./js-config --libs # Example output: -L/usr/local/lib -lmozjs -L/usr/lib -lplds4 -lplc4 -lnspr4 -lpthread -ldl -ldl -lm -lm -ldl</code></pre>
+
+<h2 id="Test" name="Test">Testing SpiderMonkey</h2>
+
+<ul>
+ <li>
+ <p>Run <code>${BUILDDIR}/dist/bin/js </code><code>Y.js</code> and check if appropriate output is printed. (It should say: <code>5! is 120</code>.)</p>
+ </li>
+ <li>
+ <p>Run the main test suite by running <code>./tests/jstests.py ${BUILDDIR}/dist/bin/js</code></p>
+ </li>
+ <li>
+ <p>Run JIT-specific tests by running: <code>./jit-test/jit_test.py ${BUILDDIR}/dist/bin/js</code></p>
+ </li>
+</ul>
+
+<h2 id="Building_SpiderMonkey_1.8_or_earlier">Building SpiderMonkey 1.8 or earlier</h2>
+
+<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">Use these instructions to build SpiderMonkey from an official source release or from the old CVS repository. To build the latest SpiderMonkey sources from Mercurial, see <a href="https://developer.mozilla.org/ja/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation$edit#Building_SpiderMonkey_tip" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;">Building SpiderMonkey </a>above.</p>
+
+<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"><a href="https://developer.mozilla.org/en/SpiderMonkey" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="en/SpiderMonkey">SpiderMonkey</a> is easy to build from source if you have the usual Mozilla build prerequisites installed. Before you begin, make sure you have right build tools for your computer: <a href="https://developer.mozilla.org/en/Developer_Guide/Build_Instructions/Linux_Prerequisites" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="en/Linux_Build_Prerequisites">Linux</a>, <a href="https://developer.mozilla.org/en/Developer_Guide/Build_Instructions/Windows_Prerequisites" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="en/Windows_Build_Prerequisites">Windows</a>, <a href="https://developer.mozilla.org/en/Developer_Guide/Build_Instructions/Mac_OS_X_Prerequisites" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="en/Mac_OS_X_Build_Prerequisites">Mac</a>, <a href="https://developer.mozilla.org/en/Developer_Guide/Build_Instructions" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="en/Build_Documentation">others</a>.</p>
+
+<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">First, download a SpiderMonkey source distribution, such as <a class="external external-icon" href="http://ftp.mozilla.org/pub/mozilla.org/js/js-1.8.0-rc1.tar.gz" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;">SpiderMonkey 1.8 Release Candidate 1</a>.</p>
+
+<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">To build, use these commands:</p>
+
+<pre class="eval line-numbers language-html" style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; background-clip: initial; background-color: rgb(246, 246, 242); font: normal normal normal 100%/normal 'Courier New', 'Andale Mono', monospace;"><code class="language-html">tar xvzf js-1.8.0-rc1.tar.gz
+cd js/src
+make -f Makefile.ref</code></pre>
+
+<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">This builds a debug version of SpiderMonkey. All build files are created in a subdirectory named depending on your system (for example,<code style="font: normal normal normal 100%/normal 'Courier New', 'Andale Mono', monospace; color: inherit; font-weight: inherit;">Linux_All_DBG.OBJ</code> if you are on Linux). To install this build on your system, see <a class="external external-icon" href="http://ebixio.com/blog/2010/07/31/how-to-install-libjs-spidermonkey/" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="http://ebixio.com/blog/2010/07/31/how-to-install-libjs-spidermonkey/">SpiderMonkey installation instructions</a>.</p>
+
+<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">To build an optimized (non-debug) version of SpiderMonkey:</p>
+
+<pre class="eval line-numbers language-html" style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; background-clip: initial; background-color: rgb(246, 246, 242); font: normal normal normal 100%/normal 'Courier New', 'Andale Mono', monospace;"><code class="language-html">make BUILD_OPT=1 -f Makefile.ref</code></pre>
+
+<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">To build a <a href="https://developer.mozilla.org/en/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE" style="text-decoration: none; color: rgb(51, 102, 153) !important; cursor: default;" title="JS_THREADSAFE">thread-safe</a> version of SpiderMonkey:</p>
+
+<pre class="eval line-numbers language-html" style="margin-top: 0px; margin-right: 0px; margin-bottom: 1.286em; margin-left: 0px; padding-top: 15px; padding-right: 15px; padding-bottom: 15px; padding-left: 15px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dotted; border-right-style: dotted; border-bottom-style: dotted; border-left-style: dotted; background-clip: initial; background-color: rgb(246, 246, 242); font: normal normal normal 100%/normal 'Courier New', 'Andale Mono', monospace;"><code class="language-html">make JS_DIST=/full/path/to/directory/containing/nspr JS_THREADSAFE=1 -f Makefile.ref</code></pre>
diff --git a/files/ja/mozilla/projects/spidermonkey/bytecodes/index.html b/files/ja/mozilla/projects/spidermonkey/bytecodes/index.html
new file mode 100644
index 0000000000..a9ddaeee75
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/bytecodes/index.html
@@ -0,0 +1,30 @@
+---
+title: バイトコード
+slug: Mozilla/Projects/SpiderMonkey/Bytecodes
+tags:
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/Internals/Bytecodes
+---
+<div>{{SpiderMonkeySidebar("Internals")}}</div>
+
+<h2 id="バックグラウンド">バックグラウンド</h2>
+
+<p>SpiderMonkey バイトコードは、JavaScript エンジンで使用される標準形式のコード表現です。JavaScript フロントエンドは、ソーステキストから AST を構築してから、その AST から JSScript データ構造の一部としてスタックベースのバイトコードを生成します。バイトコードは、JSScript データ構造にも含まれているアトムとオブジェクトを (通常は配列インデックスで) 参照できます。</p>
+
+<p>エンジン内では、すべてのバイトコードはスタックフレーム内で実行されます。グローバル (最上位) コードでも eval コードでもスタックフレームが関連付けられています。スタック上のフレームには、いくつかの異なるカテゴリの JavaScript 値 (タグ付き値形式) 用のスペースがあります。単一の JavaScript 値のスペースは「スロット」と呼ばれ、カテゴリは次のとおりです。</p>
+
+<ul>
+ <li>引数スロット: 現在のフレームに渡される実際の引数を保持します</li>
+ <li>ローカルスロット: 現在のコードで使用されているローカル変数を保持します</li>
+ <li>式スロット: スタック上で式を計算するために必要な一時スペースを保持します。たとえば、<code>(a + b) + c</code> では、a をプッシュしてから b をプッシュして add をプッシュし、さらに c をプッシュから add のようにします。これには、最大2つの式スロットの深さが必要です</li>
+</ul>
+
+<p><code>this</code> のような値と呼び出し先/戻り値を保持する、専用の機能のために予約されているいくつかのスロットもあります。</p>
+
+<p>式スタックにプッシュされた最新の値に対応する "Top of Stack" (TOS) が常にあります。すべてのバイトコードは、この場所に関して暗黙的に機能します。</p>
+
+<h2 id="バイトコードリスト">バイトコードリスト</h2>
+
+<p>すべてのオペコードには、実行全体のスタック効果を表すために [-popcount, +pushcount] という注釈が付けられています。</p>
+
+<p>バイトコードのリストは <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Internals/Bytecode">SpiderMonkey の内部: バイトコードの説明ページ</a>に移動しました。</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/creating_javascript_jstest_reftests/index.html b/files/ja/mozilla/projects/spidermonkey/creating_javascript_jstest_reftests/index.html
new file mode 100644
index 0000000000..5a438b7932
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/creating_javascript_jstest_reftests/index.html
@@ -0,0 +1,9 @@
+---
+title: JavaScript jstest reftests を作成する
+slug: Mozilla/Projects/SpiderMonkey/Creating_JavaScript_jstest_reftests
+tags:
+ - Junk
+ - NeedsUpdate
+translation_of: Mozilla/Projects/SpiderMonkey/Creating_JavaScript_jstest_reftests
+---
+<p>このページにはすぐにコンテンツが表示されます。</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/creating_javascript_tests/index.html b/files/ja/mozilla/projects/spidermonkey/creating_javascript_tests/index.html
new file mode 100644
index 0000000000..d093c38e42
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/creating_javascript_tests/index.html
@@ -0,0 +1,77 @@
+---
+title: JavaScript のテストを作成する
+slug: Mozilla/Projects/SpiderMonkey/Creating_JavaScript_tests
+translation_of: Mozilla/Projects/SpiderMonkey/Creating_JavaScript_tests
+---
+<div>{{SpiderMonkeySidebar("Tests")}}</div>
+
+<div class="summary">
+<p>主に 2 つの SpiderMonkey テストスイート: <strong>jstests</strong> (in js/src/tests) と <strong>jit-tests</strong> (in js/src/jit-test) があります。詳細については、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Running_Automated_JavaScript_Tests">自動 JavaScript テストの実行</a>を参照してください。</p>
+</div>
+
+<p>新しいテストはどのテストスイートに属しますか?</p>
+
+<ol>
+ <li><strong>jit-tests</strong> は JIT の実装をテストすることを目的としています。正当性や機能性をテストするテストのみをこれらのスイートに追加してください。</li>
+ <li><strong>jstests</strong> is intended for tests of language-visible functionality. Please put tests of functionality into jstests even if related tests are in jit-tests, since jstests are closer to (and more easily converted to) <a href="https://github.com/tc39/test262/blob/master/README.md">test262</a> tests. (In fact, the test262 test suite is run as part of jstests.)</li>
+</ol>
+
+<p>Practical differences between the two test suites:</p>
+
+<ol>
+</ol>
+
+<p><strong>jstest</strong></p>
+
+<ol>
+ <li><strong>New jstest files </strong>should be put the code in the appropriate subdirectory of js/src/tests/non262/, or, under some scenarios, contributed directly to the <a href="https://github.com/tc39/test262/blob/master/README.md">test262 repository</a>.</li>
+ <li>jstests run in both the shell and the browser (although you can specify that the test should be run in only one of the two locations).</li>
+ <li>jstests automatically load js/src/tests/shell.js before they run, which creates a ton of functions.</li>
+ <li>Read more advice on jstests <a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Creating_JavaScript_tests/jsreftests">here</a>.</li>
+</ol>
+
+<p><strong>jit-test</strong></p>
+
+<ol>
+ <li><strong>New jit-test files </strong>should be put in js/src/jit-test/tests/basic or one of the other appropriate subdirectories of jit-test/tests. </li>
+ <li>jit-tests run only in the shell.</li>
+ <li>jit-tests do not load extra test functionality automatically.</li>
+</ol>
+
+<h2 id="Creating_the_test_case_file" name="Creating_the_test_case_file">新しいテストファイルを書く</h2>
+
+<p>Have a look at the existing files and follow what they do. All tests, in both suite, can use the <em>assertEq</em> function.</p>
+
+<p><strong>assertEq(v1, v2[, message])</strong></p>
+
+<p style="margin-left: 40px;">Check that v1 and v2 are the same value. If they're not, throw an exception (which will cause the test to fail).</p>
+
+<p>If you are writing a jstests, additional testing functionality is provided for you in shell.js files. You can read about them <a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Running_Automated_JavaScript_Tests">here</a>.</p>
+
+<h3 id="Performance_testing" name="Performance_testing">Performance testing and general advice</h3>
+
+<p><strong>Do not</strong> attempt to test the performance of engine features in the test suite. </p>
+
+<p>Please keep in mind that the JavaScript test suite is run on a wide variety of wildly varying hardware plaforms, from phones all the way up to servers. Even tests that check for polynomial time complexity will start to fail in a few years when they have sped up enough to run faster than the granularity of the OS scheduler or when run on platforms with higher latencies than your development workstation. These tests will also show up as infrequent oranges on our heavily loaded test machines, lowering the value of our test suite for everyone. Just don't do it, it's never worth it.</p>
+
+<p><strong>Do not</strong> add performance tests to the test suite.</p>
+
+<p>It is not generally even possible to tell if the speed of any particular feature is going to be important in the real world without running a real-world benchmark. It is <em>very</em> hard to write a good real-world benchmark. For this reason, the best place to find out if a change is performance sensitive is on arewefastyet.com.</p>
+
+<p><strong>Focus on writing fast, light tests that cover a single feature. There is basically no cost to adding a new test, so add as many feature tests as needed to cover each feature orthogonally. Remember that whenever a test fails, someone -- probably you -- is going to have to figure out what went wrong.</strong></p>
+
+<h3 id="Testing_your_test">Testing your test</h3>
+
+<p>Run your new test locally before checking it in (or posting it for review). Nobody likes patches that include failing tests!</p>
+
+<p>See<a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Running_Automated_JavaScript_Tests"> Running Automated Javascript Tests</a> for instructions on how to run jstests or jit-tests.</p>
+
+<p>It's also a good sanity check to run each new test against an unpatched shell or browser. The test should fail if it's working properly.</p>
+
+<h3 id="Checking_in_completed_tests" name="Checking_in_completed_tests">Checking in completed tests</h3>
+
+<p>Tests are usually reviewed and pushed just like any other code change. Just include the test in your patch.</p>
+
+<p><strong>Security-sensitive tests should <strong>not</strong> be committed</strong> until the corresponding bug has been made public. Instead, ask a SpiderMonkey peer how to proceed.</p>
+
+<p>It is OK under certain circumstances to push new tests to certain repositories without a code review. Don't do this unless you know what you're doing. Ask a SpiderMonkey peer for details.</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/foss/index.html b/files/ja/mozilla/projects/spidermonkey/foss/index.html
new file mode 100644
index 0000000000..70ad9afcb6
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/foss/index.html
@@ -0,0 +1,97 @@
+---
+title: FOSS
+slug: Mozilla/Projects/SpiderMonkey/FOSS
+tags:
+ - Guide
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/FOSS
+---
+<div>{{SpiderMonkeySidebar}}</div>
+
+<p>自身の SpiderMonkey ベースのオープンソースプロジェクトを追加してください (必要ならばカテゴリを追加してください) !</p>
+
+<h2 id="ラッパーバインディング">ラッパー/バインディング</h2>
+
+<h3 id="C">C++</h3>
+
+<ul>
+ <li><a href="https://github.com/cocos2d/cocos2d-js">Cocos2d-JS</a> - Cocos2d-JS は SpiderMonkey を組み込んだクロスプラットフォームのゲームエンジンで、Web とネイティブプラットフォームの両方に同じ API を提供します。<a href="http://www.cocos2d-x.org/wiki/Getting_Started_Cocos2d-js">Getting started here</a>.</li>
+ <li><a class="external" href="http://flusspferd.org/" title="http://flusspferd.org/">Flusspferd</a> - (新しい) C++ バインディング</li>
+ <li><a href="http://code.google.com/p/libjspp/" title="http://code.google.com/p/libjspp/">libjspp</a> - SpiderMonkey を拡張して埋め込むための C++ テンプレートベースのライブラリ。SpiderMonkey 1.8.5 以降で動作します。</li>
+ <li style="text-align: left;"><a class="external" href="http://spiderape.sourceforge.net/" title="http://spiderape.sourceforge.net/">Spiderape</a> - SpiderMonkey の最も古い C++ バインディング</li>
+ <li><a class="external text" href="http://www.trixul.com/" rel="nofollow" title="http://www.trixul.com/">TriXUL</a> - <a class="external text" href="http://trixul.cvs.sourceforge.net/trixul/trixul/layout/jsengine" rel="nofollow" title="http://trixul.cvs.sourceforge.net/trixul/trixul/layout/jsengine">(TriXUL CVS)</a> - Trixul XML ベースの GUI ツールキットは、SpiderMonkey を組み込み、JavaScript を使用してその GUI の背後にロジックを実装し、JavaScript から C++ オブジェクトへの呼び出しをサポートします。</li>
+</ul>
+
+<h3 id="Rust">Rust</h3>
+
+<ul>
+ <li><a class="external" href="https://crates.io/crates/mozjs" title="http://live.gnome.org/Gjs">mozjs</a> - <a href="https://servo.org/">Servo</a> で使用されている Rust バインディング</li>
+</ul>
+
+<h3 id="GNOME">GNOME</h3>
+
+<ul>
+ <li><a class="external" href="http://live.gnome.org/Gjs" title="http://live.gnome.org/Gjs">gjs</a> - GNOME への JavaScript バインディング(概して、GObject のイントロスペクションメカニズムを使用している任意のライブラリへの)</li>
+</ul>
+
+<h3 id="Objective_Caml">Objective Caml</h3>
+
+<ul>
+ <li><a class="external" href="http://alain.frisch.fr/soft.html#spider" title="http://alain.frisch.fr/soft.html#spider">http://alain.frisch.fr/soft.html#spider</a> - OCaml アプリケーションに SpiderMonkey を埋め込むためのバインディング</li>
+</ul>
+
+<h3 id="Perl">Perl</h3>
+
+<ul>
+ <li><a class="external" href="http://jspl.msg.mx/" title="http://jspl.msg.mx/">http://jspl.msg.mx/</a> - SpiderMonkey と Perl を相互に埋め込むためのバインディング。JavaScript から CPAN モジュールを使用できるようにする JS シェルが含まれています。</li>
+</ul>
+
+<h3 id="Python">Python</h3>
+
+<ul>
+ <li><a class="external" href="http://pypi.python.org/pypi/python-spidermonkey" title="http://pypi.python.org/pypi/python-spidermonkey">http://pypi.python.org/pypi/python-spidermonkey</a></li>
+</ul>
+
+<h3 id="wxWidgets">wxWidgets</h3>
+
+<ul>
+ <li><a class="external" href="http://gluescript.sourceforge.net/" title="http://gluescript.sourceforge.net/">GLUEscript</a> (formerly <a class="external" href="http://www.wxjavascript.net/" title="http://www.wxjavascript.net/">wxJavaScript</a>)</li>
+</ul>
+
+<h3 id="Code_generators">Code generators</h3>
+
+<ul>
+ <li><a class="external" href="http://jsapigen.sourceforge.net" title="http://jsapigen.sourceforge.net/">jsapigen</a> - C アプリケーションに SpiderMonkey を埋め込むためのバインディングを生成する</li>
+</ul>
+
+<h2 id="拡張機能">拡張機能</h2>
+
+<ul>
+ <li>
+ <p><a class="external" href="http://code.google.com/p/jslibs/" title="http://code.google.com/p/jslibs/">http://code.google.com/p/jslibs/</a> - <a class="external" href="http://en.wikipedia.org/wiki/Zlib" title="Zlib">zlib</a>, <a class="external" href="http://en.wikipedia.org/wiki/SQLite" title="SQLite">SQLite</a>, <a class="mw-redirect external" href="http://en.wikipedia.org/wiki/NSPR" title="NSPR">NSPR</a>, <a class="external" href="http://en.wikipedia.org/wiki/Open_Dynamics_Engine" title="Open Dynamics Engine">ode</a>, <a class="external" href="http://en.wikipedia.org/wiki/Libpng" title="Libpng">libpng</a>, <a class="external" href="http://en.wikipedia.org/wiki/Libjpeg" title="Libjpeg">libjpeg</a>, <a class="external" href="http://en.wikipedia.org/wiki/Libffi" title="Libffi">libffi</a>, (...) SpiderMonkey 用のライブラリ</p>
+ </li>
+ <li>
+ <p><a class="external" href="http://www.jsdb.org/" title="http://www.jsdb.org/">http://www.jsdb.org/</a> - ファイル、ネットワーク、データベース、圧縮、メールなどのネイティブオブジェクトを含む JS シェル</p>
+ </li>
+ <li>
+ <p><a class="external" href="http://code.google.com/p/gpsee/" title="http://code.google.com/p/gpsee/"><u>http://code.google.com/p/gpsee/</u></a> - SpiderMonkey 用の commonJS プラットフォーム、母国語モジュールの相互運用方法、モジュールなど。既存の埋め込みを補完するように設計された GPSEE は、サンプルの簡単な埋め込み、スクリプトホスト、および Mozilla の JS シェルの拡張バージョンを同梱しています。バンドルされているモジュールには、ByteArray、ByteString、CGI、POSIX Signals、FFI などのサポートが含まれています。</p>
+ </li>
+ <li>
+ <p><a class="external" href="http://javalikescript.free.fr/" title="http://javalikescript.free.fr/">http://javalikescript.free.fr/</a> - 拡張可能なツーリングフレームワークを提供することを目的とした汎用 JavaScript プラットフォーム</p>
+ </li>
+ <li>
+ <p><a href="http://www.synchro.net/" title="http://www.synchro.net/">http://www.synchro.net/</a> - telnet/SSH 掲示板システム (BBS) とインターネットサーバ (HTTP/SMTP/FTP)。JavaScript で記述された追加のインターネットサービス(IRC、IMAP、Gopher など)。</p>
+ </li>
+ <li>
+ <p><a href="https://github.com/mindbit/libjssql/wiki" title="https://github.com/mindbit/libjssql/wiki">https://github.com/mindbit/libjssql/wiki</a> - JDBC にできるだけ似せた、JavaScript 用の汎用 SQL API を提供することを目的としたライブラリ</p>
+ </li>
+</ul>
+
+<h2 id="その他">その他</h2>
+
+<ul>
+ <li><a class="external" href="http://groups.google.com/group/serverjs" title="http://groups.google.com/group/serverjs">ServerJS</a>, 細分化されたサーバサイドの Javascript の世界に対する標準化の取り組み</li>
+ <li><a class="external" href="http://play0ad.com/" title="http://wildfiregames.com/0ad/">0 A.D.</a>, JavaScript スクリプトを使った歴史的な RTS ゲーム</li>
+ <li><a class="external" href="http://soubok.googlepages.com/javascript" title="http://soubok.googlepages.com/javascript">http://soubok.googlepages.com/javascript</a></li>
+ <li><a class="external text" href="http://malzilla.sourceforge.net/" rel="nofollow" title="http://malzilla.sourceforge.net/">Malzilla</a> - SpiderMonkey を使用して、Web ページ上の JavaScript を難読化して<a href="https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%82%A6%E3%82%A7%E3%82%A2">マルウェア</a>を除去するためのツール</li>
+</ul>
diff --git a/files/ja/mozilla/projects/spidermonkey/getting_spidermonkey_source_code/index.html b/files/ja/mozilla/projects/spidermonkey/getting_spidermonkey_source_code/index.html
new file mode 100644
index 0000000000..3296d837dc
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/getting_spidermonkey_source_code/index.html
@@ -0,0 +1,90 @@
+---
+title: SpiderMonkeyソースコードの取得
+slug: Mozilla/Projects/SpiderMonkey/Getting_SpiderMonkey_source_code
+tags:
+ - Guide
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/Getting_SpiderMonkey_source_code
+---
+<div>{{SpiderMonkeySidebar}}</div>
+
+<p>SpiderMonkey のソースコードは gzip 形式でも直接 Mercurial リポジトリからも入手できます。</p>
+
+<h2 id="gzip_で圧縮された_SpiderMonkey_のソースコードのダウンロード">gzip で圧縮された SpiderMonkey のソースコードのダウンロード</h2>
+
+<p>gzip で圧縮された SpiderMonkey のソースコードを次の URL からダウンロードできます:</p>
+
+<pre><span class="plain"><a href="http://ftp.mozilla.org/pub/mozilla.org/js/" title="http://ftp.mozilla.org/pub/mozilla.org/js/">http://ftp.mozilla.org/pub/mozilla.org/js/</a></span>
+</pre>
+
+<p>コマンドラインから SpiderMonkey ソースコード ver24.2 をダウンロードして展開する例です:</p>
+
+<pre>mkdir mozilla
+cd mozilla
+wget <a href="http://ftp.mozilla.org/pub/mozilla.org/js/mozjs-24.2.0.tar.bz2">http://ftp.mozilla.org/pub/mozilla.org/js/mozjs-24.2.0.tar.bz2</a>
+tar xjf mozjs-24.2.0.tar.bz2
+</pre>
+
+<p>These commands should work on most platforms including Windows, as long as on Windows you are using the <a href="/En/Developer_Guide/Build_Instructions/Windows_Prerequisites#mozillabuild" title="https://developer.mozilla.org/en/Windows_Build_Prerequisites#mozillabuild">MozillaBuild</a> bash shell.</p>
+
+<h2 id="Getting_the_latest_SpiderMonkey_source_code" name="Getting_the_latest_SpiderMonkey_source_code">Mercurial から最新の SpiderMonkey ソースコードを入手する</h2>
+
+<p>The <a href="/en/Mercurial" title="en/Mercurial">Mercurial</a> repository at <a class="external" href="http://hg.mozilla.org/mozilla-central/" title="http://hg.mozilla.org/mozilla-central/">http://hg.mozilla.org/mozilla-central/</a> hosts the latest SpiderMonkey sources. Mercurial is also known as hg.</p>
+
+<p>The following command line downloads the entire Mozilla repository, including the full change history and a lot of Gecko and Firefox source code that isn't part of SpiderMonkey. It also changes to the SpiderMonkey directory (js/src).</p>
+
+<pre class="eval">hg clone <span class="nowiki">http://hg.mozilla.org/mozilla-central/</span>
+cd js/src
+</pre>
+
+<p>To avoid getting the full change history, click the <code>zip</code> or <code>gz</code> links at <a class="external" href="http://hg.mozilla.org/index.cgi/mozilla-central/file/tip" title="http://hg.mozilla.org/index.cgi/mozilla-central/file/tip">http://hg.mozilla.org/index.cgi/mozilla-central/file/tip</a>. This fetches a snapshot of the current Mozilla tree.</p>
+
+<p>If you have problems with the instructions above, you can read the full details of using Mercurial to get Mozilla code <a href="https://developer.mozilla.org/en-US/docs/Developer_Guide/Source_Code/Mercurial" title="https://developer.mozilla.org/en-US/docs/Developer_Guide/Source_Code/Mercurial">here</a>. That page also contains links to several bundles, which can be useful if you have a poor network connection.</p>
+
+<h2 id="Getting_the_latest_SpiderMonkey_source_code" name="Getting_the_latest_SpiderMonkey_source_code">Git で最新の SpiderMonkey のソースコードを取得する</h2>
+
+<p>The following command line downloads the entire Mozilla repository, including the full change history and a lot of Gecko and Firefox source code that isn't part of SpiderMonkey. It also changes to the SpiderMonkey directory (js/src).</p>
+
+<pre class="eval">git clone https://github.com/mozilla/gecko-dev.git
+cd gecko-dev/js/src
+</pre>
+
+<p>If you want a faster (about 5 times as of January 2015) download, try doing a shallow clone (no version control history).</p>
+
+<pre class="eval">git clone --depth 1 https://github.com/mozilla/gecko-dev.git
+</pre>
+
+<p>If you have any problems check the <a href="https://wiki.mozilla.org/Github" title="https://wiki.mozilla.org/Github">https://wiki.mozilla.org/Github</a> page.</p>
+
+<h2 id="Getting_older_SpiderMonkey_sources_from_CVS" name="Getting_older_SpiderMonkey_sources_from_CVS">CVS から古い SpiderMonkey ソースを入手する</h2>
+
+<div class="note"><strong>Note:</strong> You will need to explicitly fetch the JavaScript shell sources even if you currently build another Mozilla project, as there are files specific to the shell that are not normally found in a Mozilla source tree.</div>
+
+<p>Just like when you're fetching any other Mozilla project from CVS, you need to log into the CVS server first. To do this, <code>cd</code> into the base directory you'd like to check out the code into, then enter the following command at your command line:</p>
+
+<pre>cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot login
+</pre>
+
+<p>When prompted, enter the password <code>anonymous</code>.</p>
+
+<p>Once you've logged in, <code>cd</code> into the root of your CVS tree and enter the following command:</p>
+
+<pre>cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -l mozilla/js/src mozilla/js/src/config mozilla/js/src/editline mozilla/js/src/fdlibm
+</pre>
+
+<p>This checks out all the files needed in order to build the JavaScript shell.</p>
+
+<p>If you also want the regression tests, add this command:</p>
+
+<pre>cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/js/tests
+</pre>
+
+<h2 id="Getting_older_branch_versions_of_SpiderMonkey" name="Getting_older_branch_versions_of_SpiderMonkey">SpiderMonkey の古いブランチバージョンを入手する</h2>
+
+<p>If you want to experiment with a specific branch's version of SpiderMonkey, you need to check out js/src from branch but check out <code>editline</code> and <code>config</code> from trunk:</p>
+
+<pre>cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -l -r <em><var>BRANCH_NAME</var></em> mozilla/js/src mozilla/js/src/fdlibm
+cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -l mozilla/js/src/config mozilla/js/src/editline
+</pre>
+
+<p>Change <code><em>BRANCH_NAME</em></code> to the name of the branch you want to check out. You can use a JavaScript branch name (e.g. <code>JS_1_7_ALPHA_BRANCH</code>) or a Mozilla branch name (e.g. <code>MOZILLA_1_8_BRANCH</code>).</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/hacking_tips/index.html b/files/ja/mozilla/projects/spidermonkey/hacking_tips/index.html
new file mode 100644
index 0000000000..933d9d64a4
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/hacking_tips/index.html
@@ -0,0 +1,654 @@
+---
+title: ハッキングのヒント
+slug: Mozilla/Projects/SpiderMonkey/Hacking_Tips
+tags:
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/Hacking_Tips
+---
+<div>{{SpiderMonkeySidebar("Getting_started")}}</div>
+
+<p>このページには、SpiderMonkey に関連する問題の調査に役立つヒントがいくつか掲載されています。ここに記載されているヒントはすべて、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey のビルドドキュメント</a>の最後に取得された JavaScript シェルを扱っています。2つの部分に分かれており、1つはデバッグに関するセクション、もう1つはドラフト最適化に関するセクションです。これらのヒントの多くは、JS シェルのデバッグビルドにのみ適用されます。それらはリリースビルドでは機能しません。</p>
+
+<h2 id="デバッグのヒント">デバッグのヒント</h2>
+
+<h3 id="ヘルプの入手_(JS_シェルから)">ヘルプの入手 (JS シェルから)</h3>
+
+<p><strong>help</strong> 関数を使用して、シェルのすべてのプリミティブ関数のリストを記述します。いくつかの関数は 'os' オブジェクトの下に移動されているので、<strong>help(os)</strong> はその "namespace" のメンバーだけを簡単に助けます。</p>
+
+<h3 id="関数のバイトコードを取得する_(JSシェルから)">関数のバイトコードを取得する (JSシェルから)</h3>
+
+<p>シェルには、関数のバイトコードをソースノートとともにダンプするための小さな関数 <strong>dis</strong> があります。引数がなければ、呼び出し元のバイトコードをダンプします。</p>
+
+<pre class="eval"><code>js&gt; function f () {
+  return 1;
+}
+js&gt; <strong>dis(</strong>f<strong>)</strong>;
+flags:
+loc     op
+-----   --
+main:
+00000:  one
+00001:  return
+00002:  stop
+
+Source notes:
+ ofs  line    pc  delta desc     args
+---- ---- ----- ------ -------- ------
+  0:    1     0 [   0] newline
+  1:    2     0 [   0] colspan 2
+  3:    2     2 [   2] colspan 9
+
+</code></pre>
+
+<h3 id="関数のバイトコードを取得する_(gdbから)">関数のバイトコードを取得する (gdbから)</h3>
+
+<p><em>jsopcode.cpp</em> では、<strong>js::DisassembleAtPC</strong> という名前の関数が使用されています。PC はスクリプトのバイトコードを出力できます。<strong>js::DumpScript</strong> などのこの関数のいくつかの変種はデバッグに便利です。</p>
+
+<h3 id="JS_スタックのプリント_(gdbから)">JS スタックのプリント (gdbから)</h3>
+
+<p>jsobj.cppでは、<strong>js::DumpBacktrace</strong> という名前の関数が、JS スタックのバックトレース à la gdb を出力します。バックトレースには次の順序で、スタックの深さ、インタープリタフレームポインタ (<em>js/src/vm/Stack.h</em>、<strong>StackFrame</strong> クラスを参照) または IonMonkeyでコンパイルした場合は (nil)、コールロケーションのファイルと行番号、およびカッコの下に実行された JSScript ポインタと jsbytecode ポインタ (pc) が含まれます。</p>
+
+<pre class="eval"><code>$ gdb --args js
+[…]
+(gdb) b js::ReportOverRecursed
+(gdb) r
+js&gt; function f(i) {
+  if (i % 2) f(i + 1);
+  else f(i + 3);
+}
+js&gt; f(0)
+
+Breakpoint 1, js::ReportOverRecursed (maybecx=0xfdca70) at /home/nicolas/mozilla/ionmonkey/js/src/jscntxt.cpp:495
+495         if (maybecx)
+(gdb) call <strong>js::DumpBacktrace(</strong>maybecx<strong>)</strong>
+#0          (nil)   typein:2 (0x7fffef1231c0 @ 0)
+#1          (nil)   typein:2 (0x7fffef1231c0 @ 24)
+#2          (nil)   typein:3 (0x7fffef1231c0 @ 47)
+#3          (nil)   typein:2 (0x7fffef1231c0 @ 24)
+#4          (nil)   typein:3 (0x7fffef1231c0 @ 47)
+[…]
+#25157 0x7fffefbbc250   typein:2 (0x7fffef1231c0 @ 24)
+#25158 0x7fffefbbc1c8   typein:3 (0x7fffef1231c0 @ 47)
+#25159 0x7fffefbbc140   typein:2 (0x7fffef1231c0 @ 24)
+#25160 0x7fffefbbc0b8   typein:3 (0x7fffef1231c0 @ 47)
+#25161 0x7fffefbbc030   typein:5 (0x7fffef123280 @ 9)
+
+</code></pre>
+
+<p>Note, you can do the exact same exercise above using <code>lldb</code> (necessary on OSX after Apple removed <code>gdb</code>) by running <code>lldb -f js</code> then following the remaining steps.</p>
+
+<p>Since SpiderMonkey 48, we have a gdb unwinder.  This unwinder is able to read the frames created by the JIT, and to display the frames which are after these JIT frames.</p>
+
+<pre><code>$ gdb --args out/dist/bin/js ./foo.js
+[…]
+SpiderMonkey unwinder is disabled by default, to enable it type:
+ enable unwinder .* SpiderMonkey
+(gdb) b js::math_cos
+(gdb) run
+[…]
+#0 js::math_cos (cx=0x14f2640, argc=1, vp=0x7fffffff6a88) at js/src/jsmath.cpp:338
+338 CallArgs args = CallArgsFromVp(argc, vp);
+(gdb) enable unwinder .* SpiderMonkey
+(gdb) backtrace 10
+#0 0x0000000000f89979 in js::math_cos(JSContext*, unsigned int, JS::Value*) (cx=0x14f2640, argc=1, vp=0x7fffffff6a88) at js/src/jsmath.cpp:338
+#1 0x0000000000ca9c6e in js::CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&amp;) (cx=0x14f2640, native=0xf89960 , args=...) at js/src/jscntxtinlines.h:235
+#2 0x0000000000c87625 in js::Invoke(JSContext*, JS::CallArgs const&amp;, js::MaybeConstruct) (cx=0x14f2640, args=..., construct=js::NO_CONSTRUCT) at js/src/vm/Interpreter.cpp:476
+#3 0x000000000069bdcf in js::jit::DoCallFallback(JSContext*, js::jit::BaselineFrame*, js::jit::ICCall_Fallback*, uint32_t, JS::Value*, JS::MutableHandleValue) (cx=0x14f2640, frame=0x7fffffff6ad8, stub_=0x1798838, argc=1, vp=0x7fffffff6a88, res=JSVAL_VOID) at js/src/jit/BaselineIC.cpp:6113
+#4 0x00007ffff7f41395 in </code>&lt;&lt;JitFrame_Exit&gt;&gt;<code> ()
+#5 0x00007ffff7f42223 in </code>&lt;&lt;JitFrame_BaselineStub&gt;&gt;<code> ()
+#6 0x00007ffff7f4423d in </code>&lt;&lt;JitFrame_BaselineJS&gt;&gt;<code> ()
+#7 0x00007ffff7f4222e in </code>&lt;&lt;JitFrame_BaselineStub&gt;&gt;<code> ()
+#8 0x00007ffff7f4326a in </code>&lt;&lt;JitFrame_BaselineJS&gt;&gt;<code> ()
+#9 0x00007ffff7f38d5f in </code>&lt;&lt;JitFrame_Entry&gt;&gt;<code> ()
+#10 0x00000000006a86de in EnterBaseline(JSContext*, js::jit::EnterJitData&amp;) (cx=0x14f2640, data=...) at js/src/jit/BaselineJIT.cpp:150
+</code></pre>
+
+<p>Note, when you enable the unwinder, the current version of gdb (7.10.1) does not flush the backtrace. Therefore, the JIT frames do not appear until you settle on the next breakpoint. To work-around this issue you can use the recording feature of <code>gdb</code>, to step one instruction, and settle back to where you came from with the following set of <code>gdb</code> commands:</p>
+
+<pre><code>(gdb) record full
+(gdb) si
+(gdb) record goto 0
+(gdb) record stop
+</code></pre>
+
+<p>If you have a core file, you can use the gdb unwinder the same way, or do everything from the command line as follow:</p>
+
+<pre><code>$ gdb -ex 'enable unwinder .* SpiderMonkey' -ex 'bt 0' -ex 'thread apply all backtrace' -ex 'quit' out/dist/bin/js corefile
+</code></pre>
+
+<p>The gdb unwinder is supposed to be loaded by <code>dist/bin/js-gdb.py</code> and load python scripts which are located in <code>js/src/gdb/mozilla</code> under gdb. If gdb does not load the unwinder by default, you can force it to, by using the <code>source</code> command with the <code>js-gdb.py</code> file.</p>
+
+<h3 id="生成されたコードにブレークポイントを設定する_(gdb_x86_x86-64_arm_から)">生成されたコードにブレークポイントを設定する (gdb, x86 / x86-64, arm から)</h3>
+
+<p>To set a breakpoint the generated code of a specific JSScript compiled with IonMonkey. Set a breakpoint on the instruction you are interested in. If you have no precise idea which function you are looking at, you can set a breakpoint on the <strong>js::ion::CodeGenerator::visitStart</strong> function.  Optionally, a condition on the <strong>ins-&gt;id()</strong> of the LIR instruction can be added to select precisely the instruction you are looking for. Once the breakpoint is on <strong>CodeGenerator</strong> function of the LIR instruction, add a command to generate a static breakpoint in the generated code.</p>
+
+<pre class="eval"><code>$ gdb --args js
+[…]
+(gdb) b js::ion::CodeGenerator::visitStart
+(gdb) command
+&gt;call masm.breakpoint()
+&gt;continue
+&gt;end
+(gdb) r
+js&gt; function f(a, b) { return a + b; }
+js&gt; for (var  i = 0; i &lt; 100000; i++) f(i, i + 1);
+
+Breakpoint 1, js::ion::CodeGenerator::visitStart (this=0x101ed20, lir=0x10234e0)
+    at /home/nicolas/mozilla/ionmonkey/js/src/ion/CodeGenerator.cpp:609
+609     }
+
+Program received signal SIGTRAP, Trace/breakpoint trap.
+0x00007ffff7fb165a in ?? ()
+(gdb)
+
+</code></pre>
+
+<p>Once you hit the generated breakpoint, you can replace it by a gdb breakpoint to make it conditional, the procedure is to first replace the generated breakpoint by a nop instruction, and to set a breakpoint at the address of the nop.</p>
+
+<pre class="eval"><code>(gdb) x /5i $pc - 1
+   0x7ffff7fb1659:      int3
+=&gt; 0x7ffff7fb165a:      mov    0x28(%rsp),%rax
+   0x7ffff7fb165f:      mov    %eax,%ecx
+   0x7ffff7fb1661:      mov    0x30(%rsp),%rdx
+   0x7ffff7fb1666:      mov    %edx,%ebx
+
+(gdb) # replace the int3 by a nop
+(gdb) set *(unsigned char *) ($pc - 1) = 0x90
+(gdb) x /1i $pc - 1
+   0x7ffff7fb1659:      nop
+
+(gdb) # set a breakpoint at the previous location
+(gdb) b *0x7ffff7fb1659
+Breakpoint 2 at 0x7ffff7fb1659
+</code>
+</pre>
+
+<h3 id="イオン生成アセンブリコードのプリント_(gdb_から)">イオン生成アセンブリコードのプリント (gdb から)</h3>
+
+<p>If you want to look at the assembly code generated by IonMonkey, you can follow this procedure:</p>
+
+<ul>
+ <li>Place a breakpoint at CodeGenerator.cpp on the CodeGenerator::link method.</li>
+ <li>Step next a few times, so that the "code" variable gets generated</li>
+ <li>Print code-&gt;code_, which is the address of the code</li>
+ <li>Disassembly code read at this address (using x/Ni address, where N is the number of instructions you would like to see)</li>
+</ul>
+
+<p>Here is an example. It might be simpler to use the CodeGenerator::link lineno instead of the full qualified name to put the breakpoint. Let's say that the line number of this function is 4780, for instance:</p>
+
+<pre>(gdb) b CodeGenerator.cpp:4780
+Breakpoint 1 at 0x84cade0: file /home/code/mozilla-central/js/src/ion/CodeGenerator.cpp, line 4780.
+(gdb) r
+Starting program: /home/code/mozilla-central/js/src/32-release/js -f /home/code/jaeger.js
+[Thread debugging using libthread_db enabled]
+Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
+[New Thread 0xf7903b40 (LWP 12563)]
+[New Thread 0xf6bdeb40 (LWP 12564)]
+Run#0
+
+Breakpoint 1, js::ion::CodeGenerator::link (this=0x86badf8)
+    at /home/code/mozilla-central/js/src/ion/CodeGenerator.cpp:4780
+4780    {
+(gdb) n
+4781        JSContext *cx = GetIonContext()-&gt;cx;
+(gdb) n
+4783        Linker linker(masm);
+(gdb) n
+4784        IonCode *code = linker.newCode(cx, JSC::ION_CODE);
+(gdb) n
+4785        if (!code)
+(gdb) p code-&gt;code_
+$1 = (uint8_t *) 0xf7fd25a8 "\201", &lt;incomplete sequence \354\200&gt;
+(gdb) x/2i 0xf7fd25a8
+   0xf7fd25a8:    sub    $0x80,%esp
+   0xf7fd25ae:    mov    0x94(%esp),%ecx
+
+</pre>
+
+<p>On arm, the compiled JS code will always be ARM machine code, whereas spidermonkey itself is frequently Thumb2.  Since there isn't debug info for the jitted code, you will need to tell gdb that you are looking at ARM code:</p>
+
+<pre>(gdb) set arm force-mode arm
+</pre>
+
+<p>Or you can wrap the x command in your own command:</p>
+
+<pre>def xi
+    set arm force-mode arm
+    eval "x/%di %d", $arg0, $arg1
+    set arm force-mode auto
+end
+
+</pre>
+
+<h3 id="Printing_asm.jswasm_generated_assembly_code_(from_gdb)">Printing asm.js/wasm generated assembly code (from gdb)</h3>
+
+<ul>
+ <li>
+ <p>Set a breakpoint on <code>js::wasm::Instance::callExport</code> (defined in <code>WasmInstance.cpp</code> as of November 18th 2016). This will trigger for *any* asm.js/wasm call, so you should find a way to set this breakpoint for the only generated codes you want to look at.</p>
+ </li>
+ <li>
+ <p>Run the program.</p>
+ </li>
+ <li>
+ <p>Do <code>next</code> in gdb until you reach the definition of the <code>funcPtr</code>:</p>
+ </li>
+</ul>
+
+<pre>// Call the per-exported-function trampoline created by GenerateEntry.                                                                   │
+auto funcPtr = JS_DATA_TO_FUNC_PTR(ExportFuncPtr, codeBase() + func.entryOffset());                                                      │
+if (!CALL_GENERATED_2(funcPtr, exportArgs.begin(), &amp;tlsData_))                                                                           │
+ return false;   </pre>
+
+<ul>
+ <li><code>After it's set, x/64i funcPtr</code> will show you the trampoline code. There should be a call to an address at some point ; that's what we're targeting. Copy that address.</li>
+</ul>
+
+<pre><code> 0x7ffff7ff6000: push %r15
+ 0x7ffff7ff6002: push %r14
+ 0x7ffff7ff6004: push %r13
+ 0x7ffff7ff6006: push %r12
+ 0x7ffff7ff6008: push %rbp
+ 0x7ffff7ff6009: push %rbx
+ 0x7ffff7ff600a: movabs $0xea4f80,%r10
+ 0x7ffff7ff6014: mov 0x178(%r10),%r10
+ 0x7ffff7ff601b: mov %rsp,0x40(%r10)
+ 0x7ffff7ff601f: mov (%rsi),%r15
+ 0x7ffff7ff6022: mov %rdi,%r10
+ 0x7ffff7ff6025: push %r10
+ 0x7ffff7ff6027: test $0xf,%spl
+ 0x7ffff7ff602b: je 0x7ffff7ff6032
+ 0x7ffff7ff6031: int3
+ 0x7ffff7ff6032: callq 0x7ffff7ff5000 &lt;------ right here</code></pre>
+
+<ul>
+ <li><code>x/64i address</code> (in this case: <code>x/64i 0x7ffff7ff6032</code>).</li>
+ <li>If you want to put a breakpoint at the function's entry, you can do: <code>b *address </code>(for instance here,  <code>b* 0x7ffff7ff6032</code>). Then you can display the instructions around pc with<code> x/20i $pc, </code>and execute instruction by instruction with<code> stepi.</code></li>
+</ul>
+
+<h3 id="Finding_the_script_of_Ion_generated_assembly_(from_gdb)">Finding the script of Ion generated assembly (from gdb)</h3>
+
+<p>When facing a bug in which you are in the middle of IonMonkey generated code, first thing to note, is that gdb's backtrace is not reliable, because the generated code does not keep a frame pointer. To figure it out you have to read the stack to infer the IonMonkey frame.</p>
+
+<pre><code>(gdb) </code>x /64a $sp
+[…]
+0x7fffffff9838: 0x7ffff7fad2da  0x141
+0x7fffffff9848: 0x7fffef134d40  0x2
+[…]
+(gdb) p (*(JSFunction**) 0x7fffffff9848)-&gt;u.i.script_-&gt;lineno
+$1 = 1
+(gdb) p (*(JSFunction**) 0x7fffffff9848)-&gt;u.i.script_-&gt;filename
+$2 = 0xff92d1 "typein"
+</pre>
+
+<p>The stack is order as defined in js/src/ion/IonFrames-x86-shared.h, it is composed of the return address, a descriptor (a small value), the JSFunction (if it is even) or a JSScript (if the it is odd, remove it to dereference the pointer) and the frame ends with the number of actual arguments (a small value too). If you want to know at which LIR the code is failing at, the <strong>js::ion::CodeGenerator::generateBody</strong> function can be intrumented to dump the LIR <strong>id</strong> before each instruction.</p>
+
+<pre><code>for (; iter != current-&gt;end(); iter++) {
+ IonSpew(IonSpew_Codegen, "instruction %s", iter-&gt;opName());
+ […]
+
+ masm.store16(Imm32(iter-&gt;id()), Address(StackPointer, -8)); // added
+ if (!iter-&gt;accept(this))
+ return false;
+</code>
+<code> […]
+</code><code>}</code></pre>
+
+<p><code>This modification will add an instruction which abuse the stack pointer </code>to store an immediate value (the LIR id) to a location which would never be generated by any sane compiler. Thus when dumping the assembly under gdb, this kind of instructions would be easily noticeable.</p>
+
+<h3 id="Viewing_the_MIRGraph_of_IonOdin_compilations_(from_gdb)">Viewing the MIRGraph of Ion/Odin compilations (from gdb)</h3>
+
+<p>With gdb instrumentation, we can call <a href="https://github.com/sstangl/iongraph">iongraph</a> program within gdb when the execution is stopped.  This instrumentation adds an <strong><code>iongraph</code></strong> command when provided with an instance of a <strong><code>MIRGenerator*</code></strong>, will call <code>iongraph</code>, <code>graphviz</code> and your prefered png viewer to display the MIR graph at the precise time of the execution.  To find <strong><code>MIRGenetator*</code></strong> instances, is best is to look up into the stack for <code>OptimizeMIR</code>, or <code>CodeGenerator::generateBody</code>.  <strong><code>OptimizeMIR</code></strong> function has a <strong><code>mir</code></strong> argument, and the <strong><code>CodeGenerator::generateBody</code></strong> function has a member <strong><code>this-&gt;gen</code></strong>.</p>
+
+<pre><code>(gdb) bt</code>
+#0  0x00000000007eaad4 in js::InlineList&lt;js::jit::MBasicBlock&gt;::begin() const (this=0x33dbbc0) at …/js/src/jit/InlineList.h:280
+#1  0x00000000007cb845 in js::jit::MIRGraph::begin() (this=0x33dbbc0) at …/js/src/jit/MIRGraph.h:787
+#2  0x0000000000837d25 in js::jit::BuildPhiReverseMapping(js::jit::MIRGraph&amp;) (graph=...) at …/js/src/jit/IonAnalysis.cpp:2436
+#3  0x000000000083317f in js::jit::OptimizeMIR(js::jit::MIRGenerator*) (mir=0x33dbdf0) at …/js/src/jit/Ion.cpp:1570
+…
+(gdb) frame 3
+#3  0x000000000083317f in js::jit::OptimizeMIR(js::jit::MIRGenerator*) (mir=0x33dbdf0) at …/js/src/jit/Ion.cpp:1570
+<code>(gdb) iongraph mir</code>
+ function 0 (asm.js compilation): success; 1 passes<code>.</code>
+<code>/* open your png viewer with the result of iongraph */</code></pre>
+
+<p>This gdb instrumentation is supposed to work with debug builds, or with optimized build compiled with <code>--enable-jitspew</code> configure flag. External programs such as <code>iongraph</code>, <code>dot</code>, and your png viewer are search into the <code>PATH</code>, otherwise custom one can either be configured with environment variables (<code>GDB_IONGRAPH</code>, <code>GDB_DOT</code>, <code>GDB_PNGVIEWER</code>) before starting gdb, or with gdb parameters  (<code>set iongraph-bin &lt;path&gt;</code>, <code>set dot-bin &lt;path&gt;</code>, <code>set pngviewer-bin &lt;path&gt;</code>) within gdb.</p>
+
+<p>Enabling GDB instrumentation may require launching a JS shell executable that shares a directory with a file name "js-gdb.py". If js/src/js does not provide the "iongraph" command, try js/src/shell/js. GDB may complain that ~/.gdbinit requires modification to authorize user scripts, and if so will print out directions.</p>
+
+<h3 id="Break_on_valgrind_errors">Break on valgrind errors</h3>
+
+<p>Sometimes, a bug can be reproduced under valgrind but hardly under gdb.  One way to investigate is to let valgrind start gdb for you, the other way documented here is to let valgrind act as a gdb server which can be manipulated from the gdb remote.</p>
+
+<pre><code>$ valgrind --smc-check=all-non-file</code> --vex-iropt-register-updates=allregs-at-mem-access <code>--vgdb-error=0 ./js …</code></pre>
+
+<p>This command will tell you how to start gdb as a remote. Be aware that functions which are usually dumping some output will do it in the shell where valgrind is started and not in the shell where gdb is started. Thus functions such as <strong>js::DumpBacktrace</strong>, when called from gdb, will print their output in the shell containing valgrind.</p>
+
+<h3 id="Adding_spew_for_Compilations_Bailouts_Invalidations_(from_gdb)">Adding spew for Compilations &amp; Bailouts &amp; Invalidations (from gdb)</h3>
+
+<p>If you are in rr, and forgot to record with the spew enabled with IONFLAGS or because this is an optimized build, then you can add similar spew with extra breakpoints within gdb.  gdb has the ability to set breakpoints with commands, but a simpler / friendlier version is to use <strong>dprintf</strong>, with a location, and followed by printf-like arguments.</p>
+
+<pre>(gdb) dprintf js::jit::IonBuilder::IonBuilder, "Compiling %s:%d:%d-%d\n", info-&gt;script_-&gt;scriptSource()-&gt;filename_.mTuple.mFirstA, info-&gt;script_-&gt;lineno_, info-&gt;script_-&gt;sourceStart_, info-&gt;script_-&gt;sourceEnd_
+Dprintf 1 at 0x7fb4f6a104eb: file /home/nicolas/mozilla/contrib-push/js/src/jit/IonBuilder.cpp, line 159.
+(gdb) cond 1 inliningDepth == 0
+(gdb) dprintf js::jit::BailoutIonToBaseline, "Bailout from %s:%d:%d-%d\n", iter.script()-&gt;scriptSource()-&gt;filename_.mTuple.mFirstA, iter.script()-&gt;lineno_, iter.script()-&gt;sourceStart_, iter.script()-&gt;sourceEnd_
+Dprintf 2 at 0x7fb4f6fe43dc: js::jit::BailoutIonToBaseline. (2 locations)
+(gdb) dprintf Ion.cpp:3196, "Invalidate %s:%d:%d-%d\n", co-&gt;script_-&gt;scriptSource()-&gt;filename_.mTuple.mFirstA, co-&gt;script_-&gt;lineno_, co-&gt;script_-&gt;sourceStart_, co-&gt;script_-&gt;sourceEnd_
+Dprintf 3 at 0x7fb4f6a0b62a: file /home/nicolas/mozilla/contrib-push/js/src/jit/Ion.cpp, line 3196.
+<code>(gdb) continue</code>
+Compiling self-hosted:650:20470-21501
+Bailout from self-hosted:20:403-500
+Invalidate self-hosted:20:403-500
+</pre>
+
+<p>Note: the line 3196, listed above, corresponds to the location of the <a href="http://searchfox.org/mozilla-central/rev/f6c298b36db67a7109079c0dd7755f329c1d58e2/js/src/jit/Ion.cpp#3196">Jit spew inside jit::Invalidate function</a>.</p>
+
+<h2 id="ハッキングのヒント">ハッキングのヒント</h2>
+
+<h3 id="Benchmarking_(shell)">Benchmarking (shell)</h3>
+
+<p><a href="http://arewefastyet.com">AreWeFastYet.com</a> display the benchmark results of the JavaScript shell, and browser for B2G.  These benchmarks are publicly recognized benchmarks suggested by other companies and are used as a metric to evaluate how fast JavaScript engines.  This tool is maintained by the JavaScript Team, to find regressions and to compare SpiderMonkey with other JavaScript engines when possible.  To run these benchmarks localy, you can clone <a href="https://github.com/haytjes/arewefastyet.git">AreWeFastYet sources</a> and look inside the <em>benchmarks</em> directory to run individual benchmarks with your JS shell.</p>
+
+<h3 id="Using_the_Gecko_Profiler_(browser_xpcshell)">Using the Gecko Profiler (browser / xpcshell)</h3>
+
+<p>see the section dedicated to <a href="/en-US/docs/Performance/Profiling_with_the_Built-in_Profiler" title="/en-US/docs/Performance/Profiling_with_the_Built-in_Profiler">profiling with the gecko profiler</a>. This method of profiling has the advantage of mixing the JavaScript stack with the C++ stack, which is useful to analyze library function issues.  One tip is to start looking at a script with an inverted JS stack to locate the most expensive JS function, then to focus on the frame of this JS function, and to remove the inverted stack and look at C++ part of this function to determine from where the cost is coming from.</p>
+
+<h3 id="Using_the_JIT_Inspector_(browser)">Using the JIT Inspector (browser)</h3>
+
+<p>Install the <a href="https://addons.mozilla.org/en-US/firefox/addon/jit-inspector/" title="https://addons.mozilla.org/en-US/firefox/addon/jit-inspector/">JIT Inspector</a> addon in your browser. This addon provides estimated cost of IonMonkey , the Baseline compiler, and the interpreter. In addition it provides a clean way to analyze if instructions are inferred as being monomorphic or polymorphic in addition to the number of time each category of type has been observed.</p>
+
+<h3 id="Using_the_TraceLogger_(JS_shell_browser)">Using the TraceLogger (JS shell / browser)</h3>
+
+<p>Create graphs showing time spent in which engine and which function like <a href="https://raw.githubusercontent.com/h4writer/tracelogger/master/screenshot.png" title="http://alasal.be/ionmonkey/index.php?subject=octane-richards-82d28bdf9317">this</a>.</p>
+
+<p>Whenever running a testcase the file "tl-data.json" and several "tl-*" files get created in the "/tmp" directory. (Per proces a "tl-data-*PID*.json" file and per thread a "tl-tree.*PID*.*ID*.tl", "tl-event.*PID*.*ID*.tl" and "tl-dict.*PID*.*ID*.json" file). These files contain all information to create a tracelogger graph. On <a href="https://github.com/h4writer/tracelogger">https://github.com/h4writer/tracelogger</a> you can find the instructions to create the graph (Tools V2 &gt; 1. Creating a tracelogging graph).</p>
+
+<p>Note 1: when you are doing this from "file:///" you will probably get a security warning in the console. This is because firefox doesn't allow loading files from the harddisk using httprequest, even when the file loading the file is on the harddisk. There are two solutions. One is to create a localhost server and serving the files there. The simplest way to do this is to run <code>python -m SimpleHTTPServer</code> from within the above directory. The other being disable this check in "about:config", by temporarily switching "security.fileuri.strict_origin_policy" to false</p>
+
+<p>Note 2: The files can be very big and take a long time to load in the browser. Therefore it might be good to reduce the logged file. This will remove entries that took only a minor time (=entries that will only show up with les than 1px). This can be done with the reduce.py script in  <a href="https://github.com/haytjes/tracelogger/tree/master/tools_v2" title="https://github.com/haytjes/tracelogger">https://github.com/haytjes/tracelogger/tree/master/tools_v2</a>. You need to download "engine.js", "reduce.py", "reduce.js", "reduce-tree.js" and "reduce-corrections.js". Running this tool is a matter of running "python reduce.py JS_SHELL /tmp/tl-data.json tl-reduced". Where JS_SHELL is a real shell.</p>
+
+<h3 id="Using_callgrind_(JS_shell)">Using callgrind (JS shell)</h3>
+
+<p>As SpiderMonkey just-in-time compiler are rewriting the executed program, valgrind should be informed from the command line by adding <strong>--smc-check=all-non-file</strong>.</p>
+
+<pre class="eval"><code>$ valgrind --tool=callgrind --callgrind-out-file=bench.clg \
+ --smc-check=all-non-file</code> --vex-iropt-register-updates=allregs-at-mem-access<code> ./js ./run.js
+</code></pre>
+
+<p>The output file can then be use with <strong>kcachegrind</strong> which provides a graphical view of the call graph.</p>
+
+<h3 id="Using_IonMonkey_spew_(JS_shell)">Using IonMonkey spew (JS shell)</h3>
+
+<p>IonMonkey spew is extremely verbose (not as much as the INFER spew), but you can filter it to focus on the list of compiled scripts or channels, IonMonkey spew channels can be selected with the IONFLAGS environment variable, and compilation spew can be filtered with IONFILTER.</p>
+
+<p>IONFLAGS contains the names of each channel separated by commas. The <strong>logs</strong> channel produces 2 files in <em>/tmp/</em>, one (<em>/tmp/ion.json</em>) made to be used with <a class="external text" href="https://github.com/sstangl/iongraph" rel="nofollow">iongraph</a> (made by Sean Stangl) and another one (<em>/tmp/ion.cfg</em>) made to be used with <a class="external text" href="http://java.net/projects/c1visualizer/" rel="nofollow">c1visualizer</a>. These tools will show the MIR &amp; LIR steps done by IonMonkey during the compilation. If you would like to use <a class="external text" href="https://github.com/sstangl/iongraph" rel="nofollow" style="line-height: 1.572;">iongraph</a>, you must install <a href="http://www.graphviz.org/Download..php" title="http://www.graphviz.org/Download..php">Graphviz</a>.</p>
+
+<p>Compilation logs and spew can be filtered with the IONFILTER environment variable which contains locations as output in other spew channels. Multiple locations can be separated with comma as a separator of locations.</p>
+
+<pre class="eval"><code>$ IONFILTER=pdfjs.js:16934 IONFLAGS=logs,scripts,osi,bailouts ./js --ion-offthread-compile=off ./run.js 2&gt;&amp;1 | less</code></pre>
+
+<p>The <strong>bailouts</strong> channel is likely to be the first thing you should focus on, because this means that something does not stay in IonMonkey and fallback to the interpreter. This channel output locations (as returned by the<strong> id()</strong> function of both instructions) of the latest MIR and the latest LIR phases. These locations should correspond to phases of the <strong>logs</strong> and a filter can be used to remove uninteresting functions.</p>
+
+<h3 id="Using_the_ARM_simulator">Using the ARM simulator</h3>
+
+<p>The ARM simulator can be used to test the ARM JIT backend on x86/x64 hardware. An ARM simulator build is an x86 shell (or browser) with the ARM JIT backend. Instead of entering JIT code, it runs it in a simulator (interpreter) for ARM code. To use the simulator, compile an x86 shell (32-bit, x64 doesn't work as we use a different Value format there), and pass --enable-arm-simulator to configure. For instance, on a 64-bit Linux host you can use the following configure command to get an ARM simulator build:</p>
+
+<pre class="line-numbers language-html"><code class="language-html">AR=ar CC="gcc -m32" CXX="g++ -m32" ../configure --target=i686-pc-linux --enable-debug --disable-optimize --enable-threadsafe --enable-simulator=arm</code></pre>
+
+<p>Or on OS X:</p>
+
+<pre> $ AR=ar CC="clang -m32" CXX="clang++ -m32" ../configure --target=i686-apple-darwin10.0.0 --enable-debug --disable-optimize --enable-threadsafe --enable-arm-simulator</pre>
+
+<p>An --enable-debug --enable-optimize build is recommended if you want to run jit-tests or jstests.</p>
+
+<h4 id="Use_the_VIXL_Debugger_in_the_simulator_(arm64)">Use the VIXL Debugger in the simulator (arm64)</h4>
+
+<p>Set a breakpoint (see the comments above about <code>masm.breakpoint()</code>) and run with the environment variable <code>USE_DEBUGGER=1</code>. This will then drop you into a simple debugger provided with VIXL, the ARM simulator technology used for arm64 simulation.</p>
+
+<h4 id="Use_the_Simulator_Debugger_for_arm32">Use the Simulator Debugger for arm32</h4>
+
+<p>The same instructions for arm64 in the preceeding section apply, but the environment variable differs: Use <code>ARM_SIM_DEBUGGER=1</code>.</p>
+
+<h4 id="Building_the_browser_with_the_ARM_simulator">Building the browser with the ARM simulator</h4>
+
+<p>You can also build the entire browser with the ARM simulator backend, for instance to reproduce browser-only JS failures on ARM. Make sure to build a browser for x86 (32-bits) and add this option to your mozconfig file:</p>
+
+<pre>ac_add_options --enable-arm-simulator
+</pre>
+
+<p>If you are under an Ubuntu or Debian 64-bits distribution and you want to build a 32-bits browser, it might be hard to find the relevant 32-bits dependencies. You can use <a href="https://github.com/padenot/fx-32-on-64.sh">padenot's scripts</a> which will magically setup a chrooted 32-bits environment and do All The Things (c) for you (you just need to modify the mozconfig file).</p>
+
+<h3 id="Using_rr_on_a_test">Using rr on a test</h3>
+
+<p>Get the command line for your test run using -s:</p>
+
+<pre>./jit_test.py -s $JS_SHELL saved-stacks/async.js</pre>
+
+<p>Insert 'rr' before the shell invocation:</p>
+
+<pre><code>rr $JS_SHELL -f $JS_SRC/jit-test/lib/prolog.js --js-cache $JS_SRC/jit-test/.js-cache -e "const platform='linux2'; const libdir='$JS_SRC/jit-test/lib/'; const scriptdir='$JS_SRC/jit-test/tests/saved-stacks/'" -f $JS_SRC/jit-test/tests/saved-stacks/async.js</code></pre>
+
+<p>(note that the above is an example; simply setting JS_SHELL and JS_SRC will not work). Or if this is an intermittent, run it in a loop capturing an rr log for every one until it fails:</p>
+
+<pre><code>n=1; while rr ...same.as.above...; do echo passed $n; n=$(( $n + 1 )); done</code></pre>
+
+<p>Wait until it hits a failure. Now you can run <code>rr replay</code> to replay that last (failed) run under gdb.</p>
+
+<h4 id="rr_with_reftest">rr with reftest</h4>
+
+<p>To break on the write of a differing pixel:</p>
+
+<ol>
+ <li>Find the X/Y of a pixel that differs</li>
+ <li>Use 'run Z' where Z is the mark in the log for TEST-START. For example in '[rr 28496 607198]REFTEST TEST-START | file:///home/bgirard/mozilla-central/tree/image/test/reftest/bmp/bmpsuite/b/wrapper.html?badpalettesize.bmp' Z would be 607198.</li>
+ <li>break 'mozilla::dom::CanvasRenderingContext2D::DrawWindow(nsGlobalWindow&amp;, double, double, double, double, nsAString_internal const&amp;, unsigned int, mozilla::ErrorResult&amp;)'</li>
+ <li>cont</li>
+ <li>break 'PresShell::RenderDocument(nsRect const&amp;, unsigned int, unsigned int, gfxContext*)'</li>
+ <li>set print object on</li>
+ <li>set $x = &lt;YOUR X VALUE&gt;</li>
+ <li>set $y = &lt;YOUR Y VALUE&gt;</li>
+ <li>print &amp;((cairo_image_surface_t*)aThebesContext-&gt;mDT.mRawPtr-&gt;mSurface).data[$y * ((cairo_image_surface_t*)aThebesContext-&gt;mDT.mRawPtr-&gt;mSurface).stride + $x * ((cairo_image_surface_t*)aThebesContext-&gt;mDT.mRawPtr-&gt;mSurface).depth / 8]</li>
+ <li>
+ <p>watch *(char*)&lt;ADDRESS OF PREVIOUS COMMAND&gt; (NOTE: If you set a watch on the previous expression gdb will watch the expression and run out of watchpoint)</p>
+ </li>
+</ol>
+
+<h4 id="rr_with_emacs">rr with emacs</h4>
+
+<p>Within emacs, do <code>M-x gud-gdb</code> and replace the command line with <code>rr replay</code>. When gdb comes up, enter</p>
+
+<pre><code>set annot 1</code></pre>
+
+<p>to get it to emit file location information so that emacs will pop up the corresponding source. Note that if you <code>reverse-continue</code> over a SIGSEGV and you're using the standard .gdbinit that sets a catchpoint for that signal, you'll get an additional stop at the catchpoint. Just <code>reverse-continue</code> again to continue to your breakpoints or whatever.</p>
+
+<h3 id="Hack_Replacing_one_instruction">[Hack] Replacing one instruction</h3>
+
+<p>To replace one specific instruction, you can use in visit function of each instruction the JSScript <strong>filename</strong> in <strong>lineno</strong> fields as well as the <strong>id()</strong> of the LIR / MIR instructions.  The JSScript can be obtained from <strong>info().script()</strong>.</p>
+
+<pre class="eval"><code>bool
+CodeGeneratorX86Shared::visitGuardShape(LGuardShape *guard)
+{
+ if (info().script()-&gt;lineno == 16934 &amp;&amp; guard-&gt;id() == 522) {
+ [… another impl only for this one …]
+ return true;
+ }
+ [… old impl …]
+</code></pre>
+
+<h3 id="Hack_Spewing_all_compiled_code">[Hack] Spewing all compiled code</h3>
+
+<p>I usually just add this to the apropriate executableCopy.</p>
+
+<pre><span class="quote"> if (getenv("INST_DUMP")) {
+ char buf[4096];
+ sprintf(buf, "gdb /proc/%d/exe %d -batch -ex 'set pagination off' -ex 'set arm force-mode arm' -ex 'x/%di %p' -ex 'set arm force-mode auto'", getpid(), getpid(), m_buffer.size() / 4, buffer);
+ system(buf);
+ }</span>
+
+</pre>
+
+<p>If you aren't running on arm, you should omit the -ex 'set arm force-mode arm' and -ex 'set arm force-mode auto'.  And you should change the size()/4 to be something more apropriate for your architecture.</p>
+
+<h3 id="Benchmarking_with_sub-milliseconds_(JS_shell)">Benchmarking with sub-milliseconds (JS shell)</h3>
+
+<p>In the shell we have 2 simple ways to benchmark a script, we can either use the <strong>-b</strong> shell option (<strong>--print-timing</strong>) which will evaluate a script given on the command line without any need to instrument the benchmark and print an extra line showing the run-time of the script.  The other way is to wrap the section that you want to measure with the <strong>dateNow()</strong> function call which returns the number of milliseconds, with a decimal part for sub-milliseconds.</p>
+
+<pre class="eval">js&gt; dateNow() - dateNow()
+-0.0009765625<code>
+</code></pre>
+
+<h3 id="Benchmarking_with_sub-milliseconds_(browser)">Benchmarking with sub-milliseconds (browser)</h3>
+
+<p>In a simillar way as <strong>dateNow()</strong> in the JS shell, you can use <strong>performance.now()</strong> in the JavaScript code of a page.</p>
+
+<h3 id="Dumping_the_JavaScript_heap">Dumping the JavaScript heap</h3>
+
+<p>From the shell, you can call the dumpHeap before Firefox  function to dump out all GC things (reachable and unreachable) that are present in the heap. By default the function writes to stdout, but a filename can be specified as an argument.</p>
+
+<p>Example output might look as follows:</p>
+
+<pre class="eval"><code>0x1234abcd B global object
+</code>==========
+# zone 0x56789123
+# compartment http://gmail.com [in zone 0x56789123]
+# compartment http://gmail.com/iframe [in zone 0x56789123]
+# arena<code> allockind=3 size=64
+0x1234abcd B object
+&gt; 0x1234abcd B prop1
+&gt; 0xabcd1234 W prop2
+0xabcd1234 W object
+&gt; 0xdeadbeef B prop3
+# arena allockind=5 size=72
+0xdeadbeef W object
+&gt; 0xabcd1234 W prop4 </code></pre>
+
+<p>The output is textual. The first section of the file contains a list of roots, one per line. Each root has the form "0xabcd1234 &lt;color&gt; &lt;description&gt;", where &lt;color&gt; is the color of the given GC thing (B for black, G for gray, W for white) and &lt;description&gt; is a string. The list of roots ends with a line containing "==========".</p>
+
+<p>After the roots come a series of zones. A zone starts with several "comment lines" that start with hashes. The first comment declares the zone. It is followed by lines listing each compartment within the zone. After all the compartments come arenas, which is where the GC things are actually stored. Each arena is followed by all the GC things in the arena. A GC thing starts with a line giving its address, its color, and the thing kind (object, function, whatever). After this come a list of addresses that the GC thing points to, each one starting with "&gt;".</p>
+
+<p>It's also possible to dump the JavaScript heap from C++ code (or from gdb) using the js::DumpHeap function. It is part of jsfriendapi.h and it is available in release builds.</p>
+
+<h3 id="Inspecting_MIR_objects_within_a_debugger">Inspecting MIR objects within a debugger</h3>
+
+<p>For MIRGraph, MBasicBlock, and MDefinition and its subclasses (MInstruction, MConstant, etc.), call the dump member function.</p>
+
+<pre> (gdb) call graph-&gt;dump()
+
+ (gdb) call block-&gt;dump()
+
+ (gdb) call def-&gt;dump()
+
+</pre>
+
+<h3 id="Benchmarking_without_a_Phone">Benchmarking without a Phone</h3>
+
+<p>If you do not have a mobile device or prefer to test on your desktop first, you will need to downgrade your computer such as it is able to run programs as fast as-if they were running on a phone.</p>
+
+<p>On Linux, you can manage the resources available to one program by using cgroup, and to do you can install <strong>libcgroup</strong> which provides some convenient tools such as <strong>cgexec</strong> to wrap the program that you want to benchmark.</p>
+
+<p>The following list of commands is used to create 3 control groups. The top-level control group is just to group the <strong>mask</strong> and the <strong>negate-mask</strong>. The <strong>mask</strong> control group is used to run the program that we want to benchmark. The <strong>negate-mask</strong> control group is used to reserve resources which might be used by the other program if not reserved.</p>
+
+<pre> $ sudo cgcreate -a nicolas:users -t nicolas:users -g cpuset,cpu,memory:/benchmarks
+ $ cgcreate -a nicolas:users -t nicolas:users -g cpuset,cpu,memory:/benchmarks/mask
+ $ cgcreate -a nicolas:users -t nicolas:users -g cpuset,cpu,memory:/benchmarks/negate-mask
+</pre>
+
+<p>Then we restrict programs of these groups to the first core of the CPU. This is a list of cpu, which means that we can allocate 2 cores by doing <strong>0-1</strong> instead of <strong>0</strong>.</p>
+
+<pre> $ cgset -r cpuset.cpus=0 /benchmarks
+ $ cgset -r cpuset.cpus=0 /benchmarks/mask
+ $ cgset -r cpuset.cpus=0 /benchmarks/negate-mask
+</pre>
+
+<p>Then we restrict programs of these groups to the first memory node. Most of the time you will only have one, otherwise you should read what is the best setting to set here. If this is not set, you will have some error when you will try to write a pid in <strong>/sys/fs/cgroup/cpuset/benchmarks/mask/tasks</strong> while running <strong>cgexec</strong>.</p>
+
+<pre> $ cgset -r cpuset.mems=0 /benchmarks
+ $ cgset -r cpuset.mems=0 /benchmarks/mask
+ $ cgset -r cpuset.mems=0 /benchmarks/negate-mask
+</pre>
+
+<p>Then we limit the performance of the CPU, as a proportion such as the result approximately correspond to what you might have if you were running on a phone. For example an Unagi is approximately 40 times slower than my computer. So I allocate <strong>1/40</strong> for the mask, and <strong>39/40</strong> for the negate-mask.</p>
+
+<pre> $ cgset -r cpu.shares=1 /benchmarks/mask
+ $ cgset -r cpu.shares=39 /benchmarks/negate-mask
+</pre>
+
+<p>Then we limit the memory available, to what would be available on the phone. For example an Unagi you want to limit this to 512 MB. As there is no swap, on this device, we set the <strong>memsw</strong> (Memory+Swap) to the same value.</p>
+
+<pre> $ cgset -r memory.limit_in_bytes=$((512*1024*1024)) /benchmarks/mask
+ $ cgset -r memory.memsw.limit_in_bytes=$((512*1024*1024)) /benchmarks/mask
+</pre>
+
+<p>And finally, we run the program that we want to benchmark after the one which is consuming resources. In case of the JS Shell we might also want to set the amount of memory available to change the GC settings as if we were running on a Firefox OS device.</p>
+
+<pre> $ cgexec -g 'cpuset,cpu,memory:/benchmarks/negate-mask' yes &gt; /dev/null &amp;
+ $ cgexec -g 'cpuset,cpu,memory:/benchmarks/mask' ./js --available-memory=512 ./run.js
+</pre>
+
+<h3 id="How_to_debug_oomTest()_failures">How to debug oomTest() failures</h3>
+
+<p>The oomTest() function executes a piece of code many times, simulating an OOM failure at each successive allocation it makes.  It's designed to highlight incorrect OOM handling and this may show up as a crash or assertion failure at some later point.</p>
+
+<p>When debugging such a crash the most useful thing is to locate the last simulated alloction failure, as it's usually this that has caused the subsequent crash.</p>
+
+<p>My workflow for doing this is as follows:</p>
+
+<ol>
+ <li>Build a version of the engine with <code>--enable-debug</code> and <code>--enable-oom-breakpoint</code> configure flags.</li>
+ <li>Set the environment variable <code>OOM_VERBOSE=1</code> and reproduce the failure.  This will print an allocation count at each simulated failure.  Note the count of the last allocation.</li>
+ <li>Run the engine under a debugger and set a breakpoint on the function <code>js_failedAllocBreakpoint</code>.</li>
+ <li>Run the program and continue the necessary number of times until you reach the final allocation.
+ <ul>
+ <li>e.g. in lldb, if the allocation failure number shown is 1500, run `continue -i 1498` (subtracted 2 because we've already hit it once and don't want to skip the last). Drop "-i" for gdb.</li>
+ </ul>
+ </li>
+ <li>Dump a backtrace.  This should show you the point at which the OOM is incorrectly handled, which will be a few frames up from the breakpoint.</li>
+</ol>
+
+<p>Note: if you are on linux it may be simpler to use rr.</p>
+
+<p>Some guidelines for handling OOM that lead to failures when they are not followed:</p>
+
+<ol>
+ <li>Check for allocation failure!
+ <ul>
+ <li>Fallible allocations should always must be checked and handled, at a minimum by returning a status indicating failure to the caller.</li>
+ </ul>
+ </li>
+ <li>Report OOM to the context if you have one
+ <ul>
+ <li>If a function has a <code>JSContext*</code> argument, usually it should call <code>js::ReportOutOfMemory(cx)</code> on allocation failure to report this to the context.</li>
+ </ul>
+ </li>
+ <li>Sometimes it's OK to ignore OOM
+ <ul>
+ <li>For example if you are performing a speculative optimisation you might abandon it and continue anyway.  But in this case you may have to call cx-&gt;recoverFromOutOfMemory() if something further down the stack has already reported the failure.</li>
+ </ul>
+ </li>
+</ol>
+
+<h3 id="Debugging_GC_markingrooting">Debugging GC marking/rooting</h3>
+
+<p>The <strong>js::debug</strong> namespace contains some functions that are useful for watching mark bits for an individual JSObject* (or any Cell*). <strong>js/src/gc/Heap.h</strong> contains a comment describing an example usage. Reproduced here:</p>
+
+<pre>// Sample usage from gdb:
+//
+// (gdb) p $word = js::debug::GetMarkWordAddress(obj)
+// $1 = (uintptr_t *) 0x7fa56d5fe360
+// (gdb) p/x $mask = js::debug::GetMarkMask(obj, js::gc::GRAY)
+// $2 = 0x200000000
+// (gdb) watch *$word
+// Hardware watchpoint 7: *$word
+// (gdb) cond 7 *$word &amp; $mask
+// (gdb) cont
+//
+// Note that this is *not* a watchpoint on a single bit. It is a watchpoint on
+// the whole word, which will trigger whenever the word changes and the
+// selected bit is set after the change.
+//
+// So if the bit changing is the desired one, this is exactly what you want.
+// But if a different bit changes (either set or cleared), you may still stop
+// execution if the $mask bit happened to already be set. gdb does not expose
+// enough information to restrict the watchpoint to just a single bit.
+</pre>
+
+<p>Most of the time, you will want <strong>js::gc::BLACK</strong> (or you can just use 0) for the 2nd param to <strong>js::debug::GetMarkMask</strong>.</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/how_to_embed_the_javascript_engine/index.html b/files/ja/mozilla/projects/spidermonkey/how_to_embed_the_javascript_engine/index.html
new file mode 100644
index 0000000000..7b623d6cbd
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/how_to_embed_the_javascript_engine/index.html
@@ -0,0 +1,474 @@
+---
+title: JavaScript エンジンを埋め込む方法
+slug: Mozilla/Projects/SpiderMonkey/How_to_embed_the_JavaScript_engine
+tags:
+ - Embedding Mozilla
+ - JavaScript
+ - SpiderMonkey
+ - チュートリアル
+translation_of: Mozilla/Projects/SpiderMonkey/How_to_embed_the_JavaScript_engine
+---
+<div>{{SpiderMonkeySidebar("General")}}</div>
+
+<p>特により良いコードの例として <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide" title="En/SpiderMonkey/JSAPI_User_Guide">JSAPI User Guide</a> も参照して下さい。</p>
+
+<h2 id="A_Bare_Bones_Tutorial" name="A_Bare_Bones_Tutorial">チュートリアル要点</h2>
+
+<h3 id="Hello_World_サンプル組み込みアプリケーション">Hello World サンプル組み込みアプリケーション</h3>
+
+<p>次のコードは、SpiderMonkey を埋め込んで単純な JavaScript スクリプトを実行する方法を示す非常に単純なアプリケーションです。下のコードのサンプルをビルドして実行するための手順を参照してください。</p>
+
+<p>コードは SpiderMonkey のバージョンごとに異なりますので、SpiderMonkey の正しいバージョンを選択してください。</p>
+
+<h4 id="SpiderMonkey_24">SpiderMonkey 24</h4>
+
+<pre class="brush: cpp line-numbers language-cpp"><code class="language-cpp"><span class="comment token">// following code might be needed in some case</span>
+<span class="comment token">// #define __STDC_LIMIT_MACROS</span>
+<span class="comment token">// #include &lt;stdint.h&gt;</span>
+#include <span class="string token">"jsapi.h"</span>
+
+<span class="comment token">/* The class of the global object. */</span>
+static JSClass global_class <span class="operator token">=</span> <span class="punctuation token">{</span>
+ <span class="string token">"global"</span><span class="punctuation token">,</span>
+ JSCLASS_GLOBAL_FLAGS<span class="punctuation token">,</span>
+ JS_PropertyStub<span class="punctuation token">,</span>
+ JS_DeletePropertyStub<span class="punctuation token">,</span>
+ JS_PropertyStub<span class="punctuation token">,</span>
+ JS_StrictPropertyStub<span class="punctuation token">,</span>
+ JS_EnumerateStub<span class="punctuation token">,</span>
+ JS_ResolveStub<span class="punctuation token">,</span>
+ JS_ConvertStub<span class="punctuation token">,</span>
+<span class="punctuation token">}</span><span class="punctuation token">;</span>
+
+int <span class="function token">main</span><span class="punctuation token">(</span>int argc<span class="punctuation token">,</span> const char <span class="operator token">*</span>argv<span class="punctuation token">[</span><span class="punctuation token">]</span><span class="punctuation token">)</span>
+<span class="punctuation token">{</span>
+ JSRuntime <span class="operator token">*</span>rt <span class="operator token">=</span> <span class="function token">JS_NewRuntime</span><span class="punctuation token">(</span><span class="number token">8</span>L <span class="operator token">*</span> <span class="number token">1024</span> <span class="operator token">*</span> <span class="number token">1024</span><span class="punctuation token">,</span> JS_USE_HELPER_THREADS<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>rt<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+
+ JSContext <span class="operator token">*</span>cx <span class="operator token">=</span> <span class="function token">JS_NewContext</span><span class="punctuation token">(</span>rt<span class="punctuation token">,</span> <span class="number token">8192</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>cx<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+
+ <span class="punctuation token">{</span> <span class="comment token">// Scope for our various stack objects (JSAutoRequest, RootedObject), so they all go</span>
+ <span class="comment token">// out of scope before we JS_DestroyContext.</span>
+
+ JSAutoRequest <span class="function token">ar</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// In practice, you would want to exit this any</span>
+ <span class="comment token">// time you're spinning the event loop</span>
+
+ JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedObject <span class="function token">global</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="function token">JS_NewGlobalObject</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="operator token">&amp;</span>global_class<span class="punctuation token">,</span> nullptr<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><span class="operator token">!</span>global<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+
+ JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedValue <span class="function token">rval</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+ <span class="punctuation token">{</span> <span class="comment token">// Scope for JSAutoCompartment</span>
+ JSAutoCompartment <span class="function token">ac</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="function token">JS_InitStandardClasses</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+ const char <span class="operator token">*</span>script <span class="operator token">=</span> <span class="string token">"'hello'+'world, it is '+new Date()"</span><span class="punctuation token">;</span>
+ const char <span class="operator token">*</span>filename <span class="operator token">=</span> <span class="string token">"noname"</span><span class="punctuation token">;</span>
+ int lineno <span class="operator token">=</span> <span class="number token">1</span><span class="punctuation token">;</span>
+ bool ok <span class="operator token">=</span> <span class="function token">JS_EvaluateScript</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">,</span> script<span class="punctuation token">,</span> <span class="function token">strlen</span><span class="punctuation token">(</span>script<span class="punctuation token">)</span><span class="punctuation token">,</span> filename<span class="punctuation token">,</span> lineno<span class="punctuation token">,</span> rval<span class="punctuation token">.</span><span class="function token">address</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">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>ok<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+
+ JSString <span class="operator token">*</span>str <span class="operator token">=</span> rval<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">printf</span><span class="punctuation token">(</span><span class="string token">"%s\n"</span><span class="punctuation token">,</span> <span class="function token">JS_EncodeString</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> str<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+
+ <span class="function token">JS_DestroyContext</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="function token">JS_DestroyRuntime</span><span class="punctuation token">(</span>rt<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="function token">JS_ShutDown</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">return</span> <span class="number token">0</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span></code></pre>
+
+<h4 id="SpiderMonkey_31">SpiderMonkey 31</h4>
+
+<pre class="brush: cpp line-numbers language-cpp"><code class="language-cpp"><span class="comment token">// following code might be needed in some case</span>
+<span class="comment token">// #define __STDC_LIMIT_MACROS</span>
+<span class="comment token">// #include &lt;stdint.h&gt;</span>
+#include <span class="string token">"jsapi.h"</span>
+
+<span class="comment token">/* The class of the global object. */</span>
+static JSClass global_class <span class="operator token">=</span> <span class="punctuation token">{</span>
+ <span class="string token">"global"</span><span class="punctuation token">,</span>
+ JSCLASS_GLOBAL_FLAGS<span class="punctuation token">,</span>
+ JS_PropertyStub<span class="punctuation token">,</span>
+ JS_DeletePropertyStub<span class="punctuation token">,</span>
+ JS_PropertyStub<span class="punctuation token">,</span>
+ JS_StrictPropertyStub<span class="punctuation token">,</span>
+ JS_EnumerateStub<span class="punctuation token">,</span>
+ JS_ResolveStub<span class="punctuation token">,</span>
+ JS_ConvertStub<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ JS_GlobalObjectTraceHook
+<span class="punctuation token">}</span><span class="punctuation token">;</span>
+
+int <span class="function token">main</span><span class="punctuation token">(</span>int argc<span class="punctuation token">,</span> const char <span class="operator token">*</span>argv<span class="punctuation token">[</span><span class="punctuation token">]</span><span class="punctuation token">)</span>
+<span class="punctuation token">{</span>
+ <span class="function token">JS_Init</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+ JSRuntime <span class="operator token">*</span>rt <span class="operator token">=</span> <span class="function token">JS_NewRuntime</span><span class="punctuation token">(</span><span class="number token">8</span>L <span class="operator token">*</span> <span class="number token">1024</span> <span class="operator token">*</span> <span class="number token">1024</span><span class="punctuation token">,</span> JS_USE_HELPER_THREADS<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>rt<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+
+ JSContext <span class="operator token">*</span>cx <span class="operator token">=</span> <span class="function token">JS_NewContext</span><span class="punctuation token">(</span>rt<span class="punctuation token">,</span> <span class="number token">8192</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>cx<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+
+ <span class="punctuation token">{</span> <span class="comment token">// Scope for our various stack objects (JSAutoRequest, RootedObject), so they all go</span>
+ <span class="comment token">// out of scope before we JS_DestroyContext.</span>
+
+ JSAutoRequest <span class="function token">ar</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// In practice, you would want to exit this any</span>
+ <span class="comment token">// time you're spinning the event loop</span>
+
+ JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedObject <span class="function token">global</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="function token">JS_NewGlobalObject</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="operator token">&amp;</span>global_class<span class="punctuation token">,</span> nullptr<span class="punctuation token">,</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span>FireOnNewGlobalHook<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><span class="operator token">!</span>global<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+
+ JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedValue <span class="function token">rval</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+ <span class="punctuation token">{</span> <span class="comment token">// Scope for JSAutoCompartment</span>
+ JSAutoCompartment <span class="function token">ac</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="function token">JS_InitStandardClasses</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+ const char <span class="operator token">*</span>script <span class="operator token">=</span> <span class="string token">"'hello'+'world, it is '+new Date()"</span><span class="punctuation token">;</span>
+ const char <span class="operator token">*</span>filename <span class="operator token">=</span> <span class="string token">"noname"</span><span class="punctuation token">;</span>
+ int lineno <span class="operator token">=</span> <span class="number token">1</span><span class="punctuation token">;</span>
+ bool ok <span class="operator token">=</span> <span class="function token">JS_EvaluateScript</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">,</span> script<span class="punctuation token">,</span> <span class="function token">strlen</span><span class="punctuation token">(</span>script<span class="punctuation token">)</span><span class="punctuation token">,</span> filename<span class="punctuation token">,</span> lineno<span class="punctuation token">,</span> <span class="operator token">&amp;</span>rval<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>ok<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+
+ JSString <span class="operator token">*</span>str <span class="operator token">=</span> rval<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">printf</span><span class="punctuation token">(</span><span class="string token">"%s\n"</span><span class="punctuation token">,</span> <span class="function token">JS_EncodeString</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> str<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+
+ <span class="function token">JS_DestroyContext</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="function token">JS_DestroyRuntime</span><span class="punctuation token">(</span>rt<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="function token">JS_ShutDown</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">return</span> <span class="number token">0</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span></code></pre>
+
+<h4 id="SpiderMonkey_38">SpiderMonkey 38</h4>
+
+<pre class="brush: cpp line-numbers language-cpp"><code class="language-cpp"><span class="comment token">// following code might be needed in some case</span>
+<span class="comment token">// #define __STDC_LIMIT_MACROS</span>
+<span class="comment token">// #include &lt;stdint.h&gt;</span>
+#include <span class="string token">"jsapi.h"</span>
+
+<span class="comment token">/* The class of the global object. */</span>
+static JSClass global_class <span class="operator token">=</span> <span class="punctuation token">{</span>
+ <span class="string token">"global"</span><span class="punctuation token">,</span>
+ JSCLASS_GLOBAL_FLAGS<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ JS_GlobalObjectTraceHook
+<span class="punctuation token">}</span><span class="punctuation token">;</span>
+
+int <span class="function token">main</span><span class="punctuation token">(</span>int argc<span class="punctuation token">,</span> const char <span class="operator token">*</span>argv<span class="punctuation token">[</span><span class="punctuation token">]</span><span class="punctuation token">)</span>
+<span class="punctuation token">{</span>
+ <span class="function token">JS_Init</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+ JSRuntime <span class="operator token">*</span>rt <span class="operator token">=</span> <span class="function token">JS_NewRuntime</span><span class="punctuation token">(</span><span class="number token">8</span>L <span class="operator token">*</span> <span class="number token">1024</span> <span class="operator token">*</span> <span class="number token">1024</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>rt<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+
+ JSContext <span class="operator token">*</span>cx <span class="operator token">=</span> <span class="function token">JS_NewContext</span><span class="punctuation token">(</span>rt<span class="punctuation token">,</span> <span class="number token">8192</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>cx<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+
+ <span class="punctuation token">{</span> <span class="comment token">// Scope for our various stack objects (JSAutoRequest, RootedObject), so they all go</span>
+ <span class="comment token">// out of scope before we JS_DestroyContext.</span>
+
+ JSAutoRequest <span class="function token">ar</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// In practice, you would want to exit this any</span>
+ <span class="comment token">// time you're spinning the event loop</span>
+
+ JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedObject <span class="function token">global</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="function token">JS_NewGlobalObject</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="operator token">&amp;</span>global_class<span class="punctuation token">,</span> nullptr<span class="punctuation token">,</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span>FireOnNewGlobalHook<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><span class="operator token">!</span>global<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+
+ JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedValue <span class="function token">rval</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+ <span class="punctuation token">{</span> <span class="comment token">// Scope for JSAutoCompartment</span>
+ JSAutoCompartment <span class="function token">ac</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="function token">JS_InitStandardClasses</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+ const char <span class="operator token">*</span>script <span class="operator token">=</span> <span class="string token">"'hello'+'world, it is '+new Date()"</span><span class="punctuation token">;</span>
+ const char <span class="operator token">*</span>filename <span class="operator token">=</span> <span class="string token">"noname"</span><span class="punctuation token">;</span>
+ int lineno <span class="operator token">=</span> <span class="number token">1</span><span class="punctuation token">;</span>
+ JS<span class="punctuation token">:</span><span class="punctuation token">:</span>CompileOptions <span class="function token">opts</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ opts<span class="punctuation token">.</span><span class="function token">setFileAndLine</span><span class="punctuation token">(</span>filename<span class="punctuation token">,</span> lineno<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ bool ok <span class="operator token">=</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span><span class="function token">Evaluate</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">,</span> opts<span class="punctuation token">,</span> script<span class="punctuation token">,</span> <span class="function token">strlen</span><span class="punctuation token">(</span>script<span class="punctuation token">)</span><span class="punctuation token">,</span> <span class="operator token">&amp;</span>rval<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>ok<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+
+ JSString <span class="operator token">*</span>str <span class="operator token">=</span> rval<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">printf</span><span class="punctuation token">(</span><span class="string token">"%s\n"</span><span class="punctuation token">,</span> <span class="function token">JS_EncodeString</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> str<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+
+ <span class="function token">JS_DestroyContext</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="function token">JS_DestroyRuntime</span><span class="punctuation token">(</span>rt<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="function token">JS_ShutDown</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">return</span> <span class="number token">0</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span></code></pre>
+
+<h4 id="SpiderMonkey_45">SpiderMonkey 45</h4>
+
+<pre class="brush: cpp line-numbers language-cpp"><code class="language-cpp"><span class="comment token">// following code might be needed in some case</span>
+<span class="comment token">// #define __STDC_LIMIT_MACROS</span>
+<span class="comment token">// #include &lt;stdint.h&gt;</span>
+#include <span class="string token">"jsapi.h"</span>
+#include <span class="string token">"js/Initialization.h"</span>
+
+<span class="comment token">/* The class of the global object. */</span>
+static JSClass global_class <span class="operator token">=</span> <span class="punctuation token">{</span>
+ <span class="string token">"global"</span><span class="punctuation token">,</span>
+ JSCLASS_GLOBAL_FLAGS<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ JS_GlobalObjectTraceHook
+<span class="punctuation token">}</span><span class="punctuation token">;</span>
+
+int <span class="function token">main</span><span class="punctuation token">(</span>int argc<span class="punctuation token">,</span> const char <span class="operator token">*</span>argv<span class="punctuation token">[</span><span class="punctuation token">]</span><span class="punctuation token">)</span>
+<span class="punctuation token">{</span>
+ <span class="function token">JS_Init</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+ JSRuntime <span class="operator token">*</span>rt <span class="operator token">=</span> <span class="function token">JS_NewRuntime</span><span class="punctuation token">(</span><span class="number token">8</span>L <span class="operator token">*</span> <span class="number token">1024</span> <span class="operator token">*</span> <span class="number token">1024</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>rt<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+
+ JSContext <span class="operator token">*</span>cx <span class="operator token">=</span> <span class="function token">JS_NewContext</span><span class="punctuation token">(</span>rt<span class="punctuation token">,</span> <span class="number token">8192</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>cx<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+
+ <span class="punctuation token">{</span> <span class="comment token">// Scope for our various stack objects (JSAutoRequest, RootedObject), so they all go</span>
+ <span class="comment token">// out of scope before we JS_DestroyContext.</span>
+
+ JSAutoRequest <span class="function token">ar</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// In practice, you would want to exit this any</span>
+ <span class="comment token">// time you're spinning the event loop</span>
+
+ JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedObject <span class="function token">global</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="function token">JS_NewGlobalObject</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="operator token">&amp;</span>global_class<span class="punctuation token">,</span> nullptr<span class="punctuation token">,</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span>FireOnNewGlobalHook<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><span class="operator token">!</span>global<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+
+ JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedValue <span class="function token">rval</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+ <span class="punctuation token">{</span> <span class="comment token">// Scope for JSAutoCompartment</span>
+ JSAutoCompartment <span class="function token">ac</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="function token">JS_InitStandardClasses</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+ const char <span class="operator token">*</span>script <span class="operator token">=</span> <span class="string token">"'hello'+'world, it is '+new Date()"</span><span class="punctuation token">;</span>
+ const char <span class="operator token">*</span>filename <span class="operator token">=</span> <span class="string token">"noname"</span><span class="punctuation token">;</span>
+ int lineno <span class="operator token">=</span> <span class="number token">1</span><span class="punctuation token">;</span>
+ JS<span class="punctuation token">:</span><span class="punctuation token">:</span>CompileOptions <span class="function token">opts</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ opts<span class="punctuation token">.</span><span class="function token">setFileAndLine</span><span class="punctuation token">(</span>filename<span class="punctuation token">,</span> lineno<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ bool ok <span class="operator token">=</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span><span class="function token">Evaluate</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> opts<span class="punctuation token">,</span> script<span class="punctuation token">,</span> <span class="function token">strlen</span><span class="punctuation token">(</span>script<span class="punctuation token">)</span><span class="punctuation token">,</span> <span class="operator token">&amp;</span>rval<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>ok<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+
+ JSString <span class="operator token">*</span>str <span class="operator token">=</span> rval<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">printf</span><span class="punctuation token">(</span><span class="string token">"%s\n"</span><span class="punctuation token">,</span> <span class="function token">JS_EncodeString</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> str<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+
+ <span class="function token">JS_DestroyContext</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="function token">JS_DestroyRuntime</span><span class="punctuation token">(</span>rt<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="function token">JS_ShutDown</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">return</span> <span class="number token">0</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span></code></pre>
+
+<h4 id="SpiderMonkey_52">SpiderMonkey 52</h4>
+
+<pre class="brush: cpp line-numbers language-cpp"><code class="language-cpp">#include <span class="string token">"jsapi.h"</span>
+#include <span class="string token">"js/Initialization.h"</span>
+
+static JSClassOps global_ops <span class="operator token">=</span> <span class="punctuation token">{</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ nullptr<span class="punctuation token">,</span>
+ JS_GlobalObjectTraceHook
+<span class="punctuation token">}</span><span class="punctuation token">;</span>
+
+<span class="comment token">/* The class of the global object. */</span>
+static JSClass global_class <span class="operator token">=</span> <span class="punctuation token">{</span>
+ <span class="string token">"global"</span><span class="punctuation token">,</span>
+ JSCLASS_GLOBAL_FLAGS<span class="punctuation token">,</span>
+ <span class="operator token">&amp;</span>global_ops
+<span class="punctuation token">}</span><span class="punctuation token">;</span>
+
+int <span class="function token">main</span><span class="punctuation token">(</span>int argc<span class="punctuation token">,</span> const char <span class="operator token">*</span>argv<span class="punctuation token">[</span><span class="punctuation token">]</span><span class="punctuation token">)</span>
+<span class="punctuation token">{</span>
+ <span class="function token">JS_Init</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+ JSContext <span class="operator token">*</span>cx <span class="operator token">=</span> <span class="function token">JS_NewContext</span><span class="punctuation token">(</span><span class="number token">8</span>L <span class="operator token">*</span> <span class="number token">1024</span> <span class="operator token">*</span> <span class="number token">1024</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>cx<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>JS<span class="punctuation token">:</span><span class="punctuation token">:</span><span class="function token">InitSelfHostedCode</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+
+ <span class="punctuation token">{</span> <span class="comment token">// Scope for our various stack objects (JSAutoRequest, RootedObject), so they all go</span>
+ <span class="comment token">// out of scope before we JS_DestroyContext.</span>
+
+ JSAutoRequest <span class="function token">ar</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span> <span class="comment token">// In practice, you would want to exit this any</span>
+ <span class="comment token">// time you're spinning the event loop</span>
+
+ JS<span class="punctuation token">:</span><span class="punctuation token">:</span>CompartmentOptions options<span class="punctuation token">;</span>
+ JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedObject <span class="function token">global</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="function token">JS_NewGlobalObject</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> <span class="operator token">&amp;</span>global_class<span class="punctuation token">,</span> nullptr<span class="punctuation token">,</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span>FireOnNewGlobalHook<span class="punctuation token">,</span> options<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><span class="operator token">!</span>global<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+
+ JS<span class="punctuation token">:</span><span class="punctuation token">:</span>RootedValue <span class="function token">rval</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+ <span class="punctuation token">{</span> <span class="comment token">// Scope for JSAutoCompartment</span>
+ JSAutoCompartment <span class="function token">ac</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="function token">JS_InitStandardClasses</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> global<span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+ const char <span class="operator token">*</span>script <span class="operator token">=</span> <span class="string token">"'hello'+'world, it is '+new Date()"</span><span class="punctuation token">;</span>
+ const char <span class="operator token">*</span>filename <span class="operator token">=</span> <span class="string token">"noname"</span><span class="punctuation token">;</span>
+ int lineno <span class="operator token">=</span> <span class="number token">1</span><span class="punctuation token">;</span>
+ JS<span class="punctuation token">:</span><span class="punctuation token">:</span>CompileOptions <span class="function token">opts</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ opts<span class="punctuation token">.</span><span class="function token">setFileAndLine</span><span class="punctuation token">(</span>filename<span class="punctuation token">,</span> lineno<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ bool ok <span class="operator token">=</span> JS<span class="punctuation token">:</span><span class="punctuation token">:</span><span class="function token">Evaluate</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> opts<span class="punctuation token">,</span> script<span class="punctuation token">,</span> <span class="function token">strlen</span><span class="punctuation token">(</span>script<span class="punctuation token">)</span><span class="punctuation token">,</span> <span class="operator token">&amp;</span>rval<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>ok<span class="punctuation token">)</span>
+ <span class="keyword token">return</span> <span class="number token">1</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+
+ JSString <span class="operator token">*</span>str <span class="operator token">=</span> rval<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">printf</span><span class="punctuation token">(</span><span class="string token">"%s\n"</span><span class="punctuation token">,</span> <span class="function token">JS_EncodeString</span><span class="punctuation token">(</span>cx<span class="punctuation token">,</span> str<span class="punctuation token">)</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+
+ <span class="function token">JS_DestroyContext</span><span class="punctuation token">(</span>cx<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="function token">JS_ShutDown</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">return</span> <span class="number token">0</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span></code></pre>
+
+<h3 id="Hello_Worldの例のビルドと実行">Hello Worldの例のビルドと実行</h3>
+
+<div>
+<p>ビルドコマンドラインは OS とツールに依存します。Mac と Linux のコマンドラインのサンプルを次に示します (<code>&lt;objdir&gt;</code> は SpiderMonkey がビルドされたディレクトリです)。</p>
+
+<pre class="line-numbers language-html"><code class="language-html"># </code>SpiderMonkey のデバッグビルドを使用している場合は、以下のコマンドに加えて -DDEBUG が必要です。<code class="language-html">
+# </code>SpiderMonkey 31 以外のバージョンを使用している場合は、-lmozjs-XX を自分のバージョンに変更してください。<code class="language-html">
+
+[Mac]
+clang++ -std=c++11 -I<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>objdir</span><span class="punctuation token">&gt;</span></span>/dist/include -L<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>objdir</span><span class="punctuation token">&gt;</span></span>/dist/lib helloworld.cpp -o helloworld -lmozjs-31 -lz
+[Linux]
+g++ -std=c++11 -I<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>objdir</span><span class="punctuation token">&gt;</span></span>/dist/include -L<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>objdir</span><span class="punctuation token">&gt;</span></span>/dist/lib helloworld.cpp -o helloworld -lmozjs-31 -lz -lpthread -ldl</code></pre>
+
+<p><code>"helloworld, it is TIME"</code> と表示されます (ここでは TIME が現在の時刻です)。</p>
+
+<ol>
+ <li>Make sure the build computer has the prerequisites for building SpiderMonkey: <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Linux_Prerequisites" title="Linux Prerequisites">Linux</a>, <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Windows_Prerequisites" title="Windows build prerequisites">Windows</a>, <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Mac_OS_X_Prerequisites" title="Mac OS X Build Prerequisites">Mac OS X</a>, <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions" title="Build Instructions">others</a>. For Windows, the following steps will assume that you have installed the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Build_Instructions/Windows_Prerequisites" title="MozillaBuild">MozillaBuild</a> package.</li>
+ <li>Get the SpiderMonkey source code. You can <a href="http://ftp.mozilla.org/pub/mozilla.org/js/" title="http://ftp.mozilla.org/pub/mozilla.org/js/">download a source archive</a> or use Mercurial (hg) to <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Getting_SpiderMonkey_source_code#Getting_the_latest_SpiderMonkey_source_code" title="Getting the latest SpiderMonkey source code">pull the SpiderMonkey repository</a>. On Windows, do not install the SpiderMonkey source code under the MSYS root directory (which is usually c:\mozilla-build\msys). Instead use something like c:\mozjs-31.2.0</li>
+ <li>Compile SpiderMonkey using the build instructions at <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation" title="Build Documentation">SpiderMonkey Build Documentation</a>. By default this will build a SpiderMonkey shared library that you will link into your application in a later step.</li>
+ <li>Copy the code example above into a text editor and save the file as helloworld.cpp in the SpiderMonkey js\src directory. To get a copy of the code sample without line numbers, hover over the sample near the top until buttons appear. Then click the view source button, and copy the code from the window that appears.</li>
+ <li>Compile the helloworld application and link to the SpiderMonkey library.</li>
+ <li>Run the helloworld executable at the command line:
+ <pre class="line-numbers language-html"><code class="language-html">./helloworld</code></pre>
+ </li>
+</ol>
+</div>
+
+<h3 id="JavaScript_から_C_関数の呼び出し方">JavaScript から C 関数の呼び出し方</h3>
+
+<p><code>doit</code> という名前のC関数について言及します。これは呼び出されるときに少なくとも二つの実際のパラメータを使います。(もし呼びだし元がより少ないパラメータを使う場合、JSエンジンは無くなった一つの変数に対して未定義の変数が渡される事を確認すべきです):</p>
+
+<pre class="eval">#define DOIT_MINARGS 2
+
+static JSBool
+doit(JSContext *cx, unsigned argc, jsval *vp)
+{
+<span id="the-code"><a class="d external" href="http://mxr.mozilla.org/mozilla-central/ident?i=jsval"> jsval</a> *<a class="d external" href="http://mxr.mozilla.org/mozilla-central/ident?i=argv">argv</a> = <a class="d external" href="http://mxr.mozilla.org/mozilla-central/ident?i=JS_ARGV">JS_ARGV</a>(<a class="d external" href="http://mxr.mozilla.org/mozilla-central/ident?i=cx">cx</a>, <a class="d external" href="http://mxr.mozilla.org/mozilla-central/ident?i=vp">vp</a>);</span>
+ /*
+ * Look in argv for argc actual parameters, set *rval to return a
+ * value to the caller.
+ */
+ ...
+}
+</pre>
+
+<p>そして、以下のようにコーディングし、JSに渡します:</p>
+
+<pre class="eval">ok = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineFunction" title="en/SpiderMonkey/JSAPI_Reference/JS_DefineFunction">JS_DefineFunction</a>(cx, global, "doit", doit, DOIT_MINARGS, 0);
+</pre>
+
+<p>または、ネイティブな関数群として定義するならば、おそらくそれらをテーブルの中に置き、関数テーブルとして定義するでしょう:</p>
+
+<pre class="eval">static <a href="/En/SpiderMonkey/JSAPI_Reference/JSFunctionSpec" title="En/SpiderMonkey/JSAPI_Reference/JSFunctionSpec">JSFunctionSpec</a> my_functions[] = {
+ {"doit", doit, DOIT_MINARGS, 0, 0},
+ etc...
+ {0,0,0,0,0},
+};
+</pre>
+
+<p>(最終的に、すべてのNULL 関数はテーブルを終端します)そして、以下のようにします:</p>
+
+<pre class="eval">ok = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineFunctions" title="en/SpiderMonkey/JSAPI_Reference/JS_DefineFunctions">JS_DefineFunctions</a>(cx, global, my_functions);
+</pre>
+
+<h3 id="C_から_JavaScript_の関数の呼び出し方">C から JavaScript の関数の呼び出し方</h3>
+
+<p>クリックイベントを最上位の UI から座標 (x,y) の UI 要素に焦点をあてます:</p>
+
+<pre class="eval">JSObject *target, *event;
+jsval argv[1], rval;
+
+/*
+ * Find event target and make event object to represent this click.
+ * Pass cx to NewEventObject so JS_NewObject can be called.
+ */
+target = FindEventTargetAt(cx, global, x, y);
+event = NewEventObject(cx, "click", x, y);
+argv[0] = <a href="/en/SpiderMonkey/JSAPI_Reference/OBJECT_TO_JSVAL" title="en/SpiderMonkey/JSAPI_Reference/OBJECT_TO_JSVAL">OBJECT_TO_JSVAL</a>(event);
+
+/* To emulate the DOM, you might want to try "onclick" too. */
+ok = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName" title="en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName">JS_CallFunctionName</a>(cx, target, "onClick", 1, argv, &amp;rval);
+
+/* Now test rval to see whether we should cancel the event. */
+if (<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_BOOLEAN" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_BOOLEAN">JSVAL_IS_BOOLEAN</a>(rval) &amp;&amp; !<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_BOOLEAN" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_BOOLEAN">JSVAL_TO_BOOLEAN</a>(rval))
+ CancelEvent(event);
+</pre>
+
+<p>繰り返しますが、ここではエラーチェックは無視しています。(関数呼び出し後の 戻り値 !ok のテストような)、いくつかのCのイベント管理処理やハンドラーが偽値を返したときのイベントをキャンセルする場合のDOMの伝統的なやり方を適切にエミュレートするために疑似コードを用いています。</p>
+
+<div class="originaldocinfo">
+<h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2>
+
+<ul>
+ <li>Author: Brendan Eich</li>
+ <li>Last Updated Date: 21 February, 2000</li>
+</ul>
+</div>
diff --git a/files/ja/mozilla/projects/spidermonkey/index.html b/files/ja/mozilla/projects/spidermonkey/index.html
new file mode 100644
index 0000000000..e285c49690
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/index.html
@@ -0,0 +1,102 @@
+---
+title: SpiderMonkey
+slug: Mozilla/Projects/SpiderMonkey
+tags:
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey
+---
+<div>{{SpiderMonkeySidebar}}</div>
+
+<p class="summary"><strong>SpiderMonkey</strong> は 、C / C++ で書かれた <a href="/ja/docs/Web/JavaScript">JavaScript</a> エンジンです。Firefoxを含む、Mozillaの複数の製品で使用されており、MPL2  ライセンスの下で利用できます。</p>
+
+<p>独立したソースコードリリースは、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases">リリースページ</a>にあります。</p>
+
+<div class="topicpage-table">
+<div class="section">
+<h2 id="ガイド">ガイド</h2>
+
+<h3 id="ビルド">ビルド</h3>
+
+<dl>
+ <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation">SpiderMonkey のビルド手順</a></dt>
+ <dd>SpiderMonkey をビルドしてテストスイートを実行する方法について。</dd>
+</dl>
+
+<h3 id="SpiderMonkey_の利用">SpiderMonkey の利用</h3>
+
+<dl>
+ <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell">JavaScript シェルの手引き</a></dt>
+ <dd>JavaScript シェルの取得、構築、利用方法について。</dd>
+ <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide">JSAPI ユーザガイド</a></dt>
+ <dd>このガイドでは、SpiderMonkey の概要と、あなたのアプリケーションを JavaScript 対応にするため、アプリケーションから組み込んだエンジンを呼び出す方法について説明します。</dd>
+ <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Cookbook">JSAPI クックブック</a></dt>
+ <dd>よく使われる JavaScript の式や文の JSAPI 表現を解説します。</dd>
+ <dt><a href="/ja/docs/SpiderMonkey/GC_Rooting_Guide">GC ルーティングガイド</a></dt>
+ <dd>SpiderMonkey の世代別 GC に対応したコードの書き方を解説します。</dd>
+ <dt><a href="/ja/docs/How_to_embed_the_JavaScript_engine">JavaScript エンジンの埋め込み方</a></dt>
+ <dd>SpiderMonkey の埋め込み方の古い解説です。</dd>
+</dl>
+
+<h2 id="SpiderMonkey_のハック">SpiderMonkey のハック</h2>
+
+<dl>
+ <dt><a href="https://wiki.mozilla.org/JavaScript:New_to_SpiderMonkey">SpiderMonkey 入門</a></dt>
+ <dd>SpiderMonkey をハックするためのガイド。</dd>
+ <dt><a href="/ja/docs/SpiderMonkey/Setting_up_CDT_to_work_on_SpiderMonkey">SpiderMonkey 開発のための CDT 設定</a></dt>
+ <dd>SpiderMonkey を開発するための Eclipse 設定手順を解説します。</dd>
+ <dt><a href="http://blog.cdleary.com/2011/11/contributing-to-spidermonkey/">SpiderMonkey に貢献するには</a></dt>
+ <dd>4 分弱のスライドキャストです。</dd>
+</dl>
+
+<dl>
+ <dt><a href="/ja/docs/SpiderMonkey/Running_Automated_JavaScript_Tests">JavaScript テストの自動実行</a></dt>
+ <dd>JavaScript テストスイートの自動実行方法について解説します。</dd>
+ <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Creating_JavaScript_tests">JavaScript のテストを作成する</a></dt>
+ <dd>JavaScript テストスイートに対するテストの追加方法を解説します。</dd>
+</dl>
+</div>
+
+<div class="section">
+<h2 id="リファレンス">リファレンス</h2>
+
+<dl>
+ <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference">JSAPI レファレンス</a></dt>
+ <dd>SpiderMonkey の API レファレンスです。</dd>
+ <dt><a href="/ja/docs/SpiderMonkey/JS_Debugger_API_Reference">JS Debugger API レファレンス</a></dt>
+ <dd>Gecko 8.0 {{GeckoRelease("8.0")}} と同時にリリースされた SpiderMonkey 1.8.6 で導入された、<code>Debugger</code> オブジェクトの API について解説します。</dd>
+ <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Internals/Bytecode">バイトコードの解説</a></dt>
+ <dd>SpiderMonkey が利用するバイトコードのリストです。</dd>
+ <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Parser_API">Parser API</a></dt>
+ <dd>SpiderMonkey の持つ構文解析器と、JavaScript API からの利用方法を解説しています。</dd>
+</dl>
+
+<h2 id="TIPS、トリック、哲学">TIPS、トリック、哲学</h2>
+
+<dl>
+ <dt><a href="/ja/docs/SpiderMonkey/Future_directions">今後の方針</a></dt>
+ <dd>機能、設計、コーディングにおける今後の方針を述べています。</dd>
+ <dt><a href="/ja/docs/SpiderMonkey/Internals">SpiderMonkey の内部構造</a></dt>
+ <dd>設計の概要と、ファイル単位での実装の解説です。</dd>
+ <dt><a href="/ja/docs/SpiderMonkey/Bytecodes">バイトコードのレファレンス</a></dt>
+ <dd>SpiderMonkey の使用するバイトコードのレファレンスです。</dd>
+ <dt><a href="/ja/docs/SpiderMonkey/Internals/Garbage_collection">SpiderMonkey の内部構造: GC</a></dt>
+ <dd>GC の内部構造を解説します。</dd>
+ <dt><a href="/ja/docs/SpiderMonkey/Hacking_Tips">SpiderMonkey の内部構造: ハックのための TIPS </a></dt>
+ <dd>SpiderMonkey をハックするために有用なツールと TIPS  がまとめられています。</dd>
+</dl>
+
+<h2 id="関連項目">関連項目</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/JavaScript">JavaScript</a></li>
+ <li><a href="/ja/docs/SpiderMonkey/FOSS">SpiderMonkey を利用した FOSS プロジェクト</a></li>
+</ul>
+
+<h2 id="リリースノート">リリースノート</h2>
+
+<dl>
+ <dt><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases">SpiderMonkey リリースノート</a></dt>
+ <dd>現在のリリースと、次にあげる過去のリリースに対するリリースノートがまとめられています:<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/52">52</a>, <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/45">45</a>, <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/38">38</a>, <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/31">31</a>, <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/24">24</a>, <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/17">17</a></dd>
+</dl>
+</div>
+</div>
diff --git a/files/ja/mozilla/projects/spidermonkey/index/index.html b/files/ja/mozilla/projects/spidermonkey/index/index.html
new file mode 100644
index 0000000000..f59feeeb07
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/index/index.html
@@ -0,0 +1,10 @@
+---
+title: Index
+slug: Mozilla/Projects/SpiderMonkey/Index
+tags:
+ - Index
+ - MDN Meta
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/Index
+---
+<p>{{Index("/ja/docs/Mozilla/Projects/SpiderMonkey")}}</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/internals/bytecode/index.html b/files/ja/mozilla/projects/spidermonkey/internals/bytecode/index.html
new file mode 100644
index 0000000000..f4e65a7748
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/internals/bytecode/index.html
@@ -0,0 +1,6855 @@
+---
+title: バイトコードの説明
+slug: Mozilla/Projects/SpiderMonkey/Internals/Bytecode
+tags:
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/Internals/Bytecode
+---
+<div>{{SpiderMonkeySidebar("Internals")}}</div>
+
+<h2 id="バイトコード一覧">バイトコード一覧</h2>
+
+<p>この文書は <a href="http://dxr.mozilla.org/mozilla-central/source/js/src/vm/make_opcode_doc.py">make_opcode_doc.py</a> によって <a href="http://dxr.mozilla.org/mozilla-central/source/js/src/vm/Opcodes.h">Opcodes.h</a> から自動的に生成されます。</p>
+
+<h3 id="ステートメント">ステートメント</h3>
+
+<h4 id="Jumps">Jumps</h4>
+
+<dl>
+ <dt id="JSOP_AND">JSOP_AND [-1, +1] (JUMP, DETECTING, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>69 (0x45)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>int32_t offset</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>cond</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>cond</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>スタックの先頭の値をブール値に変換し、結果が <code>false</code> の場合、現在のバイトコードから 32-bit のオフセットにジャンプします。</p>
+ </dd>
+ <dt id="JSOP_GOTO">JSOP_GOTO [-0, +0] (JUMP)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>6 (0x06)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>int32_t offset</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>現在のバイトコードから 32-bit のオフセットにジャンプします。</p>
+ </dd>
+ <dt id="JSOP_IFEQ">JSOP_IFEQ [-1, +0] (JUMP, DETECTING, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>7 (0x07)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>int32_t offset</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>cond</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top of stack value, converts it into a boolean, if the result is <code>false</code>, jumps to a 32-bit offset from the current bytecode.</p>
+
+ <p>The idea is that a sequence like <code>JSOP_ZERO</code>; <code>JSOP_ZERO</code>; <code>JSOP_EQ</code>; <code>JSOP_IFEQ</code>; <code>JSOP_RETURN</code>; reads like a nice linear sequence that will execute the return.</p>
+ </dd>
+ <dt id="JSOP_IFNE">JSOP_IFNE [-1, +0] (JUMP, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>8 (0x08)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>int32_t offset</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>cond</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top of stack value, converts it into a boolean, if the result is <code>true</code>, jumps to a 32-bit offset from the current bytecode.</p>
+ </dd>
+ <dt id="JSOP_LABEL">JSOP_LABEL [-0, +0] (CODE_OFFSET)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>106 (0x6a)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>int32_t offset</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>This opcode precedes every labeled statement. It's a no-op.</p>
+
+ <p><code>offset</code> is the offset to the next instruction after this statement, the one <code>break LABEL;</code> would jump to. IonMonkey uses this.</p>
+ </dd>
+ <dt id="JSOP_LOOPENTRY">JSOP_LOOPENTRY [-0, +0] (LOOPENTRY, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>227 (0xe3)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t icIndex, uint8_t BITFIELD</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>6</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>This opcode is the target of the entry jump for some loop. The uint8 argument is a bitfield. The lower 7 bits of the argument indicate the loop depth. This value starts at 1 and is just a hint: deeply nested loops all have the same value. The upper bit is set if Ion should be able to OSR at this point, which is true unless there is non-loop state on the stack. See <code>JSOP_JUMPTARGET</code> for the icIndex argument.</p>
+ </dd>
+ <dt id="JSOP_LOOPHEAD">JSOP_LOOPHEAD [-0, +0] (ICINDEX)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>109 (0x6d)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t icIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Another no-op.</p>
+
+ <p>This opcode is the target of the backwards jump for some loop. See <code>JSOP_JUMPTARGET</code> for the icIndex operand.</p>
+ </dd>
+ <dt id="JSOP_OR">JSOP_OR [-1, +1] (JUMP, DETECTING, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>68 (0x44)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>int32_t offset</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>cond</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>cond</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Converts the top of stack value into a boolean, if the result is <code>true</code>, jumps to a 32-bit offset from the current bytecode.</p>
+ </dd>
+</dl>
+
+<h4 id="Switch_Statement">Switch Statement</h4>
+
+<dl>
+ <dt id="JSOP_CASE">JSOP_CASE [-2, +1] (JUMP)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>121 (0x79)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>int32_t offset</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val, cond</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val(if !cond)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values on the stack as <code>val</code> and <code>cond</code>. If <code>cond</code> is <code>true</code>, jumps to a 32-bit offset from the current bytecode, re-pushes <code>val</code> onto the stack if <code>false</code>.</p>
+ </dd>
+ <dt id="JSOP_CONDSWITCH">JSOP_CONDSWITCH [-0, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>120 (0x78)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>This no-op appears after the bytecode for EXPR in <code>switch (EXPR) {...}</code> if the switch cannot be optimized using <code>JSOP_TABLESWITCH</code>.</p>
+
+ <p>For a non-optimized switch statement like this:</p>
+
+ <pre class="notranslate"> switch (EXPR) {
+ case V0:
+ C0;
+ ...
+ default:
+ D;
+ }
+</pre>
+
+ <p>the bytecode looks like this:</p>
+
+ <pre class="notranslate"> (EXPR)
+ condswitch
+ (V0)
+ case -&gt;C0
+ ...
+ default -&gt;D
+ (C0)
+ ...
+ (D)
+</pre>
+
+ <p>Note that code for all case-labels is emitted first, then code for the body of each case clause.</p>
+ </dd>
+ <dt id="JSOP_DEFAULT">JSOP_DEFAULT [-1, +0] (JUMP)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>122 (0x7a)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>int32_t offset</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>lval</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>This appears after all cases in a <code>JSOP_CONDSWITCH</code>, whether there is a <code>default:</code> label in the switch statement or not. Pop the switch operand from the stack and jump to a 32-bit offset from the current bytecode. offset from the current bytecode.</p>
+ </dd>
+ <dt id="JSOP_TABLESWITCH">JSOP_TABLESWITCH [-1, +0] (TABLESWITCH, DETECTING)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>70 (0x46)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>int32_t len, int32_t low, int32_t high,uint24_t firstResumeIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>len</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>i</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top of stack value as <code>i</code>, if <code>low &lt;= i &lt;= high</code>, jumps to a 32-bit offset: offset is stored in the script's resumeOffsets</p>
+
+ <pre class="notranslate"> list at index 'firstResumeIndex + (i - low)'
+</pre>
+
+ <p>jumps to a 32-bit offset: <code>len</code> from the current bytecode otherwise</p>
+ </dd>
+</dl>
+
+<h4 id="For-In_Statement">For-In Statement</h4>
+
+<dl>
+ <dt id="JSOP_ENDITER">JSOP_ENDITER [-1, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>78 (0x4e)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>iter</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Exits a for-in loop by popping the iterator object from the stack and closing it.</p>
+ </dd>
+ <dt id="JSOP_ISGENCLOSING">JSOP_ISGENCLOSING [-1, +2]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>187 (0xbb)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val, res</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes a boolean indicating whether the top of the stack is MagicValue(<code>JS_GENERATOR_CLOSING</code>).</p>
+ </dd>
+ <dt id="JSOP_ISNOITER">JSOP_ISNOITER [-1, +2]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>77 (0x4d)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val, res</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes a boolean indicating whether the value on top of the stack is MagicValue(<code>JS_NO_ITER_VALUE</code>).</p>
+ </dd>
+ <dt id="JSOP_ITER">JSOP_ITER [-1, +1] (IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>75 (0x4b)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>iter</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Sets up a for-in loop. It pops the top of stack value as <code>val</code> and pushes <code>iter</code> which is an iterator for <code>val</code>.</p>
+ </dd>
+ <dt id="JSOP_MOREITER">JSOP_MOREITER [-1, +2]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>76 (0x4c)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>iter</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>iter, val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes the next iterated value onto the stack. If no value is available, MagicValue(<code>JS_NO_ITER_VALUE</code>) is pushed.</p>
+ </dd>
+</dl>
+
+<h4 id="With_Statement">With Statement</h4>
+
+<dl>
+ <dt id="JSOP_ENTERWITH">JSOP_ENTERWITH [-1, +0] (SCOPE)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>3 (0x03)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t staticWithIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top of stack value, converts it to an object, and adds a <code>WithEnvironmentObject</code> wrapping that object to the environment chain.</p>
+
+ <p>There is a matching <code>JSOP_LEAVEWITH</code> instruction later. All name lookups between the two that may need to consult the With object are deoptimized.</p>
+ </dd>
+ <dt id="JSOP_LEAVEWITH">JSOP_LEAVEWITH [-0, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>4 (0x04)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the environment chain object pushed by <code>JSOP_ENTERWITH</code>.</p>
+ </dd>
+</dl>
+
+<h4 id="Exception_Handling">Exception Handling</h4>
+
+<dl>
+ <dt id="JSOP_EXCEPTION">JSOP_EXCEPTION [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>118 (0x76)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>exception</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes the current pending exception onto the stack and clears the pending exception. This is only emitted at the beginning of code for a catch-block, so it is known that an exception is pending. It is used to implement catch-blocks and <code>yield*</code>.</p>
+ </dd>
+ <dt id="JSOP_FINALLY">JSOP_FINALLY [-0, +2]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>135 (0x87)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>false, resumeIndex</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>This opcode has a def count of 2, but these values are already on the stack (they're pushed by <code>JSOP_GOSUB</code>).</p>
+ </dd>
+ <dt id="JSOP_GOSUB">JSOP_GOSUB [-2, +0] (JUMP)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>116 (0x74)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>int32_t offset</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>false, resumeIndex</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>This opcode is used for entering a <code>finally</code> block. Jumps to a 32-bit offset from the current pc.</p>
+
+ <p>Note: this op doesn't actually push/pop any values, but it has a use count of 2 (for the <code>false</code> + resumeIndex values pushed by preceding bytecode ops) because the <code>finally</code> entry point does not expect these values on the stack. See also <code>JSOP_FINALLY</code> (it has a def count of 2).</p>
+
+ <p>When the execution resumes from <code>finally</code> block, those stack values are popped.</p>
+ </dd>
+ <dt id="JSOP_RETSUB">JSOP_RETSUB [-2, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>117 (0x75)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>lval, rval</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>This opcode is used for returning from a <code>finally</code> block.</p>
+
+ <p>Pops the top two values on the stack as <code>rval</code> and <code>lval</code>. Then: - If <code>lval</code> is true, throws <code>rval</code>. - If <code>lval</code> is false, jumps to the resumeIndex stored in <code>lval</code>.</p>
+ </dd>
+ <dt id="JSOP_THROW">JSOP_THROW [-1, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>112 (0x70)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>v</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top of stack value as <code>v</code>, sets pending exception as <code>v</code>, then raises error.</p>
+ </dd>
+ <dt id="JSOP_THROWMSG">JSOP_THROWMSG [-0, +0] (UINT16)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>74 (0x4a)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint16_t msgNumber</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>3</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Sometimes we know when emitting that an operation will always throw.</p>
+
+ <p>Throws the indicated <code>JSMSG</code>.</p>
+ </dd>
+ <dt id="JSOP_TRY">JSOP_TRY [-0, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>134 (0x86)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>This no-op appears at the top of the bytecode for a <code>TryStatement</code>.</p>
+
+ <p>Location information for catch/finally blocks is stored in a side table, <code>script-&gt;trynotes()</code>.</p>
+ </dd>
+</dl>
+
+<h4 id="Function">Function</h4>
+
+<dl>
+ <dt id="JSOP_CALL">JSOP_CALL [-(argc+2), +1] (ARGC, INVOKE, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>58 (0x3a)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint16_t argc</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>3</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>callee, this, args[0], ..., args[argc-1]</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Invokes <code>callee</code> with <code>this</code> and <code>args</code>, pushes return value onto the stack.</p>
+ </dd>
+ <dt id="JSOP_CALLITER">JSOP_CALLITER [-2, +1] (ARGC, INVOKE, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>145 (0x91)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint16_t argc (must be 0)</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>3</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>callee, this</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Like <code>JSOP_CALL</code>, but used as part of for-of and destructuring bytecode to provide better error messages.</p>
+ </dd>
+ <dt id="JSOP_CALL_IGNORES_RV">JSOP_CALL_IGNORES_RV [-(argc+2), +1] (ARGC, INVOKE, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>231 (0xe7)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint16_t argc</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>3</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>callee, this, args[0], ..., args[argc-1]</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Like <code>JSOP_CALL</code>, but tells the function that the return value is ignored. stack.</p>
+ </dd>
+ <dt id="JSOP_CHECKISCALLABLE">JSOP_CHECKISCALLABLE [-1, +1] (UINT8)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>219 (0xdb)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint8_t kind</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>2</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Checks that the top value on the stack is callable, and throws a TypeError if not. The operand <code>kind</code> is used only to generate an appropriate error message.</p>
+ </dd>
+ <dt id="JSOP_EVAL">JSOP_EVAL [-(argc+2), +1] (ARGC, INVOKE, TYPESET, CHECKSLOPPY, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>123 (0x7b)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint16_t argc</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>3</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>callee, this, args[0], ..., args[argc-1]</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Invokes <code>eval</code> with <code>args</code> and pushes return value onto the stack.</p>
+
+ <p>If <code>eval</code> in global scope is not original one, invokes the function with <code>this</code> and <code>args</code>, and pushes return value onto the stack.</p>
+ </dd>
+ <dt id="JSOP_FUNAPPLY">JSOP_FUNAPPLY [-(argc+2), +1] (ARGC, INVOKE, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>79 (0x4f)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint16_t argc</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>3</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>callee, this, args[0], ..., args[argc-1]</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Invokes <code>callee</code> with <code>this</code> and <code>args</code>, pushes return value onto the stack.</p>
+
+ <p>This is for <code>f.apply</code>.</p>
+ </dd>
+ <dt id="JSOP_FUNCALL">JSOP_FUNCALL [-(argc+2), +1] (ARGC, INVOKE, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>108 (0x6c)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint16_t argc</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>3</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>callee, this, args[0], ..., args[argc-1]</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Invokes <code>callee</code> with <code>this</code> and <code>args</code>, pushes return value onto the stack.</p>
+
+ <p>If <code>callee</code> is determined to be the canonical <code>Function.prototype.call</code> function, then this operation is optimized to directly call <code>callee</code> with <code>args[0]</code> as <code>this</code>, and the remaining arguments as formal args to <code>callee</code>.</p>
+
+ <p>Like <code>JSOP_FUNAPPLY</code> but for <code>f.call</code> instead of <code>f.apply</code>.</p>
+ </dd>
+ <dt id="JSOP_FUNWITHPROTO">JSOP_FUNWITHPROTO [-1, +1] (OBJECT)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>52 (0x34)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t funcIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>proto</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes a clone of a function with a given [[Prototype]] onto the stack.</p>
+ </dd>
+ <dt id="JSOP_GETRVAL">JSOP_GETRVAL [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>2 (0x02)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes stack frame's <code>rval</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_LAMBDA">JSOP_LAMBDA [-0, +1] (OBJECT)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>130 (0x82)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t funcIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes a closure for a named or anonymous function expression onto the stack.</p>
+ </dd>
+ <dt id="JSOP_LAMBDA_ARROW">JSOP_LAMBDA_ARROW [-1, +1] (OBJECT)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>131 (0x83)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t funcIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>new.target</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top of stack value as <code>new.target</code>, pushes an arrow function with lexical <code>new.target</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_NEW">JSOP_NEW [-(argc+3), +1] (ARGC, INVOKE, TYPESET, IC, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>82 (0x52)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint16_t argc</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>3</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>callee, this, args[0], ..., args[argc-1], newTarget</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Invokes <code>callee</code> as a constructor with <code>this</code> and <code>args</code>, pushes return value onto the stack.</p>
+ </dd>
+ <dt id="JSOP_OPTIMIZE_SPREADCALL">JSOP_OPTIMIZE_SPREADCALL [-1, +2]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>178 (0xb2)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>arr</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>arr, optimized</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top stack value, pushes the value and a boolean value that indicates whether the spread operation for the value can be optimized in spread call.</p>
+ </dd>
+ <dt id="JSOP_RETRVAL">JSOP_RETRVAL [-0, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>153 (0x99)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Stops interpretation and returns value set by <code>JSOP_SETRVAL</code>. When not set, returns <code>undefined</code>.</p>
+
+ <p>Also emitted at end of script so interpreter don't need to check if opcode is still in script range.</p>
+ </dd>
+ <dt id="JSOP_RETURN">JSOP_RETURN [-1, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>5 (0x05)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>rval</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top of stack value as <code>rval</code>, stops interpretation of current script and returns <code>rval</code>.</p>
+ </dd>
+ <dt id="JSOP_SETFUNNAME">JSOP_SETFUNNAME [-2, +1] (UINT8)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>182 (0xb6)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint8_t prefixKind</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>2</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>fun, name</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>fun</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values on the stack as <code>name</code> and <code>fun</code>, defines the name of <code>fun</code> to <code>name</code> with prefix if any, and pushes <code>fun</code> back onto the stack.</p>
+ </dd>
+ <dt id="JSOP_SETRVAL">JSOP_SETRVAL [-1, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>152 (0x98)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>rval</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top of stack value as <code>rval</code>, sets the return value in stack frame as <code>rval</code>.</p>
+ </dd>
+ <dt id="JSOP_SPREADCALL">JSOP_SPREADCALL [-3, +1] (INVOKE, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>41 (0x29)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>callee, this, args</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>spreadcall variant of <code>JSOP_CALL</code>.</p>
+
+ <p>Invokes <code>callee</code> with <code>this</code> and <code>args</code>, pushes the return value onto the stack.</p>
+
+ <p><code>args</code> is an Array object which contains actual arguments.</p>
+ </dd>
+ <dt id="JSOP_SPREADEVAL">JSOP_SPREADEVAL [-3, +1] (INVOKE, TYPESET, CHECKSLOPPY, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>43 (0x2b)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>callee, this, args</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>spreadcall variant of <code>JSOP_EVAL</code></p>
+
+ <p>Invokes <code>eval</code> with <code>args</code> and pushes the return value onto the stack.</p>
+
+ <p>If <code>eval</code> in global scope is not original one, invokes the function with <code>this</code> and <code>args</code>, and pushes return value onto the stack.</p>
+ </dd>
+ <dt id="JSOP_SPREADNEW">JSOP_SPREADNEW [-4, +1] (INVOKE, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>42 (0x2a)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>callee, this, args, newTarget</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>spreadcall variant of <code>JSOP_NEW</code></p>
+
+ <p>Invokes <code>callee</code> as a constructor with <code>this</code> and <code>args</code>, pushes the return value onto the stack.</p>
+ </dd>
+ <dt id="JSOP_SPREADSUPERCALL">JSOP_SPREADSUPERCALL [-4, +1] (INVOKE, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>166 (0xa6)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>callee, this, args, newTarget</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>spreadcall variant of <code>JSOP_SUPERCALL</code>.</p>
+
+ <p>Behaves exactly like <code>JSOP_SPREADNEW</code>.</p>
+ </dd>
+ <dt id="JSOP_STRICTEVAL">JSOP_STRICTEVAL [-(argc+2), +1] (ARGC, INVOKE, TYPESET, CHECKSTRICT, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>124 (0x7c)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint16_t argc</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>3</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>callee, this, args[0], ..., args[argc-1]</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Invokes <code>eval</code> with <code>args</code> and pushes return value onto the stack.</p>
+
+ <p>If <code>eval</code> in global scope is not original one, invokes the function with <code>this</code> and <code>args</code>, and pushes return value onto the stack.</p>
+ </dd>
+ <dt id="JSOP_STRICTSPREADEVAL">JSOP_STRICTSPREADEVAL [-3, +1] (INVOKE, TYPESET, CHECKSTRICT, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>50 (0x32)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>callee, this, args</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>spreadcall variant of <code>JSOP_EVAL</code></p>
+
+ <p>Invokes <code>eval</code> with <code>args</code> and pushes the return value onto the stack.</p>
+
+ <p>If <code>eval</code> in global scope is not original one, invokes the function with <code>this</code> and <code>args</code>, and pushes return value onto the stack.</p>
+ </dd>
+ <dt id="JSOP_SUPERCALL">JSOP_SUPERCALL [-(argc+3), +1] (ARGC, INVOKE, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>165 (0xa5)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint16_t argc</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>3</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>callee, this, args[0], ..., args[argc-1], newTarget</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Behaves exactly like <code>JSOP_NEW</code>, but allows JITs to distinguish the two cases.</p>
+ </dd>
+ <dt id="JSOP_TRYSKIPAWAIT">JSOP_TRYSKIPAWAIT [-1, +2]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>223 (0xdf)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>value</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>value_or_resolved, canskip</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top of stack value as <code>value</code>, checks if the await for <code>value</code> can be skipped. If the await operation can be skipped and the resolution value for <code>value</code> can be acquired, pushes the resolution value and <code>true</code> onto the stack. Otherwise, pushes <code>value</code> and <code>false</code> on the stack.</p>
+ </dd>
+</dl>
+
+<h4 id="Generator">Generator</h4>
+
+<dl>
+ <dt id="JSOP_ASYNCAWAIT">JSOP_ASYNCAWAIT [-2, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>151 (0x97)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>value, gen</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>promise</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values <code>value</code> and <code>gen</code> from the stack, then starts "awaiting" for <code>value</code> to be resolved, which will then resume the execution of <code>gen</code>. Pushes the async function promise on the stack, so that it'll be returned to the caller on the very first "await".</p>
+ </dd>
+ <dt id="JSOP_ASYNCRESOLVE">JSOP_ASYNCRESOLVE [-2, +1] (UINT8)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>192 (0xc0)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint8_t fulfillOrReject</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>2</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>valueOrReason, gen</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>promise</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values <code>valueOrReason</code> and <code>gen</code> from the stack, then pushes the promise resolved with <code>valueOrReason</code>. `gen` must be the internal generator object created in async functions. The pushed promise is the async function's result promise, which is stored in `gen`.</p>
+ </dd>
+ <dt id="JSOP_AWAIT">JSOP_AWAIT [-2, +1] (RESUMEINDEX)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>209 (0xd1)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint24_t resumeIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>4</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>promise, gen</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>resolved</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the generator and the return value <code>promise</code>, stops interpretation and returns <code>promise</code>. Pushes resolved value onto the stack.</p>
+ </dd>
+ <dt id="JSOP_CHECKISOBJ">JSOP_CHECKISOBJ [-1, +1] (UINT8)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>14 (0x0e)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint8_t kind</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>2</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>result</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>result</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Checks that the top value on the stack is an object, and throws a TypeError if not. The operand <code>kind</code> is used only to generate an appropriate error message.</p>
+ </dd>
+ <dt id="JSOP_FINALYIELDRVAL">JSOP_FINALYIELDRVAL [-1, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>204 (0xcc)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>gen</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the generator and suspends and closes it. Yields the value in the frame's return value slot.</p>
+ </dd>
+ <dt id="JSOP_GENERATOR">JSOP_GENERATOR [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>212 (0xd4)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>generator</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initializes generator frame, creates a generator and pushes it on the stack.</p>
+ </dd>
+ <dt id="JSOP_INITIALYIELD">JSOP_INITIALYIELD [-1, +1] (RESUMEINDEX)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>202 (0xca)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint24_t resumeIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>4</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>generator</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>generator</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the generator from the top of the stack, suspends it and stops interpretation.</p>
+ </dd>
+ <dt id="JSOP_RESUME">JSOP_RESUME [-2, +1] (UINT8, INVOKE)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>205 (0xcd)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>resume kind (AbstractGeneratorObject::ResumeKind)</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>2</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>gen, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the generator and argument from the stack, pushes a new generator frame and resumes execution of it. Pushes the return value after the generator yields.</p>
+ </dd>
+ <dt id="JSOP_TOASYNCITER">JSOP_TOASYNCITER [-2, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>210 (0xd2)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>iter, next</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>asynciter</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the iterator and its next method from the top of the stack, and create async iterator from it and push the async iterator back onto the stack.</p>
+ </dd>
+ <dt id="JSOP_YIELD">JSOP_YIELD [-2, +1] (RESUMEINDEX)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>203 (0xcb)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint24_t resumeIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>4</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>rval1, gen</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval2</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the generator and the return value <code>rval1</code>, stops interpretation and returns <code>rval1</code>. Pushes sent value from <code>send()</code> onto the stack.</p>
+ </dd>
+</dl>
+
+<h4 id="Debugger">Debugger</h4>
+
+<dl>
+ <dt id="JSOP_DEBUGGER">JSOP_DEBUGGER [-0, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>115 (0x73)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Invokes debugger.</p>
+ </dd>
+ <dt id="JSOP_DEBUGLEAVELEXICALENV">JSOP_DEBUGLEAVELEXICALENV [-0, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>201 (0xc9)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>The opcode to assist the debugger.</p>
+ </dd>
+</dl>
+
+<h3 id="Variables_and_Scopes">Variables and Scopes</h3>
+
+<h4 id="Variables">Variables</h4>
+
+<dl>
+ <dt id="JSOP_BINDNAME">JSOP_BINDNAME [-0, +1] (ATOM, NAME, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>110 (0x6e)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>env</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Looks up name on the environment chain and pushes the environment which contains the name onto the stack. If not found, pushes global lexical environment onto the stack.</p>
+ </dd>
+ <dt id="JSOP_DEFCONST">JSOP_DEFCONST [-0, +0] (ATOM)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>128 (0x80)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Defines the new constant binding on global lexical environment.</p>
+
+ <p>Throws if a binding with the same name already exists on the environment, or if a var binding with the same name exists on the global.</p>
+ </dd>
+ <dt id="JSOP_DEFFUN">JSOP_DEFFUN [-1, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>127 (0x7f)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>fun</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Defines the given function on the current scope.</p>
+
+ <p>This is used for global scripts and also in some cases for function scripts where use of dynamic scoping inhibits optimization.</p>
+ </dd>
+ <dt id="JSOP_DEFLET">JSOP_DEFLET [-0, +0] (ATOM)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>162 (0xa2)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Defines the new mutable binding on global lexical environment.</p>
+
+ <p>Throws if a binding with the same name already exists on the environment, or if a var binding with the same name exists on the global.</p>
+ </dd>
+ <dt id="JSOP_DEFVAR">JSOP_DEFVAR [-0, +0] (ATOM)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>129 (0x81)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Defines the new binding on the frame's current variables-object (the environment on the environment chain designated to receive new variables).</p>
+
+ <p>Throws if the current variables-object is the global object and a binding with the same name exists on the global lexical environment.</p>
+
+ <p>This is used for global scripts and also in some cases for function scripts where use of dynamic scoping inhibits optimization.</p>
+ </dd>
+ <dt id="JSOP_DELNAME">JSOP_DELNAME [-0, +1] (ATOM, NAME, CHECKSLOPPY)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>36 (0x24)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>succeeded</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Looks up name on the environment chain and deletes it, pushes <code>true</code> onto the stack if succeeded (if the property was present and deleted or if the property wasn't present in the first place), <code>false</code> if not.</p>
+
+ <p>Strict mode code should never contain this opcode.</p>
+ </dd>
+ <dt id="JSOP_GETIMPORT">JSOP_GETIMPORT [-0, +1] (ATOM, NAME, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>176 (0xb0)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Gets the value of a module import by name and pushes it onto the stack.</p>
+ </dd>
+ <dt id="JSOP_GETNAME">JSOP_GETNAME [-0, +1] (ATOM, NAME, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>59 (0x3b)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Looks up name on the environment chain and pushes its value onto the stack.</p>
+ </dd>
+ <dt id="JSOP_SETNAME">JSOP_SETNAME [-2, +1] (ATOM, NAME, PROPSET, DETECTING, CHECKSLOPPY, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>111 (0x6f)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>env, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops an environment and value from the stack, assigns value to the given name, and pushes the value back on the stack</p>
+ </dd>
+ <dt id="JSOP_STRICTSETNAME">JSOP_STRICTSETNAME [-2, +1] (ATOM, NAME, PROPSET, DETECTING, CHECKSTRICT, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>49 (0x31)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>env, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops a environment and value from the stack, assigns value to the given name, and pushes the value back on the stack. If the set failed, then throw a TypeError, per usual strict mode semantics.</p>
+ </dd>
+</dl>
+
+<h4 id="Free_Variables">Free Variables</h4>
+
+<dl>
+ <dt id="JSOP_BINDGNAME">JSOP_BINDGNAME [-0, +1] (ATOM, NAME, GNAME, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>214 (0xd6)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>global</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes the global environment onto the stack if the script doesn't have a non-syntactic global scope. Otherwise will act like <code>JSOP_BINDNAME</code>.</p>
+
+ <p><code>nameIndex</code> is only used when acting like <code>JSOP_BINDNAME</code>.</p>
+ </dd>
+ <dt id="JSOP_BINDVAR">JSOP_BINDVAR [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>213 (0xd5)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>env</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes the nearest <code>var</code> environment.</p>
+ </dd>
+ <dt id="JSOP_GETGNAME">JSOP_GETGNAME [-0, +1] (ATOM, NAME, TYPESET, GNAME, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>154 (0x9a)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Looks up name on global environment and pushes its value onto the stack, unless the script has a non-syntactic global scope, in which case it acts just like <code>JSOP_NAME</code>.</p>
+
+ <p>Free variable references that must either be found on the global or a ReferenceError.</p>
+ </dd>
+ <dt id="JSOP_INITGLEXICAL">JSOP_INITGLEXICAL [-1, +1] (ATOM, NAME, PROPINIT, GNAME, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>161 (0xa1)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initializes an uninitialized global lexical binding with the top of stack value.</p>
+ </dd>
+ <dt id="JSOP_SETGNAME">JSOP_SETGNAME [-2, +1] (ATOM, NAME, PROPSET, DETECTING, GNAME, CHECKSLOPPY, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>155 (0x9b)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>env, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values on the stack as <code>val</code> and <code>env</code>, sets property of <code>env</code> as <code>val</code> and pushes <code>val</code> back on the stack.</p>
+
+ <p><code>env</code> should be the global lexical environment unless the script has a non-syntactic global scope, in which case acts like <code>JSOP_SETNAME</code>.</p>
+ </dd>
+ <dt id="JSOP_STRICTSETGNAME">JSOP_STRICTSETGNAME [-2, +1] (ATOM, NAME, PROPSET, DETECTING, GNAME, CHECKSTRICT, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>156 (0x9c)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>env, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values on the stack as <code>val</code> and <code>env</code>, sets property of <code>env</code> as <code>val</code> and pushes <code>val</code> back on the stack. Throws a TypeError if the set fails, per strict mode semantics.</p>
+
+ <p><code>env</code> should be the global lexical environment unless the script has a non-syntactic global scope, in which case acts like <code>JSOP_STRICTSETNAME</code>.</p>
+ </dd>
+</dl>
+
+<h4 id="Local_Variables">Local Variables</h4>
+
+<dl>
+ <dt id="JSOP_CHECKLEXICAL">JSOP_CHECKLEXICAL [-0, +0] (LOCAL, NAME)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>138 (0x8a)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint24_t localno</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>4</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Checks if the value of the local variable is the <code>JS_UNINITIALIZED_LEXICAL</code> magic, throwing an error if so.</p>
+ </dd>
+ <dt id="JSOP_GETLOCAL">JSOP_GETLOCAL [-0, +1] (LOCAL, NAME)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>86 (0x56)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint24_t localno</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>4</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes the value of local variable onto the stack.</p>
+ </dd>
+ <dt id="JSOP_INITLEXICAL">JSOP_INITLEXICAL [-1, +1] (LOCAL, NAME, DETECTING)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>139 (0x8b)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint24_t localno</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>4</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>v</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>v</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initializes an uninitialized local lexical binding with the top of stack value.</p>
+ </dd>
+ <dt id="JSOP_SETLOCAL">JSOP_SETLOCAL [-1, +1] (LOCAL, NAME, DETECTING)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>87 (0x57)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint24_t localno</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>4</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>v</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>v</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Stores the top stack value to the given local.</p>
+ </dd>
+ <dt id="JSOP_THROWSETCALLEE">JSOP_THROWSETCALLEE [-1, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>179 (0xb3)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>v</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>v</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Throws a runtime TypeError for invalid assignment to the callee in a named lambda, which is always a <code>const</code> binding. This is a different bytecode than <code>JSOP_SETCONST</code> because the named lambda callee, if not closed over, does not have a frame slot to look up the name with for the error message.</p>
+ </dd>
+ <dt id="JSOP_THROWSETCONST">JSOP_THROWSETCONST [-1, +1] (LOCAL, NAME, DETECTING)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>169 (0xa9)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint24_t localno</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>4</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>v</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>v</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Throws a runtime TypeError for invalid assignment to <code>const</code>. The localno is used for better error messages.</p>
+ </dd>
+</dl>
+
+<h4 id="Aliased_Variables">Aliased Variables</h4>
+
+<dl>
+ <dt id="JSOP_CHECKALIASEDLEXICAL">JSOP_CHECKALIASEDLEXICAL [-0, +0] (ENVCOORD, NAME)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>140 (0x8c)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint8_t hops, uint24_t slot</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Checks if the value of the aliased variable is the <code>JS_UNINITIALIZED_LEXICAL</code> magic, throwing an error if so.</p>
+ </dd>
+ <dt id="JSOP_GETALIASEDVAR">JSOP_GETALIASEDVAR [-0, +1] (ENVCOORD, NAME, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>136 (0x88)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint8_t hops, uint24_t slot</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>aliasedVar</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes aliased variable onto the stack.</p>
+
+ <p>An "aliased variable" is a var, let, or formal arg that is aliased. Sources of aliasing include: nested functions accessing the vars of an enclosing function, function statements that are conditionally executed, <code>eval</code>, <code>with</code>, and <code>arguments</code>. All of these cases require creating a CallObject to own the aliased variable.</p>
+
+ <p>An ALIASEDVAR opcode contains the following immediates:</p>
+
+ <pre class="notranslate">uint8 hops: the number of environment objects to skip to find the
+ EnvironmentObject containing the variable being accessed
+uint24 slot: the slot containing the variable in the EnvironmentObject
+ (this 'slot' does not include RESERVED_SLOTS).
+</pre>
+ </dd>
+ <dt id="JSOP_INITALIASEDLEXICAL">JSOP_INITALIASEDLEXICAL [-1, +1] (ENVCOORD, NAME, PROPINIT, DETECTING)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>141 (0x8d)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint8_t hops, uint24_t slot</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>v</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>v</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initializes an uninitialized aliased lexical binding with the top of stack value.</p>
+ </dd>
+ <dt id="JSOP_SETALIASEDVAR">JSOP_SETALIASEDVAR [-1, +1] (ENVCOORD, NAME, PROPSET, DETECTING)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>137 (0x89)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint8_t hops, uint24_t slot</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>v</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>v</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Sets aliased variable as the top of stack value.</p>
+ </dd>
+ <dt id="JSOP_THROWSETALIASEDCONST">JSOP_THROWSETALIASEDCONST [-1, +1] (ENVCOORD, NAME, DETECTING)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>170 (0xaa)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint8_t hops, uint24_t slot</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>v</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>v</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Throws a runtime TypeError for invalid assignment to <code>const</code>. The environment coordinate is used for better error messages.</p>
+ </dd>
+</dl>
+
+<h4 id="Intrinsics">Intrinsics</h4>
+
+<dl>
+ <dt id="JSOP_GETINTRINSIC">JSOP_GETINTRINSIC [-0, +1] (ATOM, NAME, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>143 (0x8f)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>intrinsic[name]</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes the value of the intrinsic onto the stack.</p>
+
+ <p>Intrinsic names are emitted instead of <code>JSOP_*NAME</code> ops when the <code>CompileOptions</code> flag <code>selfHostingMode</code> is set.</p>
+
+ <p>They are used in self-hosted code to access other self-hosted values and intrinsic functions the runtime doesn't give client JS code access to.</p>
+ </dd>
+ <dt id="JSOP_SETINTRINSIC">JSOP_SETINTRINSIC [-1, +1] (ATOM, NAME, DETECTING)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>144 (0x90)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Stores the top stack value in the specified intrinsic.</p>
+ </dd>
+</dl>
+
+<h4 id="Block-local_Scope">Block-local Scope</h4>
+
+<dl>
+ <dt id="JSOP_FRESHENLEXICALENV">JSOP_FRESHENLEXICALENV [-0, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>197 (0xc5)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Replaces the current block on the env chain with a fresh block that copies all the bindings in the block. This operation implements the behavior of inducing a fresh lexical environment for every iteration of a for(let ...; ...; ...) loop, if any declarations induced by such a loop are captured within the loop.</p>
+ </dd>
+ <dt id="JSOP_POPLEXICALENV">JSOP_POPLEXICALENV [-0, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>200 (0xc8)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops lexical environment from the env chain.</p>
+ </dd>
+ <dt id="JSOP_PUSHLEXICALENV">JSOP_PUSHLEXICALENV [-0, +0] (SCOPE)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>199 (0xc7)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t scopeIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes lexical environment onto the env chain.</p>
+ </dd>
+ <dt id="JSOP_RECREATELEXICALENV">JSOP_RECREATELEXICALENV [-0, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>198 (0xc6)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Recreates the current block on the env chain with a fresh block with uninitialized bindings. This operation implements the behavior of inducing a fresh lexical environment for every iteration of a for-in/of loop whose loop-head has a (captured) lexical declaration.</p>
+ </dd>
+</dl>
+
+<h4 id="This">This</h4>
+
+<dl>
+ <dt id="JSOP_CHECKRETURN">JSOP_CHECKRETURN [-1, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>190 (0xbe)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>this</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Check if a derived class constructor has a valid return value and <code>this</code> value before it returns. If the return value is not an object, stores the <code>this</code> value to the return value slot.</p>
+ </dd>
+ <dt id="JSOP_CHECKTHIS">JSOP_CHECKTHIS [-1, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>189 (0xbd)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>this</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>this</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Throw if the value on top of the stack is the TDZ MagicValue. Used in derived class constructors.</p>
+ </dd>
+ <dt id="JSOP_CHECKTHISREINIT">JSOP_CHECKTHISREINIT [-1, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>191 (0xbf)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>this</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>this</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Throw an exception if the value on top of the stack is not the TDZ MagicValue. Used in derived class constructors.</p>
+ </dd>
+ <dt id="JSOP_FUNCTIONTHIS">JSOP_FUNCTIONTHIS [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>185 (0xb9)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>this</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Determines the <code>this</code> value for current function frame and pushes it onto the stack. Emitted in the prologue of functions with a this-binding.</p>
+ </dd>
+ <dt id="JSOP_GIMPLICITTHIS">JSOP_GIMPLICITTHIS [-0, +1] (ATOM)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>157 (0x9d)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>this</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes the implicit <code>this</code> value for calls to the associated name onto the stack; only used when the implicit this might be derived from a non-syntactic scope (instead of the global itself).</p>
+
+ <p>Note that code evaluated via the Debugger API uses DebugEnvironmentProxy objects on its scope chain, which are non-syntactic environments that refer to syntactic environments. As a result, the binding we want may be held by a syntactic environments such as CallObject or VarEnvrionmentObject.</p>
+ </dd>
+ <dt id="JSOP_GLOBALTHIS">JSOP_GLOBALTHIS [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>186 (0xba)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>this</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes <code>this</code> value for current stack frame onto the stack. Emitted when <code>this</code> refers to the global <code>this</code>.</p>
+ </dd>
+ <dt id="JSOP_IMPLICITTHIS">JSOP_IMPLICITTHIS [-0, +1] (ATOM)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>226 (0xe2)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>this</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes the implicit <code>this</code> value for calls to the associated name onto the stack.</p>
+ </dd>
+</dl>
+
+<h4 id="Super">Super</h4>
+
+<dl>
+ <dt id="JSOP_SUPERBASE">JSOP_SUPERBASE [-1, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>103 (0x67)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>callee</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>homeObjectProto</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes the prototype of the home object for |callee| onto the stack.</p>
+ </dd>
+ <dt id="JSOP_SUPERFUN">JSOP_SUPERFUN [-1, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>164 (0xa4)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>callee</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>superFun</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Push the function to invoke with |super()|. This is the prototype of the function passed in as |callee|.</p>
+ </dd>
+</dl>
+
+<h4 id="Arguments">Arguments</h4>
+
+<dl>
+ <dt id="JSOP_ARGUMENTS">JSOP_ARGUMENTS [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>9 (0x09)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>arguments</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes the <code>arguments</code> object for the current function activation.</p>
+
+ <p>If <code><code>JSS</code>cript</code> is not marked <code>needsArgsObj</code>, then a <code>JS_OPTIMIZED_ARGUMENTS</code> magic value is pushed. Otherwise, a proper arguments object is constructed and pushed.</p>
+
+ <p>This opcode requires that the function does not have rest parameter.</p>
+ </dd>
+ <dt id="JSOP_CALLEE">JSOP_CALLEE [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>132 (0x84)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>callee</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes current callee onto the stack.</p>
+
+ <p>Used for named function expression self-naming, if lightweight.</p>
+ </dd>
+ <dt id="JSOP_ENVCALLEE">JSOP_ENVCALLEE [-0, +1] (UINT8)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>206 (0xce)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint8_t numHops</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>2</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>callee</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Load the callee stored in a CallObject on the environment chain. The numHops operand is the number of environment objects to skip on the environment chain.</p>
+ </dd>
+ <dt id="JSOP_GETARG">JSOP_GETARG [-0, +1] (QARG, NAME)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>84 (0x54)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint16_t argno</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>3</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>arguments[argno]</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Fast get op for function arguments and local variables.</p>
+
+ <p>Pushes <code>arguments[argno]</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_NEWTARGET">JSOP_NEWTARGET [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>148 (0x94)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>new.target</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Push "new.target"</p>
+ </dd>
+ <dt id="JSOP_REST">JSOP_REST [-0, +1] (TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>224 (0xe0)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rest</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Creates rest parameter array for current function call, and pushes it onto the stack.</p>
+ </dd>
+ <dt id="JSOP_SETARG">JSOP_SETARG [-1, +1] (QARG, NAME)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>85 (0x55)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint16_t argno</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>3</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>v</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>v</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Fast set op for function arguments and local variables.</p>
+
+ <p>Sets <code>arguments[argno]</code> as the top of stack value.</p>
+ </dd>
+</dl>
+
+<h4 id="Var_Scope">Var Scope</h4>
+
+<dl>
+ <dt id="JSOP_POPVARENV">JSOP_POPVARENV [-0, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>181 (0xb5)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops a var environment from the env chain.</p>
+ </dd>
+ <dt id="JSOP_PUSHVARENV">JSOP_PUSHVARENV [-0, +0] (SCOPE)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>180 (0xb4)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t scopeIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes a var environment onto the env chain.</p>
+ </dd>
+</dl>
+
+<h4 id="Modules">Modules</h4>
+
+<dl>
+ <dt id="JSOP_DYNAMIC_IMPORT">JSOP_DYNAMIC_IMPORT [-1, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>233 (0xe9)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>arg</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>rval</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Dynamic import of the module specified by the string value on the top of the stack.</p>
+ </dd>
+ <dt id="JSOP_IMPORTMETA">JSOP_IMPORTMETA [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>232 (0xe8)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>import.meta</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Push "import.meta"</p>
+ </dd>
+</dl>
+
+<h3 id="Operators">Operators</h3>
+
+<h4 id="Comparison_Operators">Comparison Operators</h4>
+
+<dl>
+ <dt id="JSOP_EQ">JSOP_EQ [-2, +1] (DETECTING, IC)<br>
+ JSOP_GE [-2, +1] (IC)<br>
+ JSOP_GT [-2, +1] (IC)<br>
+ JSOP_LE [-2, +1] (IC)<br>
+ JSOP_LT [-2, +1] (IC)<br>
+ JSOP_NE [-2, +1] (DETECTING, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>JSOP_EQ: 18 (0x12)<br>
+ JSOP_GE: 23 (0x17)<br>
+ JSOP_GT: 22 (0x16)<br>
+ JSOP_LE: 21 (0x15)<br>
+ JSOP_LT: 20 (0x14)<br>
+ JSOP_NE: 19 (0x13)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>lval, rval</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(lval OP rval)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values from the stack and pushes the result of comparing them.</p>
+ </dd>
+ <dt id="JSOP_STRICTEQ">JSOP_STRICTEQ [-2, +1] (DETECTING, IC)<br>
+ JSOP_STRICTNE [-2, +1] (DETECTING, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>JSOP_STRICTEQ: 72 (0x48)<br>
+ JSOP_STRICTNE: 73 (0x49)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>lval, rval</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(lval OP rval)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values from the stack, then pushes the result of applying the operator to the two values.</p>
+ </dd>
+</dl>
+
+<h4 id="Arithmetic_Operators">Arithmetic Operators</h4>
+
+<dl>
+ <dt id="JSOP_ADD">JSOP_ADD [-2, +1] (IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>27 (0x1b)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>lval, rval</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(lval + rval)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes the result of <code>lval + rval</code>.</p>
+ </dd>
+ <dt id="JSOP_DEC">JSOP_DEC [-1, +1] (IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>235 (0xeb)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(val - 1)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the numeric value <code>val</code> from the stack, then pushes <code>val - 1</code>.</p>
+ </dd>
+ <dt id="JSOP_INC">JSOP_INC [-1, +1] (IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>234 (0xea)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(val + 1)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the numeric value <code>val</code> from the stack, then pushes <code>val + 1</code>.</p>
+ </dd>
+ <dt id="JSOP_DIV">JSOP_DIV [-2, +1] (IC)<br>
+ JSOP_MOD [-2, +1] (IC)<br>
+ JSOP_MUL [-2, +1] (IC)<br>
+ JSOP_SUB [-2, +1] (IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>JSOP_DIV: 30 (0x1e)<br>
+ JSOP_MOD: 31 (0x1f)<br>
+ JSOP_MUL: 29 (0x1d)<br>
+ JSOP_SUB: 28 (0x1c)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>lval, rval</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(lval OP rval)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes the result of applying the arithmetic operation to them.</p>
+ </dd>
+ <dt id="JSOP_NEG">JSOP_NEG [-1, +1] (IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>34 (0x22)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(-val)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the value <code>val</code> from the stack, then pushes <code>-val</code>.</p>
+ </dd>
+ <dt id="JSOP_POS">JSOP_POS [-1, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>35 (0x23)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(+val)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the value <code>val</code> from the stack, then pushes <code>+val</code>. (<code>+val</code> is the value converted to a number.)</p>
+ </dd>
+ <dt id="JSOP_POW">JSOP_POW [-2, +1] (IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>150 (0x96)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>lval, rval</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(lval ** rval)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes the result of <code>Math.pow(lval, rval)</code>.</p>
+ </dd>
+ <dt id="JSOP_TONUMERIC">JSOP_TONUMERIC [-1, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>236 (0xec)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>ToNumeric(val)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pop <code>val</code> from the stack, then push the result of <code>ToNumeric(val)</code>.</p>
+ </dd>
+</dl>
+
+<h4 id="Bitwise_Logical_Operators">Bitwise Logical Operators</h4>
+
+<dl>
+ <dt id="JSOP_BITAND">JSOP_BITAND [-2, +1] (IC)<br>
+ JSOP_BITOR [-2, +1] (IC)<br>
+ JSOP_BITXOR [-2, +1] (IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>JSOP_BITAND: 17 (0x11)<br>
+ JSOP_BITOR: 15 (0x0f)<br>
+ JSOP_BITXOR: 16 (0x10)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>lval, rval</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(lval OP rval)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes the result of the operation applied to the two operands, converting both to 32-bit signed integers if necessary.</p>
+ </dd>
+ <dt id="JSOP_BITNOT">JSOP_BITNOT [-1, +1] (IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>33 (0x21)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(~val)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the value <code>val</code> from the stack, then pushes <code>~val</code>.</p>
+ </dd>
+</dl>
+
+<h4 id="Bitwise_Shift_Operators">Bitwise Shift Operators</h4>
+
+<dl>
+ <dt id="JSOP_LSH">JSOP_LSH [-2, +1] (IC)<br>
+ JSOP_RSH [-2, +1] (IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>JSOP_LSH: 24 (0x18)<br>
+ JSOP_RSH: 25 (0x19)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>lval, rval</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(lval OP rval)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes the result of the operation applied to the operands.</p>
+ </dd>
+ <dt id="JSOP_URSH">JSOP_URSH [-2, +1] (IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>26 (0x1a)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>lval, rval</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(lval &gt;&gt;&gt; rval)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values <code>lval</code> and <code>rval</code> from the stack, then pushes <code>lval &gt;&gt;&gt; rval</code>.</p>
+ </dd>
+</dl>
+
+<h4 id="Logical_Operators">Logical Operators</h4>
+
+<dl>
+ <dt id="JSOP_NOT">JSOP_NOT [-1, +1] (DETECTING, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>32 (0x20)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(!val)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the value <code>val</code> from the stack, then pushes <code>!val</code>.</p>
+ </dd>
+</dl>
+
+<h4 id="Special_Operators">Special Operators</h4>
+
+<dl>
+ <dt id="JSOP_DELELEM">JSOP_DELELEM [-2, +1] (ELEM, CHECKSLOPPY)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>38 (0x26)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, propval</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>succeeded</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values on the stack as <code>propval</code> and <code>obj</code>, deletes <code>propval</code> property from <code>obj</code>, pushes <code>true</code> onto the stack if succeeded, <code>false</code> if not.</p>
+ </dd>
+ <dt id="JSOP_DELPROP">JSOP_DELPROP [-1, +1] (ATOM, PROP, CHECKSLOPPY)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>37 (0x25)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>succeeded</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top of stack value, deletes property from it, pushes <code>true</code> onto the stack if succeeded, <code>false</code> if not.</p>
+ </dd>
+ <dt id="JSOP_IN">JSOP_IN [-2, +1] (IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>113 (0x71)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>id, obj</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(id in obj)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values <code>id</code> and <code>obj</code> from the stack, then pushes <code>id in obj</code>. This will throw a <code>TypeError</code> if <code>obj</code> is not an object.</p>
+
+ <p>Note that <code>obj</code> is the top value.</p>
+ </dd>
+ <dt id="JSOP_INSTANCEOF">JSOP_INSTANCEOF [-2, +1] (IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>114 (0x72)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, ctor</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(obj instanceof ctor)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values <code>obj</code> and <code>ctor</code> from the stack, then pushes <code>obj instanceof ctor</code>. This will throw a <code>TypeError</code> if <code>obj</code> is not an object.</p>
+ </dd>
+ <dt id="JSOP_STRICTDELPROP">JSOP_STRICTDELPROP [-1, +1] (ATOM, PROP, CHECKSTRICT)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>46 (0x2e)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>succeeded</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top of stack value and attempts to delete the given property from it. Pushes <code>true</code> onto success, else throws a TypeError per strict mode property-deletion requirements.</p>
+ </dd>
+ <dt id="JSOP_TYPEOF">JSOP_TYPEOF [-1, +1] (DETECTING, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>39 (0x27)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(typeof val)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the value <code>val</code> from the stack, then pushes <code>typeof val</code>.</p>
+ </dd>
+ <dt id="JSOP_TYPEOFEXPR">JSOP_TYPEOFEXPR [-1, +1] (DETECTING, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>196 (0xc4)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(typeof val)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top stack value as <code>val</code> and pushes <code>typeof val</code>. Note that this opcode isn't used when, in the original source code, <code>val</code> is a name -- see <code><code>JSOP_TYPEOF</code></code> for that. (This is because <code>typeof undefinedName === "undefined"</code>.)</p>
+ </dd>
+ <dt id="JSOP_VOID">JSOP_VOID [-1, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>40 (0x28)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>undefined</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top value on the stack and pushes <code>undefined</code>.</p>
+ </dd>
+</dl>
+
+<h4 id="Stack_Operations">Stack Operations</h4>
+
+<dl>
+ <dt id="JSOP_DUP">JSOP_DUP [-1, +2]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>12 (0x0c)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>v</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>v, v</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes a copy of the top value on the stack.</p>
+ </dd>
+ <dt id="JSOP_DUP2">JSOP_DUP2 [-2, +4]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>13 (0x0d)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>v1, v2</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>v1, v2, v1, v2</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Duplicates the top two values on the stack.</p>
+ </dd>
+ <dt id="JSOP_DUPAT">JSOP_DUPAT [-0, +1] (UINT24)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>44 (0x2c)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint24_t n</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>4</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>v[n], v[n-1], ..., v[1], v[0]</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>v[n], v[n-1], ..., v[1], v[0], v[n]</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Duplicates the Nth value from the top onto the stack.</p>
+ </dd>
+ <dt id="JSOP_PICK">JSOP_PICK [-0, +0] (UINT8)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>133 (0x85)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint8_t n</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>2</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>v[n], v[n-1], ..., v[1], v[0]</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>v[n-1], ..., v[1], v[0], v[n]</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Picks the nth element from the stack and moves it to the top of the stack.</p>
+ </dd>
+ <dt id="JSOP_POP">JSOP_POP [-1, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>81 (0x51)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>v</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top value off the stack.</p>
+ </dd>
+ <dt id="JSOP_POPN">JSOP_POPN [-n, +0] (UINT16)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>11 (0x0b)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint16_t n</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>3</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>v[n-1], ..., v[1], v[0]</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top <code>n</code> values from the stack.</p>
+ </dd>
+ <dt id="JSOP_SWAP">JSOP_SWAP [-2, +2]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>10 (0x0a)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>v1, v2</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>v2, v1</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Swaps the top two values on the stack. This is useful for things like post-increment/decrement.</p>
+ </dd>
+ <dt id="JSOP_UNPICK">JSOP_UNPICK [-0, +0] (UINT8)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>183 (0xb7)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint8_t n</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>2</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>v[n], v[n-1], ..., v[1], v[0]</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>v[0], v[n], v[n-1], ..., v[1]</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Moves the top of the stack value under the nth element of the stack. Note: n must NOT be 0.</p>
+ </dd>
+</dl>
+
+<h4 id="Debugger_2">Debugger</h4>
+
+<dl>
+ <dt id="JSOP_DEBUGAFTERYIELD">JSOP_DEBUGAFTERYIELD [-0, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>208 (0xd0)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Bytecode emitted after <code>yield</code> expressions to help the Debugger fix up the frame in the JITs. No-op in the interpreter.</p>
+ </dd>
+</dl>
+
+<h3 id="Literals">Literals</h3>
+
+<h4 id="Constants">Constants</h4>
+
+<dl>
+ <dt id="JSOP_BIGINT">JSOP_BIGINT [-0, +1] (BIGINT)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>237 (0xed)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t constIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes a BigInt constant onto the stack.</p>
+ </dd>
+ <dt id="JSOP_BUILTINPROTO">JSOP_BUILTINPROTO [-0, +1] (UINT8)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>221 (0xdd)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint8_t kind</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>2</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>%BuiltinPrototype%</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes the current global's builtin prototype for a given proto key.</p>
+ </dd>
+ <dt id="JSOP_DOUBLE">JSOP_DOUBLE [-0, +1] (DOUBLE)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>60 (0x3c)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>DoubleValue literal</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>9</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes numeric constant onto the stack.</p>
+ </dd>
+ <dt id="JSOP_FALSE">JSOP_FALSE [-0, +1]<br>
+ JSOP_TRUE [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>JSOP_FALSE: 66 (0x42)<br>
+ JSOP_TRUE: 67 (0x43)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>true/false</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes boolean value onto the stack.</p>
+ </dd>
+ <dt id="JSOP_INT32">JSOP_INT32 [-0, +1] (INT32)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>216 (0xd8)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>int32_t val</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes 32-bit int immediate integer operand onto the stack.</p>
+ </dd>
+ <dt id="JSOP_INT8">JSOP_INT8 [-0, +1] (INT8)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>215 (0xd7)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>int8_t val</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>2</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes 8-bit int immediate integer operand onto the stack.</p>
+ </dd>
+ <dt id="JSOP_IS_CONSTRUCTING">JSOP_IS_CONSTRUCTING [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>65 (0x41)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>JS_IS_CONSTRUCTING</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes <code><code>JS_IS_CONSTRUCTING</code></code></p>
+ </dd>
+ <dt id="JSOP_NULL">JSOP_NULL [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>64 (0x40)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>null</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes <code>null</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_ONE">JSOP_ONE [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>63 (0x3f)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>1</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes <code>1</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_STRING">JSOP_STRING [-0, +1] (ATOM)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>61 (0x3d)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t atomIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>atom</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes string constant onto the stack.</p>
+ </dd>
+ <dt id="JSOP_SYMBOL">JSOP_SYMBOL [-0, +1] (UINT8)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>45 (0x2d)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint8_t symbol (the JS::SymbolCode of the symbol to use)</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>2</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>symbol</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Push a well-known symbol onto the operand stack.</p>
+ </dd>
+ <dt id="JSOP_UINT16">JSOP_UINT16 [-0, +1] (UINT16)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>88 (0x58)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint16_t val</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>3</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes unsigned 16-bit int immediate integer operand onto the stack.</p>
+ </dd>
+ <dt id="JSOP_UINT24">JSOP_UINT24 [-0, +1] (UINT24)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>188 (0xbc)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint24_t val</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>4</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes unsigned 24-bit int immediate integer operand onto the stack.</p>
+ </dd>
+ <dt id="JSOP_UNDEFINED">JSOP_UNDEFINED [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>1 (0x01)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>undefined</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes <code>undefined</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_UNINITIALIZED">JSOP_UNINITIALIZED [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>142 (0x8e)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>uninitialized</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes a <code>JS_UNINITIALIZED_LEXICAL</code> value onto the stack, representing an uninitialized lexical binding.</p>
+
+ <p>This opcode is used with the <code>JSOP_INITLEXICAL</code> opcode.</p>
+ </dd>
+ <dt id="JSOP_ZERO">JSOP_ZERO [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>62 (0x3e)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>0</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes <code>0</code> onto the stack.</p>
+ </dd>
+</dl>
+
+<h4 id="Object">Object</h4>
+
+<dl>
+ <dt id="JSOP_CALLELEM">JSOP_CALLELEM [-2, +1] (ELEM, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>193 (0xc1)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, propval</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj[propval]</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values on the stack as <code>propval</code> and <code>obj</code>, pushes <code>propval</code> property of <code>obj</code> onto the stack. Requires the value under <code>obj</code> to be the receiver of the following call.</p>
+
+ <p>Like <code>JSOP_GETELEM</code> but for call context.</p>
+ </dd>
+ <dt id="JSOP_CALLPROP">JSOP_CALLPROP [-1, +1] (ATOM, PROP, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>184 (0xb8)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj[name]</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top of stack value, pushes property of it onto the stack. Requires the value under <code>obj</code> to be the receiver of the following call.</p>
+
+ <p>Like <code>JSOP_GETPROP</code> but for call context.</p>
+ </dd>
+ <dt id="JSOP_CALLSITEOBJ">JSOP_CALLSITEOBJ [-0, +1] (OBJECT)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>101 (0x65)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t objectIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes the call site object specified by objectIndex onto the stack. Defines the raw property specified by objectIndex + 1 on the call site object and freezes both the call site object as well as its raw property.</p>
+ </dd>
+ <dt id="JSOP_CHECKCLASSHERITAGE">JSOP_CHECKCLASSHERITAGE [-1, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>51 (0x33)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>heritage</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>heritage</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Ensures the result of a class's heritage expression is either null or a constructor.</p>
+ </dd>
+ <dt id="JSOP_CHECKOBJCOERCIBLE">JSOP_CHECKOBJCOERCIBLE [-1, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>163 (0xa3)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Throw if the value on the stack is not coerscible to an object (is |null| or |undefined|).</p>
+ </dd>
+ <dt id="JSOP_GETBOUNDNAME">JSOP_GETBOUNDNAME [-1, +1] (ATOM, NAME, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>195 (0xc3)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>env</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>v</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops an environment, gets the value of a bound name on it. If the name is not bound to the environment, throw a ReferenceError. Used in conjunction with BINDNAME.</p>
+ </dd>
+ <dt id="JSOP_GETELEM">JSOP_GETELEM [-2, +1] (ELEM, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>55 (0x37)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, propval</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj[propval]</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values on the stack as <code>propval</code> and <code>obj</code>, pushes <code>propval</code> property of <code>obj</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_GETELEM_SUPER">JSOP_GETELEM_SUPER [-3, +1] (ELEM, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>125 (0x7d)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>receiver, propval, obj</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj[propval]</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>LIKE <code>JSOP_GETELEM</code> but takes receiver on stack, and the propval is evaluated before the obj.</p>
+ </dd>
+ <dt id="JSOP_GETPROP">JSOP_GETPROP [-1, +1] (ATOM, PROP, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>53 (0x35)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj[name]</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top of stack value, pushes property of it onto the stack.</p>
+ </dd>
+ <dt id="JSOP_GETPROP_SUPER">JSOP_GETPROP_SUPER [-2, +1] (ATOM, PROP, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>104 (0x68)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>receiver, obj</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj[name]</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values, and pushes the property of one, using the other as the receiver.</p>
+ </dd>
+ <dt id="JSOP_INITELEM">JSOP_INITELEM [-3, +1] (ELEM, PROPINIT, DETECTING, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>94 (0x5e)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, id, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initialize a numeric property in an object literal, like <code>{1: x}</code>.</p>
+
+ <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_INITELEM_GETTER">JSOP_INITELEM_GETTER [-3, +1] (ELEM, PROPINIT, DETECTING)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>99 (0x63)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, id, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initialize a numeric getter in an object literal like <code>{get 2() {}}</code>.</p>
+
+ <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> getter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_INITELEM_SETTER">JSOP_INITELEM_SETTER [-3, +1] (ELEM, PROPINIT, DETECTING)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>100 (0x64)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, id, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initialize a numeric setter in an object literal like <code>{set 2(v) {}}</code>.</p>
+
+ <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> setter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_INITHIDDENELEM">JSOP_INITHIDDENELEM [-3, +1] (ELEM, PROPINIT, DETECTING, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>175 (0xaf)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, id, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initialize a non-enumerable numeric property in an object literal, like <code>{1: x}</code>.</p>
+
+ <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_INITHIDDENELEM_GETTER">JSOP_INITHIDDENELEM_GETTER [-3, +1] (ELEM, PROPINIT, DETECTING)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>173 (0xad)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, id, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initialize a non-enumerable numeric getter in an object literal like <code>{get 2() {}}</code>.</p>
+
+ <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> getter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_INITHIDDENELEM_SETTER">JSOP_INITHIDDENELEM_SETTER [-3, +1] (ELEM, PROPINIT, DETECTING)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>174 (0xae)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, id, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initialize a non-enumerable numeric setter in an object literal like <code>{set 2(v) {}}</code>.</p>
+
+ <p>Pops the top three values on the stack as <code>val</code>, <code>id</code> and <code>obj</code>, defines <code>id</code> setter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_INITHIDDENPROP">JSOP_INITHIDDENPROP [-2, +1] (ATOM, PROP, PROPINIT, DETECTING, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>147 (0x93)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initialize a non-enumerable data-property on an object.</p>
+
+ <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines <code>nameIndex</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_INITHIDDENPROP_GETTER">JSOP_INITHIDDENPROP_GETTER [-2, +1] (ATOM, PROP, PROPINIT, DETECTING)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>171 (0xab)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initialize a non-enumerable getter in an object literal.</p>
+
+ <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines getter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_INITHIDDENPROP_SETTER">JSOP_INITHIDDENPROP_SETTER [-2, +1] (ATOM, PROP, PROPINIT, DETECTING)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>172 (0xac)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initialize a non-enumerable setter in an object literal.</p>
+
+ <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines setter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_INITHOMEOBJECT">JSOP_INITHOMEOBJECT [-2, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>92 (0x5c)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>fun, homeObject</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>fun</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initialize the home object for functions with super bindings.</p>
+
+ <p>This opcode takes the function and the object to be the home object, does the set, and leaves the function on the stack.</p>
+ </dd>
+ <dt id="JSOP_INITLOCKEDPROP">JSOP_INITLOCKEDPROP [-2, +1] (ATOM, PROP, PROPINIT, DETECTING, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>146 (0x92)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initialize a non-configurable, non-writable, non-enumerable data-property on an object.</p>
+
+ <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines <code>nameIndex</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_INITPROP">JSOP_INITPROP [-2, +1] (ATOM, PROP, PROPINIT, DETECTING, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>93 (0x5d)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initialize a named property in an object literal, like <code>{a: x}</code>.</p>
+
+ <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines <code>nameIndex</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_INITPROP_GETTER">JSOP_INITPROP_GETTER [-2, +1] (ATOM, PROP, PROPINIT, DETECTING)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>97 (0x61)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initialize a getter in an object literal.</p>
+
+ <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines getter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_INITPROP_SETTER">JSOP_INITPROP_SETTER [-2, +1] (ATOM, PROP, PROPINIT, DETECTING)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>98 (0x62)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initialize a setter in an object literal.</p>
+
+ <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, defines setter of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_MUTATEPROTO">JSOP_MUTATEPROTO [-2, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>194 (0xc2)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, newProto</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>succeeded</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p><code>__proto__: v</code> inside an object initializer.</p>
+
+ <p>Pops the top two values on the stack as <code>newProto</code> and <code>obj</code>, sets prototype of <code>obj</code> as <code>newProto</code>, pushes <code>true</code> onto the stack if succeeded, <code>false</code> if not.</p>
+ </dd>
+ <dt id="JSOP_NEWINIT">JSOP_NEWINIT [-0, +1] (UINT32, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>89 (0x59)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>(uint32_t extra)</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes newly created object onto the stack.</p>
+
+ <p>This opcode has four extra bytes so it can be exchanged with <code>JSOP_NEWOBJECT</code> during emit.</p>
+ </dd>
+ <dt id="JSOP_NEWOBJECT">JSOP_NEWOBJECT [-0, +1] (OBJECT, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>91 (0x5b)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t baseobjIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes newly created object onto the stack.</p>
+
+ <p>This opcode takes an object with the final shape, which can be set at the start and slots then filled in directly.</p>
+ </dd>
+ <dt id="JSOP_OBJECT">JSOP_OBJECT [-0, +1] (OBJECT)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>80 (0x50)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t objectIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes deep-cloned object literal or singleton onto the stack.</p>
+ </dd>
+ <dt id="JSOP_OBJWITHPROTO">JSOP_OBJWITHPROTO [-1, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>83 (0x53)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>proto</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes newly created object onto the stack with provided [[Prototype]].</p>
+ </dd>
+ <dt id="JSOP_SETELEM">JSOP_SETELEM [-3, +1] (ELEM, PROPSET, DETECTING, CHECKSLOPPY, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>56 (0x38)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, propval, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top three values on the stack as <code>val</code>, <code>propval</code> and <code>obj</code>, sets <code>propval</code> property of <code>obj</code> as <code>val</code>, pushes <code>val</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_SETELEM_SUPER">JSOP_SETELEM_SUPER [-4, +1] (ELEM, PROPSET, DETECTING, CHECKSLOPPY)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>158 (0x9e)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>receiver, propval, obj, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>LIKE <code>JSOP_SETELEM</code>, but takes receiver on the stack, and the propval is evaluated before the base.</p>
+ </dd>
+ <dt id="JSOP_SETPROP">JSOP_SETPROP [-2, +1] (ATOM, PROP, PROPSET, DETECTING, CHECKSLOPPY, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>54 (0x36)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code> and performs <code>obj.prop = val</code>, pushing <code>val</code> back onto the stack.</p>
+ </dd>
+ <dt id="JSOP_SETPROP_SUPER">JSOP_SETPROP_SUPER [-3, +1] (ATOM, PROP, PROPSET, DETECTING, CHECKSLOPPY)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>107 (0x6b)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>receiver, obj, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top three values on the stack as <code>val</code>, <code>obj</code> and <code>receiver</code>, and performs <code>obj.prop = val</code>, pushing <code>val</code> back onto the stack.</p>
+ </dd>
+ <dt id="JSOP_STRICTDELELEM">JSOP_STRICTDELELEM [-2, +1] (ELEM, CHECKSTRICT)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>47 (0x2f)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, propval</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>succeeded</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values on the stack as <code>propval</code> and <code>obj</code>, and attempts to delete <code>propval</code> property from <code>obj</code>. Pushes <code>true</code> onto the stack on success, else throws a TypeError per strict mode property deletion requirements.</p>
+ </dd>
+ <dt id="JSOP_STRICTSETELEM">JSOP_STRICTSETELEM [-3, +1] (ELEM, PROPSET, DETECTING, CHECKSTRICT, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>57 (0x39)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, propval, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top three values on the stack as <code>val</code>, <code>propval</code> and <code>obj</code>, sets <code>propval</code> property of <code>obj</code> as <code>val</code>, pushes <code>val</code> onto the stack. Throws a TypeError if the set fails, per strict mode semantics.</p>
+ </dd>
+ <dt id="JSOP_STRICTSETELEM_SUPER">JSOP_STRICTSETELEM_SUPER [-4, +1] (ELEM, PROPSET, DETECTING, CHECKSTRICT)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>159 (0x9f)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>receiver, propval, obj, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>LIKE <code>JSOP_STRICTSETELEM</code>, but takes receiver on the stack, and the propval is evaluated before the base.</p>
+ </dd>
+ <dt id="JSOP_STRICTSETPROP">JSOP_STRICTSETPROP [-2, +1] (ATOM, PROP, PROPSET, DETECTING, CHECKSTRICT, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>48 (0x30)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, and performs <code>obj.prop = val</code>, pushing <code>val</code> back onto the stack. Throws a TypeError if the set-operation failed (per strict mode semantics).</p>
+ </dd>
+ <dt id="JSOP_STRICTSETPROP_SUPER">JSOP_STRICTSETPROP_SUPER [-3, +1] (ATOM, PROP, PROPSET, DETECTING, CHECKSTRICT)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>105 (0x69)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>receiver, obj, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top three values on the stack as <code>val</code> and <code>obj</code>, and <code>receiver</code>, and performs <code>obj.prop = val</code>, pushing <code>val</code> back onto the stack. Throws a TypeError if the set-operation failed (per strict mode semantics).</p>
+ </dd>
+ <dt id="JSOP_TOID">JSOP_TOID [-1, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>225 (0xe1)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>propertyNameValue</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>propertyKey</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Replace the top-of-stack value propertyNameValue with ToPropertyKey(propertyNameValue).</p>
+ </dd>
+</dl>
+
+<h4 id="Array">Array</h4>
+
+<dl>
+ <dt id="JSOP_HOLE">JSOP_HOLE [-0, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>218 (0xda)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>hole</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes a <code>JS_ELEMENTS_HOLE</code> value onto the stack, representing an omitted property in an array literal (e.g. property 0 in the array <code>[, 1]</code>).</p>
+
+ <p>This opcode is used with the <code>JSOP_NEWARRAY</code> opcode.</p>
+ </dd>
+ <dt id="JSOP_INITELEM_ARRAY">JSOP_INITELEM_ARRAY [-2, +1] (UINT32, ELEM, PROPINIT, DETECTING, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>96 (0x60)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t index</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Initialize an array element.</p>
+
+ <p>Pops the top two values on the stack as <code>val</code> and <code>obj</code>, sets <code>index</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> onto the stack.</p>
+ </dd>
+ <dt id="JSOP_INITELEM_INC">JSOP_INITELEM_INC [-3, +2] (ELEM, PROPINIT, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>95 (0x5f)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj, index, val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj, (index + 1)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top three values on the stack as <code>val</code>, <code>index</code> and <code>obj</code>, sets <code>index</code> property of <code>obj</code> as <code>val</code>, pushes <code>obj</code> and <code>index + 1</code> onto the stack.</p>
+
+ <p>This opcode is used in Array literals with spread and spreadcall arguments.</p>
+ </dd>
+ <dt id="JSOP_LENGTH">JSOP_LENGTH [-1, +1] (ATOM, PROP, TYPESET, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>217 (0xd9)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t nameIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>obj</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj['length']</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top of stack value, pushes the <code>length</code> property of it onto the stack.</p>
+ </dd>
+ <dt id="JSOP_NEWARRAY">JSOP_NEWARRAY [-0, +1] (UINT32, IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>90 (0x5a)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t length</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes newly created array onto the stack.</p>
+
+ <p>This opcode takes the final length, which is preallocated.</p>
+ </dd>
+ <dt id="JSOP_NEWARRAY_COPYONWRITE">JSOP_NEWARRAY_COPYONWRITE [-0, +1] (OBJECT)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>102 (0x66)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t objectIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>obj</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes a newly created array onto the stack, whose elements are the same as that of a template object's copy on write elements.</p>
+ </dd>
+</dl>
+
+<h4 id="RegExp">RegExp</h4>
+
+<dl>
+ <dt id="JSOP_REGEXP">JSOP_REGEXP [-0, +1] (REGEXP)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>160 (0xa0)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t regexpIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>regexp</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes a regular expression literal onto the stack. It requires special "clone on exec" handling.</p>
+ </dd>
+</dl>
+
+<h4 id="Class">Class</h4>
+
+<dl>
+ <dt id="JSOP_CLASSCONSTRUCTOR">JSOP_CLASSCONSTRUCTOR [-0, +1] (ATOM)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>167 (0xa7)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>atom className</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>constructor</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Push a default constructor for a base class literal.</p>
+ </dd>
+ <dt id="JSOP_DERIVEDCONSTRUCTOR">JSOP_DERIVEDCONSTRUCTOR [-1, +1] (ATOM)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>168 (0xa8)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>atom className</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>proto</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>constructor</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Push a default constructor for a derived class literal.</p>
+ </dd>
+</dl>
+
+<h3 id="Other">Other</h3>
+
+<dl>
+ <dt id="JSOP_DEBUGCHECKSELFHOSTED">JSOP_DEBUGCHECKSELFHOSTED [-1, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>177 (0xb1)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>checkVal</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>checkVal</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Examines the top stack value, asserting that it's either a self-hosted function or a self-hosted intrinsic. This opcode does nothing in a non-debug build.</p>
+ </dd>
+ <dt id="JSOP_FORCEINTERPRETER">JSOP_FORCEINTERPRETER [-0, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>207 (0xcf)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>No-op bytecode only emitted in some self-hosted functions. Not handled by the JITs so the script always runs in the interpreter.</p>
+ </dd>
+ <dt id="JSOP_HASOWN">JSOP_HASOWN [-2, +1] (IC)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>211 (0xd3)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>id, obj</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>(obj.hasOwnProperty(id))</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pops the top two values <code>id</code> and <code>obj</code> from the stack, then pushes obj.hasOwnProperty(id)</p>
+
+ <p>Note that <code>obj</code> is the top value.</p>
+ </dd>
+ <dt id="JSOP_ITERNEXT">JSOP_ITERNEXT [-1, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>222 (0xde)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>val</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>NOP opcode to hint to IonBuilder that the value on top of the stack is the (likely string) key in a for-in loop.</p>
+ </dd>
+ <dt id="JSOP_JUMPTARGET">JSOP_JUMPTARGET [-0, +0] (ICINDEX)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>230 (0xe6)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t icIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>This opcode is a no-op and it indicates the location of a jump instruction target. Some other opcodes act as jump targets as well, see BytecodeIsJumpTarget. The IC index is used by the Baseline interpreter.</p>
+ </dd>
+ <dt id="JSOP_LINENO">JSOP_LINENO [-0, +0] (UINT32)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>119 (0x77)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint32_t lineno</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>5</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Embedded lineno to speedup <code>pc-&gt;line</code> mapping.</p>
+ </dd>
+ <dt id="JSOP_NOP">JSOP_NOP [-0, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>0 (0x00)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>No operation is performed.</p>
+ </dd>
+ <dt id="JSOP_NOP_DESTRUCTURING">JSOP_NOP_DESTRUCTURING [-0, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>229 (0xe5)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>No-op used by the decompiler to produce nicer error messages about destructuring code.</p>
+ </dd>
+ <dt id="JSOP_RESUMEINDEX">JSOP_RESUMEINDEX [-0, +1] (RESUMEINDEX)</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>126 (0x7e)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code>uint24_t resumeIndex</code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>4</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>resumeIndex</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Pushes a resumeIndex (stored as 24-bit operand) on the stack.</p>
+
+ <p>Resume indexes are used for ops like <code>JSOP_YIELD</code> and <code>JSOP_GOSUB</code>. <code>JSS</code>cript and BaselineScript have lists of resume entries (one for each resumeIndex); this lets the JIT resume at these ops from JIT code.</p>
+ </dd>
+ <dt id="JSOP_TOSTRING">JSOP_TOSTRING [-1, +1]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>228 (0xe4)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code>val</code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code>ToString(val)</code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>Converts the value on the top of the stack to a String.</p>
+ </dd>
+ <dt id="JSOP_TRY_DESTRUCTURING">JSOP_TRY_DESTRUCTURING [-0, +0]</dt>
+ <dd>
+ <table class="standard-table">
+ <tbody>
+ <tr>
+ <th>Value</th>
+ <td><code>220 (0xdc)</code></td>
+ </tr>
+ <tr>
+ <th>Operands</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Length</th>
+ <td><code>1</code></td>
+ </tr>
+ <tr>
+ <th>Stack Uses</th>
+ <td><code> </code></td>
+ </tr>
+ <tr>
+ <th>Stack Defs</th>
+ <td><code> </code></td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>No-op used by the exception unwinder to determine the correct environment to unwind to when performing IteratorClose due to destructuring.</p>
+ </dd>
+</dl>
diff --git a/files/ja/mozilla/projects/spidermonkey/internals/garbage_collection/index.html b/files/ja/mozilla/projects/spidermonkey/internals/garbage_collection/index.html
new file mode 100644
index 0000000000..e12b08f89b
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/internals/garbage_collection/index.html
@@ -0,0 +1,131 @@
+---
+title: Garbage collection
+slug: Mozilla/Projects/SpiderMonkey/Internals/Garbage_collection
+translation_of: Mozilla/Projects/SpiderMonkey/Internals/Garbage_collection
+---
+<div class="note">
+ <strong>この文書について: これはSpiderMonkeyのGC内部についての雑多な草案です。内容が古いまたは不正確な場合があります。</strong></div>
+<div class="warning">
+ <p><strong>警告:</strong>SpiderMonkey ガベージコレクションTipsは悲しいことに古い内容であり、完全に無視されるべきものとなってしまいました、</p>
+</div>
+<h2 id="デザインの概要">デザインの概要</h2>
+<p>SpiderMonkeyは、オプションでインクリメンタルマーキングモード(<span style="line-height: 1.5;">incremental marking mode)を有効にされたマーク &amp; スイープ方式のガベージコレクション(GC)を持っています。マークフェイズでは、インクリメンタルマーキングに必要なマークスタックを用います。ファイナライザを伴わないオブジェクトのスイープは、バックグラウンドスレッドにて実行されます。</span></p>
+<p>世代別GCおよびコンパクションGC(compacting GC)の実装に向けた作業が進行中です。</p>
+<p> </p>
+<h2 id="主要なデータ構造">主要なデータ構造</h2>
+<h3 id="Cell">Cell</h3>
+<p><strong>Cell</strong> は、外部からも使用される、GCによって割当と回収が行われるメモリーの単位です。つまり、GC以外から見れば、GCの仕事はCellの割当と自動的な回収ということになります。</p>
+<p>例えばJSObjectのように、CellはGCによって割り当てられる全てのクラスの基底クラスとなります。</p>
+<h3 id="Allocation_Kind">Allocation Kind</h3>
+<p>Cellは、Allocation Kindにより分類されます。Allocation Kindはオブジェクトのサイズおよびファイナライズの振る舞いを定義します。Allocation Kindは<strong>AllocKind列挙型</strong>によって定義されます。</p>
+<p>Arenas always hold objects of the same allocation kind. Thus, an arena holds objects all of the same size and finalization behavior.</p>
+<h3 id="Compartment">Compartment</h3>
+<p>JSヒープはCompartmentに分割されます。Compartmentの要点は以下になります:</p>
+<ul>
+ <li>あらゆるCell(JSヒープオブジェクト)は、Compartmentのどれか一つに属します(ヒープはCompartmentに分類されることを意味します)。</li>
+ <li>オブジェクトは、別のCompartment内のオブジェクトに対する直接のポインタを保持することはできません。代わりに、他のオブジェクト用のラッパーを保持することになります。ラッパーは、Compartment間のセキュリティチェックに用いられます。同じCompartment内のオブジェクトは同じアクセス権限を持っているため、セキュリティチェックの必要はありませんが、cross-compartment wrapper(Compartment間ラッパー)のトラバース時にチェックが行われるかもしれません。</li>
+ <li>エンジンは同時にひとつのCompartmentのGCが可能です。同様に、エンジンは他をGCしている場合を除いて、Compartmentの集合に対してGCが可能です。cross-compartment wrapperは、ひとつないし複数のCompartmentのGCのrootとして用いられます。</li>
+</ul>
+<p>Compartmentは、SpiderMonkeyにおける、GCを含む特にメモリに関連した事項の構造的かつ分野横断的なコンセプトになっています。詳細は<a href="“/ja/SpiderMonkey/SpiderMonkey_compartments" title="https://developer.mozilla.org/ja/SpiderMonkey/SpiderMonkey_compartments">Compartments</a>を参照してください。</p>
+<p><strong>JSCompartment</strong>はGCに関連した重要なフィールドを保持しています:</p>
+<dl>
+ <dt style="margin-left: 40px;">
+ ArenaLists型 arenas</dt>
+ <dd style="margin-left: 40px;">
+ この構造体は、それぞれのAllocation KindのArenaの2つのリストを記録しています。未使用のArenaのリストと、割当済みのArenaのリストです。</dd>
+ <dt style="margin-left: 40px;">
+ bool型 needsBarrier</dt>
+ <dd style="margin-left: 40px;">
+ このCompartmentにおけるGCが、インクリメンタルバリアの実行を必要とする場合にtrueとなります。すなわり、このCompartmentが現在インクリメンタルGCを実行しているかどうかを表します。</dd>
+ <dt style="margin-left: 40px;">
+ CompartmentGCState型 gcState</dt>
+ <dd style="margin-left: 40px;">
+ このCompartmentが現在GCを実行しているかどうかを表します。もし実行していなければ、GCの実行がスケジュールされているかを表します。</dd>
+ <dt style="margin-left: 40px;">
+ size_t型 gcBytes, gcTriggerBytes, gcMallocBytes, gcMaxMallocBytes</dt>
+ <dd style="margin-left: 40px;">
+ GCのスケジュールに使用される情報を表します</dd>
+ <dt style="margin-left: 40px;">
+ WrapperMap型 crossCompartmentWrappers</dt>
+ <dd style="margin-left: 40px;">
+ このCompartment内のオブジェクトのラッパーの集合です。Mapのキーはオブジェクト、値はラッパーです。同じオブジェクトに対するラッパーが複数回要求される場合、エンジンが同一のラッパーを毎回返せるようにするためにマッピングが必要とされます。ラッパーオブジェクトの集合は同様に、単一および複数のcompartmentの(non-globalな)GCにおいても必要となります</dd>
+</dl>
+<h3 id="Zone">Zone</h3>
+<p>TODO(原文ママ)</p>
+<h3 id="Chunk">Chunk</h3>
+<p>Chunkはメモリの割当における最大の内部単位となります。</p>
+<p>Chunkは1MBのサイズを持ち、内部にArena、パディング、Mark Bitmap(ChunkBitmap)、解放されたArenaのビットマップ、およびChunkヘッダ(ChunkInfo)を保持しています。</p>
+<p>ChunkInfoは、ChunkInfo::freeArenasHeadから開始しており、ArenaHeader::nextを介してリンクしている未割当のArenaのリストを保持します。また、ChunkInfoは未割当のArenaの数の基本的な情報を保持しています。</p>
+<p>TODO ChunkInfo next/prev(原文ママ)</p>
+<h3 id="Arena">Arena</h3>
+<p>Arenaはメモリ割当の内部単位です。</p>
+<p>Arenaは1ページ(ほぼ全てのプラットフォームで4096バイト)の大きさであり、ArenaHeaderと、僅かなパディングとなるバイト領域と、整列された要素の配列を含みます。Arena内のすべての要素は、同じAllocation Kindとサイズを持ちます。</p>
+<p>すべてのArenaは、ArenaHeader::firstFreeSpanOffetsから始まる自由なメモリ区間のリストを保持します。自由なメモリ区間の最後のCell(最後であるのが望ましい)は、次の自由なメモリ区間を表すFreeSpanを保持します。</p>
+<h3 id="Free_Span">Free Span</h3>
+<p><strong>構造体<code>FreeSpan</code></strong>は、Arena内の自由なCell <strong>[first, last]</strong>の連続を表します。FreeSpanは、自由なメモリ区間から割当を行うための関数を保持しています。</p>
+<h3 id="Mark_Bitmap">Mark Bitmap</h3>
+<p>マークビットマップは<strong>ChunkBitmap</strong>によって表されます。</p>
+<p>マークビットマップはGC Cellごとのビットを持ちます。故に、複数のCellによって構成されているオブジェクトは、ビットマップ中の複数のビットを使います。</p>
+<h2 id="Exact_Stack_Rooting_API">Exact Stack Rooting API</h2>
+<div class="note">
+ <p><strong>注</strong>:GC rootの実装とおよびSpiderMonkey内での使用についての情報となります。SpiderMonkeyを埋め込んで使う場合の、Rooting APIの使用方法については、<a href="“/ja/docs/SpiderMonkey/GC_Rooting_Guide" title='“/ja/docs/SpiderMonkey/GC_Rooting_Guide"'> GC Rooting Guide</a>を参照してください。</p>
+</div>
+<p>GC rootの実装とおよびSpiderMonkey内での使用についての情報となります。 <a href="/en-US/docs/SpiderMonkey/Internals/GC/Exact_Stack_Rooting" title="/en-US/docs/SpiderMonkey/Internals/GC/Exact_Stack_Rooting">Exact Stack Rooting</a>.</p>
+<h2 id="マーキング">マーキング</h2>
+<p>TODO(原文ママ)</p>
+<h2 id="インクリメンタルマーキング">インクリメンタルマーキング</h2>
+<p>インクリメンタルマーキングは、マーキングの最中に(JavaScriptプログラムによる)状態の変更が発生しても、他のマーキング作業の実行が可能であることを意味します。つまり、マーキングによる長時間のプログラムの実行の停止の代わりに、小さな停止の集まりがGCの実行となるのです。停止時間は10msもしくはそれ以下に抑えられます。</p>
+<p>長時間の停止が必要となる可能性も常に存在します。インクリメンタルGCの間のメモリ割当の頻度が高い場合、エンジンはインクリメンタルGCの完了の前にout of memoryを実行するかもしれません。そのような場合、エンジンは幾つかのメモリーの返還とプログラムの実行の継続のために、非インクリメンタルな完全なGCを直ちに再実行しなくてはなりません。</p>
+<h3 id="Incremental_write_barrier(インクリメンタル書き込みバリア)">Incremental write barrier(インクリメンタル書き込みバリア)</h3>
+<h4 id="write_barrierを必要とする問題">write barrierを必要とする問題</h4>
+<p>インクリメンタルGCは正確性の担保のためにwrite barrierを必要とします。</p>
+<p>TODO(原文ママ)、基本的な問題を表す図を用意する<img alt="Very poor diagram showing IGC hazard that requires a write barrier" src="https://mdn.mozillademos.org/files/5187/IGC-hazard.png" style="width: 640px; height: 400px;"></p>
+<p>基本的な問題は以下の通りです(色の説明については、辞書を参照)。オブジェクトAはblackかつポインタ領域を所持しています。オブジェクトBはwhiteとします。ここで、インクリメンタルなスライスが止まり、プログラムの実行による状態の変更が再開しました。プログラムがBをAに保存したことにより、AはBへのポインタを持つことになります。そして、Bへのすべての既存のポインタが削除されました。そのとき、</p>
+<ul>
+ <li>Bは生存している。なぜならAはblackであり、Bへのポインタを含んでいるから。</li>
+ <li>Bはマーク作業が実行されない。なぜならBはAを介してのみ到達可能であり、Aがblackである故にAはすでにマーク作業が完了しているから。</li>
+ <li>以上により、Bは生存しているが、GCの回収対象となってしまう。</li>
+</ul>
+<p>write barrierは、ポインタの保存の発生前に実行され、生存しているオブジェクトが回収されないようにするために情報を記録する機構の一つです。</p>
+<h4 id="SpiderMonkeyのincremental_write_barrier">SpiderMonkeyのincremental write barrier</h4>
+<p>SpiderMonkeyは、(相対的に)シンプルな、s<strong>snapshot-at-the-beginning allocate-black barrier</strong>と呼ばれる一般的なincremental write barrierを用いています。</p>
+<p>このバリアの動作を理解するために、事象を単純にするために、新規にオブジェクトが割り当てられることの無いインクリメンタルGCを仮定します。生存しているオブジェクトを回収しないようにするためにはどうすればよいでしょうか? 一つの方法としては、インクリメンタルGCの最初の時点で生存していたすべてのオブジェクトをマークするという手法があります(これは、オブジェクトへの全ての参照が現在のインクリメンタルGC中に消えた場合は、次のインクリメンタルGC時にそのオブジェクトが回収されるということです)。この手法は、インクリメンタルGCの開始時に生存しているオブジェクトのスナップショットを保存し、それら全てをマークするのと<em>コンセプト上は</em>同義であるために、<strong>snapshot-at-the-beginning</strong>と呼ばれています。実際にはスナップショットを撮る訳ではありません。そのような場合は完全な非インクリメンタルなマーク作業が必要となります。</p>
+<p style="">snapshot-at-the-beginningバリアの実装は単純です。GCポインタを保持する場所がプログラムによって上書きされたタイミングで、バリアは開始します。バリアは単純にポインタによって指し示されているオブジェクトをblackにします。鍵となるのは、オブジェクトへの全てのポインタが上書きされた場合にのみ、オブジェクトはマークされず”死んだもの”となりうるという点です。そのため、オブジェクトへのポインタが上書きされたタイミングでオブジェクトをblackにすれば、オブジェクトが”死ぬ”ということは発生し得ないのです。</p>
+<p style="">FIXME(原文ママ):指し示されたオブジェクトをblackにするだけは十分ではないと思います。マークされていない別のオブジェクトがあったら何がおこりますか? マークスタックについても言及すべきです。「指し示されているオブジェクトをblackにする」というのは、「再帰的に指し示されたオブジェクトをblackにする」という意味で書かれていますか?</p>
+<p>これで、メモリの割当の正確性についても話します。新規に割り当てられたオブジェクトはGCの開始時には存在していませんでした。snapshot-at-the-beginningバリアはこれについては巧くカバーしません。ですが、もし新規に割り当てられたオブジェクトが生存している場合は、それが回収されないようにする必要があります。これは簡単で、インクリメンタルGC中に新規にオブジェクトが割り当てられたら、それをマークすれば良いのです。これを名付けて<strong>allocate-black</strong>と言います。</p>
+<h4 id="SpiderMonkeyの_incremental_read_barrier(インクリメンタル読み取りバリア)">SpiderMonkeyの incremental read barrier(インクリメンタル読み取りバリア)</h4>
+<p>インクリメンタルGCの教科書的な実装では、write barrierしかありません。SpiderMonkeyでは、weak pointer(用語集参照)のためにread barrierも用意しています。</p>
+<p>TODO(原文ママ):解説の完成</p>
+<h4 id="実装の詳細">実装の詳細</h4>
+<p>write barrierは実行時のコストを伴うので、SpiderMonkeyはインクリメンタルGCの実行中以外ではスキップするようにしています。各compartmentの<code>needsBarrier()</code>フラグによって、バリアが必要かどうかを示しています。</p>
+<p><code>T*</code>型のフィールドのように、全ての<code>T</code>型はwrite barrierを必要としており、<code>T::writeBarrierPre(old)</code>という関数が存在しています。たとえば、<code>JSObject*</code>がwrite barrierを必要とする場合、関数<code>ObjectImpl::writeBarrierPre(ObjectImpl *old)</code>が存在します(<code>JSObject</code>は<code>ObjectImpl</code>を継承しています。)。 <code><strong>zone-&gt;needsBarrier()</strong></code>がtrueである場合、<code>writeBarrierPre()</code>は<code>old</code>をマークする、ということです。</p>
+<p>HeapPtr&lt;t&gt;クラスはwrite barrierの起動を簡単にするために提供されています。HeapPtr&lt;t&gt;は<strong><code>T*</code></strong>をカプセル化し、割当時にwrite barrierを起動します。これにより、GCポインタ型のオブジェクトの領域は、通常、HeapPtr&lt;T&gt;&lt;t&gt;として定義されています。<strong>HeapValue</strong>クラスはValueに対して同じことを行います。<strong>HeapSlot</strong>(および関連する<strong>HeapSlotArray</strong>)も同様に、オブジェクトスロットに対するものです。<strong>HeapId</strong>は、同じくjsidに対する物です。TODO(原文ママ):なぜHeapValueとHeapSlotの2つが存在するのか&lt;/t&gt;&lt;/t&gt;&lt;/t&gt;</p>
+<p>オブジェクトのプライベート領域は、特別に取り扱う必要があります。プライベート領域自体は、エンジンに対しては隠されていますが、マークされる必要があるものを指し示すかもしれません(例:JSObjectのポインタの配列)。この例では、プライベート領域が上書きされた場合、JSObjectのポインタは”死ぬ”ことになります。そのため、write barrierはそれらをマークしなければなりません。<strong>ObjectImpl::privateWriteBarrierPre</strong>はプライベート領域が上書きされる前にJSObjectクラスのトレースフックによって起動され、これに対処します。</p>
+<p>他の詳細事項として、write barrierは新規に確保されたオブジェクトのフィールドの初期化時には、上書きされるポインタが存在しないことから、スキップすることができます。</p>
+<h2 id="Sweeping(スイーピング)">Sweeping(スイーピング)</h2>
+<p>TODO(原文ママ)</p>
+<h2 id="世代別GC">世代別GC</h2>
+<p>TODO(原文ママ)</p>
+<h2 id="GC統計API">GC統計API</h2>
+<p>実行時に<a href="“/ja/docs/SpiderMonkey/Internals/GC/Statistics_API" title='“/ja/docs/SpiderMonkey/Internals/GC/StatisticsAPI"'>GC統計API</a>.を通じて、GCが保持する明確な統計情報にアクセスする事ができます。</p>
+<h2 id="ソースファイル">ソースファイル</h2>
+<p><strong>jsgc{.h,inlines.h,.cpp}</strong> GCを起動するためのエントリーポイントを含む内部API関数群を定義します。</p>
+<p><strong>jsgcstats.{h,cpp}</strong> 保守的なスタックスキャンに基づく情報収集のための構造体ConservativeGCStatsを定義します。TODO(原文ママ):削除されたときに消す</p>
+<p><strong>gc/Barrier[-inl].h</strong> インクリメンタルおよび世代別用のwrite barrierを実装しています。</p>
+<p><strong>gc/Heap.h</strong> GCのヒープ構造の根幹を成す、<code>Chunk</code>, <code>ChunkInfo</code>, <code>ChunkBitmap</code>, <code>Arena</code>, <code>ArenaHeader</code>, <code>Cell</code>, <code>FreeSpan</code>といった一連の構造体を定義します。</p>
+<p><strong>gc/Marking.{h,cpp}</strong> 多様なGC対象用のマーク作業関数の全てを定義します。</p>
+<p><strong>gc/Memory.{h,cpp}</strong> ページの配置と解放(mapping and unmapping)のための僅かな関数に加えて、プラットフォーム固有の実装を保持しています。配置・解放(map/unmap)用の関数はチャンクの確保と解放(allocate and release )用のために、 jsgc.cppによって使用されています。使用されておらずディスクに格納する代わりメモリ破棄が可能なページをOS伝えるなどに用いる、確保または解放(commit or decommit)のための関数もあります。</p>
+<p><strong>gc/Root.h</strong> GCルートとして用いられる変数クラスを定義します。</p>
+<p><strong>gc/Statistics.{h,cpp}</strong> SpiderMonkey GCのパフォーマンスカウンタとして保存される Statics構造体を定義しています。</p>
+<h2 id="用語の解説">用語の解説</h2>
+<p>TODO(原文ママ): SpiderMonkeyの実装と色の名前が一致しているかを確認</p>
+<p><strong>black(黒)</strong>一般的な計算機科学の文脈において、マークフェイズ中、マーク済かつ子供がgray(マークキューに積まれている)なオブジェクトをblackとします。SpiderMonkeyでは、マークビットが設定されたオブジェクトをblackと見なします。</p>
+<p><strong>gray(灰色)</strong>:一般的な計算機科学の文脈において、マークフェイズ中、マークキューに積まれているオブジェクトをgrayとします。SpiderMonkeyでは、マークスタック内のオブジェクトの子孫かつblackで無いものはgrayとなります。つまり、状態が明白でないオブジェクトがgrayであるということです。</p>
+<p><strong>Handle(ハンドル)</strong> 私たちのGCでは、Handleはルートによって登録されたどこかを指し示すポインタです。</p>
+<p><strong>root</strong> TODO(原文ママ): 上からコピーする</p>
+<p><strong>weak pointer(弱参照ポインタ)</strong> 一般的な計算機科学の文脈において、weak pointerはGC目的で指し示された値が生存し続ける必要がなくなるポインタです。具体的には、既にポインタの指し示す対象が既にGCされている場合は、weak pointerのget()メソッドが返す値はnullポインタとなります。Gecko/SpiderMonkeyでは、weak pointerはマークされていないがGC対象となりうるオブジェクトへのポインタとなります。そのため、get()メソッドは存在せず、指し示す値がGCされたかどうかの保証も存在しません。プログラマは、指し示されたオブジェクトの生存時間が、weak pointerの生存時間よりも長いことを保証する必要があります。TODO(原文ママ) これが正しいか確認。</p>
+<p><strong>white(白)</strong> 一般的な計算機科学の文脈において、マークフェイズ中、まだ辿れていないオブジェクトはwhiteとなります。マークされなかった場合、マークフェイズの後にオブジェクトはwhiteとなります。SpiderMonkeyでは、grayでもblackでもない(blackでもマークスタック内のオブジェクトの子でもない)オブジェクトがwhiteとなります。</p>
+<h2 id="クリーンアップの可能性">クリーンアップの可能性</h2>
+<p><strong>MarkPagesInUse</strong> はすべてのプラットフォームで何の操作も実施しません。</p>
+<p>統計ファイルのマージ。</p>
+<p><code>ArenaLists::refillFreeLists</code>は悪いネーミングです。それは、たとえ<code>Arena</code>の解放リストが完全ではなくても、<code>Cell</code>の確保を試みるように見えます。</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/internals/index.html b/files/ja/mozilla/projects/spidermonkey/internals/index.html
new file mode 100644
index 0000000000..49e8157aa7
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/internals/index.html
@@ -0,0 +1,290 @@
+---
+title: Internals
+slug: Mozilla/Projects/SpiderMonkey/Internals
+tags:
+ - JavaScript
+ - SpiderMonkey
+ - 要更新
+ - 要翻訳
+translation_of: Mozilla/Projects/SpiderMonkey/Internals
+---
+<div>{{SpiderMonkeySidebar("Internals")}}</div>
+
+<h2 id="Design_walk-through" name="Design_walk-through">設計</h2>
+
+<p>SpiderMonkey は型付けされていないバイトコードと JavaScript で扱いうる値を表す<code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Reference/JS::Value" title="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Reference/JS::Value"> JS::Value </a></code>型に対する演算を高速に行えるインタプリタです。Just-In-Time (JIT) コンパイラやガベージコレクションの機構を備え、JavaScript の値が持つ基本的な振る舞いと <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-15">ECMA 262-5.1 §15</a> とその他の拡張で定義された標準ライブラリを実装し、いくつかのパブリックな API が提供されています。</p>
+
+<h3 id="インタプリタ">インタプリタ</h3>
+
+<p>多くの移植可能なインタプリタと同様、SpiderMonkey のインタプリタは主に単一の長大な関数として実装されています。バイトコードを 1 つずつ実行され、現在の命令に対応するコードへの分岐は <code>switch </code>文を利用して行われます(コンパイラによっては、より高速な手法が利用されます)。JS で記述された関数同士の呼び出し時にはJavaScript のスタックフレームが伸長し、C のスタックは消費されません。一方 JS で記述された関数から、C で定義された関数を呼び出し、また JS で記述された関数を呼ぶような場合は、コールスタックは通常通りに消費されるため、インタプリタは再突入可能となっています。</p>
+
+<p>SpiderMonkey バイトコードの処理には、引数の型による多くの特例が存在します。通常はインタプリタのループ内で処理されますが、邪魔な抽象化を無視する場合もあります。密な配列やプロパティキャッシュのような最適化は、<code>jsinterp.cpp</code> に定義されている <code>jsarray.*</code> や <code>jsobj.*</code>  によって隠蔽され、透過的に行われるわけでは「ありません」。</p>
+
+<p>インタプリタに関する状態は、インタプリタのエントリポイントに引数として渡されます。暗黙的な状態は <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JSRuntime" title="SpiderMonkey/JSAPI_Reference/JSRuntime">JSContext</a></code> 型の値にまとめられており、API であろうがなかろうが、SpiderMonkey のすべての関数は第 1 引数に、JSContext 型のポインタをとります。</p>
+
+<h3 id="コンパイラ">コンパイラ</h3>
+
+<p>コンパイラは JavaScript のソースコードを処理し、<em>script</em> を生成します。script にはバイトコードとそのソースコード、ソースに対するアノテーション、文字列、数値、識別子のリテラルが含まれます。またソースコード中で定義されている関数も含む、オブジェクトも script には含まれます。それぞれの関数は入れ子になった script を保持します。</p>
+
+<p>The compiler consists of: a random-logic rather than table-driven lexical scanner, a recursive-descent parser that produces an AST, and a tree-walking code generator. Semantic and lexical feedback are used to disambiguate hard cases such as missing semicolons, assignable expressions ("lvalues" in C parlance), and whether <code>/</code> is the division symbol or the start of a regular expression. The compiler attempts no error recovery; it bails out on the first error. The emitter does some constant folding and a few codegen optimizations; about the fanciest thing it does is to attach source notes to the script for the decompiler's benefit.</p>
+
+<p>The decompiler implements <code>Function.toSource()</code>, which reconstructs a function's source code. It translates postfix bytecode into infix source by consulting a separate byte-sized code, called <em>source notes</em>, to disambiguate bytecodes that result from more than one grammatical production.</p>
+
+<h3 id="Garbage_collector">Garbage collector</h3>
+
+<p>The GC is a mark-and-sweep, non-conservative (exact) collector. It is used to hold JS objects and string descriptors (<a href="http://dxr.mozilla.org/mozilla-central/source/js/src/vm/String.h">JSString</a>), but not string bytes. It runs automatically only when maxbytes (as passed to <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_NewRuntime" title="SpiderMonkey/JSAPI_Reference/JS_NewRuntime">JS_NewRuntime</a></code>) bytes of GC things have been allocated and another thing-allocation request is made. JS API users should call <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_GC" title="SpiderMonkey/JSAPI_Reference/JS_GC">JS_GC</a></code> or <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_MaybeGC" title="SpiderMonkey/JSAPI_Reference/JS_MaybeGC">JS_MaybeGC</a></code> between script executions or from the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetOperationCallback" title="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetOperationCallback">operation callback</a>, as often as necessary.</p>
+
+<p>Because the GC is exact, C/C++ applications must ensure that all live objects, strings, and numbers are GC-reachable.</p>
+
+<h3 id="JavaScript_values">JavaScript values</h3>
+
+<p>The type <code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Reference/JS::Value" title="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Reference/JS::Value">JS::Value</a></code> represents a JavaScript value.</p>
+
+<p>The representation is 64 bits and uses NaN-boxing on all platforms, although the exact NaN-boxing format depends on the platform. NaN-boxing is a technique based on the fact that in IEEE-754 there are 2**47 different bit patterns that all represent NaN. Hence, we can encode any floating-point value as a C++ <code>double </code>(noting that JavaScript NaN must be represented as one canonical NaN format). Other values are encoded as a value and a type tag:</p>
+
+<ul>
+ <li>On x86, ARM, and similar 32-bit platforms, we use what we call "nunboxing", in which non-<code>double </code>values are a 32-bit type tag and a 32-bit payload, which is normally either a pointer or a signed 32-bit integer. There are a few special values: <code>NullValue()</code>, <code>UndefinedValue()</code>, <code>TrueValue()</code> and <code>FalseValue().</code></li>
+ <li>On x64 and similar 64-bit platforms, pointers are longer than 32 bits, so we can't use the nunboxing format. Instead, we use "punboxing", which has 17 bits of tag and 47 bits of payload.</li>
+</ul>
+
+<p>Only JIT code really depends on the layout--everything else in the engine interacts with values through functions like <code>val.isDouble()</code>. Most parts of the JIT also avoid depending directly on the layout: the files <code>PunboxAssembler.h</code> and <code>NunboxAssembler.h</code> are used to generate native code that depends on the value layout.</p>
+
+<p>Objects consist of a possibly shared structural description, called the map or scope; and unshared property values in a vector, called the slots. Each property has an <a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/jsid" title="SpiderMonkey/JSAPI_Reference/jsid">id</a>, either a nonnegative integer or an atom (unique string), with the same tagged-pointer encoding as a <code>jsval</code>.</p>
+
+<p>The atom manager consists of a hash table associating strings uniquely with scanner/parser information such as keyword type, index in script or function literal pool, etc. Atoms play three roles: as literals referred to by unaligned 16-bit immediate bytecode operands, as unique string descriptors for efficient property name hashing, and as members of the root GC set for exact GC.</p>
+
+<h3 id="Standard_library">Standard library</h3>
+
+<p>The methods for arrays, booleans, dates, functions, numbers, and strings are implemented using the JS API. Most are <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JSFastNative" title="SpiderMonkey/JSAPI_Reference/JSFastNative">JSFastNative</a></code>s. Most string methods are customized to accept a primitive string as the <code>this</code> argument. (Otherwise, SpiderMonkey converts primitive values to objects before invoking their methods, per <span class="pl-s1"><span class="pl-s">ECMA 262-3 §</span></span>11.2.1.)</p>
+
+<h3 id="Error_handling">Error handling</h3>
+
+<p>SpiderMonkey has two interdependent error-handling systems: JavaScript exceptions (which are <em>not</em> implemented with, or even compatible with, any kind of native C/C++ exception handling) and error reporting. In general, both functions inside SpiderMonkey and JSAPI callback functions signal errors by calling <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_ReportError" title="SpiderMonkey/JSAPI_Reference/JS_ReportError">JS_ReportError</a></code> or one of its variants, or <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_SetPendingException" title="SpiderMonkey/JSAPI_Reference/JS_SetPendingException">JS_SetPendingException</a></code>, and returning <code><a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JSBool" title="SpiderMonkey/JSAPI_Reference/JSBool">JS_FALSE</a></code> or <code>NULL</code>.</p>
+
+<h3 id="Public_APIs">Public APIs</h3>
+
+<p>The public C/C++ interface, called the JSAPI, is in most places a thin (but source-compatible across versions) layer over the implementation. See the <a href="/en-US/docs/SpiderMonkey/JSAPI_User_Guide" title="JSAPI_User_Guide">JSAPI User Guide</a>. There is an additional public API for JavaScript debuggers, <a href="/en-US/docs/JSDBGAPI_Reference" title="JSDBGAPI_Reference">JSDBGAPI</a>, but {{Source("js/jsd/jsdebug.h")}} might be a better API for debuggers. Another API, <a href="/en-US/docs/JSXDRAPI" title="JSXDRAPI">JSXDRAPI</a>, provides serialization for JavaScript scripts. (XUL Fastload uses this.)</p>
+
+<h3 id="Just-In-Time_compiler">Just-In-Time compiler</h3>
+
+<p>SpiderMonkey contains a <a href="https://blog.mozilla.org/javascript/2013/04/05/the-baseline-compiler-has-landed/">baseline compiler</a> as first tier. A second tier JIT, code-named <em>IonMonkey</em> was enabled in <a href="https://blog.mozilla.org/javascript/2012/09/12/ionmonkey-in-firefox-18/" title="https://blog.mozilla.org/javascript/2012/09/12/ionmonkey-in-firefox-18/">Firefox 18</a>. <a href="https://wiki.mozilla.org/IonMonkey">IonMonkey</a> is an optimizing compiler.</p>
+
+<h3 id="Self-hosting_of_built-in_functions_in_JS">Self-hosting of built-in functions in JS</h3>
+
+<p>Starting with Firefox 17, SpiderMonkey has the ability to implement built-in functions in self-hosted JS code. This code is compiled in a special compilation mode that gives it access to functionality that's not normally exposed to JS code, but that's required for safe and specification-conformant implementation of built-in functions.</p>
+
+<p>All self-hosted code lives in <code>.js</code> files under <code>builtin/</code>. For details on implementing self-hosted built-ins, see <a href="/en-US/docs/SpiderMonkey/Internals/self-hosting" title="SpiderMonkey/self-hosting">self-hosting</a>.</p>
+
+<h2 id="File_walkthrough" name="File_walkthrough">File walkthrough</h2>
+
+<h4 id="jsapi.cpp.2C_jsapi.h" name="jsapi.cpp.2C_jsapi.h">jsapi.cpp, jsapi.h</h4>
+
+<p>The public API to be used by almost all client code.</p>
+
+<h4 id="jspubtd.h.2C_jsprvtd.h" name="jspubtd.h.2C_jsprvtd.h">jspubtd.h, jsprvtd.h</h4>
+
+<p>These files exist to group struct and scalar typedefs so they can be used everywhere without dragging in struct definitions from N different files. The <code>jspubtd.h</code> file contains public typedefs, and is included automatically when needed. The <code>jsprvtd.h</code> file contains private typedefs and is included by various .h files that need type names, but not type sizes or declarations.</p>
+
+<h4 id="jsdbgapi.cpp.2C_jsdbgapi.h" name="jsdbgapi.cpp.2C_jsdbgapi.h">jsdbgapi.cpp, jsdbgapi.h</h4>
+
+<p>The debugging API. Provided so far:</p>
+
+<p><strong>Traps</strong>, with which breakpoints, single-stepping, step over, step out, and so on can be implemented. The debugger will have to consult jsopcode.def on its own to figure out where to plant trap instructions to implement functions like step out, but a future jsdbgapi.h will provide convenience interfaces to do these things. At most one trap per bytecode can be set. When a script (<code><a href="/en-US/docs/JSScript" title="JSScript">JSScript</a></code>) is destroyed, all traps set in its bytecode are cleared.</p>
+
+<p><strong>Watchpoints</strong>, for intercepting set operations on properties and running a debugger-supplied function that receives the old value and a pointer to the new one, which it can use to modify the new value being set.</p>
+
+<p><strong>Line number</strong> to PC and back mapping functions. The line-to-PC direction "rounds" toward the next bytecode generated from a line greater than or equal to the input line, and may return the PC of a for-loop update part, if given the line number of the loop body's closing brace. Any line after the last one in a script or function maps to a PC one byte beyond the last bytecode in the script. An example, from perfect.js:</p>
+
+<pre class="brush:js;first-line:14">function perfect(n) {
+ print("The perfect numbers up to " + n + " are:");
+ // We build sumOfDivisors[i] to hold a string expression for
+ // the sum of the divisors of i, excluding i itself.
+ var sumOfDivisors = new ExprArray(n + 1, 1);
+ for (var divisor = 2; divisor &lt;= n; divisor++) {
+ for (var j = divisor + divisor; j &lt;= n; j += divisor) {
+ sumOfDivisors[j] += " + " + divisor;
+ }
+ // At this point everything up to 'divisor' has its sumOfDivisors
+ // expression calculated, so we can determine whether it's perfect
+ // already by evaluating.
+ if (eval(sumOfDivisors[divisor]) == divisor) {
+ print("" + divisor + " = " + sumOfDivisors[divisor]);
+ }
+ }
+ delete sumOfDivisors;
+ print("That's all.");
+}</pre>
+
+<p>The line number to PC and back mappings can be tested using the js program with the following script:</p>
+
+<pre class="brush:js">load("perfect.js");
+print(perfect);
+dis(perfect);
+print();
+for (var ln = 0; ln &lt;= 40; ln++) {
+ var pc = line2pc(perfect, ln);
+ var ln2 = pc2line(perfect, pc);
+ print("\tline " + ln + " =&gt; pc " + pc + " =&gt; line " + ln2);
+}
+</pre>
+
+<p>The result of the for loop over lines 0 to 40 inclusive is:</p>
+
+<pre>line 0 =&gt; pc 0 =&gt; line 16
+line 1 =&gt; pc 0 =&gt; line 16
+line 2 =&gt; pc 0 =&gt; line 16
+line 3 =&gt; pc 0 =&gt; line 16
+line 4 =&gt; pc 0 =&gt; line 16
+line 5 =&gt; pc 0 =&gt; line 16
+line 6 =&gt; pc 0 =&gt; line 16
+line 7 =&gt; pc 0 =&gt; line 16
+line 8 =&gt; pc 0 =&gt; line 16
+line 9 =&gt; pc 0 =&gt; line 16
+line 10 =&gt; pc 0 =&gt; line 16
+line 11 =&gt; pc 0 =&gt; line 16
+line 12 =&gt; pc 0 =&gt; line 16
+line 13 =&gt; pc 0 =&gt; line 16
+line 14 =&gt; pc 0 =&gt; line 16
+line 15 =&gt; pc 0 =&gt; line 16
+line 16 =&gt; pc 0 =&gt; line 16
+line 17 =&gt; pc 19 =&gt; line 20
+line 18 =&gt; pc 19 =&gt; line 20
+line 19 =&gt; pc 19 =&gt; line 20
+line 20 =&gt; pc 19 =&gt; line 20
+line 21 =&gt; pc 36 =&gt; line 21
+line 22 =&gt; pc 53 =&gt; line 22
+line 23 =&gt; pc 74 =&gt; line 23
+line 24 =&gt; pc 92 =&gt; line 22
+line 25 =&gt; pc 106 =&gt; line 28
+line 26 =&gt; pc 106 =&gt; line 28
+line 27 =&gt; pc 106 =&gt; line 28
+line 28 =&gt; pc 106 =&gt; line 28
+line 29 =&gt; pc 127 =&gt; line 29
+line 30 =&gt; pc 154 =&gt; line 21
+line 31 =&gt; pc 154 =&gt; line 21
+line 32 =&gt; pc 161 =&gt; line 32
+line 33 =&gt; pc 172 =&gt; line 33
+line 34 =&gt; pc 172 =&gt; line 33
+line 35 =&gt; pc 172 =&gt; line 33
+line 36 =&gt; pc 172 =&gt; line 33
+line 37 =&gt; pc 172 =&gt; line 33
+line 38 =&gt; pc 172 =&gt; line 33
+line 39 =&gt; pc 172 =&gt; line 33
+line 40 =&gt; pc 172 =&gt; line 33
+</pre>
+
+<h4 id="jsconfig.h" name="jsconfig.h">jsconfig.h</h4>
+
+<p>Various configuration macros defined as 0 or 1 depending on how <code><a href="/en-US/docs/JS_VERSION" title="JS_VERSION">JS_VERSION</a></code> is defined (as 10 for JavaScript 1.0, 11 for JavaScript 1.1, etc.). Not all macros are tested around related code yet. In particular, JS 1.0 support is missing from SpiderMonkey.</p>
+
+<h4 id="js.cpp.2C_jsshell.msg" name="js.cpp.2C_jsshell.msg">js.cpp, jsshell.msg</h4>
+
+<p>The "JS shell", a simple interpreter program that uses the JS API and more than a few internal interfaces (some of these internal interfaces could be replaced by <code>jsapi.h</code> calls). The js program built from this source provides a test vehicle for evaluating scripts and calling functions, trying out new debugger primitives, etc.</p>
+
+<p>A look at the places where <code>jsshell.msg</code> is used in <code>js.cpp</code> shows how error messages can be handled in JSAPI applications. These messages can be localized at compile time by replacing the <code>.msg</code> file; or, with a little modification to the source, at run time.</p>
+
+<p><a href="/en-US/docs/SpiderMonkey/Introduction_to_the_JavaScript_shell" title="https://developer.mozilla.org/en/introduction_to_the_javascript_shell">More information on the JavaScript shell</a>.</p>
+
+<h4 id="js.msg" name="js.msg">js.msg</h4>
+
+<p>SpiderMonkey error messages.</p>
+
+<h4 id="jsarray..2A.2C_jsbool..2A.2C_jdsdate..2A.2C_jsfun..2A.2C_jsmath..2A.2C_jsnum..2A.2C_jsstr..2A" name="jsarray..2A.2C_jsbool..2A.2C_jdsdate..2A.2C_jsfun..2A.2C_jsmath..2A.2C_jsnum..2A.2C_jsstr..2A">jsarray.*, jsbool.*, jsdate.*, jsfun.*, jsmath.*, jsnum.*, jsstr.*</h4>
+
+<p>These file pairs implement the standard classes and (where they exist) their underlying primitive types. They have similar structure, generally starting with class definitions and continuing with internal constructors, finalizers, and helper functions.</p>
+
+<h4 id="jsobj..2A.2C_jsscope..2A" name="jsobj..2A.2C_jsscope..2A">jsobj.*, jsscope.*</h4>
+
+<p>These two pairs declare and implement the JS object system. All of the following happen here:</p>
+
+<ul>
+ <li>creating objects by class and prototype, and finalizing objects;</li>
+ <li>defining, looking up, getting, setting, and deleting properties;</li>
+ <li>creating and destroying properties and binding names to them.</li>
+</ul>
+
+<p>The details of a native object's map (scope) are mostly hidden in <code>jsscope.{{mediawiki.external('ch')}}</code>.</p>
+
+<h4 id="jsatom.cpp.2C_jsatom.h" name="jsatom.cpp.2C_jsatom.h">jsatom.cpp, jsatom.h</h4>
+
+<p>The atom manager. Contains well-known string constants, their atoms, the global atom hash table and related state, the js_Atomize() function that turns a counted string of bytes into an atom, and literal pool (<code>JSAtomMap</code>) methods.</p>
+
+<h4 id="jsarena.cpp.2C_jsarena.h" name="jsarena.cpp.2C_jsarena.h">jsarena.cpp, jsarena.h</h4>
+
+<p>Last-In-First-Out allocation macros that amortize malloc costs and allow for en-masse freeing. See the paper mentioned in <code>jsarena.h</code>'s major comment.</p>
+
+<h4 id="jsgc.cpp.2C_jsgc.h" name="jsgc.cpp.2C_jsgc.h">jsgc.cpp, jsgc.h</h4>
+
+<p>The garbage collector and tracing routines.</p>
+
+<h4 id="jsinterp..2A.2C_jscntxt..2A.2C_jsinvoke.cpp" name="jsinterp..2A.2C_jscntxt..2A.2C_jsinvoke.cpp">jsinterp.*, jscntxt.*, jsinvoke.cpp</h4>
+
+<p>The bytecode interpreter, and related functions such as Call and AllocStack, live in <em>jsinterp.cpp</em>. The JSContext constructor and destructor are factored out into <em>jscntxt.cpp</em> for minimal linking when the compiler part of JS is split from the interpreter part into a separate program.</p>
+
+<p><code>jsinvoke.cpp</code> is a build hack used on some platforms to build <code>js_Interpret</code> under different compiler options from the rest of <code>jsinterp.cpp</code>.</p>
+
+<h4 id="jstracer.*_nanojit*">jstracer.*, nanojit/*</h4>
+
+<p><a href="/en-US/docs/SpiderMonkey/Internals/Tracing_JIT" title="SpiderMonkey/Internals/Tracing JIT">The tracing JIT</a>. The interface between the JIT and the rest of SpiderMonkey is conceptually small—the interpreter calls into the trace recorder—but as with everything else, there are tendrils everywhere.</p>
+
+<h4 id="jsemit..2A.2C_jsopcode.tbl.2C_jsopcode..2A.2C_jsparse..2A.2C_jsscan..2A.2C_jsscript..2A" name="jsemit..2A.2C_jsopcode.tbl.2C_jsopcode..2A.2C_jsparse..2A.2C_jsscan..2A.2C_jsscript..2A">jsemit.*, jsopcode.tbl, jsopcode.*, jsparse.*, jsscan.*, jsscript.*</h4>
+
+<p>Compiler and decompiler modules. The <em>jsopcode.tbl</em> file is a C preprocessor source that defines almost everything there is to know about JS bytecodes. See its major comment for how to use it. For now, a debugger will use it and its dependents such as <em>jsopcode.h</em> directly, but over time we intend to extend <em>jsdbgapi.h</em> to hide uninteresting details and provide conveniences. The code generator is split across paragraphs of code in <em>jsparse.cpp</em>, and the utility methods called on <code>JSCodeGenerator</code> appear in <em>jsemit.cpp</em>. Source notes generated by <em>jsparse.cpp</em> and <em>jsemit.cpp</em> are used in <em>jsscript.cpp</em> to map line number to program counter and back.</p>
+
+<h4 id="jstypes.h" name="jstypes.h">jstypes.h</h4>
+
+<p>Fundamental representation types and utility macros. This file alone among all .h files in SpiderMonkey must be included first by .cpp files. It is not nested in .h files, as other prerequisite .h files generally are, since it is also a direct dependency of most .cpp files and would be over-included if nested in addition to being directly included.</p>
+
+<h4 id="jsbit.h.2C_jslog2.cpp" name="jsbit.h.2C_jslog2.cpp">jsbit.h, jslog2.cpp</h4>
+
+<p>Bit-twiddling routines. Most of the work here is selectively enabling compiler-specific intrinsics such as GCC's <code>__builtin_ctz</code>, which is useful in calculating base-2 logarithms of integers.</p>
+
+<h4 id="jsutil.cpp.2C_jsutil.h" name="jsutil.cpp.2C_jsutil.h">jsutil.cpp, jsutil.h</h4>
+
+<p>The <code>JS_ASSERT</code> macro is used throughout the source as a proof device to make invariants and preconditions clear to the reader, and to hold the line during maintenance and evolution against regressions or violations of assumptions that it would be too expensive to test unconditionally at run-time. Certain assertions are followed by run-time tests that cope with assertion failure, but only where I'm too smart or paranoid to believe the assertion will never fail...</p>
+
+<h4 id="jsclist.h" name="jsclist.h">jsclist.h</h4>
+
+<p>Doubly-linked circular list struct and macros.</p>
+
+<h4 id="jscpucfg.cpp" name="jscpucfg.cpp">jscpucfg.cpp</h4>
+
+<p>This standalone program generates <em>jscpucfg.h</em>, a header file containing bytes per word and other constants that depend on CPU architecture and C compiler type model. It tries to discover most of these constants by running its own experiments on the build host, so if you are cross-compiling, beware.</p>
+
+<h4 id="jsdtoa.cpp.2C_jsdtoa.h.2C_dtoa.c" name="jsdtoa.cpp.2C_jsdtoa.h.2C_dtoa.c">jsdtoa.cpp, jsdtoa.h, dtoa.c</h4>
+
+<p>dtoa.c contains David Gay's portable double-precision floating point to string conversion code, with Permission To Use notice included. jsdtoa.cpp <code>#include</code>s this file.</p>
+
+<h4 id="jshash.cpp.2C_jshash.h.2C_jsdhash.cpp.2C_jsdhash.h" name="jshash.cpp.2C_jshash.h.2C_jsdhash.cpp.2C_jsdhash.h">jshash.cpp, jshash.h, jsdhash.cpp, jsdhash.h</h4>
+
+<p>Portable, extensible hash tables. These use multiplicative hash for strength reduction over division hash, yet with very good key distribution over power of two table sizes. jshash resolves collisions via chaining, so each entry burns a malloc and can fragment the heap. jsdhash uses open addressing.</p>
+
+<h4 id="jslong.cpp.2C_jslong.h" name="jslong.cpp.2C_jslong.h">jslong.cpp, jslong.h</h4>
+
+<p>64-bit integer emulation, and compatible macros that use intrinsic C types, like <code>long long</code>, on platforms where they exist (most everywhere, these days).</p>
+
+<h4 id="jsprf..2A" name="jsprf..2A">jsprf.*</h4>
+
+<p>Portable, buffer-overrun-resistant sprintf and friends. For no good reason save lack of time, the %e, %f, and %g formats cause your system's native sprintf, rather than <code>JS_dtoa()</code>, to be used. This bug doesn't affect SpiderMonkey, because it uses its own <code>JS_dtoa()</code> call in <code>jsnum.cpp</code> to convert from double to string, but it's a bug that we'll fix later, and one you should be aware of if you intend to use a <code>JS_*printf()</code> function with your own floating type arguments - various vendor sprintf's mishandle NaN, +/-Inf, and some even print normal floating values inaccurately.</p>
+
+<h4 id="prmjtime.c.2C_prmjtime.h" name="prmjtime.c.2C_prmjtime.h">prmjtime.c, prmjtime.h</h4>
+
+<p>Time functions. These interfaces are named in a way that makes local vs. universal time confusion likely. Caveat emptor, and we're working on it. To make matters worse, Java (and therefore JavaScript) uses "local" time numbers (offsets from the epoch) in its Date class.</p>
+
+<h4 id="jsfile.cpp.2C_jsfile.h.2C_jsfile.msg" name="jsfile.cpp.2C_jsfile.h.2C_jsfile.msg">jsfile.cpp, jsfile.h, jsfile.msg</h4>
+
+<p>Obsolete. Do not use these files.</p>
+
+<h4 id="Makefile.in.2C_build.mk" name="Makefile.in.2C_build.mk">Makefile.in, build.mk</h4>
+
+<p>Mozilla makefiles. If you're building Gecko or Firefox, the larger build system will use these files. They are also used for current standalone builds.</p>
+
+<h4 id="Makefile.ref.2C_rules.mk.2C_config.mk.2C_config.2F.2A" name="Makefile.ref.2C_rules.mk.2C_config.mk.2C_config.2F.2A">Makefile.ref, rules.mk, config.mk, config/*</h4>
+
+<p>Obsolete SpiderMonkey standalone makefiles from 1.8 and earlier. See <a href="/en-US/docs/SpiderMonkey/Build_Documentation#Building_SpiderMonkey_1.8_or_earlier" title="SpiderMonkey/Build Documentation#Building SpiderMonkey 1.8 or earlier">SpiderMonkey Build Documentation</a>.</p>
+
+<h3 id="See_also">See also</h3>
+
+<ul>
+ <li><a href="/jsd" title="jsd">jsd</a></li>
+</ul>
diff --git a/files/ja/mozilla/projects/spidermonkey/internals/thread_safety/index.html b/files/ja/mozilla/projects/spidermonkey/internals/thread_safety/index.html
new file mode 100644
index 0000000000..90bfb3fb10
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/internals/thread_safety/index.html
@@ -0,0 +1,56 @@
+---
+title: Thread Safety
+slug: Mozilla/Projects/SpiderMonkey/Internals/Thread_Safety
+tags:
+ - JavaScript
+ - SpiderMonkey
+---
+<p>This page describes implementation details of the <a href="/ja/SpiderMonkey" title="ja/SpiderMonkey">SpiderMonkey</a> JavaScript engine. It is mainly of interest to people working on SpiderMonkey itself, but this information is also helpful for anyone embedding SpiderMonkey in a multithreaded environment. See also <code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>.</p>
+<p>{{ 英語版章題("General background") }}</p>
+<h4 id="General_background" name="General_background">General background</h4>
+<p>SpiderMonkeyは、最上位の構造体として<code><a href="/ja/JS_NewRuntime" title="ja/JS_NewRuntime">JSRuntime</a></code>を利用します。これらの構造体は、メモリの管理とグローバルなデータ構造を扱います。 通常の場合プログラムは、多くのスレッドを利用する場合でも、1つだけ<code>JSRuntime</code>を使います。<code>JSRuntime</code>は、JSオブジェクトが動作する 世界といってもよいでしょう。オブジェクトは、他の<code>JSRuntime</code>に移って動作することはできません。 <span class="comment">SpiderMonkey has a top-level struct, &lt;code&gt;<a href="/ja/JS_NewRuntime" title="ja/JS_NewRuntime">&lt;/code&gt;, that handles, among other things, memory management and "global" data structures. A program typically has only one &lt;code&gt;JSRuntime&lt;/code&gt;, even if it has many threads. The &lt;code&gt;JSRuntime&lt;/code&gt; is the universe in which JS objects live; they can't travel to other &lt;code&gt;JSRuntime&lt;/code&gt;s.</a></span></p>
+<p>全てのJSコードとほとんどのJSAPIの呼び出しは、<code><a href="/ja/JS_NewContext" title="ja/JS_NewContext">JSContext</a></code>の中で動作します。<code>JSContext</code>は、 <code>JSRuntime</code>の子供のようなもので、例えば、例外の処理などは、<code>JSContext</code>ごとに実行されます。 各<code>JSContext</code>は、同時に複数スレッドからアクセスしてはなりません。 <span class="comment">All JS code and most JSAPI calls run within a &lt;code&gt;<a href="/ja/JS_NewContext" title="ja/JS_NewContext">JSContext</a>&lt;/code&gt;. The &lt;code&gt;JSContext&lt;/code&gt; is a child of the &lt;code&gt;JSRuntime&lt;/code&gt;; exception handling, for example, is per-&lt;code&gt;JSContext&lt;/code&gt;. Each &lt;code&gt;JSContext&lt;/code&gt; must be used by only one thread at a time.</span></p>
+<p>オブジェクトは、同じ<code>JSRuntime</code>内の<code>JSContext</code>間で共有できます。コンテキストとオブジェクトの間には、固定的な関係はありません。 <span class="comment">Objects may be shared among &lt;code&gt;JSContext&lt;/code&gt;s within a &lt;code&gt;JSRuntime&lt;/code&gt;. There's no fixed association between an object and a context.</span></p>
+<p>SpiderMonkeyにおけるスレッドセーフ機能は、<code>-DJS_THREADSAFE</code>をつけてコンパイルすることで有効になります。<code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>を有効にしたビルドでは、次のような操作について特別な処理が行われます。 <span class="comment">Thread-safety in SpiderMonkey is turned on by compiling with &lt;code&gt;-DJS_THREADSAFE&lt;/code&gt;. In a &lt;code&gt;<a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a>&lt;/code&gt; build, these operations are handled specially:</span></p>
+<ul> <li><code>JSRuntime</code>のデータ構造にアクセスする場合</li> <li>ガーベジコレクションを行う場合</li> <li>オブジェクトのプロパティにアクセスする場合</li>
+</ul>
+<p><span class="comment">* access to &lt;code&gt;JSRuntime&lt;/code&gt; data structures * garbage collection * access to properties of objects</span></p>
+<p><code>JSRuntime</code>のデータ構造へのアクセスは、mutexによってシリアライズされます。 GCとプロパティに関する処理については、もう少し詳しく説明します。 <span class="comment">Accesses to &lt;code&gt;JSRuntime&lt;/code&gt; data structures are serialized with a few mutexes. The treatment of GC and properties requires more explanation.</span></p>
+<p>{{ 英語版章題("Making GC thread-safe") }}</p>
+<h4 id="Making_GC_thread-safe" name="Making_GC_thread-safe">Making GC thread-safe</h4>
+<p><code>JS_THREADSAFE</code>を用いるときは、APIを若干変更します。プログラム中でJSAPIを呼び出すときは、次に示す"request"で くくらなくてはなりません。 <span class="comment">With &lt;code&gt;JS_THREADSAFE&lt;/code&gt;, the API changes slightly. The program must group JSAPI calls into "requests":</span></p>
+<pre class="eval"> <a href="/ja/JS_SetContextThread" title="ja/JS_SetContextThread">JS_SetContextThread</a>(cx);
+ <a href="/ja/JS_BeginRequest" title="ja/JS_BeginRequest">JS_BeginRequest</a>(cx);
+ /* ... do stuff ... */
+ <a href="/ja/JS_EndRequest" title="ja/JS_EndRequest">JS_EndRequest</a>(cx);
+ <a href="/ja/JS_ClearContextThread" title="ja/JS_ClearContextThread">JS_ClearContextThread</a>(cx);
+</pre>
+<p>複数のスレッドがrequest内で同じ<code>JSRuntime</code>を同時にアクセスできるため、この操作がボトルネックになることはありません。詳細は<a href="/ja/JS_BeginRequest" title="ja/JS_BeginRequest">JS_BeginRequest</a>を参照してください。 <span class="comment">It isn't a bottleneck; multiple threads are allowed to be in requests on the same &lt;code&gt;JSRuntime&lt;/code&gt; at once. See <a href="/ja/JS_BeginRequest" title="ja/JS_BeginRequest">JS_BeginRequest</a>.</span></p>
+<p>requestの最も顕著な効果は、いつでも複数のスレッドがrequestのくくりを実行することができるか、1つのスレッドだけがGCを実行していて他のスレッドが停止させられている 用にすることです。JS_GC()を呼び出しても、他のスレッドが停止させられるまでは、処理がブロックされます。つまり、他のスレッドがJSAPIを呼び出していないか (呼び出していないときには、特に注意する必要がないので)、JSAPIを実行中であってもGCが終了するのを待っているブロックしている状態になるまで、 GCの実行は停止させられます。 <span class="comment">The most obvious effect of a request is: at any given moment there can either be multiple threads in active requests, or one thread doing GC and all requests suspended. A call to JS_GC() will block until the latter becomes possible. In other words, GC waits until each other thread is either outside JSAPI (in which case we don't care what it's doing) or else in JSAPI, but blocked, waiting for GC to finish.</span></p>
+<p>requestのくくりの中にいないときには、スレッドは、GCに影響を与えるような処理を行ってはいけません。 当たり前のことですが、requestのくくりの中では、GCが抑止されてしまうので、ブロックしたり、時間のかかる処理を行ってはいけません。 <span class="comment">Threads must not do anything that would affect GC while outside a request. And obviously you shouldn't block or otherwise dilly-dally while in a request; it prohibits GC. 最適化のために、スレッドには、スレッドごとの大きさごとに分けられた、割り当て可能なGC用のメモリの集合に関するフリーリストを持っています。 このリストにより、ほとんどの場合ロックせずにメモリを割り当てることができます。スレッドがロックを必要とするのは、スレッドの対応するフリーリストが 空だった場合だけです。このようなことが怒った場合に、ロックして広域のGC割り当てを行い、&lt;code&gt;JSRuntime&lt;/code&gt;から、フリーリストに領域を補充します。 &lt;!--As an optimization, each thread has its own size-classified freelists containing chunks of GC-managed memory ready to be allocated. This allows allocation to avoid locking most of the time (a significant speed win). A thread needs to lock on allocation only when the relevant per-thread freelist is empty. When this happens, the thread also refills that freelist from the &lt;code&gt;JSRuntime&lt;/code&gt;-wide GC allocator while it's in the lock.</span></p>
+<p>{{ 英語版章題("Making property accesses thread-safe") }}</p>
+<h4 id="Making_property_accesses_thread-safe" name="Making_property_accesses_thread-safe">Making property accesses thread-safe</h4>
+<p>JSAPIのユーザにとっては、プロパティへのアクセスは全てシリアライズされているように見えます。これから記述する方法は、SpiderMonkeyの内部に関するもので ユーザにとっては見えない、最適化についてです。 <span class="comment">To the JSAPI user, all property accesses appear to be serialized. The scheme described below is an optimization, internal to SpiderMonkey and invisible to the user.</span></p>
+<p>SpiderMonkeyの実装では、mutableなオブジェクトは必要に応じて暗黙のうちにロックされます。ロックの手順は、うまく最適化されていて、単なるmutexではありません。 <span class="comment">SpiderMonkey implicitly locks mutable objects as needed. The locking protocol is cleverly optimized. It's not a simple mutex.</span></p>
+<p>それぞれの、mutableなオブジェクトは、<code>JSContext</code>が"占有"している(つまり、コンテキストがロックをしなくてもプロパティにアクセスできる) か、<code>JSRuntime</code>内の<code>JSContext</code>で、"共有"しているかのいずれかです。(繰り返しになりますが、JSAPIのユーザにとっては、全てのオブジェクトは 共有されており、この"所有関係"は、ユーザには見えないように最適化されています。) <span class="comment">Each mutable object is either "owned" by a &lt;code&gt;JSContext&lt;/code&gt;, meaning that context may access its properties without locking; or "shared" across all &lt;code&gt;JSContext&lt;/code&gt;s in the &lt;code&gt;JSRuntime&lt;/code&gt;. (Again, to the end user, all objects are shared--this "ownership" is a transparent optimization.)</span></p>
+<p>初期状態では、オブジェクトの所有者は、オブジェクトを作った<code>JSContext&lt;/code.です。他の&lt;code&gt;JSContext</code>がオブジェクトにアクセスしようとするまでは、 ロックは全く必要ではありません。他のコンテキストがアクセスしようとした時点で、<code>JSRuntime</code>の広域ロックを取得します。ただ、この時点においても プロパティへの通常のアクセスは、1つのオブジェクト(つまり、プロパティを持っているオブジェクトのこと)のmutable部分に触る必要があるだけです。 従って、デッドロックは問題になりません。* また、スレッドがロックする必要がある場合でも、オブジェクトを所有しているコンテキストが requestのくくりを実行していないのであれば、コストのかかる他のスレッドとのランデブ**を避けることができます。 <span class="comment">Initially an object is owned by the &lt;code&gt;JSContext&lt;/code&gt; in which it was created. Locking is never needed until some other &lt;code&gt;JSContext&lt;/code&gt; tries to access the object. At that point, we acquire a &lt;code&gt;JSRuntime&lt;/code&gt;-wide lock. But even then, each ordinary property access only needs to touch mutable parts of one object (the one that has the property), so deadlock isn't an issue.* And even though the calling thread must lock, it can still avoid a costly rendezvous** with another thread, if the context that owns the object is not currently in a request.</span></p>
+<p>I found it helpful to read the code for <code><a href="http://lxr.mozilla.org/seamonkey/ident?i=OBJ_GET_SLOT" class="external">OBJ_GET_SLOT</a></code>, defined in <a href="http://hg.mozilla.org/mozilla-central/?file/tip/js/src/jsobj.h" class="external">jsobj.h</a>, and track down the various things it calls.</p>
+<pre class="eval"> /* Thread-safe functions and wrapper macros for accessing slots in obj. */
+ #define OBJ_GET_SLOT(cx,obj,slot) \
+ (OBJ_CHECK_SLOT(obj, slot), \
+ (OBJ_IS_NATIVE(obj) &amp;&amp; OBJ_SCOPE(obj)-&gt;ownercx == cx) \
+  ? LOCKED_OBJ_GET_SLOT(obj, slot) \
+  : js_GetSlotThreadSafe(cx, obj, slot))
+</pre>
+<p>Here <code>OBJ_CHECK_SLOT()</code> is just an assertion. <code>LOCKED_OBJ_GET_SLOT()</code> is the fast path; it amounts to an array access. <code>OBJ_SCOPE(obj)-&gt;ownercx</code> is the object's owning context, or <code>NULL</code> if the object is "shared". (An <code>OBJ_SCOPE</code> is just a handy place to stick this field; it is often shared across multiple objects, so all this locking is somewhat higher than object-level.)</p>
+<p>This may appear unsafe, at least in SMP environments where writing a word isn't guaranteed to make the new value immediately visible to other CPUs. Requests save the day again: entering or leaving a request always briefly acquires a lock, which forces a read-write barrier. This barrier is necessary and sufficient to make several of these optimizations safe.</p>
+<p>In short, any <code>JSContext</code> may touch any object, yet not only is locking usually optimized away, the threads don't even have to execute atomic instructions or barrier instructions in the most common path.</p>
+<hr>
+<p>* deadlock isn't an issue: That is, SpiderMonkey doesn't need any special code to detect and avoid potential deadlock when getting or setting an ordinary property, because it can't happen--you're only locking one object at a time. Assigning to <code>__proto__</code> is an example of a special case: SpiderMonkey checks for prototype chain cycles, which means locking the whole chain. So in that case, and maybe others, SpiderMonkey does extra work to avoid deadlock.</p>
+<p>** can still avoid a costly rendezvous: That is, it can avoid "asking" that thread to surrender the object and then waiting for the thread to respond. It just takes the object. See <a href="http://lxr.mozilla.org/seamonkey/ident?i=ClaimScope" class="external">ClaimScope</a> in jslock.c.</p>
+<p>{{ 英語版章題("Patent") }}</p>
+<h4 id="Patent" name="Patent">Patent</h4>
+<p>The SpiderMonkey request model is patented: <a href="http://www.wipo.int/pctdb/en/wo.jsp?wo=2003042845" class=" external" rel="freelink">http://www.wipo.int/pctdb/en/wo.jsp?wo=2003042845</a></p>
+<p>The Mozilla Public License in the SpiderMonkey source code grants a worldwide royalty-free license to this invention.</p>
+
+<p>{{ languages( { "en": "en/SpiderMonkey_Internals/Thread_Safety" } ) }} </p>
diff --git a/files/ja/mozilla/projects/spidermonkey/introduction_to_the_javascript_shell/index.html b/files/ja/mozilla/projects/spidermonkey/introduction_to_the_javascript_shell/index.html
new file mode 100644
index 0000000000..f07dc77d69
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/introduction_to_the_javascript_shell/index.html
@@ -0,0 +1,376 @@
+---
+title: JavaScript シェルの紹介
+slug: Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell
+tags:
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell
+---
+<div>{{SpiderMonkeySidebar("General")}}</div>
+
+<div class="summary">
+<p><strong>JavaScript シェル</strong> (<code>js</code>) は <a href="/ja/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> ソース配布に含まれているコマンドラインプログラムです。 これは、Python の対話型プロンプト、Lisp の read-eval-print ループ、または Ruby の irb に相当する JavaScript です。この記事では、シェルを使用して JavaScript コードを試したり JavaScript プログラムを実行したりする方法について説明します。</p>
+</div>
+
+<p>SpiderMonkey JavaScript シェルを入手するには、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation">SpiderMonkey ビルドドキュメント</a>を参照するか、<a href="https://archive.mozilla.org/pub/firefox/nightly/latest-mozilla-central/">Nightly Builds</a> からプラットフォーム用にコンパイルされたバイナリをダウンロードしてください。</p>
+
+<p>他の JavaScript シェルのリストについては、<a href="/ja/docs/JavaScript/Shells">JavaScript シェル</a>を参照してください。</p>
+
+<div class="note">
+<p>メモ: SpiderMonkey 44 {{geckoRelease(44)}} 以降、標準の Web 互換の JavaScript バージョンがデフォルトで使用されます (JS 1.7 以降ではなくなりました)。組み込みの <code>version()</code> シェルは、従来の機能をテストするためにまだ存在しています。</p>
+</div>
+
+<h2 id="Using_the_JavaScript_shell" name="Using_the_JavaScript_shell">JavaScript シェルを実行する</h2>
+
+<p>シェルには2つの動作モードがあります。インタラクティブシェルとして使用することができます。ここでは、プロンプトで JavaScript コードを入力してすぐに満足のいく結果を得ることができます。これは、新機能の実験やテストに便利です。実行する JavaScript プログラムファイルをコマンドラインで渡すこともできます。その場合、プログラムは自動的に実行されます。</p>
+
+<p>ビルドの資料に従って、make install を使用してビルド済みシェルをインストールした後は、次のコマンドを使用して対話モードでシェルを実行できます。</p>
+
+<pre class="eval">js
+</pre>
+
+<p style="text-align: right;">[ If you get " symbol lookup error: ./js: undefined symbol: PR_SetCurrentThreadName" e.g. from a Bash console when using a pre-compiled binary, try &lt;path to your Firefox's run-mozilla.sh&gt;/run-mozilla.sh ./js -- that worked for me]</p>
+
+<p>ファイル <code>foo.js</code> 内の JavaScript コードを実行したい場合は、次のコマンドを使用できます:</p>
+
+<pre class="eval">js foo.js
+</pre>
+
+<p><code>foo.js</code> を実行してからインタラクティブシェルにドロップするには、次のようにします:</p>
+
+<pre class="eval">js -f foo.js -i
+</pre>
+
+<h2 id="リファレンス">リファレンス</h2>
+
+<div class="note"><strong>メモ:</strong> JavaScript シェルは JavaScript エンジンのテスト環境として使用されるため、使用可能なオプションと組み込み関数は時間の経過とともに変わる可能性があります。</div>
+
+<h3 id="Command_line_options" name="Command_line_options">コマンドラインオプション</h3>
+
+<p>シェルを制御するために指定できるコマンドラインオプションは多数あります。これらは以下に要約されています。文書化されていないものがあるかどうかを確認するには、必ず自分の jsshell で <strong>-h</strong> を使用してください。</p>
+
+<dl>
+ <dt><code>-c, --compileonly</code></dt>
+ <dd>プログラムをコンパイルして実行しないようシェルに指示します。これは、プログラムを実行せずにプログラム内の構文エラーを素早くチェックするのに便利な方法です。</dd>
+ <dt><code>-e <em>script</em></code></dt>
+ <dd>指定した<em>スクリプト</em>を実行します。これは、実行するコードを含むリテラル文字列です。</dd>
+ <dt><code>-f <em>filename</em></code></dt>
+ <dd><em>filename</em> で指定された JavaScript プログラムを実行します。</dd>
+ <dt><code>-i</code></dt>
+ <dd>インタラクティブモードを有効にします。(ファイル名が指定されていない場合はデフォルト)</dd>
+ <dt><code>--no-ion</code></dt>
+ <dd>最適化 JIT コンパイラを無効にします。</dd>
+ <dt><code>--no-baseline</code></dt>
+ <dd>ベースライン JIT コンパイラを無効にします。</dd>
+ <dt><code>-P</code></dt>
+ <dd>ファイルの最初の行が "/usr/bin/env js -P" の場合、ファイルの内容は JavaScript エンジンによって解釈されます。</dd>
+ <dd>これにより、JavaScript ファイルを UNIX および OS X マシン上で実行可能にすることができます。</dd>
+ <dt><code>-s</code></dt>
+ <dd>厳密な警告モードを有効にします。</dd>
+ <dt><code>-w, --warnings</code></dt>
+ <dd>警告メッセージを有効にします。</dd>
+ <dt><code>-W</code>, --nowarnings</dt>
+ <dd>警告メッセージを無効にします。</dd>
+</dl>
+
+<h3 id="Environment_options" name="Environment_options">環境オプション</h3>
+
+<p>js シェルの動作を変更するために設定できる環境変数がいくつかあります。</p>
+
+<dl>
+ <dt><code>JS_STDOUT=<em>file</em></code></dt>
+ <dd>標準出力を <em>file</em> にリダイレクトします。</dd>
+ <dt><code>JS_STDERR=<em>file</em></code></dt>
+ <dd>標準エラー出力を <em>file</em> にリダイレクトします。</dd>
+</dl>
+
+<h3 id="Built-in_functions" name="Built-in_functions">組み込み関数</h3>
+
+<p>JavaScript シェルをより便利にするために、JavaScript プログラムからでもインタラクティブモードでも使える、多くの組み込み関数が提供されています。</p>
+
+<div class="warning">
+<p><strong>注</strong>: このリストは不完全であり、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Shell_global_objects">Shell のグローバルオブジェクト</a>と重複しています。詳しくは {{Source("js/src/shell/js.cpp")}} を参照してください (<code>shell_functions</code>について)。</p>
+</div>
+
+<h4 id="build.28.29" name="build.28.29"><code>build()</code></h4>
+
+<p>JavaScript シェルが構築された日時を返します。</p>
+
+<div class="note"><strong>メモ:</strong> パラメータなしの <code>clear()</code> は本当にすべてをクリアします。これにはこれらすべての組み込み関数が含まれます。</div>
+
+<h4 id="clone.28function.2C_.5Bscope.5D.29" name="clone.28function.2C_.5Bscope.5D.29"><code>clone(<em>function, [scope]</em>)</code></h4>
+
+<p>指定された <var>function</var> オブジェクトを複製します。scope が指定されていない場合、新しいオブジェクトの親は元のオブジェクトのものと同じです。それ以外の場合、新しいオブジェクトは <em>scope</em> で指定されたオブジェクトの範囲内に配置されます。</p>
+
+<h4 id="countHeap" name="countHeap"><code>countHeap(<em>[start[, kind]]</em>)</code></h4>
+
+<p>{{ jsapi_minversion_inline("1.8") }} ヒープ内のライブ GC のもの、または <em>start</em> から到達可能なもので、指定された値が null ではないものの数を数えます。<em>kind</em> はすべてのものを数える <code>'all'</code> (デフォルト)、またはその種類のものだけを数えるための <code>'object'</code>, <code>'double'</code>, <code>'string'</code>, <code>'function'</code>, <code>'qname'</code>, <code>'namespace'</code>, <code>'xml'</code> のいずれかです。</p>
+
+<h4 id="evalcx.28string.5B.2C_object.5D.29" name="evalcx.28string.5B.2C_object.5D.29"><code>dumpHeap(<em>[fileName[, start[, toFind[, maxDepth[, toIgnore]]]]]</em>)</code></h4>
+
+<p>{{ jsapi_minversion_inline("1.8") }} 既存のすべてのオブジェクト (または特定の興味深い部分グラフ) のグラフをファイルにダンプします。詳しくは、この関数の C/C++ バージョン、<code>JS_DumpHeap</code> を参照してください。</p>
+
+<h4 id="evalcx.28string.5B.2C_object.5D.29" name="evalcx.28string.5B.2C_object.5D.29"><code>evalcx(<em>string[, object]</em>)</code></h4>
+
+<p>JavaScript コードを文字列で評価します。<em>object</em> が指定されている場合、コードはそのオブジェクト内で実行され、サンドボックスとして扱われます。</p>
+
+<p><em>string</em> が空で <em>object</em> が指定されていない場合、<code>evalcx()</code> は、意欲的な標準クラスを持つ新しいオブジェクトを返します。</p>
+
+<p><em>string</em> が "lazy" で <em>object</em> が指定されていない場合、<code>evalcx()</code> は lazy 標準クラスを持つ新しいオブジェクトを返します。</p>
+
+<div class="note"><strong>メモ:</strong> <code>evalcx()</code> は、シェル内で <code>evalInSandbox</code> のような環境をテストするために、JavaScript エンジンの内部で深く作業している人にのみ役立ちます。</div>
+
+<h4 id="gc.28.29" name="gc.28.29"><code>gc()</code></h4>
+
+<p>ガベージコレクタを実行してメモリを解放します。</p>
+
+<h4 id="gcparam.28.29" name="gcparam.28.29"><code>gcparam(<em>name[, value]</em>)</code></h4>
+
+<p>{{ jsapi_minversion_inline("1.8") }} ガベージコレクタのパラメータを読み込むか設定します。</p>
+
+<p>名前は <a href="https://searchfox.org/mozilla-central/source/js/src/builtin/TestingFunctions.cpp#464">https://searchfox.org/mozilla-central/source/js/src/builtin/TestingFunctions.cpp#464</a> の <code>FOR_EACH_GC_PARAM</code> で定義されているパラメータキーのいずれか (<code>'maxBytes'</code>、<code>'maxMallocBytes'</code>、'<code>gcNumber</code>' など) でなければなりません。</p>
+
+<p><em>value</em> が指定されていない場合、<code>gcparam()</code> は name という名前の GC パラメータに関連付けられている現在の値を返します。</p>
+
+<p><em>value</em> が指定されている場合、それは正の uint32 に変換可能でなければなりません。<code>gcparam()</code> は GC パラメータの <em>name</em> を <em>value</em> に設定します。</p>
+
+<p>詳しくは C/C++ 関数の <code><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetGCParameter">JS_GetGCParameter</a></code> および <a class="internal" href="https://developer.mozilla.org/En/SpiderMonkey/JSAPI_Reference/JS_SetGCParameter" title="en/SpiderMonkey/JSAPI Reference/JS SetGCParameter"><code>JS_SetGCParameter</code></a> を参照してください。</p>
+
+<h4 id="gczeal.28.29" name="gczeal.28.29"><code>gczeal(level)</code></h4>
+
+<p>{{ jsapi_minversion_inline("1.8") }} <code>DEBUG</code> のみ。デバッグ機能である GC の活動量のレベルを設定します。これは、通常の定期的なガベージコレクションの場合は 0、非常に頻繁な GC の場合は 1、非常に頻繁な GC の場合は 2 になります。<br>
+ 0 以外は JavaScript の実行を非常に遅くしますが、GC 関連のバグを明らかにしたり再現したりするのに役立ちます。詳しくは、この関数の C/C++ バージョンである <code><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetGCZeal">JS_SetGCZeal</a></code> を参照してください。</p>
+
+<h4 id="getpda.28object.29" name="getpda.28object.29"><code>getpda(<em>object</em>)</code></h4>
+
+<p>指定した <em>object</em> のプロパティ記述子を返します。</p>
+
+<h4 id="getslx.28object.29" name="getslx.28object.29"><code>getslx(<em>object</em>)</code></h4>
+
+<p>指定されたオブジェクトを構成するコードの行数であるスクリプト行エクステントを返します。</p>
+
+<h4 id="help.28.5Bcommand_....5D.29" name="help.28.5Bcommand_....5D.29"><code>help(<em>[command ...]</em>)</code></h4>
+
+<p>指定されたコマンド、または指定されていない場合は使用可能なすべての機能に関する簡単なヘルプ情報を表示します。</p>
+
+<h4 id="intern.28string.29" name="intern.28string.29"><code>intern(<em>string</em>)</code></h4>
+
+<p>指定された <var>string</var> をアトムテーブルに内部化します。すべての文字列はアトムと呼ばれる一意の識別子を持ちます。このシステムにより、文字列間の比較が簡単になります。</p>
+
+<div class="note"><strong>メモ:</strong> この関数は、JavaScript エンジンをテストするときにのみ使用されることを意図しています。</div>
+
+<h4 id="line2pc.28.5Bfunction.2C_.5D_line.29" name="line2pc.28.5Bfunction.2C_.5D_line.29"><code>line2pc(<em>[function, ] line</em>)</code></h4>
+
+<p>指定されたコード行に対応するプログラムカウンタ値を返します。<em>function</em> が指定されている場合、<em>line</em> は指定された関数へのオフセットです。</p>
+
+<h4 id="load.28filename1_.5Bfilename.5D.29" name="load.28filename1_.5Bfilename.5D.29"><code>load(<em>filename1</em> <em>[filename]</em>)</code></h4>
+
+<p>指定された名前で JavaScript ファイルをロードします。</p>
+
+<div class="note"><strong>メモ:</strong> JavaScript 以外のファイルをロードするには、<code>read()</code> を使用してください。</div>
+
+<h4 id="options.28.5Boption_....5D.29" name="options.28.5Boption_....5D.29"><code>options(<em>[option ...]</em>)</code></h4>
+
+<p>オプションを設定または取得できます。コマンドラインでオプションを指定した場合、<code>options</code> を呼び出した結果は、どのオプションを要求したかを示します。新しいオプションを渡して設定することもできます。</p>
+
+<p>利用可能なオプションは以下のとおりです:</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">オプション名</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>strict</code></td>
+ <td>ストリクトモードが有効になります。</td>
+ </tr>
+ <tr>
+ <td><code>werror</code></td>
+ <td>警告はエラーとして扱われます。</td>
+ </tr>
+ <tr>
+ <td><code>atline</code></td>
+ <td><code>atline</code> が有効になっているとき、<code>//@line <em>num</em></code> の形式のコメントは次の行の番号を <code><em>num</em></code> に設定します。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h4 id="pc2line.28function.2C_.5Bpc.5D.29" name="pc2line.28function.2C_.5Bpc.5D.29"><code>pc2line(<em>function, [pc]</em>)</code></h4>
+
+<p>指定された <em>function</em> の最初の行に対応する JavaScript コードの行番号を返します。関数にプログラムカウンタオフセットを指定した場合は、そのオフセットを含むコード行の行番号が返されます。</p>
+
+<h4 id="print.28.5Bexpression_....5D.29" name="print.28.5Bexpression_....5D.29"><code>print(<em>[expression ...]</em>)</code></h4>
+
+<p><em>expression(s)</em> を評価し、その結果を <code>stdout</code> にスペース (" ") で区切って表示し、改行 ("\n") で終了します。</p>
+
+<h4 id="print.28.5Bexpression_....5D.29" name="print.28.5Bexpression_....5D.29"><code>putstr(<em>expression</em>)</code></h4>
+
+<p><em>expression</em> を評価し、その結果を <code>stdout</code> に表示します。</p>
+
+<h4 id="quit.28.29" name="quit.28.29"><code>quit(<em>[status]</em>)</code></h4>
+
+<p>シェルを終了します。省略した場合、<em>status</em> はデフォルトで 0 になります。</p>
+
+<h4 id="read.28filename.5B.2C_type.5D.29" name="read.28filename.5B.2C_type.5D.29"><code>read(<em>filename[, type]</em>)</code></h4>
+
+<p>ファイルの内容を読み込んで返します。typeが "binary" の場合は <code>Uint8Array</code> が返され、それ以外の場合は UTF-8 でデコードされた文字列が返されます。</p>
+
+<h4 id="readline.28.29" name="readline.28.29"><code>readline()</code></h4>
+
+<p><code>stdin</code> から単一行の入力を読み込み、呼び出し元に返します。これを使って JavaScript でインタラクティブシェルプログラムを作成することができます。</p>
+
+<h4 id="scatter.28fnArray.29" name="scatter.28fnArray.29">Reflect.parse()</h4>
+
+<p><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Parser_API" title="en/SpiderMonkey/Parser_API">Parser API</a> を参照してください。</p>
+
+<div class="note"><strong>メモ:</strong> この関数は、JavaScript エンジンをテストするときにのみ使用することを意図しています。</div>
+
+<h4 id="seal.28object.5B.2C_deep.5D.29" name="seal.28object.5B.2C_deep.5D.29"><code>seal(<em>object[, deep]</em>)</code></h4>
+
+<p>指定した <em>object</em>、または <em>deep</em> が <code>true</code> の場合はオブジェクトグラフをシールします。オブジェクトまたはオブジェクトグラフを封印することで、それらのオブジェクトの変更を無効にします。</p>
+
+<h4 id="sleep.28dt.29" name="sleep.28dt.29"><code>sleep(dt)</code></h4>
+
+<p>{{ jsapi_minversion_inline("1.8") }} <code><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_THREADSAFE">JS_THREADSAFE</a></code> でのみビルドされます。<em>dt</em> 秒間スリープします。秒の端数がサポートされています。成功した場合に<code>true</code>、スリープが中断された場合に<code>false</code>を返します。</p>
+
+<h4 id="stackQuota" name="stackQuota"><code>stackQuota(<em>[number]</em>)</code> {{obsolete_inline}}</h4>
+
+<p>スクリプトスタッククォータを取得または設定します。</p>
+
+<h4 id="throwError.28.29" name="throwError.28.29"><code>throwError()</code></h4>
+
+<p><code>JS_ReportError()</code> 関数からエラーをスローします。</p>
+
+<div class="note"><strong>メモ:</strong> この関数は、JavaScript エンジンをテストするときにのみ使用することを意図しています。</div>
+
+<h4 id="trap.28.5Bfunction.2C_.5Bpc.2C.5D.5D_expression.29" name="trap.28.5Bfunction.2C_.5Bpc.2C.5D.5D_expression.29"><code>trap(<em>[function, [pc,]] expression</em>)</code></h4>
+
+<p>JavaScript コードの特定の位置にトラップを設定します。関数 <em>function</em> の <em>pc</em> で指定されたオフセットのバイトコードが実行されようとしているとき、式は評価されます。</p>
+
+<p><code>line2pc()</code> と組み合わせて使用すると、これは強力なデバッグメカニズムです。たとえば、関数 <code>doSomething()</code> の 6 行目が実行されたときにメッセージを表示したい場合は、次のように入力します。</p>
+
+<pre>trap(doSomething, line2pc(doSomething, 6), "print('line 6!\n')");
+</pre>
+
+<div class="note"><strong>メモ:</strong> トラップが設定されると、<code>untrap()</code> を使用してトラップを削除するまで、プログラム内の対応するバイトコードが <code>trap</code> バイトコードに置き換えられます。</div>
+
+<h4 id="untrap.28function_.5B.2C_pc.5D.29" name="untrap.28function_.5B.2C_pc.5D.29"><code>untrap(<em>function [, pc]</em>)</code></h4>
+
+<p>オフセット <em>pc</em> で指定した <em>function</em> からトラップを削除します。<em>pc</em> が指定されていない場合、トラップは関数のエントリポイントから削除されます。</p>
+
+<p>指定された場所にトラップがない場合、この機能は無効です。</p>
+
+<h4 id="version.28.5Bnumber.5D.29" name="version.28.5Bnumber.5D.29"><code>version(<em>[number]</em>)</code></h4>
+
+<p><code>version()</code> 関数を使用すると、JavaScript のバージョン番号を取得または設定できます。これは、特定のバージョンの JavaScript でのみ使用可能な構文にアクセスするのに役立ちます (たとえば、<a href="/ja/docs/Web/JavaScript/New_in_JavaScript/1.7#Using_JavaScript_1.7">JavaScript 1.7 の使用</a>を参照)。</p>
+
+<h3 id="Debug_functions" name="Debug_functions">デバッグ関数</h3>
+
+<p>これらの組み込み関数は <code>DEBUG</code> ビルドでのみ利用可能です。</p>
+
+<h4 id="dis.28.5Bfunction.5D.29" name="dis.28.5Bfunction.5D.29"><code>dis(<em>[function]</em>)</code></h4>
+
+<p>プログラム全体、または指定された <em>function</em> の JavaScript バイトコードを逆アセンブルします。</p>
+
+<p>たとえば、以下の JavaScript 関数を入力したとします。</p>
+
+<pre class="eval">function test() {
+ var i = 3;
+ print(i+2);
+}
+</pre>
+
+<p>それから <code>dis(test);</code> コマンドを実行すると、この出力が得られます。</p>
+
+<pre>main:
+00000: uint16 3
+00003: setvar 0
+00006: pop
+00007: name "print"
+00010: pushobj
+00011: getvar 0
+00014: uint16 2
+00017: add
+00018: call 1
+00021: pop
+00022: stop
+
+Source notes:
+ 0: 0 [ 0] newline
+ 1: 3 [ 3] decl offset 0
+ 2: 7 [ 4] newline
+ 3: 18 [ 11] xdelta
+ 4: 18 [ 0] pcbase offset 11
+</pre>
+
+<h4 id="dissrc.28.5Bfunction.5D.29" name="dissrc.28.5Bfunction.5D.29"><code>dissrc(<em>[function]</em>)</code></h4>
+
+<p>プログラム全体または指定された <em>function</em> の JavaScript バイトコードを逆アセンブルして、ソース行を表示します。この関数は、シェルの起動時に <code>-f</code> フラグを使用するか、<code>load()</code> 関数を使用してファイルからロードされたプログラムに対してのみ機能します。</p>
+
+<p>プログラムに関数 <code>doStuff()</code> が含まれている場合は、次のようになります。</p>
+
+<pre>function doStuff(input) {
+ print("Enter a number: ");
+ var n1 = readline();
+ print("Enter another one: ");
+ var n2 = readline();
+
+ print("You entered " + n1 + " and " + n2 + "\n");
+}
+</pre>
+
+<p><code>dissrc(doStuff)</code> 関数を呼び出すと、次の出力が得られます。</p>
+
+<pre>;------------------------- 10: print("Enter a number: ");
+00000: 10 name "print"
+00003: 10 pushobj
+00004: 10 string "Enter a number: "
+00007: 10 call 1
+00010: 10 pop
+;------------------------- 11: var n1 = readline();
+00011: 11 name "readline"
+00014: 11 pushobj
+00015: 11 call 0
+00018: 11 setvar 0
+00021: 11 pop
+;------------------------- 12: print("Enter another one: ");
+00022: 12 name "print"
+00025: 12 pushobj
+00026: 12 string "Enter another one: "
+00029: 12 call 1
+00032: 12 pop
+;------------------------- 13: var n2 = readline();
+00033: 13 name "readline"
+00036: 13 pushobj
+00037: 13 call 0
+00040: 13 setvar 1
+00043: 13 pop
+;------------------------- 14:
+;------------------------- 15: print("You entered " + n1 + " and " + n2 + "\n");
+00044: 15 name "print"
+00047: 15 pushobj
+00048: 15 string "You entered "
+00051: 15 getvar 0
+00054: 15 add
+00055: 15 string " and "
+00058: 15 add
+00059: 15 getvar 1
+00062: 15 add
+00063: 15 string "\\n"
+00066: 15 add
+00067: 15 call 1
+00070: 15 pop
+00071: 15 stop
+</pre>
+
+<h4 id="dumpheap.28.28.5BfileName.5B.2C_start.5B.2C_toFind.5B.2C_maxDepth.5B.2C_toIgnore.5D.5D.5D.5D.5D.29" name="dumpheap.28.28.5BfileName.5B.2C_start.5B.2C_toFind.5B.2C_maxDepth.5B.2C_toIgnore.5D.5D.5D.5D.5D.29"><code>dumpheap((<em>[fileName[, start[, toFind[, maxDepth[, toIgnore]]]]]</em>)</code></h4>
+
+<p>GC 情報をダンプします。これは <code><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DumpHeap">JS_DumpHeap</a></code> の軽量なラッパーです。</p>
+
+<h4 id="gczeal.28zeal.29" name="gczeal.28zeal.29"><code>gczeal(<em>zeal</em>)</code></h4>
+
+<p>GC の危険性の発見に役立つように、頻繁な GC を有効にします。<em>zeal</em> は整数です。意味は <code><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetGCZeal">JS_SetGCZeal</a></code> のパラメータと同じです。</p>
+
+<h4 id="notes.28.5Bfunction.5D.29" name="notes.28.5Bfunction.5D.29"><code>notes(<em>[function]</em>)</code></h4>
+
+<p>指定した機能のソースノートを表示します。ソースノートには、バイトコードをソースコードにマップする情報が含まれています。これは、<code>dissrc()</code> 関数を使用する場合など、コードを逆コンパイルするときに使用されます。</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_cookbook/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_cookbook/index.html
new file mode 100644
index 0000000000..efb0e70aa0
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_cookbook/index.html
@@ -0,0 +1,514 @@
+---
+title: JSAPI Cookbook
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_Cookbook
+tags:
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_Cookbook
+---
+<p>この記事は僅かなJavaScript共通の用語であるJSAPIについて記載しています。</p>
+
+<div class="note"><strong>Note:</strong>  <a class="internal" href="/En/SpiderMonkey/FOSS" title="En/SpiderMonkey/FOSS">FOSS</a> wiki ページには、 SpiderMonkey と JSAPI を使用する際に生活を楽にする他のライブラリやプログラムへのリンクがいくつか含まれています。</div>
+
+<h2 id="基礎">基礎</h2>
+
+<h3 id="Finding_the_global_object">Finding the global object</h3>
+
+<p>それらのレシピの多くは、最初に現在の大域オブジェクトを見つけることを要求します。</p>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+var global = this;
+</pre>
+
+<p>There is a function, <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetGlobalForScopeChain">JS_GetGlobalForScopeChain</a>(cx)</code>という関数があります。最良の考え方でありときにそれは大域オブジェクトの取得する場合最良の方法です。しかし<code><a href="/en/SpiderMonkey/JSAPI_Reference/JSNative">JSNative</a></code> の中では、これを実行する正しい方法は:</p>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+JSBool myNative(JSContext *cx, uintN argc, jsval *vp)
+{
+ CallArgs args = CallArgsFromVp(argc, vp);
+ JSObject *global = <a href="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_GetGlobalForObject" title="/en-US/docs/SpiderMonkey/JSAPI_Reference/JS_GetGlobalForObject">JS_GetGlobalForObject</a>(cx, &amp;args.callee());
+ ...
+}
+</pre>
+
+<h3 id="関数定義">関数定義</h3>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+function justForFun() {
+ return null;
+}
+</pre>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+JSBool justForFun(JSContext *cx, uintN argc, jsval *vp)
+{
+ JS_SET_RVAL(cx, vp, <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_NULL" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_NULL">JSVAL_NULL</a>);
+ return JS_TRUE;
+}
+
+...
+
+/*
+ * Add this to your JSContext setup code.
+ * This makes your C function visible as a global function in JavaScript.
+ */
+if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineFunction" title="en/SpiderMonkey/JSAPI_Reference/JS_DefineFunction">JS_DefineFunction</a>(cx, global, "justForFun", &amp;justForFun, 0, 0))
+ return JS_FALSE;
+</pre>
+
+<p>JSAPI関数を一度に定義する場合、JS_DefineFunctions. を用います。 <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineFunctions" title="en/SpiderMonkey/JSAPI_Reference/JS_DefineFunctions">JS_DefineFunctions</a></code>.</p>
+
+<h3 id="配列の生成">配列の生成</h3>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+var x = []; // or "x = Array()", or "x = new Array"
+</pre>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+JSObject *x = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewArrayObject" title="en/SpiderMonkey/JSAPI_Reference/JS_NewArrayObject">JS_NewArrayObject</a>(cx, 0, NULL);
+if (x == NULL)
+ return JS_FALSE;
+</pre>
+
+<h3 id="オブジェクトの生成">オブジェクトの生成</h3>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+var x = {}; // or "x = Object()", or "x = new Object"
+</pre>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+JSObject *x = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewObject" title="en/SpiderMonkey/JSAPI_Reference/JS_NewObject">JS_NewObject</a>(cx, NULL, NULL, NULL);
+if (x == NULL)
+ return JS_FALSE;
+</pre>
+
+<h3 id="オブジェクトの生成と初期化">オブジェクトの生成と初期化</h3>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+var person = new Person("Dave", 24);
+</pre>
+
+<p>JavaScriptではとても単純に処理されています。しかし、JSAPIのアプリケーションでは以下に記述するように3つのことを処理する必要があります:</p>
+
+<ul>
+ <li>コンストラクタを参照する、 <code>Person</code></li>
+ <li>引数を準備する <code>("Dave", 24)</code></li>
+ <li><code>new</code> キーワードで示す処理を擬似的に作り出すために <a href="/en/SpiderMonkey/JSAPI_Reference/JS_New" title="en/SpiderMonkey/JSAPI_Reference/JS_New"><code>JS_New</code></a> を呼び出します。</li>
+</ul>
+
+<p>(コンストラクタがどのよいうな引数も取らないならば、2番目の段階は省略して 3段階目の処理である <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_New" title="en/SpiderMonkey/JSAPI_Reference/JS_New">JS_New</a>(cx, constructor, 0, NULL)</code> を呼び出せます。)</p>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+
+jsval constructor_val;
+JSObject *constructor; /* BUG - not rooted */
+JSString *name_str;
+jsval argv[2]; /* BUG - not rooted */
+JSObject *obj;
+
+/* Step 1 - Get the value of |Person| and check that it is an object. */
+if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_GetProperty">JS_GetProperty</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetGlobalObject" title="en/SpiderMonkey/JSAPI_Reference/JS_GetGlobalObject">JS_GetGlobalObject</a>(cx), "Person", &amp;constructor_val))
+ return JS_FALSE;
+if (<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a>(constructor_val)) {
+ <a href="/en/SpiderMonkey/JSAPI_Reference/JS_ReportError" title="en/SpiderMonkey/JSAPI_Reference/JS_ReportError">JS_ReportError</a>(cx, "Person is not a constructor");
+ return JS_FALSE;
+}
+constructor = <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>(constructor_val);
+
+/* Step 2 - Set up the arguments. */
+name_str = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ" title="en/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ">JS_NewStringCopyZ</a>(cx, "Dave");
+if (!name_str)
+ return JS_FALSE;
+argv[0] = <a href="/en/SpiderMonkey/JSAPI_Reference/STRING_TO_JSVAL" title="en/SpiderMonkey/JSAPI_Reference/STRING_TO_JSVAL">STRING_TO_JSVAL</a>(name_str);
+argv[1] = <a href="/en/SpiderMonkey/JSAPI_Reference/INT_TO_JSVAL" title="en/SpiderMonkey/JSAPI_Reference/INT_TO_JSVAL">INT_TO_JSVAL</a>(24);
+
+/* Step 3 - Call |new Person(...argv)|, passing the arguments. */
+obj = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_New" title="en/SpiderMonkey/JSAPI_Reference/JS_New">JS_New</a>(cx, constructor, 2, argv);
+if (!obj)
+ return JS_FALSE;
+</pre>
+
+<h3 id="大域的なJS関数の呼び出し">大域的なJS関数の呼び出し</h3>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+var r = foo(); // where f is a global function
+</pre>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong>
+ *
+ * Suppose the script defines a global JavaScript
+ * function foo() and we want to call it from C.
+ */
+jsval r;
+if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName" title="en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName">JS_CallFunctionName</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetGlobalObject" title="en/SpiderMonkey/JSAPI_Reference/JS_GetGlobalObject">JS_GetGlobalObject</a>(cx), "foo", 0, NULL, &amp;r))
+ return JS_FALSE;
+</pre>
+
+<h3 id="局所変数を投資てJS関数を呼び出す">局所変数を投資てJS関数を呼び出す</h3>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+var r = f(); // where f is a local variable
+</pre>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong>
+ *
+ * Suppose f is a local C variable of type jsval.
+ */
+jsval r;
+if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionValue" title="en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionValue">JS_CallFunctionValue</a>(cx, NULL, f, 0, NULL, &amp;r)
+ return JS_FALSE;
+</pre>
+
+<h3 id="Returning_an_integer" name="Returning_an_integer">整数の戻り値</h3>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+return 23;
+</pre>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong>
+ *
+ * Warning: This only works for integers that fit in 32 bits.
+ * Otherwise, convert the number to floating point (see the next example).
+ */
+<a href="/en/SpiderMonkey/JSAPI_Reference/JS_SET_RVAL" title="en/SpiderMonkey/JSAPI_Reference/JS_SET_RVAL">JS_SET_RVAL</a>(cx, vp, <a href="/en/SpiderMonkey/JSAPI_Reference/INT_TO_JSVAL" title="en/SpiderMonkey/JSAPI_Reference/INT_TO_JSVAL">INT_TO_JSVAL</a>(23));
+return JS_TRUE;
+</pre>
+
+<h3 id="Returning_a_floating-point_number" name="Returning_a_floating-point_number">浮動小数点少数の戻り値</h3>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+return 3.14159;
+</pre>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+<a href="/en/SpiderMonkey/JSAPI_Reference/jsdouble" title="en/SpiderMonkey/JSAPI_Reference/jsdouble">jsdouble</a> n = 3.14159;
+return <a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewNumberValue" title="en/SpiderMonkey/JSAPI_Reference/JS_NewNumberValue">JS_NewNumberValue</a>(cx, n, rval);
+</pre>
+
+<h2 id="Exception_handling" name="Exception_handling">例外処理</h2>
+
+<h3 id="throw" name="throw"><code>throw</code></h3>
+
+<p>新規に最も共通の用語である <code>エラー</code> オブジェクトを生成した場合、それをハンドラに投げる場合 <a href="/en/SpiderMonkey/JSAPI_Reference/JS_ReportError" title="en/SpiderMonkey/JSAPI_Reference/JS_ReportError"><code>JS_ReportError</code></a> が処理を行います。 Note JavaScript の例外はC++の例外処理とは異なります。JSAPIコードでは呼び出し側に誤りを通知するために <code>JS_FALSE</code> を返す必要があります。</p>
+
+<pre class="notranslate">// <strong>JavaScript</strong>
+throw new Error("Failed to grow " + varietal + ": too many greenflies.");
+</pre>
+
+<pre class="notranslate">/* <strong>JSAPI</strong> */
+<a>JS_ReportError</a>(cx, "Failed to grow %s: too many greenflies.", varietal);
+return JS_FALSE;
+</pre>
+
+<p>エラーメッセージを他国間対応にするには、 <code>SyntaxError</code> や <code>TypeError</code>等のようにエラー種別を投げるように、 <a href="/en/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="en/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber"><code>JS_ReportErrorNumber</code></a> を代わりに用います。</p>
+
+<p>JavaScriptでは <code>Error</code> オブジェクトだけでなく、他の値を渡す事もサポートしています。 C/C++ から <code>jsval</code> という値を受け取るために<a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException"><code>JS_SetPendingException</code></a> を使います。</p>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+throw exc;
+</pre>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+<a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException">JS_SetPendingException</a>(cx, exc);
+return JS_FALSE;
+</pre>
+
+<p><code>JS_ReportError</code> が新規に <code>Error</code> オブジェクトを生成するとき、現在実行中のスタックの先頭にあるJavaScriptコードの行の属性である <code>fileName</code> と <code>lineNumber</code> をセットします。 これは通常、あなたが本当に必要としているものとは一致しないネイティブ関数を呼び出したコードの行になります。JSAPIコードは直接 <code>Error</code> オブジェクトを生成し、コンストラクタに追加の引数を渡す事でことでこれを無視することができます:</p>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+throw new Error(message, filename, lineno);
+</pre>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+JSBool ThrowError(JSContext *cx, JSObject *global,
+ const char *message, const char *filename, int32 lineno)
+{
+ JSString *messageStr;
+ JSString *filenameStr;
+ jsval args[3];
+ jsval exc;
+
+ messageStr = JS_NewStringCopyZ(cx, message);
+ if (!messageStr)
+ return JS_FALSE;
+ filenameStr = JS_NewStringCopyZ(cx, filename);
+ if (!filenameStr)
+ return JS_FALSE;
+
+ args[0] = STRING_TO_JSVAL(messageStr);
+ args[1] = STRING_TO_JSVAL(filenameStr);
+ args[2] = INT_TO_JSVAL(lineno);
+ if (<a href="/en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName" title="en/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName">JS_CallFunctionName</a>(cx, global, "Error", 3, args, &amp;exc))
+ <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_SetPendingException">JS_SetPendingException</a>(cx, exc);
+ return JS_FALSE;
+}
+
+...
+
+return ThrowError(cx, global, message, __FILE__, __LINE__);
+</pre>
+
+<p>ここのJSAPIコードは、<code>new</code> がJSAPIを用いて擬似的に作り出すことが難しいため、 <code>new</code> なしに <code>throw Error(message)</code> を擬似的に作り出します。この場合、スクリプトが <code>Error</code>を再定義しなければ、同じ事になります。</p>
+
+<h3 id="catch" name="catch"><code>catch</code></h3>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+try {
+ // try some stuff here; for example:
+ foo();
+ bar();
+} catch (exc) {
+ // do error-handling stuff here
+}
+</pre>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+ jsval exc;
+
+ /* try some stuff here; for example: */
+ if (!JS_CallFunctionName(cx, global, "foo", 0, NULL, &amp;r))
+ goto catch_block; /* instead of returning JS_FALSE */
+ if (!JS_CallFunctionName(cx, global, "bar", 0, NULL, &amp;r))
+ goto catch_block; /* instead of returning JS_FALSE */
+ return JS_TRUE;
+
+catch_block:
+ if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_GetPendingException">JS_GetPendingException</a>(cx, &amp;exc))
+ return JS_FALSE;
+ <a href="/en/SpiderMonkey/JSAPI_Reference/JS_ClearPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_ClearPendingException">JS_ClearPendingException</a>(cx);
+ /* do error-handling stuff here */
+ return JS_TRUE;
+</pre>
+
+<h3 id="finally" name="finally"><code>finally</code></h3>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+try {
+ foo();
+ bar();
+} finally {
+ cleanup();
+}
+</pre>
+
+<p>C/C++の浄化コードがJSAPI内にコールバックしなければ、処理は単純になります:</p>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+ <a href="/En/SpiderMonkey/JSAPI_Reference/JSBool" title="En/SpiderMonkey/JSAPI_Reference/JSBool">JSBool</a> success = JS_FALSE;
+
+ if (!JS_CallFunctionName(cx, global, "foo", 0, NULL, &amp;r))
+ goto finally_block; /* instead of returning JS_FALSE immediately */
+ if (!JS_CallFunctionName(cx, global, "bar", 0, NULL, &amp;r))
+ goto finally_block;
+ success = JS_TRUE;
+ /* Intentionally fall through to the finally block. */
+
+finally_block:
+ cleanup();
+ return success;
+</pre>
+
+<p>しかしながら、 <code>cleanup()</code> が実際にJavaScriptの関数であれば、それらはcatchされます。エラーが発生したとき、 <code>JSContext</code><em>の例外処理の待機がセットされます。</em> これは上の例で <code>foo()</code> や <code>bar()</code> で発生するならば、待機中の例外処理は より悪い状態になるであろう <code>cleanup()</code> 処理を呼び出しているときにセットされます。これを避ける為に、JSAPIコードの実装では <code>finally</code> ブロックには以下のことが必要ですt:</p>
+
+<ul>
+ <li>古い例外を保存する</li>
+ <li>cleanupコードを走らせる為に、待機中の例外処理をクリアします</li>
+ <li>あなたのcleanup処理wp実行します</li>
+ <li>古い例外を復帰させます</li>
+ <li>例外が発生していたならば、例外処理を上位に伝えるために、JS_FALSEを戻り値として返します</li>
+</ul>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+ <a href="/En/SpiderMonkey/JSAPI_Reference/JSBool" title="En/SpiderMonkey/JSAPI_Reference/JSBool">JSBool</a> success = JS_FALSE;
+ <a href="/en/SpiderMonkey/JSAPI_Reference/JSExceptionState" title="en/SpiderMonkey/JSAPI_Reference/JSExceptionState">JSExceptionState</a> *exc_state;
+
+ if (!JS_CallFunctionName(cx, global, "foo", 0, NULL, &amp;r))
+ goto finally_block; /* instead of returning JS_FALSE immediately */
+ if (!JS_CallFunctionName(cx, global, "bar", 0, NULL, &amp;r))
+ goto finally_block;
+ success = JS_TRUE;
+ /* Intentionally fall through to the finally block. */
+
+finally_block:
+ exc_state = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SaveExceptionState" title="en/SpiderMonkey/JSAPI_Reference/JS_SaveExceptionState">JS_SaveExceptionState</a>(cx);
+ if (exc_state == NULL)
+ return JS_FALSE;
+ <a href="/en/SpiderMonkey/JSAPI_Reference/JS_ClearPendingException" title="en/SpiderMonkey/JSAPI_Reference/JS_ClearPendingException">JS_ClearPendingException</a>(cx);
+
+ if (!JS_CallFunctionName(cx, global, "cleanup", 0, NULL, &amp;r)) {
+ /* The new error replaces the previous one, so discard the saved exception state. */
+ <a href="/en/SpiderMonkey/JSAPI_Reference/JS_DropExceptionState" title="en/SpiderMonkey/JSAPI_Reference/JS_DropExceptionState">JS_DropExceptionState</a>(cx, exc_state);
+ return JS_FALSE;
+ }
+ <a href="/en/SpiderMonkey/JSAPI_Reference/JS_RestoreExceptionState" title="en/SpiderMonkey/JSAPI_Reference/JS_RestoreExceptionState">JS_RestoreExceptionState</a>(cx, exc_state);
+ return success;
+</pre>
+
+<h2 id="Object_properties" name="Object_properties">オブジェクトの属性</h2>
+
+<h3 id="Getting_a_property" name="Getting_a_property">属性の取得</h3>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+var x = y.myprop;
+</pre>
+
+<p>JSAPI関数で、属性を取得する関数が <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_GetProperty">JS_GetProperty</a></code>です。<code>JSObject *</code> を引数として必要とします。 JavaScriptの値は、通常 <code>jsval</code> 変数に保存されるため、変数のキャストまたは変換が必要になります。</p>
+
+<p><code>y</code> (ブール値、数値、文字列、 <code>null</code>, または <code>undefined</code>などではなく)がオブジェクトであることが確実な場合、これは非常に単純です。 <code><a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a></code> を使い、 <code>y</code> を <code>JSObject *</code>の型にキャストします。</p>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+jsval x;
+
+assert(<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">!JSVAL_IS_PRIMITIVE</a>(y));
+if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_GetProperty">JS_GetProperty</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>(y), "myprop", &amp;x))
+ return JS_FALSE;
+</pre>
+
+<p>もし <code>y</code> がオブジェクトでなければ、コードは壊れます。これはときに受け入れ難いことです。代替的にJavaScriptに振る舞いを擬似的に実行することになります。非常に良い考えですJavaScriptはクラッシュしません。しかし、その正確な振る舞いの実装では、非常に複雑なものになります。</p>
+
+<p>多くの実装では、特別に処理が扱いやすくなるわけではありません。通常、 <code>!<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a>(y)</code> を検査し、良いメッセージとともに <code>Error</code> を投げることが最良な処理です。</p>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+jsval x;
+
+if (<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a>(y))
+ return ThrowError(cx, global, "Parameter y must be an object.", __FILE__, __LINE__); /* see the <a href="#throw">#throw</a> example */
+if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_GetProperty">JS_GetProperty</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>(y), "myprop", &amp;x))
+ return JS_FALSE;
+</pre>
+
+<h3 id="Setting_a_property" name="Setting_a_property">属性の設定</h3>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+y.myprop = x;
+</pre>
+
+<p><code>y</code> がオブジェクトではない場合を懸念するならば、上述の属性の取得を参照して下さい。</p>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+assert(!<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a>(y));
+if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_SetProperty">JS_SetProperty</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>(y), "myprop", &amp;x))
+ return JS_FALSE;
+</pre>
+
+<h3 id="Checking_for_a_property" name="Checking_for_a_property">属性の検査</h3>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+if ("myprop" in y) {
+ // then do something
+}
+</pre>
+
+<p><code>y</code> がオブジェクトではない場合を懸念するならば、上述の属性の取得を参照して下さい。</p>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+JSBool found;
+
+assert(!<a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a>(y));
+if (!<a href="/en/SpiderMonkey/JSAPI_Reference/JS_HasProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_HasProperty">JS_HasProperty</a>(cx, <a href="/en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="en/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>(y), "myprop", &amp;found))
+ return JS_FALSE;
+if (found) {
+ // then do something
+}
+</pre>
+
+<h3 id="固定属性を定義する">固定属性を定義する</h3>
+
+<p>これはビルトイン関数 <code>Object.defineProperty()</code>に関わる最初の3つの例です。この関数は、オブジェクトの個別の属性の挙動に関してはっきりした操作をJavaScriptのコードに与えます。</p>
+
+<p>この関数を使って、上書きや削除できない固定属性を生成できます。<code>writable: false</code> によって属性を読み出し専用に作り、 <code>configurable: false</code> に設定して、再定義や削除されることから防ぎます。 フラグ <code>enumerable: true</code> は forループ内にあるときにこの属性が設定されます。</p>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+Object.defineProperty(obj, "prop", {value: 123,
+ writable: false,
+ enumerable: true,
+ configurable: false});
+</pre>
+
+<p>JSAPI関数の類似した関数に、 <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DefineProperty" title="en/SpiderMonkey/JSAPI_Reference/JS_DefineProperty">JS_DefineProperty</a></code>があります。属性 <code>JSPROP_READONLY</code> を持っており、その属性は<code>writeable: false</code>に一致します。<code>JSPROP_ENUMERATE</code> は <code>enumerable: true</code>,に一致し、 <code>JSPROP_PERMANENT</code> は <code>configurable: false</code>にその属性が一致します。これらの設定の相対的な挙動を得るためには、必要ない属性のビットを単純に省いて下さい。</p>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+if (!JS_DefineProperty(cx, obj, "prop", INT_TO_JSVAL(123),
+ JS_PropertyStub, JS_StrictPropertyStub,
+ JSPROP_READONLY | JSPROP_ENUMERATE | JSPROP_PERMANENT)) {
+ return JS_FALSE;
+}
+</pre>
+
+<h3 id="設定と取得の属性の定義">設定と取得の属性の定義</h3>
+
+<p><code>Object.defineProperty()</code> は二つのアクセス関数の属性を定義する為に用いることができます。</p>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+Object.defineProperty(obj, "prop", {get: GetPropFunc,
+ set: SetPropFunc,
+ enumerable: true});
+</pre>
+
+<p>JSAPIバージョンでは、 <code>GetPropFunc</code> と <code>SetPropFunc</code> が <a href="/en/SpiderMonkey/JSAPI_Reference/JSNative" title="en/SpiderMonkey/JSAPI_Reference/JSNative"><code>JSNative</code></a>型のC/C++ 関数関数として用意されています。of type .</p>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+if (!JS_DefineProperty(cx, obj, "prop", JSVAL_VOID,
+ (JSPropertyOp) GetPropFunc, (JSStrictPropertyOp) SetPropFunc,
+ JSPROP_SHARED | JSPROP_NATIVE_ACCESSORS | JSPROP_ENUMERATE)) {
+ return JS_FALSE;
+}
+</pre>
+
+<h3 id="取得のための呼び出し専用属性の定義">取得のための呼び出し専用属性の定義</h3>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+Object.defineProperty(obj, "prop", {get: GetPropFunc,
+ enumerable: true});
+</pre>
+
+<p>JSAPIバージョン では、属性を読み出し専用に定義し、設定用にはNULLを通します。</p>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+if (!JS_DefineProperty(cx, obj, "prop", JSVAL_VOID,
+ GetPropFunc, NULL,
+ JSPROP_SHARED | JSPROP_NATIVE_ACCESSORS | JSPROP_ENUMERATE)) {
+ return JS_FALSE;
+}
+</pre>
+
+<h2 id="Prototypes" name="Prototypes">プロトタイプチェインの働き</h2>
+
+<h3 id="String.prototypeにネイティブでは読み出し専用属性を定義します">String.prototypeにネイティブでは読み出し専用属性を定義します</h3>
+
+<pre class="eval notranslate">// <strong>JavaScript</strong>
+Object.defineProperty(String.prototype, "md5sum", {get: GetMD5Func,
+ enumerable: true});
+</pre>
+
+<p>何かが大域的なStringオブジェクトを別な何かに取り替えるならば、以下のようなトリックは動作しません。</p>
+
+<pre class="eval notranslate">/* <strong>JSAPI</strong> */
+JSObject *string, *string_prototype;
+jsval val;
+
+// Get the String constructor from the global object.
+if (!JS_GetProperty(cx, global, "String", &amp;val))
+ return JS_FALSE;
+if (JSVAL_IS_PRIMITIVE(val))
+ return ThrowError(cx, global, "String is not an object", __FILE__, __LINE__);
+string = JSVAL_TO_OBJECT(val);
+
+// Get String.prototype.
+if (!JS_GetProperty(cx, string, "prototype", &amp;val))
+ return JS_FALSE;
+if (JSVAL_IS_PRIMITIVE(val))
+ return ThrowError(cx, global, "String.prototype is not an object", __FILE__, __LINE__);
+string_prototype = JSVAL_TO_OBJECT(val);
+
+// ...and now we can add some new functionality to all strings.
+if (!JS_DefineProperty(cx, string_prototype, "md5sum", JSVAL_VOID, GetMD5Func, NULL,
+ JSPROP_SHARED | JSPROP_NATIVE_ACCESSORS | JSPROP_ENUMERATE))
+ return JS_FALSE;
+</pre>
+
+<h2 id="Wanted" name="Wanted">Wanted</h2>
+
+<ul>
+ <li>Simulating <code>for</code> and <code>for each</code>.</li>
+ <li>Actually outputting errors.</li>
+</ul>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/alphabetical_list/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/alphabetical_list/index.html
new file mode 100644
index 0000000000..4bf1ac4123
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/alphabetical_list/index.html
@@ -0,0 +1,228 @@
+---
+title: Alphabetical List
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/Alphabetical_List
+tags:
+ - JSAPI_Reference
+ - SpiderMonkey
+---
+<p>参照: <a href="/ja/docs/JSAPI_Reference">グループ別一覧</a>, <a href="/ja/docs/tag/JSAPI_Reference">カテゴリ表示 (自動)</a>.</p>
+<ul>
+ <li><a href="/ja/docs/BOOLEAN_TO_JSVAL">BOOLEAN_TO_JSVAL</a></li>
+ <li><a href="/ja/docs/DOUBLE_TO_JSVAL">DOUBLE_TO_JSVAL</a></li>
+ <li><a href="/ja/docs/INT_FITS_IN_JSVAL">INT_FITS_IN_JSVAL</a></li>
+ <li><a href="/ja/docs/INT_TO_JSVAL">INT_TO_JSVAL</a></li>
+ <li><a href="/ja/docs/JS_AddNamedRoot">JS_AddNamedRoot</a></li>
+ <li><a href="/ja/docs/JS_AddRoot">JS_AddRoot</a></li>
+ <li><a href="/ja/docs/JS_AliasElement">JS_AliasElement</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li>
+ <li><a href="/ja/docs/JS_AliasProperty">JS_AliasProperty</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li>
+ <li><a href="/ja/docs/JS_BeginRequest">JS_BeginRequest</a></li>
+ <li><a href="/ja/docs/JS_CallFunction">JS_CallFunction</a></li>
+ <li><a href="/ja/docs/JS_CallFunctionName">JS_CallFunctionName</a></li>
+ <li><a href="/ja/docs/JS_CallFunctionValue">JS_CallFunctionValue</a></li>
+ <li><a href="/ja/docs/JS_CheckAccess">JS_CheckAccess</a></li>
+ <li><a href="/ja/docs/JS_ClearContextThread">JS_ClearContextThread</a></li>
+ <li><a href="/ja/docs/JS_ClearScope">JS_ClearScope</a></li>
+ <li><a href="/ja/docs/JS_CloneFunctionObject">JS_CloneFunctionObject</a></li>
+ <li><a href="/ja/docs/JS_CompareStrings">JS_CompareStrings</a></li>
+ <li><a href="/ja/docs/JS_CompileFile">JS_CompileFile</a></li>
+ <li><a href="/ja/docs/JS_CompileFunction">JS_CompileFunction</a></li>
+ <li><a href="/ja/docs/JS_CompileFunctionForPrincipals">JS_CompileFunctionForPrincipals</a></li>
+ <li><a href="/ja/docs/JS_CompileScript">JS_CompileScript</a></li>
+ <li><a href="/ja/docs/JS_CompileScriptForPrincipals">JS_CompileScriptForPrincipals</a></li>
+ <li><a href="/ja/docs/JS_CompileUCFunction">JS_CompileUCFunction</a></li>
+ <li><a href="/ja/docs/JS_CompileUCFunctionForPrincipals">JS_CompileUCFunctionForPrincipals</a></li>
+ <li><a href="/ja/docs/JS_CompileUCScript">JS_CompileUCScript</a></li>
+ <li><a href="/ja/docs/JS_CompileUCScriptForPrincipals">JS_CompileUCScriptForPrincipals</a></li>
+ <li><a href="/ja/docs/JS_ConstructObject">JS_ConstructObject</a></li>
+ <li><a href="/ja/docs/JS_ContextIterator">JS_ContextIterator</a></li>
+ <li><a href="/ja/docs/JS_ConvertArguments">JS_ConvertArguments</a></li>
+ <li><a href="/ja/docs/JS_ConvertStub">JS_ConvertStub</a></li>
+ <li><a href="/ja/docs/JS_ConvertValue">JS_ConvertValue</a></li>
+ <li><a href="/ja/docs/JS_DecompileFunction">JS_DecompileFunction</a></li>
+ <li><a href="/ja/docs/JS_DecompileFunctionBody">JS_DecompileFunctionBody</a></li>
+ <li><a href="/ja/docs/JS_DecompileScript">JS_DecompileScript</a></li>
+ <li><a href="/ja/docs/JS_DefineConstDoubles">JS_DefineConstDoubles</a></li>
+ <li><a href="/ja/docs/JS_DefineElement">JS_DefineElement</a></li>
+ <li><a href="/ja/docs/JS_DefineFunction">JS_DefineFunction</a></li>
+ <li><a href="/ja/docs/JS_DefineFunctions">JS_DefineFunctions</a></li>
+ <li><a href="/ja/docs/JS_DefineObject">JS_DefineObject</a></li>
+ <li><a href="/ja/docs/JS_DefineProperties">JS_DefineProperties</a></li>
+ <li><a href="/ja/docs/JS_DefineProperty">JS_DefineProperty</a></li>
+ <li><a href="/ja/docs/JS_DefinePropertyWithTinyId">JS_DefinePropertyWithTinyId</a></li>
+ <li><a href="/ja/docs/JS_DefineUCProperty">JS_DefineUCProperty</a></li>
+ <li><a href="/ja/docs/JS_DefineUCPropertyWithTinyID">JS_DefineUCPropertyWithTinyID</a></li>
+ <li><a href="/ja/docs/JS_DeleteElement">JS_DeleteElement</a></li>
+ <li><a href="/ja/docs/JS_DeleteElement2">JS_DeleteElement2</a></li>
+ <li><a href="/ja/docs/JS_DeleteProperty">JS_DeleteProperty</a></li>
+ <li><a href="/ja/docs/JS_DeleteProperty2">JS_DeleteProperty2</a></li>
+ <li><a href="/ja/docs/JS_DeleteUCProperty2">JS_DeleteUCProperty2</a></li>
+ <li><a href="/ja/docs/JS_DestroyContext">JS_DestroyContext</a></li>
+ <li><a href="/ja/docs/JS_DestroyIdArray">JS_DestroyIdArray</a></li>
+ <li><a href="/ja/docs/JS_DestroyRuntime">JS_DestroyRuntime</a></li>
+ <li><a href="/ja/docs/JS_DestroyScript">JS_DestroyScript</a></li>
+ <li><a href="/ja/docs/JS_DumpNamedRoots">JS_DumpNamedRoots</a></li>
+ <li><a href="/ja/docs/JS_EndRequest">JS_EndRequest</a></li>
+ <li><a href="/ja/docs/JS_Enumerate">JS_Enumerate</a></li>
+ <li><a href="/ja/docs/JS_EnumerateStub">JS_EnumerateStub</a></li>
+ <li><a href="/ja/docs/JS_EvaluateScript">JS_EvaluateScript</a></li>
+ <li><a href="/ja/docs/JS_EvaluateScriptForPrincipals">JS_EvaluateScriptForPrincipals</a></li>
+ <li><a href="/ja/docs/JS_EvaluateUCScript">JS_EvaluateUCScript</a></li>
+ <li><a href="/ja/docs/JS_EvaluateUCScriptForPrincipals">JS_EvaluateUCScriptForPrincipals</a></li>
+ <li><a href="/ja/docs/JS_ExecuteScript">JS_ExecuteScript</a></li>
+ <li><a href="/ja/docs/JS_FinalizeStub">JS_FinalizeStub</a></li>
+ <li><a href="/ja/docs/JS_Finish">JS_Finish</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li>
+ <li><a href="/ja/docs/JS_free">JS_free</a></li>
+ <li><a href="/ja/docs/JS_GC">JS_GC</a></li>
+ <li><a href="/ja/docs/JS_GetArrayLength">JS_GetArrayLength</a></li>
+ <li><a href="/ja/docs/JS_GetClass">JS_GetClass</a></li>
+ <li><a href="/ja/docs/JS_GetConstructor">JS_GetConstructor</a></li>
+ <li><a href="/ja/docs/JS_GetContextPrivate">JS_GetContextPrivate</a></li>
+ <li><a href="/ja/docs/JS_GetContextThread">JS_GetContextThread</a></li>
+ <li><a href="/ja/docs/JS_GetElement">JS_GetElement</a></li>
+ <li><a href="/ja/docs/JS_GetEmptyStringValue">JS_GetEmptyStringValue</a></li>
+ <li><a href="/ja/docs/JS_GetFunctionName">JS_GetFunctionName</a></li>
+ <li><a href="/ja/docs/JS_GetFunctionObject">JS_GetFunctionObject</a></li>
+ <li><a href="/ja/docs/JS_GetGlobalObject">JS_GetGlobalObject</a></li>
+ <li><a href="/ja/docs/JS_GetImplementationVersion">JS_GetImplementationVersion</a></li>
+ <li><a href="/ja/docs/JS_GetInstancePrivate">JS_GetInstancePrivate</a></li>
+ <li><a href="/ja/docs/JS_GetNaNValue">JS_GetNaNValue</a></li>
+ <li><a href="/ja/docs/JS_GetNegativeInfinityValue">JS_GetNegativeInfinityValue</a></li>
+ <li><a href="/ja/docs/JS_GetParent">JS_GetParent</a></li>
+ <li><a href="/ja/docs/JS_GetPositiveInfinityValue">JS_GetPositiveInfinityValue</a></li>
+ <li><a href="/ja/docs/JS_GetPrivate">JS_GetPrivate</a></li>
+ <li><a href="/ja/docs/JS_GetProperty">JS_GetProperty</a></li>
+ <li><a href="/ja/docs/JS_GetPropertyAttributes">JS_GetPropertyAttributes</a></li>
+ <li><a href="/ja/docs/JS_GetPrototype">JS_GetPrototype</a></li>
+ <li><a href="/ja/docs/JS_GetRuntime">JS_GetRuntime</a></li>
+ <li><a href="/ja/docs/JS_GetScopeChain">JS_GetScopeChain</a></li>
+ <li><a href="/ja/docs/JS_GetStringBytes">JS_GetStringBytes</a></li>
+ <li><a href="/ja/docs/JS_GetStringChars">JS_GetStringChars</a></li>
+ <li><a href="/ja/docs/JS_GetStringLength">JS_GetStringLength</a></li>
+ <li><a href="/ja/docs/JS_GetTypeName">JS_GetTypeName</a></li>
+ <li><a href="/ja/docs/JS_GetUCProperty">JS_GetUCProperty</a></li>
+ <li><a href="/ja/docs/JS_GetVersion">JS_GetVersion</a></li>
+ <li><a href="/ja/docs/JS_HasArrayLength">JS_HasArrayLength</a></li>
+ <li><a href="/ja/docs/JS_IdToValue">JS_IdToValue</a></li>
+ <li><a href="/ja/docs/JS_Init">JS_Init</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li>
+ <li><a href="/ja/docs/JS_InitClass">JS_InitClass</a></li>
+ <li><a href="/ja/docs/JS_InitStandardClasses">JS_InitStandardClasses</a></li>
+ <li><a href="/ja/docs/JS_InstanceOf">JS_InstanceOf</a></li>
+ <li><a href="/ja/docs/JS_InternString">JS_InternString</a></li>
+ <li><a href="/ja/docs/JS_InternUCString">JS_InternUCString</a></li>
+ <li><a href="/ja/docs/JS_InternUCStringN">JS_InternUCStringN</a></li>
+ <li><a href="/ja/docs/JS_IsArrayObject">JS_IsArrayObject</a></li>
+ <li><a href="/ja/docs/JS_IsConstructing">JS_IsConstructing</a></li>
+ <li><a href="/ja/docs/JS_IsRunning">JS_IsRunning</a></li>
+ <li><a href="/ja/docs/JS_Lock">JS_Lock</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li>
+ <li><a href="/ja/docs/JS_LockGCThing">JS_LockGCThing</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li>
+ <li><a href="/ja/docs/JS_LookupElement">JS_LookupElement</a></li>
+ <li><a href="/ja/docs/JS_LookupProperty">JS_LookupProperty</a></li>
+ <li><a href="/ja/docs/JS_LookupUCProperty">JS_LookupUCProperty</a></li>
+ <li><a href="/ja/docs/JS_malloc">JS_malloc</a></li>
+ <li><a href="/ja/docs/JS_MaybeGC">JS_MaybeGC</a></li>
+ <li><a href="/ja/docs/JS_NewArrayObject">JS_NewArrayObject</a></li>
+ <li><a href="/ja/docs/JS_NewContext">JS_NewContext</a></li>
+ <li><a href="/ja/docs/JS_NewDouble">JS_NewDouble</a></li>
+ <li><a href="/ja/docs/JS_NewDoubleValue">JS_NewDoubleValue</a></li>
+ <li><a href="/ja/docs/JS_NewFunction">JS_NewFunction</a></li>
+ <li><a href="/ja/docs/JS_NewIdArray">JS_NewIdArray</a></li>
+ <li><a href="/ja/docs/JS_NewNumberValue">JS_NewNumberValue</a></li>
+ <li><a href="/ja/docs/JS_NewObject">JS_NewObject</a></li>
+ <li><a href="/ja/docs/JS_NewRuntime">JS_NewRuntime</a></li>
+ <li><a href="/ja/docs/JS_NewScriptObject">JS_NewScriptObject</a></li>
+ <li><a href="/ja/docs/JS_NewString">JS_NewString</a></li>
+ <li><a href="/ja/docs/JS_NewStringCopyN">JS_NewStringCopyN</a></li>
+ <li><a href="/ja/docs/JS_NewStringCopyZ">JS_NewStringCopyZ</a></li>
+ <li><a href="/ja/docs/JS_NewUCString">JS_NewUCString</a></li>
+ <li><a href="/ja/docs/JS_NewUCStringCopyN">JS_NewUCStringCopyN</a></li>
+ <li><a href="/ja/docs/JS_NewUCStringCopyZ">JS_NewUCStringCopyZ</a></li>
+ <li><a href="/ja/docs/JS_ObjectIsFunction">JS_ObjectIsFunction</a></li>
+ <li><a href="/ja/docs/JS_PropertyStub">JS_PropertyStub</a></li>
+ <li><a href="/ja/docs/JS_realloc">JS_realloc</a></li>
+ <li><a href="/ja/docs/JS_RemoveRoot">JS_RemoveRoot</a></li>
+ <li><a href="/ja/docs/JS_ReportError">JS_ReportError</a></li>
+ <li><a href="/ja/docs/JS_ReportOutOfMemory">JS_ReportOutOfMemory</a></li>
+ <li><a href="/ja/docs/JS_ResolveStub">JS_ResolveStub</a></li>
+ <li><a href="/ja/docs/JS_ResumeRequest">JS_ResumeRequest</a></li>
+ <li><a href="/ja/docs/JS_SetArrayLength">JS_SetArrayLength</a></li>
+ <li><a href="/ja/docs/JS_SetBranchCallback">JS_SetBranchCallback</a></li>
+ <li><a href="/ja/docs/JS_SetContextPrivate">JS_SetContextPrivate</a></li>
+ <li><a href="/ja/docs/JS_SetContextThread">JS_SetContextThread</a></li>
+ <li><a href="/ja/docs/JS_SetElement">JS_SetElement</a></li>
+ <li><a href="/ja/docs/JS_SetErrorReporter">JS_SetErrorReporter</a></li>
+ <li><a href="/ja/docs/JS_SetGCCallback">JS_SetGCCallback</a></li>
+ <li><a href="/ja/docs/JS_SetGlobalObject">JS_SetGlobalObject</a></li>
+ <li><a href="/ja/docs/JS_SetParent">JS_SetParent</a></li>
+ <li><a href="/ja/docs/JS_SetPrivate">JS_SetPrivate</a></li>
+ <li><a href="/ja/docs/JS_SetProperty">JS_SetProperty</a></li>
+ <li><a href="/ja/docs/JS_SetPropertyAttributes">JS_SetPropertyAttributes</a></li>
+ <li><a href="/ja/docs/JS_SetPrototype">JS_SetPrototype</a></li>
+ <li><a href="/ja/docs/JS_SetUCProperty">JS_SetUCProperty</a></li>
+ <li><a href="/ja/docs/JS_SetVersion">JS_SetVersion</a></li>
+ <li><a href="/ja/docs/JS_strdup">JS_strdup</a></li>
+ <li><a href="/ja/docs/JS_SuspendRequest">JS_SuspendRequest</a></li>
+ <li><a href="/ja/docs/JS_TypeOfValue">JS_TypeOfValue</a></li>
+ <li><a href="/ja/docs/JS_Unlock">JS_Unlock</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li>
+ <li><a href="/ja/docs/JS_UnlockGCThing">JS_UnlockGCThing</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li>
+ <li><a href="/ja/docs/JS_ValueToBoolean">JS_ValueToBoolean</a></li>
+ <li><a href="/ja/docs/JS_ValueToECMAInt32">JS_ValueToECMAInt32</a></li>
+ <li><a href="/ja/docs/JS_ValueToECMAUint32">JS_ValueToECMAUint32</a></li>
+ <li><a href="/ja/docs/JS_ValueToFunction">JS_ValueToFunction</a></li>
+ <li><a href="/ja/docs/JS_ValueToId">JS_ValueToId</a></li>
+ <li><a href="/ja/docs/JS_ValueToInt32">JS_ValueToInt32</a></li>
+ <li><a href="/ja/docs/JS_ValueToNumber">JS_ValueToNumber</a></li>
+ <li><a href="/ja/docs/JS_ValueToObject">JS_ValueToObject</a></li>
+ <li><a href="/ja/docs/JS_ValueToString">JS_ValueToString</a></li>
+ <li><a href="/ja/docs/JS_ValueToUint16">JS_ValueToUint16</a></li>
+ <li><a href="/ja/docs/JSCLASS_HAS_PRIVATE">JSCLASS_HAS_PRIVATE</a></li>
+ <li><a href="/ja/docs/JSCLASS_NEW_ENUMERATE">JSCLASS_NEW_ENUMERATE</a></li>
+ <li><a href="/ja/docs/JSCLASS_NEW_RESOLVE">JSCLASS_NEW_RESOLVE</a></li>
+ <li><a href="/ja/docs/JSClass">JSClass</a></li>
+ <li><a href="/ja/docs/JSConstDoubleSpec">JSConstDoubleSpec</a></li>
+ <li><a href="/ja/docs/JSErrorReport">JSErrorReport</a></li>
+ <li><a href="/ja/docs/JSFUN_BOUND_METHOD">JSFUN_BOUND_METHOD</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li>
+ <li><a href="/ja/docs/JSFUN_GLOBAL_PARENT">JSFUN_GLOBAL_PARENT</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li>
+ <li><a href="/ja/docs/JSFunctionSpec">JSFunctionSpec</a></li>
+ <li><a href="/ja/docs/JSIdArray">JSIdArray</a></li>
+ <li><a href="/ja/docs/JSObjectOps">JSObjectOps</a></li>
+ <li><a href="/ja/docs/JSPRINCIPALS_DROP">JSPRINCIPALS_DROP</a></li>
+ <li><a href="/ja/docs/JSPRINCIPALS_HOLD">JSPRINCIPALS_HOLD</a></li>
+ <li><a href="/ja/docs/JSPrincipals">JSPrincipals</a></li>
+ <li><a href="/ja/docs/JSPROP_ENUMERATE">JSPROP_ENUMERATE</a></li>
+ <li><a href="/ja/docs/JSPROP_EXPORTED">JSPROP_EXPORTED</a></li>
+ <li><a href="/ja/docs/JSPROP_INDEX">JSPROP_INDEX</a></li>
+ <li><a href="/ja/docs/JSPROP_PERMANENT">JSPROP_PERMANENT</a></li>
+ <li><a href="/ja/docs/JSPROP_READONLY">JSPROP_READONLY</a></li>
+ <li><a href="/ja/docs/JSProperty">JSProperty</a></li>
+ <li><a href="/ja/docs/JSPropertySpec">JSPropertySpec</a></li>
+ <li><a href="/ja/docs/JSRESOLVE_ASSIGNING">JSRESOLVE_ASSIGNING</a></li>
+ <li><a href="/ja/docs/JSRESOLVE_QUALIFIED">JSRESOLVE_QUALIFIED</a></li>
+ <li><a href="/ja/docs/JSVAL_FALSE">JSVAL_FALSE</a></li>
+ <li><a href="/ja/docs/JSVAL_IS_BOOLEAN">JSVAL_IS_BOOLEAN</a></li>
+ <li><a href="/ja/docs/JSVAL_IS_DOUBLE">JSVAL_IS_DOUBLE</a></li>
+ <li><a href="/ja/docs/JSVAL_IS_GCTHING">JSVAL_IS_GCTHING</a></li>
+ <li><a href="/ja/docs/JSVAL_IS_INT">JSVAL_IS_INT</a></li>
+ <li><a href="/ja/docs/JSVAL_IS_NULL">JSVAL_IS_NULL</a></li>
+ <li><a href="/ja/docs/JSVAL_IS_NUMBER">JSVAL_IS_NUMBER</a></li>
+ <li><a href="/ja/docs/JSVAL_IS_OBJECT">JSVAL_IS_OBJECT</a></li>
+ <li><a href="/ja/docs/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a></li>
+ <li><a href="/ja/docs/JSVAL_IS_STRING">JSVAL_IS_STRING</a></li>
+ <li><a href="/ja/docs/JSVAL_IS_VOID">JSVAL_IS_VOID</a></li>
+ <li><a href="/ja/docs/JSVAL_LOCK">JSVAL_LOCK</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li>
+ <li><a href="/ja/docs/JSVAL_NULL">JSVAL_NULL</a></li>
+ <li><a href="/ja/docs/JSVAL_ONE">JSVAL_ONE</a></li>
+ <li><a href="/ja/docs/JSVAL_TO_BOOLEAN">JSVAL_TO_BOOLEAN</a></li>
+ <li><a href="/ja/docs/JSVAL_TO_DOUBLE">JSVAL_TO_DOUBLE</a></li>
+ <li><a href="/ja/docs/JSVAL_TO_GCTHING">JSVAL_TO_GCTHING</a></li>
+ <li><a href="/ja/docs/JSVAL_TO_INT">JSVAL_TO_INT</a></li>
+ <li><a href="/ja/docs/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a></li>
+ <li><a href="/ja/docs/JSVAL_TO_PRIVATE">JSVAL_TO_PRIVATE</a></li>
+ <li><a href="/ja/docs/JSVAL_TO_STRING">JSVAL_TO_STRING</a></li>
+ <li><a href="/ja/docs/JSVAL_TRUE">JSVAL_TRUE</a></li>
+ <li><a href="/ja/docs/JSVAL_UNLOCK">JSVAL_UNLOCK</a> - <small><span style="background-color: red; padding: .1em .5em;">非推奨</span></small></li>
+ <li><a href="/ja/docs/JSVAL_VOID">JSVAL_VOID</a></li>
+ <li><a href="/ja/docs/JSVAL_ZERO">JSVAL_ZERO</a></li>
+ <li><a href="/ja/docs/OBJECT_TO_JSVAL">OBJECT_TO_JSVAL</a></li>
+ <li><a href="/ja/docs/PRIVATE_TO_JSVAL">PRIVATE_TO_JSVAL</a></li>
+ <li><a href="/ja/docs/STRING_TO_JSVAL">STRING_TO_JSVAL</a></li>
+</ul>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/index.html
new file mode 100644
index 0000000000..5bb96c5566
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/index.html
@@ -0,0 +1,926 @@
+---
+title: JSAPI リファレンス
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference
+tags:
+ - JSAPI_Reference
+ - JavaScript
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference
+---
+<section class="Quick_links" id="Quick_Links">
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey"><strong><em>SpiderMonkey</em></strong></a></li>
+
+ <li><strong>References:</strong></li>
+ <li class="toggle">
+ <details>
+ <summary>JSAPI reference</summary>
+ <ol><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/Alphabetical_List" title="参照: グループ別一覧, カテゴリ表示 (自動)."><code>Alphabetical List</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/Alphabetical_List$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_CompileFile" title=""><code>JS CompileFile</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_CompileFile$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ConstructObject" title="新たにJavaScriptオブジェクトを生成し、コンストラクタを呼び出します。 Create a new JavaScript object and invoke its constructor."><code>JS ConstructObject</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ConstructObject$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyContext" title=""><code>JS DestroyContext</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyContext$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyRuntime" title=""><code>JS DestroyRuntime</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyRuntime$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_EvaluateScript" title=""><code>JS EvaluateScript</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_EvaluateScript$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntime" title=""><code>JS GetRuntime</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntime$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntimePrivate" title=""><code>JS GetRuntimePrivate</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntimePrivate$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewContext" title=""><code>JS NewContext</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewContext$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewRuntime" title="JavaScript ランタイムの初期化を行います。 "><code>JS NewRuntime</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewRuntime$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ShutDown" title=""><code>JS ShutDown</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ShutDown$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSRuntime" title=""><code>JSRuntime</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSRuntime$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSType" title="列挙型 JSType の値は、 JavaScript の値の型を表します。"><code>JSType</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSType$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DefineObject" title=""><code>JS_DefineObject</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DefineObject$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Init" title="JS_Init は廃止されました。替わりに JS_NewRuntime を使用して下さい。"><code>JS_Init</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Init$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Lock" title="JS ランタイム環境をロックします。"><code>JS_Lock</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Lock$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewObject" title=""><code>JS_NewObject</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewObject$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/jsint" title="C 言語 / C++ の整数型のエイリアスです。"><code>jsint</code></a> <a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_reference/jsint$translate" style="opacity: 0.5;" title="まだボランティアによって日本語に翻訳されていない記事です。MDNに参加して、翻訳してみませんか?">[翻訳する]</a></li></ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Debugger-API</summary>
+ <ol><li><a href="/ja/docs/Tools/Debugger-API/Debugger">Debugger</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Environment">Debugger.Environment</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Frame">Debugger.Frame</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Memory">Debugger.Memory</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Object">Debugger.Object</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Script">Debugger.Script</a></li><li><a href="/ja/docs/Tools/Debugger-API/Debugger.Source">Debugger.Source</a></li><li><a href="/ja/docs/Tools/Debugger-API/Tutorial-Debugger-Statement">Tools/Debugger-API/Tutorial-Debugger-Statement</a></li><li><a href="/ja/docs/Tools/Debugger-API/Tutorial-Breakpoint">チュートリアル: Debuggerを使用したブレークポイントの設定</a></li><li><a href="/ja/docs/Tools/Debugger-API/Tutorial-Allocation-Log-Tree">チュートリアル: コールパスごとの割り当てを表示する</a></li><li><a href="/ja/docs/Tools/Debugger-API/Conventions">一般的な規則</a></li></ol>
+ </details>
+ </li>
+ <li><strong>Guides:</strong></li>
+ <li class="toggle">
+ <details>
+ <summary>General</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation">Build documentation</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell">Introduction to the JavaScript shell</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide">JSAPI user guide</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/JSAPI_Cookbook">JSAPI cookbook</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/How_to_embed_the_JavaScript_engine">How to embed the JavaScript engine</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/GC_Rooting_Guide">GC Rooting Guide</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>SpiderMonkey internals</summary>
+ <ol><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Internals/Garbage_collection">Garbage collection</a></li><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Internals/Thread_Safety">Thread Safety</a></li></ol>
+ </details>
+ </li>
+
+ <li><strong>Contributing to SpiderMonkey:</strong></li>
+ <li class="toggle">
+ <details>
+ <summary>Getting started</summary>
+ <ol>
+ <li><a href="https://wiki.mozilla.org/JavaScript:New_to_SpiderMonkey">New to SpiderMonkey</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Setting_up_CDT_to_work_on_SpiderMonkey">Setting up CDT to work on SpiderMonkey</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Hacking_Tips">Hacking tips</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Tests</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Running_Automated_JavaScript_Tests">Running Automated JavaScript Tests</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Creating_JavaScript_tests">Creating JavaScript tests</a></li>
+ <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Running_Parsemark">Running Parsemark</a></li>
+ </ol>
+ </details>
+ </li>
+
+ <li><strong>Releases:</strong></li>
+ <li class="toggle">
+ <details>
+ <summary>Release notes</summary>
+ <ol><li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Releases/52">SpiderMonkey 52</a></li></ol>
+ </details>
+ </li>
+ <li><strong><a href="/ja/docs/MDN">Documentation:</a></strong></li>
+ <li class="toggle">
+ <details>
+ <summary>Useful lists</summary>
+ <ol>
+ <li><a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Index">All pages index</a></li>
+ <li><a href="/ja/docs/tag/SpiderMonkey">Pages tagged "SpiderMonkey"</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Contribute</summary>
+ <ol>
+ <li><a href="/ja/docs/MDN/Doc_status/SpiderMonkey">SpiderMonkey doc status</a></li>
+ <li><a href="/ja/docs/MDN">The MDN project</a></li>
+ </ol>
+ </details>
+ </li>
+ </ol>
+</section>
+
+<p><strong>JSAPI</strong> は、<a href="/ja/SpiderMonkey" title="ja/SpiderMonkey">SpiderMonkey</a> JavaScript エンジンのための C API です。JSAPI の使用方法を学ぶには、<a href="/ja/SpiderMonkey/Embedding_SpiderMonkey" title="ja/SpiderMonkey/Embedding_SpiderMonkey">JSAPI User Guide</a> および <a href="/ja/SpiderMonkey/JSAPI_Phrasebook" title="ja/SpiderMonkey/JSAPI_Phrasebook">JSAPI Phrasebook</a> をご覧ください。</p>
+
+<div class="note">補足: <a class="internal" href="/ja/SpiderMonkey/FOSS" title="ja/SpiderMonkey/FOSS">FOSS</a> のページに、Spidermonkey と JASPI の使用を助ける、他のライブラリやプログラムへのリンクがあります。</div>
+
+<p><a href="/ja/SpiderMonkey/JSAPI_Reference/Alphabetical_List" title="ja/SpiderMonkey/JSAPI_Reference/Alphabetical_List">アルファベット順一覧</a></p>
+
+<p><span id="Runtimes_and_contexts"></span></p>
+
+<h3 id="Runtimes_and_contexts" name="Runtimes_and_contexts">ランタイムとコンテキスト</h3>
+
+<ul>
+ <li>typedef <a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a></li>
+ <li><a href="/ja/JS_NewRuntime" title="ja/JS_NewRuntime">JS_NewRuntime</a></li>
+ <li><a href="/ja/JS_DestroyRuntime" title="ja/JS_DestroyRuntime">JS_DestroyRuntime</a></li>
+ <li><a href="/ja/JS_ShutDown" title="ja/JS_ShutDown">JS_ShutDown</a></li>
+ <li><a href="/ja/JS_GetRuntimePrivate" title="ja/JS_GetRuntimePrivate">JS_GetRuntimePrivate</a></li>
+ <li><a href="/ja/JS_GetRuntimePrivate" title="ja/JS_GetRuntimePrivate">JS_SetRuntimePrivate</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Init" title="ja/JS_Init">JS_Init</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Finish" title="ja/JS_Finish">JS_Finish</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ContextIterator" title="ja/JS_ContextIterator">JS_ContextIterator</a></li>
+</ul>
+
+<ul>
+ <li>typedef <a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a></li>
+ <li><a href="/ja/JS_NewContext" title="ja/JS_NewContext">JS_NewContext</a></li>
+ <li><a href="/ja/JS_DestroyContext" title="ja/JS_DestroyContext">JS_DestroyContext</a></li>
+ <li><a href="/ja/JS_DestroyContext" title="ja/JS_DestroyContext">JS_DestroyContextMaybeGC</a></li>
+ <li><a href="/ja/JS_DestroyContext" title="ja/JS_DestroyContext">JS_DestroyContextNoGC</a></li>
+ <li><a href="/ja/JS_GetRuntime" title="ja/JS_GetRuntime">JS_GetRuntime</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetContextPrivate" title="ja/JS_GetContextPrivate">JS_GetContextPrivate</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetContextPrivate" title="ja/JS_GetContextPrivate">JS_SetContextPrivate</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetOptions" title="ja/JS_GetOptions">JS_GetOptions</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JS_SetOptions</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_ATLINE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_COMPILE_N_GO</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_DONT_REPORT_UNCAUGHT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_NATIVE_BRANCH_CALLBACK</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JSOPTION_RELIMIT">JSOPTION_RELIMIT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_STRICT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_VAROBJFIX</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_WERROR</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_XML</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_ANONFUNFIX</a><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8.1_(未リリース)">SpiderMonkey 1.8.1 (未リリース)</a> の新機能</span>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_JIT</a><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8.1_(未リリース)">SpiderMonkey 1.8.1 (未リリース)</a> の新機能</span>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_NO_SCRIPT_RVAL</a><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8.1_(未リリース)">SpiderMonkey 1.8.1 (未リリース)</a> の新機能</span>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOptions" title="ja/JS_SetOptions">JSOPTION_UNROOTED_GLOBAL</a><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8.1_(未リリース)">SpiderMonkey 1.8.1 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ToggleOptions" title="ja/JS_ToggleOptions">JS_ToggleOptions</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetBranchCallback" title="ja/JS_SetBranchCallback">JS_SetBranchCallback</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_SetOperationCallback</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_ClearOperationCallback</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_GetOperationCallback</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_GetOperationLimit</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_SetOperationLimit</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_MAX_OPERATION_LIMIT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="ja/JS_SetOperationCallback">JS_OPERATION_WEIGHT_BASE</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetThreadStackLimit" title="ja/JS_SetThreadStackLimit">JS_SetThreadStackLimit</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetScriptStackQuota" title="ja/JS_SetScriptStackQuota">JS_SetScriptStackQuota</a></li>
+</ul>
+
+<ul>
+ <li>enum <a href="/ja/SpiderMonkey/JSAPI_Reference/JSVersion" title="ja/JSVersion">JSVersion</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSVersion" title="ja/SpiderMonkey/JSAPI_Reference/JSVERSION_ECMA_3">JSVERSION_ECMA_3</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSVERSION_DEFAULT" title="ja/JSVERSION_DEFAULT">JSVERSION_DEFAULT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSVERSION_LATEST" title="ja/JSVERSION_LATEST">JSVERSION_LATEST</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetImplementationVersion" title="ja/JS_GetImplementationVersion">JS_GetImplementationVersion</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetVersion" title="ja/JS_GetVersion">JS_GetVersion</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetVersion" title="ja/JS_SetVersion">JS_SetVersion</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_StringToVersion" title="ja/JS_StringToVersion">JS_StringToVersion</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_VersionToString" title="ja/JS_VersionToString">JS_VersionToString</a></li>
+</ul>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGlobalObject" title="ja/JS_GetGlobalObject">JS_GetGlobalObject</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGlobalObject" title="ja/JS_SetGlobalObject">JS_SetGlobalObject</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InitClass" title="ja/JS_InitClass">JS_InitClass</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InitStandardClasses" title="ja/JS_InitStandardClasses">JS_InitStandardClasses</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ResolveStandardClass" title="ja/JS_ResolveStandardClass">JS_ResolveStandardClass</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EnumerateStandardClasses" title="ja/JS_EnumerateStandardClasses">JS_EnumerateStandardClasses</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EnumerateResolvedStandardClasses" title="ja/JS_EnumerateResolvedStandardClasses">JS_EnumerateResolvedStandardClasses</a></li>
+</ul>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IsAssigning" title="ja/JS_IsAssigning">JS_IsAssigning</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IsConstructing" title="ja/JS_IsConstructing">JS_IsConstructing</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IsRunning" title="ja/JS_IsRunning">JS_IsRunning</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetScopeChain" title="ja/JS_GetScopeChain">JS_GetScopeChain</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SaveFrameChain" title="ja/JS_SaveFrameChain">JS_SaveFrameChain</a>, <a href="/en/JS_RestoreFrameChain" title="en/JS_RestoreFrameChain">JS_RestoreFrameChain</a></li>
+</ul>
+
+<p>ロケールコールバック:</p>
+
+<ul>
+ <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSLocaleCallbacks" title="ja/JSLocaleCallbacks">JSLocaleCallbacks</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetLocaleCallbacks" title="ja/JS_GetLocaleCallbacks">JS_GetLocaleCallbacks</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetLocaleCallbacks" title="ja/JS_SetLocaleCallbacks">JS_SetLocaleCallbacks</a></li>
+</ul>
+
+<p>ロケールコールバック型:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSLocaleToUpperCase" title="ja/JSLocaleToUpperCase">JSLocaleToUpperCase</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSLocaleToLowerCase" title="ja/JSLocaleToLowerCase">JSLocaleToLowerCase</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSLocaleCompare" title="ja/JSLocaleCompare">JSLocaleCompare</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSLocaleToUnicode" title="ja/JSLocaleToUnicode">JSLocaleToUnicode</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JSErrorCallback</a></li>
+</ul>
+
+<p><span id="Scripts"></span></p>
+
+<h3 id="Scripts" name="Scripts">スクリプト</h3>
+
+<p>一部の JavaScript コードは直接実行されます:</p>
+
+<ul>
+ <li><a href="/ja/JS_EvaluateScript" title="ja/JS_EvaluateScript">JS_EvaluateScript</a></li>
+ <li><a href="/ja/JS_EvaluateScript" title="ja/JS_EvaluateScript">JS_EvaluateUCScript</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EvaluateScriptForPrincipals" title="ja/JS_EvaluateScriptForPrincipals">JS_EvaluateScriptForPrincipals</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EvaluateScriptForPrincipals" title="ja/JS_EvaluateScriptForPrincipals">JS_EvaluateUCScriptForPrincipals</a></li>
+</ul>
+
+<p>JavaScript コードを可能な <code>JSScript</code> へとコンパイルする代わりに、複数のアイテムを実行することができます。</p>
+
+<ul>
+ <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/JSScript" title="ja/JSScript">JSScript</a></li>
+ <li><a href="/ja/JS_CompileFile" title="ja/JS_CompileFile">JS_CompileFile</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFileHandle" title="ja/JS_CompileFileHandle">JS_CompileFileHandle</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFileHandle" title="ja/JS_CompileFileHandle">JS_CompileFileHandleForPrincipals</a></li>
+ <li><a href="/ja/JS_CompileScript" title="ja/JS_CompileScript">JS_CompileScript</a></li>
+ <li><a href="/ja/JS_CompileScript" title="ja/JS_CompileScript">JS_CompileUCScript</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileScriptForPrincipals" title="ja/JS_CompileScriptForPrincipals">JS_CompileScriptForPrincipals</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileScriptForPrincipals" title="ja/JS_CompileScriptForPrincipals">JS_CompileUCScriptForPrincipals</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_BufferIsCompilableUnit" title="ja/JS_BufferIsCompilableUnit">JS_BufferIsCompilableUnit</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetScriptObject" title="ja/JS_GetScriptObject">JS_GetScriptObject</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewScriptObject" title="ja/JS_NewScriptObject">JS_NewScriptObject</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ExecuteScript" title="ja/JS_ExecuteScript">JS_ExecuteScript</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ExecuteScriptPart" title="ja/JS_ExecuteScriptPart">JS_ExecuteScriptPart</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DecompileScript" title="ja/JS_DecompileScript">JS_DecompileScript</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DestroyScript" title="ja/JS_DestroyScript">JS_DestroyScript</a></li>
+</ul>
+
+<p>JavaScript コードを関数へとコンパイルすることもできます:</p>
+
+<ul>
+ <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/JSFunction" title="ja/JSFunction">JSFunction</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFunction" title="ja/JS_CompileFunction">JS_CompileFunction</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFunctionForPrincipals" title="ja/JS_CompileFunctionForPrincipals">JS_CompileFunctionForPrincipals</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFunction" title="ja/JS_CompileFunction">JS_CompileUCFunction</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompileFunctionForPrincipals" title="ja/JS_CompileFunctionForPrincipals">JS_CompileUCFunctionForPrincipals</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DecompileFunction" title="ja/JS_DecompileFunction">JS_DecompileFunction</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DecompileFunctionBody" title="ja/JS_DecompileFunctionBody">JS_DecompileFunctionBody</a></li>
+</ul>
+
+<p><span id="Error_handling"></span></p>
+
+<h3 id="Error_handling" name="Error_handling">エラーハンドリング</h3>
+
+<ul>
+ <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSErrorReport" title="ja/JSErrorReport">JSErrorReport</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportError" title="ja/JS_ReportError">JS_ReportError</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportWarning" title="ja/JS_ReportWarning">JS_ReportWarning</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JS_ReportErrorNumber</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JS_ReportErrorNumberUC</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JS_ReportErrorFlagsAndNumber</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JS_ReportErrorFlagsAndNumberUC</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportOutOfMemory" title="ja/JS_ReportOutOfMemory">JS_ReportOutOfMemory</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetErrorReporter" title="ja/JS_SetErrorReporter">JS_SetErrorReporter</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSREPORT_IS_EXCEPTION" title="ja/JSREPORT_IS_EXCEPTION">JSREPORT_IS_EXCEPTION</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSREPORT_IS_STRICT" title="ja/JSREPORT_IS_STRICT">JSREPORT_IS_STRICT</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSREPORT_IS_WARNING" title="ja/JSREPORT_IS_WARNING">JSREPORT_IS_WARNING</a></li>
+</ul>
+
+<p>次の関数は、C/C++ 関数に JavaScript 例外のスローとキャッチを許可します。:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IsExceptionPending" title="ja/JS_IsExceptionPending">JS_IsExceptionPending</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPendingException" title="ja/JS_GetPendingException">JS_GetPendingException</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPendingException" title="ja/JS_SetPendingException">JS_SetPendingException</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearPendingException" title="ja/JS_ClearPendingException">JS_ClearPendingException</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ThrowStopIteration" title="ja/JS_ThrowStopIteration">JS_ThrowStopIteration</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></li>
+</ul>
+
+<ul>
+ <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/JSExceptionState" title="ja/JSExceptionState">JSExceptionState</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SaveExceptionState" title="ja/JS_SaveExceptionState">JS_SaveExceptionState</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_RestoreExceptionState" title="ja/JS_RestoreExceptionState">JS_RestoreExceptionState</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DropExceptionState" title="ja/JS_DropExceptionState">JS_DropExceptionState</a></li>
+</ul>
+
+<p>これらの関数は、エラーを例外に、例外をエラーに翻訳します:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportPendingException" title="ja/JS_ReportPendingException">JS_ReportPendingException</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ErrorFromException" title="ja/JS_ErrorFromException">JS_ErrorFromException</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ThrowReportedError" title="ja/JS_ThrowReportedError">JS_ThrowReportedError</a></li>
+</ul>
+
+<p><span id="Values_and_types"></span></p>
+
+<h3 id="Values_and_types" name="Values_and_types">値と型</h3>
+
+<ul>
+ <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/Jsval" title="ja/jsval">jsval</a></li>
+</ul>
+
+<p><code>jsval</code> 定数:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_NULL" title="ja/JSVAL_NULL">JSVAL_NULL</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_VOID" title="ja/JSVAL_VOID">JSVAL_VOID</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TRUE" title="ja/JSVAL_TRUE">JSVAL_TRUE</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TRUE" title="ja/JSVAL_TRUE">JSVAL_FALSE</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_ZERO" title="ja/JSVAL_ZERO">JSVAL_ZERO</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_ONE" title="ja/JSVAL_ONE">JSVAL_ONE</a></li>
+</ul>
+
+<p><code>jsval</code> の型をチェックする関数とマクロ:</p>
+
+<ul>
+ <li>enum <a href="/ja/SpiderMonkey/JSAPI_Reference/JSType" title="ja/JSType">JSType</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_TypeOfValue" title="ja/JS_TypeOfValue">JS_TypeOfValue</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_NULL" title="ja/JSVAL_IS_NULL">JSVAL_IS_NULL</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_VOID" title="ja/JSVAL_IS_VOID">JSVAL_IS_VOID</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_BOOLEAN" title="ja/JSVAL_IS_BOOLEAN">JSVAL_IS_BOOLEAN</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_NUMBER" title="ja/JSVAL_IS_NUMBER">JSVAL_IS_NUMBER</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_INT" title="ja/JSVAL_IS_INT">JSVAL_IS_INT</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_DOUBLE" title="ja/JSVAL_IS_DOUBLE">JSVAL_IS_DOUBLE</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_STRING" title="ja/JSVAL_IS_STRING">JSVAL_IS_STRING</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_OBJECT" title="ja/JSVAL_IS_OBJECT">JSVAL_IS_OBJECT</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_PRIMITIVE" title="ja/JSVAL_IS_PRIMITIVE">JSVAL_IS_PRIMITIVE</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_IS_GCTHING" title="ja/JSVAL_IS_GCTHING">JSVAL_IS_GCTHING</a></li>
+</ul>
+
+<p>関数の引数を圧縮または展開する高レベル型変換ルーチン。</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PushArguments" title="ja/JS_PushArguments">JS_PushArguments</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PushArguments" title="ja/JS_PushArguments">JS_PushArgumentsVA</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PopArguments" title="ja/JS_PopArguments">JS_PopArguments</a></li>
+</ul>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ConvertArguments" title="ja/JS_ConvertArguments">JS_ConvertArguments</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ConvertArgumentsVA" title="ja/JS_ConvertArgumentsVA">JS_ConvertArgumentsVA</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddArgumentFormatter" title="ja/JS_AddArgumentFormatter">JS_AddArgumentFormatter</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddArgumentFormatter" title="ja/JS_AddArgumentFormatter">JS_RemoveArgumentFormatter</a></li>
+</ul>
+
+<p>次の関数は JS 値を変数型に変換します。これらは任意の型の <code>jsval</code> に安全に適用することができます。これらは新しいオブジェクトを返します。例えば、<code>JS_ValueToObject(cx, s)</code> の <code>s</code> は新しい <code>String</code> ラッパーオブジェクトを作成する文字列です。これらの関数は JavaScript メソッドを呼び出します。例えば、<code>JS_ValueToString(cx, obj)</code> は <code>obj.toString()</code> を呼び出します。</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToBoolean" title="ja/JS_ValueToBoolean">JS_ValueToBoolean</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToConstructor" title="ja/JS_ValueToConstructor">JS_ValueToConstructor</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToECMAInt32" title="ja/JS_ValueToECMAInt32">JS_ValueToECMAInt32</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToECMAInt32" title="ja/JS_ValueToECMAInt32">JS_ValueToECMAUint32</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToFunction" title="ja/JS_ValueToFunction">JS_ValueToFunction</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToInt32" title="ja/JS_ValueToInt32">JS_ValueToInt32</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToNumber" title="ja/JS_ValueToNumber">JS_ValueToNumber</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToObject" title="ja/JS_ValueToObject">JS_ValueToObject</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToString" title="ja/JS_ValueToString">JS_ValueToString</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToECMAInt32" title="ja/JS_ValueToECMAInt32">JS_ValueToUint16</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ConvertValue" title="ja/JS_ConvertValue">JS_ConvertValue</a></li>
+</ul>
+
+<p>高速な未チェックの型キャストマクロ。これらのマクロは正しい型として知られていない値に適用してはいけません。C のキャストのように、正しくない値に適用するとクラッシュの原因となります。これらは新しいオブジェクトを作成したり JavaScript コード内に呼び出したりすることはありません。</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_BOOLEAN" title="ja/JSVAL_TO_BOOLEAN">JSVAL_TO_BOOLEAN</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/BOOLEAN_TO_JSVAL" title="ja/BOOLEAN_TO_JSVAL">BOOLEAN_TO_JSVAL</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_INT" title="ja/JSVAL_TO_INT">JSVAL_TO_INT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/INT_TO_JSVAL" title="ja/INT_TO_JSVAL">INT_TO_JSVAL</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/INT_FITS_IN_JSVAL" title="ja/INT_FITS_IN_JSVAL">INT_FITS_IN_JSVAL</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_DOUBLE" title="ja/JSVAL_TO_DOUBLE">JSVAL_TO_DOUBLE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/DOUBLE_TO_JSVAL" title="ja/DOUBLE_TO_JSVAL">DOUBLE_TO_JSVAL</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_OBJECT" title="ja/JSVAL_TO_OBJECT">JSVAL_TO_OBJECT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/OBJECT_TO_JSVAL" title="ja/OBJECT_TO_JSVAL">OBJECT_TO_JSVAL</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_STRING" title="ja/JSVAL_TO_STRING">JSVAL_TO_STRING</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/STRING_TO_JSVAL" title="ja/STRING_TO_JSVAL">STRING_TO_JSVAL</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_TO_GCTHING" title="ja/JSVAL_TO_GCTHING">JSVAL_TO_GCTHING</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/PRIVATE_TO_JSVAL" title="ja/PRIVATE_TO_JSVAL">JSVAL_TO_PRIVATE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/PRIVATE_TO_JSVAL" title="ja/PRIVATE_TO_JSVAL">PRIVATE_TO_JSVAL</a></li>
+</ul>
+
+<p><code>typeof</code> のように振る舞う関数:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetTypeName" title="ja/JS_GetTypeName">JS_GetTypeName</a></li>
+</ul>
+
+<p><code>===</code> のように振る舞う関数:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_StrictlyEqual" title="ja/SpiderMonkey/JSAPI_Reference/JS_StrictlyEqual">JS_StrictlyEqual</a></li>
+</ul>
+
+<p><span id="Memory_management"></span></p>
+
+<h3 id="Memory_management" name="Memory_management">メモリ管理</h3>
+
+<p>これらの関数は、標準 C 関数の <code>malloc</code> 系のように動作します。ただし、エラーは <code>errno</code> ではなく、SpiderMonkey のエラー API を使用して報告されます:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_malloc" title="ja/JS_malloc">JS_malloc</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_malloc" title="ja/JS_free">JS_free</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_malloc" title="ja/JS_realloc">JS_realloc</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_malloc" title="ja/JS_strdup">JS_strdup</a></li>
+</ul>
+
+<p>JavaScript オブジェクト、文字列、浮動小数点数はガーベッジコレクションの対象となります。これらの関数は、ガーベッジコレクタ(GC) へのアクセスを提供します:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GC" title="ja/JS_GC">JS_GC</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MaybeGC" title="ja/JS_MaybeGC">JS_MaybeGC</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JS_GetGCParameter</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JS_SetGCParameter</a>, enum <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JSGCParamKey</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JSGC_MAX_BYTES</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JSGC_MAX_MALLOC_BYTES</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/JS_SetGCParameter">JSGC_STACKPOOL_LIFESPAN</a>, <a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/SpiderMonkey/JSAPI Reference/JSGC TRIGGER FACTOR">JSGC_TRIGGER_FACTOR</a>, <a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/SpiderMonkey/JSAPI Reference/JSGC BYTES">JSGC_BYTES</a>, <a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetGCParameter" title="ja/SpiderMonkey/JSAPI Reference/JSGC NUMBER">JSGC_NUMBER</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JS_SetGCCallback</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JS_SetGCCallbackRT</a>, enum <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGCStatus</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGC_BEGIN</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGC_MARK_END</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGC_FINALIZE_END</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGC_END</a></li>
+ <li><a href="/ja/JS_MarkGCThing" title="ja/JS_MarkGCThing">JS_MarkGCThing</a></li>
+ <li><a href="/ja/JS_IsAboutToBeFinalized" title="ja/JS_IsAboutToBeFinalized">JS_IsAboutToBeFinalized</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearNewbornRoots" title="ja/JS_ClearNewbornRoots">JS_ClearNewbornRoots</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCZeal" title="ja/JS_SetGCZeal">JS_SetGCZeal</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DumpHeap" title="ja/JS_DumpHeap">JS_DumpHeap</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+</ul>
+
+<p>これら残りの API は、アプリケーションがガーベッジコレクションを行う前に、オブジェクトをガーベッジコレクタによる破壊から保護します。</p>
+
+<p>変数が <em>root</em> の場合、その変数へのポインタはガーベッジコレクタによって開放されません。ルートオブジェクトに対しての失敗は、よくある奇妙なクラッシュの原因です。</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddRoot" title="ja/JS_AddRoot">JS_AddRoot</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddRoot" title="ja/JS_AddRoot">JS_AddNamedRoot</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddRoot" title="ja/JS_AddRoot">JS_AddNamedRootRT</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_RemoveRoot" title="ja/JS_RemoveRoot">JS_RemoveRoot</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_RemoveRootRT" title="ja/JS_RemoveRootRT">JS_RemoveRootRT</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MapGCRoots">JS_MapGCRoots</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JSGCMapRootFun">JSGCMapRootFun</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MAP_GCROOT_NEXT">JS_MAP_GCROOT_NEXT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MAP_GCROOT_REMOVE">JS_MAP_GCROOT_REMOVE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MAP_GCROOT_STOP">JS_MAP_GCROOT_STOP</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DumpNamedRoots" title="ja/JS_DumpNamedRoots">JS_DumpNamedRoots</a></li>
+</ul>
+
+<p>ローカルのルートのスコープは、オブジェクトを別の方法でガーベッジコレクタから保護します。</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EnterLocalRootScope" title="ja/JS_EnterLocalRootScope">JS_EnterLocalRootScope</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LeaveLocalRootScope" title="ja/JS_LeaveLocalRootScope">JS_LeaveLocalRootScope</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LeaveLocalRootScopeWithResult" title="ja/JS_LeaveLocalRootScopeWithResult">JS_LeaveLocalRootScopeWithResult</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ForgetLocalRoot" title="ja/JS_ForgetLocalRoot">JS_ForgetLocalRoot</a></li>
+</ul>
+
+<p><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span> オブジェクトが、SpiderMonkey のデータ構造 ("slots") に格納されていない、他のガーベッジコレクタの対象への参照を含む場合、このオブジェクトは、ガーベッジコレクタのこれらの参照へのトラバース (<span style="color: green;">traverse</span>)を有効にするため、<code><a href="/ja/JSClass.mark" title="ja/JSClass.mark">JSTraceOp</a></code> フックを実装しなければなりません。しかし、ガーベッジコレクタは手の届く範囲のオブジェクトのみを整理しますが、すべてのオブジェクトを見つけることはできないため、クラッシュを引き起こします。(SpiderMonkey 1.7 以前のバージョンでは <code>JSMarkOp</code> フックが代わりに使用されます。これは SpiderMonkey 1.8 のリリース後は非推奨です。)</p>
+
+<p>トレース API は、ガーベッジコレクタと <code>JSTraceOp</code> フックによって使用されます。JSAPI アプリケーションもまた、これらの API をオブジェクトグラフを検査するために使用します。(例えば、これらの API は JS ガーベッジコレクタと他のガーベッジコレクタの、とても円滑な統合をサポートします。)</p>
+
+<ul>
+ <li><a href="/ja/JSVAL_IS_TRACEABLE" title="ja/JSVAL_IS_TRACEABLE">JSVAL_IS_TRACEABLE</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/JSVAL_TO_TRACEABLE" title="ja/JSVAL_TO_TRACEABLE">JSVAL_TO_TRACEABLE</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/JSVAL_TRACE_KIND" title="ja/JSVAL_TRACE_KIND">JSVAL_TRACE_KIND</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li>struct <a href="/ja/JSTracer" title="ja/JSTracer">JSTracer</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_TRACER_INIT" title="ja/JS_TRACER_INIT">JS_TRACER_INIT</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/JS_CallTracer" title="ja/JS_CallTracer">JS_CallTracer</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SET_TRACING_DETAILS" title="ja/JS_SET_TRACING_DETAILS">JS_SET_TRACING_DETAILS</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/JS_SET_TRACING_INDEX" title="ja/JS_SET_TRACING_INDEX">JS_SET_TRACING_INDEX</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/JS_SET_TRACING_NAME" title="ja/JS_SET_TRACING_NAME">JS_SET_TRACING_NAME</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/JS_CALL_TRACER" title="ja/JS_CALL_TRACER">JS_CALL_TRACER</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/JS_CALL_VALUE_TRACER" title="ja/JS_CALL_VALUE_TRACER">JS_CALL_VALUE_TRACER</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/JS_CALL_OBJECT_TRACER" title="ja/JS_CALL_OBJECT_TRACER">JS_CALL_OBJECT_TRACER</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/JS_CALL_STRING_TRACER" title="ja/JS_CALL_STRING_TRACER">JS_CALL_STRING_TRACER</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/JS_CALL_DOUBLE_TRACER" title="ja/JS_CALL_DOUBLE_TRACER">JS_CALL_DOUBLE_TRACER</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/JS_TraceChildren" title="ja/JS_TraceChildren">JS_TraceChildren</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/JS_TraceRuntime" title="ja/JS_TraceRuntime">JS_TraceRuntime</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/JS_PrintTraceThingInfo" title="ja/JS_PrintTraceThingInfo">JS_PrintTraceThingInfo</a> (DEBUG-only) <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+</ul>
+
+<p>その他の GC API:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_LOCK" title="ja/JSVAL_LOCK">JSVAL_LOCK</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSVAL_UNLOCK" title="ja/JSVAL_UNLOCK">JSVAL_UNLOCK</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LockGCThing" title="ja/JS_LockGCThing">JS_LockGCThing</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li>
+ <li><a href="/ja/JS_LockGCThingRT" title="ja/JS_LockGCThingRT">JS_LockGCThingRT</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LockGCThing" title="ja/JS_LockGCThing">JS_UnlockGCThing</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li>
+ <li><a href="/ja/JS_UnlockGCThingRT" title="ja/JS_UnlockGCThingRT">JS_UnlockGCThingRT</a></li>
+</ul>
+
+<p><span id="Numbers"></span></p>
+
+<h3 id="Numbers" name="Numbers">数値</h3>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewNumberValue" title="ja/JS_NewNumberValue">JS_NewNumberValue</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewDoubleValue" title="ja/JS_NewDoubleValue">JS_NewDoubleValue</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewDouble" title="ja/JS_NewDouble">JS_NewDouble</a></li>
+ <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSConstDoubleSpec" title="ja/JSConstDoubleSpec">JSConstDoubleSpec</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineConstDoubles" title="ja/JS_DefineConstDoubles">JS_DefineConstDoubles</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetNaNValue" title="ja/JS_GetNaNValue">JS_GetNaNValue</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPositiveInfinityValue" title="ja/JS_GetPositiveInfinityValue">JS_GetNegativeInfinityValue</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPositiveInfinityValue" title="ja/JS_GetPositiveInfinityValue">JS_GetPositiveInfinityValue</a></li>
+</ul>
+
+<p><span id="Strings"></span></p>
+
+<h3 id="Strings" name="Strings">文字列</h3>
+
+<ul>
+ <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/JSString" title="ja/JSString">JSString</a></li>
+ <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/jschar" title="ja/jschar">jschar</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewString" title="ja/JS_NewString">JS_NewString</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyN" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyN">JS_NewStringCopyN</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ">JS_NewStringCopyZ</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewString" title="ja/JS_NewString">JS_NewUCString</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyN" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyN">JS_NewUCStringCopyN</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewStringCopyZ">JS_NewUCStringCopyZ</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewGrowableString" title="ja/JS_NewGrowableString">JS_NewGrowableString</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewDependentString" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewDependentString">JS_NewDependentString</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetEmptyStringValue" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetEmptyStringValue">JS_GetEmptyStringValue</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CompareStrings" title="ja/SpiderMonkey/JSAPI_Reference/JS_CompareStrings">JS_CompareStrings</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ConcatStrings" title="ja/JS_ConcatStrings">JS_ConcatStrings</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes">JS_GetStringBytes</a> <span class="icon-only-inline" title="これは廃止されたAPIであり、今後の動作は保障されていません。ご注意下さい。"><i class="icon-trash"> </i></span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes">JS_GetStringBytesZ</a> <span class="icon-only-inline" title="これは廃止されたAPIであり、今後の動作は保障されていません。ご注意下さい。"><i class="icon-trash"> </i></span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringChars" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetStringChars">JS_GetStringChars</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringLength" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetStringLength">JS_GetStringLength</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MakeStringImmutable" title="ja/SpiderMonkey/JSAPI_Reference/JS_MakeStringImmutable">JS_MakeStringImmutable</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_UndependString" title="ja/SpiderMonkey/JSAPI_Reference/JS_UndependString">JS_UndependString</a></li>
+</ul>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CStringsAreUTF8" title="ja/JS_CStringsAreUTF8">JS_CStringsAreUTF8</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CStringsAreUTF8" title="ja/JS_SetCStringsAreUTF8">JS_SetCStringsAreUTF8</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DecodeBytes" title="ja/JS_DecodeBytes">JS_DecodeBytes</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_EncodeCharacters" title="ja/JS_EncodeCharacters">JS_EncodeCharacters</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes" title="ja/SpiderMonkey/JSAPI Reference/JS GetStringBytes">JS_EncodeString</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes" title="ja/SpiderMonkey/JSAPI Reference/JS GetStringBytes">JS_EncodeStringToBuffer</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetStringBytes" title="ja/SpiderMonkey/JSAPI Reference/JS GetStringBytes">JS_GetStringEncodingLength</a></li>
+</ul>
+
+<p><em>Interning</em> 文字列は SpiderMonkey エンジンに、可能ならば既存の文字列オブジェクトを再使用するように伝えます。</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InternString" title="ja/SpiderMonkey/JSAPI_Reference/JS_InternString">JS_InternString</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InternString" title="ja/SpiderMonkey/JSAPI_Reference/JS_InternString">JS_InternUCString</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InternString" title="ja/SpiderMonkey/JSAPI_Reference/JS_InternString">JS_InternUCStringN</a></li>
+</ul>
+
+<p><em>external strings</em> のための文字データはアプリケーションによって提供されるメモリに格納されます。アプリケーションはこれを、SpiderMonkey のヒープとアプリケーションのメモリの間で、<span style="border-bottom: 1px dashed green;" title="copying data back and forth">データを先や後へコピーする</span>ことを防止するために使用します。</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddExternalStringFinalizer" title="ja/JS_AddExternalStringFinalizer">JS_AddExternalStringFinalizer</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_RemoveExternalStringFinalizer" title="ja/JS_RemoveExternalStringFinalizer">JS_RemoveExternalStringFinalizer</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetExternalStringGCType" title="ja/JS_GetExternalStringGCType">JS_GetExternalStringGCType</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewExternalString" title="ja/JS_NewExternalString">JS_NewExternalString</a></li>
+</ul>
+
+<p><span id="Objects"></span></p>
+
+<h3 id="Objects" name="Objects">オブジェクト</h3>
+
+<ul>
+ <li>typedef <a href="/ja/SpiderMonkey/JSAPI_Reference/JSObject" title="ja/JSObject">JSObject</a></li>
+ <li><a href="/ja/JS_ConstructObject" title="ja/JS_ConstructObject">JS_ConstructObject</a></li>
+ <li><a href="/ja/JS_ConstructObject" title="ja/JS_ConstructObjectWithArguments">JS_ConstructObjectWithArguments</a></li>
+ <li><a href="/ja/JS_DefineObject" title="ja/JS_DefineObject">JS_DefineObject</a></li>
+ <li><a href="/ja/JS_NewObject" title="ja/JS_NewObject">JS_NewObject</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewGlobalObject" title="ja/SpiderMonkey/JSAPI Reference/JS NewGlobalObject">JS_NewGlobalObject</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewObject" title="ja/JS_NewObject">JS_NewObjectWithGivenProto</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_New" title="ja/SpiderMonkey/JSAPI Reference/JS New">JS_New</a></li>
+</ul>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GET_CLASS" title="ja/JS_GET_CLASS">JS_GET_CLASS</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GET_CLASS" title="ja/JS_GET_CLASS">JS_GetClass</a></li>
+ <li><a href="/ja/JS_GetClassObject" title="ja/JS_GetClassObject">JS_GetClassObject</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetConstructor" title="ja/JS_GetConstructor">JS_GetConstructor</a></li>
+ <li><a href="/ja/JS_GetGlobalForObject" title="ja/JS_GetGlobalForObject">JS_GetGlobalForObject</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetInstancePrivate" title="ja/JS_GetInstancePrivate">JS_GetInstancePrivate</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetParent" title="ja/JS_GetParent">JS_GetParent</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetParent" title="ja/JS_SetParent">JS_SetParent</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPrivate" title="ja/JS_GetPrivate">JS_GetPrivate</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPrivate" title="ja/JS_SetPrivate">JS_SetPrivate</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPrototype" title="ja/JS_GetPrototype">JS_GetPrototype</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPrototype" title="ja/JS_SetPrototype">JS_SetPrototype</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetReservedSlot" title="ja/JS_GetReservedSlot">JS_GetReservedSlot</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetReservedSlot" title="ja/JS_GetReservedSlot">JS_SetReservedSlot</a></li>
+ <li><a href="/ja/JS_HasInstance" title="ja/JS_HasInstance">JS_HasInstance</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InstanceOf" title="ja/JS_InstanceOf">JS_InstanceOf</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SealObject" title="ja/JS_SealObject">JS_SealObject</a></li>
+</ul>
+
+<p><span id="Properties"></span></p>
+
+<h3 id="Properties" name="Properties">プロパティ</h3>
+
+<p>これらの関数は、直接スクリプトがオブジェクトのプロパティにアクセスする方法に相当します:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="ja/JS_GetProperty">JS_GetProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="ja/JS_GetProperty">JS_GetUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetProperty" title="ja/JS_GetProperty">JS_GetPropertyById</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetProperty" title="ja/JS_SetProperty">JS_SetProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetProperty" title="ja/JS_SetProperty">JS_SetUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetProperty" title="ja/JS_SetProperty">JS_SetPropertyById</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_HasProperty" title="ja/JS_HasProperty">JS_HasProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_HasProperty" title="ja/JS_HasProperty">JS_HasUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_HasProperty" title="ja/JS_HasProperty">JS_HasPropertyById</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteProperty" title="ja/JS_DeleteProperty">JS_DeleteProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteProperty" title="ja/JS_DeleteProperty">JS_DeletePropertyById</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteProperty2" title="ja/JS_DeleteProperty2">JS_DeleteProperty2</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteProperty2" title="ja/JS_DeleteProperty2">JS_DeleteUCProperty2</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteProperty2" title="ja/JS_DeleteProperty2">JS_DeletePropertyById2</a></li>
+</ul>
+
+<p>次の低レベルの関数は、JSAPI アプリケーションが、プロパティの実装方法の詳細へのアクセスを許可します。"Define" は "set" の低レベル版であり、追加の設定へのアクセスを提供し、setter を呼び出しません。同様に、"lookup" は "get" の低レベル版であり、追加のオプションを与え、getter を呼び出しません。</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AlreadyHasOwnProperty" title="ja/JS_AlreadyHasOwnElement">JS_AlreadyHasOwnElement</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AlreadyHasOwnProperty" title="ja/JS_AlreadyHasOwnProperty">JS_AlreadyHasOwnProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AlreadyHasOwnProperty" title="ja/JS_AlreadyHasOwnProperty">JS_AlreadyHasOwnUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AlreadyHasOwnProperty" title="ja/JS_AlreadyHasOwnProperty">JS_AlreadyHasOwnPropertyById</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearScope" title="ja/JS_ClearScope">JS_ClearScope</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineProperties" title="ja/JS_DefineProperties">JS_DefineProperties</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineProperty" title="ja/JS_DefineProperty">JS_DefineProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineProperty" title="ja/JS_DefineProperty">JS_DefineUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineProperty" title="ja/JS_DefineProperty">JS_DefinePropertyById</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefinePropertyWithTinyId" title="ja/JS_DefinePropertyWithTinyId">JS_DefinePropertyWithTinyId</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefinePropertyWithTinyId" title="ja/JS_DefinePropertyWithTinyId">JS_DefineUCPropertyWithTinyId</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Enumerate" title="ja/JS_Enumerate">JS_Enumerate</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JS_GetPropertyAttributes</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JS_GetUCPropertyAttributes</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_ENUMERATE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_EXPORTED</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_GETTER</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_INDEX</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_PERMANENT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_READONLY</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_SETTER</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttributes" title="ja/JS_GetPropertyAttributes">JSPROP_SHARED</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttrsGetterAndSetter" title="ja/JS_GetPropertyAttrsGetterAndSetter">JS_GetPropertyAttrsGetterAndSetter</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttrsGetterAndSetter" title="ja/JS_GetPropertyAttrsGetterAndSetter">JS_GetUCPropertyAttrsGetterAndSetter</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyAttrsGetterAndSetter" title="ja/JS_GetPropertyAttrsGetterAndSetter">JS_GetPropertyAttrsGetterAndSetterById</a></li>
+ <li><a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetPropertyDescriptorById" title="ja/SpiderMonkey/JSAPI Reference/JS GetPropertyDescriptorById">JS_GetPropertyDescriptorById</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8_(未リリース)">SpiderMonkey 1.8 (未リリース)</a> の新機能</span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupProperty" title="ja/JS_LookupProperty">JS_LookupProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupProperty" title="ja/JS_LookupProperty">JS_LookupUCProperty</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupProperty" title="ja/JS_LookupProperty">JS_LookupPropertyById</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupProperty" title="ja/JS_LookupProperty">JS_LookupPropertyWithFlags</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupProperty" title="ja/JS_LookupProperty">JS_LookupPropertyWithFlagsById</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewPropertyIterator" title="ja/JS_NewPropertyIterator">JS_NewPropertyIterator</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NextProperty" title="ja/JS_NextProperty">JS_NextProperty</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPropertyAttributes" title="ja/JS_SetPropertyAttributes">JS_SetPropertyAttributes</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPropertyAttributes" title="ja/JS_SetPropertyAttributes">JS_SetUCPropertyAttributes</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AliasProperty" title="ja/JS_AliasProperty">JS_AliasProperty</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li>
+</ul>
+
+<p>次の関数は、<code>JS_GetProperty</code> および <code>JS_GetPropertyById</code> のように振る舞います。ただし、E4X XML オブジェクト上の操作は除きます。</p>
+
+<ul>
+ <li><a href="/ja/JS_GetMethod" title="ja/JS_GetMethod">JS_GetMethod</a>, <a href="/ja/JS_GetMethodById" title="ja/JS_GetMethodById">JS_GetMethodById</a></li>
+</ul>
+
+<p>SpiderMonkey 拡張は lvalue(オブジェクトのプロパティへの参照) を返すネイティブ関数を許可します:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetCallReturnValue2" title="ja/JS_SetCallReturnValue2">JS_SetCallReturnValue2</a></li>
+</ul>
+
+<p><code><a href="/ja/SpiderMonkey/JSAPI_Reference/jsid" title="ja/jsid">jsid</a></code> は <code>jsval</code> の一種です。ごく少数の API が、<code>jsval</code> の代わりに <code>jsid</code> をプロパティ名に使用します: <code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JS_CheckAccess</a></code> および <code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Enumerate" title="ja/JS_Enumerate">JS_Enumerate</a></code>, <code><a href="/ja/JS_GetMethodById" title="ja/JS_GetMethodById">JS_GetMethodById</a></code>, <code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NextProperty" title="ja/JS_NextProperty">JS_NextProperty</a></code>。</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IdToValue" title="ja/JS_IdToValue">JS_IdToValue</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ValueToId" title="ja/JS_ValueToId">JS_ValueToId</a></li>
+ <li><a href="/ja/JS_GetObjectId" title="ja/JS_GetObjectId">JS_GetObjectId</a></li>
+ <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSIdArray" title="ja/JSIdArray">JSIdArray</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DestroyIdArray" title="ja/JS_DestroyIdArray">JS_DestroyIdArray</a></li>
+</ul>
+
+<p><code>jsid</code> 定数:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_VOID" title="ja/JSID_VOID">JSID_VOID</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_EMPTY" title="ja/JSID_EMPTY">JSID_EMPTY</a></li>
+</ul>
+
+<p><code>jsid</code> の型を調べる関数とマクロ:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_VOID" title="ja/JSID_IS_VOID">JSID_IS_VOID</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_INT" title="ja/JSID_IS_INT">JSID_IS_INT</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_STRING" title="ja/JSID_IS_STRING">JSID_IS_STRING</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_OBJECT" title="ja/JSID_IS_OBJECT">JSID_IS_OBJECT</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_GCTHING" title="ja/JSID_IS_GCTHING">JSID_IS_GCTHING</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_ZERO" title="ja/JSID_IS_ZERO">JSID_IS_ZERO</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_EMPTY" title="ja/JSID_IS_EMPTY">JSID_IS_EMPTY</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSID_IS_DEFAULT_XML_NAMESPACE" title="ja/JSID_IS_DEFAULT_XML_NAMESPACE">JSID_IS_DEFAULT_XML_NAMESPACE</a></li>
+</ul>
+
+<p><span id="Classes"></span></p>
+
+<h3 id="Classes" name="Classes">クラス</h3>
+
+<p>これらの API 機能は、C/C++ に実装された JavaScript からアクセス可能なカスタムクラス—オブジェクト型の定義に使用されます。</p>
+
+<ul>
+ <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass" title="ja/SpiderMonkey/JSAPI_Reference/JSClass">JSClass</a></li>
+ <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSExtendedClass" title="ja/SpiderMonkey/JSAPI_Reference/JSExtendedClass">JSExtendedClass</a></li>
+ <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps">JSObjectOps</a></li>
+ <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSXMLObjectOps" title="ja/SpiderMonkey/JSAPI_Reference/JSXMLObjectOps">JSXMLObjectOps</a></li>
+ <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSFunctionSpec" title="ja/SpiderMonkey/JSAPI_Reference/JSFunctionSpec">JSFunctionSpec</a></li>
+ <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSProperty" title="ja/SpiderMonkey/JSAPI_Reference/JSProperty">JSProperty</a></li>
+ <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSPropertySpec" title="ja/SpiderMonkey/JSAPI_Reference/JSPropertySpec">JSPropertySpec</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_InitClass" title="ja/SpiderMonkey/JSAPI_Reference/JS_InitClass">JS_InitClass</a></li>
+</ul>
+
+<p>ネイティブプロパティとメソッドをクラスに追加:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSNative" title="ja/SpiderMonkey/JSAPI_Reference/JSNative">JSNative</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JSFastNative</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></li>
+ <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSFunctionSpec" title="ja/SpiderMonkey/JSAPI_Reference/JSFunctionSpec">JSFunctionSpec</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_FS" title="ja/JS_FS">JS_FS</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_FS" title="ja/JS_FN">JS_FN</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_FS" title="ja/JS_FS_END">JS_FS_END</a> <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></li>
+ <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSPropertySpec" title="ja/SpiderMonkey/JSAPI_Reference/JSPropertySpec">JSPropertySpec</a></li>
+</ul>
+
+<p><code>JSFastNative</code> メソッドはこれらのマクロを使用します: <span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span></p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_CALLEE</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_THIS</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_THIS_OBJECT</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_ARGV</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_RVAL</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/SpiderMonkey/JSAPI_Reference/JSFastNative">JS_SET_RVAL</a></li>
+</ul>
+
+<p><code>JSClass</code> の振る舞いとそのインスタンスは、コールバック関数を使用して多くの方法でカスタマイズすることができます。</p>
+
+<p><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass" title="ja/SpiderMonkey/JSAPI_Reference/JSClass">JSClass</a> メソッド型:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSPropertyOp" title="ja/SpiderMonkey/JSAPI_Reference/JSPropertyOp">JSPropertyOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSEnumerateOp" title="ja/SpiderMonkey/JSAPI_Reference/JSEnumerateOp">JSEnumerateOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.enumerate" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.enumerate">JSNewEnumerateOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.resolve" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.resolve">JSResolveOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSNewResolveOp</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSRESOLVE_ASSIGNING</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSRESOLVE_CLASSNAME</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSRESOLVE_DECLARING</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSRESOLVE_DETECTING</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp" title="ja/SpiderMonkey/JSAPI_Reference/JSNewResolveOp">JSRESOLVE_QUALIFIED</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defaultValue" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defaultValue">JSConvertOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.finalize" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.finalize">JSFinalizeOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.getObjectOps" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.getObjectOps">JSGetObjectOps</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.checkAccess" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.checkAccess">JSCheckAccessOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.xdrObject" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.xdrObject">JSXDRObjectOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.hasInstance" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.hasInstance">JSHasInstanceOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.mark" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.mark">JSMarkOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSTraceOp" title="ja/SpiderMonkey/JSAPI_Reference/JSTraceOp">JSTraceOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.reserveSlots" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.reserveSlots">JSReserveSlotsOp</a></li>
+</ul>
+
+<p><a href="/ja/SpiderMonkey/JSAPI_Reference/JSExtendedClass" title="ja/SpiderMonkey/JSAPI_Reference/JSExtendedClass">JSExtendedClass</a> メソッド型:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSIteratorOp" title="ja/SpiderMonkey/JSAPI_Reference/JSIteratorOp">JSIteratorOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSEqualityOp" title="ja/SpiderMonkey/JSAPI_Reference/JSEqualityOp">JSEqualityOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOp" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOp">JSObjectOp</a></li>
+</ul>
+
+<p><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps">JSObjectOps</a> メソッド型:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.newObjectMap" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.newObjectMap">JSNewObjectMapOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.destroyObjectMap" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.destroyObjectMap">JSObjectMapOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.lookupProperty" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.lookupProperty">JSLookupPropOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defineProperty" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defineProperty">JSDefinePropOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getProperty" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getProperty">JSPropertyIdOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getAttributes" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getAttributes">JSAttributesOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defaultValue" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.defaultValue">JSConvertOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.enumerate" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.enumerate">JSNewEnumerateOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.checkAccess" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.checkAccess">JSCheckAccessIdOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOp" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOp">JSObjectOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.dropProperty" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.dropProperty">JSPropertyRefOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.xdrObject" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.xdrObject">JSXDRObjectOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.hasInstance" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.hasInstance">JSHasInstanceOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.setProto" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.setProto">JSSetObjectSlotOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSTraceOp" title="ja/SpiderMonkey/JSAPI_Reference/JSTraceOp">JSTraceOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.finalize" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.finalize">JSFinalizeOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getRequiredSlot" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getRequiredSlot">JSGetRequiredSlotOp</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getRequiredSlot" title="ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.getRequiredSlot">JSSetRequiredSlotOp</a></li>
+</ul>
+
+<p><a href="/ja/SpiderMonkey/JSAPI_Reference/JSXMLObjectOps" title="ja/SpiderMonkey/JSAPI_Reference/JSXMLObjectOps">JSXMLObjectOps</a> メソッド型:</p>
+
+<ul>
+ <li><a href="/ja/JSGetMethodOp" title="ja/JSGetMethodOp">JSGetMethodOp</a></li>
+ <li><a href="/ja/JSSetMethodOp" title="ja/JSSetMethodOp">JSSetMethodOp</a></li>
+ <li><a href="/ja/JSEnumerateValuesOp" title="ja/JSEnumerateValuesOp">JSEnumerateValuesOp</a></li>
+ <li><a href="/ja/JSEqualityOp" title="ja/JSEqualityOp">JSEqualityOp</a></li>
+ <li><a href="/ja/JSConcatenateOp" title="ja/JSConcatenateOp">JSConcatenateOp</a></li>
+</ul>
+
+<p>これらの stub 関数はカスタム <code>JSClass</code> の作成時に使用されます:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub" title="ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub">JS_ConvertStub</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub" title="ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub">JS_EnumerateStub</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub" title="ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub">JS_FinalizeStub</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub" title="ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub">JS_PropertyStub</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub" title="ja/SpiderMonkey/JSAPI_Reference/JS_PropertyStub">JS_ResolveStub</a></li>
+</ul>
+
+<p><code>JSClass</code> の振る舞いは、これらのフラグを使用してカスタマイズできます:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSClass.flags</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_CONSTUCT_PROTOTYPE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_GLOBAL_FLAGS</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_HAS_PRIVATE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_HAS_RESERVED_SLOTS</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_IS_EXTENDED</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_MARK_IS_TRACE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_NEW_ENUMERATE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_NEW_RESOLVE</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_NEW_RESOLVE_GETS_START</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_PRIVATE_IS_NSISUPPORTS</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.flags" title="ja/SpiderMonkey/JSAPI_Reference/JSClass.flags">JSCLASS_SHARE_ALL_PROPERTIES</a></li>
+</ul>
+
+<p><span id="Arrays"></span></p>
+
+<h3 id="Arrays" name="Arrays">配列</h3>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewArrayObject" title="ja/JS_NewArrayObject">JS_NewArrayObject</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_IsArrayObject" title="ja/JS_IsArrayObject">JS_IsArrayObject</a></li>
+</ul>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_HasArrayLength" title="ja/JS_HasArrayLength">JS_HasArrayLength</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetArrayLength" title="ja/JS_GetArrayLength">JS_GetArrayLength</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetArrayLength" title="ja/JS_SetArrayLength">JS_SetArrayLength</a></li>
+</ul>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AliasElement" title="ja/JS_AliasElement">JS_AliasElement</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineElement" title="ja/JS_DefineElement">JS_DefineElement</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteElement" title="ja/JS_DeleteElement">JS_DeleteElement</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DeleteElement2" title="ja/JS_DeleteElement2">JS_DeleteElement2</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetElement" title="ja/JS_GetElement">JS_GetElement</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LookupElement" title="ja/JS_LookupElement">JS_LookupElement</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetElement" title="ja/JS_SetElement">JS_SetElement</a></li>
+</ul>
+
+<p><span id="Functions"></span></p>
+
+<h3 id="Functions" name="Functions">関数</h3>
+
+<p>関数またはオブジェクトのメソッドの呼び出し:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CallFunction" title="ja/JS_CallFunction">JS_CallFunction</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CallFunctionName" title="ja/JS_CallFunctionName">JS_CallFunctionName</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CallFunctionValue" title="ja/JS_CallFunctionValue">JS_CallFunctionValue</a></li>
+</ul>
+
+<p>関数アクセサリ:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ObjectIsFunction" title="ja/JS_ObjectIsFunction">JS_ObjectIsFunction</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionArity" title="ja/JS_GetFunctionArity">JS_GetFunctionArity</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionFlags" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionFlags">JS_GetFunctionFlags</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionId" title="ja/JS_GetFunctionId">JS_GetFunctionId</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionName" title="ja/JS_GetFunctionName">JS_GetFunctionName</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetFunctionObject" title="ja/JS_GetFunctionObject">JS_GetFunctionObject</a></li>
+</ul>
+
+<p>関数の生成:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CloneFunctionObject" title="ja/JS_CloneFunctionObject">JS_CloneFunctionObject</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineFunction" title="ja/JS_DefineFunction">JS_DefineFunction</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineFunction" title="ja/JS_DefineFunction">JS_DefineUCFunction</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DefineFunctions" title="ja/JS_DefineFunctions">JS_DefineFunctions</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewFunction" title="ja/JS_NewFunction">JS_NewFunction</a></li>
+</ul>
+
+<p><span id="RegExps"></span></p>
+
+<h3 id="RegExps" name="RegExps">正規表現</h3>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject">JS_NewRegExpObject</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject" title="ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject">JS_NewUCRegExpObject</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetRegExpInput" title="ja/SpiderMonkey/JSAPI_Reference/JS_SetRegExpInput">JS_SetRegExpInput</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearRegExpRoots" title="ja/SpiderMonkey/JSAPI_Reference/JS_ClearRegExpRoots">JS_ClearRegExpRoots</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearRegExpStatics" title="ja/SpiderMonkey/JSAPI_Reference/JS_ClearRegExpStatics">JS_ClearRegExpStatics</a></li>
+</ul>
+
+<p><span id="Security"></span></p>
+
+<h3 id="Security" name="Security">セキュリティ</h3>
+
+<p><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8.1">SpiderMonkey 1.8.1</a> の新機能</span> セキュリティのコールバックは、ランタイムごと、またはコンテキストごとに設定できます。</p>
+
+<ul>
+ <li>
+ <ul>
+ <li>struct <a href="/ja/SpiderMonkey/JSAPI_Reference/JSPrincipals" title="ja/JSPrincipals">JSPrincipals</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSPRINCIPALS_HOLD" title="ja/JSPRINCIPALS_HOLD">JSPRINCIPALS_HOLD</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JSPRINCIPALS_HOLD" title="ja/JSPRINCIPALS_HOLD">JSPRINCIPALS_DROP</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetObjectPrincipalsFinder" title="ja/JS_SetObjectPrincipalsFinder">JS_SetObjectPrincipalsFinder</a> <span class="inlineIndicator standardNote">JSAPI 1.8 まで</span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPrincipalsTranscoder" title="ja/JS_SetPrincipalsTranscoder">JS_SetPrincipalsTranscoder</a> <span class="inlineIndicator standardNote">JSAPI 1.8 まで</span></li>
+ </ul>
+
+ <ul>
+ <li>enum <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSAccessMode</a> – <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_PROTO</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_PARENT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_IMPORT</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_WATCH</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_READ</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JSACC_WRITE</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_CheckAccess" title="ja/JS_CheckAccess">JS_CheckAccess</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSObjectOps.checkAccess" title="ja/JSObjectOps.checkAccess">JSObjectOps.checkAccess</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSClass.checkAccess" title="ja/JSClass.checkAccess">JSClass.checkAccess</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetCheckObjectAccessCallback" title="ja/JS_SetCheckObjectAccessCallback">JS_SetCheckObjectAccessCallback</a> <span class="inlineIndicator standardNote">JSAPI 1.8 まで</span></li>
+ </ul>
+
+ <ul>
+ <li><a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetSecurityCallbacks" title="ja/SpiderMonkey/JSAPI Reference/JS GetSecurityCallbacks">JS_GetSecurityCallbacks</a>, <a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetSecurityCallbacks" title="ja/SpiderMonkey/JSAPI Reference/JS GetSecurityCallbacks">JS_SetContextSecurityCallbacks</a>, <a class="internal" href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetSecurityCallbacks" title="ja/SpiderMonkey/JSAPI Reference/JS GetSecurityCallbacks">JS_GetRuntimeSecurityCallbacks</a>, <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetSecurityCallbacks" title="ja/SpiderMonkey/JSAPI_Reference/JS_GetSecurityCallbacks">JS_SetRuntimeSecurityCallbacks</a></li>
+ </ul>
+ </li>
+</ul>
+
+<p><span id="Threading"></span></p>
+
+<h3 id="Threading" name="Threading">スレッド</h3>
+
+<p>次の関数は SpiderMonkey のスレッドモデルをサポートしています。</p>
+
+<p><span class="inlineIndicator standardNote">JSAPI 1.7 まで</span> これらは <code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE" title="ja/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE">JS_THREADSAFE</a></code> ビルドでのみ利用可能です。</p>
+
+<p><span style="border: 1px solid rgb(129, 129, 81); background: rgb(255, 255, 225); font-size: 9px; vertical-align: text-top;"><a href="https://developer.mozilla.org/ja/docs/SpiderMonkey/1.8">SpiderMonkey 1.8</a> の新機能</span> これらの関数はいつでも利用可能です。ただし、<code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code> 無しのビルドでは何もしません</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="ja/JS_BeginRequest">JS_BeginRequest</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="ja/JS_BeginRequest">JS_EndRequest</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_YieldRequest" title="ja/JS_YieldRequest">JS_YieldRequest</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="ja/JS_SuspendRequest">JS_SuspendRequest</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="ja/JS_SuspendRequest">JS_ResumeRequest</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_GetContextThread" title="ja/JS_GetContextThread">JS_GetContextThread</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearContextThread" title="ja/JS_ClearContextThread">JS_SetContextThread</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ClearContextThread" title="ja/JS_ClearContextThread">JS_ClearContextThread</a></li>
+</ul>
+
+<p>次の関数はすべてのビルドに存在します。ただし、<code><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE" title="ja/SpiderMonkey/JSAPI_Reference/JS_THREADSAFE">JS_THREADSAFE</a></code> 無しのビルドでは何もしません:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_LockRuntime" title="ja/SpiderMonkey/JSAPI_Reference/JS_LockRuntime">JS_LockRuntime</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_UnlockRuntime" title="ja/SpiderMonkey/JSAPI_Reference/JS_UnlockRuntime">JS_UnlockRuntime</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Lock" title="ja/JS_Lock">JS_Lock</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Unlock" title="ja/JS_Unlock">JS_Unlock</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li>
+</ul>
+
+<p><span id="Time"></span></p>
+
+<h3 id="Time" name="Time">時間</h3>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_Now" title="ja/SpiderMonkey/JSAPI_Reference/JS_Now">JS_Now</a></li>
+</ul>
+
+<p><span id="Callback_Types"></span></p>
+
+<h3 id="Callback_Types" name="Callback_Types">コールバック型</h3>
+
+<p>ネイティブ関数型:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSNative" title="ja/JSNative">JSNative</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFastNative" title="ja/JSFastNative">JSFastNative</a></li>
+</ul>
+
+<p>その他のコールバック型:</p>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddExternalStringFinalizer" title="ja/JS_AddExternalStringFinalizer">JSStringFinalizeOp</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddExternalStringFinalizer" title="ja/JS_AddExternalStringFinalizer">JS_AddExternalStringFinalizer</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_TRACER_INIT" title="ja/JS_TRACER_INIT">JSTraceCallback</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_TRACER_INIT" title="ja/JS_TRACER_INIT">JS_TRACER_INIT</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SET_TRACING_DETAILS" title="ja/JS_SET_TRACING_DETAILS">JSTraceNamePrinter</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SET_TRACING_DETAILS" title="ja/JS_SET_TRACING_DETAILS">JS_SET_TRACING_DETAILS</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetContextCallback" title="ja/JS_SetContextCallback">JSContextCallback</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetContextCallback" title="ja/JS_SetContextCallback">JS_SetContextCallback</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JSGCCallback</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetGCCallback" title="ja/JS_SetGCCallback">JS_SetGCCallback</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetExtraGCRoots" title="ja/JS_SetExtraGCRoots">JSTraceDataOp</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetExtraGCRoots" title="ja/JS_SetExtraGCRoots">JS_SetExtraGCRoots</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetBranchCallback" title="ja/JS_SetBranchCallback">JSBranchCallback</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetBranchCallback" title="ja/JS_SetBranchCallback">JS_SetBranchCallback</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetErrorReporter" title="ja/JS_SetErrorReporter">JSErrorReporter</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetErrorReporter" title="ja/JS_SetErrorReporter">JS_SetErrorReporter</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JSErrorCallback</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_ReportErrorNumber" title="ja/JS_ReportErrorNumber">JS_ReportErrorNumber</a> and friends</li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddArgumentFormatter" title="ja/JS_AddArgumentFormatter">JSArgumentFormatter</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_AddArgumentFormatter" title="ja/JS_AddArgumentFormatter">JS_AddArgumentFormatter</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPrincipalsTranscoder" title="ja/JS_SetPrincipalsTranscoder">JSPrincipalsTranscoder</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetPrincipalsTranscoder" title="ja/JS_SetPrincipalsTranscoder">JS_SetPrincipalsTranscoder</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetObjectPrincipalsFinder" title="ja/JS_SetObjectPrincipalsFinder">JSObjectPrincipalsFinder</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_SetObjectPrincipalsFinder" title="ja/JS_SetObjectPrincipalsFinder">JS_SetObjectPrincipalsFinder</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MapGCRoots">JSGCRootMapFun</a> - used by <a href="/ja/SpiderMonkey/JSAPI_Reference/JS_MapGCRoots" title="ja/JS_MapGCRoots">JS_MapGCRoots</a></li>
+</ul>
+
+<p>上記の<a href="#Classes">クラス</a>も参照してください。</p>
+
+<p><span id="Macros"></span></p>
+
+<h3 id="Macros" name="Macros">マクロ</h3>
+
+<ul>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_DEFAULT_XML_NAMESPACE_ID" title="ja/JS_DEFAULT_XML_NAMESPACE_ID">JS_DEFAULT_XML_NAMESPACE_ID</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_BOUND_METHOD" title="ja/JSFUN_BOUND_METHOD">JSFUN_BOUND_METHOD</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_GETTER" title="ja/JSFUN_GETTER">JSFUN_GETTER</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_GLOBAL_PARENT" title="ja/JSFUN_GLOBAL_PARENT">JSFUN_GLOBAL_PARENT</a> <span title="これは非推奨 API です。未だ動作しているかも知れませんが、将来的に削除される可能性があります。"><i class="icon-thumbs-down-alt"> </i></span></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_HEAVYWEIGHT" title="ja/JSFUN_HEAVYWEIGHT">JSFUN_HEAVYWEIGHT</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_LAMBDA" title="ja/JSFUN_LAMBDA">JSFUN_LAMBDA</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JSFUN_SETTER" title="ja/JSFUN_SETTER">JSFUN_SETTER</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject" title="ja/JSREG_GLOB">JSREG_GLOB</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject" title="ja/JSREG_FOLD">JSREG_FOLD</a></li>
+ <li><a href="/ja/SpiderMonkey/JSAPI_Reference/JS_NewRegExpObject" title="ja/JSREG_MULTILINE">JSREG_MULTILINE</a></li>
+</ul>
+
+<p><span id="C++_features"></span></p>
+
+<h3 id="C.2B.2B_features" name="C.2B.2B_features">C++ の機能</h3>
+
+<ul>
+ <li>class <a href="/ja/JSAutoRequest" title="ja/JSAutoRequest">JSAutoRequest</a></li>
+ <li>class <a href="/ja/JSAutoLocalRootScope" title="ja/JSAutoLocalRootScope">JSAutoLocalRootScope</a></li>
+ <li>class <a href="/ja/JS::PerfMeasurement" title="ja/JS::PerfMeasurement">JS::PerfMeasurement</a> (in <code>jsperf.h</code>)</li>
+</ul>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_compilefile/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_compilefile/index.html
new file mode 100644
index 0000000000..a6d409dc85
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_compilefile/index.html
@@ -0,0 +1,66 @@
+---
+title: JS CompileFile
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_CompileFile
+tags:
+ - JSAPI Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_CompileUTF8File
+---
+<p>
+
+</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> »
+ <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> »
+ <code>JS_CompileFile</code></div>
+
+<p></p>
+
+<p>外部ファイルに含まれるスクリプトをコンパイルします。 <span class="comment">Compile a script stored in an external file.</span></p>
+
+<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2>
+
+<pre class="eval"><a href="/ja/JSScript" title="ja/JSScript">JSScript</a> * <strong>JS_CompileFile</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx, <a href="/ja/JSObject" title="ja/JSObject">JSObject</a> *obj,
+ const char *filename);
+</pre>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Name</th>
+ <th>Type</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>cx</code></td>
+ <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *</code></td>
+ <td>スクリプトをコンパイルするときのコンテキスト {{ Jsapi-requires-request() }}</td>
+ </tr>
+ <tr>
+ <td><code>obj</code></td>
+ <td><code>JSObject *</code></td>
+ <td>スクリプトと関連付けるオブジェクト<span class="comment">Object with which the script is associated.</span></td>
+ </tr>
+ <tr>
+ <td><code>filename</code></td>
+ <td><code>const char *</code></td>
+ <td>スクリプトを含むファイルの名前<span class="comment">Name of file containing the script to compile.</span></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id=".E8.A7.A3.E8.AA.AC" name=".E8.A7.A3.E8.AA.AC">解説</h2>
+
+<p><code>JS_CompileFile</code>は、JavaScriptエンジンで実行するために外部ファイルのスクリプトをコンパイルする関数です。 <span class="comment">&lt;code&gt;JS_CompileFile&lt;/code&gt; compiles the text of script in an external file location for execution by the JS engine.</span></p>
+
+<p><code>filename</code>は、コンパイル対象のスクリプトを含んでいるファイルの名前を引数に取ります。 <span class="comment">&lt;code&gt;filename&lt;/code&gt; is the name of the file containing the script to compile.</span></p>
+
+<p>コンパイルが成功したとき、<code>JS_CompileFile</code>はコンパイル済みのスクリプトへのポインタを返値とします。失敗時には<code>NULL</code>を返します。 <span class="comment">On success, &lt;code&gt;JS_CompileFile&lt;/code&gt; returns a pointer to the compiled script. Otherwise it returns &lt;code&gt;NULL&lt;/code&gt;.</span></p>
+
+<p>ファイル名でスクリプトを指定するのではなく、文字列の引数として関数に渡す場合には、<code><a href="/ja/JS_CompileScript" title="ja/JS_CompileScript">JS_CompileScript</a></code>を使ってください。 <span class="comment">To pass a script as an argument to a function rather than having to specify a file location, use &lt;code&gt;<a href="/ja/JS_CompileScript">JS_CompileScript</a>&lt;/code&gt; instead.</span></p>
+
+<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2>
+
+<p>{{ LXRSearch("ident", "i", "JS_CompileFile") }}</p>
+
+<p><a href="/ja/JS_CompileScript" title="ja/JS_CompileScript">JS_CompileScript</a>, <a href="/ja/JS_DecompileScript" title="ja/JS_DecompileScript">JS_DecompileScript</a>, <a href="/ja/JS_DestroyScript" title="ja/JS_DestroyScript">JS_DestroyScript</a>, <a href="/ja/JS_EvaluateScript" title="ja/JS_EvaluateScript">JS_EvaluateScript</a>, <a href="/ja/JS_ExecuteScript" title="ja/JS_ExecuteScript">JS_ExecuteScript</a></p>
+
+<p>{{ languages( { "en": "en/JS_CompileFile" } ) }}</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_constructobject/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_constructobject/index.html
new file mode 100644
index 0000000000..ae7b116ff2
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_constructobject/index.html
@@ -0,0 +1,63 @@
+---
+title: JS ConstructObject
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ConstructObject
+tags:
+ - JSAPI Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ConstructObject
+---
+<p></p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> »
+ <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> »
+ <code>JS_ConstructObject</code></div>
+<p></p>
+
+<p>新たにJavaScriptオブジェクトを生成し、コンストラクタを呼び出します。 <span class="comment">Create a new JavaScript object and invoke its constructor.</span></p>
+
+<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2>
+
+<pre class="eval"><a href="/ja/JSObject" title="ja/JSObject">JSObject</a> * <strong>JS_ConstructObject</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx, <a href="/ja/JSClass" title="ja/JSClass">JSClass</a> *clasp,
+ <a href="/ja/JSObject" title="ja/JSObject">JSObject</a> *proto, <a href="/ja/JSObject" title="ja/JSObject">JSObject</a> *parent);
+</pre>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Name</th>
+ <th>Type</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>cx</code></td>
+ <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *</code></td>
+ <td>新たなオブジェクトを配置するコンテキスト<span class="comment">The context in which to create the new object. {{ jsapi-requires-request }}&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;code&gt;clasp&lt;/code&gt;&lt;/td&gt; &lt;td&gt;&lt;code&gt;<a href="/ja/JSClass">JSClass</a> *&lt;/code&gt;&lt;/td&gt; &lt;td&gt;オブジェクト生成時に利用するクラスへのポインタ。&lt;code&gt;NULL&lt;/code&gt;を指定したときは、一般的なJavaScript &lt;code&gt;Object&lt;/code&gt;が生成されます。&lt;!--Pointer to the class to use for the new object. If this is &lt;code&gt;NULL&lt;/code&gt;, an ordinary JavaScript &lt;code&gt;Object&lt;/code&gt; is created.</span></td>
+ </tr>
+ <tr>
+ <td><code>proto</code></td>
+ <td><code><a href="/ja/JSObject" title="ja/JSObject">JSObject</a> *</code></td>
+ <td>クラスとなるプロトタイプオブジェクトへのポインタ<span class="comment">Pointer to the prototype object to use for the new class.</span></td>
+ </tr>
+ <tr>
+ <td><code>parent</code></td>
+ <td><code><a href="/ja/JSObject" title="ja/JSObject">JSObject</a> *</code></td>
+ <td>新たなオブジェクトの __parent__ プロパティに指定するオブジェクトへのポインタ<span class="comment">Pointer to which to set the new object's __parent__ property.</span></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id=".E8.A7.A3.E8.AA.AC" name=".E8.A7.A3.E8.AA.AC">解説</h2>
+
+<p><code>JS_ConstructObject</code>は、与えられたクラス、プロトタイプ、親オブジェクト、コンストラクタ関数をもとに新たなオブジェクトのインスタンスを生成する関数です。<code>cx</code>には、新たなオブジェクトを配置するランタイムと結び付けられたコンテキストへのポインタを指定します。<code>clasp</code>には、ファイナライズ処理などの内部関数が定義された既存クラスへのポインタを指定します。<code>proto</code>は、新たなオブジェクトのプロトタイプとなるオブジェクトへのポインタを指定する引数です。 <span class="comment">&lt;code&gt;JS_ConstructObject&lt;/code&gt; instantiates a new object based on a specified class, prototype, and parent object, and then invokes its constructor function. &lt;code&gt;cx&lt;/code&gt; is a pointer to a context associated with the runtime in which to establish the new object. &lt;code&gt;clasp&lt;/code&gt; is a pointer to an existing class to use for internal methods, such as finalize. &lt;code&gt;proto&lt;/code&gt; is an optional pointer to the prototype object with which to associate the new object.</span></p>
+
+<p>自分自身をプロトタイプオブジェクトにするには、<code>proto</code>に<code>NULL</code>を指定してください。このとき、<code>clasp</code>がプロトタイプを定義している場合には、<code>JS_ConstructObject</code>は新たなオブジェクトのプロトタイプにそれを用います。定義していない場合は、空オブジェクトスタブをプロトタイプとします。 <span class="comment">Set &lt;code&gt;proto&lt;/code&gt; to &lt;code&gt;NULL&lt;/code&gt; to force JS to assign a prototype object for you. In this case, &lt;code&gt;JS_ConstructObject&lt;/code&gt; attempts to assign the new object the prototype object belonging to &lt;code&gt;clasp&lt;/code&gt;, if one is defined there. Otherwise, it creates an empty object stub for the prototype.</span></p>
+
+<p><code>parent</code>には、新規オブジェクトの親プロパティとなるオブジェクトへのポインタを指定します。この引数はオプションであり、<code>parent</code>に<code>NULL</code>を指定することで親プロパティを持たないオブジェクトになります。 <span class="comment">&lt;code&gt;parent&lt;/code&gt; is an optional pointer to an existing object to which to set the new object's parent object property. You can set &lt;code&gt;parent&lt;/code&gt; to &lt;code&gt;NULL&lt;/code&gt; if you do not want to set the parent property.</span></p>
+
+<p><code>JS_ConstructObject</code>が成功したとき、新たに生成されたオブジェクトへのポインタをその返値とします。失敗したときは<code>NULL</code>を返します。 <span class="comment">On success, &lt;code&gt;JS_ConstructObject&lt;/code&gt; returns a pointer to the newly instantiated object. Otherwise it returns &lt;code&gt;NULL&lt;/code&gt;.</span></p>
+
+<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2>
+
+<p>{{ LXRSearch("ident", "i", "JS_ConstructObject") }}</p>
+
+<p><a href="/ja/JS_DefineObject" title="ja/JS_DefineObject">JS_DefineObject</a>, <a href="/ja/JS_GetFunctionObject" title="ja/JS_GetFunctionObject">JS_GetFunctionObject</a>, <a href="/ja/JS_NewArrayObject" title="ja/JS_NewArrayObject">JS_NewArrayObject</a>, <a href="/ja/JS_NewObject" title="ja/JS_NewObject">JS_NewObject</a>, <a href="/ja/JS_ValueToObject" title="ja/JS_ValueToObject">JS_ValueToObject</a></p>
+
+<p>{{ languages( { "en": "en/JS_ConstructObject" } ) }}</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_defineobject/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_defineobject/index.html
new file mode 100644
index 0000000000..782201ccc5
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_defineobject/index.html
@@ -0,0 +1,126 @@
+---
+title: JS_DefineObject
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DefineObject
+tags:
+ - JSAPI Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DefineObject
+---
+<p>
+</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> »
+ <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> »
+ <code>JS_NewRuntime</code></div>
+<p></p>
+
+<p>あるオブジェクトのプロパティとなるオブジェクトを生成する関数です。 <span class="comment">Create an object that is a property of another object.</span> {{ 英語版章題("Syntax") }}</p>
+
+<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2>
+
+<pre class="eval">JSObject * JS_DefineObject(JSContext *cx, JSObject *obj,
+ const char *name, JSClass *clasp, JSObject *proto,
+ uintN flags);
+</pre>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Name</th>
+ <th>Type</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>cx</code></td>
+ <td><code>JSContext *</code></td>
+ <td>エラー報告に用いるランタイム環境から派生したコンテキストへのポインタ<span class="comment">Pointer to a JS context from which to derive runtime information for error reporting.</span> {{ Jsapi-requires-request() }}</td>
+ </tr>
+ <tr>
+ <td><code>obj</code></td>
+ <td><code>JSObject *</code></td>
+ <td>生成したオブジェクトをプロパティとして持つオブジェクトへのポインタ<span class="comment">Object to which this new object belongs as a property.</span></td>
+ </tr>
+ <tr>
+ <td><code>name</code></td>
+ <td><code>const char *</code></td>
+ <td><code>obj</code>でのプロパティ名<span class="comment">Name of the property that encapsulates the new object in &lt;code&gt;obj&lt;/code&gt;.</span></td>
+ </tr>
+ <tr>
+ <td><code>clasp</code></td>
+ <td><code>JSClass *</code></td>
+ <td>オブジェクト生成に用いるクラス<span class="comment">Class to use for the new object.</span></td>
+ </tr>
+ <tr>
+ <td><code>proto</code></td>
+ <td><code>JSObject *</code></td>
+ <td>オブジェクト生成に用いるプロトタイプ<span class="comment">Prototype object to use for the new object.</span></td>
+ </tr>
+ <tr>
+ <td><code>flags</code></td>
+ <td><code>uintN</code></td>
+ <td>生成したオブジェクトの属性を指定するフラグ<span class="comment">Property flags for the new object.</span></td>
+ </tr>
+ </tbody>
+</table>
+
+<p>{{ 英語版章題("Description") }}</p>
+
+<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2>
+
+<p><code>JS_DefineObject</code>は、オブジェクトのインスタンスを生成し、それを引数<code>obj</code>で指定した既存オブジェクトのプロパティとして設定する関数です。引数<code>name</code>で、<code>obj</code>でのプロパティ名を指定し、<code>flags</code>でそのプロパティの属性を指定します。以下の表で設定可能な<code>flags</code>の値を示します。これらの値は単一、あるいは複数の値の論理和として引数に与えることができます。 <span class="comment">&lt;code&gt;JS_DefineObject&lt;/code&gt; instantiates and names a new object for an existing object, &lt;code&gt;obj&lt;/code&gt;. &lt;code&gt;name&lt;/code&gt; is the property name to assign to &lt;code&gt;obj&lt;/code&gt; to hold the new object, and &lt;code&gt;flags&lt;/code&gt; contains the property flags to set for the newly created property. The following table lists possible values you can pass in &lt;code&gt;flags&lt;/code&gt;, either singly, or &lt;code&gt;OR&lt;/code&gt;'d together:</span></p>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Flag</th>
+ <th>Purpose</th>
+ </tr>
+ <tr>
+ <td><code>JSPROP_ENUMERATE</code></td>
+ <td><code>for</code>と<code>in</code>ループを使ったアクセス(<a href="ja/Core_JavaScript_1.5_Guide/Object_Manipulation_Statements">Core JavaScript 1.5 Guide:Object Manipulation Statements</a>)を可能にします。<span class="comment">Property is visible to &lt;code&gt;for&lt;/code&gt; and &lt;code&gt;in&lt;/code&gt; loops.</span></td>
+ </tr>
+ <tr>
+ <td><code>JSPROP_READONLY</code></td>
+ <td>プロパティの値を読み取り専用にします。<span class="comment">Property is read only.</span></td>
+ </tr>
+ <tr>
+ <td><code>JSPROP_PERMANENT</code></td>
+ <td>プロパティの削除を不可能にします。<span class="comment">Property cannot be deleted.</span></td>
+ </tr>
+ <tr>
+ <td><code>JSPROP_EXPORTED</code></td>
+ <td>Property can be imported by other objects.</td>
+ </tr>
+ <tr>
+ <td><code>JSPROP_INDEX</code></td>
+ <td>Property is actually an index into an array of properties, and is cast to a const <code>char *</code>.</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>引数<code>clasp</code>はオブジェクトの生成時に用いる基底クラスへのポインタ、引数<code>proto</code>はプロトタイプへのポインタをそれぞれとります。<code>proto</code>に<code>NULL</code>を指定した場合、JavaScriptは自分自身をプロトタイプとします。引数<code>obj</code>はオブジェクトの親オブジェクトになります。 <span class="comment">&lt;code&gt;clasp&lt;/code&gt; is a pointer to the base class to use when creating the new object, and &lt;code&gt;proto&lt;/code&gt; is an pointer to the prototype upon which to base the new object. If you set &lt;code&gt;proto&lt;/code&gt; to &lt;code&gt;NULL&lt;/code&gt;, JS sets the prototype object for you. The parent object for the new object is set to &lt;code&gt;obj&lt;/code&gt;.</span></p>
+
+<p><code>JS_DefineObject</code>が成功したとき、返値は新たに生成したプロパティオブジェクトへのポインタになります。もしすでにプロパティが設定されていた場合、オブジェクトは生成されず、返り値は<code>NULL</code>になります。 <span class="comment">&lt;code&gt;JS_DefineObject&lt;/code&gt; returns a pointer to the newly created property object if successful. If the property already exists, or cannot be created, &lt;code&gt;JS_DefineObject&lt;/code&gt; returns &lt;code&gt;NULL&lt;/code&gt;.</span> {{ 英語版章題("See Also") }}</p>
+
+<h3 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h3>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <td>Groups</td>
+ <td><a href="ja/JSAPI_Reference#Functions">Functions</a></td>
+ </tr>
+ <tr>
+ <td>Documents</td>
+ <td>{{ LXRSearch("ident", "i", "JS_DefineObject", "LXR ID Search") }}</td>
+ </tr>
+ <tr>
+ <td>Entries</td>
+ <td>
+ <p><a href="ja/JSClass">JSClass</a>, <a href="ja/JS_DefineConstDoubles">JS_DefineConstDoubles</a>, <a href="ja/JS_DefineElement">JS_DefineElement</a>, <a href="ja/JS_DefineFunction">JS_DefineFunction</a>, <a href="ja/JS_DefineFunctions">JS_DefineFunctions</a>, <a href="ja/JS_DefineProperties">JS_DefineProperties</a>, <a href="ja/JS_DefineProperty">JS_DefineProperty</a>, <a href="ja/JS_DefinePropertyWithTinyId">JS_DefinePropertyWithTinyId</a>, <a href="ja/JS_NewObject">JS_NewObject</a>, <a href="ja/JS_ValueToObject">JS_ValueToObject</a></p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<div class="noinclude"> </div>
+
+<p>{{ languages( { "en": "en/JS_DefineObject" } ) }}</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroycontext/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroycontext/index.html
new file mode 100644
index 0000000000..be77b35a40
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroycontext/index.html
@@ -0,0 +1,55 @@
+---
+title: JS DestroyContext
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyContext
+tags:
+ - JSAPI Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyContext
+---
+<p>
+
+
+</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> »
+ <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> »
+ <code>JS_DestroyContext</code></div>
+
+
+<p></p>
+
+<p><code>JSContext</code>を解放します。</p>
+
+<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2>
+
+<pre class="eval">void <strong>JS_DestroyContext</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx);
+
+void <strong>JS_DestroyContextNoGC</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx);
+
+void <strong>JS_DestroyContextMaybeGC</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx);
+</pre>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Name</th>
+ <th>Type</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>cx</code></td>
+ <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *</code></td>
+ <td>解放するコンテキスト</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id=".E8.A7.A3.E8.AA.AC" name=".E8.A7.A3.E8.AA.AC">解説</h2>
+
+<p>これらの関数はコンテキスト<code>cx</code>を解放します。それに加え、<code>JS_DestroyContext</code>は実行し、<code>cx</code>の<a href="/ja/JS_GetGlobalObject" title="ja/JS_GetGlobalObject">グローバルオブジェクト</a>が利用したメモリを回収するためにガベージコレクションを実行します。<code>JS_DestroyContextNoGC</code>はガベージコレクションを実行しません。<code>JS_DestroyContextMaybeGC</code>では、JavaScriptエンジンが十分なメモリ領域を解放できる可能性を判断し、ガベージコレクションを実行するか否かを判断します。 <span class="comment">These functions destroy a context, &lt;code&gt;cx&lt;/code&gt;. &lt;code&gt;JS_DestroyContext&lt;/code&gt; additionally performs garbage collection to reclaim any memory that was being used by &lt;code&gt;cx&lt;/code&gt;'s <a href="/ja/JS_GetGlobalObject">global object</a>. &lt;code&gt;JS_DestroyContextNoGC&lt;/code&gt; does not perform garbage collection. &lt;code&gt;JS_DestroyContextMaybeGC&lt;/code&gt; may or may not perform garbage collection; the engine makes an educated guess as to whether enough memory would be reclaimed to justify the work.</span></p>
+
+<p><code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>を有効にしたビルドでは、<code>cx</code>のrequest内でこの関数を呼ばないでください。</p>
+
+<p><code><a href="/ja/JS_SetContextCallback" title="ja/JS_SetContextCallback">JS_SetContextCallback</a></code>が以前に実行された場合は、そこで設定したコールバック関数が実行されます。 <span class="comment">In a &lt;code&gt;<a href="/ja/JS_THREADSAFE">JS_THREADSAFE</a>&lt;/code&gt; build, the caller must '''not''' be in a request on &lt;code&gt;cx&lt;/code&gt;. If &lt;code&gt;<a href="/ja/JS_SetContextCallback">JS_SetContextCallback</a>&lt;/code&gt; has been called, this calls the callback.</span></p>
+
+<p>{{ LXRSearch("ident", "i", "JS_DestroyContext") }}</p>
+
+<p>{{ languages( { "en": "en/JS_DestroyContext" } ) }}</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroyruntime/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroyruntime/index.html
new file mode 100644
index 0000000000..d65b41c6d6
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_destroyruntime/index.html
@@ -0,0 +1,45 @@
+---
+title: JS DestroyRuntime
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyRuntime
+tags:
+ - JSAPI Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DestroyRuntime
+---
+<p>
+
+</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> »
+ <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> »
+ <code>JS_DestroyRuntime</code></div>
+
+<p></p>
+
+<p>JavaScriptランタイム環境を解放します。 <span class="comment">Frees a JavaScript runtime.</span></p>
+
+<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2>
+
+<pre class="eval">void <strong>JS_DestroyRuntime</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> *rt);
+</pre>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Name</th>
+ <th>Type</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>rt</code></td>
+ <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> *</code></td>
+ <td>解放するランタイム<span class="comment">The runtime to destroy.</span></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2>
+
+<p><code>JS_DestroyRuntime</code>は、JavaScriptランタイム環境<code>rt</code>を解放する関数です。JSAPIの利用を終えた後は必ず<code>JS_DestroyRuntime</code>を呼び出してください。<code>JS_DestroyRuntime</code>を呼ぶことで、ガベージコレクションおよび<code><a href="/ja/JS_NewRuntime" title="ja/JS_NewRuntime">JS_NewRuntime</a></code>によって確保されたメモリ領域の解放が行われます。 <span class="comment">&lt;code&gt;JS_DestroyRuntime&lt;/code&gt; frees the specified the JavaScript runtime environment, &lt;code&gt;rt&lt;/code&gt;. Call &lt;code&gt;JS_DestroyRuntime&lt;/code&gt; after completing all other JS API calls. &lt;code&gt;JS_DestroyRuntime&lt;/code&gt; garbage collects and frees the memory previously allocated by &lt;code&gt;<a href="/ja/JS_NewRuntime">JS_NewRuntime</a>&lt;/code&gt;.</span></p>
+
+<p>{{ LXRSearch("ident", "i", "JS_DestroyRuntime") }}</p>
+
+<p>{{ languages( { "en": "en/JS_DestroyRuntime" } ) }}</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_dumpheap/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_dumpheap/index.html
new file mode 100644
index 0000000000..4a9b9b3dba
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_dumpheap/index.html
@@ -0,0 +1,110 @@
+---
+title: JS_DumpHeap
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DumpHeap
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_DumpHeap
+---
+<div>{{SpiderMonkeySidebar("JSAPI")}}</div>
+
+<p>{{ obsolete_header("jsapi38") }}</p>
+
+<p>{{ Jsapi_minversion_header("1.8") }}</p>
+
+<div class="summary"><code>DEBUG</code> のみ。ヒープに割り当てられたもののオブジェクトグラフをダンプします。</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="brush: cpp">bool
+JS_DumpHeap(JSRuntime *rt, FILE *fp, void* startThing, JSGCTraceKind kind,
+ void *thingToFind, size_t maxDepth, void *thingToIgnore);
+</pre>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Name</th>
+ <th>Type</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>cx</code></td>
+ <td>{{jsapixref("JSRuntime", "JSContext *")}}</td>
+ <td>Pointer to a JS context. Every <code>JSContext</code> is permanently associated with a <code>JSRuntime</code>; each <code>JSRuntime</code> contains a GC heap.</td>
+ </tr>
+ <tr>
+ <td><code>fp</code></td>
+ <td><code>FILE *</code></td>
+ <td>File for the dump output.</td>
+ </tr>
+ <tr>
+ <td><code>startThing</code></td>
+ <td><code>void *</code></td>
+ <td><code>NULL</code> or a pointer to a GC thing (use {{jsapixref("JS::Value", "JS::Value::toGCThing()")}} to obtain a pointer to pass here). When null, dump all things reachable from the runtime roots. When non-null, dump only things reachable from the object indicated.</td>
+ </tr>
+ <tr>
+ <td><code>startKind</code></td>
+ <td><code>JSGCTraceKind</code></td>
+ <td>Trace kind of <code>startThing</code>, if <code>startThing</code> is not null. Must be <code>JSTRACE_OBJECT</code> when <code>startThing</code> is null.</td>
+ </tr>
+ <tr>
+ <td><code>thingToFind</code></td>
+ <td><code>void *</code></td>
+ <td><code>NULL</code> or a pointer to a GC thing. If this is non-null, JS_DumpHeap only dumps paths in the object graph leading to the specified thing.</td>
+ </tr>
+ <tr>
+ <td><code>maxDepth</code></td>
+ <td><code>size_t</code></td>
+ <td>The upper bound on the number of edges to descend from the graph roots.</td>
+ </tr>
+ <tr>
+ <td><code>thingToIgnore</code></td>
+ <td><code>void *</code></td>
+ <td><code>NULL</code> or a pointer to a GC thing that will be ignored during graph traversal.</td>
+ </tr>
+ </tbody>
+</table>
+
+<pre class="brush: cpp">enum JSGCTraceKind
+{
+ // These trace kinds have a publicly exposed, although opaque, C++ type.
+ // Note: The order here is determined by our Value packing. Other users
+ // should sort alphabetically, for consistency.
+ JSTRACE_OBJECT = 0x00,
+ JSTRACE_STRING = 0x01,
+ JSTRACE_SYMBOL = 0x02,
+ JSTRACE_SCRIPT = 0x03,
+
+ // Shape details are exposed through JS_TraceShapeCycleCollectorChildren.
+ JSTRACE_SHAPE = 0x04,
+
+ // The kind associated with a nullptr.
+ JSTRACE_NULL = 0x06,
+
+ // A kind that indicates the real kind should be looked up in the arena.
+ JSTRACE_OUTOFLINE = 0x07,
+
+ // The following kinds do not have an exposed C++ idiom.
+ JSTRACE_BASE_SHAPE = 0x0F,
+ JSTRACE_JITCODE = 0x1F,
+ JSTRACE_LAZY_SCRIPT = 0x2F,
+ JSTRACE_TYPE_OBJECT = 0x3F,
+
+ JSTRACE_LAST = JSTRACE_TYPE_OBJECT
+};
+</pre>
+
+<h2 id="Description" name="Description">Description</h2>
+
+<p>See {{ Bug(378261) }} for detail.</p>
+
+<p>When tracing a thing, the GC needs to know about the layout of the object it is looking at. There are a fixed number of different layouts that the GC knows about. The "trace kind" is a static map which tells which layout a GC thing has.</p>
+
+<p>Although this map is public, the details are completely hidden. Not all of the matching C++ types are exposed, and those that are, are opaque.</p>
+
+<p>See {{jsapixref("JS::Value", "JS::Value::gcKind()")}} and {{jsapixref("JSTraceCallback")}} in &lt;codde&gt;Tracer.h&lt;/codde&gt; for more details.</p>
+
+<h2 id="See_Also" name="See_Also">See Also</h2>
+
+<ul>
+ <li>{{bug(378261)}}</li>
+ <li>{{bug(1122842)}}</li>
+</ul>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_evaluatescript/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_evaluatescript/index.html
new file mode 100644
index 0000000000..a58d781ab4
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_evaluatescript/index.html
@@ -0,0 +1,93 @@
+---
+title: JS EvaluateScript
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_EvaluateScript
+tags:
+ - JSAPI Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_EvaluateScript
+---
+<p>
+
+</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> »
+ <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> »
+ <code>JS_EvaluateScript</code></div>
+
+
+<p></p>
+
+<p>スクリプトのコンパイルおよび実行を行います。 <span class="comment">Compile and execute a script.</span></p>
+
+<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2>
+
+<pre class="eval"><a href="ja/JSBool">JSBool</a> <strong>JS_EvaluateScript</strong>(<a href="ja/JSContext">JSContext</a> *cx, <a href="ja/JSObject">JSObject</a> *obj,
+ const char *src, <a href="ja/UintN">uintN</a> length, const char *filename,
+ <a href="ja/UintN">uintN</a> lineno, <a href="ja/Jsval">jsval</a> *rval);
+
+<a href="ja/JSBool">JSBool</a> <strong>JS_EvaluateUCScript</strong>(<a href="ja/JSContext">JSContext</a> *cx, <a href="ja/JSObject">JSObject</a> *obj,
+ const <a href="ja/Jschar">jschar</a> *src, <a href="ja/UintN">uintN</a> length, const char *filename,
+ <a href="ja/UintN">uintN</a> lineno, <a href="ja/Jsval">jsval</a> *rval);
+</pre>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Name</th>
+ <th>Type</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>cx</code></td>
+ <td><code><a href="ja/JSContext">JSContext</a> *</code></td>
+ <td>スクリプトを実行するコンテキスト<span class="comment">The context in which to run the script.</span> {{ Jsapi-requires-request() }}</td>
+ </tr>
+ <tr>
+ <td><code>obj</code></td>
+ <td><code><a href="ja/JSObject">JSObject</a> *</code></td>
+ <td>スクリプトと関連付けるオブジェクト<span class="comment">Object with which the script is associated.</span></td>
+ </tr>
+ <tr>
+ <td><code>src</code></td>
+ <td><code>const char *</code><em>or</em> <code>const <a href="ja/Jschar">jschar</a> *</code></td>
+ <td>コンパイル・実行対象となるスクリプト文字列<span class="comment">String containing the script to compile and execute.</span></td>
+ </tr>
+ <tr>
+ <td><code>length</code></td>
+ <td><code>size_t</code></td>
+ <td><code>src</code>の文字列長<span class="comment">The length of &lt;code&gt;src&lt;/code&gt;, in characters.</span></td>
+ </tr>
+ <tr>
+ <td><code>filename</code></td>
+ <td><code>const char *</code></td>
+ <td>エラーメッセージ出力に利用されるスクリプトのファイル名またはそのURLを示す文字列。<span class="comment">Name of file or URL containing the script. Used to report filename or URL in error messages.</span></td>
+ </tr>
+ <tr>
+ <td><code>lineno</code></td>
+ <td><code><a href="ja/UintN">uintN</a></code></td>
+ <td>エラー発生時に出力される行数<span class="comment">Line number. Used to report the offending line in the file or URL if an error occurs.</span></td>
+ </tr>
+ <tr>
+ <td><code>rval</code></td>
+ <td><code><a href="ja/Jsval">jsval</a> *</code></td>
+ <td>実行結果の出力先。実行に成功したとき、<code>*rval</code>にはスクリプトの最終行の実行結果の値が格納されます。<span class="comment">Out parameter. On success, &lt;code&gt;*rval&lt;/code&gt; receives the value of the last-executed expression statement processed in the script.</span></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2>
+
+<p><code>JS_EvaluateScript</code>は、オブジェクト<code>obj</code>に結合する形でスクリプトをコンパイル・実行する関数です。実行が成功したとき、<code>rval</code>にスクリプトの最終行の実行結果の値へのポインタが格納されています。この関数のUnicode版として、<code>JS_EvaluateUCScript</code>が用意されています。 <span class="comment">&lt;code&gt;JS_EvaluateScript&lt;/code&gt; compiles and executes a script associated with a JS object, &lt;code&gt;obj&lt;/code&gt;. On successful completion, &lt;code&gt;rval&lt;/code&gt; is a pointer to a variable that holds the value from the last executed expression statement processed in the script. &lt;code&gt;JS_EvaluateUCScript&lt;/code&gt; is the Unicode version of the function.</span></p>
+
+<p><code>src</code>はスクリプト文字列、<code>length</code>はその文字列の長さをそれぞれ引数として取ります。 <span class="comment">&lt;code&gt;src&lt;/code&gt; is the string containing the text of the script. &lt;code&gt;length&lt;/code&gt; indicates the size of the text version of the script in characters.</span></p>
+
+<p><code>filename</code>はスクリプトの位置を示すファイル名またはURLを引数として取ります。ここで指定した情報は、コンパイルエラーが発生したときのエラーメッセージに利用されます。<code>lineno</code>も同様にエラーメッセージとして出力される行番号として利用されます。 <span class="comment">&lt;code&gt;filename&lt;/code&gt; is the name of the file (or URL) containing the script. This information is used in messages if an error occurs during compilation. Similarly, &lt;code&gt;lineno&lt;/code&gt; is used to report the line number of the script or file where an error occurred during compilation.</span></p>
+
+<p>スクリプトのコンパイルと実行が成功したとき、<code>JS_EvaluateScript</code>および<code>JS_EvaluateUCScript</code>は<code>JS_TRUE</code>を、失敗したときは<code>JS_FALSE</code>をそれぞれ返します。コンパイル・実行に失敗したとき、<code>*rval</code>の値は未定義とみなす必要があります。 <span class="comment">If a script compiles and executes successfully, &lt;code&gt;JS_EvaluateScript&lt;/code&gt; or &lt;code&gt;JS_EvaluateUCScript&lt;/code&gt; returns &lt;code&gt;JS_TRUE&lt;/code&gt;. Otherwise it returns &lt;code&gt;JS_FALSE&lt;/code&gt;. On failure, your application should assume that &lt;code&gt;*rval&lt;/code&gt; is undefined.</span></p>
+
+<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2>
+
+<p>{{ LXRSearch("ident", "i", "JS_EvaluateScript") }}<br>
+ {{ LXRSearch("ident", "i", "JS_EvaluateUCScript") }}</p>
+
+<p><a href="ja/JS_CompileFile">JS_CompileFile</a>, <a href="ja/JS_CompileScript">JS_CompileScript</a>, <a href="ja/JS_DecompileScript">JS_DecompileScript</a>, <a href="ja/JS_DestroyScript">JS_DestroyScript</a>, <a href="ja/JS_EvaluateScriptForPrincipals">JS_EvaluateScriptForPrincipals</a>, <a href="ja/JS_ExecuteScript">JS_ExecuteScript</a></p>
+
+<p>{{ languages( { "en": "en/JS_EvaluateScript" } ) }}</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getgcparameter/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getgcparameter/index.html
new file mode 100644
index 0000000000..1bfa969e7c
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getgcparameter/index.html
@@ -0,0 +1,323 @@
+---
+title: JS_GetGCParameter
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetGCParameter
+tags:
+ - JSAPI Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetGCParameter
+---
+<div>{{SpiderMonkeySidebar("JSAPI")}}</div>
+
+<div class="summary">
+<p>ガベージコレクションに関連するパフォーマンスパラメータを調整します。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="brush: cpp">uint32_t
+JS_GetGCParameter(JSRuntime *rt, JSGCParamKey key);
+
+void
+JS_SetGCParameter(JSRuntime *rt, JSGCParamKey key, uint32_t value);
+
+uint32_t
+JS_GetGCParameterForThread(JSContext *cx, JSGCParamKey key); // Added in SpiderMonkeySidebar 17
+
+void
+JS_SetGCParameterForThread(JSContext *cx, JSGCParamKey key, uint32_t value); // Added in SpiderMonkeySidebar 17
+</pre>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Name</th>
+ <th>Type</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>rt</code></td>
+ <td>{{jsapixref("JSRuntime", "JSRuntime *")}}</td>
+ <td>The runtime to configure.</td>
+ </tr>
+ <tr>
+ <td><code>cx</code></td>
+ <td>{{jsapixref("JSRuntime", "JSContext *")}}</td>
+ <td>The context to configure. {{ Jsapi-requires-request() }}</td>
+ </tr>
+ <tr>
+ <td><code>key</code></td>
+ <td><code>JSGCParamKey</code></td>
+ <td>Specifies which garbage collection parameter to get or set.</td>
+ </tr>
+ <tr>
+ <td><code>value</code></td>
+ <td><code>uint32_t</code></td>
+ <td><em>(<code>JS_SetGCParameter</code> only)</em> The value to assign to the parameter.</td>
+ </tr>
+ </tbody>
+</table>
+
+<pre class="brush: cpp">typedef enum JSGCParamKey {
+ JSGC_MAX_BYTES,
+ JSGC_MAX_MALLOC_BYTES,
+ JSGC_MAX_NURSERY_BYTES,
+ JSGC_BYTES,
+ JSGC_NUMBER,
+ JSGC_MODE,
+ JSGC_UNUSED_CHUNKS,
+ JSGC_TOTAL_CHUNKS,
+ JSGC_SLICE_TIME_BUDGET,
+ JSGC_MARK_STACK_LIMIT,
+ JSGC_HIGH_FREQUENCY_TIME_LIMIT,
+ JSGC_HIGH_FREQUENCY_LOW_LIMIT,
+ JSGC_HIGH_FREQUENCY_HIGH_LIMIT,
+ JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MAX,
+ JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MIN,
+ JSGC_LOW_FREQUENCY_HEAP_GROWTH,
+ JSGC_DYNAMIC_HEAP_GROWTH,
+ JSGC_DYNAMIC_MARK_SLICE,
+ JSGC_ALLOCATION_THRESHOLD,
+ JSGC_MIN_EMPTY_CHUNK_COUNT,
+ JSGC_MAX_EMPTY_CHUNK_COUNT,
+ JSGC_COMPACTION_ENABLED,
+ JSGC_ALLOCATION_THRESHOLD_FACTOR,
+ JSGC_ALLOCATION_THRESHOLD_FACTOR_AVOID_INTERRUPT,
+ JSGC_NURSERY_FREE_THRESHOLD_FOR_IDLE_COLLECTION,
+ JSGC_PRETENURE_THRESHOLD,
+ JSGC_PRETENURE_GROUP_THRESHOLD,
+ JSGC_NURSERY_FREE_THRESHOLD_FOR_IDLE_COLLECTION_PERCENT,
+ JSGC_MIN_NURSERY_BYTES,
+ JSGC_MIN_LAST_DITCH_GC_PERIOD,
+} JSGCParamKey;
+</pre>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Value (C++/JS Shell)</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>JSGC_MAX_BYTES</code> / <code>"maxBytes"</code></td>
+ <td>Maximum nominal heap before last ditch GC.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_MAX_MALLOC_BYTES</code> / <code>"maxMallocBytes"</code></td>
+ <td>Number of JS_malloc bytes before last ditch GC.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_MAX_NURSERY_BYTES</code> / <code>"maxNurseryBytes"</code></td>
+ <td>Maximum size the nursery may grow to, or 0 to disable generational GC.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_MIN_NURSERY_BYTES</code> / <code>"minNurseryBytes"</code></td>
+ <td>Minimum size the nursery may shrink to.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_BYTES</code> / <code>"gcBytes"</code></td>
+ <td>Amount of bytes allocated by the GC.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_NUMBER</code> / <code>"gcNumber"</code></td>
+ <td>Number of times GC has been invoked. Includes both major and minor GC.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_MODE</code> / <code>"mode"</code></td>
+ <td>
+ <p>Select GC mode:</p>
+
+ <dl>
+ <dt><code>JSGC_MODE_GLOBAL</code> (0)</dt>
+ <dd>The GC runs all objects are visited in a single<em>slice</em>.</dd>
+ <dt><code>JSGC_MODE_ZONE</code> (1)</dt>
+ <dd>The GC runs only the objects that belong to some<em>zones</em> are visited in a single<em>slice</em>.</dd>
+ <dt><code>JSGC_MODE_INCREMENTAL</code> (2)</dt>
+ <dd>The GC runs all objects are visited in multiple<em>slices</em>.</dd>
+ <dt><code>JSGC_MODE_ZONE_INCREMENTAL</code> (3)</dt>
+ <dd>The GC runs only the objects that belong to some<em>zones</em> are visited in multiple<em>slices</em>.</dd>
+ </dl>
+
+ <p>This does not affect generational GC, see <code>JSGC_MAX_NURSERY_BYTES</code></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>JSGC_UNUSED_CHUNKS</code> / <code>"unusedChunks"</code></td>
+ <td>Number of cached empty GC chunks.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_TOTAL_CHUNKS</code> / <code>"totalChunks"</code></td>
+ <td>Total number of allocated GC chunks.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_SLICE_TIME_BUDGET</code> / <code>"sliceTimeBudget"</code></td>
+ <td>Max milliseconds to spend in an incremental GC slice. 0 for infinite.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_MARK_STACK_LIMIT</code> / <code>"markStackLimit"</code></td>
+ <td>Maximum size the GC mark stack can grow to (units: entries).</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_HIGH_FREQUENCY_TIME_LIMIT</code> / <code>"highFrequencyTimeLimit"</code></td>
+ <td>GCs less than this far apart in time will be considered 'high-frequency GCs'.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_HIGH_FREQUENCY_LOW_LIMIT</code> / <code>"highFrequencyLowLimit"</code></td>
+ <td rowspan="4">
+ <p>Controls for dynamic heap growth. When the GC is in "high frequency" mode (see above) then, the heap will be allowed to grow between collections according to these four parameters. See ZoneHeapThreshold::computeZoneHeapGrowthFactorForHeapSize in GC.cpp for the details.</p>
+
+ <p>The first two parameters are in MB and the remaining two are in percentage of heap size.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>JSGC_HIGH_FREQUENCY_HIGH_LIMIT</code> / <code>"highFrequencyHighLimit"</code></td>
+ </tr>
+ <tr>
+ <td><code>JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MAX</code> / <code>"highFrequencyHeapGrowthMax"</code></td>
+ </tr>
+ <tr>
+ <td><code>JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MIN</code> / <code>"highFrequencyHeapGrowthMin"</code></td>
+ </tr>
+ <tr>
+ <td><code>JSGC_LOW_FREQUENCY_HEAP_GROWTH</code> / <code>"lowFrequencyHeapGrowth"</code></td>
+ <td>Heap growth percentage for low frequency GCs.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_DYNAMIC_HEAP_GROWTH</code> / <code>"dynamicHeapGrowth"</code></td>
+ <td>If false, the heap growth percentage is fixed at 300%. If true, it is determined based on whether GCs are high- or low- frequency.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_DYNAMIC_MARK_SLICE</code> / <code>"dynamicMarkSlice"</code></td>
+ <td>If true, high-frequency GCs will use a longer mark slice.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_ALLOCATION_THRESHOLD</code> / <code>"allocationThreshold"</code></td>
+ <td>Lower limit after which we limit the heap growth. The heap will be collected if it is greater than: <code>MAX(allocThreshold, lastSize) * thresholdFactor</code>, This establishes allocThreshold as a baseline or default heap size.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_ALLOCATION_THRESHOLD_FACTOR</code> / <code>"allocationThresholdFactor"</code></td>
+ <td rowspan="2">
+ <p>These thresholds (as percentages) are compared with the zone threshold (above) to decide when to begin an incremental collection. <code>JSGC_ALLOCATION_THRESHOLD_FACTOR_AVOID_INTERRUPT</code> is used when a GC is already in progress for other zones and we may wish to avoid interrupting it.</p>
+
+ <p>Additionally if a zone expands beyond the threshold without this factor, then it will be collected non-incrementally</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>JSGC_ALLOCATION_THRESHOLD_FACTOR_AVOID_INTERRUPT</code> / <code>"allocationThresholdfactorAvoidInterrupt"</code></td>
+ </tr>
+ <tr>
+ <td><code>JSGC_MIN_EMPTY_CHUNK_COUNT</code> / <code>"minEmptyChunkCount"</code></td>
+ <td>We try to keep at least this many unused chunks in the free chunk pool at all times, even after a shrinking GC.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_MAX_EMPTY_CHUNK_COUNT</code> / <code>"maxEmptyChunkCount"</code></td>
+ <td>We never keep more than this many unused chunks in the free chunk pool.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_COMPACTION_ENABLED</code> / <code>"compactingEnabled"</code></td>
+ <td>non-zero to enable compacting, zero to disable.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_NURSERY_FREE_THRESHOLD_FOR_IDLE_COLLECTION</code> / <code>"nurseryFreeThresholdForIdleCollection"</code></td>
+ <td>Collect the nursery in idle time if it has less than this many bytes of free space.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_NURSERY_FREE_THRESHOLD_FOR_IDLE_COLLECTION_PERCENT</code> / <code>"nurseryFreeThresholdForIdleCollectionPercent"</code></td>
+ <td>Collect the nursery in idle time if it has less than this percentage of capacity free (value from 0 - 99).</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_PRETENURE_THRESHOLD</code> / <code>"pretenureThreshold"</code></td>
+ <td>If this percentage of the nursery is tenured and the nursery is at least 4MB, then process object groups to look for pretenuring candidates.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_PRETENURE_GROUP_THRESHOLD</code> / <code>"pretenureGroupThreshold"</code></td>
+ <td>If more than this number of objects in a given object group are tenured, then pretenruing will be enabled for new objects in this group.</td>
+ </tr>
+ <tr>
+ <td><code>JSGC_MIN_LAST_DITCH_GC_PERIOD</code> / <code>"minLastDitchGCPeriod"</code></td>
+ <td>The minimum time to allow between triggering last ditch GCs in seconds.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><code>JS_GetGCParameter</code> returns the current parameter of the garbage collection.</p>
+
+<p>If successful, <code>JS_GetGCParameter</code> returns the current parameter.</p>
+
+<p><code>JS_SetGCParameter</code> ajusts the parameter of the garbage collection.</p>
+
+<h2 id="See_Also" name="See_Also">あわせて参照</h2>
+
+<ul>
+ <li>{{ LXRSearch("ident", "i", "JS_GetGCParameter") }}</li>
+ <li>{{ LXRSearch("ident", "i", "JS_SetGCParameter") }}</li>
+ <li>{{bug(474801)}}
+ <ul>
+ <li><code>JSGC_BYTES</code></li>
+ <li><code>JSGC_NUMBER</code></li>
+ </ul>
+ </li>
+ <li>{{bug(474497)}}
+ <ul>
+ <li><code>JSGC_MAX_CODE_CACHE_BYTES</code></li>
+ <li>This option no-longer exists</li>
+ <li><code>JS_GetGCParameterForThread</code></li>
+ <li><code>JS_SetGCParameterForThread</code></li>
+ </ul>
+ </li>
+ <li>{{bug(624229)}}
+ <ul>
+ <li><code>JSGC_MODE</code></li>
+ </ul>
+ </li>
+ <li>{{bug(631733)}}
+ <ul>
+ <li><code>JSGC_UNUSED_CHUNKS</code></li>
+ </ul>
+ </li>
+ <li>{{bug(674480)}}
+ <ul>
+ <li><code>JSGC_TOTAL_CHUNKS</code></li>
+ </ul>
+ </li>
+ <li>{{bug(641025)}}
+ <ul>
+ <li><code>JSGC_SLICE_TIME_BUDGET</code></li>
+ </ul>
+ </li>
+ <li>{{bug(673551)}}
+ <ul>
+ <li><code>JSGC_MARK_STACK_LIMIT</code></li>
+ </ul>
+ </li>
+ <li>{{bug(765435)}}
+ <ul>
+ <li><code>JSGC_HIGH_FREQUENCY_TIME_LIMIT</code></li>
+ <li><code>JSGC_HIGH_FREQUENCY_LOW_LIMIT</code></li>
+ <li><code>JSGC_HIGH_FREQUENCY_HIGH_LIMIT</code></li>
+ <li><code>JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MAX</code></li>
+ <li><code>JSGC_HIGH_FREQUENCY_HEAP_GROWTH_MIN</code></li>
+ <li><code>JSGC_LOW_FREQUENCY_HEAP_GROWTH</code></li>
+ <li><code>JSGC_DYNAMIC_HEAP_GROWTH</code></li>
+ <li><code>JSGC_DYNAMIC_MARK_SLICE</code></li>
+ </ul>
+ </li>
+ <li>{{bug(800063)}}
+ <ul>
+ <li><code>JSGC_ALLOCATION_THRESHOLD</code></li>
+ </ul>
+ </li>
+ <li>{{bug(871005)}}
+ <ul>
+ <li><code>JSGC_DECOMMIT_THRESHOLD</code></li>
+ <li>This option is no-longer exists</li>
+ </ul>
+ </li>
+ <li>{{bug(1017141)}}
+ <ul>
+ <li><code>JSGC_MIN_EMPTY_CHUNK_COUNT</code></li>
+ <li><code>JSGC_MAX_EMPTY_CHUNK_COUNT</code></li>
+ </ul>
+ </li>
+</ul>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntime/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntime/index.html
new file mode 100644
index 0000000000..36a7593d57
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntime/index.html
@@ -0,0 +1,47 @@
+---
+title: JS GetRuntime
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntime
+tags:
+ - JSAPI Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntime
+---
+<p>
+
+</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> »
+ <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> »
+ <code>JS_GetRuntime</code></div>
+
+
+
+<p></p>
+
+<p><code>JSRuntime</code>へのポインタを取得します。 <span class="comment">Retrieves a pointer to the &lt;code&gt;JSRuntime&lt;/code&gt;.</span></p>
+
+<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2>
+
+<pre class="eval"><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> * <strong>JS_GetRuntime</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *cx);
+</pre>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Name</th>
+ <th>Type</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>cx</code></td>
+ <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> *</code></td>
+ <td>コンテキスト</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2>
+
+<p><code>JS_GetRuntime</code>は、<code>JSContext</code> <code>cx</code>と関連付けられた<code>JSRuntime</code>へのポインタを取得する関数です。各コンテキストは、その生成時に指定した (<code><a href="/ja/JS_NewContext" title="ja/JS_NewContext">JS_NewContext</a></code>を参照) <code>JSRuntime</code>と関連付けられており、<code>JS_GetRuntime</code>を使うことでその関連付けを取得することができます。 <span class="comment">&lt;code&gt;JS_GetRuntime&lt;/code&gt; retrieves a pointer to the &lt;code&gt;JSRuntime&lt;/code&gt; with which a specified &lt;code&gt;JSContext&lt;/code&gt;, &lt;code&gt;cx&lt;/code&gt;, is associated. Each context is associated with a particular &lt;code&gt;JSRuntime&lt;/code&gt; when it is created (see &lt;code&gt;<a href="/ja/JS_NewContext">JS_NewContext</a>&lt;/code&gt;); &lt;code&gt;JS_GetRuntime&lt;/code&gt; provides a convenient, programmatic way to look up the association.</span></p>
+
+<p>{{ LXRSearch("ident", "i", "JS_GetRuntime") }}</p>
+
+<p>{{ languages( { "en": "en/JS_GetRuntime" } ) }}</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntimeprivate/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntimeprivate/index.html
new file mode 100644
index 0000000000..c4f3f7937b
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_getruntimeprivate/index.html
@@ -0,0 +1,59 @@
+---
+title: JS GetRuntimePrivate
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntimePrivate
+tags:
+ - JSAPI Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_GetRuntimePrivate
+---
+<p>
+
+</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> »
+ <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> »
+ <code>JS_GetRuntimePrivate</code></div>
+
+
+<p></p>
+
+<p><code>JSRuntime</code>オブジェクトと関連付けられたアプリケーション固有のフィールドにアクセスします。 <span class="comment">Access a &lt;code&gt;JSRuntime&lt;/code&gt; field for application-specific data.</span></p>
+
+<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2>
+
+<pre class="eval">void * <strong>JS_GetRuntimePrivate</strong>(<a href="ja/JSRuntime">JSRuntime</a> *rt);
+
+void <strong>JS_SetRuntimePrivate</strong>(<a href="ja/JSRuntime">JSRuntime</a> *rt, void *data);
+</pre>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Name</th>
+ <th>Type</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>rt</code></td>
+ <td><code><a href="ja/JSRuntime">JSRuntime</a> *</code></td>
+ <td>JavaScriptランタイム環境<span class="comment">Any JS runtime.</span></td>
+ </tr>
+ <tr>
+ <td><code>data</code></td>
+ <td><code>void *</code></td>
+ <td><em>(<code>JS_SetRuntimePrivate</code>のみ)</em>ランタイム<code>rt</code>と関連付けるアプリケーション固有のデータへのポインタ <span class="comment">''(in &lt;code&gt;JS_SetRuntimePrivate&lt;/code&gt;)'' Pointer to application-defined data to be associated with the runtime &lt;code&gt;rt&lt;/code&gt;.</span></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2>
+
+<p>各<code>JSRuntime</code>内には、アプリケーション内で用いる任意のデータを指し示す<code>void *</code>型のフィールドが存在します。このフィールドは、コールバック関数が容易にアクセスできる領域であるため、その中でのデータ格納に有用に使えます。<code>JS_GetRuntimePrivate</code>でフィールドの値を取得し、<code>JS_SetRuntimePrivate</code>で値を設定します。フィールドの初期値は<code>NULL</code>に設定されています。 <span class="comment">Each &lt;code&gt;JSRuntime&lt;/code&gt; has a field of type &lt;code&gt;void *&lt;/code&gt; which the application may use for any purpose. It is especially useful for storing data which callbacks may then easily access. &lt;code&gt;JS_GetRuntimePrivate&lt;/code&gt; gets the value of this field and &lt;code&gt;JS_SetRuntimePrivate&lt;/code&gt; sets it. The field is initially &lt;code&gt;NULL&lt;/code&gt;.</span></p>
+
+<p>このプライベートなデータのメモリ管理はアプリケーション側の責任になります。JavaScriptエンジン自体がこの領域を利用することはありません。 <span class="comment">Memory management for this private data is the application's responsibility. The JavaScript engine itself never uses it.</span></p>
+
+<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2>
+
+<p>{{ LXRSearch("ident", "i", "JS_GetRuntimePrivate") }}</p>
+
+<p><a href="ja/JS_GetContextPrivate">JS_GetContextPrivate</a>, <a href="ja/JS_SetContextPrivate">JS_SetContextPrivate</a>, <a href="ja/JS_GetPrivate">JS_GetPrivate</a>, <a href="ja/JS_SetPrivate">JS_SetPrivate</a>, <a href="ja/JS_GetInstancePrivate">JS_GetInstancePrivate</a></p>
+
+<p>{{ languages( { "en": "en/JS_GetRuntimePrivate" } ) }}</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_init/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_init/index.html
new file mode 100644
index 0000000000..1d52ec7034
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_init/index.html
@@ -0,0 +1,35 @@
+---
+title: JS_Init
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Init
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Init
+---
+<div>{{obsolete_header}}</div>
+
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+
+<pre class="syntaxbox"><a href="/ja/docs/JSRuntime" title="JSRuntime">JSRuntime</a> * <strong>JS_Init</strong>(<a href="/ja/docs/jsint" title="jsint">uint32</a> maxbytes);
+</pre>
+
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th>名称</th>
+ <th>型</th>
+ <th>説明</th>
+ </tr>
+</thead>
+<tbody>
+ <tr>
+ <td><code>maxbytes</code></td>
+ <td><code><a href="/ja/docs/jsint" title="jsint">uint32</a></code></td>
+ <td>ガベージコレクション実行後に割り当てられたバイト数</td>
+ </tr>
+ </tbody>
+</table>
+
+
+<h2 id="Description" name="Description">説明</h2>
+<p><code>JS_Init</code> は廃止されました。替わりに <code><a href="/ja/docs/JS_NewRuntime" title="JS_NewRuntime">JS_NewRuntime</a></code> を使用して下さい。</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_lock/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_lock/index.html
new file mode 100644
index 0000000000..1ffb9dee10
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_lock/index.html
@@ -0,0 +1,37 @@
+---
+title: JS_Lock
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Lock
+tags:
+ - JSAPI_Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_Lock
+---
+<div>
+ {{obsolete_header("jsapi12")}}</div>
+<p>JS ランタイム環境をロックします。</p>
+<h2 id="Syntax" name="Syntax">構文</h2>
+<pre class="syntaxbox">void <strong>JS_Lock</strong>(<a href="/ja/docs/JSRuntime" title="JSRuntime">JSRuntime</a> *rt);
+</pre>
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th>名称</th>
+ <th>型</th>
+ <th>説明</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>rt</code></td>
+ <td><code><a href="/ja/docs/JSRuntime" title="JSRuntime">JSRuntime</a> *</code></td>
+ <td>ロックするランタイムへのポインタ</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Description" name="Description">説明</h2>
+<p><code>JS_Lock</code> は非推奨 API です。使用しないで下さい。</p>
+<h2 id="See_also" name="See_also">関連情報</h2>
+<ul>
+ <li>{{LXRSearch("ident", "i", "JS_Lock")}}</li>
+ <li><a href="/ja/docs/JS_GetRuntime" title="JS_GetRuntime"><code>JS_GetRuntime</code></a> 、 <a href="/ja/docs/SpiderMonkey/JSAPI_Reference/JS_Unlock"><code>JS_Unlock</code></a></li>
+</ul>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newcontext/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newcontext/index.html
new file mode 100644
index 0000000000..ab77638f70
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newcontext/index.html
@@ -0,0 +1,93 @@
+---
+title: JS NewContext
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewContext
+tags:
+ - JSAPI Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewContext
+---
+<p>
+
+</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> »
+ <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> »
+ <code>JS_NewContext</code></div>
+
+<p></p>
+
+<p>新たなJavaScriptコンテキストを生成します。 <span class="comment">Creates a new JavaScript context.</span></p>
+
+<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2>
+
+<p><span class="comment">= Syntax =</span></p>
+
+<pre class="eval"><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a> * <strong>JS_NewContext</strong>(<a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> *rt, size_t stackchunksize);
+</pre>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Name</th>
+ <th>Type</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>rt</code></td>
+ <td><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> *</code></td>
+ <td>コンテキストの親となるランタイムを指定します。JavaScriptのオブジェクト、関数、文字列、数値は<code>JSRuntime</code>内のコンテキスト内で共有されますが、<code>JSRuntime</code>をまたぐことはありません。
+ <p><span class="comment">Parent runtime for the new context. JavaScript objects, functions, strings, and numbers may be shared among the contexts in a &lt;code&gt;JSRuntime&lt;/code&gt;, but they cannot be shared across &lt;code&gt;JSRuntime&lt;/code&gt;s.</span></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>stackchunksize</code></td>
+ <td><code>size_t</code></td>
+ <td>
+ <p>各スタック領域のサイズをバイトで指定します。標準的には<code>8192</code>が適切な値であり、大抵の場合において調節すべきでないパラメータです。 <span class="comment">The size, in bytes, of each "stack chunk". This is a memory management tuning parameter which most users should not adjust. &lt;code&gt;8192&lt;/code&gt; is a good default value.</span></p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2>
+
+<p><span class="comment">= Description =</span> スクリプトの実行および値の保持に利用するコンテキストを新規に生成する関数です。各スクリプトは独自のコンテキスト上で実行され、各コンテキストは特定の<code>JSRuntime</code>オブジェクト<code>rt</code>と関連づけられています。 <span class="comment">Creates a new JavaScript context for executing scripts and examining JavaScript values. Each script runs in its own context, and each context must be associated with a specified &lt;code&gt;JSRuntime&lt;/code&gt;, &lt;code&gt;rt&lt;/code&gt;.</span></p>
+
+<p><code>JS_NewContext</code>は、成功したとき新たなコンテキストへのポインタを返します。失敗したときは<code>NULL</code>を返します。 <span class="comment">On success, &lt;code&gt;JS_NewContext&lt;/code&gt; returns a pointer to the new context. Otherwise it returns &lt;code&gt;NULL&lt;/code&gt;.</span></p>
+
+<p>この関数の呼び元は、コンテキストを使い終わったら<code><a href="/ja/JS_DestroyContext" title="ja/JS_DestroyContext">JS_DestroyContext</a></code>を実行しなければなりません。<code>JSRuntime</code>を解放する前に、その<code>JSContext</code>をすべて解放する必要があります。 <span class="comment">The caller must call &lt;code&gt;<a href="/ja/JS_DestroyContext">JS_DestroyContext</a>&lt;/code&gt; when it is done using the context. Before a &lt;code&gt;JSRuntime&lt;/code&gt; may be destroyed, all the &lt;code&gt;JSContext&lt;/code&gt;s associated with it must be destroyed.</span></p>
+
+<p><code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>を有効にしたビルドでは、ある<code>JSContext</code>を同時にアクセスできるスレッドは一つだけです。新規の<code>JSContext</code>は、初期状態で呼び元のスレッドと関連付けられます。コンテキストがあるスレッドと関連付けられている間は、他のスレッドからそれを利用したり解放することはできません。<code>JSContext</code>を別のスレッドに移動する場合は、<code><a href="/ja/JS_ClearContextThread" title="ja/JS_ClearContextThread">JS_ClearContextThread</a></code>と<code><a href="/ja/JS_SetContextThread" title="ja/JS_SetContextThread">JS_SetContextThread</a></code>を利用してください。 <span class="comment">In a &lt;code&gt;<a href="/ja/JS_THREADSAFE">JS_THREADSAFE</a>&lt;/code&gt; build, only one thread may use a &lt;code&gt;JSContext&lt;/code&gt; at a time. The new &lt;code&gt;JSContext&lt;/code&gt; is initially associated with the calling thread. As long as it stays associated with that thread, no other thread may use it or destroy it. A &lt;code&gt;JSContext&lt;/code&gt; may be transferred from one thread to another by calling &lt;code&gt;<a href="/ja/JS_ClearContextThread">JS_ClearContextThread</a>&lt;/code&gt; and &lt;code&gt;<a href="/ja/JS_SetContextThread">JS_SetContextThread</a>&lt;/code&gt;.</span></p>
+
+<p>新たに生成した<code>JSContext</code>は、初期状態においてグローバルオブジェクトを持ちません。 <span class="comment">The new &lt;code&gt;JSContext&lt;/code&gt; initially has no global object.</span></p>
+
+<h3 id=".E6.B3.A8.E8.A8.98" name=".E6.B3.A8.E8.A8.98">注記</h3>
+
+<p><span class="comment">== Notes ==</span> 一度生成されたコンテキストは異なるスクリプトやJSAPI呼び出しのために複数回利用される可能性があります。具体的には、Webブラウザが各HTMLに対応する独立したコンテキストを生成したときに、ページ内のすべてのスクリプトは同じコンテキストを用いて実行されるといったシナリオが考えられます。 <span class="comment">Once created, a context can be used any number of times for different scripts or JSAPI queries. For example, a browser would create a separate context for each HTML page; every script in the page would use the same context.</span></p>
+
+<p>新規コンテキストは、<code>Object</code>、<code>Date</code>、<code>Array</code>といった標準的なグローバルオブジェクトを一切保持していません。それらを利用するには、<code><a href="/ja/JS_InitStandardClasses" title="ja/JS_InitStandardClasses">JS_InitStandardClasses</a></code>を呼び出す必要があります。JSAPIを利用するアプリケーションで独自の関数やクラスを提供したい場合には、<code><a href="/ja/JS_GetGlobalObject" title="ja/JS_GetGlobalObject">JS_GetGlobalObject</a></code>を使ってそのコンテキストのグローバルオブジェクトを取得し、<code><a href="/ja/JS_DefineFunctions" title="ja/JS_DefineFunctions">JS_DefineFunctions</a></code>および<code><a href="/ja/JS_InitClass" title="ja/JS_InitClass">JS_InitClass</a></code>をそれに適用することで独自のグローバル関数やクラスをコンテキストに追加できます。 <span class="comment">The new context initially does not contain any globals, even standard globals such as &lt;code&gt;Object&lt;/code&gt;, &lt;code&gt;Date&lt;/code&gt;, and &lt;code&gt;Array&lt;/code&gt;. To create them, call &lt;code&gt;<a href="/ja/JS_InitStandardClasses">JS_InitStandardClasses</a>&lt;/code&gt;. A JSAPI application typically also provides some custom functions and classes. Use &lt;code&gt;<a href="/ja/JS_GetGlobalObject">JS_GetGlobalObject</a>&lt;/code&gt; to get a context's global object. Use &lt;code&gt;&lt;/code&gt; and &lt;code&gt;<a href="/ja/JS_InitClass">JS_InitClass</a>&lt;/code&gt; to add custom global functions and classes to the context.</span></p>
+
+<p><code>stackchunksize</code>は、JavaScriptのスタックサイズを調節するものではありません(JSAPIでは、スタック長を調節するインタフェースを提供していません)。<code>stackchunksize</code>に大きい値を設定するのは誤った方法です。<code>DEBUG</code>ビルドにおいて、<code>stackchunksize</code>を大きくすると性能が著しく劣化します。一般的には<code>8192</code>が推奨されます。 <span class="comment">The &lt;code&gt;stackchunksize&lt;/code&gt; parameter does not control the JavaScript stack size. (The JSAPI does not provide a way to adjust the stack depth limit.) Passing a large number for &lt;code&gt;stackchunksize&lt;/code&gt; is a mistake. In a &lt;code&gt;DEBUG&lt;/code&gt; build, large chunk sizes can degrade performance dramatically. The usual value of &lt;code&gt;8192&lt;/code&gt; is recommended.</span></p>
+
+<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2>
+
+<p><span class="comment">= See Also =</span></p>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <td>Groups</td>
+ <td><a href="/ja/JSAPI_Reference#Functions" title="ja/JSAPI_Reference#Functions">Functions</a></td>
+ </tr>
+ <tr>
+ <td>Documents</td>
+ <td>{{ LXRSearch("ident", "i", "JS_NewContext", "LXR ID Search") }}</td>
+ </tr>
+ <tr>
+ <td>Entries</td>
+ <td><a href="/ja/JS_ContextIterator" title="ja/JS_ContextIterator">JS_ContextIterator</a>,
+ <p><a href="/ja/JS_DestroyContext" title="ja/JS_DestroyContext">JS_DestroyContext</a>, <a href="/ja/JS_SetContextCallback" title="ja/JS_SetContextCallback">JS_SetContextCallback</a></p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>{{ languages( { "en": "en/JS_NewContext" } ) }}</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newobject/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newobject/index.html
new file mode 100644
index 0000000000..8efb4676c7
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newobject/index.html
@@ -0,0 +1,104 @@
+---
+title: JS_NewObject
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewObject
+tags:
+ - JSAPI Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewObject
+---
+<p>
+
+</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> »
+ <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> »
+ <code>JS_NewObject</code></div>
+
+<p></p>
+
+<p>{{ 英語版章題("Summary") }}</p>
+
+<h2 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h2>
+
+<p>オブジェクトのインスタンスを生成する関数です。<span class="comment">Instantiates a new object.</span></p>
+
+<p>{{ 英語版章題("Syntax") }}</p>
+
+<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2>
+
+<pre>JSObject * JS_NewObject(JSContext *cx, JSClass *clasp, JSObject *proto,
+ JSObject *parent);
+</pre>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Name</th>
+ <th>Type</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>cx</code></td>
+ <td><code>JSContext *</code></td>
+ <td>ランタイム環境へのアクセスに用いる JSContext ポインタ<span class="comment">Pointer to a JS context from which to derive runtime information.</span></td>
+ </tr>
+ <tr>
+ <td><code>clasp</code></td>
+ <td><code>JSClass *</code></td>
+ <td>オブジェクト生成に用いるクラスへのポインタ<span class="comment">Pointer to the class to use for the new object.</span></td>
+ </tr>
+ <tr>
+ <td><code>proto</code></td>
+ <td><code>JSObject *</code></td>
+ <td>クラスとして用いる prototype オブジェクトへのポインタ<span class="comment">Pointer to the prototype object to use for the new class.</span></td>
+ </tr>
+ <tr>
+ <td><code>parent</code></td>
+ <td><code>JSObject *</code></td>
+ <td>新規オブジェクトの<code>__parent__</code>プロパティになる親オブジェクトへのポインタ。<span class="comment">Pointer to which to set the new object's &lt;code&gt;__parent__&lt;/code&gt; property.</span></td>
+ </tr>
+ </tbody>
+</table>
+
+<p>{{ 英語版章題("Description") }}</p>
+
+<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2>
+
+<p><code>JS_NewObject</code>は、引数に指定したクラス、プロトタイプ、親オブジェクトを元にしてオブジェクトのインスタンスを生成する関数です。<code>cx</code>は、新規オブジェクトを生成するランタイム環境の子となるコンテキストへのポインタです。<code>clasp</code>は、<code>finalize</code>のような内部で定義されたメソッドを使う既存クラスへのポインタです。<code>proto</code>は、新規に生成するオブジェクトのプロトタイプとなるオブジェクトへのポインタです。 <span class="comment">&lt;code&gt;JS_NewObject&lt;/code&gt; instantiates a new object based on a specified class, prototype, and parent object. &lt;code&gt;cx&lt;/code&gt; is a pointer to a context associated with the runtime in which to establish the new object. &lt;code&gt;clasp&lt;/code&gt; is a pointer to an existing class to use for internal methods, such as &lt;code&gt;finalize&lt;/code&gt;. &lt;code&gt;proto&lt;/code&gt; is an optional pointer to the prototype object with which to associate the new object.</span></p>
+
+<p>Set <code>proto</code> to <code>NULL</code> to force JS to assign a prototype object for you. In this case, <code>JS_NewObject</code> attempts to assign the new object the prototype object belonging to <code>clasp</code>, if one is defined there. Otherwise, it creates an empty object stub for the prototype.</p>
+
+<p>引数<code>parent</code>は、新たに生成したオブジェクトをプロパティとして持つ親オブジェクトを指定するものです。<code>__parent__</code>プロパティを設定したくない時は、<code>parent</code>に<code>NULL</code>を指定してください。 <span class="comment">&lt;code&gt;parent&lt;/code&gt; is an optional pointer to an existing object to which to set the new object's parent object property. You can set parent to &lt;code&gt;NULL&lt;/code&gt; if you do not want to set the &lt;code&gt;__parent__&lt;/code&gt; property.</span></p>
+
+<p><code>JS_NewObject</code>が成功したとき、その返値は生成したオブジェクトのインスタンスへのポインタになり、失敗した時はNULLを返します。 <span class="comment">On success, &lt;code&gt;JS_NewObject&lt;/code&gt; returns a pointer to the newly instantiated object. Otherwise it returns &lt;code&gt;NULL&lt;/code&gt;.</span></p>
+
+<p>{{ 英語版章題("Notes") }}</p>
+
+<h3 id=".E6.B3.A8.E8.A8.98" name=".E6.B3.A8.E8.A8.98">注記</h3>
+
+<p>既存オブジェクトのプロパティとなるオブジェクトを生成するには、<code><a href="ja/JS_DefineObject">JS_DefineObject</a></code>を用いてください。 <span class="comment">To create a new object that is a property of an existing object, use &lt;code&gt;JS_DefineObject&lt;/code&gt;.</span></p>
+
+<p>{{ 英語版章題("See Also") }}</p>
+
+<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <td>Groups</td>
+ <td><a href="ja/JSAPI_Reference#Functions">Functions</a></td>
+ </tr>
+ <tr>
+ <td>Documents</td>
+ <td>{{ LXRSearch("ident", "i", "JS_NewObject", "LXR ID Search") }}</td>
+ </tr>
+ <tr>
+ <td>Entries</td>
+ <td>
+ <p><a href="ja/JSClass">JSClass</a>, <a href="ja/JS_ConstructObject">JS_ConstructObject</a>, <a href="ja/JS_DefineObject">JS_DefineObject</a>, <a href="ja/JS_GetFunctionObject">JS_GetFunctionObject</a>, <a href="ja/JS_NewArrayObject">JS_NewArrayObject</a>, <a href="ja/JS_ValueToObject">JS_ValueToObject</a></p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<div class="noinclude"> </div>
+
+<p>{{ languages( { "en": "en/JS_NewObject" } ) }}</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newruntime/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newruntime/index.html
new file mode 100644
index 0000000000..5db8397cb9
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_newruntime/index.html
@@ -0,0 +1,52 @@
+---
+title: JS NewRuntime
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewRuntime
+tags:
+ - JSAPI Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_NewRuntime
+---
+<p></p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> »
+ <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> »
+ <code>JS_NewRuntime</code></div>
+<p></p>
+
+<p>JavaScript ランタイムの初期化を行います。 {{ 英語版章題("Syntax") }}</p>
+
+<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2>
+
+<pre class="eval"><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a> * <strong>JS_NewRuntime</strong>(uint32 maxbytes);
+</pre>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Name</th>
+ <th>Type</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>maxbytes</code></td>
+ <td><code>uint32</code></td>
+ <td>ガベージコレクション動作後の最大メモリ使用量<span class="comment">Maximum number of allocated bytes after which garbage collection is run.</span></td>
+ </tr>
+ </tbody>
+</table>
+
+<p>{{ 英語版章題("Description") }}</p>
+
+<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2>
+
+<p><code>JS_NewRuntime</code>は、JavaScriptランタイム環境の初期化を行う関数です。他のJSAPI関数を使うには前もって必ず<code>JS_NewRuntime</code>を呼ぶことになります。<code>JS_NewRuntime</code>は、<code>JSRuntime</code>に用いるメモリ領域を確保し、ランタイム内の初期化を行います。引数<code>maxbytes</code>で、ガベージコレクションが動作した後の最大メモリ使用量を指定します。 <span class="comment">&lt;code&gt;JS_NewRuntime&lt;/code&gt; initializes the JavaScript runtime environment. Call &lt;code&gt;JS_NewRuntime&lt;/code&gt; before making any other API calls. &lt;code&gt;JS_NewRuntime&lt;/code&gt; allocates memory for the &lt;code&gt;JSRuntime&lt;/code&gt; and initializes certain internal runtime structures. &lt;code&gt;maxbytes&lt;/code&gt; specifies the number of allocated bytes after which garbage collection is run.</span></p>
+
+<p>一般的に、ほとんどのアプリケーションで必要とされる<code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a></code>は一つのみです。<code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>を有効にしたビルドでは、<code>JSRuntime</code>を共有する<code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSContext</a></code>を各スレッドごとに一つ用意することで、複数スレッドからランタイムにアクセスすることが可能です。複数のランタイムが必要になるのは、JavaScriptの値やオブジェクト、関数をスレッド間で完全に分離させたいときだけです。 <span class="comment">Generally speaking, most applications need only one &lt;code&gt;<a href="/ja/JSRuntime">JSRuntime</a>&lt;/code&gt;. In a &lt;code&gt;<a href="/ja/JS_THREADSAFE">JS_THREADSAFE</a>&lt;/code&gt; build, each runtime is capable of handling multiple execution threads, using one &lt;code&gt;<a href="/ja/JSContext">JSContext</a>&lt;/code&gt; per thread, sharing the same &lt;code&gt;JSRuntime&lt;/code&gt;. You only need multiple runtimes if your application requires completely separate JS engines that cannot share values, objects, and functions.</span></p>
+
+<p><code>JS_NewRuntime</code>が成功したときは、新たに生成されたランタイムへのポインタがその返り値となり、失敗した時は<code>NULL</code>を返します。<code>JS_NewRuntime</code>の呼び出し元は、後で必ずそのランタイムを<code><a href="/ja/JS_DestroyRuntime" title="ja/JS_DestroyRuntime">JS_DestroyRuntime</a></code>を用いて破棄しなければなりません。 <span class="comment">On success, &lt;code&gt;JS_NewRuntime&lt;/code&gt; returns a pointer to the newly created runtime, which the caller must later destroy using &lt;code&gt;<a href="/ja/JS_DestroyRuntime">JS_DestroyRuntime</a>&lt;/code&gt;. Otherwise it returns &lt;code&gt;NULL&lt;/code&gt;.</span> {{ 英語版章題("Notes") }}</p>
+
+<h3 id=".E6.B3.A8.E8.A8.98" name=".E6.B3.A8.E8.A8.98">注記</h3>
+
+<p>一般的には、<code>JS_NewRuntime</code>はアプリケーション内でまず最初に実行し、<code><a href="/ja/JS_DestroyRuntime" title="ja/JS_DestroyRuntime">JS_DestroyRuntime</a></code>や<code><a href="/ja/JS_ShutDown" title="ja/JS_ShutDown">JS_ShutDown</a></code>を終了時に呼ぶことになります。 <span class="comment">Ordinarily, &lt;code&gt;JS_NewRuntime&lt;/code&gt; should be the first JSAPI call in an application, and &lt;code&gt;<a href="/ja/JS_DestroyRuntime">JS_DestroyRuntime</a>&lt;/code&gt; and &lt;code&gt;<a href="/ja/JS_ShutDown">JS_ShutDown</a>&lt;/code&gt; should be the last ones.</span></p>
+
+<p>{{ LXRSearch("ident", "i", "JS_NewRuntime") }}</p>
+
+<p>{{ languages( { "en": "en/JS_NewRuntime" } ) }}</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_setgczeal/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_setgczeal/index.html
new file mode 100644
index 0000000000..0be58ee8dc
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_setgczeal/index.html
@@ -0,0 +1,141 @@
+---
+title: JS_SetGCZeal
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetGCZeal
+tags:
+ - JSAPI Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_SetGCZeal
+---
+<div>{{SpiderMonkeySidebar("JSAPI")}}</div>
+
+<div>{{jsapi_minversion_header("1.8")}}</div>
+
+<div class="summary">
+<p>GC の活動量、JSAPI アプリケーションの GC 関連のバグを見つけるのに役立つテストおよびデバッグ機能を有効にします。</p>
+</div>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="brush: cpp">void
+JS_SetGCZeal(JSContext *cx, uint8_t zeal, uint32_t frequency);
+</pre>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Name</th>
+ <th>Type</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>cx</code></td>
+ <td>{{jsapixref("JSRuntime", "JSContext *")}}</td>
+ <td>A context. The GC zeal level of the associated {{jsapixref("JSRuntime")}} is set.</td>
+ </tr>
+ <tr>
+ <td><code>zeal</code></td>
+ <td><code>uint8_t</code></td>
+ <td>The desired level of garbage collection.</td>
+ </tr>
+ <tr>
+ <td><code>frequency</code></td>
+ <td><code>uint32_t</code></td>
+ <td>With some zeal levels, a GC is triggered every <code>frequency</code> allocations.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p><strong><code>JS_SetGCZeal</code></strong> sets the level of additional garbage collection to perform for a runtime, for the purpose of finding or reproducing bugs.</p>
+
+<p>There are several different levels which have different functions:</p>
+
+<table class="fullwidth-table">
+ <thead>
+ <tr>
+ <th scope="col">Zeal level</th>
+ <th scope="col">Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>0</td>
+ <td>Normal amount of collection.  The default: no additional collections are performed.</td>
+ </tr>
+ <tr>
+ <td>1</td>
+ <td>Collect when roots are added or removed.</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Collect when every <code>frequency</code> allocations.</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>Collect on window paints.</td>
+ </tr>
+ <tr>
+ <td>4</td>
+ <td>Verify pre write barriers between instructions.</td>
+ </tr>
+ <tr>
+ <td>5</td>
+ <td>Verify pre write barriers between window paints.</td>
+ </tr>
+ <tr>
+ <td>6</td>
+ <td>Verify stack rooting.</td>
+ </tr>
+ <tr>
+ <td>7</td>
+ <td>Collect the nursery every <code>frequency</code> nursery allocations.</td>
+ </tr>
+ <tr>
+ <td>8</td>
+ <td>Incremental GC in two slices: 1) mark roots 2) finish collection.</td>
+ </tr>
+ <tr>
+ <td>9</td>
+ <td>Incremental GC in two slices: 1) mark all 2) new marking and finish.</td>
+ </tr>
+ <tr>
+ <td>10</td>
+ <td>Incremental GC in multiple slices.</td>
+ </tr>
+ <tr>
+ <td>11</td>
+ <td>Verify post write barriers between instructions.</td>
+ </tr>
+ <tr>
+ <td>12</td>
+ <td>Verify post write barriers between paints.</td>
+ </tr>
+ <tr>
+ <td>13</td>
+ <td>Check internal hashtables on minor GC.</td>
+ </tr>
+ <tr>
+ <td>14</td>
+ <td>Perform a shrinking collection every <code>frequency</code> allocations.</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>With GC zeal enabled, GC-related crashes are much easier to reproduce (they happen more reliably) and debug (they happen sooner, closer to the source of the bug). The drawback is that GC zeal can cause JavaScript code to run extremely slowly.</p>
+
+<p>Regularly running your test suite with GC zeal enabled at level 2 is a good practice.</p>
+
+<p>This function is available only in <code>DEBUG</code> builds. To enable this function in an optimized build, define the macro <code>JS_GC_ZEAL</code> building SpiderMonkey.</p>
+
+<p>(In a debug build of Gecko, you can also set the current GC zeal level using the <code>javascript.options.gczeal</code> preference.)</p>
+
+<h2 id="See_Also" name="See_Also">あわせて参照</h2>
+
+<ul>
+ <li>{{LXRSearch("ident", "i", "JS_SetGCZeal")}}</li>
+ <li>{{LXRSearch("ident", "i", "JS_GC_ZEAL")}}</li>
+ <li>{{jsapixref("JS_ScheduleGC")}}</li>
+ <li>{{bug(308429)}}</li>
+ <li>{{bug(650978)}}</li>
+</ul>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_shutdown/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_shutdown/index.html
new file mode 100644
index 0000000000..5d4e2faacd
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_shutdown/index.html
@@ -0,0 +1,34 @@
+---
+title: JS ShutDown
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ShutDown
+tags:
+ - JSAPI Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_ShutDown
+---
+<p>
+
+</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> »
+ <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> »
+ <code>JS_ShutDown</code></div>
+
+<p></p>
+
+<p>ランタイム間で共有している資源を解放します。</p>
+
+<p><span class="comment">Free all resources shared among runtimes.</span></p>
+
+<h2 id=".E6.A7.8B.E6.96.87" name=".E6.A7.8B.E6.96.87">構文</h2>
+
+<pre class="eval">void <strong>JS_ShutDown</strong>(void);
+</pre>
+
+<h2 id=".E8.AA.AC.E6.98.8E" name=".E8.AA.AC.E6.98.8E">説明</h2>
+
+<p>ランタイム間で共有している資源を解放する関数です。この関数を呼ぶのは<code>JSRuntime</code>オブジェクトが存在しないとき(具体的には、<code><a href="/ja/JS_DestroyRuntime" title="ja/JS_DestroyRuntime">JS_DestroyRuntime</a></code>を読んだ後のプログラムの最後など)だけにしてください。 <span class="comment">Frees all resources shared among runtimes. Call this only when no &lt;code&gt;JSRuntime&lt;/code&gt;s exist (for example, at the end of the program, after calling &lt;code&gt;<a href="/ja/JS_DestroyRuntime">JS_DestroyRuntime</a>&lt;/code&gt;).</span></p>
+
+<p>利用時の注意点: この関数は<code><a class="external" href="http://mxr.mozilla.org/seamonkey/source/js/src/jsdtoa.c">jsdtoa.c</a></code>が確保するメモリ領域と、<code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>オプションを有効にしたビルドにおける<code><a class="external" href="http://mxr.mozilla.org/seamonkey/source/js/src/jslock.c">jslock.c</a></code>が確保するmutex領域を解放します。 <span class="comment">Implementation note: This cleans up memory allocated by &lt;code&gt;<a class="external" href="http://mxr.mozilla.org/seamonkey/source/js/src/jsdtoa.c">jsdtoa.c</a>&lt;/code&gt; and, in &lt;code&gt;<a href="/ja/JS_THREADSAFE">JS_THREADSAFE</a>&lt;/code&gt; builds, mutexes allocated by &lt;code&gt;<a class="external" href="http://mxr.mozilla.org/seamonkey/source/js/src/jslock.c">jslock.c</a>&lt;/code&gt;.</span></p>
+
+<p>{{ LXRSearch("ident", "i", "JS_ShutDown") }}</p>
+
+<p>{{ languages( { "en": "en/JS_ShutDown" } ) }}</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_threadsafe/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_threadsafe/index.html
new file mode 100644
index 0000000000..b827d4c832
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/js_threadsafe/index.html
@@ -0,0 +1,114 @@
+---
+title: JS_THREADSAFE
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_THREADSAFE
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JS_THREADSAFE
+---
+<p class="note">{{ note("JS_THREADSAFE は現在恒久的に有効です。") }}</p>
+
+<p><strong><code>JS_THREADSAFE</code></strong> は、オブジェクトや文字列が共有されていない限り、JavaScript コードの複数のスレッドを同時に実行するためのサポートを可能にするコンパイル時オプションです。</p>
+
+<p>最近この機能に大きな変更を加えました。最近まで、スレッド間でオブジェクトを共有することでうまくいくことが多かったのですが、スクリプトを使うとクラッシュすることがありました。この機能は完全に削除されました。JavaScript エンジンを使用する各スレッドは、本質的にまったく別のメモリ領域で動作する必要があります。</p>
+
+<h2 id="Requests" name="Requests">Requests</h2>
+
+<p>In a <code>JS_THREADSAFE</code> build, the application must separate code that uses the JSAPI from code that performs blocking I/O or time-consuming calculations.</p>
+
+<p>A <em>request</em> is a region of code that uses the JSAPI. Requests must be bracketed with calls to <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="en/JS_BeginRequest">JS_BeginRequest</a>()</code> and <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="en/JS_BeginRequest">JS_EndRequest</a>()</code>.</p>
+
+<pre class="eval"><a href="/en/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="en/JS_BeginRequest">JS_BeginRequest</a>(cx);
+/* ... do JSAPI stuff ... */
+<a href="/en/SpiderMonkey/JSAPI_Reference/JS_BeginRequest" title="en/JS_BeginRequest">JS_EndRequest</a>(cx);
+</pre>
+
+<p>A request is always associated with a specific <code>JSContext</code> and runs from start to finish on a single thread.</p>
+
+<p>Most JSAPI functions require the caller to be in a request. In this reference, these JSAPI functions are marked with the words "Requires request", like this:</p>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Name</th>
+ <th>Type</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>cx</code></td>
+ <td><code>JSContext *</code></td>
+ <td>The context to use. {{ Jsapi-requires-request() }}</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>Most JSAPI callback functions are always called from within a request. These callbacks are (unreliably!) documented with the words "Provides request", like this:</p>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>Name</th>
+ <th>Type</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>cx</code></td>
+ <td><code>JSContext *</code></td>
+ <td>The context in which the event ocurred. Provides request. <em>In <code><a href="/en-US/docs/JS_THREADSAFE#Requests">JS_THREADSAFE</a></code> builds, the JavaScript engine calls this callback only from within an active request on <code>cx</code>. The callback does not need to call <code>JS_BeginRequest()</code>).</em></td>
+ </tr>
+ </tbody>
+</table>
+
+<p>In particular, <code><a href="/en/SpiderMonkey/JSAPI_Reference/JSNative" title="en/JSNative">JSNative</a></code> callbacks provide a request. This means that any potentially long-running operation in a native must be bracketed with calls to <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="en/JS_SuspendRequest">JS_SuspendRequest</a>()</code> and <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="en/JS_SuspendRequest">JS_ResumeRequest</a>()</code>.</p>
+
+<pre class="eval"><a href="/En/SpiderMonkey/JSAPI_Reference/JSBool" title="en/JSBool">JSBool</a> socket_recv(<a href="/en/SpiderMonkey/JSAPI_Reference/JSRuntime" title="en/JSRuntime">JSContext</a> *cx, <a href="/en/SpiderMonkey/JSAPI_Reference/jsint" title="en/jsint">unsigned int</a> argc, <a href="/En/SpiderMonkey/JSAPI_Reference/Jsval" title="en/jsval">jsval</a> *vp)
+{
+ ...
+ rc = <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="en/JS_SuspendRequest">JS_SuspendRequest</a>(cx);
+ read_size = recv(socket, buf, size, flags);
+ <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SuspendRequest" title="en/JS_SuspendRequest">JS_ResumeRequest</a>(cx, rc);
+ ...
+}
+</pre>
+
+<h2 id="Garbage_collection" name="Garbage_collection">Garbage collection</h2>
+
+<p>Requests help make garbage collection safe when multiple threads are using the JSAPI. For each thread that is in a request:</p>
+
+<ul>
+ <li>Almost any call into the JSAPI may trigger garbage collection; but</li>
+ <li>Garbage collection does not happen at any other time (such as, for example, at the moment before the return value of <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_NewObject" title="en/JS_NewObject">JS_NewObject</a></code> is assigned to a rooted variable).</li>
+</ul>
+
+<p>These are actually the same rules that apply to single-threaded JSAPI programs. But in multithreaded programs, if you break the rules, your program is more likely to crash. This is because in single-threaded programs, a random call into the JSAPI is actually pretty unlikely to trigger GC, especially if the calling thread has not been using up a lot of memory. In a multithreaded program, even if the calling thread has been idle, other threads may be active or may call <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_GC" title="en/JS_GC">JS_GC</a>()</code>.</p>
+
+<p>The above rules mean that at any given moment, there can be either <strong>(a)</strong> multiple threads in active requests, or <strong>(b)</strong> one thread doing GC and all requests suspended. When one thread calls JS_GC or otherwise finds that garbage collection is necessary, it must wait for all other threads that are in requests to pause before garbage collection can occur. To keep this wait time to a minimum, <strong>applications must avoid long-running requests.</strong> The recommended technique in SpiderMonkey 1.8 and later is to periodically call <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_YieldRequest" title="en/JS_YieldRequest">JS_YieldRequest</a></code> from an <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetOperationCallback" title="en/JS_SetOperationCallback">operation callback</a>.</p>
+
+<h2 id="Sharing_strings_among_threads" name="Sharing_strings_among_threads">Sharing data among threads</h2>
+
+<p>"Data can be marshaled across the process boundary through a process known as <em>smuggling</em>." --<em>Mr. Bunny's Guide to ActiveX</em></p>
+
+<p>Even in JS_THREADSAFE builds, threads cannot safely share objects or strings.</p>
+
+<p>Instead, data must be copied when it is sent from one thread to another. Use <code>JS_WriteStructuredClone</code> to transform data into a flat array of bytes that can be safely written to disk, sent to another process or even another machine, or just passed to another thread. Then use <code>JS_ReadStructuredClone</code> on the other side to turn the serialized data back into JavaScript objects, strings, and so on.</p>
+
+<h2 id="Sharing_native_functions_and_private_data_among_threads" name="Sharing_native_functions_and_private_data_among_threads">Sharing native functions and private data among threads</h2>
+
+<p>In a <code>JS_THREADSAFE</code> build, SpiderMonkey's internal data structures that represent JavaScript values are single-thread-only. In a <code>DEBUG</code> build, this is enforced with assertions.</p>
+
+<p>However, SpiderMonkey does not protect the application's data structures. <code><a href="/en/SpiderMonkey/JSAPI_Reference/JSNative" title="en/JSNative">JSNative</a></code>s and other callback functions can be called concurrently by multiple threads. Multiple threads can end up accessing <a href="/en/SpiderMonkey/JSAPI_Reference/JS_SetPrivate" title="en/JS_SetPrivate">private data</a> or C/C++ global variables at the same time. It is up to the application to practice safe threading.</p>
+
+<h2 id="Sharing_contexts_among_threads" name="Sharing_contexts_among_threads">Sharing contexts among threads</h2>
+
+<p>Ordinarily, a <code>JSContext</code> is created, used, and destroyed by a single thread. This makes sense, as a context can only be used by one thread at a time. However, there are a few cases where an application might need to share contexts across threads. For example:</p>
+
+<ul>
+ <li>Many worker threads need to share a "pool" of reusable contexts, to avoid the performance cost of constantly creating and destroying contexts. (This is analogous to a database connection pool.)</li>
+</ul>
+
+<ul>
+ <li>The application has a <code>JSContext</code> that it needs to use each time some event happens. But the event could happen on any thread.</li>
+</ul>
+
+<p>For such cases, use <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_ClearContextThread" title="en/JS_ClearContextThread">JS_ClearContextThread</a></code> and <code><a href="/en/SpiderMonkey/JSAPI_Reference/JS_ClearContextThread" title="en/JS_ClearContextThread">JS_SetContextThread</a></code> to transfer the context safely from one thread to another.</p>
+
+<h2 id="Further_info" name="Further_info">Further info</h2>
+
+<p>Note: <a href="/En/SpiderMonkey/Internals/Thread_Safety" title="en/SpiderMonkey_Internals/Thread_Safety">SpiderMonkey Internals: Thread Safety</a> is mostly obsolete.</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsint/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsint/index.html
new file mode 100644
index 0000000000..c5028558cc
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsint/index.html
@@ -0,0 +1,42 @@
+---
+title: jsint
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/jsint
+tags:
+ - JSAPI_Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/jsint
+---
+<p>C 言語 / C++ の整数型のエイリアスです。</p>
+
+<h2 id="Syntax" name="Syntax">構文</h2>
+
+<pre class="syntaxbox">typedef ... jsint;
+typedef ... jsuint;
+
+typedef ... jsword;
+typedef ... jsuword;
+
+typedef ... intN;
+typedef ... uintN;
+
+typedef ... int8;
+typedef ... uint8;
+typedef ... int16;
+typedef ... uint16;
+typedef ... int32;
+typedef ... uint32;
+typedef ... int64;
+typedef ... uint64;
+</pre>
+
+
+<h2 id="Description" name="Description">説明</h2>
+
+
+<p><strong><code>jsint</code></strong> および <strong><code>jsuint</code></strong> は 32 ビットの整数型です。</p>
+
+
+<p><strong><code>jsword</code></strong> および <strong><code>jsuword</code></strong> はポインタサイズの整数型です。</p>
+
+
+<p><strong><code>intN</code></strong> および <strong><code>uintN</code></strong> はプラットフォームのネイティブの <code>int</code> 型と同じサイズの整数型です。</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsruntime/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsruntime/index.html
new file mode 100644
index 0000000000..b221ea62ef
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jsruntime/index.html
@@ -0,0 +1,23 @@
+---
+title: JSRuntime
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSRuntime
+tags:
+ - JSAPI Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSRuntime
+---
+<p>
+
+</p><div class="breadcrumbs"><a href="/ja" title="ja">メインページ</a> » <a href="/ja/docs/SpiderMonkey" title="SpiderMonkey">SpiderMonkey</a> »
+ <a href="/ja/docs/SpiderMonkey/JSAPI_Reference" title="JSAPI_Reference">JSAPI リファレンス</a> »
+ <code>JSRuntime</code></div>
+
+<p></p>
+
+<p>JSAPIにおいて、<strong><code><a href="/ja/JSRuntime" title="ja/JSRuntime">JSRuntime</a></code></strong>はメモリ管理や<strong>グローバル</strong>なデータ構造などを扱う最高位のオブジェクトです。複数のスレッドが動作するプログラムにおいても、プログラム内の<code>JSRuntime</code>は一般的に一つだけです。<code>JSRuntime</code>はJavaScriptのオブジェクトを保持する空間であり、オブジェクトは複数の<code>JSRuntime</code>を跨いで移動することはできません。 <span class="comment">JSAPI, <strong>&lt;code&gt;<a href="/ja/JSRuntime">JSRuntime</a>&lt;/code&gt;</strong> is the top-level object that handles, among other things, memory management and "global" data structures. A program typically has only one &lt;code&gt;JSRuntime&lt;/code&gt;, even if it has many threads. The &lt;code&gt;JSRuntime&lt;/code&gt; is the universe in which JavaScript objects live; they can't travel to other &lt;code&gt;JSRuntime&lt;/code&gt;s.</span></p>
+
+<p><strong><code>JSContext</code></strong>は<code>JSRuntime</code>の子に位置し、すべてのJavaScriptコードとJSAPIの関数は<code>JSContext</code>を介して実行されます。<code>JSContext</code>内には、<a href="/ja/JS_GetGlobalObject" title="ja/JS_GetGlobalObject">global object</a>や実行時スタックなどが含まれます。 <a href="/ja/JS_SetPendingException" title="ja/JS_SetPendingException">例外処理</a>、<a href="/ja/JS_SetErrorReporter" title="ja/JS_SetErrorReporter">エラー報告</a>、一部の<a href="/ja/JS_SetOptions" title="ja/JS_SetOptions">JavaScriptのオプション</a> などは各<code>JSContext</code>ごとに管理されます。<code>JS_THREADSAFE</code>オプションを有効にしたビルドでは、複数のスレッドからJavaScriptのコードを呼び出し並行して実行できますが、呼び出し元のスレッドはそれぞれ独立した<code>JSContext</code>を持つ形になります。詳細は<code><a href="/ja/JS_THREADSAFE" title="ja/JS_THREADSAFE">JS_THREADSAFE</a></code>を参照してください。 <span class="comment">All JavaScript code and most JSAPI calls run within a <strong>&lt;code&gt;JSContext&lt;/code&gt;</strong>. The &lt;code&gt;JSContext&lt;/code&gt; is a child of the &lt;code&gt;JSRuntime&lt;/code&gt;. Among other things, it contains the <a href="/ja/JS_GetGlobalObject">global object</a> and the execution stack. <a href="/ja/JS_SetPendingException">Exception handling</a>, <a href="/ja/JS_SetErrorReporter">error reporting</a>, and some <a href="/ja/JS_SetOptions">language options</a> are per-&lt;code&gt;JSContext&lt;/code&gt;. In a &lt;code&gt;JS_THREADSAFE&lt;/code&gt; build, multiple threads may run JavaScript code concurrently, but each such thread must have its own &lt;code&gt;JSContext&lt;/code&gt;. See &lt;code&gt; <a href="/ja/JS_THREADSAFE">JS_THREADSAFE</a>&lt;/code&gt; for details.</span></p>
+
+<p>JavaScriptオブジェクトとそのコンテキストとの関係は固定されたものでなく、オブジェクトは<code>JSRuntime</code>を介してその子となる<code>JSContext</code>間で共有することができます。 <span class="comment">Objects may be shared among &lt;code&gt;JSContext&lt;/code&gt;s within a &lt;code&gt;JSRuntime&lt;/code&gt;. There's no fixed association between an object and a context.</span></p>
+
+<p>{{ languages( { "en": "en/JSRuntime" } ) }}</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jstype/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jstype/index.html
new file mode 100644
index 0000000000..69037c39ee
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_reference/jstype/index.html
@@ -0,0 +1,52 @@
+---
+title: JSType
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSType
+tags:
+ - JSAPI_Reference
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_reference/JSType
+---
+<p>列挙型 <code>JSType</code> の値は、 JavaScript の値の型を表します。</p>
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th>値</th>
+ <th>説明</th>
+ </tr>
+</thead>
+<tbody>
+ <tr>
+ <td><code>JSTYPE_VOID</code></td>
+ <td><code>undefined</code> 値</td>
+ </tr>
+ <tr>
+ <td><code>JSTYPE_OBJECT</code></td>
+ <td>JavaScript オブジェクト</td>
+ </tr>
+ <tr>
+ <td><code>JSTYPE_FUNCTION</code></td>
+ <td>関数</td>
+ </tr>
+ <tr>
+ <td><code>JSTYPE_STRING</code></td>
+ <td>文字列</td>
+ </tr>
+ <tr>
+ <td><code>JSTYPE_NUMBER</code></td>
+ <td>数値</td>
+ </tr>
+ <tr>
+ <td><code>JSTYPE_BOOLEAN</code></td>
+ <td>真偽値 (<code>true</code> / <code>false</code>)</td>
+ </tr>
+ <tr>
+ <td><code>JSTYPE_NULL</code></td>
+ <td><code>null</code> 値</td>
+ </tr>
+ <tr>
+ <td><code>JSTYPE_XML</code></td>
+ <td>XML オブジェクト</td>
+ </tr>
+ </tbody>
+</table>
+<p> </p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsapi_user_guide/index.html b/files/ja/mozilla/projects/spidermonkey/jsapi_user_guide/index.html
new file mode 100644
index 0000000000..815bdfd6cf
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsapi_user_guide/index.html
@@ -0,0 +1,6 @@
+---
+title: JSAPI ユーザガイド
+slug: Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide
+translation_of: Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide
+---
+<p>{{SpiderMonkeySidebar}}{{Draft}}{{Page("/en-US/docs/Mozilla/Projects/SpiderMonkey/JSAPI_User_Guide")}}</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/jsdbgapi_reference/index.html b/files/ja/mozilla/projects/spidermonkey/jsdbgapi_reference/index.html
new file mode 100644
index 0000000000..c132f23a19
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/jsdbgapi_reference/index.html
@@ -0,0 +1,150 @@
+---
+title: JSDBGAPI Reference
+slug: Mozilla/Projects/SpiderMonkey/JSDBGAPI_Reference
+tags:
+ - JSDBGAPI_Reference
+ - JavaScript
+ - SpiderMonkey
+---
+<p>
+</p><p>見てのとおり、ほとんどすべての項目がドキュメント化されていません。
+</p><p>&lt;tt&gt;trap, untrap, watch, unwatch, line2pc&lt;/tt&gt; および &lt;tt&gt;pc2line&lt;/tt&gt; 関数の実装は {{ Source("js/src/js.c") }} をご覧ください。{{ Source("js/src/jsdbgapi.h") }} にも (わずかに) コメントがあります。
+</p><p>{{ 英語版章題("Breakpoints") }}
+</p>
+<h3 id=".E3.83.96.E3.83.AC.E3.83.BC.E3.82.AF.E3.83.9D.E3.82.A4.E3.83.B3.E3.83.88" name=".E3.83.96.E3.83.AC.E3.83.BC.E3.82.AF.E3.83.9D.E3.82.A4.E3.83.B3.E3.83.88"> ブレークポイント </h3>
+<ul><li> <code><a href="ja/JS_SetTrap">JS_SetTrap</a></code>
+</li><li> <code><a href="ja/JS_GetTrapOpcode">JS_GetTrapOpcode</a></code>
+</li><li> <code><a href="ja/JS_ClearTrap">JS_ClearTrap</a></code>
+</li><li> <code><a href="ja/JS_ClearScriptTraps">JS_ClearScriptTraps</a></code>
+</li><li> <code><a href="ja/JS_ClearAllTraps">JS_ClearAllTraps</a></code>
+</li><li> <code><a href="ja/JS_HandleTrap">JS_HandleTrap</a></code>
+</li><li> <code><a href="ja/JS_SetInterrupt">JS_SetInterrupt</a></code>
+</li><li> <code><a href="ja/JS_ClearInterrupt">JS_ClearInterrupt</a></code>
+</li></ul>
+<p>{{ 英語版章題("Watchpoints") }}
+</p>
+<h3 id=".E3.82.A6.E3.82.A9.E3.83.83.E3.83.81.E3.83.9D.E3.82.A4.E3.83.B3.E3.83.88" name=".E3.82.A6.E3.82.A9.E3.83.83.E3.83.81.E3.83.9D.E3.82.A4.E3.83.B3.E3.83.88"> ウォッチポイント </h3>
+<ul><li> <code><a href="ja/JS_SetWatchPoint">JS_SetWatchPoint</a></code>
+</li><li> <code><a href="ja/JS_ClearWatchPoint">JS_ClearWatchPoint</a></code>
+</li><li> <code><a href="ja/JS_ClearWatchPointsForObject">JS_ClearWatchPointsForObject</a></code>
+</li><li> <code><a href="ja/JS_ClearAllWatchPoints">JS_ClearAllWatchPoints</a></code>
+</li></ul>
+<p>{{ 英語版章題("Inspecting the stack") }}
+</p>
+<h3 id=".E3.82.B9.E3.82.BF.E3.83.83.E3.82.AF.E3.81.AE.E8.AA.BF.E6.9F.BB" name=".E3.82.B9.E3.82.BF.E3.83.83.E3.82.AF.E3.81.AE.E8.AA.BF.E6.9F.BB"> スタックの調査 </h3>
+<ul><li> <code><a href="ja/JS_PCToLineNumber">JS_PCToLineNumber</a></code>
+</li><li> <code><a href="ja/JS_LineNumberToPC">JS_LineNumberToPC</a></code>
+</li><li> <code><a href="ja/JS_GetFunctionScript">JS_GetFunctionScript</a></code>
+</li><li> <code><a href="ja/JS_GetFunctionNative">JS_GetFunctionNative</a></code>
+</li><li> <code><a href="ja/JS_GetFunctionFastNative">JS_GetFunctionFastNative</a></code>
+</li><li> <code><a href="ja/JS_GetScriptPrincipals">JS_GetScriptPrincipals</a></code>
+</li></ul>
+<ul><li> typedef <code><a href="ja/JSStackFrame">JSStackFrame</a></code>
+</li><li> <code><a href="ja/JS_FrameIterator">JS_FrameIterator</a></code>
+</li><li> <code><a href="ja/JS_GetFrameScript">JS_GetFrameScript</a></code>
+</li><li> <code><a href="ja/JS_GetFramePC">JS_GetFramePC</a></code>
+</li><li> <code><a href="ja/JS_GetScriptedCaller">JS_GetScriptedCaller</a></code>
+</li><li> <code><a href="ja/JS_StackFramePrincipals">JS_StackFramePrincipals</a></code>
+</li><li> <code><a href="ja/JS_EvalFramePrincipals">JS_EvalFramePrincipals</a></code>
+</li><li> <code><a href="ja/JS_GetFrameAnnotation">JS_GetFrameAnnotation</a></code>
+</li><li> <code><a href="ja/JS_SetFrameAnnotation">JS_SetFrameAnnotation</a></code>
+</li><li> <code><a href="ja/JS_GetFramePrincipalArray">JS_GetFramePrincipalArray</a></code>
+</li><li> <code><a href="ja/JS_IsNativeFrame">JS_IsNativeFrame</a></code>
+</li><li> <code><a href="ja/JS_GetFrameObject">JS_GetFrameObject</a></code> {{ Deprecated_inline() }}
+</li><li> <code><a href="ja/JS_GetFrameScopeChain">JS_GetFrameScopeChain</a></code>
+</li><li> <code><a href="ja/JS_GetFrameCallObject">JS_GetFrameCallObject</a></code>
+</li><li> <code><a href="ja/JS_GetFrameThis">JS_GetFrameThis</a></code>
+</li><li> <code><a href="ja/JS_GetFrameFunction">JS_GetFrameFunction</a></code>
+</li><li> <code><a href="ja/JS_GetFrameFunctionObject">JS_GetFrameFunctionObject</a></code>
+</li><li> <code><a href="ja/JS_IsConstructorFrame">JS_IsConstructorFrame</a></code>
+</li><li> <code><a href="ja/JS_IsDebuggerFrame">JS_IsDebuggerFrame</a></code>
+</li><li> <code><a href="ja/JS_GetFrameReturnValue">JS_GetFrameReturnValue</a></code>
+</li><li> <code><a href="ja/JS_SetFrameReturnValue">JS_SetFrameReturnValue</a></code>
+</li><li> <code><a href="ja/JS_GetFrameCalleeObject">JS_GetFrameCalleeObject</a></code>
+</li></ul>
+<ul><li> <code><a href="ja/JS_GetScriptFilename">JS_GetScriptFilename</a></code>
+</li><li> <code><a href="ja/JS_GetScriptBaseLineNumber">JS_GetScriptBaseLineNumber</a></code>
+</li><li> <code><a href="ja/JS_GetScriptLineExtent">JS_GetScriptLineExtent</a></code>
+</li><li> <code><a href="ja/JS_GetScriptVersion">JS_GetScriptVersion</a></code>
+</li></ul>
+<ul><li> <code><a href="ja/JS_GetTopScriptFilenameFlags">JS_GetTopScriptFilenameFlags</a></code>
+</li><li> <code><a href="ja/JS_GetScriptFilenameFlags">JS_GetScriptFilenameFlags</a></code>
+</li><li> <code><a href="ja/JS_FlagScriptFilenamePrefix">JS_FlagScriptFilenamePrefix</a></code>
+</li></ul>
+<ul><li> <code><a href="ja/JSFILENAME_NULL">JSFILENAME_NULL</a></code>
+</li><li> <code><a href="ja/JSFILENAME_SYSTEM">JSFILENAME_SYSTEM</a></code>
+</li><li> <code><a href="ja/JSFILENAME_PROTECTED">JSFILENAME_PROTECTED</a></code>
+</li></ul>
+<p>{{ 英語版章題("Evaluating debug code") }}
+</p>
+<h3 id=".E3.83.87.E3.83.90.E3.83.83.E3.82.B0.E3.82.B3.E3.83.BC.E3.83.89.E3.81.AE.E8.A9.95.E4.BE.A1" name=".E3.83.87.E3.83.90.E3.83.83.E3.82.B0.E3.82.B3.E3.83.BC.E3.83.89.E3.81.AE.E8.A9.95.E4.BE.A1"> デバッグコードの評価 </h3>
+<ul><li> <code><a href="ja/JS_EvaluateInStackFrame">JS_EvaluateInStackFrame</a></code>
+</li></ul>
+<p>{{ 英語版章題("Examining object properties") }}
+</p>
+<h3 id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.83.97.E3.83.AD.E3.83.91.E3.83.86.E3.82.A3.E3.81.AE.E6.A4.9C.E6.9F.BB" name=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.83.97.E3.83.AD.E3.83.91.E3.83.86.E3.82.A3.E3.81.AE.E6.A4.9C.E6.9F.BB"> オブジェクトプロパティの検査 </h3>
+<ul><li> typedef <code><a href="ja/JSPropertyDesc">JSPropertyDesc</a></code>
+</li></ul>
+<ul><li> <code><a href="ja/JSPD_ENUMERATE">JSPD_ENUMERATE</a></code>
+</li><li> <code><a href="ja/JSPD_READONLY">JSPD_READONLY</a></code>
+</li><li> <code><a href="ja/JSPD_PERMANENT">JSPD_PERMANENT</a></code>
+</li><li> <code><a href="ja/JSPD_ALIAS">JSPD_ALIAS</a></code>
+</li><li> <code><a href="ja/JSPD_ARGUMENT">JSPD_ARGUMENT</a></code>
+</li><li> <code><a href="ja/JSPD_VARIABLE">JSPD_VARIABLE</a></code>
+</li><li> <code><a href="ja/JSPD_EXCEPTION">JSPD_EXCEPTION</a></code>
+</li><li> <code><a href="ja/JSPD_ERROR">JSPD_ERROR</a></code>
+</li></ul>
+<ul><li> typedef <code><a href="ja/JSPropertyDescArray">JSPropertyDescArray</a></code>
+</li></ul>
+<ul><li> <code><a href="ja/JS_PropertyIterator">JS_PropertyIterator</a></code>
+</li><li> <code><a href="ja/JS_GetPropertyDesc">JS_GetPropertyDesc</a></code>
+</li><li> <code><a href="ja/JS_GetPropertyDescArray">JS_GetPropertyDescArray</a></code>
+</li><li> <code><a href="ja/JS_PutPropertyDescArray">JS_PutPropertyDescArray</a></code>
+</li></ul>
+<p>{{ 英語版章題("Hooks") }}
+</p>
+<h3 id=".E3.83.95.E3.83.83.E3.82.AF" name=".E3.83.95.E3.83.83.E3.82.AF"> フック </h3>
+<ul><li> <code><a href="ja/JS_SetDebuggerHandler">JS_SetDebuggerHandler</a></code>
+</li><li> <code><a href="ja/JS_SetSourceHandler">JS_SetSourceHandler</a></code>
+</li><li> <code><a href="ja/JS_SetExecuteHook">JS_SetExecuteHook</a></code>
+</li><li> <code><a href="ja/JS_SetCallHook">JS_SetCallHook</a></code>
+</li><li> <code><a href="ja/JS_SetObjectHook">JS_SetObjectHook</a></code>
+</li><li> <code><a href="ja/JS_SetThrowHook">JS_SetThrowHook</a></code>
+</li><li> <code><a href="ja/JS_SetDebugErrorHook">JS_SetDebugErrorHook</a></code>
+</li><li> <code><a href="ja/JS_SetNewScriptHook">JS_SetNewScriptHook</a></code>
+</li><li> <code><a href="ja/JS_SetDestroyScriptHook">JS_SetDestroyScriptHook</a></code>
+</li></ul>
+<ul><li> <code><a href="ja/JS_GetGlobalDebugHooks">JS_GetGlobalDebugHooks</a></code>
+</li><li> <code><a href="ja/JS_SetContextDebugHooks">JS_SetContextDebugHooks</a></code>
+</li></ul>
+<p>{{ 英語版章題("Memory usage") }}
+</p>
+<h3 id=".E3.83.A1.E3.83.A2.E3.83.AA.E4.BD.BF.E7.94.A8.E9.87.8F" name=".E3.83.A1.E3.83.A2.E3.83.AA.E4.BD.BF.E7.94.A8.E9.87.8F"> メモリ使用量 </h3>
+<ul><li> <code><a href="ja/JS_GetObjectTotalSize">JS_GetObjectTotalSize</a></code>
+</li><li> <code><a href="ja/JS_GetFunctionTotalSize">JS_GetFunctionTotalSize</a></code>
+</li><li> <code><a href="ja/JS_GetScriptTotalSize">JS_GetScriptTotalSize</a></code>
+</li></ul>
+<p>{{ 英語版章題("System objects") }}
+</p>
+<h3 id=".E3.82.B7.E3.82.B9.E3.83.86.E3.83.A0.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88" name=".E3.82.B7.E3.82.B9.E3.83.86.E3.83.A0.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88"> システムオブジェクト </h3>
+<ul><li> <code><a href="ja/JS_IsSystemObject">JS_IsSystemObject</a></code>
+</li><li> <code><a href="ja/JS_NewSystemObject">JS_NewSystemObject</a></code>
+</li></ul>
+<p>{{ 英語版章題("Profiling") }}
+</p>
+<h3 id=".E5.88.86.E6.9E.90" name=".E5.88.86.E6.9E.90"> 分析 </h3>
+<p>これらの関数は、Mac プロファイラである Shark を使用して SpiderMonkey アプリケーションを分析するために使用されます。<a href="ja/Profiling_JavaScript_with_Shark">Profiling JavaScript with Shark</a> をご覧ください。
+</p>
+<ul><li> <code><a href="ja/JS_ConnectShark">JS_ConnectShark</a></code>
+</li><li> <code><a href="ja/JS_DisconnectShark">JS_DisconnectShark</a></code>
+</li><li> <code><a href="ja/JS_StartChudRemote">JS_StartChudRemote</a></code>
+</li><li> <code><a href="ja/JS_StopChudRemote">JS_StopChudRemote</a></code>
+</li></ul>
+<p>以下の <code><a href="ja/JSNative">JSNative</a></code> 関数は、上記 4 つの API をスクリプトに晒すために使用されます。
+</p>
+<ul><li> <code><a href="ja/Js_ConnectShark">js_ConnectShark</a></code>
+</li><li> <code><a href="ja/Js_DisconnectShark">js_DisconnectShark</a></code>
+</li><li> <code><a href="ja/Js_StartShark">js_StartShark</a></code>
+</li><li> <code><a href="ja/Js_StopShark">js_StopShark</a></code>
+</li></ul>
+{{ languages( { "en": "en/JSDBGAPI_Reference" } ) }}
diff --git a/files/ja/mozilla/projects/spidermonkey/parser_api/index.html b/files/ja/mozilla/projects/spidermonkey/parser_api/index.html
new file mode 100644
index 0000000000..81b308c6f6
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/parser_api/index.html
@@ -0,0 +1,1698 @@
+---
+title: Parser API
+slug: Mozilla/Projects/SpiderMonkey/Parser_API
+tags:
+ - API
+ - Guide
+ - JavaScript
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/Parser_API
+---
+<div>{{SpiderMonkeySidebar}}</div>
+
+<div class="summary">
+<p>最近の<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Build_Documentation">スタンドアロンの SpiderMonkey シェル</a>のビルドには、SpiderMonkey パーサーを反映したものが含まれています。これは JavaScript API として提供されています。これにより、シンタックスハイライト、静的解析、トランスレータ、コンパイラ、難読化ツールなど、JavaScript ソースプログラムを操作するツールを JavaScript で記述することが簡単になります。</p>
+</div>
+
+<div class="note">
+<p><strong>メモ:</strong> このページは SpiderMonkey 特有の振る舞いについて説明しており、不完全かもしれません。最新の ECMAScript 機能を含み、SpiderMonkey フォーマットとの下位互換性があるコミュニティ AST 規格については、<a href="https://github.com/estree/estree">ESTree の仕様</a>をご覧ください。</p>
+</div>
+
+<p>例:</p>
+
+<pre class="notranslate">&gt; var expr = Reflect.parse("obj.foo + 42").body[0].expression
+&gt; expr.left.property
+({loc:null, type:"Identifier", name:"foo"})
+&gt; expr.right
+({loc:{source:null, start:{line:1, column:10}, end:{line:1, column:12}}, type:"Literal", value:42})
+</pre>
+
+<p>Firefox 7 以降も利用可能です。次のようにしてグローバルオブジェクトにインポートすることができます。</p>
+
+<pre class="notranslate">Components.utils.import("resource://gre/modules/reflect.jsm")
+</pre>
+
+<p>または指定されたオブジェクトへ:</p>
+
+<pre class="notranslate">Components.utils.import("resource://gre/modules/reflect.jsm", obj)
+</pre>
+
+<h2 id="組み込みオブジェクト">組み込みオブジェクト</h2>
+
+<p>SpiderMonkey シェルであっても Firefox (インポート後) であっても、グローバルシングルトンオブジェクト <code>Reflect</code> は現在 <code>parse</code> メソッドだけを含んでいます。</p>
+
+<h2 id="Reflect_オブジェクトのプロパティ"><code>Reflect</code> オブジェクトのプロパティ</h2>
+
+<p><code>Reflect</code> オブジェクトは現在単一のメソッドで構成されています。</p>
+
+<h4 id="Reflect.parsesrc_options"><code>Reflect.parse(src[, options])</code></h4>
+
+<p><strong><span style="font-family: Courier New;">src</span></strong> を文字列に強制し、結果を JavaScript プログラムとして解析します。デフォルトでは、解析にされた抽象構文ツリー (AST) を表す Program オブジェクト(以下を参照)が返されます。</p>
+
+<p>追加のオプションは、以下のプロパティのいずれかを含めることができる <strong><span style="font-family: Courier New;">options</span></strong> オブジェクトを介して提供可能です:</p>
+
+<table style="border-color: #edf2f7; border-style: solid; border-width: 1px; width: 67%;">
+ <tbody>
+ <tr style="background-color: rgb(241, 246, 251);">
+ <td><strong><span style="font-family: Courier New;">loc</span></strong></td>
+ <td>Boolean</td>
+ <td>Default: <span style="font-family: Courier New;">true</span></td>
+ </tr>
+ <tr>
+ <td colspan="3">When <strong><span style="font-family: Courier New;">loc</span></strong> is <span style="font-family: Courier New;">true</span>, the parser includes source location information in the returned AST nodes.</td>
+ </tr>
+ <tr style="background-color: rgb(241, 246, 251);">
+ <td><strong><span style="font-family: Courier New;">source</span></strong></td>
+ <td>String</td>
+ <td>Default: <span style="font-family: Courier New;">null</span></td>
+ </tr>
+ <tr>
+ <td colspan="3">A description of the input source; typically a filename, path, or URL. This string is not meaningful to the parsing process, but is produced as part of the source location information in the returned AST nodes.</td>
+ </tr>
+ <tr style="background-color: rgb(241, 246, 251);">
+ <td><strong><span style="font-family: Courier New;">line</span></strong></td>
+ <td>Number</td>
+ <td>Default: <span style="font-family: Courier New;">1</span></td>
+ </tr>
+ <tr>
+ <td colspan="3">The initial line number to use for source location information.</td>
+ </tr>
+ <tr style="background-color: rgb(241, 246, 251);">
+ <td><strong><span style="font-family: Courier New;">builder</span></strong></td>
+ <td>Builder</td>
+ <td>Default: <span style="font-family: Courier New;">null</span></td>
+ </tr>
+ <tr>
+ <td colspan="3">
+ <p>A builder object, which can be used to produce AST nodes in custom data formats. The expected callback methods are described under <a href="/en/SpiderMonkey/Parser_API#Builder_objects" title="en/SpiderMonkey/Parser API#Builder objects">Builder Objects</a>.</p>
+ </td>
+ </tr>
+ <tr style="background-color: rgb(241, 246, 251);">
+ <td><strong><span style="font-family: Courier New;">target</span></strong></td>
+ <td>String</td>
+ <td>Default: <span style="font-family: Courier New;">script</span></td>
+ </tr>
+ <tr>
+ <td colspan="3">
+ <p>A type of the parsing target, can be either <span style="font-family: Courier New;">script</span> or <span style="font-family: Courier New;">module</span>.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>If parsing fails due to a syntax error, an instance of <code>SyntaxError</code> is thrown. The syntax error object thrown by <code>Reflect.parse()</code> has the same <code>message</code> property as the syntax error that would be thrown by <code>eval(src)</code>. The <code>lineNumber</code> and <code>fileName</code> properties of the syntax error object indicate the source location of the syntax error.</p>
+
+<h2 id="Node_オブジェクト">Node オブジェクト</h2>
+
+<p>By default, <code>Reflect.parse()</code> produces Node objects, which are plain JavaScript objects (i.e., their prototype derives from the standard <code>Object</code> prototype). All node types implement the following interface:</p>
+
+<pre class="notranslate">interface Node {
+ type: string;
+ loc: SourceLocation | null;
+}
+</pre>
+
+<p>The <code>type</code> field is a string representing the AST variant type. Each subtype of Node is documented below with the specific string of its <code>type</code> field. You can use this field to determine which interface a node implements.</p>
+
+<p>The <code>loc</code> field represents the source location information of the node. If the parser produced no information about the node's source location, the field is <code>null</code>; otherwise it is an object consisting of a start position (the position of the first character of the parsed source region) and an end position (the position of the first character <em>after</em> the parsed source region):</p>
+
+<pre class="notranslate">interface SourceLocation {
+ source: string | null;
+ start: Position;
+ end: Position;
+}
+</pre>
+
+<p>Each <code>Position</code> object consists of a <code>line</code> number (1-indexed) and a <code>column</code> number (0-indexed):</p>
+
+<pre class="notranslate">interface Position {
+ line: uint32 &gt;= 1;
+ column: uint32 &gt;= 0;
+}</pre>
+
+<h3 id="Programs">Programs</h3>
+
+<pre class="notranslate">interface Program &lt;: Node {
+ type: "Program";
+ body: [ Statement ];
+}
+</pre>
+
+<p>A complete program source tree.</p>
+
+<h3 id="Functions">Functions</h3>
+
+<pre class="notranslate">interface Function &lt;: Node {
+ id: Identifier | null;
+ params: [ Pattern ];
+ defaults: [ Expression ];
+ rest: Identifier | null;
+ body: BlockStatement | Expression;
+ generator: boolean;
+ expression: boolean;
+}
+</pre>
+
+<p>A function declaration or expression. The <code>body</code> of the function may be a block statement, or in the case of an <a href="/en/JavaScript/New_in_JavaScript/1.8#Expression_closures_%28Merge_into_own_page.2fsection%29" title="https://developer.mozilla.org/en/new_in_javascript_1.8#Expression_closures_(Merge_into_own_page.2fsection)">expression closure</a>, an expression.</p>
+
+<div class="note"><strong>メモ:</strong> Expression closures are SpiderMonkey-specific.</div>
+
+<p>If the <code>generator</code> flag is <code>true</code>, the function is a <a href="/en/JavaScript/Guide/Iterators_and_Generators" title="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Iterators_and_Generators">generator function</a>, i.e., contains a <code>yield</code> expression in its body (other than in a nested function).</p>
+
+<div class="note"><strong>メモ:</strong> Generators are SpiderMonkey-specific.</div>
+
+<p>If the <code>expression</code> flag is <code>true</code>, the function is an expression closure and the <code>body</code> field is an expression.</p>
+
+<h3 id="Statements">Statements</h3>
+
+<pre class="notranslate">interface Statement &lt;: Node { }
+</pre>
+
+<p>Any statement.</p>
+
+<pre class="notranslate">interface EmptyStatement &lt;: Statement {
+ type: "EmptyStatement";
+}
+</pre>
+
+<p>An empty statement, i.e., a solitary semicolon.</p>
+
+<pre class="notranslate">interface BlockStatement &lt;: Statement {
+ type: "BlockStatement";
+ body: [ Statement ];
+}
+</pre>
+
+<p>A block statement, i.e., a sequence of statements surrounded by braces.</p>
+
+<pre class="notranslate">interface ExpressionStatement &lt;: Statement {
+ type: "ExpressionStatement";
+ expression: Expression;
+}
+</pre>
+
+<p>An expression statement, i.e., a statement consisting of a single expression.</p>
+
+<pre class="notranslate">interface IfStatement &lt;: Statement {
+ type: "IfStatement";
+ test: Expression;
+ consequent: Statement;
+ alternate: Statement | null;
+}
+</pre>
+
+<p>An <code>if</code> statement.</p>
+
+<pre class="notranslate">interface LabeledStatement &lt;: Statement {
+ type: "LabeledStatement";
+ label: Identifier;
+ body: Statement;
+}
+</pre>
+
+<p>A labeled statement, i.e., a statement prefixed by a <code>break</code>/<code>continue</code> label.</p>
+
+<pre class="notranslate">interface BreakStatement &lt;: Statement {
+ type: "BreakStatement";
+ label: Identifier | null;
+}
+</pre>
+
+<p>A <code>break</code> statement.</p>
+
+<pre class="notranslate">interface ContinueStatement &lt;: Statement {
+ type: "ContinueStatement";
+ label: Identifier | null;
+}
+</pre>
+
+<p>A <code>continue</code> statement.</p>
+
+<pre class="notranslate">interface WithStatement &lt;: Statement {
+ type: "WithStatement";
+ object: Expression;
+ body: Statement;
+}
+</pre>
+
+<p>A <code>with</code> statement.</p>
+
+<pre class="notranslate">interface SwitchStatement &lt;: Statement {
+ type: "SwitchStatement";
+ discriminant: Expression;
+ cases: [ SwitchCase ];
+ lexical: boolean;
+}
+</pre>
+
+<p>A <code>switch</code> statement. The lexical flag is metadata indicating whether the <code>switch</code> statement contains any unnested <code>let</code> 宣言 (and therefore introduces a new lexical scope).</p>
+
+<pre class="notranslate">interface ReturnStatement &lt;: Statement {
+ type: "ReturnStatement";
+ argument: Expression | null;
+}
+</pre>
+
+<p>A <code>return</code> statement.</p>
+
+<pre class="notranslate">interface ThrowStatement &lt;: Statement {
+ type: "ThrowStatement";
+ argument: Expression;
+}
+</pre>
+
+<p>A <code>throw</code> statement.</p>
+
+<pre class="notranslate">interface TryStatement &lt;: Statement {
+ type: "TryStatement";
+ block: BlockStatement;
+ handler: CatchClause | null;
+ guardedHandlers: [ CatchClause ];
+ finalizer: BlockStatement | null;
+}
+</pre>
+
+<p>A <code>try</code> statement.</p>
+
+<div class="note"><strong>メモ:</strong> Multiple <code>catch</code> clauses are SpiderMonkey-specific.</div>
+
+<pre class="notranslate">interface WhileStatement &lt;: Statement {
+ type: "WhileStatement";
+ test: Expression;
+ body: Statement;
+}
+</pre>
+
+<p>A <code>while</code> statement.</p>
+
+<pre class="notranslate">interface DoWhileStatement &lt;: Statement {
+ type: "DoWhileStatement";
+ body: Statement;
+ test: Expression;
+}
+</pre>
+
+<p>A <code>do</code>/<code>while</code> statement.</p>
+
+<pre class="notranslate">interface ForStatement &lt;: Statement {
+ type: "ForStatement";
+ init: VariableDeclaration | Expression | null;
+ test: Expression | null;
+ update: Expression | null;
+ body: Statement;
+}
+</pre>
+
+<p>A <code>for</code> statement.</p>
+
+<pre class="notranslate">interface ForInStatement &lt;: Statement {
+ type: "ForInStatement";
+ left: VariableDeclaration | Expression;
+ right: Expression;
+ body: Statement;
+ each: boolean;
+}
+</pre>
+
+<p>A <code>for</code>/<code>in</code> statement, or, if <code>each</code> is <code>true</code>, a <code>for each</code>/<code>in</code> statement.</p>
+
+<div class="note"><strong>メモ:</strong> The <code>for each</code> form is SpiderMonkey-specific.</div>
+
+<pre class="notranslate">interface ForOfStatement &lt;: Statement {
+ type: "ForOfStatement";
+ left: VariableDeclaration | Expression;
+ right: Expression;
+ body: Statement;
+}</pre>
+
+<p>A <code>for</code>/<code>of</code> statement.</p>
+
+<pre class="notranslate">interface LetStatement &lt;: Statement {
+ type: "LetStatement";
+ head: [ VariableDeclarator ];
+ body: Statement;
+}
+</pre>
+
+<p>A <code>let</code> statement.</p>
+
+<div class="note"><strong>メモ:</strong> The <code>let</code> statement form is SpiderMonkey-specific.</div>
+
+<pre class="notranslate">interface DebuggerStatement &lt;: Statement {
+ type: "DebuggerStatement";
+}
+</pre>
+
+<p>A <code>debugger</code> statement.</p>
+
+<div class="note"><strong>メモ:</strong> The <code>debugger</code> statement is new in ECMAScript 5th edition, although SpiderMonkey has supported it for years.</div>
+
+<h3 id="宣言">宣言</h3>
+
+<pre class="notranslate">interface Declaration &lt;: Statement { }
+</pre>
+
+<p>Any declaration node. Note that 宣言 are considered statements; this is because 宣言 can appear in any statement context in the language recognized by the SpiderMonkey parser.</p>
+
+<div class="note"><strong>メモ:</strong> 宣言 in arbitrary nested scopes are SpiderMonkey-specific.</div>
+
+<pre class="notranslate">interface FunctionDeclaration &lt;: Function, Declaration {
+ type: "FunctionDeclaration";
+ id: Identifier;
+ params: [ Pattern ];
+ defaults: [ Expression ];
+ rest: Identifier | null;
+ body: BlockStatement | Expression;
+ generator: boolean;
+ expression: boolean;
+}
+</pre>
+
+<p>A function declaration.</p>
+
+<div class="note"><strong>メモ:</strong> The <code>id</code> field cannot be <code>null</code>.</div>
+
+<pre class="notranslate">interface VariableDeclaration &lt;: Declaration {
+ type: "VariableDeclaration";
+ 宣言: [ VariableDeclarator ];
+ kind: "var" | "let" | "const";
+}
+</pre>
+
+<p>A variable declaration, via one of <code>var</code>, <code>let</code>, or <code>const</code>.</p>
+
+<pre class="notranslate">interface VariableDeclarator &lt;: Node {
+ type: "VariableDeclarator";
+ id: Pattern;
+ init: Expression | null;
+}
+</pre>
+
+<p>A variable declarator.</p>
+
+<div class="note"><strong>メモ:</strong> The <code>id</code> field cannot be <code>null</code>.</div>
+
+<div class="note"><strong>メモ:</strong> <code>let</code> and <code>const</code> are SpiderMonkey-specific.</div>
+
+<h3 id="Expressions">Expressions</h3>
+
+<pre class="notranslate">interface Expression &lt;: Node, Pattern { }</pre>
+
+<p>Any expression node. Since the left-hand side of an assignment may be any expression in general, an expression can also be a pattern.</p>
+
+<pre class="notranslate">interface ThisExpression &lt;: Expression {
+ type: "ThisExpression";
+}
+</pre>
+
+<p>A <code>this</code> expression.</p>
+
+<pre class="notranslate">interface ArrayExpression &lt;: Expression {
+ type: "ArrayExpression";
+ elements: [ Expression | null ];
+}</pre>
+
+<p>An array expression.</p>
+
+<pre class="notranslate">interface ObjectExpression &lt;: Expression {
+ type: "ObjectExpression";
+ properties: [ Property ];
+}</pre>
+
+<p>An object expression.</p>
+
+<pre class="notranslate">interface Property &lt;: Node {
+ type: "Property";
+ key: Literal | Identifier;
+ value: Expression;
+ kind: "init" | "get" | "set";
+}</pre>
+
+<p>A literal property in an object expression can have either a string or number as its <code>value</code>. Ordinary property initializers have a <code>kind</code> value <code>"init"</code>; getters and setters have the <code>kind</code> values <code>"get"</code> and <code>"set"</code>, respectively.</p>
+
+<pre class="notranslate">interface FunctionExpression &lt;: Function, Expression {
+ type: "FunctionExpression";
+ id: Identifier | null;
+ params: [ Pattern ];
+ defaults: [ Expression ];
+ rest: Identifier | null;
+ body: BlockStatement | Expression;
+ generator: boolean;
+ expression: boolean;
+}
+</pre>
+
+<p>A function expression.</p>
+
+<pre class="notranslate">interface ArrowExpression &lt;: Function, Expression {
+ type: "ArrowExpression";
+ params: [ Pattern ];
+ defaults: [ Expression ];
+ rest: Identifier | null;
+ body: BlockStatement | Expression;
+ generator: boolean;
+ expression: boolean;
+}
+</pre>
+
+<p>A fat arrow function expression, i.e., `let foo = (bar) =&gt; { /* body */ }`.</p>
+
+<pre class="notranslate">interface SequenceExpression &lt;: Expression {
+ type: "SequenceExpression";
+ expressions: [ Expression ];
+}</pre>
+
+<p>A sequence expression, i.e., a comma-separated sequence of expressions.</p>
+
+<pre class="notranslate">interface UnaryExpression &lt;: Expression {
+ type: "UnaryExpression";
+ operator: UnaryOperator;
+ prefix: boolean;
+ argument: Expression;
+}</pre>
+
+<p>A unary operator expression.</p>
+
+<pre class="notranslate">interface BinaryExpression &lt;: Expression {
+ type: "BinaryExpression";
+ operator: BinaryOperator;
+ left: Expression;
+ right: Expression;
+}</pre>
+
+<p>A binary operator expression.</p>
+
+<pre class="notranslate">interface AssignmentExpression &lt;: Expression {
+ type: "AssignmentExpression";
+ operator: AssignmentOperator;
+ left: Pattern;
+ right: Expression;
+}</pre>
+
+<p>An assignment operator expression.</p>
+
+<pre class="notranslate">interface UpdateExpression &lt;: Expression {
+ type: "UpdateExpression";
+ operator: UpdateOperator;
+ argument: Expression;
+ prefix: boolean;
+}</pre>
+
+<p>An update (increment or decrement) operator expression.</p>
+
+<pre class="notranslate">interface LogicalExpression &lt;: Expression {
+ type: "LogicalExpression";
+ operator: LogicalOperator;
+ left: Expression;
+ right: Expression;
+}</pre>
+
+<p>A logical operator expression.</p>
+
+<pre class="notranslate">interface ConditionalExpression &lt;: Expression {
+ type: "ConditionalExpression";
+ test: Expression;
+ alternate: Expression;
+ consequent: Expression;
+}</pre>
+
+<p>A conditional expression, i.e., a ternary <code>?</code>/<code>:</code> expression.</p>
+
+<pre class="notranslate">interface NewExpression &lt;: Expression {
+ type: "NewExpression";
+ callee: Expression;
+ arguments: [ Expression ];
+}</pre>
+
+<p>A <code>new</code> expression.</p>
+
+<pre class="notranslate">interface CallExpression &lt;: Expression {
+ type: "CallExpression";
+ callee: Expression;
+ arguments: [ Expression ];
+}</pre>
+
+<p>A function or method call expression.</p>
+
+<pre class="notranslate">interface MemberExpression &lt;: Expression {
+ type: "MemberExpression";
+ object: Expression;
+ property: Identifier | Expression;
+ computed: boolean;
+}</pre>
+
+<p>A member expression. If <code>computed === true</code>, the node corresponds to a computed <code>e1[e2]</code> expression and property is an <code>Expression</code>. If <code>computed === false</code>, the node corresponds to a static <code>e1.x</code> expression and property is an <code>Identifier</code>.</p>
+
+<pre class="notranslate">interface YieldExpression &lt;: Expression {
+ type: "YieldExpression";
+ argument: Expression | null;
+}
+</pre>
+
+<p>A <code>yield</code> expression.</p>
+
+<div class="note"><strong>メモ:</strong> <code>yield</code> expressions are SpiderMonkey-specific.</div>
+
+<pre class="notranslate">interface ComprehensionExpression &lt;: Expression {
+ type: "ComprehensionExpression";
+ body: Expression;
+ blocks: [ ComprehensionBlock | ComprehensionIf ];
+ filter: Expression | null;
+}
+</pre>
+
+<p>An <a href="/en/JavaScript/Guide/Obsolete_Pages/Working_with_Arrays#Array_comprehensions" title="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Working_with_Arrays#Array_comprehensions">array comprehension</a>. The <code>blocks</code> array corresponds to the sequence of <code>for</code> and <code>for each</code> blocks. The optional <code>filter</code> expression corresponds to the final <code>if</code> clause, if present.</p>
+
+<div class="note"><strong>メモ:</strong> Array comprehensions are SpiderMonkey-specific.</div>
+
+<pre class="notranslate">interface GeneratorExpression &lt;: Expression {
+ type: "GeneratorExpression";
+ body: Expression;
+ blocks: [ ComprehensionBlock | ComprehensionIf ];
+ filter: Expression | null;
+}
+</pre>
+
+<p>A <a href="/en/JavaScript/Guide/Iterators_and_Generators#Generator_expressions" title="https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Iterators_and_Generators#Generator_expressions">generator expression</a>. As with array comprehensions, the <code>blocks</code> array corresponds to the sequence of <code>for</code> and <code>for each</code> blocks, and the optional <code>filter</code> expression corresponds to the final <code>if</code> clause, if present.</p>
+
+<div class="note"><strong>メモ:</strong> Generator expressions are SpiderMonkey-specific.</div>
+
+<pre class="notranslate">interface GraphExpression &lt;: Expression {
+ type: "GraphExpression";
+ index: uint32;
+ expression: Literal;
+}
+</pre>
+
+<p>A <a href="/en/JavaScript/Sharp_variables_in_JavaScript" title="https://developer.mozilla.org/en/Sharp_variables_in_JavaScript">graph expression</a>, aka "sharp literal," such as <code>#1={ self: #1# }</code>.</p>
+
+<div class="note"><strong>メモ:</strong> Graph expressions are SpiderMonkey-specific.</div>
+
+<pre class="notranslate">interface GraphIndexExpression &lt;: Expression {
+ type: "GraphIndexExpression";
+ index: uint32;
+}
+</pre>
+
+<p>A <a href="/en/JavaScript/Sharp_variables_in_JavaScript" title="https://developer.mozilla.org/en/Sharp_variables_in_JavaScript">graph index expression</a>, aka "sharp variable," such as <code>#1#</code>.</p>
+
+<div class="note"><strong>メモ:</strong> Graph index expressions are SpiderMonkey-specific.</div>
+
+<pre class="notranslate">interface LetExpression &lt;: Expression {
+ type: "LetExpression";
+ head: [ VariableDeclarator ];
+ body: Expression;
+}
+</pre>
+
+<p>A <code>let</code> expression.</p>
+
+<div class="note"><strong>メモ:</strong> The <code>let</code> expression form is SpiderMonkey-specific.</div>
+
+<h3 id="Patterns">Patterns</h3>
+
+<pre class="notranslate">interface Pattern &lt;: Node { }
+</pre>
+
+<p>JavaScript 1.7 introduced <a href="/en/JavaScript/New_in_JavaScript/1.7#Destructuring_assignment_%28Merge_into_own_page.2fsection%29" title="https://developer.mozilla.org/en/new_in_javascript_1.7#Destructuring_assignment_(Merge_into_own_page.2fsection)">destructuring assignment and binding</a> forms. All binding forms (such as function parameters, variable 宣言, and <code>catch</code> block headers) accept array and object destructuring patterns in addition to plain identifiers. The left-hand sides of assignment expressions can be arbitrary expressions, but in the case where the expression is an object or array literal, it is interpreted by SpiderMonkey as a destructuring pattern.</p>
+
+<p>Since the left-hand side of an assignment can in general be any expression, in an assignment context, a pattern can be any expression. In binding positions (such as function parameters, variable 宣言, and <code>catch</code> headers), patterns can only be identifiers in the base case, not arbitrary expressions.</p>
+
+<pre class="notranslate">interface ObjectPattern &lt;: Pattern {
+ type: "ObjectPattern";
+ properties: [ { key: Literal | Identifier, value: Pattern } ];
+}
+</pre>
+
+<p>An object-destructuring pattern. A literal property in an object pattern can have either a string or number as its <code>value</code>.</p>
+
+<pre class="notranslate">interface ArrayPattern &lt;: Pattern {
+ type: "ArrayPattern";
+ elements: [ Pattern | null ];
+}
+</pre>
+
+<p>An array-destructuring pattern.</p>
+
+<h3 id="Clauses">Clauses</h3>
+
+<pre class="notranslate">interface SwitchCase &lt;: Node {
+ type: "SwitchCase";
+ test: Expression | null;
+ consequent: [ Statement ];
+}
+</pre>
+
+<p>A <code>case</code> (if <code>test</code> is an <code>Expression</code>) or <code>default</code> (if <code>test === null</code>) clause in the body of a <code>switch</code> statement.</p>
+
+<pre class="notranslate">interface CatchClause &lt;: Node {
+ type: "CatchClause";
+ param: Pattern;
+ guard: Expression | null;
+ body: BlockStatement;
+}
+</pre>
+
+<p>A <code>catch</code> clause following a <code>try</code> block. The optional <code>guard</code> property corresponds to the optional expression guard on the bound variable.</p>
+
+<div class="note"><strong>メモ:</strong> The guard expression is SpiderMonkey-specific.</div>
+
+<pre class="notranslate">interface ComprehensionBlock &lt;: Node {
+ type: "ComprehensionBlock";
+ left: Pattern;
+ right: Expression;
+ each: boolean;
+}
+</pre>
+
+<p>A <code>for</code> or <code>for each</code> block in an array comprehension or generator expression.</p>
+
+<pre class="notranslate">interface ComprehensionIf &lt;: Node {
+ type: "ComprehensionIf";
+ test: Expression;
+}</pre>
+
+<p>An <code>if</code> filter in an array comprehension or generator filter.</p>
+
+<div class="note"><strong>メモ:</strong> Array comprehensions and generator expressions are SpiderMonkey-specific.</div>
+
+<h3 id="Miscellaneous">Miscellaneous</h3>
+
+<pre class="notranslate">interface Identifier &lt;: Node, Expression, Pattern {
+ type: "Identifier";
+ name: string;
+}
+</pre>
+
+<p>An identifier. Note that an identifier may be an expression or a destructuring pattern.</p>
+
+<pre class="notranslate">interface Literal &lt;: Node, Expression {
+ type: "Literal";
+ value: string | boolean | null | number | RegExp;
+}
+</pre>
+
+<p>A literal token. Note that a literal can be an expression.</p>
+
+<pre class="notranslate">enum UnaryOperator {
+ "-" | "+" | "!" | "~" | "typeof" | "void" | "delete"
+}
+</pre>
+
+<p>A unary operator token.</p>
+
+<pre class="notranslate">enum BinaryOperator {
+ "==" | "!=" | "===" | "!=="
+ | "&lt;" | "&lt;=" | "&gt;" | "&gt;="
+ | "&lt;&lt;" | "&gt;&gt;" | "&gt;&gt;&gt;"
+ | "+" | "-" | "*" | "/" | "%"
+ | "|" | "^" | "&amp;" | "in"
+ | "instanceof" | ".."
+}
+</pre>
+
+<p>A binary operator token.</p>
+
+<div class="note"><strong>メモ:</strong> The <code>..</code> operator is E4X-specific.</div>
+
+<pre class="notranslate">enum LogicalOperator {
+ "||" | "&amp;&amp;"
+}
+</pre>
+
+<p>A logical operator token.</p>
+
+<pre class="notranslate">enum AssignmentOperator {
+ "=" | "+=" | "-=" | "*=" | "/=" | "%="
+ | "&lt;&lt;=" | "&gt;&gt;=" | "&gt;&gt;&gt;="
+ | "|=" | "^=" | "&amp;="
+}
+</pre>
+
+<p>An assignment operator token.</p>
+
+<pre class="notranslate">enum UpdateOperator {
+ "++" | "--"
+}
+</pre>
+
+<p>An update (increment or decrement) operator token.</p>
+
+<h3 id="E4X">E4X</h3>
+
+<p>This section describes node types that are provided for E4X support. E4X has since been removed as of Gecko 21.</p>
+
+<p>{{ Obsolete_header() }}</p>
+
+<div class="note"><strong>メモ:</strong> E4X is not part of the ECMAScript standard (<a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-262.htm" title="http://www.ecma-international.org/publications/standards/Ecma-262.htm">ECMA-262</a>), but is a separate standard of its own (<a class="external" href="http://www.ecma-international.org/publications/standards/Ecma-357.htm" title="http://www.ecma-international.org/publications/standards/Ecma-357.htm">ECMA-357</a>).</div>
+
+<h4 id="宣言_2">宣言</h4>
+
+<pre class="notranslate">interface XMLDefaultDeclaration &lt;: Declaration {
+ type: "XMLDefaultDeclaration";
+ namespace: Expression;
+}
+</pre>
+
+<p>A <code>default xml namespace</code> declaration.</p>
+
+<h4 id="Expressions_2">Expressions</h4>
+
+<pre class="notranslate">interface XMLAnyName &lt;: Expression {
+ type: "XMLAnyName";
+}
+</pre>
+
+<p>The special E4X wildcard pseudo-identifier <code>*</code>.</p>
+
+<pre class="notranslate">interface XMLQualifiedIdentifier &lt;: Expression {
+ type: "XMLQualifiedIdentifier";
+ left: Identifier | XMLAnyName;
+ right: Identifier | Expression;
+ computed: boolean;
+}
+</pre>
+
+<p>An E4X qualified identifier, i.e., a pseudo-identifier using the namespace separator <code>::</code>. If the qualified identifier has a computed name (i.e., the <code>id::[expr]</code> form), then <code>computed</code> is <code>true</code> and the <code>right</code> property is an expression.</p>
+
+<pre class="notranslate">interface XMLFunctionQualifiedIdentifier &lt;: Expression {
+ type: "XMLFunctionQualifiedIdentifier";
+ right: Identifier | Expression;
+ computed: boolean;
+}
+</pre>
+
+<p>An E4X identifier qualified by the <code>function</code> keyword, e.g., <code>function::id</code>.</p>
+
+<div class="note"><strong>メモ:</strong> <code>function</code>-qualified identifiers are SpiderMonkey-specific.</div>
+
+<pre class="notranslate">interface XMLAttributeSelector &lt;: Expression {
+ type: "XMLAttributeSelector";
+ attribute: Expression;
+}
+</pre>
+
+<p>An E4X attribute selector expression, i.e., an <code>@</code> expression.</p>
+
+<pre class="notranslate">interface XMLFilterExpression &lt;: Expression {
+ type: "XMLFilterExpression";
+ left: Expression;
+ right: Expression;
+}
+</pre>
+
+<p>An E4X list filter expression, i.e., an expression of the form <code>expr.(expr)</code>.</p>
+
+<pre class="notranslate">interface XMLElement &lt;: XML, Expression {
+ type: "XMLElement";
+ contents: [ XML ];
+}
+</pre>
+
+<p>An E4X literal representing a single XML element.</p>
+
+<pre class="notranslate">interface XMLList &lt;: XML, Expression {
+ type: "XMLList";
+ contents: [ XML ];
+}
+</pre>
+
+<p>An E4X literal representing a list of XML elements.</p>
+
+<h4 id="XML">XML</h4>
+
+<pre class="notranslate">interface XML &lt;: Node { }
+</pre>
+
+<p>XML data.</p>
+
+<pre class="notranslate">interface XMLEscape &lt;: XML {
+ type: "XMLEscape";
+ expression: Expression;
+}
+</pre>
+
+<p>XML data with an escaped JavaScript expression.</p>
+
+<pre class="notranslate">interface XMLText &lt;: XML {
+ type: "XMLText";
+ text: string;
+}
+</pre>
+
+<p>Literal XML text.</p>
+
+<pre class="notranslate">interface XMLStartTag &lt;: XML {
+ type: "XMLStartTag";
+ contents: [ XML ];
+}
+</pre>
+
+<p>An XML start tag.</p>
+
+<pre class="notranslate">interface XMLEndTag &lt;: XML {
+ type: "XMLEndTag";
+ contents: [ XML ];
+}
+</pre>
+
+<p>An XML end tag.</p>
+
+<pre class="notranslate">interface XMLPointTag &lt;: XML {
+ type: "XMLPointTag";
+ contents: [ XML ];
+}
+</pre>
+
+<p>An XML point tag.</p>
+
+<pre class="notranslate">interface XMLName &lt;: XML {
+ type: "XMLName";
+ contents: string | [ XML ];
+}
+</pre>
+
+<p>An XML name.</p>
+
+<pre class="notranslate">interface XMLAttribute &lt;: XML {
+ type: "XMLAttribute";
+ value: string;
+}
+</pre>
+
+<p>An XML attribute value.</p>
+
+<pre class="notranslate">interface XMLCdata &lt;: XML {
+ type: "XMLCdata";
+ contents: string;
+}
+</pre>
+
+<p>An XML CDATA node.</p>
+
+<pre class="notranslate">interface XMLComment &lt;: XML {
+ type: "XMLComment";
+ contents: string;
+}
+</pre>
+
+<p>An XML comment.</p>
+
+<pre class="notranslate">interface XMLProcessingInstruction &lt;: XML {
+ type: "XMLProcessingInstruction";
+ target: string;
+ contents: string | null;
+}
+</pre>
+
+<p>An XML processing instruction.</p>
+
+<h2 id="ビルダーオブジェクト">ビルダーオブジェクト</h2>
+
+<p>The optional <strong><code>builder</code></strong> parameter to <code>Reflect.parse()</code> makes it possible to construct user-specified data from the parser, rather than the default <code>Node</code> objects. Builder objects may contain any of the callback methods described in this section.</p>
+
+<p>Each callback can produce any custom, user-defined datatype; these are referred to below as <code>CustomExpression</code>, <code>CustomStatement</code>, etc.</p>
+
+<div class="note"><strong>メモ:</strong> Because this library uses <code>null</code> for optional nodes, it is recommended that user-defined datatypes <strong>not</strong> use <code>null</code> as a representation of an AST node.</div>
+
+<p>If the <strong><code>loc</code></strong> option is enabled (see the <a href="/en/SpiderMonkey/Parser_API#Reflect.parse(src.5b.2c_options.5d)" title="en/SpiderMonkey/Parser API#Reflect.parse(src.5b.2c options.5d)">Reflect.parse() options</a> above), then each callback is provided with the source location information of the parsed node as an extra parameter.</p>
+
+<p>All builder callbacks are optional. When a callback is missing, the default format is used, but the provided builder methods are still used recursively for sub-nodes.</p>
+
+<h3 id="Programs_2">Programs</h3>
+
+<h5 id="programbody_loc"><code>program(body[, loc])</code></h5>
+
+<pre class="notranslate">body: [ CustomStatement ]
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomProgram</p>
+
+<p>Callback to produce a custom program node.</p>
+
+<h3 id="Statements_2">Statements</h3>
+
+<h5 id="emptyStatementloc"><code>emptyStatement([loc])</code></h5>
+
+<pre class="notranslate">loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom empty statement node.</p>
+
+<h5 id="blockStatementbody_loc"><code>blockStatement(body[, loc])</code></h5>
+
+<pre class="notranslate">body: CustomStatement
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom block statement node.</p>
+
+<h5 id="expressionStatementexpr_loc"><code>expressionStatement(expr[, loc])</code></h5>
+
+<pre class="notranslate">expr: CustomExpression
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom expression statement node.</p>
+
+<h5 id="labeledStatementlabel_body_loc"><code>labeledStatement(label, body[, loc])</code></h5>
+
+<pre class="notranslate">label: CustomIdentifier
+body: CustomStatement
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom labeled statement node.</p>
+
+<h5 id="ifStatementtest_cons_alt_loc"><code>ifStatement(test, cons, alt[, loc])</code></h5>
+
+<pre class="notranslate">test: CustomExpression
+cons: CustomStatement
+alt: CustomStatement | null
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom <code>if</code> statement node.</p>
+
+<h5 id="switchStatementdisc_cases_isLexical_loc"><code>switchStatement(disc, cases, isLexical[, loc])</code></h5>
+
+<pre class="notranslate">disc: CustomExpression
+cases: [ CustomSwitchCase ]
+isLexical: boolean
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom <code>switch</code> statement node. The <strong><code>isLexical</code></strong> flag is metadata indicating whether the <code>switch</code> statement contains any unnested <code>let</code> 宣言 (and therefore introduces a new lexical scope).</p>
+
+<h5 id="whileStatementtest_body_loc"><code>whileStatement(test, body[, loc])</code></h5>
+
+<pre class="notranslate">test: CustomExpression
+body: CustomStatement
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom <code>while</code> statement node.</p>
+
+<h5 id="doWhileStatementbody_test_loc"><code>doWhileStatement(body, test[, loc])</code></h5>
+
+<pre class="notranslate">body: CustomStatement
+test: CustomExpression
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom <code>do</code>-<code>while</code> statement node.</p>
+
+<h5 id="forStatementinit_test_update_body_loc"><code>forStatement(init, test, update, body[, loc])</code></h5>
+
+<pre class="notranslate">init: CustomVariableDeclaration | CustomExpression | null
+test: CustomExpression | null
+update: CustomExpression | null
+body: CustomStatement
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom <code>for</code> statement node.</p>
+
+<h5 id="forInStatementleft_right_body_isForEach_loc"><code>forInStatement(left, right, body, isForEach[, loc])</code></h5>
+
+<pre class="notranslate">left: CustomVariableDeclaration | CustomExpression
+right: CustomExpression
+body: CustomStatement
+isForEach: boolean
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom <code>for</code>-<code>in</code> statement node. The <strong><code>isForEach</code></strong> flag indicates whether the node is a <code>for each</code> statement.</p>
+
+<h5 id="breakStatementlabel_loc"><code>breakStatement(label[, loc])</code></h5>
+
+<pre class="notranslate">label: CustomIdentifier | null
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom <code>break</code> statement node.</p>
+
+<h5 id="continueStatementlabel_loc"><code>continueStatement(label[, loc])</code></h5>
+
+<pre class="notranslate">label: CustomIdentifier | null
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom <code>continue</code> statement node.</p>
+
+<h5 id="withStatementobj_body_loc"><code>withStatement(obj, body[, loc])</code></h5>
+
+<pre class="notranslate">obj: CustomExpression
+body: CustomStatement
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom <code>with</code> statement node.</p>
+
+<h5 id="returnStatementarg_loc"><code>returnStatement(arg[, loc])</code></h5>
+
+<pre class="notranslate">arg: CustomExpression | null
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom <code>return</code> statement node.</p>
+
+<h5 id="tryStatementbody_handlers_fin_loc"><code>tryStatement(body, handlers, fin[, loc])</code></h5>
+
+<pre class="notranslate">body: CustomStatement
+handlers: [ CustomCatchClause ]
+fin: CustomStatement | null
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom <code>try</code> statement node.</p>
+
+<h5 id="throwStatementarg_loc"><code>throwStatement(arg[, loc])</code></h5>
+
+<pre class="notranslate">arg: CustomExpression
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom <code>throw</code> statement node.</p>
+
+<h5 id="debuggerStatementloc"><code>debuggerStatement([loc])</code></h5>
+
+<pre class="notranslate">loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom <code>debugger</code> statement node.</p>
+
+<h5 id="letStatementhead_body_loc"><code>letStatement(head, body[, loc])</code></h5>
+
+<pre class="notranslate">head: [ CustomDeclarator ]
+body: CustomStatement
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomStatement</p>
+
+<p>Callback to produce a custom <code>let</code> statement node.</p>
+
+<h3 id="宣言_3">宣言</h3>
+
+<h5 id="functionDeclarationname_args_body_isGenerator_isExpression_loc"><code>functionDeclaration(name, args, body, isGenerator, isExpression[, loc])</code></h5>
+
+<pre class="notranslate">name: string
+args: [ CustomPattern ]
+body: CustomStatement | CustomExpression
+isGenerator: boolean
+isExpression: boolean
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomDeclaration</p>
+
+<p>Callback to produce a custom function declaration node.</p>
+
+<h5 id="variableDeclarationkind_dtors_loc"><code>variableDeclaration(kind, dtors[, loc])</code></h5>
+
+<pre class="notranslate">kind: "const" | "let" | "var"
+dtors: [ CustomDeclarator ]
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomDeclaration</p>
+
+<p>Callback to produce a custom variable declaration node.</p>
+
+<h5 id="variableDeclaratorpatt_init_loc"><code>variableDeclarator(patt, init[, loc])</code></h5>
+
+<pre class="notranslate">patt: CustomPattern
+init: CustomExpression | null
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomDeclarator</p>
+
+<p>Callback to produce a custom variable declarator node.</p>
+
+<h3 id="Expressions_3">Expressions</h3>
+
+<h5 id="sequenceExpressionexprs_loc"><code>sequenceExpression(exprs[, loc])</code></h5>
+
+<pre class="notranslate">exprs: [ CustomExpression ]
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom sequence expression node.</p>
+
+<h5 id="conditionalExpressiontest_cons_alt_loc"><code>conditionalExpression(test, cons, alt[, loc])</code></h5>
+
+<pre class="notranslate">test: CustomExpression
+cons: CustomExpression
+alt: CustomExpression
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom conditional expression node.</p>
+
+<h5 id="unaryExpressionop_arg_isPrefix_loc"><code>unaryExpression(op, arg, isPrefix[, loc])</code></h5>
+
+<pre class="notranslate">op: UnaryOperator
+arg: CustomExpression
+isPrefix: boolean
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom unary expression node.</p>
+
+<h5 id="binaryExpressionop_left_right_loc"><code>binaryExpression(op, left, right[, loc])</code></h5>
+
+<pre class="notranslate">op: BinaryOperator
+left: CustomExpression
+right: CustomExpression
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom binary expression node.</p>
+
+<h5 id="assignmentExpressionop_left_right_loc"><code>assignmentExpression(op, left, right[, loc])</code></h5>
+
+<pre class="notranslate">op: AssignmentOperator
+left: CustomExpression
+right: CustomExpression
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom assignment expression node.</p>
+
+<h5 id="logicalExpressionop_left_right_loc"><code>logicalExpression(op, left, right[, loc])</code></h5>
+
+<pre class="notranslate">op: LogicalOperator
+left: CustomExpression
+right: CustomExpression
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom logical expression node.</p>
+
+<h5 id="updateExpressionop_arg_isPrefix_loc"><code>updateExpression(op, arg, isPrefix[, loc])</code></h5>
+
+<pre class="notranslate">op: UpdateOperator
+arg: CustomExpression
+isPrefix: boolean
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom update expression node.</p>
+
+<h5 id="newExpressioncallee_args_loc"><code>newExpression(callee, args[, loc])</code></h5>
+
+<pre class="notranslate">callee: CustomExpression
+args: [ CustomExpression ]
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom <code>new</code>-expression node.</p>
+
+<h5 id="callExpressioncallee_args_loc"><code>callExpression(callee, args[, loc])</code></h5>
+
+<pre class="notranslate">callee: CustomExpression
+args: [ CustomExpression ]
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom function call node.</p>
+
+<h5 id="memberExpressionobj_prop_isComputed_loc"><code>memberExpression(obj, prop, isComputed[, loc])</code></h5>
+
+<pre class="notranslate">obj: CustomExpression
+prop: CustomIdentifier | CustomExpression
+isComputed: boolean
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom member expression node.</p>
+
+<h5 id="functionExpressionname_args_body_isGenerator_isExpression_loc"><code>functionExpression(name, args, body, isGenerator, isExpression[, loc])</code></h5>
+
+<pre class="notranslate">name: CustomIdentifier | null
+args: [ CustomPattern ]
+body: CustomStatement | CustomExpression
+isGenerator: boolean
+isExpression: boolean
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom function expression node.</p>
+
+<h5 id="arrayExpressionelts_loc"><code>arrayExpression(elts[, loc])</code></h5>
+
+<pre class="notranslate">elts: [ CustomExpression | null ]
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom array expression node.</p>
+
+<h5 id="objectExpressionprops_loc"><code>objectExpression(props[, loc])</code></h5>
+
+<pre class="notranslate">props: [ CustomObjectProperty ]
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom object expression node.</p>
+
+<h5 id="thisExpressionloc"><code>thisExpression([loc])</code></h5>
+
+<pre class="notranslate">loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom <code>this</code> expression node.</p>
+
+<h5 id="graphExpressionindex_expr_loc"><code>graphExpression(index, expr[, loc])</code></h5>
+
+<pre class="notranslate">index: uint32 &gt;= 1
+expr: CustomExpression
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom <code>graph</code> expression node.</p>
+
+<h5 id="graphIndexExpressionindex_loc"><code>graphIndexExpression(index[, loc])</code></h5>
+
+<pre class="notranslate">index: uint32 &gt;= 1
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom <code>graph index</code> expression node.</p>
+
+<h5 id="comprehensionExpressionbody_blocks_filter_loc"><code>comprehensionExpression(body, blocks, filter[, loc])</code></h5>
+
+<pre class="notranslate">body: CustomExpression
+blocks: [ CustomComprehensionBlock | CustomComprehensionIf ]
+filter: CustomExpression | null
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom <code>comprehension</code> expression node.</p>
+
+<h5 id="generatorExpressionbody_blocks_filter_loc"><code>generatorExpression(body, blocks, filter[, loc])</code></h5>
+
+<pre class="notranslate">body: CustomExpression
+blocks: [ CustomComprehensionBlock | CustomComprehensionIf ]
+filter: CustomExpression | null
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom <code>generator</code> expression node.</p>
+
+<h5 id="yieldExpressionarg_loc"><code>yieldExpression(arg[, loc])</code></h5>
+
+<pre class="notranslate">arg: CustomExpression
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom <code>yield</code> expression node.</p>
+
+<h5 id="letExpressionhead_body_loc"><code>letExpression(head, body[, loc])</code></h5>
+
+<pre class="notranslate">head: [ CustomDeclarator ]
+body: CustomExpression
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomExpression</p>
+
+<p>Callback to produce a custom <code>let</code> expression node.</p>
+
+<h3 id="Patterns_2">Patterns</h3>
+
+<h5 id="arrayPatternelts_loc"><code>arrayPattern(elts[, loc])</code></h5>
+
+<pre class="notranslate">elts: [ CustomPattern | null ]
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomPattern</p>
+
+<p>Callback to produce a custom array destructuring pattern node.</p>
+
+<h5 id="objectPatternprops_loc"><code>objectPattern(props[, loc])</code></h5>
+
+<pre class="notranslate">props: [ CustomPropertyPattern ]
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomPattern</p>
+
+<p>Callback to produce a custom object destructuring pattern node.</p>
+
+<h5 id="propertyPatternkey_patt_loc"><code>propertyPattern(key, patt[, loc])</code></h5>
+
+<pre class="notranslate">key: CustomLiteral | CustomIdentifier
+patt: CustomPattern
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomPropertyPattern</p>
+
+<p>Callback to produce a custom object property destructuring pattern node.</p>
+
+<h3 id="Clauses_2">Clauses</h3>
+
+<h5 id="switchCasetest_cons_loc"><code>switchCase(test, cons[, loc])</code></h5>
+
+<pre class="notranslate">test: CustomExpression | null
+cons: [ CustomStatement ]
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomSwitchCase</p>
+
+<p>Callback to produce a custom <code>case</code> or <code>default</code> clause node. The <strong><code>test</code></strong> argument is <code>null</code> if and only if the node is a <code>default</code> clause.</p>
+
+<h5 id="catchClausearg_guard_body_loc"><code>catchClause(arg, guard, body[, loc])</code></h5>
+
+<pre class="notranslate">arg: CustomPattern
+guard: CustomExpression
+body: CustomStatement
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomCatchClause</p>
+
+<p>Callback to produce a custom <code>catch</code> clause node.</p>
+
+<h5 id="comprehensionBlockleft_right_isForEach_loc"><code>comprehensionBlock(left, right, isForEach[, loc])</code></h5>
+
+<pre class="notranslate">left: CustomPattern
+right: CustomExpression
+isForEach: boolean
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomComprehensionBlock</p>
+
+<p>Callback to produce a custom comprehension block node. The <strong><code>isForEach</code></strong> flag indicates whether the node is a <code>for each</code> block.</p>
+
+<p><strong><code>comprehensionIf(test[, loc])</code></strong></p>
+
+<pre class="notranslate">test: CustomExpression
+loc: SourceLocation</pre>
+
+<p>戻り値: CustomComprehensionIf</p>
+
+<p>Callback to produce a custom comprehension if node.</p>
+
+<h3 id="Miscellaneous_2">Miscellaneous</h3>
+
+<h5 id="identifiername_loc"><code>identifier(name[, loc])</code></h5>
+
+<pre class="notranslate">name: string
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomIdentifier/CustomPattern/CustomExpression</p>
+
+<p>Callback to produce a custom identifier node.</p>
+
+<h5 id="literalval_loc"><code>literal(val[, loc])</code></h5>
+
+<pre class="notranslate">val: string | boolean | null | number | RegExp
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomLiteral / CustomExpression</p>
+
+<p>Callback to produce a custom literal node.</p>
+
+<h5 id="propertykind_key_val_loc"><code>property(kind, key, val[, loc])</code></h5>
+
+<pre class="notranslate">kind: "init" | "get" | "set"
+key: CustomLiteral | CustomIdentifier
+val: CustomExpression
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomObjectProperty</p>
+
+<p>Callback to produce a custom object property initializer node.</p>
+
+<h3 id="E4X_2">E4X</h3>
+
+<h4 id="宣言_4">宣言</h4>
+
+<h5 id="xmlDefaultDeclarationns_loc"><code>xmlDefaultDeclaration(ns[, loc])</code></h5>
+
+<pre class="notranslate">loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomDeclaration</p>
+
+<p>Callback to produce a custom XML default namespace declaration node.</p>
+
+<h4 id="Expressions_4">Expressions</h4>
+
+<h5 id="xmlAnyNameloc"><code>xmlAnyName([loc])</code></h5>
+
+<pre class="notranslate">loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomXMLAnyName/CustomXML/CustomExpression</p>
+
+<p>Callback to produce a custom XML node for the wildcard pseudo-identifier <code>*</code>.</p>
+
+<h5 id="xmlAttributeSelectorexpr_loc"><code>xmlAttributeSelector(expr[, loc])</code></h5>
+
+<pre class="notranslate">expr: CustomExpression
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomXML/CustomExpression</p>
+
+<p>Callback to produce a custom XML attribute selector node.</p>
+
+<h5 id="xmlFilterExpressionleft_right_loc"><code>xmlFilterExpression(left, right[, loc])</code></h5>
+
+<pre class="notranslate">left: CustomExpression
+right: CustomExpression
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomXML/CustomExpression</p>
+
+<p>Callback to produce a custom XML filter expression node.</p>
+
+<h5 id="xmlQualifiedIdentifierleft_right_isComputed_loc"><code>xmlQualifiedIdentifier(left, right, isComputed[, loc])</code></h5>
+
+<pre class="notranslate">left: CustomIdentifier | CustomXMLAnyName
+right: CustomIdentifier | CustomExpression
+isComputed: boolean
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomXML/CustomExpression</p>
+
+<p>Callback to produce a custom qualified identifier node.</p>
+
+<h5 id="xmlFunctionQualifiedIdentifierright_isComputed_loc"><code>xmlFunctionQualifiedIdentifier(right, isComputed[, loc])</code></h5>
+
+<pre class="notranslate">right: CustomIdentifier | CustomExpression
+isComputed: boolean
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomXML/CustomExpression</p>
+
+<p>Callback to produce a custom XML <code>function</code>-qualified identifier node.</p>
+
+<h5 id="xmlElementcontents_loc"><code>xmlElement(contents[, loc])</code></h5>
+
+<pre class="notranslate">contents: [ CustomXML ]
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomXML/CustomExpression</p>
+
+<p>Callback to produce a custom XML element node.</p>
+
+<h5 id="xmlListcontents_loc"><code>xmlList(contents[, loc])</code></h5>
+
+<pre class="notranslate">contents: [ CustomXML ]
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomXML/CustomExpression</p>
+
+<p>Callback to produce a custom XML list node.</p>
+
+<h4 id="XML_2">XML</h4>
+
+<h5 id="xmlEscapeexpr_loc"><code>xmlEscape(expr[, loc])</code></h5>
+
+<pre class="notranslate">expr: CustomExpression
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomXML</p>
+
+<p>Callback to produce a custom XML escape node.</p>
+
+<h5 id="xmlTexttext_loc"><code>xmlText(text[, loc])</code></h5>
+
+<pre class="notranslate">text: string
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomXML</p>
+
+<p>Callback to produce a custom XML text node.</p>
+
+<h5 id="xmlStartTagcontents_loc"><code>xmlStartTag(contents[, loc])</code></h5>
+
+<pre class="notranslate">contents: [ CustomXML ]
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomXML</p>
+
+<p>Callback to produce a custom XML start-tag node.</p>
+
+<h5 id="xmlEndTagcontents_loc"><code>xmlEndTag(contents[, loc])</code></h5>
+
+<pre class="notranslate">contents: [ CustomXML ]
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomXML</p>
+
+<p>Callback to produce a custom XML end-tag node.</p>
+
+<h5 id="xmlPointTagcontents_loc"><code>xmlPointTag(contents[, loc])</code></h5>
+
+<pre class="notranslate">contents: [ CustomXML ]
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomXML</p>
+
+<p>Callback to produce a custom XML point tag node.</p>
+
+<h5 id="xmlNamecontents_loc"><code>xmlName(contents[, loc])</code></h5>
+
+<pre class="notranslate">contents: string | [ CustomXML ]
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomXML</p>
+
+<p>Callback to produce a custom XML name node.</p>
+
+<h5 id="xmlAttributevalue_loc"><code>xmlAttribute(value[, loc])</code></h5>
+
+<pre class="notranslate">value: string
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomXML</p>
+
+<p>Callback to produce a custom XML attribute node.</p>
+
+<h5 id="xmlCdatacontents_loc"><code>xmlCdata(contents[, loc])</code></h5>
+
+<pre class="notranslate">contents: string
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomXML</p>
+
+<p>Callback to produce a custom XML <code>CDATA</code> node.</p>
+
+<h5 id="xmlCommentcontents_loc"><code>xmlComment(contents[, loc])</code></h5>
+
+<pre class="notranslate">contents: string
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomXML</p>
+
+<p>Callback to produce a custom XML comment node.</p>
+
+<h5 id="xmlProcessingInstructiontarget_contents_loc"><code>xmlProcessingInstruction(target, contents[, loc])</code></h5>
+
+<pre class="notranslate">target: string
+contents: string | null
+loc: SourceLocation
+</pre>
+
+<p><strong>戻り値:</strong> CustomXML</p>
+
+<p>Callback to produce a custom XML processing instruction node.</p>
diff --git a/files/ja/mozilla/projects/spidermonkey/releases/52/index.html b/files/ja/mozilla/projects/spidermonkey/releases/52/index.html
new file mode 100644
index 0000000000..d3ddc2bdb5
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/releases/52/index.html
@@ -0,0 +1,30 @@
+---
+title: SpiderMonkey 52
+slug: Mozilla/Projects/SpiderMonkey/Releases/52
+translation_of: Mozilla/Projects/SpiderMonkey/Releases/52
+---
+<p>{{SpiderMonkeySidebar("Releases")}}</p>
+
+<div class="note" style="color: black;">
+<p><strong>これらのリリースノートは不完全です。</strong></p>
+
+<p>Mozilla JavaScript チームは <strong>SpiderMonkey 52</strong> のリリースを発表しました。treeherder から完全なソースコードをダウンロードするには、<a href="https://treeherder.mozilla.org/#/jobs?repo=mozilla-esr52&amp;filter-searchStr=spidermonkey-sm-package">mozilla-esr52 リポジトリ</a>にアクセスし、表示される最初の SM(pkg) リンクをクリックします。それは、左下の小さなウィンドウに "artifact uploaded:mozjs-52.x.y.tar.bz2" のような行が表示されます。</p>
+
+<p>SpiderMonkey 52は、Firefox 52 に搭載された JavaScript エンジンです。以前の SpiderMonkey リリースよりもパフォーマンスが向上しています。また、以下で詳しく説明する新しい言語と API の機能も含まれています。</p>
+
+<p><a href="news://news.mozilla.org/mozilla.dev.tech.js-engine">mozilla.dev.tech.js-engineニュースグループ</a> に投稿することで、このリリースに関するご意見をお聞かせください。また、<a class="link-https" href="https://bugzilla.mozilla.org/">bugzilla.mozilla.org</a> の Product: Core、Component: JavaScript engine のバグを報告してください。 バグを bug 837921 ("sm.embedding"のエイリアス) にすることをお勧めします。</p>
+</div>
+
+<h2 id="プラットフォームサポート"> プラットフォームサポート</h2>
+
+<h2 id="SpiderMonkey_52_への移行">SpiderMonkey 52 への移行</h2>
+
+<h2 id="新しい_JavaScript_言語機能">新しい JavaScript 言語機能</h2>
+
+<h2 id="新しい_C_API">新しい C++ API</h2>
+
+<h2 id="削除された_API">削除された API</h2>
+
+<h2 id="API_の変更">API の変更</h2>
+
+<h2 id="既知の問題">既知の問題</h2>
diff --git a/files/ja/mozilla/projects/spidermonkey/releases/index.html b/files/ja/mozilla/projects/spidermonkey/releases/index.html
new file mode 100644
index 0000000000..f074c9aeb9
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/releases/index.html
@@ -0,0 +1,34 @@
+---
+title: SpiderMonkey リリースノート
+slug: Mozilla/Projects/SpiderMonkey/Releases
+translation_of: Mozilla/Projects/SpiderMonkey/Releases
+---
+<div>{{SpiderMonkeySidebar("Releases")}}</div>
+
+<div class="summary">
+<p>ここでは <a href="/docs/Mozilla/Projects/SpiderMonkey">SpiderMonkey</a> のリリースノートを一覧で表示しています。</p>
+</div>
+
+<h2 id="現在のリリース">現在のリリース</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/38">SpiderMonkey 38</a></li>
+</ul>
+
+<h2 id="次のリリース">次のリリース</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/45">SpiderMonkey 45</a></li>
+</ul>
+
+<h2 id="過去のリリース">過去のリリース</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/31">SpiderMonkey 31</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/24">SpiderMonkey 24</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/17">SpiderMonkey 17</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/1.8.8">SpiderMonkey 1.8.8</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/1.8.7">SpiderMonkey 1.8.7</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/1.8.5">SpiderMonkey 1.8.5</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/SpiderMonkey/Releases/1.8">SpiderMonkey 1.8</a></li>
+</ul>
diff --git a/files/ja/mozilla/projects/spidermonkey/shell_global_objects/index.html b/files/ja/mozilla/projects/spidermonkey/shell_global_objects/index.html
new file mode 100644
index 0000000000..b560b3e934
--- /dev/null
+++ b/files/ja/mozilla/projects/spidermonkey/shell_global_objects/index.html
@@ -0,0 +1,662 @@
+---
+title: Shell のグローバルオブジェクト
+slug: Mozilla/Projects/SpiderMonkey/Shell_global_objects
+tags:
+ - JavaScript
+ - NeedsContent
+ - SpiderMonkey
+translation_of: Mozilla/Projects/SpiderMonkey/Shell_global_objects
+---
+<p>これらは、プログラムを起動したときに SpiderMonkey <code>js</code> コマンドラインインタプリタによって自動的に設定される<strong>グローバルオブジェクト</strong>です。</p>
+
+<p><strong>メモ</strong>: このリストは、<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell">JavaScript シェルの紹介</a>の「<a href="/ja/docs/Mozilla/Projects/SpiderMonkey/Introduction_to_the_JavaScript_shell#Built-in_functions">組み込み関数</a>」と重複しているため、おそらく完全ではありません。詳しくは <code>js/src/shell/js.cpp</code> (<code>shell_functions</code> 周辺) をご覧ください。</p>
+
+<p>このページには SpiderMonkey 53 で利用可能な変数と関数がリストされています。各バージョン間には多少の違いがあるかもしれません。js シェルの <code>help()</code> 関数で関数の一覧を見ることができます。</p>
+
+<h2 id="変数">変数</h2>
+
+<dl>
+ <dt><code>scriptArgs</code></dt>
+ <dd>js シェルに渡された引数を含む配列。</dd>
+ <dt><code>scriptPath</code></dt>
+ <dd>スクリプトのパスである文字列。</dd>
+ <dt><code>console</code></dt>
+ <dd>以下のプロパティを持つオブジェクト:
+ <dl>
+ <dt><code>log</code></dt>
+ <dd>式を評価して <code>stdout</code> に出力します。この関数は <code>print()</code> 関数のエイリアスです。</dd>
+ </dl>
+ </dd>
+ <dt><code>timesAccessed</code></dt>
+ <dd>この変数が何回アクセスされたかを示す数を返します</dd>
+ <dt>PerfMeasurement</dt>
+ <dd><a href="/ja/docs/Mozilla/JavaScript_code_modules/PerfMeasurement.jsm">PerfMeasurement.jsm</a> を参照してください。</dd>
+</dl>
+
+<h2 id="シェルのみの関数">シェルのみの関数</h2>
+
+<h3 id="Functions_always_available">Functions always available</h3>
+
+<dl>
+ <dt><code>version([number])</code></dt>
+ <dd>Get or force a script compilation version number.</dd>
+ <dt><code>options([option ...])</code></dt>
+ <dd>Get or toggle JavaScript options.</dd>
+ <dt><code>load(['foo.js' ...])</code></dt>
+ <dd>Load files named by string arguments. Filename is relative to the current working directory.</dd>
+ <dt><code>loadRelativeToScript(['foo.js' ...])</code></dt>
+ <dd>Load files named by string arguments. Filename is relative to the calling script.</dd>
+ <dt><code>evaluate(code[, options])</code></dt>
+ <dd>Evaluate code as though it were the contents of a file. <code>options</code> is an optional object that may have these properties:
+ <dl>
+ <dt><code>isRunOnce</code></dt>
+ <dd>use the <code>isRunOnce</code> compiler option (default: <code>false</code>)</dd>
+ <dt><code>noScriptRval</code></dt>
+ <dd>use the no-script-rval compiler option (default: <code>false</code>)</dd>
+ <dt><code>fileName</code></dt>
+ <dd>filename for error messages and debug info</dd>
+ <dt><code>lineNumber</code></dt>
+ <dd>starting line number for error messages and debug info</dd>
+ <dt><code>columnNumber</code></dt>
+ <dd>starting column number for error messages and debug info</dd>
+ <dt><code>global</code></dt>
+ <dd>global in which to execute the code</dd>
+ <dt><code>newContext</code></dt>
+ <dd>if <code>true</code>, create and use a new <code>cx</code> (default: <code>false</code>)</dd>
+ <dt><code>catchTermination</code></dt>
+ <dd>if <code>true</code>, catch termination (failure without an exception value, as for slow scripts or out-of-memory) and return <code>'terminated'</code></dd>
+ <dt><code>element</code></dt>
+ <dd>if present with value <code>v</code>, convert <code>v</code> to an object <code>o</code> and mark the source as being attached to the DOM element <code>o</code>. If the property is omitted or <code>v</code> is <code>null</code>, don't attribute the source to any DOM element.</dd>
+ <dt><code>elementAttributeName</code></dt>
+ <dd>if present and not <code>undefined</code>, the name of property of <code>element</code> that holds this code. This is what <code>Debugger.Source.prototype.elementAttributeName</code> returns.</dd>
+ <dt><code>sourceMapURL</code></dt>
+ <dd>if present with value <code>v</code>, convert <code>v</code> to a string, and provide that as the code's source map URL. If omitted, attach no source map URL to the code (although the code may provide one itself, via a <code>//#sourceMappingURL</code> comment).</dd>
+ <dt><code>sourceIsLazy</code></dt>
+ <dd>if present and <code>true</code>, indicates that, after compilation, script source should not be cached by the JS engine and should be lazily loaded from the embedding as-needed.</dd>
+ <dt><code>loadBytecode</code></dt>
+ <dd>if <code>true</code>, and if the source is a <code>CacheEntryObject</code>, the bytecode would be loaded and decoded from the cache entry instead of being parsed, then it would be executed as usual.</dd>
+ <dt><code>saveBytecode</code></dt>
+ <dd>if <code>true</code>, and if the source is a <code>CacheEntryObject</code>, the bytecode would be encoded and saved into the cache entry after the script execution.</dd>
+ <dt><code>assertEqBytecode</code></dt>
+ <dd>if <code>true</code>, and if both <code>loadBytecode</code> and <code>saveBytecode</code> are <code>true</code>, then the loaded bytecode and the encoded bytecode are compared. and an assertion is raised if they differ.</dd>
+ </dl>
+ </dd>
+ <dt><code>run('foo.js')</code></dt>
+ <dd>Run the file named by the first argument, returning the number of of milliseconds spent compiling and executing it.</dd>
+</dl>
+
+<dl>
+ <dt><code>read('bar.js')</code></dt>
+ <dd>Reads the file named by the first argument, returning the content of the file as string.</dd>
+</dl>
+
+<dl>
+ <dt><code>readline()</code></dt>
+ <dd>Read a single line from <code>stdin</code>.</dd>
+ <dt><code>readlineBuf([ buf ])</code></dt>
+ <dd>Emulate <code>readline()</code> on the specified string. The first call with a string argument sets the source buffer. Subsequent calls without an argument then read from this buffer line by line.</dd>
+ <dt><code>print([exp ...])</code></dt>
+ <dd>Evaluate and print expressions to <code>stdout</code>.</dd>
+ <dt><code>printErr([exp ...])</code></dt>
+ <dd>Evaluate and print expressions to <code>stderr</code>.</dd>
+ <dt><code>putstr([exp])</code></dt>
+ <dd>Evaluate and print expression without newline.</dd>
+ <dt><code>dateNow()</code></dt>
+ <dd>Return the current time with sub-ms precision.</dd>
+ <dt><code>help([name ...])</code></dt>
+ <dd>Display usage and help messages.</dd>
+ <dt><code>quit()</code></dt>
+ <dd>Quit the shell.</dd>
+ <dt><code>assertEq(actual, expected[, msg])</code></dt>
+ <dd>Throw if the first two arguments are not the same (both <code>+0</code> or both <code>-0</code>, both <code>NaN</code>, or non-zero and <code>===</code>).</dd>
+ <dt><code>startTimingMutator()</code></dt>
+ <dd>Start accounting time to mutator vs GC.</dd>
+ <dt><code>stopTimingMutator()</code></dt>
+ <dd>Stop accounting time to mutator vs GC and dump the results.</dd>
+ <dt><code>throwError()</code></dt>
+ <dd>Throw an error from <code>JS_ReportError</code>.</dd>
+ <dt><code>intern(str)</code></dt>
+ <dd>Internalize <code>str</code> in the atom table.</dd>
+ <dt><code>getslx(obj)</code></dt>
+ <dd>Get script line extent.</dd>
+ <dt><code>evalcx(s[, o])</code></dt>
+ <dd>Evaluate <code>s</code> in optional sandbox object <code>o</code>. if <code>(s == '' &amp;&amp; !o)</code> return new <code>o</code> with eager standard classes, if <code>(s == 'lazy' &amp;&amp; !o)</code> return new <code>o</code> with lazy standard classes</dd>
+ <dt><code>evalInWorker(str)</code></dt>
+ <dd>Evaluate <code>str</code> in a separate thread with its own runtime.</dd>
+ <dt><code>getSharedArrayBuffer()</code></dt>
+ <dd>Retrieve the <code>SharedArrayBuffer</code> object from the cross-worker mailbox. The object retrieved may not be identical to the object that was installed, but it references the same shared memory. <code>getSharedArrayBuffer</code> performs an ordering memory barrier.</dd>
+ <dt><code>setSharedArrayBuffer()</code></dt>
+ <dd>Install the <code>SharedArrayBuffer</code> object in the cross-worker mailbox. <code>setSharedArrayBuffer</code> performs an ordering memory barrier.</dd>
+ <dt><code>shapeOf(obj)</code></dt>
+ <dd>Get the shape of <code>obj</code> (an implementation detail).</dd>
+ <dt><code>groupOf(obj)</code></dt>
+ <dd>Get the group of <code>obj</code> (an implementation detail).</dd>
+ <dt><code>unwrappedObjectsHaveSameShape(obj1, obj2)</code></dt>
+ <dd>Returns <code>true</code> iff <code>obj1</code> and <code>obj2</code> have the same shape, <code>false</code> otherwise. Both objects are unwrapped first, so this can be used on objects from different globals.</dd>
+ <dt><code>sleep(dt)</code></dt>
+ <dd>Sleep for <code>dt</code> seconds.</dd>
+ <dt><code>compile(code)</code></dt>
+ <dd>Compiles a string to bytecode, potentially throwing.</dd>
+ <dt><code>parseModule(code)</code></dt>
+ <dd>Parses source text as a module and returns a <code>Module</code> object.</dd>
+ <dt><code>setModuleResolveHook(function(module, specifier) {})</code></dt>
+ <dd>Set the <code>HostResolveImportedModule</code> hook to <code>function</code>. This hook is used to look up a previously loaded module object. It should be implemented by the module loader.</dd>
+ <dt><code>getModuleLoadPath()</code></dt>
+ <dd>Return any <code>--module-load-path</code> argument passed to the shell. Used by the module loader.</dd>
+ <dt><code>parse(code)</code></dt>
+ <dd>Parses a string, potentially throwing.</dd>
+ <dt><code>syntaxParse(code)</code></dt>
+ <dd>Check the syntax of a string, returning success value</dd>
+ <dt><code>offThreadCompileScript(code[, options])</code></dt>
+ <dd>Compile <code>code</code> on a helper thread. To wait for the compilation to finish and run the code, call <code>runOffThreadScript</code>. If present, <code>options</code> may have properties saying how the code should be compiled:
+ <dl>
+ <dt><code>noScriptRval</code></dt>
+ <dd>use the no-script-rval compiler option (default: <code>false</code>)</dd>
+ <dt><code>fileName</code></dt>
+ <dd>filename for error messages and debug info</dd>
+ <dt><code>lineNumber</code></dt>
+ <dd>starting line number for error messages and debug info</dd>
+ <dt><code>columnNumber</code></dt>
+ <dd>starting column number for error messages and debug info</dd>
+ <dt><code>element</code></dt>
+ <dd>if present with value <code>v</code>, convert <code>v</code> to an object <code>o</code> and mark the source as being attached to the DOM element <code>o</code>. If the property is omitted or <code>v</code> is <code>null</code>, don't attribute the source to any DOM element.</dd>
+ <dt><code>elementAttributeName</code></dt>
+ <dd>if present and not <code>undefined</code>, the name of property of <code>element</code> that holds this code. This is what <code>Debugger.Source.prototype.elementAttributeName</code> returns.</dd>
+ </dl>
+ </dd>
+ <dt><code>runOffThreadScript()</code></dt>
+ <dd>Wait for off-thread compilation to complete. If an error occurred, throw the appropriate exception; otherwise, run the script and return its value.</dd>
+ <dt><code>offThreadCompileModule(code)</code></dt>
+ <dd>Compile <code>code</code> on a helper thread. To wait for the compilation to finish and get the module object, call <code>finishOffThreadModule</code>.</dd>
+ <dt><code>finishOffThreadModule()</code></dt>
+ <dd>Wait for off-thread compilation to complete. If an error occurred, throw the appropriate exception; otherwise, return the module object</dd>
+ <dt><code>timeout([seconds], [func])</code></dt>
+ <dd>Get/Set the limit in seconds for the execution time for the current context. A negative value (default) means that the execution time is unlimited. If a second argument is provided, it will be invoked when the timer elapses. Calling this function will replace any callback set by <code>setInterruptCallback</code>.</dd>
+ <dt><code>interruptIf(cond)</code></dt>
+ <dd>Requests interrupt callback if cond is <code>true</code>. If a callback function is set via <code>timeout</code> or <code>setInterruptCallback</code>, it will be called. No-op otherwise.</dd>
+ <dt><code>invokeInterruptCallback(fun)</code></dt>
+ <dd>Forcefully set the interrupt flag and invoke the interrupt handler. If a callback function is set via <code>timeout</code> or <code>setInterruptCallback</code>, it will be called. Before returning, fun is called with the return value of the interrupt handler.</dd>
+ <dt><code>setInterruptCallback(func)</code></dt>
+ <dd>Sets <code>func</code> as the interrupt callback function. Calling this function will replace any callback set by <code>timeout</code>.</dd>
+ <dt><code>enableLastWarning()</code></dt>
+ <dd>Enable storing the last warning.</dd>
+ <dt><code>disableLastWarning()</code></dt>
+ <dd>Disable storing the last warning.</dd>
+ <dt><code>getLastWarning()</code></dt>
+ <dd>Returns an object that represents the last warning.</dd>
+ <dt><code>clearLastWarning()</code></dt>
+ <dd>Clear the last warning.</dd>
+ <dt><code>elapsed()</code></dt>
+ <dd>Execution time elapsed for the current thread.</dd>
+ <dt><code>decompileFunction(func)</code></dt>
+ <dd>Decompile a function.</dd>
+ <dt><code>decompileThis()</code></dt>
+ <dd>Decompile the currently executing script.</dd>
+ <dt><code>thisFilename()</code></dt>
+ <dd>Return the filename of the current script</dd>
+ <dt><code>newGlobal([options])</code></dt>
+ <dd>Return a new global object in a new compartment. If options is given, it may have any of the following properties:
+ <dl>
+ <dt><code>sameZoneAs</code></dt>
+ <dd>the compartment will be in the same zone as the given object (defaults to a new zone)</dd>
+ <dt><code>invisibleToDebugger</code></dt>
+ <dd>the global will be invisible to the debugger (default <code>false</code>)</dd>
+ <dt><code>principal</code></dt>
+ <dd>if present, its value converted to a number must be an integer that fits in 32 bits; use that as the new compartment's principal. Shell principals are toys, meant only for testing; one shell principal subsumes another if its set bits are a superset of the other's. Thus, a principal of <code>0</code> subsumes nothing, while a principals of <code>~0</code> subsumes all other principals. The absence of a principal is treated as if its bits were <code>0xffff</code>, for subsumption purposes. If this property is omitted, supply no principal.</dd>
+ </dl>
+ </dd>
+ <dt><code>createMappedArrayBuffer(filename, [offset, [size]])</code></dt>
+ <dd>Create an array buffer that mmaps the given file.</dd>
+ <dt><code>addPromiseReactions(promise, onResolve, onReject)</code></dt>
+ <dd>Calls the <code>JS::AddPromiseReactions</code> JSAPI function with the given arguments.</dd>
+ <dt><code>getMaxArgs()</code></dt>
+ <dd>Return the maximum number of supported args for a call.</dd>
+ <dt><code>objectEmulatingUndefined()</code></dt>
+ <dd>Return a new object <code>obj</code> for which <code>typeof obj === "undefined"</code>, <code>obj == null</code> and <code>obj == undefined</code> (and vice versa for <code>!=</code>), and <code>ToBoolean(obj) === false</code>.</dd>
+ <dt><code>isCachingEnabled()</code></dt>
+ <dd>Return whether JS caching is enabled.</dd>
+ <dt><code>setCachingEnabled(b)</code></dt>
+ <dd>Enable or disable JS caching.</dd>
+ <dt><code>cacheEntry(code)</code></dt>
+ <dd>Return a new opaque object which emulates a cache entry of a script. This object encapsulates the code and its cached content. The cache entry is filled and read by the <code>evaluate</code> function by using it in place of the source, and by setting <code>saveBytecode</code> and <code>loadBytecode</code> options.</dd>
+ <dt><code>printProfilerEvents()</code></dt>
+ <dd>Register a callback with the profiler that prints javascript profiler events to <code>stderr</code>. Callback is only registered if profiling is enabled.</dd>
+ <dt><code>enableSingleStepProfiling()</code></dt>
+ <dd>This function will fail on platforms that don't support single-step profiling (currently everything but ARM-simulator). When enabled, at every instruction a backtrace will be recorded and stored in an array. Adjacent duplicate backtraces are discarded.</dd>
+ <dt><code>disableSingleStepProfiling()</code></dt>
+ <dd>Return the array of backtraces recorded by <code>enableSingleStepProfiling</code>.</dd>
+ <dt><code>enableSPSProfiling()</code></dt>
+ <dd>Enables SPS instrumentation and corresponding assertions, with slow assertions disabled.</dd>
+ <dt><code>enableSPSProfilingWithSlowAssertions()</code></dt>
+ <dd>Enables SPS instrumentation and corresponding assertions, with slow assertions enabled.</dd>
+ <dt><code>disableSPSProfiling()</code></dt>
+ <dd>Disables SPS instrumentation</dd>
+ <dt><code>isLatin1(s)</code></dt>
+ <dd>Return true iff the string's characters are stored as Latin1.</dd>
+ <dt><code>stackPointerInfo()</code></dt>
+ <dd>Return an <code>int32</code> value which corresponds to the offset of the latest stack pointer, such that one can take the differences of 2 to estimate a frame-size.</dd>
+ <dt><code>entryPoints(params)</code></dt>
+ <dd>Carry out some JSAPI operation as directed by <code>params</code>, and return an array of objects describing which JavaScript entry points were invoked as a result. <code>params</code> is an object whose properties indicate what operation to perform. Here are the recognized groups of properties:
+ <dl>
+ <dt><code>{ function }</code></dt>
+ <dd>Call the object <code>params.function</code> with no arguments.</dd>
+ <dt><code>{ object, property }</code></dt>
+ <dd>Fetch the property named <code>params.property</code> of <code>params.object</code>.</dd>
+ <dt><code>{ ToString }</code></dt>
+ <dd>Apply <code>JS::ToString</code> to <code>params.toString</code>.</dd>
+ <dt><code>{ ToNumber }</code></dt>
+ <dd>Apply <code>JS::ToNumber</code> to <code>params.toNumber</code>.</dd>
+ <dt><code>{ eval }</code></dt>
+ <dd>Apply <code>JS::Evaluate</code> to <code>params.eval</code>.</dd>
+ </dl>
+ The return value is an array of strings, with one element for each JavaScript invocation that occurred as a result of the given operation. Each element is the name of the function invoked, or the string <code>'eval:FILENAME'</code> if the code was invoked by <code>eval</code> or something similar.</dd>
+ <dt><code>drainJobQueue()</code></dt>
+ <dd>Take jobs from the shell's job queue in FIFO order and run them until the queue is empty.</dd>
+ <dt><code>setPromiseRejectionTrackerCallback()</code></dt>
+ <dd>Sets the callback to be invoked whenever a Promise rejection is unhandled or a previously-unhandled rejection becomes handled.</dd>
+</dl>
+
+<h3 id="Functions_available_only_in_DEBUG_build">Functions available only in DEBUG build</h3>
+
+<dl>
+ <dt><code>disassemble([fun/code])</code></dt>
+ <dd>Return the disassembly for the given function or code. All disassembly functions take these options as leading string arguments:
+ <dl>
+ <dt><code>-r</code></dt>
+ <dd>disassemble recursively</dd>
+ <dt><code>-l</code></dt>
+ <dd>show line numbers</dd>
+ <dt><code>-S</code></dt>
+ <dd>omit source notes</dd>
+ </dl>
+ </dd>
+ <dt><code>dis([fun/code])</code></dt>
+ <dd>Disassemble functions into bytecodes.</dd>
+ <dt><code>disfile('foo.js')</code></dt>
+ <dd>Disassemble script file into bytecodes.</dd>
+ <dt><code>dissrc([fun/code])</code></dt>
+ <dd>Disassemble functions with source lines.</dd>
+ <dt><code>notes([fun])</code></dt>
+ <dd>Show source notes for functions.</dd>
+ <dt><code>stackDump(showArgs, showLocals, showThisProps)</code></dt>
+ <dd>Tries to print a lot of information about the current stack. Similar to the <code>DumpJSStack()</code> function in the browser.</dd>
+ <dt><code>arrayInfo(a1, a2, ...)</code></dt>
+ <dd>Report statistics about arrays.</dd>
+</dl>
+
+<h3 id="Functions_available_only_if_ENABLE_INTL_API_is_defined">Functions available only if ENABLE_INTL_API is defined</h3>
+
+<dl>
+ <dt><code>addIntlExtras(obj)</code></dt>
+ <dd>Adds various not-yet-standardized Intl functions as properties on the provided object (this should generally be <code>Intl</code> itself). The added functions and their behavior are experimental: don't depend upon them unless you're willing to update your code if these experimental APIs change underneath you.</dd>
+</dl>
+
+<h3 id="Functions_available_if_--fuzzing-safe_is_not_specified">Functions available if <code>--fuzzing-safe</code> is not specified</h3>
+
+<dl>
+ <dt><code>clone(fun[, scope])</code></dt>
+ <dd>Clone function object.</dd>
+ <dt><code>getSelfHostedValue()</code></dt>
+ <dd>Get a self-hosted value by its name. Note that these values don't get cached, so repeatedly getting the same value creates multiple distinct clones.</dd>
+ <dt><code>line2pc([fun,] line)</code></dt>
+ <dd>Map line number to PC.</dd>
+ <dt><code>pc2line(fun[, pc])</code></dt>
+ <dd>Map PC to line number.</dd>
+ <dt><code>nestedShell(shellArgs...)</code></dt>
+ <dd>Execute the given code in a new JS shell process, passing this nested shell the arguments passed to <code>nestedShell</code>. <code>argv[0]</code> of the nested shell will be <code>argv[0]</code> of the current shell (which is assumed to be the actual path to the shell. <code>arguments[0]</code> (of the call to <code>nestedShell</code>) will be <code>argv[1]</code>, <code>arguments[1]</code> will be <code>argv[2]</code>, etc.</dd>
+ <dt><code>assertFloat32(value, isFloat32)</code></dt>
+ <dd>In IonMonkey only, asserts that <code>value</code> has (resp. hasn't) the <code>MIRType::Float32</code> if <code>isFloat32</code> is <code>true</code> (resp. <code>false</code>).</dd>
+ <dt><code>assertRecoveredOnBailout(var)</code></dt>
+ <dd>In IonMonkey only, asserts that variable has <code>RecoveredOnBailout</code> flag.</dd>
+ <dt><code>withSourceHook(hook, fun)</code></dt>
+ <dd>Set this JS runtime's lazy source retrieval hook (that is, the hook used to find sources compiled with <code>CompileOptions::LAZY_SOURCE</code>) to <code>hook</code>; call <code>fun</code> with no arguments; and then restore the runtime's original hook. Return or throw whatever <code>fun</code> did. <code>hook</code> gets passed the requested code's URL, and should return a string.
+ <p>Notes:</p>
+
+ <ol>
+ <li>SpiderMonkey may assert if the returned code isn't close enough to the script's real code, so this function is not fuzzer-safe.</li>
+ <li>The runtime can have only one source retrieval hook active at a time. If <code>fun</code> is not careful, <code>hook</code> could be asked to retrieve the source code for compilations that occurred long before it was set, and that it knows nothing about. The reverse applies as well: the original hook, that we reinstate after the call to <code>fun</code> completes, might be asked for the source code of compilations that <code>fun</code> performed, and which, presumably, only <code>hook</code> knows how to find.</li>
+ </ol>
+ </dd>
+ <dt><code>wrapWithProto(obj)</code></dt>
+ <dd>Wrap an object into a noop wrapper with prototype semantics. Note: This is not fuzzing safe because it can be used to construct deeply nested wrapper chains that cannot exist in the wild.</dd>
+ <dt><code>trackedOpts(fun)</code></dt>
+ <dd>Returns an object describing the tracked optimizations of <code>fun</code>, if any. If <code>fun</code> is not a scripted function or has not been compiled by Ion, <code>null</code> is returned.</dd>
+ <dt><code>dumpScopeChain(obj)</code></dt>
+ <dd>Prints the scope chain of an interpreted function or a module.</dd>
+ <dt><code>crash([message])</code></dt>
+ <dd>Crashes the process with a <code>MOZ_CRASH</code>.</dd>
+ <dt><code>setARMHwCapFlags("flag1,flag2 flag3")</code></dt>
+ <dd>On non-ARM, no-op. On ARM, set the hardware capabilities. The list of flags is available by calling this function with <code>help</code> as the flag's name</dd>
+ <dt><code>wasmLoop(filename, imports)</code></dt>
+ <dd>Performs an AFL-style persistent loop reading data from the given file and passing it to the<code>wasmEval</code> function together with the specified imports object.</dd>
+</dl>
+
+<h2 id="テスト用関数">テスト用関数</h2>
+
+<p>Testing functions are available also on Firefox via <code>Components.utils.getJSTestingFunctions()</code></p>
+
+<h3 id="Functions_always_available_2">Functions always available</h3>
+
+<dl>
+ <dt><code>gc([obj] | 'zone' [, 'shrinking'])</code></dt>
+ <dd>Run the garbage collector. When obj is given, GC only its zone. If <code>zone</code> is given, GC any zones that were scheduled for GC via schedulegc. If <code>shrinking</code> is passed as the optional second argument, perform a shrinking GC rather than a normal GC.</dd>
+ <dt><code>minorgc([aboutToOverflow])</code></dt>
+ <dd>Run a minor collector on the Nursery. When <code>aboutToOverflow</code> is true, marks the store buffer as about-to-overflow before collecting.</dd>
+ <dt><code>gcparam(name [, value])</code></dt>
+ <dd>Wrapper for <code>JS_[GS]etGCParameter</code>. The name is one of:
+ <ul>
+ <li>maxBytes</li>
+ <li>maxMallocBytes</li>
+ <li>gcBytes</li>
+ <li>gcNumber</li>
+ <li>mode</li>
+ <li>unusedChunks</li>
+ <li>totalChunks</li>
+ <li>sliceTimeBudget</li>
+ <li>markStackLimit</li>
+ <li>highFrequencyTimeLimit</li>
+ <li>highFrequencyLowLimit</li>
+ <li>highFrequencyHighLimit</li>
+ <li>highFrequencyHeapGrowthMax</li>
+ <li>highFrequencyHeapGrowthMin</li>
+ <li>lowFrequencyHeapGrowth</li>
+ <li>dynamicHeapGrowth</li>
+ <li>dynamicMarkSlice</li>
+ <li>allocationThreshold</li>
+ <li>minEmptyChunkCount</li>
+ <li>maxEmptyChunkCount</li>
+ <li>compactingEnabled</li>
+ <li>refreshFrameSlicesEnabled</li>
+ </ul>
+ </dd>
+ <dt><code>relazifyFunctions(...)</code></dt>
+ <dd>Perform a GC and allow relazification of functions. Accepts the same arguments as <code>gc()</code>.</dd>
+ <dt><code>getBuildConfiguration()</code></dt>
+ <dd>Return an object describing some of the configuration options SpiderMonkey was built with.</dd>
+ <dt><code>hasChild(parent, child)</code></dt>
+ <dd>Return <code>true</code> if <code>child</code> is a child of <code>parent</code>, as determined by a call to <code>TraceChildren</code></dd>
+ <dt><code>setSavedStacksRNGState(seed)</code></dt>
+ <dd>Set this compartment's <code>SavedStacks</code>' RNG state.</dd>
+ <dt><code>getSavedFrameCount()</code></dt>
+ <dd>Return the number of <code>SavedFrame</code> instances stored in this compartment's <code>SavedStacks</code> cache.</dd>
+ <dt><code>saveStack([maxDepth [, compartment]])</code></dt>
+ <dd>Capture a stack. If <code>maxDepth</code> is given, capture at most <code>maxDepth</code> number of frames. If <code>compartment</code> is given, allocate the <code>js::SavedFrame</code> instances with the given object's compartment.</dd>
+ <dt><code>saveStack(object [, shouldIgnoreSelfHosted = true]])</code></dt>
+ <dd>Capture a stack back to the first frame whose principals are subsumed by the object's compartment's principals. If <code>shouldIgnoreSelfHosted</code> is given, control whether self-hosted frames are considered when checking principals.</dd>
+ <dt><code>callFunctionFromNativeFrame(function)</code></dt>
+ <dd>Call <code>function</code> with a (C++-)native frame on stack. Required for testing that <code>SaveStack</code> properly handles native frames.</dd>
+ <dt><code>callFunctionWithAsyncStack(function, stack, asyncCause)</code></dt>
+ <dd>Call <code>function</code>, using the provided stack as the async stack responsible for the call, and propagate its return value or the exception it throws. The function is called with no arguments, and <code>this</code> is <code>undefined</code>. The specified <code>asyncCause</code> is attached to the provided stack frame.</dd>
+ <dt><code>enableTrackAllocations()</code></dt>
+ <dd>Start capturing the JS stack at every allocation. Note that this sets an object metadata callback that will override any other object metadata callback that may be set.</dd>
+ <dt><code>disableTrackAllocations()</code></dt>
+ <dd>Stop capturing the JS stack at every allocation.</dd>
+ <dt><code>makeFinalizeObserver()</code></dt>
+ <dd>Get a special object whose finalization increases the counter returned by the <code>finalizeCount</code> function.</dd>
+ <dt><code>finalizeCount()</code></dt>
+ <dd>Return the current value of the finalization counter that is incremented each time an object returned by the <code>makeFinalizeObserver</code> is finalized.</dd>
+ <dt><code>resetFinalizeCount()</code></dt>
+ <dd>Reset the value returned by <code>finalizeCount()</code>.</dd>
+ <dt><code>gcPreserveCode()</code></dt>
+ <dd>Preserve JIT code during garbage collections.</dd>
+ <dt><code>startgc([n [, 'shrinking']])</code></dt>
+ <dd>Start an incremental GC and run a slice that processes about <code>n</code> objects. If <code>shrinking</code> is passesd as the optional second argument, perform a shrinking GC rather than a normal GC.</dd>
+ <dt><code>gcslice([n])</code></dt>
+ <dd>Start or continue an an incremental GC, running a slice that processes about <code>n</code> objects.</dd>
+ <dt><code>abortgc()</code></dt>
+ <dd>Abort the current incremental GC.</dd>
+ <dt><code>fullcompartmentchecks(true|false)</code></dt>
+ <dd>If <code>true</code>, check for compartment mismatches before every GC.</dd>
+ <dt><code>nondeterministicGetWeakMapKeys(weakmap)</code></dt>
+ <dd>Return an array of the keys in the given WeakMap.</dd>
+ <dt><code>internalConst(name)</code></dt>
+ <dd>Query an internal constant for the engine. See <code>InternalConst</code> source for the list of constant names.</dd>
+ <dt><code>isProxy(obj)</code></dt>
+ <dd>If <code>true</code>, <code>obj</code> is a proxy of some sort</dd>
+ <dt><code>dumpHeap(['collectNurseryBeforeDump'], [filename])</code></dt>
+ <dd>Dump reachable and unreachable objects to the named file, or to <code>stdout</code>. If <code>collectNurseryBeforeDump</code> is specified, a minor GC is performed first, otherwise objects in the nursery are ignored.</dd>
+ <dt><code>terminate()</code></dt>
+ <dd>Terminate JavaScript execution, as if we had run out of memory or been terminated by the slow script dialog.</dd>
+ <dt><code>readSPSProfilingStack()</code></dt>
+ <dd>Reads the jit stack using <code>ProfilingFrameIterator</code>.</dd>
+ <dt><code>enableOsiPointRegisterChecks()</code></dt>
+ <dd>Emit extra code to verify live regs at the start of a VM call are not modified before its <code>OsiPoint</code>.</dd>
+ <dt><code>displayName(fn)</code></dt>
+ <dd>Gets the display name for a function, which can possibly be a guessed or inferred name based on where the function was defined. This can be different from the <code>name</code> property on the function.</dd>
+ <dt><code>isAsmJSCompilationAvailable</code></dt>
+ <dd>Returns whether asm.js compilation is currently available or whether it is disabled (e.g., by the debugger).</dd>
+ <dt><code>isSimdAvailable</code></dt>
+ <dd>Returns <code>true</code> if SIMD extensions are supported on this platform.</dd>
+ <dt><code>getCompilerOptions()</code></dt>
+ <dd>Return an object describing some of the JIT compiler options.</dd>
+ <dt><code>isAsmJSModule(fn)</code></dt>
+ <dd>Returns whether the given value is a function containing <code>"use asm"</code> that has been validated according to the asm.js spec.</dd>
+ <dt><code>isAsmJSModuleLoadedFromCache(fn)</code></dt>
+ <dd>Return whether the given asm.js module function has been loaded directly from the cache. This function throws an error if fn is not a validated asm.js module.</dd>
+ <dt><code>isAsmJSFunction(fn)</code></dt>
+ <dd>Returns whether the given value is a nested function in an asm.js module that has been both compile- and link-time validated.</dd>
+ <dt><code>wasmIsSupported()</code></dt>
+ <dd>Returns a boolean indicating whether WebAssembly is supported on the current device.</dd>
+ <dt><code>wasmTextToBinary(str)</code></dt>
+ <dd>Translates the given text wasm module into its binary encoding.</dd>
+ <dt><code>wasmBinaryToText(bin)</code></dt>
+ <dd>Translates binary encoding to text format</dd>
+ <dt><code>wasmExtractCode(module)</code></dt>
+ <dd>Extracts generated machine code from WebAssembly.Module.</dd>
+ <dt><code>isLazyFunction(fun)</code></dt>
+ <dd><code>True</code> if fun is a lazy <code>JSFunction</code>.</dd>
+ <dt><code>isRelazifiableFunction(fun)</code></dt>
+ <dd><code>Ture</code> if fun is a <code>JSFunction</code> with a relazifiable <code>JSScript</code>.</dd>
+ <dt><code>enableShellAllocationMetadataBuilder()</code></dt>
+ <dd>Use <code>ShellAllocationMetadataBuilder</code> to supply metadata for all newly created objects.</dd>
+ <dt><code>getAllocationMetadata(obj)</code></dt>
+ <dd>Get the metadata for an object.</dd>
+ <dt><code>bailout()</code></dt>
+ <dd>Force a bailout out of ionmonkey (if running in ionmonkey).</dd>
+ <dt><code>bailAfter(number)</code></dt>
+ <dd>Start a counter to bail once after passing the given amount of possible bailout positions in ionmonkey.</dd>
+ <dt><code>inJit()</code></dt>
+ <dd>Returns <code>true</code> when called within (jit-)compiled code. When jit compilation is disabled this function returns an error string. This function returns <code>false</code> in all other cases. Depending on truthiness, you should continue to wait for compilation to happen or stop execution.</dd>
+ <dt><code>inIon()</code></dt>
+ <dd>Returns <code>true</code> when called within ion. When ion is disabled or when compilation is abnormally slow to start, this function returns an error string. Otherwise, this function returns <code>false</code>. This behaviour ensures that a falsy value means that we are not in ion, but expect a compilation to occur in the future. Conversely, a truthy value means that we are either in ion or that there is litle or no chance of ion ever compiling the current script.</dd>
+ <dt><code>assertJitStackInvariants()</code></dt>
+ <dd>Iterates the Jit stack and check that stack invariants hold.</dd>
+ <dt><code>setCompilerOption(option, number)</code></dt>
+ <dd>Set a compiler option indexed in JSCompileOption enum to a number.</dd>
+ <dt><code>setIonCheckGraphCoherency(bool)</code></dt>
+ <dd>Set whether Ion should perform graph consistency (DEBUG-only) assertions. These assertions are valuable and should be generally enabled, however they can be very expensive for large (wasm) programs.</dd>
+ <dt><code>serialize(data, [transferables, [policy]])</code></dt>
+ <dd>Serialize <code>data</code> using <code>JS_WriteStructuredClone</code>. Returns a structured clone buffer object. <code>policy</code> must be an object. The following keys' string values will be used to determine whether the corresponding types may be serialized (value <code>allow</code>, the default) or not (value <code>deny</code>). If denied types are encountered a TypeError will be thrown during cloning. Valid keys: <code>SharedArrayBuffer</code>.</dd>
+ <dt><code>deserialize(clonebuffer)</code></dt>
+ <dd>Deserialize data generated by serialize.</dd>
+ <dt><code>detachArrayBuffer(buffer)</code></dt>
+ <dd>Detach the given <code>ArrayBuffer</code> object from its memory, i.e. as if it had been transferred to a WebWorker.</dd>
+ <dt><code>helperThreadCount()</code></dt>
+ <dd>Returns the number of helper threads available for off-main-thread tasks.</dd>
+ <dt><code>reportOutOfMemory()</code></dt>
+ <dd>Report OOM, then clear the exception and return undefined. For crash testing.</dd>
+ <dt><code>throwOutOfMemory()</code></dt>
+ <dd>Throw out of memory exception, for OOM handling testing.</dd>
+ <dt><code>reportLargeAllocationFailure()</code></dt>
+ <dd>Call the large allocation failure callback, as though a large malloc call failed, then return undefined. In Gecko, this sends a memory pressure notification, which can free up some memory.</dd>
+ <dt><code>findPath(start, target)</code></dt>
+ <dd>Return an array describing one of the shortest paths of GC heap edges from <code>start</code> to <code>target</code>, or <code>undefined</code> if <code>target</code> is unreachable from <code>start</code>. Each element of the array is either of the form: <code>{ node: {object or string}, edge: {string describing edge from node} }</code> , if the node is a JavaScript object or value; or of the form: <code>{ type: {string describing node}, edge: {string describing edge} }</code> , if the node is some internal thing that is not a proper JavaScript value (like a shape or a scope chain element). The destination of the i'th array element's edge is the node of the i+1'th array element; the destination of the last array element is implicitly <code>target</code>.</dd>
+ <dt><code>shortestPaths(start, targets, maxNumPaths)</code></dt>
+ <dd>Return an array of arrays of shortest retaining paths. There is an array of shortest retaining paths for each object in <code>targets</code>. The maximum number of paths in each of those arrays is bounded by <code>maxNumPaths</code>. Each element in a path is of the form <code>{ predecessor, edge }</code>.</dd>
+ <dt><code>sharedMemoryEnabled()</code></dt>
+ <dd>Return true if <code>SharedArrayBuffer</code> and Atomics are enabled</dd>
+ <dt><code>evalReturningScope(scriptStr, [global])</code></dt>
+ <dd>Evaluate the script in a new scope and return the scope. If <code>global</code> is present, clone the script to <code>global</code> before executing.</dd>
+ <dt><code>cloneAndExecuteScript(source, global)</code></dt>
+ <dd>Compile <code>source</code> in the current compartment, clone it into <code>global</code>'s compartment, and run it there.</dd>
+ <dt><code>backtrace()</code></dt>
+ <dd>Dump out a brief backtrace.</dd>
+ <dt><code>getBacktrace([options])</code></dt>
+ <dd>Return the current stack as a string. Takes an optional options object, which may contain any or all of the boolean properties <code>options.args</code> - show arguments to each function <code>options.locals</code> - show local variables in each frame <code>options.thisprops</code> - show the properties of the <code>this</code> object of each frame</dd>
+ <dt><code>byteSize(value)</code></dt>
+ <dd>Return the size in bytes occupied by <code>value</code>, or <code>undefined</code> if value is not allocated in memory.</dd>
+ <dt><code>byteSizeOfScript(f)</code></dt>
+ <dd>Return the size in bytes occupied by the function <code>f</code>'s JSScript.</dd>
+ <dt><code>setImmutablePrototype(obj)</code></dt>
+ <dd>Try to make obj's <code>[[Prototype]]</code> immutable, such that subsequent attempts to change it will fail. Return <code>true</code> if obj's <code>[[Prototype]]</code> was successfully made immutable (or if it already was immutable), <code>false</code> otherwise. Throws in case of internal error, or if the operation doesn't even make sense (for example, because the object is a revoked proxy).</dd>
+ <dt><code>setLazyParsingDisabled(bool)</code></dt>
+ <dd>Explicitly disable lazy parsing in the current compartment. The default is that lazy parsing is not explicitly disabled.</dd>
+ <dt><code>setDiscardSource(bool)</code></dt>
+ <dd>Explicitly enable source discarding in the current compartment. The default is that source discarding is not explicitly enabled.</dd>
+ <dt><code>getConstructorName(object)</code></dt>
+ <dd>If the given object was created with <code>new Ctor</code>, return the constructor's display name. Otherwise, return <code>null</code>.</dd>
+ <dt><code>allocationMarker([options])</code></dt>
+ <dd>Return a freshly allocated object whose <code>[[Class]]</code> name is <code>AllocationMarker</code>. Such objects are allocated only by calls to this function, never implicitly by the system, making them suitable for use in allocation tooling tests. Takes an optional options object which may contain the following properties: * nursery: bool, whether to allocate the object in the nursery</dd>
+ <dt><code>setGCCallback({action:"...", options...})</code></dt>
+ <dd>Set the GC callback. action may be:
+ <dl>
+ <dt><code>minorGC</code></dt>
+ <dd>run a nursery collection</dd>
+ <dt><code>majorGC</code></dt>
+ <dd>run a major collection, nesting up to a given <code>depth</code></dd>
+ </dl>
+ </dd>
+ <dt><code>getLcovInfo(global)</code></dt>
+ <dd>Generate LCOV tracefile for the given compartment. If no global are provided then the current global is used as the default one.</dd>
+ <dt><code>getModuleEnvironmentNames(module)</code></dt>
+ <dd>Get the list of a module environment's bound names for a specified module.</dd>
+ <dt><code>getModuleEnvironmentValue(module, name)</code></dt>
+ <dd>Get the value of a bound name in a module environment.</dd>
+ <dt><code>enableForEach()</code></dt>
+ <dd>Enables the deprecated, non-standard for-each.</dd>
+ <dt><code>disableForEach()</code></dt>
+ <dd>Disables the deprecated, non-standard for-each.</dd>
+</dl>
+
+<h3 id="Functions_available_only_if_SPIDERMONKEY_PROMISE_is_defined">Functions available only if SPIDERMONKEY_PROMISE is defined</h3>
+
+<dl>
+ <dt><code>settlePromiseNow(promise)</code></dt>
+ <dd>'Settle' a <code>promise</code> immediately. This just marks the promise as resolved with a value of <code>undefined</code> and causes the firing of any <code>onPromiseSettled</code> hooks set on <code>Debugger</code> instances that are observing the given promise's global as a debuggee.</dd>
+ <dt><code>getWaitForAllPromise(densePromisesArray)</code></dt>
+ <dd>Calls the <code>GetWaitForAllPromise</code> JSAPI function and returns the result Promise.</dd>
+ <dt><code>resolvePromise(promise, resolution)</code></dt>
+ <dd>Resolve a <code>Promise</code> by calling the JSAPI function <code>JS::ResolvePromise</code>.</dd>
+ <dt><code>rejectPromise(promise, reason)</code></dt>
+ <dd>Reject a <code>Promise</code> by calling the JSAPI function <code>JS::RejectPromise</code>.</dd>
+</dl>
+
+<h3 id="Functions_available_only_if_SPIDERMONKEY_PROMISE_is_not_defined">Functions available only if SPIDERMONKEY_PROMISE is not defined</h3>
+
+<dl>
+ <dt><code>makeFakePromise()</code></dt>
+ <dd>Create an object whose <code>[[Class]]</code> name is <code>'Promise'</code> and call <code>JS::dbg::onNewPromise</code> on it before returning it. It doesn't actually have any of the other behavior associated with promises.</dd>
+ <dt><code>settleFakePromise(promise)</code></dt>
+ <dd>'Settle' a <code>promise</code> created by <code>makeFakePromise()</code>. This doesn't have any observable effects outside of firing any <code>onPromiseSettled</code> hooks set on <code>Debugger</code> instances that are observing the given promise's global as a debuggee.</dd>
+</dl>
+
+<h3 id="Functions_available_only_if_JS_GC_ZEAL_is_defined">Functions available only if JS_GC_ZEAL is defined</h3>
+
+<dl>
+ <dt><code>gczeal(level, [N])</code></dt>
+ <dd>Specifies how zealous the garbage collector should be. Some of these modes can be set simultaneously, by passing multiple level options, e.g. <code>"2;4"</code> will activate both modes 2 and 4. Modes can be specified by name or number.
+ <p>Values:</p>
+
+ <dl>
+ <dt><code>0: (None)</code></dt>
+ <dd>Normal amount of collection (resets all modes)</dd>
+ <dt><code>1: (Poke)</code></dt>
+ <dd>Collect when roots are added or removed</dd>
+ <dt><code>2: (Alloc)</code></dt>
+ <dd>Collect when every <code>N</code> allocations (default: 100)</dd>
+ <dt><code>3: (FrameGC)</code></dt>
+ <dd>Collect when the window paints (browser only)</dd>
+ <dt><code>4: (VerifierPre)</code></dt>
+ <dd>Verify pre write barriers between instructions</dd>
+ <dt><code>5: (FrameVerifierPre)</code></dt>
+ <dd>Verify pre write barriers between paints</dd>
+ <dt><code>6: (StackRooting)</code></dt>
+ <dd>Verify stack rooting</dd>
+ <dt><code>7: (GenerationalGC)</code></dt>
+ <dd>Collect the nursery every <code>N</code> nursery allocations</dd>
+ <dt><code>8: (IncrementalRootsThenFinish)</code></dt>
+ <dd>Incremental GC in two slices: 1) mark roots 2) finish collection</dd>
+ <dt><code>9: (IncrementalMarkAllThenFinish)</code></dt>
+ <dd>Incremental GC in two slices: 1) mark all 2) new marking and finish</dd>
+ <dt><code>10: (IncrementalMultipleSlices)</code></dt>
+ <dd>Incremental GC in multiple slices</dd>
+ <dt><code>11: (IncrementalMarkingValidator)</code></dt>
+ <dd>Verify incremental marking</dd>
+ <dt><code>12: (ElementsBarrier)</code></dt>
+ <dd>Always use the individual element post-write barrier, regardless of elements size</dd>
+ <dt><code>13: (CheckHashTablesOnMinorGC)</code></dt>
+ <dd>Check internal hashtables on minor GC</dd>
+ <dt><code>14: (Compact)</code></dt>
+ <dd>Perform a shrinking collection every N allocations</dd>
+ <dt><code>15: (CheckHeapAfterGC)</code></dt>
+ <dd>Walk the heap to check its integrity after every GC</dd>
+ <dt><code>16: (CheckNursery)</code></dt>
+ <dd>Check nursery integrity on minor GC</dd>
+ </dl>
+ </dd>
+ <dt><code>schedulegc([num | obj])</code></dt>
+ <dd>If num is given, schedule a GC after num allocations. If obj is given, schedule a GC of obj's zone. Returns the number of allocations before the next trigger.</dd>
+ <dt><code>selectforgc(obj1, obj2, ...)</code></dt>
+ <dd>Schedule the given objects to be marked in the next GC slice.</dd>
+ <dt><code>verifyprebarriers()</code></dt>
+ <dd>Start or end a run of the pre-write barrier verifier.</dd>
+ <dt><code>verifypostbarriers()</code></dt>
+ <dd>Does nothing (the post-write barrier verifier has been remove).</dd>
+ <dt><code>gcstate()</code></dt>
+ <dd>Report the global GC state.</dd>
+ <dt><code>deterministicgc(true|false)</code></dt>
+ <dd>If <code>true</code>, only allow determinstic GCs to run.</dd>
+</dl>
+
+<h3 id="Functions_available_only_if_JS_TRACE_LOGGING_is_defined">Functions available only if JS_TRACE_LOGGING is defined</h3>
+
+<dl>
+ <dt><code>startTraceLogger()</code></dt>
+ <dd>Start logging the mainThread. Note: tracelogging starts automatically. Disable it by setting environment variable <code>TLOPTIONS=disableMainThread</code></dd>
+ <dt><code>stopTraceLogger()</code></dt>
+ <dd>Stop logging the mainThread.</dd>
+</dl>
+
+<h3 id="Functions_available_only_in_nightly_build">Functions available only in nightly build</h3>
+
+<dl>
+ <dt><code>objectAddress(obj)</code></dt>
+ <dd>Return the current address of the object. For debugging only--this address may change during a moving GC.</dd>
+ <dt><code>sharedAddress(obj)</code></dt>
+ <dd>Return the address of the shared storage of a <code>SharedArrayBuffer</code>.</dd>
+</dl>
+
+<h3 id="Functions_available_only_in_DEBUG_build_2">Functions available only in DEBUG build</h3>
+
+<dl>
+ <dt><code>dumpObject()</code></dt>
+ <dd>Dump an internal representation of an object.</dd>
+ <dt><code>dumpStringRepresentation(str)</code></dt>
+ <dd>Print a human-readable description of how the string <code>str</code> is represented.</dd>
+ <dt><code>setRNGState(seed0, seed1)</code></dt>
+ <dd>Set this compartment's RNG state.</dd>
+</dl>
+
+<h3 id="Functions_available_only_in_DEBUG_build_or_JS_OOM_BREAKPOINT_is_defined">Functions available only in DEBUG build or JS_OOM_BREAKPOINT is defined</h3>
+
+<dl>
+ <dt><code>oomThreadTypes()</code></dt>
+ <dd>Get the number of thread types that can be used as an argument for <code>oomAfterAllocations()</code> and <code>oomAtAllocation()</code>.</dd>
+ <dt><code>oomAfterAllocations(count [,threadType])</code></dt>
+ <dd>After <code>count</code> <code>js_malloc</code> memory allocations, fail every following allocation (return <code>nullptr</code>). The optional thread type limits the effect to the specified type of helper thread.</dd>
+ <dt><code>oomAtAllocation(count [,threadType])</code></dt>
+ <dd>After <code>count</code> <code>js_malloc</code> memory allocations, fail the next allocation (return <code>nullptr</code>). The optional thread type limits the effect to the specified type of helper thread.</dd>
+ <dt><code>resetOOMFailure()</code></dt>
+ <dd>Remove the allocation failure scheduled by either <code>oomAfterAllocations()</code> or <code>oomAtAllocation()</code> and return whether any allocation had been caused to fail.</dd>
+ <dt><code>oomTest(function, [expectExceptionOnFailure = true])</code></dt>
+ <dd>Test that the passed function behaves correctly under OOM conditions by repeatedly executing it and simulating allocation failure at successive allocations until the function completes without seeing a failure. By default this tests that an exception is raised if execution fails, but this can be disabled by passing false as the optional second parameter. This is also disabled when <code>--fuzzing-safe</code> is specified.</dd>
+</dl>
+
+<h3 id="Functions_available_only_in_DEBUG_build_if_--fuzzing-safe_is_not_specified_and">Functions available only in DEBUG build if <code>--fuzzing-safe</code> is not specified and</h3>
+
+<dl>
+ <dt><code>parseRegExp(pattern[, flags[, match_only])</code></dt>
+ <dd>Parses a <code>RegExp</code> pattern and returns a tree, potentially throwing.</dd>
+ <dt><code>disRegExp(regexp[, match_only[, input]])</code></dt>
+ <dd>Dumps <code>RegExp</code> bytecode.</dd>
+</dl>
diff --git a/files/ja/mozilla/qa/chrome_tests/index.html b/files/ja/mozilla/qa/chrome_tests/index.html
new file mode 100644
index 0000000000..b1d128ba75
--- /dev/null
+++ b/files/ja/mozilla/qa/chrome_tests/index.html
@@ -0,0 +1,63 @@
+---
+title: Chromeテスト
+slug: Mozilla/QA/Chrome_tests
+translation_of: Mozilla/QA/Chrome_tests
+---
+<h3 id="Introduction" name="Introduction">導入</h3>
+<p>Chromeテストは基本的には、Chrome特権付きで動作する<a href="/ja/Mochitest" title="ja/Mochitest">Mochitest</a>です。</p>
+<p>Chromeテストスイートは、JavaScriptを用いてアプリケーションのChromeウィンドウをテストできるように設計された、自動テストフレームワークです。現在の所、JavaScriptのコードをFirefoxのメインのブラウザウィンドウと同じスコープで実行し、結果を<a href="/ja/Mochitest" title="ja/Mochitest">Mochitestテストフレームワーク</a>と同じ関数を使って報告することができます。ChromeテストスイートはMochitest frameworkからのruntests.pyに依存しています。</p>
+<h3 id="Running_the_chrome_tests" name="Running_the_chrome_tests">Chromeテストを実行する</h3>
+<p>Mochitestを実行するには、あなたが行った変更を含めて<a href="/ja/Build_Documentation" title="ja/Build_Documentation">Mozillaをビルドする</a>必要があります。カレントディレクトリを <code>$(OBJDIR)/_tests/testing/mochitest</code> に移動して、以下のコマンドを実行してください:</p>
+<pre class="eval">python runtests.py --chrome
+</pre>
+<p>このコマンドは、あなたがビルドしたMozillaを起動した上で、「chrome tests」というウィンドウを開きます。「run all tests」リンクをクリックするとテストの実行が開始され、実行結果はそのウィンドウ内で報告されます。結果をファイルに出力するためのオプ ションも利用可能です。その場合は上記のコマンドに加えて、Mochitestで使用されるのと同じパラメータ(--log-file=/path/to /file)を指定してください。 <em>(ログ出力はまだ動作しません。{{ Bug(423497) }}を参照してください。)</em></p>
+<p>テストハーネス{{ 訳注("テスト実行用プログラム") }}に対して、ユーザの手動操作無しで起動時にテストを自動実行するよう指示するには、パラメータとして --autorun オプションを指定します。テストを完全に自動化するために、このオプションと同時に --close-when-done オプションを指定する事もできます。</p>
+<p>パスを --test-path パラメータで渡すことで、テストを一つだけ実行することもできます。例:</p>
+<pre class="eval">python runtests.py --chrome --test-path=toolkit/content/tests/chrome/test_largemenu.xul
+</pre>
+<p>この例はtest_largemenu.xulだけを実行します。</p>
+<h3 id="Writing_chrome_tests" name="Writing_chrome_tests">Chromeテストを書く</h3>
+<p>Chromeテストは基本的には、Chrome特権付きで動作する、すなわち、コードとUIが <code><a class=" external" rel="freelink">chrome://</a></code> URIで参照される<a href="/ja/Mochitest" title="ja/Mochitest">Mochitest</a>です。基本的なXULのテストファイルはこのようなものです:</p>
+<pre class="eval">&lt;?xml version="1.0"?&gt;
+&lt;?xml-stylesheet href="<a class=" external" rel="freelink">chrome://global/skin</a>" type="text/css"?&gt;
+&lt;?xml-stylesheet href="<a class=" external" rel="freelink">chrome://mochikit/content/tests/SimpleTest/test.css</a>" type="text/css"?&gt;
+
+&lt;window title="テストのデモ"
+ xmlns="<a class=" external" href="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" rel="freelink">http://www.mozilla.org/keymaster/gat...re.is.only.xul</a>"
+ onload="RunTest();"&gt;
+ &lt;title&gt;テストのデモ&lt;/title&gt;
+
+ &lt;script type="application/javascript"
+ src="<a class=" external" rel="freelink">chrome://mochikit/content/MochiKit/packed.js</a>"/&gt;
+ &lt;script type="application/javascript"
+ src="<a class=" external" rel="freelink">chrome://mochikit/content/tests/Simp.../SimpleTest.js</a>"/&gt;
+
+ &lt;script type="application/javascript"&gt;
+ &lt;![CDATA[
+ SimpleTest.waitForExplicitFinish();
+
+ function RunTest()
+ {
+ ok (true == 1, "this passes");
+ todo(true === 1, "this fails");
+ SimpleTest.finish();
+ }
+ ]]&gt;
+ &lt;/script&gt;
+
+ &lt;body xmlns="<a class=" external" href="http://www.w3.org/1999/xhtml" rel="freelink">http://www.w3.org/1999/xhtml</a>"&gt;
+ &lt;p id="display"&gt;&lt;/p&gt;
+ &lt;div id="content" style="display: none"&gt;&lt;/div&gt;
+ &lt;pre id="test"&gt;&lt;/pre&gt;
+ &lt;/body&gt;
+&lt;/window&gt;
+</pre>
+<p>「RunTest」関数はテストハーネスではなく、テストの<code>onload</code>イベントハンドラにより実行されます。</p>
+<p>比較関数はMochitestsでサポートされているものと全く同じ物を使えます。詳細を知りたい場合は、Mochitestのドキュメントの<a href="/ja/Mochitest#How_do_the_comparison_functions_work.3F" title="ja/Mochitest#How_do_the_comparison_functions_work.3F">比較関数がどのように動作するか</a>を参照してください。 グローバルのスコープに定義された「EventUtils」オブジェクトから、<a class="external" href="http://lxr.mozilla.org/mozilla/source/testing/mochitest/tests/SimpleTest/EventUtils.js">EventUtilsヘルパ関数</a> を利用する事もできます。</p>
+<p>テストスイートでは、Mochitestで用意されている関数と同じ名前の関数を使う事で、非同期のテストも実行することができます。RunTest()の実行が終わるまで待ってから実行結果の報告を受け取りたい場合、SimpleTest.waitForExplicitFinish()を呼んでください。テストが完了した後にはSimpleTest.finish()を呼びます。テストが完了するまであまりに長い時間がかかった場合、テストハーネスはそのテストをFAILED(失敗) と見なす事に留意してください(現在の所、タイムアウトまでの時間は15秒です)。</p>
+<p>テスト内で投げられたあらゆる例外は、捕捉され、テストにおいて失敗として報告されます。テストの実行コンテキストの外で投げられた例外(タイムアウトした場合、イベントハンドラ内での例外など)は捕捉されませんが、タイムアウトしたテストについては、それらがfinish()の実行を妨げた場合は実行結果に おいて報告されます。</p>
+<p>テストファイルの名前は「test_」で始まり、拡張子は「.xul」でなければなりません。このパターンに一致しないファイルはテスト実行環境によって無視されますが、それ以外の名前のXULファイルを置くこともできます。例えば、test_demo.xulからopenDialogによって開かれるXULウィンドウのファイルはwindow_demo.xulと名付けるとよいでしょう。「test_bug123456.xul」のように、バグの番号をファイル名に書く事が推奨されます。</p>
+<h3 id="Adding_a_new_chrome_test_to_the_tree" name="Adding_a_new_chrome_test_to_the_tree">新しいChromeテストをツリーに追加する</h3>
+<p>新しいChromeテストをツリーに追加するには、Browser chromeテストが _tests/testing/mochitest/mochitest ではなく _tests/testing /mochitest/chrome にコピーされるようにするということに留意しながら、<a href="/ja/Mochitest#Adding_new_Mochitest_tests_to_the_tree" title="ja/Mochitest#Adding_new_Mochitest_tests_to_the_tree">Mochitestの説明</a>に従ってください。</p>
+<p> </p>
+<p>{{ languages( { "en": "en/Chrome_tests" } ) }}</p>
diff --git a/files/ja/mozilla/qa/index.html b/files/ja/mozilla/qa/index.html
new file mode 100644
index 0000000000..cffd85dd80
--- /dev/null
+++ b/files/ja/mozilla/qa/index.html
@@ -0,0 +1,242 @@
+---
+title: 'QA: Mozilla 製品の品質管理'
+slug: Mozilla/QA
+tags:
+ - QA
+ - Testing
+translation_of: Mozilla/QA
+---
+<p>あなたが Mozilla プロジェクトを手伝うために品質保証 (QA) 部門でできることはたくさんあります。QA に参加するにあたって、必ずしもコードが書ける必要はありません。HTML や他の Web テクノロジーに関する知識が必要ないこともいくつかあります。テストや他の QA 活動で私たちを助けてもらえるなら、最初に、<a href="http://www.mozilla-japan.org/quality/">Mozilla 品質保証</a> と <a href="http://www.mozilla-japan.org/quality/help/">品質保証の支援</a> のページを読んでください。</p>
+
+<p>ここでは、QAチームに参加してFirefoxをテストするのに役立つ記事やツールを見つけ出し、各リリースができるだけ良いものであることを確認します。</p>
+
+<h2 id="Get_started">Get started</h2>
+
+<ul class="card-grid">
+ <li><span>How can I help test?</span>
+
+ <p>There are lots of ways for you to become a <a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/How_can_I_help_test_">community contributor</a> to the Mozilla quality team.</p>
+ </li>
+ <li><span>Bugs</span>
+ <p>All Mozilla projects use <a href="https://bugzilla.mozilla.org/">Bugzilla</a> to track bugs. Learn how to <a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Bug_writing_guidelines" title="/en-US/docs/Mozilla/QA/Bug_writing_guidelines">report a bug</a> and get familiar with <a href="https://developer.mozilla.org/en-US/docs/What_to_do_and_what_not_to_do_in_Bugzilla">what to do in Bugzilla</a>.</p>
+ </li>
+ <li><span>Events</span>
+ <p>Get involved in our weekly <a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Bug_Verification_Day">Bug Verification Day</a> or <a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Bug_Triage_Day">Bug Triage Day</a>. You may even <a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Organizing_a_Testday">organize a testday</a> for your local community!</p>
+ </li>
+ <li><span>IRC</span>
+ <p><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Getting_Started_with_IRC">Get started with IRC</a>, the primary form of communication for members of the Mozilla community.</p>
+ </li>
+</ul>
+
+<h2 id="バグ">バグ</h2>
+
+<div class="row topicpage-table">
+<div class="section">
+<h3 id="バグの報告">バグの報告</h3>
+
+<dl>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Bugzilla">Bugzilla</a></dt>
+ <dd>All Mozilla projects use <a href="https://bugzilla.mozilla.org/">Bugzilla</a> to track bugs. You will need to <a href="https://bugzilla.mozilla.org/createaccount.cgi">create an account with Bugzilla</a> in order to report bugs and triage them.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Bug_writing_guidelines" title="/en-US/docs/Mozilla/QA/Bug_writing_guidelines">Bug writing guidelines</a></dt>
+ <dd>The more effectively a bug is reported, the more likely that an engineer will actually fix it. By following these guidelines, you can help ensure that your bugs stay at the top of the Mozilla engineers' heap, and get fixed.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/A_Bugs_Life" title="/en-US/docs/Mozilla/QA/A_Bugs_Life">A Bug's Life</a></dt>
+ <dd>This tutorial will give an overview of what happens in the states that a bug will go through as well as how it will go from one to the next within its total life. It also explains the meaning of flags/keywords used in QA.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Filing_Crash_Bugs">Filing Crash Bugs</a></dt>
+ <dd>This document lists guidelines and tips on how to file bug reports for crashes in a way that helps in debugging and fixing the reported issue.</dd>
+</dl>
+</div>
+
+<div class="section">
+<h3 id="バグのトリアージ">バグのトリアージ</h3>
+
+<dl>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Confirming_unconfirmed_bugs" title="en-US/docs/Confirming unconfirmed bugs">Confirming unconfirmed bugs</a></dt>
+ <dd>Identify useful bug reports and close the rest.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Triaging_Bugs_for_Firefox" title="/en-US/docs/Mozilla/QA/Triaging_Bugs_for_Firefox">Triaging Bugs for Firefox</a></dt>
+ <dd>Information about the entire bug triaging process – from processing incoming bugs to narrowing down the steps to reproducing bugs.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Screening_duplicate_bugs">Screening duplicate bugs</a></dt>
+ <dd>Help get bugs fixed faster by screening incoming reports for duplicates.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/What_to_do_and_what_not_to_do_in_Bugzilla">General Guidelines</a></dt>
+ <dd>What to do and what not to do in Bugzilla.</dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<h2 id="手動テスト">手動テスト</h2>
+
+<div class="row topicpage-table">
+<div class="section">
+<dl>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Test_Case_Writing_Primer">Manual Test Case Writing Primer</a></dt>
+ <dd>How to write proper manual test cases</dd>
+</dl>
+</div>
+
+<div class="section">
+<dl>
+ <dt><a href="https://testrail.stage.mozaws.net/">TestRail</a></dt>
+ <dd>Mozilla QA's manual test cases reside in TestRail. You will need an LDAP account in order to login and execute test cases. Learn more on the <a href="https://wiki.mozilla.org/TestEngineering/Testrail">TestRail wiki page</a>.</dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<h2 id="自動テスト">自動テスト</h2>
+
+<div class="row topicpage-table">
+<div class="section">
+<dl>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Automated_testing" title="/en-US/docs/Mozilla/QA/Automated_testing">Automated testing at Mozilla</a></dt>
+ <dd>Documentation about creating and using automated tests for Mozilla code.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Running_automated_tests">Running automated tests</a></dt>
+ <dd>
+ <p>This page lists the steps required to run Mozilla's automated test suites.</p>
+ </dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Developing_tests" title="en-US/docs/Developing_Tests">Developing tests</a></dt>
+ <dd>Ensure that future changes to Mozilla don't break things that currently work correctly.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Avoiding_intermittent_oranges" title="en-US/docs/QA/Avoiding intermittent oranges">Avoiding intermittent test failures</a></dt>
+ <dd>Suggestions for ways to make your tests more reliable, thereby helping to avoid random, intermittent test failures.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Test_Verification">Test Verification</a></dt>
+ <dd>When a changeset adds a new test, or modifies an existing test, the test verification (TV) test suite performs additional testing to help find intermittent failures in the modified test as quickly as possible.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Mozharness_FAQ">Mozharness FAQ</a></dt>
+ <dd>Answers to common questions about Mozharness.</dd>
+</dl>
+</div>
+
+<div class="section">
+<dl>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Robocop" title="/en-US/docs/Mozilla/QA/Robocop">Robocop</a></dt>
+ <dd>Robocop is the automated testing system used for Firefox for Android. Learn its <a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Robocop/Code_style_guidelines">code style guidelines</a></dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette">Marionette</a></dt>
+ <dd>Get started with Marionette UI testing.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/web-platform-tests">web-platform-tests</a></dt>
+ <dd>Learn how to use the industry standard, cross-browser, cross-platform <a href="http://testthewebforward.org/docs/">Web runtime testing system</a> from the <a href="https://www.w3.org/">W3C</a> used by Mozilla and others to ensure browser interoperability.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/external-media-tests">External Media Tests</a></dt>
+ <dd>Get started testing HTML5-based video elements using VideoPuppeteer, a <a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette">Marionette</a>- -based test suite used to test sites like YouTube and Netflix.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Chrome_tests">Chrome tests</a></dt>
+ <dd>A chrome test is basically a <a href="https://developer.mozilla.org/en-US/docs/Mochitest" title="en/Mochitest">Mochitest</a> running with chrome privileges.</dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<h2 id="Firefox_QE">Firefox QE</h2>
+
+<div class="row topicpage-table">
+<div class="section">
+<dl>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Triaging_Bugs_for_Firefox" title="/en-US/docs/Mozilla/QA/Triaging_Bugs_for_Firefox">Triaging Bugs for Firefox</a></dt>
+ <dd>Information about the entire bug triaging process – from processing incoming bugs to narrowing down the steps to reproduce a bug.</dd>
+</dl>
+
+<dl>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Tips_and_Tricks">Tips and Tricks</a></dt>
+ <dd>These tips and tricks will make your life easier when you are testing.</dd>
+</dl>
+<a href="https://developer.mozilla.org/en-US/docs/Downloading_Nightly_or_Trunk_Builds">Downloading Nightly or Trunk Builds</a>
+
+<dl>
+ <dd>Every 24 hours, a "nightly" build is created that testers all over the world download and test, reporting as they go along on any bugs that hit them. </dd>
+</dl>
+</div>
+
+<div class="section">
+<dl>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Command_Line_Options">Command Line Options</a></dt>
+ <dd>Command line options are used to specify various startup options for Firefox.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Reporting_a_Performance_Problem">Reporting a Performance Problem</a></dt>
+ <dd>This article will guide you in reporting a performance problem using the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Profiling_with_the_Built-in_Profiler">Gecko Profiler extension</a>.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Crash_reporting">Crash reporting</a></dt>
+ <dd>Firefox ships with an open-source crash reporting system.</dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<h2 id="Firefox_for_Android">Firefox for Android</h2>
+
+<div class="row topicpage-table">
+<div class="section">
+<dl>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Mobile_Firefox">Mobile Firefox</a></dt>
+ <dd>Firefox for Android is the mobile version of Firefox with a native Android look and feel.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/Firefox_for_Android/Compatibility_Testing">Compatibility Testing</a></dt>
+ <dd>Help us identify websites that do not work well in Firefox by reporting the specific issues that you find in your investigation.</dd>
+</dl>
+</div>
+
+<div class="section">
+<dl>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Fennec_Android:_Logging_with_the_Android_Debug_and_Logcat">Logging with the Android Debug Bridge and Logcat</a></dt>
+ <dd>This article will provide a walkthrough in downloading and setting up an environment to which one can gain access to and view Android system logs.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Firefox_Mobile:_Enabling_the_Error_Console">Enabling the Error Console</a></dt>
+ <dd>See the Mozilla Hacks article on <a class="external external-icon" href="https://hacks.mozilla.org/2012/08/remote-debugging-on-firefox-for-android/">Remote Debugging on Firefox for Android</a> for web content. If you need to debug the Firefox browser itself use Android's <a class="external external-icon" href="http://developer.android.com/tools/help/logcat.html">adb logcat</a>.</dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<h2 id="Firefox_OS">Firefox OS</h2>
+
+<div class="row topicpage-table">
+<div class="section">
+<h3 id="手動テスト_2">手動テスト</h3>
+
+<dl>
+ <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Simulator_vs_Emulator_vs_Device">Simulator vs Emulator vs Device</a></dt>
+ <dd>These are three basic options when it comes to getting a Firefox OS environment in order to work on, or developing for, Firefox OS.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Debugging">Debugging</a></dt>
+ <dd>Discover the different tools at your disposal to debug your Firefox OS code.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Developing_Firefox_OS/Filing_bugs_against_Firefox_OS">Reporting Bugs</a></dt>
+ <dd>This article provides a guide to filing bugs against the Firefox OS project, including Gaia and B2G.</dd>
+</dl>
+</div>
+
+<div class="section">
+<h3 id="プラットフォーム_(Gecko)">プラットフォーム (Gecko)</h3>
+
+<dl>
+ <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing">Automated Testing</a></dt>
+ <dd>Learn various aspects of testing Firefox OS, including running different tests, automation, and result reporting and tracking.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Automated_testing/Gaia_performance_tests">Gaia Performance Tests</a></dt>
+ <dd>This article provides information about running performance tests on Gaia, as well as how to create new tests.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/Firefox_OS/Platform/Feature_support_chart">Feature Support Chart</a></dt>
+ <dd>There are several different builds of Firefox OS you can download or build for yourself, and there are some differences between the types of features available on each device.</dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<h2 id="Web_QA">Web QA</h2>
+
+<div class="row topicpage-table">
+<div class="section">
+<dl>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Reducing_testcases" title="en-US/docs/Reducing testcases">Reducing testcases</a></dt>
+ <dd>Improve bug reports by turning broken web pages into simple testcases, which can help developers understand the bug and can also be used for creating automated tests.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Managing_Web_QA_XFails">Managing XFails</a></dt>
+ <dd>One of the ongoing tasks of the Web QA department is managing xfails. This document will explain what xfails are, and describe the steps one can take to investigate and update them.</dd>
+</dl>
+</div>
+
+<div class="section">
+<dl>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/QA/Running_Web_QA_automated_tests">Running Automated Tests</a></dt>
+ <dd>So you’re interested in contributing to Mozilla Web QA automation projects but don’t know where to start? This doc will help you get up and running a set of tests locally.</dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<h2 id="Glossary">Glossary</h2>
+
+<div class="section">
+<dl>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Glossary/Smoke_Test">Smoke Test</a></dt>
+</dl>
+</div>
+
+<p><span class="alllinks"><a href="https://developer.mozilla.org/en-US/docs/tag/QA" title="en-US/docs/tag/QA">View all documents tagged QA</a></span></p>
+
+<p><span class="alllinks"><a href="https://developer.mozilla.org/en-US/docs/tag/QA:Tools" title="en-US/docs/tag/QA:Tools">View all documents tagged QA:Tools</a></span></p>
diff --git a/files/ja/mozilla/rust/index.html b/files/ja/mozilla/rust/index.html
new file mode 100644
index 0000000000..8d82a99e66
--- /dev/null
+++ b/files/ja/mozilla/rust/index.html
@@ -0,0 +1,47 @@
+---
+title: Rustとは
+slug: Mozilla/Rust
+tags:
+ - '#rust'
+ - '#言語'
+ - #Mozilla
+ - #Web開発
+ - #システム
+ - #並列処理
+translation_of: Mozilla/Rust
+---
+<p><img alt="Rust logo" src="https://www.rust-lang.org/logos/rust-logo-blk.svg" style="float: left; height: 150px; width: 150;">RustはMozillaとボランティアによって作成された、オープンソースのプログラミング言語です。開発者が最新のマルチコアプロセッサの強力な機能を最大限に活用して、高速で安全なアプリケーションを作成できるように設計されており、誤ったセグメンテーションを防ぎ、スレッドの安全性を保証します。一貫して習得しやすい構文です。</p>
+
+<p>加えて、Rustは最小のランタイムサイズで、ゼロコスト抽象化、データの受け渡し、メモリの安全性確保、データ競合のないスレッド、特性ベースの総称、パターンマッチング、型推論、および効率的なCバインディングを提供します。</p>
+
+<p>Rustを学ぶために以下のことができます。</p>
+
+<ul>
+ <li>Rustが提供する能力と利点の詳細については、以下のビデオをご覧ください。</li>
+ <li>オンラインで<a href="https://doc.rust-lang.org/book/">Rust Programming Language</a>を読んでください。</li>
+ <li><a href="https://www.rust-lang.org/">Rustの公式Webサイト</a>でRustコンパイラーをダウンロードし、例を調べて何ができるかを学んでください。</li>
+</ul>
+
+<h2 id="Rustとシステム開発の未来">Rustとシステム開発の未来</h2>
+
+<p>{{EmbedYouTube("8EPsnf_ZYU0")}}</p>
+
+<h2 id="Rustの並列処理の能力">Rustの並列処理の能力</h2>
+
+<p>{{EmbedYouTube("cNeIOt8ZdAY")}}</p>
+
+<h2 id="RustによるWeb開発">RustによるWeb開発</h2>
+
+<p>{{EmbedYouTube("FfoXFnzZbBM")}}</p>
+
+<h2 id="Rustによる安全なシステム開発">Rustによる安全なシステム開発</h2>
+
+<p>{{EmbedYouTube("P3sfNGtpuxc")}}</p>
+
+<h2 id="Rustコミュニティー">Rustコミュニティー</h2>
+
+<p>{{EmbedYouTube("duv0tuPAnO0")}}</p>
+
+<h2 id="RustとMozillaでプロダクト開発">RustとMozillaでプロダクト開発</h2>
+
+<p>{{EmbedYouTube("2RhbYpgVpg0")}}</p>
diff --git a/files/ja/mozilla/setting_up_an_update_server/index.html b/files/ja/mozilla/setting_up_an_update_server/index.html
new file mode 100644
index 0000000000..f9cc361743
--- /dev/null
+++ b/files/ja/mozilla/setting_up_an_update_server/index.html
@@ -0,0 +1,67 @@
+---
+title: 更新サーバの設定
+slug: Mozilla/Setting_up_an_update_server
+tags:
+ - enterprise
+translation_of: Mozilla/Setting_up_an_update_server
+---
+<p>このドキュメントの目標は、企業内で独自の更新サーバを構築するための基本的な手順を説明することです。本文では Firefox について説明していますが、Thunderbird にも同様の仕組みが備わっています。</p>
+<h2 id="はじめに">はじめに</h2>
+<p>Firefox は RESTful な Web サービスを利用して更新サービスを提供しています。Firefox は、XML 形式の更新情報ファイルが置かれている URL を定期的に参照し、そのファイルに記載されている情報に従って更新を行います。</p>
+<p>まず、URL の形式について説明しましょう。この URL は、<code>app.update.url</code> という設定項目で以下のように指定されています。</p>
+<pre>https://aus2.mozilla.org/update/3/%PRODUCT%/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml
+</pre>
+<p>ユーザの環境によって変数に値が代入され、実際に参照する URL が決まります。以下は、Firefox 9 から Firefox 9.0.1 へ更新する際に利用される URL です。</p>
+<dl>
+ <dt>
+ Windows Vista / 日本語版</dt>
+ <dd>
+ <code><a class="link-https" href="https://aus3.mozilla.org/update/3/Firefox/9.0/20111216140209/WINNT_x86-msvc/ja/release/Windows_NT%206.0/default/default/update.xml" rel="freelink">https://aus3.mozilla.org/update/3/Fi...ult/update.xml</a></code></dd>
+ <dt>
+ Mac OS X / 日本語版</dt>
+ <dd>
+ <code><a class="link-https" href="https://aus2.mozilla.org/update/3/Firefox/9.0/20111216140209/Darwin_Universal-gcc3/ja/release/Darwin%208.11.1/default/default/update.xml" rel="freelink">https://aus2.mozilla.org/update/3/Fi...ult/update.xml</a></code></dd>
+</dl>
+<p>このドキュメントでは、Firefox 9 の Windows 向け日本語版を例に取って説明します。</p>
+<h2 id="クライアントサイドの設定">クライアントサイドの設定</h2>
+<p><code>app.update.url</code> の値を自社の URL に変更します。これを変更するには、Firefox 設定エディタ (Firefox のロケーションバーで <code>about:config</code> と入力) を開き、<code>app.update.url.override</code> という名前で新しい文字列形式の設定を作成し、新たな値を指定する必要があります。既定の更新 URL は、上記のように様々な変数が含まれていますが、通常は、製品、バージョン、ロケール、プラットフォームを判別するだけでも十分でしょう。以下、<code>myserver</code> はあなたのサーバに読み替えてください。</p>
+<pre>http://myserver/update/%PRODUCT%/%VERSION%/%LOCALE%/%BUILD_TARGET%/update.xml
+</pre>
+<p><a href="/ja/MCD/Getting_Started" title="ja/MCD/Getting_Started">集中管理機能 (MCD)</a> を使って設定する場合は、サーバサイドの設定ファイル (<code>autoconfig.jsc</code>) に以下の行を追加します。</p>
+<pre>lockPref("app.update.url.override", "http://myserver/update/%PRODUCT%/%VERSION%/%LOCALE%/%BUILD_TARGET%/update.xml");
+</pre>
+<h2 id="サーバサイドの設定">サーバサイドの設定</h2>
+<p>まず、aus2.mozilla.org から、オリジナルの更新情報ファイル (<code>update.xml</code>) を取得してきます。取得元は上記の通りですが、変数のうちバージョンごとに変わるビルド ID は、<a href="/ja/Using_the_Web_Console" title="ja/Using_the_Web_Console">Web コンソール</a> を開いて <code>navigator.buildID</code> と入力することで確認できます。不明な場合は、初期設定の Firefox で <a href="/ja/HTTP_Logging" title="ja/HTTP_Logging">HTTP ログ</a> を有効にし、更新チェックを行って (更新はキャンセルして構いません) Firefox を終了させ、ログから URL を特定します。</p>
+<p>取得した <code>update.xml</code> ファイルを、<code>app.update.url.override</code> の設定に合わせてサーバ上に置き、実際の URL にアクセスして XML が表示されることを確認します。また、Firefox 9 の [ヘルプ] メニューから [ソフトウェアの更新を確認] を選択し、更新が見つかることを確認します。</p>
+<pre>http://myserver/update/Firefox/9.0/ja/WINNT_x86-msvc/update.xml
+</pre>
+<pre>&lt;?xml version="1.0"?&gt;
+&lt;updates&gt;
+ &lt;update type="minor" displayVersion="9.0.1" appVersion="9.0.1" platformVersion="9.0.1" buildID="20111220165912" detailsURL="https://www.mozilla.com/ja/firefox/9.0.1/releasenotes/"&gt;
+ &lt;patch type="complete" URL="http://download.mozilla.org/?product=firefox-9.0.1-complete&amp;os=win&amp;lang=ja" hashFunction="SHA512" hashValue="82fb329eb72e417e2d924842998f7afc1b4a8831a5a9ca56b761f7f1c997aa4c04f86b53df08f9228548d4562d303b61410d4f2e9fa62ce1f0cc675331adaa91" size="19644083"/&gt;
+ &lt;patch type="partial" URL="http://download.mozilla.org/?product=firefox-9.0.1-partial-9.0&amp;os=win&amp;lang=ja" hashFunction="SHA512" hashValue="0478ec3a615f918142f83e8fbc30e6885c281c5c57479b9673f292d22fbbd1b11a04e50fb949937de7d5c41e13ab8d382d6c4e015ff9f737afac06a866cdcb50" size="2005104"/&gt;
+ &lt;/update&gt;
+&lt;/updates&gt;
+</pre>
+<h2 id="ダウンロードサーバの変更">ダウンロードサーバの変更</h2>
+<p>更新バイナリ (パッチ) を download.mozilla.org ではなくあなたのサーバからダウンロードさせたい場合は、<code>update.xml</code> に書かれている URL からバイナリを取得し、あなたのサーバへコピーしてから、<code>update.xml</code> ファイル内の URL をあなたのサーバに変更します。更新バイナリには、通常の更新に使用される差分版 (partial) と、差分更新が失敗した場合にダウンロードされる完全版 (complete) の 2 種類があることに留意してください。</p>
+<pre>&lt;?xml version="1.0"?&gt;
+&lt;updates&gt;
+ &lt;update type="minor" displayVersion="9.0.1" appVersion="9.0.1" platformVersion="9.0.1" buildID="20111220165912" detailsURL="https://www.mozilla.com/ja/firefox/9.0.1/releasenotes/"&gt;
+ &lt;patch type="complete" URL="http://myserver/update/Firefox/9.0.1/ja/WINNT_x86-msvc/complete.mar" hashFunction="SHA512" hashValue="82fb329eb72e417e2d924842998f7afc1b4a8831a5a9ca56b761f7f1c997aa4c04f86b53df08f9228548d4562d303b61410d4f2e9fa62ce1f0cc675331adaa91" size="19644083"/&gt;
+ &lt;patch type="partial" URL="http://myserver/update/Firefox/9.0.1/ja/WINNT_x86-msvc/partial.mar" hashFunction="SHA512" hashValue="0478ec3a615f918142f83e8fbc30e6885c281c5c57479b9673f292d22fbbd1b11a04e50fb949937de7d5c41e13ab8d382d6c4e015ff9f737afac06a866cdcb50" size="2005104"/&gt;
+ &lt;/update&gt;
+&lt;/updates&gt;
+</pre>
+<p>例えば IT 部門で検証が終わるまで更新を提供しないときは、以下のように XML ファイルの内容を空にしておきます。</p>
+<pre>&lt;?xml version="1.0"?&gt;
+&lt;updates&gt;&lt;/updates&gt;
+</pre>
+<h2 id="Security_Considerations" name="Security_Considerations">セキュリティに関する配慮</h2>
+<p>Firefox の既定の更新 URL は HTTPS で、SSL を通じて提供されていることに気付いたかもしれません。SSL はサーバに若干の読み込み負荷を与えるので、通常の HTTP を使用したい気にさせられるでしょう。しかしそれはいけません。</p>
+<p>すべてのユーザは、更新の有無にかかわらず、更新サーバに定期的に問い合わせを行います (初期設定では 1 日 1 回となっています)。保護されているネットワークの外部、特に公共の無線 LAN スポットから接続しているユーザにとっては、接続をハイジャックされて悪質な更新バイナリをダウンロードさせられる潜在的な可能性があります。SSL はこの手の攻撃から守ってくれます。<code>update.xml</code> ファイルは小さなものなので、SSL の経費をケチったりしないでください。</p>
+<p>大きな更新バイナリそのものは、安全でないサーバから安全にダウンロードすることができます。これは、更新情報ファイル (<code>update.xml</code>) にクライアント検証用のハッシュ値が含まれているためです。このハッシュ値は <code>update.xml</code> が安全に提供されている場合のみ信頼されます。</p>
+<h2 id="See_Also" name="See_Also">関連記事</h2>
+<ul>
+ <li><a href="/ja/XULRunner/Application_Update" title="ja/XULRunner/Application_Update">XULRunner:Application Update</a></li>
+</ul>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/index.html
new file mode 100644
index 0000000000..709114d7ea
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/index.html
@@ -0,0 +1,5 @@
+---
+title: Gecko
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko
+---
+This page was auto-generated because a user created a sub-page to this page.
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/index.html
new file mode 100644
index 0000000000..582be09b29
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/index.html
@@ -0,0 +1,496 @@
+---
+title: Gecko Roles
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs#Supported_Roles">« AT APIs Support ページ</a></p>
+<p><span class="seoSummary">以下のリストは Gecko で使用されるアクセシブル role です。Role 定数 は <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleRole" title="">nsIAccessibleRole</a></code> インタフェースで定義されています。</span></p>
+<dl>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_NOTHING">ROLE_NOTHING</a></code></dt>
+ <dd>
+ accessible アイテムが、明確に定義された role を持っていない場合に使用されます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TITLEBAR">ROLE_TITLEBAR</a></code></dt>
+ <dd>
+ ウィンドウのタイトルバーまたはキャプションバーを表します。これは MSAA のみで使用されるため、MS Windows によって自動的にサポートされます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUBAR">ROLE_MENUBAR</a></code></dt>
+ <dd>
+ ユーザによって選択された (ウィンドウのタイトルバーのすぐ下に位置するか、Mac OS X では画面最上部) メニューバーを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SCROLLBAR">ROLE_SCROLLBAR</a></code></dt>
+ <dd>
+ 垂直または水平スクロールバーを表します。クライアント領域の一部か、コントロール内で使用されます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_GRIP">ROLE_GRIP</a></code></dt>
+ <dd>
+ 特別なマウスポインタを表します。ウィンドウなどのユーザインタフェース要素をユーザに操作させます。例えば、ユーザがウィンドウ右下隅のサイズ変更グリップをクリックし、そのサイズを変更するためにドラッグします。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SOUND">ROLE_SOUND</a></code></dt>
+ <dd>
+ システムサウンドを表します。様々なシステムイベントに関連付けられます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CURSOR">ROLE_CURSOR</a></code></dt>
+ <dd>
+ システムのマウスポインタを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CARET">ROLE_CARET</a></code></dt>
+ <dd>
+ システムのキャレットを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ALERT">ROLE_ALERT</a></code></dt>
+ <dd>
+ ユーザに注意を促す alert または condition を表します。<span style="border-bottom: 1px dashed green;" title="Assistive Technologies">支援技術</span>は一般的に、この role を広告するコンテナの全スクリーン上のコンテンツを読むことによって、role に反応します。警告ダイアログなどで使用してください。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_WINDOW">ROLE_WINDOW</a></code></dt>
+ <dd>
+ ウィンドウ枠を表します。タイトルバーやクライアント、ウィンドウに含まれる他のオブジェクトなどの子オブジェクトを含みます。この role は MS Windows によって自動的にサポートされます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_INTERNAL_FRAME">ROLE_INTERNAL_FRAME</a></code></dt>
+ <dd>
+ サブドキュメントです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUPOPUP">ROLE_MENUPOPUP</a></code></dt>
+ <dd>
+ メニューを表します。実行する操作をユーザに選択させるための、オプションの一覧を提供します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUITEM">ROLE_MENUITEM</a></code></dt>
+ <dd>
+ メニュー項目を表します。実行するコマンドやオプションをユーザに選択させるための、メニュー内のエントリです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOOLTIP">ROLE_TOOLTIP</a></code></dt>
+ <dd>
+ 役立つヒントを提供するツールチップを表します。一般的にマウスカーソルの位置に表示されます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_APPLICATION">ROLE_APPLICATION</a></code></dt>
+ <dd>
+ アプリケーションのメインウィンドウを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DOCUMENT">ROLE_DOCUMENT</a></code></dt>
+ <dd>
+ ドキュメントウィンドウを表します。ドキュメントウィンドウは常にアプリケーションウィンドウ内に含まれます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PANE">ROLE_PANE</a></code></dt>
+ <dd>
+ フレームウィンドウやドキュメントウィンドウ内のペインを表します。ユーザは他のペインと現在のペインのコンテンツ内の間を移動できますが、異なるペイン内の項目間は移動できません。このように、ペインはフレームウィンドウやドキュメントより下位、個々のコントロールよりも上位のグループレベルを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHART">ROLE_CHART</a></code></dt>
+ <dd>
+ データの提供に使用されるグラフィカルな画像を表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIALOG">ROLE_DIALOG</a></code></dt>
+ <dd>
+ ダイアログボックスまたはメッセージボックスを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_BORDER">ROLE_BORDER</a></code></dt>
+ <dd>
+ ウィンドウの境界線を表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_GROUPING">ROLE_GROUPING</a></code></dt>
+ <dd>
+ その他のオブジェクトを論理的にグループ化します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SEPARATOR">ROLE_SEPARATOR</a></code></dt>
+ <dd>
+ separator メニュー項目やウィンドウ内のペインを分割するバーなど、空間を二つの領域に視覚的に分割するために使用されます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOOLBAR">ROLE_TOOLBAR</a></code></dt>
+ <dd>
+ ツールバーを表します。よく使用される機能への簡単なアクセスを提供するコントロール (プッシュボタンやトグルボタン) のグループです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_STATUSBAR">ROLE_STATUSBAR</a></code></dt>
+ <dd>
+ ステータスバーを表します。現在の操作やアプリケーションの状態、選択したオブジェクトについての情報を表示する、ウィンドウ下部の領域です。ステータスバーには異なる種類の情報を表示する複数のフィールドがあります。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE">ROLE_TABLE</a></code></dt>
+ <dd>
+ セルの行と列を含むテーブルを表します。また、任意で行ヘッダと列ヘッダが含まれます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLUMNHEADER">ROLE_COLUMNHEADER</a></code></dt>
+ <dd>
+ 列ヘッダを表します。テーブルの列のための視覚的なラベルを提供します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROWHEADER">ROLE_ROWHEADER</a></code></dt>
+ <dd>
+ 行ヘッダを表します。テーブルの行のための視覚的なラベルを提供します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLUMN">ROLE_COLUMN</a></code></dt>
+ <dd>
+ テーブル内のセルの列を表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROW">ROLE_ROW</a></code></dt>
+ <dd>
+ テーブル内のセルの行を表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CELL">ROLE_CELL</a></code></dt>
+ <dd>
+ テーブル内のセルを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LINK">ROLE_LINK</a></code></dt>
+ <dd>
+ 何かへのリンクを表します。このオブジェクトはテキストやグラフィックで表現されますが、ボタンのように動作します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_HELPBALLOON">ROLE_HELPBALLOON</a></code></dt>
+ <dd>
+ ツールチップやヘルプバルーンのフォーム内のヘルプトピックを表示します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHARACTER">ROLE_CHARACTER</a></code></dt>
+ <dd>
+ Microsoft Office アシスタントなどのアニメのようなグラフィックオブジェクトを表します。アプリケーションのヘルプをユーザに提供するために表示されます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LIST">ROLE_LIST</a></code></dt>
+ <dd>
+ リストボックスを表します。ユーザは一個以上の項目を選択できます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LISTITEM">ROLE_LISTITEM</a></code></dt>
+ <dd>
+ リスト内の項目を表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_OUTLINE">ROLE_OUTLINE</a></code></dt>
+ <dd>
+ ツリービューコントロールなどのアウトライン構造またはツリー構造を表します。階層的なリストを表示し、ユーザは下層の展開と折り畳みができます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_OUTLINEITEM">ROLE_OUTLINEITEM</a></code></dt>
+ <dd>
+ アウトライン構造やツリー構造内の項目を表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETAB">ROLE_PAGETAB</a></code></dt>
+ <dd>
+ ページタブを表します。これはページタブリストの子要素です。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PROPERTYPAGE">ROLE_PROPERTYPAGE</a></code></dt>
+ <dd>
+ プロパティシートを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_INDICATOR">ROLE_INDICATOR</a></code></dt>
+ <dd>
+ 現在の項目を指し示すポインタ画像などのインジケータを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_GRAPHIC">ROLE_GRAPHIC</a></code></dt>
+ <dd>
+ 画像を表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_STATICTEXT">ROLE_STATICTEXT</a></code></dt>
+ <dd>
+ 他のコントロールのためのラベルやダイアログボックス内の説明など、読み取り専用テキストを表します。<span style="border-bottom: 1px dashed green;" title="Static text">静的テキスト</span>は変更や選択ができません。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TEXT_LEAF">ROLE_TEXT_LEAF</a></code></dt>
+ <dd>
+ 選択可能なテキストを表します。編集したり読み取り専用にできます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PUSHBUTTON">ROLE_PUSHBUTTON</a></code></dt>
+ <dd>
+ プッシュボタンコントロールを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHECKBUTTON">ROLE_CHECKBUTTON</a></code></dt>
+ <dd>
+ チェックボックスコントロールを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_RADIOBUTTON">ROLE_RADIOBUTTON</a></code></dt>
+ <dd>
+ オプションボタンを表します。ラジオボタンとも呼ばれています。これは排他的なグループの一つです。すべてのオブジェクトは、この属性を持つ一つの親要素を共有しており、一つの排他的なグループの一部と仮定されます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX">ROLE_COMBOBOX</a></code></dt>
+ <dd>
+ コンボボックスを表します。予め選択されたセットを提供するリストボックスに関連付けられた編集コントロールです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DROPLIST">ROLE_DROPLIST</a></code></dt>
+ <dd>
+ カレンダーコントロールを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PROGRESSBAR">ROLE_PROGRESSBAR</a></code></dt>
+ <dd>
+ 進捗バーを表します。ユーザに作業中の操作の現在の達成度を表示します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIAL">ROLE_DIAL</a></code></dt>
+ <dd>
+ ユーザに値を設定させるダイアルまたはノブを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_HOTKEYFIELD">ROLE_HOTKEYFIELD</a></code></dt>
+ <dd>
+ ホットキーフィールドを表します。ユーザに連続したキーストロークや、その組み合わせを入力させます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SLIDER">ROLE_SLIDER</a></code></dt>
+ <dd>
+ スライダを表します。ユーザに最小値と最大値の間に与えられた値を設定させます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SPINBUTTON">ROLE_SPINBUTTON</a></code></dt>
+ <dd>
+ スピンボックスを表します。ユーザに表示された値を増減させるコントロールです。これはスピンボックスに関連付けられた別の "仲間" コントロール内に表示されます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIAGRAM">ROLE_DIAGRAM</a></code></dt>
+ <dd>
+ ダイアグラムデータに使用される、グラフィカルな画像を表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ANIMATION">ROLE_ANIMATION</a></code></dt>
+ <dd>
+ アニメーションコントロールを表します。連続したビットマップフレームを表示するコントロールなど、時間毎に変わるコンテンツを含みます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_EQUATION">ROLE_EQUATION</a></code></dt>
+ <dd>
+ 数式を表します。これは MATHML によって使用されます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONDROPDOWN">ROLE_BUTTONDROPDOWN</a></code></dt>
+ <dd>
+ 項目のリストをドロップダウン表示するボタンを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONMENU">ROLE_BUTTONMENU</a></code></dt>
+ <dd>
+ メニューをドロップダウン表示するボタンを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONDROPDOWNGRID">ROLE_BUTTONDROPDOWNGRID</a></code></dt>
+ <dd>
+ グリッドをドロップダウン表示するボタンを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_WHITESPACE">ROLE_WHITESPACE</a></code></dt>
+ <dd>
+ オブジェクト間の空白を表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETABLIST">ROLE_PAGETABLIST</a></code></dt>
+ <dd>
+ ページタブコントロールのコンテナを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CLOCK">ROLE_CLOCK</a></code></dt>
+ <dd>
+ 時刻を表示するコントロールを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SPLITBUTTON">ROLE_SPLITBUTTON</a></code></dt>
+ <dd>
+ ツールバー上のボタンを表します。ドロップダウンリストアイコンがボタンのすぐ隣にあります。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_IPADDRESS">ROLE_IPADDRESS</a></code></dt>
+ <dd>
+ IP (Internet Protocol) アドレスを入力するための編集コントロールを表します。編集コントロールは入力部分が IP アドレスの数値ごとに区切られています。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ACCEL_LABEL">ROLE_ACCEL_LABEL</a></code></dt>
+ <dd>
+ アクセラレータを持つラベルコントロールを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ARROW">ROLE_ARROW</a></code></dt>
+ <dd>
+ 主要な 4 方向の矢印のうちの一つを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CANVAS">ROLE_CANVAS</a></code></dt>
+ <dd>
+ イベントの発生とトラップに使用されるコントロールを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHECK_MENU_ITEM">ROLE_CHECK_MENU_ITEM</a></code></dt>
+ <dd>
+ チェックボックス付きのメニュー項目を表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLOR_CHOOSER">ROLE_COLOR_CHOOSER</a></code></dt>
+ <dd>
+ ユーザに色を選択させる特別なダイアログを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DATE_EDITOR">ROLE_DATE_EDITOR</a></code></dt>
+ <dd>
+ ユーザに日付を編集させるためのコントロールを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DESKTOP_ICON">ROLE_DESKTOP_ICON</a></code></dt>
+ <dd>
+ ROLE_DESKTOP_PANE 内のアイコン化された内部フレーム。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DESKTOP_FRAME">ROLE_DESKTOP_FRAME</a></code></dt>
+ <dd>
+ デスクトップペイン。内部フレームと、そのアイコン化されたバージョンをサポートするペイン。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIRECTORY_PANE">ROLE_DIRECTORY_PANE</a></code></dt>
+ <dd>
+ ディレクトリペイン。ユーザがディレクトリの内容を選択したり操作するためのペイン。ファイルの選択に使用されます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_FILE_CHOOSER">ROLE_FILE_CHOOSER</a></code></dt>
+ <dd>
+ ファイル選択ダイアログ。ディレクトリ内のファイルを表示してユーザにファイルを選択させたり、異なるディレクトリや特定のファイル名を閲覧させるための特別なダイアログ。ディレクトリの内容を表示するためにディレクトリペインを使用します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_FONT_CHOOSER">ROLE_FONT_CHOOSER</a></code></dt>
+ <dd>
+ フォント選択ダイアログ。フォント選択ダイアログは、ユーザに様々な属性のフォントを選択させるコンポーネントです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHROME_WINDOW">ROLE_CHROME_WINDOW</a></code></dt>
+ <dd>
+ フレーム role です。タイトルバー、境界線、メニューバーなどを持つトップレベルのウィンドウ。アプリケーションの最初のウィンドウとしてよく使用されます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_GLASS_PANE">ROLE_GLASS_PANE</a></code></dt>
+ <dd>
+ ガラスペイン。すべてのペインより前面に描かれることが保証されたペイン。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_HTML_CONTAINER">ROLE_HTML_CONTAINER</a></code></dt>
+ <dd>
+ HTML のためのドキュメントコンテナ。このコンテナの子要素は document の内容を提供します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ICON">ROLE_ICON</a></code></dt>
+ <dd>
+ 小さな固定サイズの画像。一般的にはコンポーネントの飾りに使用されます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LABEL">ROLE_LABEL</a></code></dt>
+ <dd>
+ インターフェースのアイコンまたは短い文字列を提供します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LAYERED_PANE">ROLE_LAYERED_PANE</a></code></dt>
+ <dd>
+ <span style="border-bottom: 1px dashed green;" title="layered">階層化</span>ペイン。子要素をスタック順の外観を提供しているレイヤー内に描画する特別なペイン。通常は、ウィンドウ内のほとんどの視覚的なコンポ―テントとメニューバーを保持するペインです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_OPTION_PANE">ROLE_OPTION_PANE</a></code></dt>
+ <dd>
+ ダイアログの内側で最初に使用される特別なペイン。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PASSWORD_TEXT">ROLE_PASSWORD_TEXT</a></code></dt>
+ <dd>
+ パスワードなど、テキストの内容がユーザに分からないように表示されるテキストオブジェクトです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_POPUP_MENU">ROLE_POPUP_MENU</a></code></dt>
+ <dd>
+ ユーザに選択肢の一覧を提供する一時的なウィンドウ。ユーザが一覧から一つを選択すると隠されます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_RADIO_MENU_ITEM">ROLE_RADIO_MENU_ITEM</a></code></dt>
+ <dd>
+ メニュー項目のラジオボタンです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROOT_PANE">ROLE_ROOT_PANE</a></code></dt>
+ <dd>
+ ルートペインです。ガラスペインや階層化ペインを子要素に持つ特別なペイン。この子要素にはスクロールバーやビューポートを含むことができます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SCROLL_PANE">ROLE_SCROLL_PANE</a></code></dt>
+ <dd>
+ スクロールペインです。大量の情報をユーザが順次表示できるオブジェクト。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SPLIT_PANE">ROLE_SPLIT_PANE</a></code></dt>
+ <dd>
+ <span style="border-bottom: 1px dashed green;" title="split">分割</span>ペインです。同時に 2 つのパネルを提供する特別なパネル。2 つのパネルの間は、ユーザがその大きさを変更することができる仕切りになっています。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE_COLUMN_HEADER">ROLE_TABLE_COLUMN_HEADER</a></code></dt>
+ <dd>
+ テーブルの列のためのヘッダです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE_ROW_HEADER">ROLE_TABLE_ROW_HEADER</a></code></dt>
+ <dd>
+ テーブルの行のためのヘッダです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TEAR_OFF_MENU_ITEM">ROLE_TEAR_OFF_MENU_ITEM</a></code></dt>
+ <dd>
+ 着脱可能なメニュー項目です。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TERMINAL">ROLE_TERMINAL</a></code></dt>
+ <dd>
+ アクセシブルターミナルを表します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TEXT_CONTAINER">ROLE_TEXT_CONTAINER</a></code></dt>
+ <dd>
+ 論理的なテキスト実体を構成するオブジェクトのコレクションです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOGGLE_BUTTON">ROLE_TOGGLE_BUTTON</a></code></dt>
+ <dd>
+ 切り替えボタンです。チェックを入れたり外したりできる特別な押しボタン。現在の状態を示すインジケータは提供しません。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TREE_TABLE">ROLE_TREE_TABLE</a></code></dt>
+ <dd>
+ 複数行のデータ表示を展開したり折り畳んだりできるコントロールを表します。複数列のデータも表示できます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_VIEWPORT">ROLE_VIEWPORT</a></code></dt>
+ <dd>
+ ビューポートです。通常はスクロールペイン内で使用されるオブジェクト。ユーザが見ることができるデータ全体の一部分を提供します。ユーザがスクロールバーを操作してビューポートに表示する部分を変更できます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_HEADER">ROLE_HEADER</a></code></dt>
+ <dd>
+ ドキュメントページのヘッダです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_FOOTER">ROLE_FOOTER</a></code></dt>
+ <dd>
+ ドキュメントページのフッタです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PARAGRAPH">ROLE_PARAGRAPH</a></code></dt>
+ <dd>
+ テキストの段落です。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_RULER">ROLE_RULER</a></code></dt>
+ <dd>
+ ワープロなどで使用される定規です。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_AUTOCOMPLETE">ROLE_AUTOCOMPLETE</a></code></dt>
+ <dd>
+ エントリウィジェットに挿入する項目を含むダイアログあるいはリストを持つテキストエントリ。つまり、テキストエントリを補完する語のリストです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_EDITBAR">ROLE_EDITBAR</a></code></dt>
+ <dd>
+ ツールバー内の編集可能なテキストオブジェクト。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ENTRY">ROLE_ENTRY</a></code></dt>
+ <dd>
+ ユーザによって入力または変更されるテキスト内容のコントロール。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CAPTION">ROLE_CAPTION</a></code></dt>
+ <dd>
+ 他のオブジェクトを説明するキャプションです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DOCUMENT_FRAME">ROLE_DOCUMENT_FRAME</a></code></dt>
+ <dd>
+ ドキュメント内容の表示領域を含む視覚的なフレームまたはコンテナです。ドキュメントフレームは他のドキュメント実体内に発生します。この場合、2 番目のドキュメントは包含する実体内に埋め込まれます。大抵の HTML フレームは ROLE_DOCUMENT_FRAME です。このオブジェクトや単体の子孫は Document インタフェースを実装します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_HEADING">ROLE_HEADING</a></code></dt>
+ <dd>
+ 見出しです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGE">ROLE_PAGE</a></code></dt>
+ <dd>
+ ドキュメント内容のページを表すオブジェクト。ユーザがページを基準にしてアクセスするドキュメント内で使用されます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SECTION">ROLE_SECTION</a></code></dt>
+ <dd>
+ ドキュメント内容のコンテナです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_REDUNDANT_OBJECT">ROLE_REDUNDANT_OBJECT</a></code></dt>
+ <dd>
+ アクセシブルな階層内の他のオブジェクトと重複するオブジェクト。支援技術 (<span style="color: green;">AT</span>)は、この role を持つオブジェクトを無視します。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_FORM">ROLE_FORM</a></code></dt>
+ <dd>
+ フォームコントロールのコンテナです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_IME">ROLE_IME</a></code></dt>
+ <dd>
+ キーボード上に無い文字を入力するために使用されるオブジェクト。例えば、英語キーボードで中国語を入力する場合など。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_APP_ROOT">ROLE_APP_ROOT</a></code></dt>
+ <dd>
+ ???</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PARENT_MENUITEM">ROLE_PARENT_MENUITEM</a></code></dt>
+ <dd>
+ メニュー項目を表します。これはユーザが選択して別のメニューを表示できるメニュー内のエントリです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CALENDAR">ROLE_CALENDAR</a></code></dt>
+ <dd>
+ ユーザに日付を選択させるカレンダーです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX_LIST">ROLE_COMBOBOX_LIST</a></code></dt>
+ <dd>
+ コンボボックスによって表示される項目のリストです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX_OPTION">ROLE_COMBOBOX_OPTION</a></code></dt>
+ <dd>
+ コンボボックスによって表示されるリストの項目です。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_IMAGE_MAP">ROLE_IMAGE_MAP</a></code></dt>
+ <dd>
+ イメージマップです。子リンクを表す領域を持ちます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_OPTION">ROLE_OPTION</a></code></dt>
+ <dd>
+ リストボックス内のオプションです。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_RICH_OPTION">ROLE_RICH_OPTION</a></code></dt>
+ <dd>
+ リストボックス内のリッチオプションです。他のウィジェットを子要素として持つことができます。</dd>
+ <dt>
+ <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LISTBOX">ROLE_LISTBOX</a></code></dt>
+ <dd>
+ オプションのリストです。</dd>
+</dl>
+<div class="note">
+ <p><strong>編注:</strong> <span class="nowiki"><code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_">ROLE_</a></code></span> のテンプレートを使用してアクセシブル role への参照を取得してください。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUITEM">ROLE_MENUITEM</a></code> のように表示されます。</p>
+</div>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_accel_label/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_accel_label/index.html
new file mode 100644
index 0000000000..de5747c491
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_accel_label/index.html
@@ -0,0 +1,30 @@
+---
+title: ROLE_ACCEL_LABEL
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ACCEL_LABEL
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+ - Référence(2)
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ACCEL_LABEL
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>アクセラレータを持つラベルコントロールを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_ACCELERATOR_LABEL</code></li>
+ <li>ATK: <code>ATK_ROLE_ACCEL_LABEL</code></li>
+ <li>UA: <code>NSAccessibilityStaticTextRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_STATICTEXT</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_alert/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_alert/index.html
new file mode 100644
index 0000000000..d03c56080c
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_alert/index.html
@@ -0,0 +1,38 @@
+---
+title: ROLE_ALERT
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ALERT
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ALERT
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>ユーザに通知されるべき警告または条件を表します。支援技術は、一般的に、このロールの内容を告げるコンテナの画面上のコンテンツ全体を読み上げることにより、ロールに応答します。警告ダイアログ等で使用してください。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_ALERT</code></li>
+ <li>ATK: <code>ATK_ROLE_ALERT</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_ALERT</code></li>
+ <li>UA: <code>NSAccessibilityWindowRole</code></li>
+</ul>
+
+<h2 id="Events" name="Events">イベント</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Events#EVENT_ALERT">EVENT_ALERT</a></code> - ウィジェットが表示された時に発生します。</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#alert">alert</a></code>, <code><a class="external" href="https://w3c.github.io/aria/#alertdialog">alertdialog</a></code></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/notification" title="notification">notification</a></code>/&gt;, &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/panel" title="panel">panel</a></code> noautofocus = "true"/&gt;</li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_animation/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_animation/index.html
new file mode 100644
index 0000000000..81d333e72b
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_animation/index.html
@@ -0,0 +1,30 @@
+---
+title: ROLE_ANIMATION
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ANIMATION
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+ - Référence(2)
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ANIMATION
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>例えばビットマップの一連のフレームを表示するコントロールといった、時間の経過とともに変化するコンテンツを含むアニメーションコントロールを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_ANIMATION</code></li>
+ <li>ATK: <code>ATK_ROLE_ANIMATION</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_ANIMATION</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_app_root/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_app_root/index.html
new file mode 100644
index 0000000000..cbe8078631
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_app_root/index.html
@@ -0,0 +1,26 @@
+---
+title: ROLE_APP_ROOT
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_APP_ROOT
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+ - Référence(2)
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_APP_ROOT
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>欧米のキーボード上での漢字の入力のような、キーボードにない文字の入力を可能にするために使用されるオブジェクト。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_APPLICATION</code></li>
+ <li>ATK: <code>ATK_ROLE_APPLICATION</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_APPLICATION</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_application/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_application/index.html
new file mode 100644
index 0000000000..4d430e70c9
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_application/index.html
@@ -0,0 +1,34 @@
+---
+title: ROLE_APPLICATION
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_APPLICATION
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_APPLICATION
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>アプリケーションのメインウィンドウを表します。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_APP_ROOT">ROLE_APP_ROOT</a></code> も参照してください。</p>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleText" title="">nsIAccessibleText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperText" title="">nsIAccessibleHyperText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleEditableText" title="">nsIAccessibleEditableText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleDocument" title="">nsIAccessibleDocument</a></code></li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>ATK: <code>ATK_ROLE_EMBEDDED</code></li>
+ <li>UA: <code>NSAccessibilityGroupRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_APPLICATION</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#application">application</a></code></li>
+ <li>XUL: content document</li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_arrow/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_arrow/index.html
new file mode 100644
index 0000000000..6ec87b9cf3
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_arrow/index.html
@@ -0,0 +1,30 @@
+---
+title: ROLE_ARROW
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ARROW
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+ - Référence(2)
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ARROW
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>東西南北方向のいずれかの矢印を表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_ARROW</code></li>
+ <li>ATK: <code>ATK_ROLE_ARROW</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_INDICATOR</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_autocomplete/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_autocomplete/index.html
new file mode 100644
index 0000000000..149af27745
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_autocomplete/index.html
@@ -0,0 +1,30 @@
+---
+title: ROLE AUTOCOMPLETE
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_AUTOCOMPLETE
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_AUTOCOMPLETE
+---
+<p> </p>
+
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>例えば、テキスト入力の完了に対する単語のリストといった、入力ウィジェットに挿入するためのダイアログまたはアイテムを含むリストを持つテキスト入力。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_AUTOCOMPLETE</li>
+ <li>ATK: NSAccessibilityComboBoxRole</li>
+ <li>UA: @"AXRuler"</li>
+ <li>MSAA/IA2: ROLE_SYSTEM_COMBOBOX</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/textbox" title="textbox">textbox</a></code> type="autocomplete"/&gt;</li>
+</ul>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_border/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_border/index.html
new file mode 100644
index 0000000000..78104f570c
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_border/index.html
@@ -0,0 +1,23 @@
+---
+title: ROLE_BORDER
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_BORDER
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_BORDER
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>ウィンドウの境界線を表します。</p>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_UNKNOWN</code></li>
+ <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_BORDER</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<p>サポートされていません。</p>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttondropdown/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttondropdown/index.html
new file mode 100644
index 0000000000..13b259f499
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttondropdown/index.html
@@ -0,0 +1,28 @@
+---
+title: ROLE_BUTTONDROPDOWN
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONDROPDOWN
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONDROPDOWN
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>アイテムのリストをドロップダウンするボタンを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_PUSH_BUTTON</code></li>
+ <li>ATK: <code>ATK_ROLE_PUSH_BUTTON</code></li>
+ <li>UA: <code>NSAccessibilityPopUpButtonRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_BUTTONDROPDOWN</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttondropdowngrid/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttondropdowngrid/index.html
new file mode 100644
index 0000000000..2439c01b9c
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttondropdowngrid/index.html
@@ -0,0 +1,30 @@
+---
+title: ROLE_BUTTONDROPDOWNGRID
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONDROPDOWNGRID
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONDROPDOWNGRID
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>グリッドをドロップダウンするボタンを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li>
+ <li>UA: <code>NSAccessibilityGroupRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_BUTTONDROPDOWNGRID</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/colorpicker" title="colorpicker">colorpicker</a></code>/&gt;</li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttonmenu/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttonmenu/index.html
new file mode 100644
index 0000000000..675612d4bd
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_buttonmenu/index.html
@@ -0,0 +1,29 @@
+---
+title: ROLE_BUTTONMENU
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONMENU
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_BUTTONMENU
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>メニューをドロップダウンするボタンを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_PUSH_BUTTON</code></li>
+ <li>ATK: <code>ATK_ROLE_PUSH_BUTTON</code></li>
+ <li>UA: <code>NSAccessibilityMenuButtonRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_BUTTONMENU</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_calendar/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_calendar/index.html
new file mode 100644
index 0000000000..771b5bdf20
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_calendar/index.html
@@ -0,0 +1,24 @@
+---
+title: ROLE_CALENDAR
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CALENDAR
+tags:
+ - AT_APIs
+ - Accessibility
+ - NeedsContent
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CALENDAR
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>ユーザーが日付を選択できるカレンダー。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_CALENDAR</code></li>
+ <li>ATK: <code>ATK_ROLE_CALENDAR</code></li>
+ <li>UA: <code>NSAccessibilityGroupRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_CLIENT</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_canvas/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_canvas/index.html
new file mode 100644
index 0000000000..cde08e0b55
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_canvas/index.html
@@ -0,0 +1,28 @@
+---
+title: ROLE_CANVAS
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CANVAS
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CANVAS
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>イベントに引き込むことができ、イベントをトラップするために使用されるコントロールを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_CANVAS</code></li>
+ <li>ATK: <code>ATK_ROLE_CANVAS</code></li>
+ <li>UA: <code>NSAccessibilityImageRole</code></li>
+ <li>MSAA: <code>USE_ROLE_STRING</code></li>
+ <li>IA2: <code>IA2_ROLE_CANVAS</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>HTML: <a href="/ja/docs/Web/HTML/Element/canvas" title="HTML の &lt;canvas> 要素 と Canvas スクリプティング API や WebGL API を使用して、グラフィックやアニメーションを描画することができます。"><code>&lt;canvas&gt;</code></a></li>
+</ul>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_caption/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_caption/index.html
new file mode 100644
index 0000000000..627d1d8a0c
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_caption/index.html
@@ -0,0 +1,27 @@
+---
+title: ROLE CAPTION
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CAPTION
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CAPTION
+---
+<p> </p>
+
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>別のオブジェクトを説明するキャプション。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_CAPTION</li>
+ <li>ATK: ATK_ROLE_CAPTION</li>
+ <li>UA: NSAccessibilityStaticTextRole</li>
+ <li>MSAA:USE_ROLE_STRING</li>
+ <li>IA2: IA2_ROLE_CAPTION</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_caret/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_caret/index.html
new file mode 100644
index 0000000000..abda30d55e
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_caret/index.html
@@ -0,0 +1,23 @@
+---
+title: ROLE_CARET
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CARET
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CARET
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>システムのキャレットを表します。このロールは、キャレットのためにサポートされています。</p>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_UNKNOWN</code></li>
+ <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_CARET</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<p>サポートされていません。</p>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_cell/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_cell/index.html
new file mode 100644
index 0000000000..14305ce7cc
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_cell/index.html
@@ -0,0 +1,39 @@
+---
+title: ROLE_CELL
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CELL
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CELL
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>テーブル内のセルを表します。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE">ROLE_TABLE</a></code> も参照してください。</p>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleText" title="">nsIAccessibleText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperText" title="">nsIAccessibleHyperText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleEditableText" title="">nsIAccessibleEditableText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperLink" title="">nsIAccessibleHyperLink</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleSelectable" title="">nsIAccessibleSelectable</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleValue" title="">nsIAccessibleValue</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ATK_ROLE_TABLE_CELL</code></li>
+ <li>ATK: <code>ATK_ROLE_LIST_ITEM</code></li>
+ <li>UA: <code>NSAccessibilityGroupRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_CELL</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#gridcell">gridcell</a></code></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/listcell" title="listcell">listcell</a></code>/&gt;</li>
+ <li>HTML: <span class="nowiki"> <a href="/ja/docs/Web/HTML/Element/td" title="HTML の &lt;td> 要素は、表でデータを包含するセルを定義します。これは表モデルに関与します。"><code>&lt;td&gt;</code></a></span></li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_character/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_character/index.html
new file mode 100644
index 0000000000..8b3b43cbff
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_character/index.html
@@ -0,0 +1,23 @@
+---
+title: ROLE_CHARACTER
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHARACTER
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHARACTER
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>Microsoft Office Assistant などの、マンガのようなグラフィックオブジェクトを表します。これは、アプリケーションの使い方をユーザに提供するために表示されます。</p>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI:</li>
+ <li>ATK: <code>ATK_ROLE_IMAGE</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code> (unusued on Mac OS X)</li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_CHARACTER</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<p>使用されていません。</p>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_chart/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_chart/index.html
new file mode 100644
index 0000000000..76a2356d83
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_chart/index.html
@@ -0,0 +1,29 @@
+---
+title: ROLE_CHART
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHART
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHART
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>データを示すためのグラフィカルな画像を表します。</p>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_CHART</code></li>
+ <li>ATK: <code>ATK_ROLE_CHART</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_CHART</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<p>使用されていません。</p>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_check_menu_item/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_check_menu_item/index.html
new file mode 100644
index 0000000000..2485251344
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_check_menu_item/index.html
@@ -0,0 +1,32 @@
+---
+title: ROLE_CHECK_MENU_ITEM
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHECK_MENU_ITEM
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHECK_MENU_ITEM
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>チェックボックスでメニュー項目を表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_CHECK_MENU_ITEM</code></li>
+ <li>ATK: <code>ATK_ROLE_CHECK_MENU_ITEM</code></li>
+ <li>UA: <code>NSAccessibilityMenuItemRole</code></li>
+ <li>MSAA: <code>ROLE_SYSTEM_MENUITEM</code></li>
+ <li>IA2: <code>IA2_ROLE_CHECK_MENU_ITEM</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#menuitemcheckbox">menuitemcheckbox</a></code></li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_checkbutton/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_checkbutton/index.html
new file mode 100644
index 0000000000..7d553a0444
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_checkbutton/index.html
@@ -0,0 +1,34 @@
+---
+title: ROLE_CHECKBUTTON
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHECKBUTTON
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+ - Référence(2)
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHECKBUTTON
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>チェックボックスコントロールを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_CHECK_BOX</code></li>
+ <li>ATK: <code>ATK_ROLE_CHECK_BOX</code></li>
+ <li>UA: <code>NSAccessibilityCheckBoxRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_CHECKBUTTON</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#checkbox">checkbox</a></code></li>
+ <li>HTML: <a href="/ja/docs/Web/HTML/Element/input" title="HTML の &lt;input> 要素は、ユーザーからデータを受け取るための、ウェブベースのフォーム用の対話的なコントロールを作成するために使用します。"><code>&lt;input&gt;</code></a> of type <code>checkbox</code>.</li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/checkbox" title="checkbox">checkbox</a></code>/&gt;</li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_chrome_window/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_chrome_window/index.html
new file mode 100644
index 0000000000..05d299d5ae
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_chrome_window/index.html
@@ -0,0 +1,30 @@
+---
+title: ROLE_CHROME_WINDOW
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHROME_WINDOW
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CHROME_WINDOW
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>フレームの役割。タイトルバー、ボーダー、メニューバーなどを持つトップレベルウィンドウ。 これは、多くの場合、アプリケーションのための主要なウィンドウとして使用されます。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_FRAME</code></li>
+ <li>ATK: <code>ATK_ROLE_FRAME</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code> (unused on Mac OS X)</li>
+ <li>MSAA : <code>ROLE_SYSTEM_APPLICATION</code></li>
+ <li>IA2: <code>IA2_ROLE_FRAME</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_clock/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_clock/index.html
new file mode 100644
index 0000000000..09eb1efa8e
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_clock/index.html
@@ -0,0 +1,28 @@
+---
+title: ROLE_CLOCK
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CLOCK
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CLOCK
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>時刻を表示するコントロールを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code> (unused on OS X )</li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_CLOCK</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_color_chooser/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_color_chooser/index.html
new file mode 100644
index 0000000000..3b464f2e24
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_color_chooser/index.html
@@ -0,0 +1,30 @@
+---
+title: ROLE_COLOR_CHOOSER
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLOR_CHOOSER
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLOR_CHOOSER
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>ユーザが色を選択できるようにする特殊なダイアログを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_COLOR_CHOOSER</code></li>
+ <li>ATK: <code>ATK_ROLE_COLOR_CHOOSER</code></li>
+ <li>UA: <code>NSAccessibilityColorWellRole</code></li>
+ <li>MSAA: <code>ROLE_SYSTEM_DIALOG</code></li>
+ <li>IA2: <code>IA2_ROLE_COLOR_CHOOSER</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_columnheader/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_columnheader/index.html
new file mode 100644
index 0000000000..e6ccce5729
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_columnheader/index.html
@@ -0,0 +1,32 @@
+---
+title: ROLE_COLUMNHEADER
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLUMNHEADER
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLUMNHEADER
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>列ヘッダを表します。テーブルの列のための視覚的なラベルを提供します。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE">ROLE_TABLE</a></code> も参照してください。</p>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_TABLE</code></li>
+ <li>ATK: <code>ATK_ROLE_COLUMN_HEADER</code></li>
+ <li>UA: <code>NSAccessibilityGroupRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_COLUMNHEADER</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#colheader">colheader</a></code></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/listheader" title="listheader">listheader</a></code>/&gt;</li>
+ <li>HTML: <span class="nowiki"><a href="/ja/docs/Web/HTML/Element/th" title="HTML の &lt;th> 要素は、表のセルのグループ用のヘッダーであるセルを定義します。このグループの性質は、scope 属性と headers 属性で定義します。"><code>&lt;th&gt;</code></a></span></li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox/index.html
new file mode 100644
index 0000000000..2a7da343b0
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox/index.html
@@ -0,0 +1,34 @@
+---
+title: ROLE_COMBOBOX
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+ - Référence(2)
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>コンボボックスを表します。事前に定義された選択肢のセットを提供し、関連リストボックスとエディットコントロール。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_RADIO_BUTTON</code></li>
+ <li>ATK: <code>ATK_ROLE_RADIO_BUTTON</code></li>
+ <li>UA: <code>NSAccessibilityRadioButtonRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_RADIOBUTTON</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#combobox">combobox</a></code></li>
+ <li>HTML: <a href="/ja/docs/Web/HTML/Element/select" title="HTML の &lt;select> 要素は、選択式のメニューを提供するコントロールを表します。"><code>&lt;select&gt;</code></a></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/menulist" title="menulist">menulist</a></code>/&gt;</li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox_list/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox_list/index.html
new file mode 100644
index 0000000000..7072b0a8f7
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox_list/index.html
@@ -0,0 +1,27 @@
+---
+title: ROLE_COMBOBOX_LIST
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX_LIST
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX_LIST
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>コンボボックスを使用して提示された項目のリスト。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_MENU</code></li>
+ <li>ATK: <code>ATK_ROLE_MENU</code></li>
+ <li>UA: <code>NSAccessibilityMenuRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_LIST</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>HTML: <a href="/ja/docs/Web/HTML/Element/option" title="HTML の &lt;option> 要素は、 &lt;select> 要素、&lt;optgroup> 要素、&lt;datalist> 要素内で項目を定義するために使われます。したがって、&lt;option> は HTML 文書でポップアップメニューのメニュー項目や、その他の項目の一覧を表すことができます。"><code>&lt;option&gt;</code></a></li>
+</ul>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox_option/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox_option/index.html
new file mode 100644
index 0000000000..ce0a67942a
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_combobox_option/index.html
@@ -0,0 +1,28 @@
+---
+title: ROLE_COMBOBOX_OPTION
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX_OPTION
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_COMBOBOX_OPTION
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>コンボボックスで示されているリストの項目。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_MENU_ITEM</code></li>
+ <li>ATK: <code>ATK_ROLE_MENU_ITEM</code></li>
+ <li>UA: <code>NSAccessibilityMenuItemRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_LISTITEM</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>HTML: <a href="/ja/docs/Web/HTML/Element/option" title="HTML の &lt;option> 要素は、 &lt;select> 要素、&lt;optgroup> 要素、&lt;datalist> 要素内で項目を定義するために使われます。したがって、&lt;option> は HTML 文書でポップアップメニューのメニュー項目や、その他の項目の一覧を表すことができます。"><code>&lt;option&gt;</code></a></li>
+ <li>XUL: <code><a href="/ja/docs/Mozilla/Tech/XUL/listitem" title="listitem">listitem</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_cursor/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_cursor/index.html
new file mode 100644
index 0000000000..1fbeb203e4
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_cursor/index.html
@@ -0,0 +1,23 @@
+---
+title: ROLE_CURSOR
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CURSOR
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_CURSOR
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>システムのマウスポインタを表します。</p>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_UNKNOWN</code></li>
+ <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_CURSOR</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<p>サポートされていません。</p>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_date_editor/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_date_editor/index.html
new file mode 100644
index 0000000000..075b5f4066
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_date_editor/index.html
@@ -0,0 +1,30 @@
+---
+title: ROLE_DATE_EDITOR
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DATE_EDITOR
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DATE_EDITOR
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>その目的は、ユーザーが日付を編集することを可能にすることであるコントロールを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_DATE_EDITOR</code></li>
+ <li>ATK: <code>ATK_ROLE_DATE_EDITOR</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA: <code>USE_ROLE_STRING</code></li>
+ <li>IA2: <code>IA2_ROLE_DATE_EDITOR</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_desktop_frame/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_desktop_frame/index.html
new file mode 100644
index 0000000000..9c057e1a24
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_desktop_frame/index.html
@@ -0,0 +1,30 @@
+---
+title: ROLE_DESKTOP_FRAME
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DESKTOP_FRAME
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DESKTOP_FRAME
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>デスクトップ区画。内部フレームとそれらの内部フレームのアイコン化をサポートする区画。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_DESKTOP_FRAME</code></li>
+ <li>ATK: <code>ATK_ROLE_DESKTOP_FRAME</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA : <code>USE_ROLE_STRING</code></li>
+ <li>IA2: <code>IA2_ROLE_DESKTOP_PANE</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_desktop_icon/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_desktop_icon/index.html
new file mode 100644
index 0000000000..af46f177e6
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_desktop_icon/index.html
@@ -0,0 +1,30 @@
+---
+title: ROLE_DESKTOP_ICON
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DESKTOP_ICON
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DESKTOP_ICON
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p><code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DESKTOP_PANE">ROLE_DESKTOP_PANE</a></code>におけるアイコン化された内部フレーム。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_INTERNAL_FRAME">ROLE_INTERNAL_FRAME</a></code>を参照してください。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_DESKTOP_ICON</code></li>
+ <li>ATK: <code>ATK_ROLE_DESKTOP_ICON</code></li>
+ <li>UA: <code>NSAccessibilityImageRole</code></li>
+ <li>MSAA: <code>USE_ROLE_STRING</code></li>
+ <li>IA2: <code>IA2_ROLE_DESKTOP_ICON</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_diagram/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_diagram/index.html
new file mode 100644
index 0000000000..a0fbf37deb
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_diagram/index.html
@@ -0,0 +1,28 @@
+---
+title: ROLE_DIAGRAM
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIAGRAM
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIAGRAM
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>データを図式化するために使用されるグラフィックイメージを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>ATK: <code>ATK_ROLE_IMAGE</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_DIAGRAM</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_dial/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_dial/index.html
new file mode 100644
index 0000000000..862da2fb26
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_dial/index.html
@@ -0,0 +1,29 @@
+---
+title: ROLE_DIAL
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIAL
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIAL
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>その目的は、ユーザーが値を設定できるようにすることであるダイヤルまたはノブを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_DIAL</code></li>
+ <li>ATK: <code>ATK_ROLE_DIAL</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_DIAL</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_dialog/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_dialog/index.html
new file mode 100644
index 0000000000..f1d9ad5dfb
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_dialog/index.html
@@ -0,0 +1,35 @@
+---
+title: ROLE_DIALOG
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIALOG
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIALOG
+---
+<p><a href="/ja/docs/Accessibility/AT-APIs/Gecko/Roles">« Gecko Roles ページ</a></p>
+<p>ダイアログボックスまたはメッセージボックスを表します。</p>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleText" title="">nsIAccessibleText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleEditableText" title="">nsIAccessibleEditableText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperText" title="">nsIAccessibleHyperText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleDocument" title="">nsIAccessibleDocument</a></code></li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_DIALOG</code></li>
+ <li>ATK: <code>ATK_ROLE_DIALOG</code></li>
+ <li>UA: <code>NSAccessibilityWindowRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_DIALOG</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#dialog">dialog</a></code></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/dialog" title="dialog">dialog</a></code>/&gt;, &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/wizard" title="wizard">wizard</a></code>/&gt;</li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_directory_pane/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_directory_pane/index.html
new file mode 100644
index 0000000000..6c5b3c4e34
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_directory_pane/index.html
@@ -0,0 +1,30 @@
+---
+title: ROLE_DIRECTORY_PANE
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIRECTORY_PANE
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIRECTORY_PANE
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>ディレクトリペイン。ユーザーがディレクトリの内容をナビゲートしたり、選択できる区画。ファイルチューザによって使用されてもよいです。また、<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_FILE_CHOOSER">ROLE_FILE_CHOOSER</a></code>を参照してください。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_DIRECTORY_PANE</code></li>
+ <li>ATK: <code>ATK_ROLE_DIRECTORY_PANE</code></li>
+ <li>UA: <code>NSAccessibilityBrowserRole</code></li>
+ <li>MSAA : <code>USE_ROLE_STRING</code></li>
+ <li>IA2: <code>IA2_ROLE_DESKTOP_PANE</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_document/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_document/index.html
new file mode 100644
index 0000000000..d2824c63ec
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_document/index.html
@@ -0,0 +1,35 @@
+---
+title: ROLE_DOCUMENT
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DOCUMENT
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DOCUMENT
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>ドキュメントウィンドウを表します。ドキュメントウィンドウは、常にアプリケーションウィンドウ内に含まれます。</p>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleText" title="">nsIAccessibleText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleEditableText" title="">nsIAccessibleEditableText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperText" title="">nsIAccessibleHyperText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleDocument" title="">nsIAccessibleDocument</a></code></li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_DOCUMENT_FRAME</code></li>
+ <li>ATK: <code>ATK_ROLE_DOCUMENT_FRAME</code></li>
+ <li>UA: <code>NSAccessibilityGroupRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_DOCUMENT</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#document">document</a></code></li>
+ <li>HTML: content document</li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_document_frame/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_document_frame/index.html
new file mode 100644
index 0000000000..a5220cf4d5
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_document_frame/index.html
@@ -0,0 +1,27 @@
+---
+title: ROLE DOCUMENT FRAME
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DOCUMENT_FRAME
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DOCUMENT_FRAME
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>文書内容のビューが含まれている視覚フレームまたはコンテナ。ドキュメントのフレームが別の文書インスタンス内で発生するかもしれません。その場合、2番目の文書が、含んでいるインスタンスに埋め込まれていると言えます。HTML フレームは、多くの場合、ROLE_DOCUMENT_FRAME です。このオブジェクト、またはシングルトン子孫のいずれかは、Document インターフェイスを実装する必要があります。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: RROLE_DOCUMENT_FRAME</li>
+ <li>ATK: ATK_ROLE_DOCUMENT_FRAME</li>
+ <li>UA: @"AXWebArea"</li>
+ <li>MSAA:USE_ROLE_STRING</li>
+ <li>IA2: IA2_ROLE_UNKNOWN</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_droplist/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_droplist/index.html
new file mode 100644
index 0000000000..a240f3e9f0
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_droplist/index.html
@@ -0,0 +1,28 @@
+---
+title: ROLE_DROPLIST
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DROPLIST
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_DROPLIST
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>カレンダーコントロールを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_COMBO_BOX</code></li>
+ <li>ATK: <code>ATK_ROLE_COMBO_BOX</code></li>
+ <li>UA: <code>NSAccessibilityPopUpButtonRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_DROPLIST</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_editbar/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_editbar/index.html
new file mode 100644
index 0000000000..2a48b7574d
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_editbar/index.html
@@ -0,0 +1,29 @@
+---
+title: ROLE EDITBAR
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_EDITBAR
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_EDITBAR
+---
+<p> </p>
+
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>ツールバーの編集可能なテキストオブジェクト。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_EDITBAR</li>
+ <li>ATK: ATK_ROLE_EDITBAR</li>
+ <li>UA: NSAccessibilityTextFieldRole</li>
+ <li>MSAA: ROLE_SYSTEM_TEXT</li>
+ <li>IA2: IA2_ROLE_EDITBAR</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_entry/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_entry/index.html
new file mode 100644
index 0000000000..2314b07eda
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_entry/index.html
@@ -0,0 +1,29 @@
+---
+title: ROLE ENTRY
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ENTRY
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ENTRY
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>テキストコンテンツが、ユーザーによって入力されるか、修正されるコントロール。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_ENTRY</li>
+ <li>ATK: ATK_ROLE_ENTRY</li>
+ <li>UA: NSAccessibilityTextFieldRole</li>
+ <li>MSAA/IA2: ROLE_SYSTEM_TEXT</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#textbox">textbox</a></code></li>
+ <li>XUL: <code><a href="/ja/docs/Mozilla/Tech/XUL/textbox" title="textbox">textbox</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_equation/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_equation/index.html
new file mode 100644
index 0000000000..d070df3529
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_equation/index.html
@@ -0,0 +1,30 @@
+---
+title: ROLE_EQUATION
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_EQUATION
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_EQUATION
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>数式を表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_EQUATION</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_file_chooser/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_file_chooser/index.html
new file mode 100644
index 0000000000..d2be2acdb3
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_file_chooser/index.html
@@ -0,0 +1,30 @@
+---
+title: ROLE_FILE_CHOOSER
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_FILE_CHOOSER
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_FILE_CHOOSER
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>ファイル選択。ディレクトリ内のファイルを表示し、ユーザーがファイルを選択できるようにする特殊なダイアログが、別のディレクトリをブラウズしたり、ファイル名を指定します。ディレクトリの内容を表示するには、ディレクトリ·ペインを使用してもよいです。また、<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_DIRECTORY_PANE">ROLE_DIRECTORY_PANE</a></code>を参照してください</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_FILE_CHOOSER</code></li>
+ <li>ATK: <code>ATK_ROLE_FILE_CHOOSER</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code> (unused on Mac OS X)</li>
+ <li>MSAA : <code>USE_ROLE_STRING</code></li>
+ <li>IA2: <code>IA2_ROLE_FILE_CHOOSER</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_font_chooser/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_font_chooser/index.html
new file mode 100644
index 0000000000..8fd3d7e13e
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_font_chooser/index.html
@@ -0,0 +1,30 @@
+---
+title: ROLE_FONT_CHOOSER
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_FONT_CHOOSER
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_FONT_CHOOSER
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>フォント選択ダイアログ。フォント選択ダイアログは、ユーザーがフォントのための各種属性を選択できるようにするコンポーネントです。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_FONT_CHOOSER</code></li>
+ <li>ATK: <code>ATK_ROLE_FONT_CHOOSER</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA : <code>USE_ROLE_STRING</code></li>
+ <li>IA2: <code>IA2_ROLE_FONT_CHOOSER</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_footer/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_footer/index.html
new file mode 100644
index 0000000000..bbbf07c9bf
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_footer/index.html
@@ -0,0 +1,27 @@
+---
+title: ROLE FOOTER
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_FOOTER
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_FOOTER
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>文書ページのフッター。また、<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_HEADER">ROLE_HEADER</a></code>を参照してください。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_FOOTER</li>
+ <li>ATK: ATK_ROLE_FOOTER</li>
+ <li>UA: NSAccessibilityGroupRole</li>
+ <li>MSAA: USE_ROLE_STRING</li>
+ <li>IA2: IA2_ROLE_FOOTER</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_form/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_form/index.html
new file mode 100644
index 0000000000..90dd8ef6a1
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_form/index.html
@@ -0,0 +1,28 @@
+---
+title: ROLE FORM
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_FORM
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_FORM
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Descroption" name="Descroption">説明</h2>
+
+<p>フォームコントロールのコンテナ。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>ATK: ATK_ROLE_FORM</li>
+ <li>UA: NSAccessibilityGroupRole</li>
+ <li>MSAA: USE_ROLE_STRING</li>
+ <li>IA2: IA2_ROLE_FORM</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>HTML: &lt;form/&gt;</li>
+</ul>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_glass_pane/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_glass_pane/index.html
new file mode 100644
index 0000000000..197450c892
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_glass_pane/index.html
@@ -0,0 +1,27 @@
+---
+title: ROLE GLASS PANE
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_GLASS_PANE
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_GLASS_PANE
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>窓ガラス。その下のすべてのペインの一番上に描画することが保証されたペイン。また、<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROOT_PANE">ROLE_ROOT_PANE</a></code>を参照してください。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_GLASS_PANE</li>
+ <li>ATK: ATK_ROLE_GLASS_PANE</li>
+ <li>UA: NSAccessibilityGroupRole</li>
+ <li>MSAA : ROLE_SYSTEM_APPLICATION</li>
+ <li>IA2: IA2_ROLE_GLASS_PANE</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_graphic/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_graphic/index.html
new file mode 100644
index 0000000000..827e84c62f
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_graphic/index.html
@@ -0,0 +1,43 @@
+---
+title: ROLE_GRAPHIC
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_GRAPHIC
+tags:
+ - AT_APIs
+ - Accessibility
+ - Gecko
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_GRAPHIC
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>画像を表します。</p>
+
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleImage" title="">nsIAccessibleImage</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperLink" title="">nsIAccessibleHyperLink</a></code></li>
+</ul>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI:</li>
+ <li>ATK: <code>ATK_ROLE_IMAGE</code></li>
+ <li>UA: <code>NSAccessibilityImageRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_GRAPHIC</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#img">img</a></code></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/image" title="image">image</a></code>/&gt;</li>
+ <li>HTML: <a href="/ja/docs/Web/HTML/Element/img" title="HTML の &lt;img> 要素は、文書に画像を埋め込みます。これは置換要素です。"><code>&lt;img&gt;</code></a></li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_grip/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_grip/index.html
new file mode 100644
index 0000000000..d13b094295
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_grip/index.html
@@ -0,0 +1,23 @@
+---
+title: ROLE_GRIP
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_GRIP
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_GRIP
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>特別なマウスポインタを表します。ユーザにウィンドウなどのユーザインターフェイス要素を操作させます。例えば、ユーザがウィンドウ右下隅のサイズ変更グリップをクリックし、ドラッグしてそのサイズを変更します。</p>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_UNKNOWN</code></li>
+ <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li>
+ <li>UA: <code>NSAccessibilitySplitterRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_GRIP</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<p>サポートされていません。</p>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_grouping/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_grouping/index.html
new file mode 100644
index 0000000000..2a6c263623
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_grouping/index.html
@@ -0,0 +1,40 @@
+---
+title: ROLE_GROUPING
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_GROUPING
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_GROUPING
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>他のオブジェクトを論理的にグループ化します。グループ化オブジェクトとそれに含まれるオブジェクトの間に必ずしも親子関係があるとは限りません。</p>
+
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+</ul>
+
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_PANEL</code></li>
+ <li>ATK: <code>ATK_ROLE_PANEL</code></li>
+ <li>UA: <code>NSAccessibilityGroupRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_GROUPING</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#group">group</a></code>, <code><a class="external" href="https://w3c.github.io/aria/#radiogroup">radiogroup</a></code></li>
+ <li>HTML: <a href="/ja/docs/Web/HTML/Element/fieldset" title="HTML の &lt;fieldset> 要素は、ウェブフォーム内のラベル (&lt;label>) などのようにいくつかのコントロールをグループ化するために使用します。"><code>&lt;fieldset&gt;</code></a></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/groupbox" title="groupbox">groupbox</a></code>/&gt;, &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/radiogroup" title="radiogroup">radiogroup</a></code>/&gt;</li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_header/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_header/index.html
new file mode 100644
index 0000000000..52272ac9de
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_header/index.html
@@ -0,0 +1,29 @@
+---
+title: ROLE HEADER
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HEADER
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HEADER
+---
+<p> </p>
+
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>ドキュメントページのヘッダ。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_FOOTER">ROLE_FOOTER</a></code>も参照してください。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_HEADER</li>
+ <li>ATK: ATK_ROLE_HEADER</li>
+ <li>UA: NSAccessibilityGroupRole</li>
+ <li>MSAA: USE_ROLE_STRING</li>
+ <li>IA2: IA2_ROLE_HEADER</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_heading/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_heading/index.html
new file mode 100644
index 0000000000..bd2477520e
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_heading/index.html
@@ -0,0 +1,32 @@
+---
+title: ROLE HEADING
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HEADING
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HEADING
+---
+<p> </p>
+
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>見出し</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_HEADING</li>
+ <li>ATK: ATK_ROLE_HEADING</li>
+ <li>UA: NSAccessibilityStaticTextRole</li>
+ <li>MSAA:USE_ROLE_STRING</li>
+ <li>IA2: IA2_ROLE_HEADING</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#heading">heading</a></code></li>
+ <li>HTML: <span class="nowiki"> &lt;h1&gt;, &lt;h2&gt;, ... , &lt;h6&gt; </span></li>
+</ul>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_helpballoon/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_helpballoon/index.html
new file mode 100644
index 0000000000..f5d70d03c3
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_helpballoon/index.html
@@ -0,0 +1,34 @@
+---
+title: ROLE_HELPBALLOON
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HELPBALLOON
+tags:
+ - AT_APIs
+ - Accessibility
+ - NeedsContent
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HELPBALLOON
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>ツールチップやヘルプバルーンの形のヘルプトピックを表示します。</p>
+
+<h2 id="Children" name="Children">子要素</h2>
+
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+
+<ul>
+ <li>AT-SPI:</li>
+ <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li>
+ <li>UA: @"AXHelpTag"</li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_HELPBALLOON</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_hotkeyfield/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_hotkeyfield/index.html
new file mode 100644
index 0000000000..434cdb6e3e
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_hotkeyfield/index.html
@@ -0,0 +1,28 @@
+---
+title: ROLE_HOTKEYFIELD
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HOTKEYFIELD
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HOTKEYFIELD
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>ユーザーがキーストロークの組み合わせまたはシーケンスを入力することを可能にするホットキーフィールドを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_HOTKEYFIELD</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_html_container/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_html_container/index.html
new file mode 100644
index 0000000000..eccf6ca840
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_html_container/index.html
@@ -0,0 +1,27 @@
+---
+title: ROLE HTML CONTAINER
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HTML_CONTAINER
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_HTML_CONTAINER
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>子供が文書内容を表す、HTML のための AA ドキュメントコンテナ。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_HTML_CONTAINER</li>
+ <li>ATK: ATK_ROLE_HTML_CONTAINER</li>
+ <li>UA: NSAccessibilityUnknownRole</li>
+ <li>MSAA : ROLE_SYSTEM_APPLICATION</li>
+ <li>IA2: IA2_ROLE_UNKNOWN</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使われない。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_icon/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_icon/index.html
new file mode 100644
index 0000000000..4dc8a12668
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_icon/index.html
@@ -0,0 +1,29 @@
+---
+title: ROLE ICON
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ICON
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ICON
+---
+<p> </p>
+
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>固定サイズの小型イメージ、通常はコンポーネントを装飾するために使用されます。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_ICON</li>
+ <li>ATK: ATK_ROLE_ICON</li>
+ <li>UA: NSAccessibilityImageRole</li>
+ <li>MSAA : ROLE_SYSTEM_PUSHBUTTON</li>
+ <li>IA2: IA2_ROLE_ICON</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_image_map/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_image_map/index.html
new file mode 100644
index 0000000000..620eb25232
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_image_map/index.html
@@ -0,0 +1,26 @@
+---
+title: ROLE_IMAGE_MAP
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_IMAGE_MAP
+tags:
+ - AT_APIs
+ - Accessibility
+ - NeedsContent
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_IMAGE_MAP
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>イメージマップ。その領域を表す子リンクを持っています。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_IMAGE</code></li>
+ <li>ATK: <code>ATK_ROLE_IMAGE</code></li>
+ <li>UA: <code>NSAccessibilityImageRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_GRAPHIC</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>?</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ime/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ime/index.html
new file mode 100644
index 0000000000..1e95f51a4e
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ime/index.html
@@ -0,0 +1,25 @@
+---
+title: ROLE_IME
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_IME
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_IME
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>欧米のキーボード上の漢字の入力等、キーボードにない文字の入力を可能にするために使用されるオブジェクト。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>ATK: <code>ATK_ROLE_INPUT_METHOD_WINDOW</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA: <code>USE_ROLE_STRING</code></li>
+ <li>IA2: <code>IA2_ROLE_INPUT_METHOD_WINDOW</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_indicator/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_indicator/index.html
new file mode 100644
index 0000000000..1cb2b70d67
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_indicator/index.html
@@ -0,0 +1,29 @@
+---
+title: ROLE_INDICATOR
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_INDICATOR
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_INDICATOR
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>このような現在のアイテムを指し示すポインタのグラフィックなどの指標を表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI:</li>
+ <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_INDICATOR</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_internal_frame/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_internal_frame/index.html
new file mode 100644
index 0000000000..e6141d9ad4
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_internal_frame/index.html
@@ -0,0 +1,39 @@
+---
+title: ROLE_INTERNAL_FRAME
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_INTERNAL_FRAME
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_INTERNAL_FRAME
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>フレーム内のサブドキュメントです。</p>
+
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+</ul>
+
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+
+<ul>
+ <li>ATK: <code>ATK_ROLE_INTERNAL_FRAME</code></li>
+ <li>UA: @"AXWebArea"</li>
+ <li>MSAA: <code>USE_ROLE_STRING</code></li>
+ <li>IA2: <code>IA2_ROLE_INTERNAL_FRAME</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+
+<ul>
+ <li>HTML: <a href="/ja/docs/Web/HTML/Element/frame" title="&lt;frame> は、別の HTML 文書を表示できる個々の領域を定義する HTML 要素です。 frame 要素は &lt;frameset> の内部で使用します。"><code>&lt;frame&gt;</code></a> または <a href="/ja/docs/Web/HTML/Element/iframe" title="HTML のインラインフレーム要素 (&lt;iframe>) は、入れ子になった閲覧コンテキストを表現し、現在の HTML ページに他のページを埋め込むことができます。"><code>&lt;iframe&gt;</code></a></li>
+ <li>XUL: <code><a href="/ja/docs/Mozilla/Tech/XUL/iframe" title="iframe">iframe</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XUL/editor" title="editor">editor</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XUL/browser" title="browser">browser</a></code></li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ipaddress/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ipaddress/index.html
new file mode 100644
index 0000000000..63257fde23
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ipaddress/index.html
@@ -0,0 +1,28 @@
+---
+title: ROLE_IPADDRESS
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_IPADDRESS
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_IPADDRESS
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>インターネットプロトコル(IP)アドレスのために設計された編集コントロールを表します。編集コントロールは、IPアドレスの各オクテットのための一つのセクションに分割されています。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_IPADDRESS</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_label/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_label/index.html
new file mode 100644
index 0000000000..8b31fb3737
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_label/index.html
@@ -0,0 +1,31 @@
+---
+title: ROLE LABEL
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LABEL
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LABEL
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>インターフェイスの中のアイコンまたは短い文字列を提示します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_LABEL</li>
+ <li>ATK: ATK_ROLE_LABEL</li>
+ <li>UA: NSAccessibilityStaticTextRole</li>
+ <li>MSAA: ROLE_SYSTEM_STATICTEXT</li>
+ <li>IA2: IA2_ROLE_LABEL</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#label">label</a></code></li>
+ <li>HTML: &lt;label/&gt;</li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/label" title="label">label</a></code>/&gt;</li>
+</ul>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_layered_pane/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_layered_pane/index.html
new file mode 100644
index 0000000000..72e9d3ecc3
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_layered_pane/index.html
@@ -0,0 +1,27 @@
+---
+title: ROLE LAYERED PANE
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LAYERED_PANE
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LAYERED_PANE
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>階層化ペイン。その子を層(レイヤー)に描画できる特殊なペインで、重なり順を提供します。これは、通常、ウィンドウ内のビジュアルコンポーネントのほとんどが含まれているペインだけでなく、メニューバーを保持するペインです。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_GLASS_PANE">ROLE_GLASS_PANE</a></code> と <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROOT_PANE">ROLE_ROOT_PANE</a></code> も参照してください。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_LAYERED_PANE</li>
+ <li>ATK: ATK_ROLE_LAYERED_PANE</li>
+ <li>UA: NSAccessibilityGroupRole</li>
+ <li>MSAA: USE_ROLE_STRING</li>
+ <li>IA2: IA2_ROLE_LAYERED_PANE</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_link/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_link/index.html
new file mode 100644
index 0000000000..4432a25159
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_link/index.html
@@ -0,0 +1,36 @@
+---
+title: ROLE_LINK
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LINK
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LINK
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>何かへのリンクを表します。このオブジェクトはテキストやグラフィックで表現されますが、ボタンのように動作します。</p>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleText" title="">nsIAccessibleText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperText" title="">nsIAccessibleHyperText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperLink" title="">nsIAccessibleHyperLink</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_LINK</code></li>
+ <li>ATK: <code>ATK_ROLE_LINK</code></li>
+ <li>UA: @"AXLink"</li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_LINK</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#link">link</a></code></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/label" title="label">label</a></code> class="text-link"/&gt;</li>
+ <li>HTML: <span class="nowiki"> <a href="/ja/docs/Web/HTML/Element/a" title="HTML の &lt;a> 要素 (アンカー要素) は、別のウェブページ、ファイル、同一ページ内の場所、電子メールアドレス、または他の URL へのハイパーリンクを作成します。"><code>&lt;a&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/area" title="HTML の &lt;area> 要素は画像のホットスポット領域を定義し、また任意で領域とハイパーテキストリンクの関連づけを行います。この要素は &lt;map> 要素内だけで使用します。"><code>&lt;area&gt;</code></a></span></li>
+ <li>XForms: &lt;trigger appearance="minimal"/&gt;.</li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_list/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_list/index.html
new file mode 100644
index 0000000000..261cda9e1e
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_list/index.html
@@ -0,0 +1,41 @@
+---
+title: ROLE_LIST
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LIST
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LIST
+---
+<p><a href="/ja/docs/Accessibility/AT-APIs/Gecko/Roles">« Gecko Roles ページ</a></p>
+<p>次のいずれかを表します:</p>
+<ol>
+ <li>ユーザが 1 個以上の項目を選択できるリストボックス。</li>
+ <li>文書内の構造化されたリスト。これらは常に <code>STATE_READONLY</code> のマークが付いています。</li>
+</ol>
+<p><code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LISTITEM">ROLE_LISTITEM</a></code> もご覧ください。</p>
+<h2 id="Children" name="Children">子要素</h2>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleText" title="">nsIAccessibleText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperText" title="">nsIAccessibleHyperText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleSelectable" title="">nsIAccessibleSelectable</a></code></li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_LIST</code></li>
+ <li>ATK: <code>ATK_ROLE_LIST</code></li>
+ <li>UA: <code>NSAccessibilityListRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_LIST</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#list">list</a></code></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/listbox" title="listbox">listbox</a></code>/&gt;</li>
+ <li>HTML: <span class="nowiki"><a href="/ja/docs/Web/HTML/Element/ul" title="HTML の &lt;ul> 要素は、項目の順序なしリストを表します。一般的に、行頭記号を伴うリストとして描画されます。"><code>&lt;ul&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/ol" title="HTML の &lt;ol> 要素は、項目の順序付きリストを表し、ふつうは番号付きのリストとして表示されます。"><code>&lt;ol&gt;</code></a> </span></li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_listbox/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_listbox/index.html
new file mode 100644
index 0000000000..4aef332022
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_listbox/index.html
@@ -0,0 +1,29 @@
+---
+title: ROLE LISTBOX
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LISTBOX
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LISTBOX
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>オプションのリスト</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_LIST</li>
+ <li>ATK: ATK_ROLE_LIST</li>
+ <li>UA: NSAccessibilityListRole</li>
+ <li>MSAA/IA2: ROLE_SYSTEM_LIST</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#listbox">listbox</a></code></li>
+ <li>XUL: <code><a href="/ja/docs/Mozilla/Tech/XUL/listbox" title="listbox">listbox</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_listitem/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_listitem/index.html
new file mode 100644
index 0000000000..a4c8e5bc98
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_listitem/index.html
@@ -0,0 +1,51 @@
+---
+title: ROLE_LISTITEM
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LISTITEM
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_LISTITEM
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>リスト内の項目を表します。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LIST">ROLE_LIST</a></code> もご覧ください。</p>
+
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleText" title="">nsIAccessibleText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperText" title="">nsIAccessibleHyperText</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperLink" title="">nsIAccessibleHyperLink</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+</ul>
+
+<h2 id="States" name="States">状態</h2>
+
+<ul>
+ <li><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/States#STATE_SELECTABLE">STATE_SELECTABLE</a>.</li>
+</ul>
+
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_LIST_ITEM</code></li>
+ <li>ATK: <code>ATK_ROLE_LIST_ITEM</code></li>
+ <li>UA: <code>NSAccessibilityRowRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_LISTITEM</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#listitem">listitem</a></code></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/listitem" title="listitem">listitem</a></code>&gt;</li>
+ <li>HTML: <a href="/ja/docs/Web/HTML/Element/li" title="HTML の &lt;li> 要素は、リストの項目を表すために用いられます。この要素は、その項目が属する順序付きリスト (&lt;ol>)、順序なしリスト (&lt;ul>)、メニュー (&lt;menu>) のいずれかの子要素として配置する必要があります。メニュー要素および順序なしリスト内においては、リストの項目は通常、行頭文字伴って表示され、順序付きリスト内では、数字や文字による連番のリストマーカーを伴って表示されます。"><code>&lt;li&gt;</code></a></li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menubar/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menubar/index.html
new file mode 100644
index 0000000000..4f02f8cf0c
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menubar/index.html
@@ -0,0 +1,35 @@
+---
+title: ROLE_MENUBAR
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUBAR
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUBAR
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>ユーザにより選択されたメニューの (ウィンドウのタイトルバー下に配置された) メニューバーを表します。</p>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+</ul>
+<h2 id="Events" name="Events">イベント</h2>
+<ul>
+ <li><code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Events#EVENT_MENU_START">EVENT_MENU_START</a></code> - その配下にある <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUITEM">ROLE_MENUITEM</a></code> がフォーカスされた時に発生。</li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_MENU_BAR</code></li>
+ <li>ATK: <code>ATK_ROLE_MENU_BAR</code></li>
+ <li>UA: <code>NSAccessibilityMenuBarRole</code></li>
+ <li>MSAA: <code>ROLE_SYSTEM_MENUBAR</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: role="<code><a class="external" href="https://w3c.github.io/aria/#menubar">menubar</a></code>"</li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/menubar" title="menubar">menubar</a></code>/&gt;</li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menuitem/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menuitem/index.html
new file mode 100644
index 0000000000..455ca5e29a
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menuitem/index.html
@@ -0,0 +1,35 @@
+---
+title: ROLE_MENUITEM
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUITEM
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUITEM
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>メニュー項目を表します。実行するコマンドやオプションをユーザに選択させるための、メニュー内のエントリです。</p>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+</ul>
+
+<h2 id="Children" name="Children">子要素</h2>
+<p>子はありません。</p>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_MENU_ITEM</code></li>
+ <li>ATK: <code>ATK_ROLE_MENU_ITEM</code></li>
+ <li>UA: <code>NSAccessibilityMenuItemRole</code></li>
+ <li>MSAA/ IA2: <code>ROLE_SYSTEM_MENUITEM</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#menuitem">menuitem</a></code></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/menuitem" title="menuitem">menuitem</a></code>/&gt;</li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menupopup/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menupopup/index.html
new file mode 100644
index 0000000000..0a580711c8
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_menupopup/index.html
@@ -0,0 +1,37 @@
+---
+title: ROLE_MENUPOPUP
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUPOPUP
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_MENUPOPUP
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>メニューを表します。実行する操作をユーザに選択させるための、オプションの一覧を提供します。</p>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleSelectable" title="">nsIAccessibleSelectable</a></code></li>
+</ul>
+<h2 id="Events" name="Events">イベント</h2>
+<ul>
+ <li><code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Events#EVENT_MENUPOPUPSTART">EVENT_MENUPOPUPSTART</a></code> - メニューが表示された時に発生。</li>
+ <li><code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Events#EVENT_MENUPOPUPEND">EVENT_MENUPOPUPEND</a></code> - メニューが隠された時に発生。</li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_MENU</code></li>
+ <li>ATK: <code>ATK_ROLE_MENU</code></li>
+ <li>UA: <code>NSAccessibilityMenuRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_MENUPOPUP</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#menu">menu</a></code></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/popup" title="popup">popup</a></code>/&gt;, &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/menupopup" title="menupopup">menupopup</a></code>/&gt;</li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_nothing/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_nothing/index.html
new file mode 100644
index 0000000000..0c05a6fb07
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_nothing/index.html
@@ -0,0 +1,30 @@
+---
+title: ROLE_NOTHING
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_NOTHING
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_NOTHING
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>アクセシブルが、明確に定義されたロールを持っていない場合に使用されます。</p>
+
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+
+<p>アクセシブルは、任意の <a href="/docs/Web/Accessibility/AT-APIs/Gecko/Interfaces">インターフェイス</a> を実装できます。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_UNKNOWN</code></li>
+ <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA: 0</li>
+ <li>IA2: <code>IA2_ROLE_UNKNOWN</code></li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_option/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_option/index.html
new file mode 100644
index 0000000000..3e67ec16fe
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_option/index.html
@@ -0,0 +1,27 @@
+---
+title: ROLE_OPTION
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_OPTION
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_OPTION
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>リストボックス内のオプション。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_LIST_ITEM</code></li>
+ <li>ATK: <code>ATK_ROLE_LIST_ITEM</code></li>
+ <li>UA: <code>NSAccessibilityRowRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_LISTITEM</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#option">option</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_option_pane/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_option_pane/index.html
new file mode 100644
index 0000000000..21ca6a487a
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_option_pane/index.html
@@ -0,0 +1,27 @@
+---
+title: ROLE OPTION PANE
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_OPTION_PANE
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_OPTION_PANE
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>その主な用途がダイアログ内にある特殊なペイン。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_OPTION_PANE</li>
+ <li>ATK: ATK_ROLE_OPTION_PANE</li>
+ <li>UA: NSAccessibilityGroupRole</li>
+ <li>MSAA: USE_ROLE_STRING</li>
+ <li>IA2: IA2_ROLE_OPTION_PANE</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_outline/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_outline/index.html
new file mode 100644
index 0000000000..c8ef12e7a5
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_outline/index.html
@@ -0,0 +1,33 @@
+---
+title: ROLE_OUTLINE
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_OUTLINE
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_OUTLINE
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>ツリービューコントロールなどのアウトライン構造またはツリー構造を表します。階層的なリストを表示し、ユーザは下層の展開と折り畳みができます。</p>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleTreeCache" title="">nsIAccessibleTreeCache</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleSelectable" title="">nsIAccessibleSelectable</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_TREE</code></li>
+ <li>ATK: <code>ATK_ROLE_TREE</code></li>
+ <li>UA: <code>NSAccessibilityOutlineRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_OUTLINE</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#tree">tree</a></code></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/tree" title="tree">tree</a></code>/&gt;</li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_outlineitem/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_outlineitem/index.html
new file mode 100644
index 0000000000..183d743baf
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_outlineitem/index.html
@@ -0,0 +1,36 @@
+---
+title: ROLE_OUTLINEITEM
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_OUTLINEITEM
+tags:
+ - AT_APIs
+ - Accessibility
+ - NeedsContent
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_OUTLINEITEM
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>アウトライン構造またはツリー構造内の項目を表します。</p>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleTreeCache" title="">nsIAccessibleTreeCache</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleSelectable" title="">nsIAccessibleSelectable</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_LIST_ITEM</code></li>
+ <li>ATK: <code>ATK_ROLE_LIST_ITEM</code></li>
+
+ <li>UA: <code>NSAccessibilityRowRole</code> (サブロールとして <code>OutlineRow</code> を使用)</li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_OUTLINEITEM</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#treeitem">treeitem</a></code></li>
+ <li>HTML: ??</li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/treeitem" title="treeitem">treeitem</a></code>/&gt;</li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_page/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_page/index.html
new file mode 100644
index 0000000000..9bdae12420
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_page/index.html
@@ -0,0 +1,27 @@
+---
+title: ROLE PAGE
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGE
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGE
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>ドキュメント内容のページを表すオブジェクト。これは、ページ単位でユーザーによってアクセスされたドキュメントで使用されています。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_PAGE</li>
+ <li>ATK: ATK_ROLE_PAGE</li>
+ <li>UA: NSAccessibilityGroupRole</li>
+ <li>MSAA:USE_ROLE_STRING</li>
+ <li>IA2: IA2_ROLE_PAGE</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pagetab/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pagetab/index.html
new file mode 100644
index 0000000000..b0a45223c8
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pagetab/index.html
@@ -0,0 +1,31 @@
+---
+title: ROLE_PAGETAB
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETAB
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETAB
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>ページタブを表します。これはページタブリストの子要素です。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETABLIST">ROLE_PAGETABLIST</a></code> も参照してください。</p>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_PAGE_TAB</code></li>
+ <li>ATK: <code>ATK_ROLE_PAGE_TAB</code></li>
+ <li>UA: <code>NSAccessibilityGroupRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_PAGETAB</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#tab">tab</a></code></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/tab" title="tab">tab</a></code>/&gt;</li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pagetablist/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pagetablist/index.html
new file mode 100644
index 0000000000..97ef09b02a
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pagetablist/index.html
@@ -0,0 +1,33 @@
+---
+title: ROLE_PAGETABLIST
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETABLIST
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETABLIST
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>ページタブコントロールのコンテナを表します。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_PAGETAB">ROLE_PAGETAB</a></code>を参照してください。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_PAGE_TAB_LIST</code></li>
+ <li>ATK: <code>ATK_ROLE_PAGE_TAB_LIST</code></li>
+ <li>UA: <code>NSAccessibilityGroupRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_PAGETABLIST</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#tablist">tablist</a></code></li>
+ <li>DHTML: role="tabs"</li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/tabs" title="tabs">tabs</a></code>/&gt;</li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pane/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pane/index.html
new file mode 100644
index 0000000000..9289ffde50
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pane/index.html
@@ -0,0 +1,38 @@
+---
+title: ROLE_PANE
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PANE
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PANE
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>フレームウィンドウやドキュメントウィンドウ内のペインを表します。ユーザは他のペイン間および現在のペインのコンテンツ内の間を移動できますが、異なるペイン内の項目間は移動できません。このように、ペインはフレームウィンドウやドキュメントより下位、個々のコントロールよりも上位のグループレベルを表します。</p>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_PANEL</code></li>
+ <li>ATK: ATK_<code>ROLE_PANEL</code></li>
+ <li>UA: <code>NSAccessibilityGroupRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_GROUPING</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#region">region</a></code></li>
+ <li>HTML: first child of <a href="/ja/docs/Web/HTML/Element/frame" title="&lt;frame> は、別の HTML 文書を表示できる個々の領域を定義する HTML 要素です。 frame 要素は &lt;frameset> の内部で使用します。"><code>&lt;frame&gt;</code></a> or <a href="/ja/docs/Web/HTML/Element/iframe" title="HTML のインラインフレーム要素 (&lt;iframe>) は、入れ子になった閲覧コンテキストを表現し、現在の HTML ページに他のページを埋め込むことができます。"><code>&lt;iframe&gt;</code></a></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/panel" title="panel">panel</a></code>/&gt;, &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/tabbox" title="tabbox">tabbox</a></code>/&gt;</li>
+</ul>
+<h2 id="Features" name="Features">特徴</h2>
+<ul>
+ <li><code>nsIAccessible::value</code> は、現在のドキュメントの URL を露呈します。</li>
+ <li><code>nsIAccessible::name</code> は、現在のペインの <a href="/ja/docs/Web/HTML/Element/title" title="HTML 題名要素 (&lt;title>) は、ブラウザーのタイトルバーやページのタブに表示される文書の題名を定義します。"><code>&lt;title&gt;</code></a> を露呈します。</li>
+ <li>編集可能エリアでない限り、<code>STATE_READONLY</code> を設定します。</li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_paragraph/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_paragraph/index.html
new file mode 100644
index 0000000000..a7f4443dc4
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_paragraph/index.html
@@ -0,0 +1,27 @@
+---
+title: ROLE PARAGRAPH
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PARAGRAPH
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PARAGRAPH
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>テキストの段落。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_PARAGRAPH</li>
+ <li>ATK: ATK_ROLE_PARAGRAPH</li>
+ <li>UA: NSAccessibilityGroupRole</li>
+ <li>MSAA: USE_ROLE_STRING</li>
+ <li>IA2: IA2_ROLE_PARAGRAPH</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_parent_menuitem/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_parent_menuitem/index.html
new file mode 100644
index 0000000000..f79f65b850
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_parent_menuitem/index.html
@@ -0,0 +1,27 @@
+---
+title: ROLE_PARENT_MENUITEM
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PARENT_MENUITEM
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PARENT_MENUITEM
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>ユーザーが別のメニューを表示するように選択することができ、メニュー内の項目であるメニュー項目を表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_MENU</code></li>
+ <li>ATK: <code>ATK_ROLE_MENU</code></li>
+ <li>UA: <code>NSAccessibilityMenuItemRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_MENUITEM</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>XUL: <code><a href="/ja/docs/Mozilla/Tech/XUL/menuitem" title="menuitem">menuitem</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_password_text/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_password_text/index.html
new file mode 100644
index 0000000000..ab51e83aae
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_password_text/index.html
@@ -0,0 +1,28 @@
+---
+title: ROLE PASSWORD TEXT
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PASSWORD_TEXT
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PASSWORD_TEXT
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>パスワード、またはテキストコンテンツがユーザーに視覚的に示されていない他の場所に使用するテキストオブジェクトです。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_PASSWORD_TEXT</li>
+ <li>ATK: ATK_ROLE_PASSWORD_TEXT</li>
+ <li>UA: NSAccessibilityTextFieldRole</li>
+ <li>MSAA/IA2: ROLE_SYSTEM_TEXT</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>HTML: &lt;input type="password"/&gt;</li>
+</ul>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_popup_menu/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_popup_menu/index.html
new file mode 100644
index 0000000000..e2c8897daf
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_popup_menu/index.html
@@ -0,0 +1,25 @@
+---
+title: ROLE_POPUP_MENU
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_POPUP_MENU
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_POPUP_MENU
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>ユーザーはこれらの選択肢のいずれかを選択するとき、通常、ユーザーに選択肢のリストを提供するために使用され、一時的なウィンドウが非表示になります。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_POPUP_MENU</code></li>
+ <li>ATK: <code>ATK_ROLE_POPUP_MENU</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_MENUPOPUP</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_progressbar/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_progressbar/index.html
new file mode 100644
index 0000000000..37ff081c99
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_progressbar/index.html
@@ -0,0 +1,33 @@
+---
+title: ROLE_PROGRESSBAR
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PROGRESSBAR
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PROGRESSBAR
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>動的にユーザーが進行中の操作の完了率を示すプログレスバーを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_PROGRESS_BAR</code></li>
+ <li>ATK: ATK_<code>ROLE_PROGRESS_BAR</code></li>
+ <li>UA: <code>NSAccessibilityProgressIndicatorRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_PROGRESSBAR</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: &lt;<code><a class="external" href="https://w3c.github.io/aria/#progressbar">progressbar</a></code>/&gt;</li>
+ <li>HTML: <a href="/ja/docs/Web/HTML/Element/progress" title="HTML の &lt;progress> 要素は、タスクの進捗状況を表示します。プログレスバーとしてよく表示されます。"><code>&lt;progress&gt;</code></a></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/progressmeter" title="progressmeter">progressmeter</a></code>/&gt;</li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_propertypage/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_propertypage/index.html
new file mode 100644
index 0000000000..a9d719e7c8
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_propertypage/index.html
@@ -0,0 +1,39 @@
+---
+title: ROLE_PROPERTYPAGE
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PROPERTYPAGE
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PROPERTYPAGE
+---
+<p><a href="/ja/docs/Accessibility/AT-APIs/Gecko/Roles">« Gecko Roles ページ</a></p>
+
+<p>プロパティシートを表します。</p>
+
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+</ul>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_SCROLL_PANE</code></li>
+ <li>ATK: <code>ATK_ROLE_SCROLL_PANE</code></li>
+ <li>UA: <code>NSAccessibilityGroupRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_PROPERTYPAGE</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#tabpanel">tabpanel</a></code></li>
+ <li>XUL:&lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/tabpanel" title="tabpanel">tabpanel</a></code>/&gt;</li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pushbutton/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pushbutton/index.html
new file mode 100644
index 0000000000..a0b0ecc486
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_pushbutton/index.html
@@ -0,0 +1,33 @@
+---
+title: ROLE_PUSHBUTTON
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PUSHBUTTON
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+ - Référence(2)
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_PUSHBUTTON
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>プッシュボタンコントロールを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>ATK: <code>ATK_ROLE_PUSH_BUTTON</code></li>
+ <li>UA: <code>NSAccessibilityButtonRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_PUSHBUTTON</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#button">button</a></code></li>
+ <li>HTML: <a href="/ja/docs/Web/HTML/Element/button" title="HTML の &lt;button> 要素はクリックできるボタンを表し、フォームや、文書で単純なボタン機能が必要なあらゆる場所で使用することができます。"><code>&lt;button&gt;</code></a></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/button" title="button">button</a></code>/&gt;</li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_radio_menu_item/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_radio_menu_item/index.html
new file mode 100644
index 0000000000..4ba76918dd
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_radio_menu_item/index.html
@@ -0,0 +1,28 @@
+---
+title: ROLE_RADIO_MENU_ITEM
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_RADIO_MENU_ITEM
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_RADIO_MENU_ITEM
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>メニュー項目であるラジオボタンを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_RADIO_MENU_ITEM</code></li>
+ <li>ATK: <code>ATK_ROLE_RADIO_MENU_ITEM</code></li>
+ <li>UA: <code>NSAccessibilityMenuItemRole</code></li>
+ <li>MSAA: <code>ROLE_SYSTEM_MENUITEM</code></li>
+ <li>IA2: <code>IA2_ROLE_RADIO_MENU_ITEM</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#menuitemradio">menuitemradio</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_radiobutton/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_radiobutton/index.html
new file mode 100644
index 0000000000..4d48e00c69
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_radiobutton/index.html
@@ -0,0 +1,32 @@
+---
+title: ROLE_RADIOBUTTON
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_RADIOBUTTON
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_RADIOBUTTON
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>ラジオボタンとも呼ばれるオプションボタンを表します。これは、相互に排他的なオプションのグループの1つです。この属性を持つ単一の親を共有するすべてのオブジェクトは、単一の相互排他的なグループの一部であると仮定されます。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_RADIO_BUTTON</code></li>
+ <li>ATK: <code>ATK_ROLE_RADIO_BUTTON</code></li>
+ <li>UA: <code>NSAccessibilityRadioButtonRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_RADIOBUTTON</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#radio">radio</a></code></li>
+ <li>HTML: <a href="/ja/docs/Web/HTML/Element/input" title="HTML の &lt;input> 要素は、ユーザーからデータを受け取るための、ウェブベースのフォーム用の対話的なコントロールを作成するために使用します。"><code>&lt;input&gt;</code></a> of type <code>radio</code>.</li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/radio" title="radio">radio</a></code>/&gt;</li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_redundant_object/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_redundant_object/index.html
new file mode 100644
index 0000000000..efbc9084c5
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_redundant_object/index.html
@@ -0,0 +1,26 @@
+---
+title: ROLE REDUNDANT OBJECT
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_REDUNDANT_OBJECT
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_REDUNDANT_OBJECT
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Descroption" name="Descroption">説明</h2>
+
+<p>アクセシブルな階層内で他のオブジェクトと重複しているオブジェクトです。AT は、典型的には、このロールを持つオブジェクトを無視します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>ATK: ATK_ROLE_REDUNDANT_OBJECT</li>
+ <li>UA: NSAccessibilityUnknownRole</li>
+ <li>MSAA: USE_ROLE_STRING</li>
+ <li>IA2: IA2_ROLE_REDUNDANT_OBJECT</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_rich_option/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_rich_option/index.html
new file mode 100644
index 0000000000..9d1206aafc
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_rich_option/index.html
@@ -0,0 +1,28 @@
+---
+title: ROLE RICH OPTION
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_RICH_OPTION
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_RICH_OPTION
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>リストボックス内の豊富なオプション。それは子供として他のウィジェットを持つことができます。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_LIST_ITEM</li>
+ <li>ATK: ATK_ROLE_LIST_ITEM</li>
+ <li>UA: NSAccessibilityRowRole</li>
+ <li>MSAA/IA2: ROLE_SYSTEM_LISTITEM</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>XUL: <code><a href="/ja/docs/Mozilla/Tech/XUL/listitem" title="listitem">listitem</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_root_pane/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_root_pane/index.html
new file mode 100644
index 0000000000..35f5b9ca40
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_root_pane/index.html
@@ -0,0 +1,26 @@
+---
+title: ROLE_ROOT_PANE
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROOT_PANE
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROOT_PANE
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>ルート区画。ガラス区画と階層化区画を子として持つ特殊な区画。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_GLASS_PANE">ROLE_GLASS_PANE</a></code> と <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_LAYERED_PANE">ROLE_LAYERED_PANE</a></code>を参照してください。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_ROOT_PANE</code></li>
+ <li>ATK: ATK_<code>ROLE_ROOT_PANE</code></li>
+ <li>UA: <code>NSAccessibilityGroupRole</code></li>
+ <li>MSAA: <code>USE_ROLE_STRING</code></li>
+ <li>IA2: <code>IA2_ROLE_ROOT_PANE</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_row/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_row/index.html
new file mode 100644
index 0000000000..537ae5a89b
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_row/index.html
@@ -0,0 +1,34 @@
+---
+title: ROLE_ROW
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROW
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROW
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>テーブル内のセルの行を表します。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE">ROLE_TABLE</a></code> も参照してください。</p>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleHyperLink" title="">nsIAccessibleHyperLink</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleSelectable" title="">nsIAccessibleSelectable</a></code></li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_LIST_ITEM</code></li>
+ <li>ATK: <code>ATK_ROLE_LIST_ITEM</code></li>
+ <li>UA: <code>NSAccessibilityRowRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_ROW</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#row">row</a></code></li>
+ <li>HTML: <a href="/ja/docs/Web/HTML/Element/tr" title="HTML の &lt;tr> 要素は、表のひとつの行で構成される &lt;tr> ブロックを内部に持つマークアップを明示します。行の内部で &lt;th> 要素および &lt;td> 要素が、それぞれ見出しやデータのセルを生成します。"><code>&lt;tr&gt;</code></a></li>
+ <li>XUL:&lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/listitem" title="listitem">listitem</a></code>/&gt;</li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ruler/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ruler/index.html
new file mode 100644
index 0000000000..ef0ae65d70
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_ruler/index.html
@@ -0,0 +1,27 @@
+---
+title: ROLE RULER
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_RULER
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_RULER
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>ワードプロセッサで使用されるような定規。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_RULER</li>
+ <li>ATK: ATK_ROLE_RULER</li>
+ <li>UA: @"AXRuler"</li>
+ <li>MSAA: USE_ROLE_STRING</li>
+ <li>IA2: IA2_ROLE_RULER</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_scroll_pane/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_scroll_pane/index.html
new file mode 100644
index 0000000000..30de644a96
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_scroll_pane/index.html
@@ -0,0 +1,26 @@
+---
+title: ROLE_SCROLL_PANE
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SCROLL_PANE
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SCROLL_PANE
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>スクロールペイン、これは、ユーザーが大量の情報を少しずつ表示できるようにするオブジェクトです。その子は、スクロールバーとビューポートを含めることができます。<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_VIEW_PORT">ROLE_VIEW_PORT</a></code>を参照してください。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_SCROLL_PANE</code></li>
+ <li>ATK: <code>ATK_ROLE_SCROLL_PANE</code></li>
+ <li>UA: <code>NSAccessibilityScrollAreaRole</code></li>
+ <li>MSAA: <code>USE_ROLE_STRING</code></li>
+ <li>IA2: <code>IA2_ROLE_SCROLL_PANE</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_scrollbar/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_scrollbar/index.html
new file mode 100644
index 0000000000..22af0adf33
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_scrollbar/index.html
@@ -0,0 +1,22 @@
+---
+title: ROLE_SCROLLBAR
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SCROLLBAR
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SCROLLBAR
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>垂直または水平スクロールバーを表します。クライアント領域の一部か、コントロール内で使用されます。</p>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>ATK: <code>ATK_ROLE_SCROLL_BAR</code></li>
+ <li>UA: <code>NSAccessibilityScrollBarRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_SCROLLBAR</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<p>サポートされていません。</p>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_section/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_section/index.html
new file mode 100644
index 0000000000..0c08471fd0
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_section/index.html
@@ -0,0 +1,30 @@
+---
+title: ROLE SECTION
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SECTION
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SECTION
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>文書コンテンツのコンテナ。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_SECTION</li>
+ <li>ATK: ATK_ROLE_SECTION</li>
+ <li>UA: NSAccessibilityGroupRole</li>
+ <li>MSAA:USE_ROLE_STRING</li>
+ <li>IA2: IA2_ROLE_SECTION</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#section">section</a></code></li>
+ <li>HTML: &lt;div/&gt;, &lt;blockquote/&gt;</li>
+</ul>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_separator/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_separator/index.html
new file mode 100644
index 0000000000..ef277767b6
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_separator/index.html
@@ -0,0 +1,34 @@
+---
+title: ROLE_SEPARATOR
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SEPARATOR
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SEPARATOR
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>セパレータメニュー項目やウィンドウ内のペインを分割するバーなど、空間を二つの領域に視覚的に分割するために使用されます。</p>
+<h2 id="Children" name="Children">子要素</h2>
+<p>子はありません。</p>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_SEPARATOR</code></li>
+ <li>ATK: ATK_<code>ROLE_SEPARATOR</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_SEPARATOR</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#separator">separator</a></code></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/separator" title="separator">separator</a></code>/&gt;</li>
+ <li>HTML: <span class="nowiki"><a href="/ja/docs/Web/HTML/Element/hr" title="HTML の &lt;hr> 要素は、段落レベルの要素間において、テーマの意味的な区切りを表します。例えば、話の場面の切り替えや、節内での話題の転換などです。"><code>&lt;hr&gt;</code></a></span></li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_slider/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_slider/index.html
new file mode 100644
index 0000000000..db831c8a29
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_slider/index.html
@@ -0,0 +1,32 @@
+---
+title: ROLE_SLIDER
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SLIDER
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+ - Référence(2)
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SLIDER
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>ユーザーが最小値と最大値の間の指定された単位で設定を調整することを可能にするスライダーを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_SLIDER</code></li>
+ <li>ATK: <code>ATK_ROLE_SLIDER</code></li>
+ <li>UA: <code>NSAccessibilitySliderRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_SLIDER</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#slider">slider</a></code></li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_sound/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_sound/index.html
new file mode 100644
index 0000000000..9fd7001061
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_sound/index.html
@@ -0,0 +1,23 @@
+---
+title: ROLE_SOUND
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SOUND
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SOUND
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>システムサウンドを表します。様々なシステムイベントに関連付けられます。</p>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_UNKNOWN</code></li>
+ <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_SOUND</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<p>サポートされていません。</p>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_spinbutton/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_spinbutton/index.html
new file mode 100644
index 0000000000..b50d439b1a
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_spinbutton/index.html
@@ -0,0 +1,32 @@
+---
+title: ROLE_SPINBUTTON
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SPINBUTTON
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SPINBUTTON
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>ユーザーがスピンボックスに関連付けられた別の"buddy"コントロールに表示される値をインクリメントまたはデクリメントすることができます制御であるスピンボックスを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_SPIN_BUTTON</code></li>
+ <li>ATK: <code>ATK_ROLE_SPIN_BUTTON</code></li>
+ <li>UA: <code>NSAccessibilityIncrementorRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_SPINBUTTON</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#spinbutton">spinbutton</a></code></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/spinbuttons" title="spinbuttons">spinbuttons</a></code>/&gt;</li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_split_pane/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_split_pane/index.html
new file mode 100644
index 0000000000..690141f20b
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_split_pane/index.html
@@ -0,0 +1,26 @@
+---
+title: ROLE_SPLIT_PANE
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SPLIT_PANE
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_SPLIT_PANE
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>同時に2つのパネルを表示する特殊なパネルで分割ペイン。二つのパネルの間に、ユーザは1つのパネルが大きく、他方のパネルを小さくするために操作することができる分周器です。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_SPLIT_PANE</code></li>
+ <li>ATK: <code>ATK_ROLE_SPLIT_PANE</code></li>
+ <li>UA: <code>NSAccessibilitySplitGroupRole</code></li>
+ <li>MSAA: <code>USE_ROLE_STRING</code></li>
+ <li>IA2: <code>IA2_ROLE_SPLIT_PANE</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_statusbar/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_statusbar/index.html
new file mode 100644
index 0000000000..2eb49709db
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_statusbar/index.html
@@ -0,0 +1,27 @@
+---
+title: ROLE_STATUSBAR
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_STATUSBAR
+tags:
+ - AT_APIs
+ - Accessibility
+ - NeedsUpdate
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_STATUSBAR
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>ステータスバーを表します。現在の操作やアプリケーションの状態、選択したオブジェクトについての情報を表示する、ウィンドウ下部の領域です。ステータスバーには異なる種類の情報を表示する複数のフィールドがあります。</p>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_STATUSBAR</code></li>
+ <li>ATK: <code>ATK_ROLE_STATUSBAR</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_STATUSBAR</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#status">status</a></code></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/statusbar" title="statusbar">statusbar</a></code>/&gt;</li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table/index.html
new file mode 100644
index 0000000000..71e8f18a6b
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table/index.html
@@ -0,0 +1,27 @@
+---
+title: ROLE_TABLE
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>セルの行と列を含むテーブルを表します。また、任意で行ヘッダと列ヘッダが含まれます。次のロールも参照してください: <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLUMNHEADER">ROLE_COLUMNHEADER</a></code>, <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROWHEADER">ROLE_ROWHEADER</a></code>, <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLUMN">ROLE_COLUMN</a></code>, <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROW">ROLE_ROW</a></code>, <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_CELL">ROLE_CELL</a></code>。</p>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_TABLE</code></li>
+ <li>ATK: <code>ATK_ROLE_TABLE</code></li>
+ <li>UA: <code>NSAccessibilityGroupRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_TABLE</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#grid">grid</a></code></li>
+ <li>HTML: <a href="/ja/docs/Web/HTML/Element/table" title="HTML の &lt;table> 要素は表形式のデータ、つまり、行と列の組み合わせによるセルに含まれたデータによる二次元の表で表現される情報です。"><code>&lt;table&gt;</code></a></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/listbox" title="listbox">listbox</a></code>/&gt;</li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table_column_header/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table_column_header/index.html
new file mode 100644
index 0000000000..dbf9e12353
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table_column_header/index.html
@@ -0,0 +1,25 @@
+---
+title: ROLE_TABLE_COLUMN_HEADER
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE_COLUMN_HEADER
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE_COLUMN_HEADER
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>テーブルの列のヘッダー。このロールは<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_COLUMNHEADER">ROLE_COLUMNHEADER</a></code>のデュープであるに見えます。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_TABLE_COLUMN_HEADER</code></li>
+ <li>ATK: <code>ATK_ROLE_TABLE_COLUMN_HEADER</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_COLUMNHEADER</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table_row_header/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table_row_header/index.html
new file mode 100644
index 0000000000..1f6ea525d8
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_table_row_header/index.html
@@ -0,0 +1,25 @@
+---
+title: ROLE_TABLE_ROW_HEADER
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE_ROW_HEADER
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TABLE_ROW_HEADER
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>表の行のヘッダー。このロールは<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_ROWHEADER">ROLE_ROWHEADER</a></code>のデュープであるに見えます。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_TABLE_ROW_HEADER</code></li>
+ <li>ATK: <code>ATK_ROLE_TABLE_ROW_HEADER</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_ROWHEADER</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tear_off_menu_item/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tear_off_menu_item/index.html
new file mode 100644
index 0000000000..311f7da062
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tear_off_menu_item/index.html
@@ -0,0 +1,26 @@
+---
+title: ROLE_TEAR_OFF_MENU_ITEM
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TEAR_OFF_MENU_ITEM
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TEAR_OFF_MENU_ITEM
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>そのメニューをはがすと再接続するために使用されるメニュー項目。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_TEAROFF_MENU_ITEM</code></li>
+ <li>ATK: <code>ATK_ROLE_TEAR_OFF_MENU_ITEM</code></li>
+ <li>UA: <code>NSAccessibilityMenuItemRoleм</code></li>
+ <li>MSAA: <code>ROLE_SYSTEM_MENUITEM</code></li>
+ <li>IA2: <code>IA2_ROLE_TEAR_OFF_MENU</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_terminal/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_terminal/index.html
new file mode 100644
index 0000000000..a46f45ff18
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_terminal/index.html
@@ -0,0 +1,26 @@
+---
+title: ROLE_TERMINAL
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TERMINAL
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TERMINAL
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>アクセス可能な端末を表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: <code>ROLE_TERMINAL</code></li>
+ <li>ATK: <code>ATK_ROLE_TERMINAL</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA: <code>USE_ROLE_STRING</code></li>
+ <li>IA2: <code>IA2_ROLE_TERMINAL</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_text_leaf/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_text_leaf/index.html
new file mode 100644
index 0000000000..3bcb001036
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_text_leaf/index.html
@@ -0,0 +1,28 @@
+---
+title: ROLE_TEXT_LEAF
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TEXT_LEAF
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TEXT_LEAF
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>編集を可能にするか、読み取り専用に指定された選択可能なテキストを表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li>
+ <li>UA: <code>NSAccessibilityStaticTextRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_TEXT</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_titlebar/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_titlebar/index.html
new file mode 100644
index 0000000000..16ea650639
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_titlebar/index.html
@@ -0,0 +1,22 @@
+---
+title: ROLE_TITLEBAR
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TITLEBAR
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TITLEBAR
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>ウィンドウのタイトルまたはキャプションバーを表します。</p>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA: <code>ROLE_SYSTEM_TITLEBAR</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<p>このロールは、MSAA のみでサポートされており、Microsoft Windows で自動的にサポートされています。</p>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_toggle_button/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_toggle_button/index.html
new file mode 100644
index 0000000000..c68f16675c
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_toggle_button/index.html
@@ -0,0 +1,27 @@
+---
+title: ROLE TOGGLE BUTTON
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOGGLE_BUTTON
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOGGLE_BUTTON
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>トグルボタン。オンまたはオフにするが、現在の状態を示す別々のインジケータを提供しないことができる特殊なプッシュボタン。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_TOGGLE_BUTTON</li>
+ <li>ATK: ATK_ROLE_TOGGLE_BUTTON</li>
+ <li>UA: NSAccessibilityButtonRole</li>
+ <li>MSAA: ROLE_SYSTEM_PUSHBUTTON</li>
+ <li>IA2: IA2_ROLE_TOGGLE_BUTTON</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_toolbar/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_toolbar/index.html
new file mode 100644
index 0000000000..1595276171
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_toolbar/index.html
@@ -0,0 +1,32 @@
+---
+title: ROLE_TOOLBAR
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOOLBAR
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOOLBAR
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>ツールバーを表します。よく使用される機能への簡単なアクセスを提供するコントロール (プッシュボタンやトグルボタン) のグループです。</p>
+<h2 id="Children" name="Children">子要素</h2>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_TOOL_BAR</code></li>
+ <li>ATK: <code>ATK_ROLE_TOOL_BAR</code></li>
+ <li>UA: <code>NSAccessibilityToolbarRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_TOOLBAR</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#toolbar">toolbar</a></code></li>
+ <li>XUL:&lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/toolbar" title="toolbar">toolbar</a></code>/&gt;</li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tooltip/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tooltip/index.html
new file mode 100644
index 0000000000..47eb22a0e9
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tooltip/index.html
@@ -0,0 +1,37 @@
+---
+title: ROLE_TOOLTIP
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOOLTIP
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TOOLTIP
+---
+<p><a href="/ja/docs/Accessibility/AT-APIs/Gecko/Roles">« Gecko Roles ページ</a></p>
+<p>役立つヒントを提供するツールチップを表します。</p>
+<h2 id="Interfaces" name="Interfaces">インターフェイス</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessNode" title="">nsIAccessNode</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible" title="">nsIAccessible</a></code></li>
+</ul>
+<h2 id="Children" name="Children">子要素</h2>
+<p>子はありません。</p>
+<h2 id="Events" name="Events">イベント</h2>
+<ul>
+ <li><code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Events#EVENT_ASYNCH_SHOW">EVENT_ASYNCH_SHOW</a></code> - ツールチップが表示された時に発生。</li>
+</ul>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI:</li>
+ <li>ATK: <code>ATK_ROLE_TOOL_TIP</code></li>
+ <li>UA: @"AXHelpTag"</li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_TOOLTIP</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#tooltip">tooltip</a></code></li>
+ <li>XUL: &lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/tooltip" title="tooltip">tooltip</a></code>/&gt;</li>
+</ul>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tree_table/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tree_table/index.html
new file mode 100644
index 0000000000..e97b473952
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_tree_table/index.html
@@ -0,0 +1,29 @@
+---
+title: ROLE TREE TABLE
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TREE_TABLE
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_TREE_TABLE
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>データの複数の列を表示したり、列の展開や折りたたみのできるコントロールを表します。このロールは <code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_OUTLINE">ROLE_OUTLINE</a></code> とだまされやすいように見えます。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_TREE_TABLE</li>
+ <li>ATK: ATK_ROLE_TREE_TABLE</li>
+ <li>UA: NSAccessibilityTableRole</li>
+ <li>MSAA/IA2: ROLE_SYSTEM_OUTLINE</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>ARIA: <code><a class="external" href="https://w3c.github.io/aria/#treegrid">treegrid</a></code></li>
+ <li>XUL: <code><a href="/ja/docs/Mozilla/Tech/XUL/tree" title="tree">tree</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_viewport/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_viewport/index.html
new file mode 100644
index 0000000000..ca3ada95b7
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_viewport/index.html
@@ -0,0 +1,27 @@
+---
+title: ROLE VIEWPORT
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_VIEWPORT
+tags:
+ - AT_APIs
+ - Accessibility
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_VIEWPORT
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<h2 id="Description" name="Description">説明</h2>
+
+<p>ビューポート。オブジェクトは通常、スクロールペインで使用されます。これは、ユーザーが見ることができるデータ全体の一部を表します。ユーザーがスクロールバーを操作するのに合わせて、ビューポートの内容は変更することができます。また、<code><a href="/ja/docs/Web/Accessibility/AT-APIs/Gecko/Roles/ROLE_SCROLL_PANE">ROLE_SCROLL_PANE</a></code> も参照してください。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>AT-SPI: ROLE_VIEWPORT</li>
+ <li>ATK: ATK_ROLE_VIEWPORT</li>
+ <li>UA: NSAccessibilityUnknownRole</li>
+ <li>MSAA: ROLE_SYSTEM_PANE</li>
+ <li>IA2: IA2_ROLE_VIEW_PORT</li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<p>使用されていません。</p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_whitespace/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_whitespace/index.html
new file mode 100644
index 0000000000..f1319ad295
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_whitespace/index.html
@@ -0,0 +1,30 @@
+---
+title: ROLE_WHITESPACE
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_WHITESPACE
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_WHITESPACE
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+
+<p>他のオブジェクトとの間の空白を表します。</p>
+
+<h2 id="Mapped_to" name="Mapped_to">マッピング</h2>
+
+<ul>
+ <li>ATK: <code>ATK_ROLE_UNKNOWN</code></li>
+ <li>UA: <code>NSAccessibilityUnknownRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_WHITESPACE</code></li>
+</ul>
+
+<h2 id="Used_by" name="Used_by">使用</h2>
+
+<ul>
+ <li>HTML: <a href="/ja/docs/Web/HTML/Element/br" title="HTML の &lt;br> 要素 は、文中に改行(キャリッジリターン)を生成します。詩や住所など、行の分割が重要な場合に有用です。"><code>&lt;br&gt;</code></a></li>
+</ul>
+
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_window/index.html b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_window/index.html
new file mode 100644
index 0000000000..0a777812d0
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/gecko/roles/role_window/index.html
@@ -0,0 +1,23 @@
+---
+title: ROLE_WINDOW
+slug: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_WINDOW
+tags:
+ - AT_APIs
+ - Accessibility
+ - Reference
+translation_of: Mozilla/Tech/Accessibility/AT-APIs/Gecko/Roles/ROLE_WINDOW
+---
+<p><a href="/ja/docs/Accessibility:AT-APIs:Gecko:Roles">« Gecko Roles ページ</a></p>
+<p>ウィンドウ枠を表します。これは、タイトルバーやクライアント、ウィンドウに含まれる他のオブジェクトなどの子オブジェクトを含みます。</p>
+<h2 id="Mapped_to" name="Mapped_to">別名</h2>
+<ul>
+ <li>AT-SPI: <code>ROLE_WINDOW</code></li>
+ <li>ATK: <code>ATK_ROLE_WINDOW</code></li>
+ <li>UA: <code>NSAccessibilityWindowRole</code></li>
+ <li>MSAA/IA2: <code>ROLE_SYSTEM_WINDOW</code></li>
+</ul>
+<h2 id="Used_by" name="Used_by">使用する要素</h2>
+<p>ロールは、Microsoft Windows により自動的にサポートされています。</p>
+<p></p><section class="Quick_links" id="Quick_Links">
+
+</section><p></p>
diff --git a/files/ja/mozilla/tech/accessibility/at-apis/index.html b/files/ja/mozilla/tech/accessibility/at-apis/index.html
new file mode 100644
index 0000000000..8cd6f37533
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/at-apis/index.html
@@ -0,0 +1,5 @@
+---
+title: AT-APIs
+slug: Mozilla/Tech/Accessibility/AT-APIs
+---
+{{wiki.localize('System.API.page-generated-for-subpage')}}
diff --git a/files/ja/mozilla/tech/accessibility/index.html b/files/ja/mozilla/tech/accessibility/index.html
new file mode 100644
index 0000000000..db1f1ad9f7
--- /dev/null
+++ b/files/ja/mozilla/tech/accessibility/index.html
@@ -0,0 +1,28 @@
+---
+title: Accessibility API Implementation Details
+slug: Mozilla/Tech/Accessibility
+tags:
+ - AT APIs
+ - Accessibility
+ - Landing
+ - Mozilla
+ - Reference
+translation_of: Mozilla/Tech/Accessibility
+---
+<p>{{Draft}}</p>
+
+<p>これらのページには、 <strong>Assistive Technology API</strong> の Mozilla 固有の実装の詳細に関するドキュメントが含まれています。</p>
+
+<p>{{LandingPageListSubpages}}</p>
+
+<h2 id="Subnav">Subnav</h2>
+
+<section id="Quick_Links">
+<ol>
+ <li><a href="/ja/docs/Web/Accessibility"><strong>Accessibility</strong></a></li>
+ <li><a href="/ja/docs/Mozilla/Accessibility"><strong>Mozilla and Accessibility</strong></a></li>
+ <li class="toggle">
+ <details open><summary><a href="/ja/docs/Mozilla/Tech/Accessibility"><strong>Accessibility API Implementation Details</strong></a></summary> {{ListSubpagesForSidebar("/ja/docs/Mozilla/Tech/Accessibility", 1)}}</details>
+ </li>
+</ol>
+</section>
diff --git a/files/ja/mozilla/tech/index.html b/files/ja/mozilla/tech/index.html
new file mode 100644
index 0000000000..1a0fa3a176
--- /dev/null
+++ b/files/ja/mozilla/tech/index.html
@@ -0,0 +1,15 @@
+---
+title: Mozilla technologies
+slug: Mozilla/Tech
+tags:
+ - Landing
+ - Mozilla
+ - NeedsTranslation
+ - Reference
+ - TopicStub
+ - XUL
+translation_of: Mozilla/Tech
+---
+<p>Mozilla には、プロジェクトのコンポーネントとして使用されるいくつかのテクノロジーがあります。これらはここに文章化されています。</p>
+
+<p>{{LandingPageListSubpages}}</p>
diff --git a/files/ja/mozilla/tech/xpcom/accessing_the_windows_registry_using_xpcom/index.html b/files/ja/mozilla/tech/xpcom/accessing_the_windows_registry_using_xpcom/index.html
new file mode 100644
index 0000000000..28acf4cc24
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/accessing_the_windows_registry_using_xpcom/index.html
@@ -0,0 +1,281 @@
+---
+title: Accessing the Windows Registry Using XPCOM
+slug: Mozilla/Tech/XPCOM/Accessing_the_Windows_Registry_Using_XPCOM
+tags:
+ - Add-ons
+ - Extensions
+translation_of: Mozilla/Tech/XPCOM/Accessing_the_Windows_Registry_Using_XPCOm
+---
+<p>
+</p><p><br>
+</p><p>{{ 英語版章題("Introduction") }}
+</p>
+<h3 id=".E5.B0.8E.E5.85.A5" name=".E5.B0.8E.E5.85.A5"> 導入 </h3>
+<p>Windows 専用の機能として実装する場合、環境や他のインストールされているプログラムに関する情報を目的に Windows のレジストリへアクセスするのはよく有用であります。このために、<a href="ja/XPCOM">XPCOM</a> インターフェースを利用して、レジストリのデータを読み書きします。この文書では、いくつかの Mozilla 製品で利用可能なインターフェースの利用方法について説明します。
+</p><p>この文書のサンプルは、<a href="ja/XPCOM">XPCOM</a> を利用して <a href="ja/JavaScript">JavaScript</a> で全て記述されています。
+</p><p>{{ 英語版章題("Support in Firefox 1.5 or newer") }}
+</p>
+<h3 id="Firefox_1.5_.E3.82.82.E3.81.97.E3.81.8F.E3.81.AF.E3.81.9D.E3.82.8C.E4.BB.A5.E9.99.8D.E3.81.A7.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88" name="Firefox_1.5_.E3.82.82.E3.81.97.E3.81.8F.E3.81.AF.E3.81.9D.E3.82.8C.E4.BB.A5.E9.99.8D.E3.81.A7.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88"> Firefox 1.5 もしくはそれ以降でサポート </h3>
+<p><a href="ja/Firefox_1.5">Firefox 1.5</a> でレジストリへより広範囲にアクセス可能となる新しい API <a href="ja/NsIWindowRegKey">nsIWindowRegKey</a> が追加されました。このインターフェースにより、Windows API がより近いものになりますが、さまざまな低レベルの詳細な部分についてあなたが対処する必要がでてきます。もし、Firefox 1.5 かそれ以降でのみ利用する拡張を作成する場合は、この章だけを読むことで十分でしょう。
+</p><p>{{ 英語版章題("A simple example") }}
+</p>
+<h4 id=".E7.B0.A1.E5.8D.98.E3.81.AA.E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB" name=".E7.B0.A1.E5.8D.98.E3.81.AA.E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB"> 簡単なサンプル </h4>
+<p>Here's a simple example showing how to read your Windows ProductId:
+</p>
+<pre>var wrk = Components.classes["@mozilla.org/windows-registry-key;1"]
+ .createInstance(Components.interfaces.nsIWindowsRegKey);
+wrk.open(wrk.ROOT_KEY_LOCAL_MACHINE,
+ "SOFTWARE\\Microsoft\\Windows\\CurrentVersion",
+ wrk.ACCESS_READ);
+var id = wrk.readStringValue("ProductId");
+wrk.close();
+</pre>
+<p>This example, while simple, shows several important things about using the interface. First, you must use <code>createInstance()</code> to get an object implementing this interface, not <code>getService()</code>. Second, you must call <code>open()</code> on the key before attempting to read a value.
+</p><p>Notice in the <code>open()</code> call that the root key to use is specified using the named constants available on the <a href="ja/NsIWindowsRegKey">nsIWindowsRegKey</a> interface, in this case <code>ROOT_KEY_LOCAL_MACHINE</code>, which corresponds to <code>HKEY_LOCAL_MACHINE</code> in the Windows registry. Also notice that the path to the key has backslashes escaped, a necessity in JavaScript and C++ string constants.
+</p><p>The desired access rights are specified using a named constant from the interface, in this example <code>ACCESS_READ</code>. This can be very important when dealing with non-Administrator accounts with restricted privileges. </p><p>The value is read using <code>readStringValue()</code>. You have to specify what type of data you expect to read, which we will expand on later. Finally, note that you should close the key when you are done to avoid wasting system resources.
+</p><p>{{ 英語版章題("Opening Registry Keys") }}
+</p>
+<h4 id="Opening_Registry_Keys" name="Opening_Registry_Keys"> Opening Registry Keys </h4>
+<p>Before doing anything with a registry key you must first open the key you are interested in. The example above demonstates this using the <code>open()</code> method. If you want to create a new key, you can use the <code>create()</code> method, which takes the same parameters as <code>open()</code>. Note that it is not an error to call <code>create()</code> on an existing key, and doing so has the same result as calling <code>open()</code>.
+</p><p>Both of these methods take a root key as the first parameter. From JavaScript, you will want to use the named constants on the interface for this parameter. They are:
+</p>
+<ul><li> <code>ROOT_KEY_CLASSES_ROOT</code> — Corresponds to <code>HKEY_CLASSES_ROOT</code>
+</li><li> <code>ROOT_KEY_CURRENT_USER</code> — Corresponds to <code>HKEY_CURRENT_USER</code>
+</li><li><code> ROOT_KEY_LOCAL_MACHINE</code> — Corresponds to <code>HKEY_LOCAL_MACHINE</code>
+</li></ul>
+<p>The second parameter for <code>open()</code> and <code>create()</code> is the path to the key. As noted in the example above, you will need to escape backslashes within the string.
+</p><p>The third parameter for <code>open()</code> and <code>create()</code> is the access mode. It is specified as a bitwise combination of flags defined on the interface. You can read the interface documentation for a full explanation, but we will show only the three most commonly used modes here:
+</p>
+<ul><li> <code>ACCESS_READ</code> — For reading values, enumerating keys, and receiving notifications
+</li><li> <code>ACCESS_WRITE</code> — For setting values and creating sub keys
+</li><li> <code>ACCESS_ALL</code> — Access for all operations
+</li></ul>
+<p>In addition to <code>open()</code> and <code>create()</code>, there are the <code>openChild()</code> and <code>createChild()</code> methods. You can call these methods on an already-opened registry key to open a child key. Both methods take a relative path and access mode as parameters and return a new object implementing <a href="ja/NsIWindowsRegKey">nsIWindowsRegKey</a>. Here's the simple example again, but using <code>openChild()</code>:
+</p>
+<pre>var wrk = Components.classes["@mozilla.org/windows-registry-key;1"]
+ .createInstance(Components.interfaces.nsIWindowsRegKey);
+wrk.open(wrk.ROOT_KEY_LOCAL_MACHINE,
+ "SOFTWARE\\Microsoft",
+ wrk.ACCESS_READ);
+var subkey = wrk.openChild("Windows\\CurrentVersion", wrk.ACCESS_READ);
+var id = subkey.readStringValue("ProductId");
+subkey.close();
+wrk.close();
+</pre>
+<p>Once you've opened a registry key, you can begin to make use of it.
+</p><p>{{ 英語版章題("Reading Registry Values") }}
+</p>
+<h4 id="Reading_Registry_Values" name="Reading_Registry_Values"> Reading Registry Values </h4>
+<p>Probably the most common action associated with the Windows registry is reading values. The simple example above shows how to read an existing string value. However, Windows registry values can have several data types, so you need to ensure that you read the correct type. You can check the type of a value using the method <code>getValueType()</code>. This method returns an integer indicating the data type of the value. The data types supported by this interface are defined as named constants on the interface as follows:
+</p>
+<ul><li> <code>TYPE_NONE</code> — Probably not useful
+</li><li> <code>TYPE_STRING</code> — A Unicode string value
+</li><li> <code>TYPE_BINARY</code> — Binary data
+</li><li> <code>TYPE_INT</code> — A 32 bit integer
+</li><li> <code>TYPE_INT64</code> — A 64 bit integer
+</li></ul>
+<p>Each of these types (except <code>TYPE_NONE</code>) has a corresponding method to read the value data:
+</p>
+<ul><li> <code>readStringValue()</code>
+</li><li> <code>readBinaryValue()</code>
+</li><li> <code>readIntValue()</code>
+</li><li> <code>readInt64Value()</code>
+</li></ul>
+<p>Since JavaScript is a dynamically-typed language, you may wish to use the following code to handle all types of data. In this function, <code>wrk</code> is expected to be an already opened <a href="ja/NsIWindowsRegKey">nsIWindowsRegKey</a>.
+</p>
+<pre>function readRegistryValue(wrk, value)
+{
+ switch (wrk.getValueType(value)) {
+ case wrk.TYPE_STRING:
+ return wrk.readStringValue(value);
+ case wrk.TYPE_BINARY:
+ return wrk.readBinaryValue(value);
+ case wrk.TYPE_INT:
+ return wrk.readIntValue(value);
+ case wrk.TYPE_INT64:
+ return wrk.readInt64Value(value);
+ }
+ // unknown type
+ return null;
+}
+</pre>
+<p>{{ 英語版章題("Writing Registry Values") }}
+</p>
+<h4 id="Writing_Registry_Values" name="Writing_Registry_Values"> Writing Registry Values </h4>
+<p>Writing registry values is quite similar to reading. For each supported data type, there is a <code>write*Value()</code> method complementary to the <code>read*Value()</code> method. Don't forget that if you are writing a new value, you may need to <code>create()</code> the parent key first. This example demonstrates writing a new string value:
+</p>
+<pre>var wrk = Components.classes["@mozilla.org/windows-registry-key;1"]
+ .createInstance(Components.interfaces.nsIWindowsRegKey);
+wrk.create(wrk.ROOT_KEY_CURRENT_USER,
+ "SOFTWARE\\MDC\\Test",
+ wrk.ACCESS_WRITE);
+wrk.writeStringValue("TestValue", "Hello World!");
+wrk.close();
+</pre>
+<p>{{ 英語版章題("Checking the Existence of Keys and Values") }}
+</p>
+<h4 id="Checking_the_Existence_of_Keys_and_Values" name="Checking_the_Existence_of_Keys_and_Values"> Checking the Existence of Keys and Values </h4>
+<p>Before you attempt to read a value or open a child key, you should check to see whether it exists first. The <a href="ja/NsIWindowsRegKey">nsIWindowsRegKey</a> interface provides methods for both of these—<code>hasValue()</code> and <code>hasChild()</code>—as demonstrated in this example:
+</p>
+<pre>var wrk = Components.classes["@mozilla.org/windows-registry-key;1"]
+ .createInstance(Components.interfaces.nsIWindowsRegKey);
+wrk.open(wrk.ROOT_KEY_LOCAL_MACHINE,
+ "SOFTWARE\\Microsoft",
+ wrk.ACCESS_READ);
+if (wrk.hasChild("Windows")) {
+ var subkey = wrk.openChild("Windows\\CurrentVersion", wrk.ACCESS_READ);
+ var id;
+ if (subkey.hasValue("ProductId"))
+ id = subkey.readStringValue("ProductId");
+ subkey.close();
+}
+wrk.close();
+</pre>
+<p>{{ 英語版章題("Enumerating Registry Keys and Values") }}
+</p>
+<h4 id="Enumerating_Registry_Keys_and_Values" name="Enumerating_Registry_Keys_and_Values"> Enumerating Registry Keys and Values </h4>
+<p>In some situations, you may want to enumerate a number of keys or values whose names you do not know. The <a href="ja/NsIWindowsRegKey">nsIWindowsRegKey</a> interface provides the <code>childCount</code>, <code>getChildName()</code>, <code>valueCount</code>, and <code>getValueName()</code> properties and methods for enumerating keys and values respectively. You can use these methods to read a list of values or recursively access a branch of the registry. This example reads all the startup programs in one key of the registry.
+</p>
+<pre>var wrk = Components.classes["@mozilla.org/windows-registry-key;1"]
+ .createInstance(Components.interfaces.nsIWindowsRegKey);
+wrk.open(wrk.ROOT_KEY_LOCAL_MACHINE,
+ "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
+ wrk.ACCESS_READ);
+for (var i=0; i&lt;wrk.valueCount; i++) {
+ var name = wrk.getValueName(i);
+ var value = readRegistryValue(wrk, name);
+ // do something interesting here...
+}
+wrk.close();
+</pre>
+<p>For simplicity, this example assumes the existence of the <code>readRegistryValue()</code> function defined above.
+</p><p>{{ 英語版章題("Removing Registry Keys and Values") }}
+</p>
+<h4 id="Removing_Registry_Keys_and_Values" name="Removing_Registry_Keys_and_Values"> Removing Registry Keys and Values </h4>
+<p>To remove child keys and values from the registry, you can use the <code>removeChild()</code> and <code>removeValue()</code> methods. <code>removeChild()</code> removes a child key and all of its values, but will fail if the key has any child keys of its own. In that case you must manually enumerate the children and remove them individually. This example shows how to recursively delete a registry key and all of its children. Use with caution!
+</p>
+<pre>function removeChildrenRecursive(wrk)
+{
+ // we count backwards because we're removing them as we go
+ for (var i = wrk.childCount - 1; i &gt;= 0; i--) {
+ var name = wrk.getChildName(i);
+ var subkey = wrk.openChild(name, wrk.ACCESS_ALL);
+ removeChildrenRecursive(subkey);
+ subkey.close();
+ wrk.removeChild(name);
+ }
+}
+
+var wrk = Components.classes["@mozilla.org/windows-registry-key;1"]
+ .createInstance(Components.interfaces.nsIWindowsRegKey);
+wrk.open(wrk.ROOT_KEY_CURRENT_USER,
+ "SOFTWARE\\MDC\\Test",
+ wrk.ACCESS_ALL);
+removeChildrenRecursive(wrk);
+wrk.close();
+</pre>
+<p>{{ 英語版章題("Monitoring Registry Keys") }}
+</p>
+<h4 id="Monitoring_Registry_Keys" name="Monitoring_Registry_Keys"> Monitoring Registry Keys </h4>
+<p>If you would like to know whether a registry key has changed since you last checked it, you can use the <code>startWatching()</code>, <code>stopWatching()</code>, and <code>hasChanged()</code> methods. You must call <code>startWatching()</code> for the key to be monitored. The method takes one parameter, a boolean indicating whether child keys should be watched. After that, you can call <code>hasChanged()</code> to determine whether or not you need to reread the value. Calling <code>hasChanged()</code> automatically resets the watch, so you can be sure that if it returns <code>true</code> there are changes. This example demonstrates a trivial registry value cache for one key:
+</p>
+<pre>var cache = {};
+
+function readRegistryValueNoCache(wrk, value)
+{
+ switch (wrk.getValueType(value)) {
+ case wrk.TYPE_STRING:
+ return wrk.readStringValue(value);
+ case wrk.TYPE_BINARY:
+ return wrk.readBinaryValue(value);
+ case wrk.TYPE_INT:
+ return wrk.readIntValue(value);
+ case wrk.TYPE_INT64:
+ return wrk.readInt64Value(value);
+ }
+ // unknown type
+ return null;
+}
+
+function readRegistryValue(wrk, value)
+{
+ if (wrk.hasChanged()) {
+ // wipe out the cache
+ cache = {};
+ }
+
+ if (value in cache) {
+ return cache[value];
+ }
+
+ cache[value] = readRegistryValueNoCache(wrk, value);
+ return cache[value];
+}
+
+var wrk = Components.classes["@mozilla.org/windows-registry-key;1"]
+ .createInstance(Components.interfaces.nsIWindowsRegKey);
+wrk.open(wrk.ROOT_KEY_LOCAL_MACHINE,
+ "SOFTWARE\\Microsoft\\Windows\\CurrentVersion",
+ wrk.ACCESS_READ);
+wrk.startWatching(false); // only watch the values on this key, not child keys
+var id = readRegistryValue(wrk, "ProductId");
+/* later you can read this again,
+ and it should come from the cache unless
+ there have been changes to the registry.
+ Remember to call wrk.close() when you
+ are finished!
+*/
+</pre>
+<p>{{ 英語版章題("Support in Firefox 1.0") }}
+</p>
+<h3 id="Support_in_Firefox_1.0" name="Support_in_Firefox_1.0"> Support in Firefox 1.0 </h3>
+<p>Firefox 1.0 includes a much simpler interface to the Windows registry, without most of the functionality supported in newer versions. The functionality is exposed in the <a href="ja/NsIWindowsShellService">nsIWindowsShellService</a> interface. It consists of only one method, <code>getRegistryEntry()</code>, and a set of named constants to specify the root key. You can use it as shown in the following example:
+</p>
+<pre>var wss = Components.classes["@mozilla.org/browser/shell-service;1"]
+ .getService(Components.interfaces.nsIWindowsShellService);
+var id = wss.getRegistryEntry(wss.HKLM,
+ "SOFTWARE\\Microsoft\\Windows\\CurrentVersion",
+ "ProductId");
+</pre>
+<div class="note"><b>Note:</b> There's no way to set a registry value using this interface.</div>
+<p>{{ 英語版章題("Support in SeaMonkey and Other Non-toolkit Applications") }}
+</p>
+<h3 id="Support_in_SeaMonkey_and_Other_Non-toolkit_Applications" name="Support_in_SeaMonkey_and_Other_Non-toolkit_Applications"> Support in SeaMonkey and Other Non-toolkit Applications </h3>
+<p>In older versions of SeaMonkey and other non-toolkit-based applications, an interface existed called nsIWindowsRegistry, containing the same method and named constants as the methods described above for Firefox 1.0. It can be used as follows:
+</p>
+<pre>var wss = Components.classes["@mozilla.org/winhooks;1"]
+ .getService(Components.interfaces.nsIWindowsRegistry);
+var id = wss.getRegistryEntry(wss.HKLM,
+ "SOFTWARE\\Microsoft\\Windows\\CurrentVersion",
+ "ProductId");
+</pre>
+<p>{{ 英語版章題("Backwards Compatibility") }}
+</p>
+<h3 id="Backwards_Compatibility" name="Backwards_Compatibility"> Backwards Compatibility </h3>
+<p>If you need to support Firefox 1.0 and other older browser versions, you should check to see which interfaces are available. The following skeleton code will allow you to determine which interface to use:
+</p>
+<pre>if ("@mozilla.org/windows-registry-key;1" in Components.classes) {
+ // Firefox 1.5 or newer
+}
+else if ("@mozilla.org/winhooks;1" in Components.classes) {
+ // SeaMonkey or other older non-toolkit application
+}
+else if ("@mozilla.org/browser/shell-service;1" in Components.classes) {
+ var wss = Components.classes["@mozilla.org/browser/shell-service;1"]
+ .getService(Components.interfaces.nsIWindowsShellService);
+ if ("getRegistryEntry" in wss) {
+ // Firefox 1.0
+ }
+ else {
+ // nothing supported
+ }
+}
+else {
+ // nothing supported
+}
+</pre>
+<p><br>
+</p>
+<div class="noinclude">
+</div>
+{{ languages( { "en": "en/Accessing_the_Windows_Registry_Using_XPCOM", "fr": "fr/Extraits_de_code/Acc\u00e8s_au_registre_Windows_en_utilisant_les_XPCOM" } ) }}
diff --git a/files/ja/mozilla/tech/xpcom/fun_with_xbl_and_xpconnect/index.html b/files/ja/mozilla/tech/xpcom/fun_with_xbl_and_xpconnect/index.html
new file mode 100644
index 0000000000..74334c0d77
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/fun_with_xbl_and_xpconnect/index.html
@@ -0,0 +1,88 @@
+---
+title: Fun With XBL and XPConnect
+slug: Mozilla/Tech/XPCOM/Fun_With_XBL_and_XPConnect
+tags:
+ - XBL
+ - XPCOM
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+ - 移行
+translation_of: Mozilla/Tech/XPCOM/Fun_with_XBL_and_XPConnect
+---
+<h3 id=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB" name=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB">はじめに</h3>
+
+<p>この文章では、XBL の応用である、XULウィジェットへのアクセスを可能にする簡単な XPCOMインターフェースについて述べます。 XBLのこのインターフェースを定義するという特徴は、自動補完を行う C++ オブジェクトへの XPConnectを介したインターフェースを定義するのに使用されます。 一度通常の XULテキストフィールドをこのインターフェースに結び付ければ、通常の JavaScript を用いて、オブジェクトの自動補完機能を呼び出すようになります。 この相互作用の基本的なモデルは次のとおりです:</p>
+
+<p> </p>
+
+<blockquote><img alt="画像:Xpconnect_xp.gif"></blockquote>
+
+<h3 id="XPCOM.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.B8.E7.B5.90.E3.81.B3.E4.BB.98.E3.81.91.E3.82.8B" name="XPCOM.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.B8.E7.B5.90.E3.81.B3.E4.BB.98.E3.81.91.E3.82.8B">XPCOMオブジェクトへ結び付ける</h3>
+
+<p>ウィジェットは、自動補完の検索を行う自動補完エンジンである XPCOMオブジェクトを保持します。</p>
+
+<pre class="eval"> &lt;binding name="autocomplete" extends="xul:box"&gt;
+ &lt;content&gt;
+ &lt;xul:textfield class="addressingWidget"/&gt;
+ &lt;xul:menupopup/&gt;
+ &lt;/content&gt;
+
+ &lt;interface&gt;
+ &lt;property name="autoCompleteSession"&gt;
+  ![CDATA[
+ Components.classes['<a class="external" rel="freelink">component://netscape/messenger/autoc...&amp;type=addrbook</a>'].
+ getService(Components.interfaces.nsIAutoCompleteSession);
+ ]]
+ &lt;/property&gt;
+</pre>
+
+<p>ですので、autoCompleteSession というウィジェットに propetry を定義しました。 この property の初期値は評価されて xp-connectオブジェクトへ入ります。 これで、.autoCompleteSession を呼ぶと xp-connectオブジェクトを返します。</p>
+
+<h3 id="XPCOM.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.82.92.E5.85.AC.E9.96.8B.E3.81.99.E3.82.8B" name="XPCOM.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.82.92.E5.85.AC.E9.96.8B.E3.81.99.E3.82.8B">XPCOMインターフェースを公開する</h3>
+
+<p>ウィジェットでサポートしたい XPCOM オブジェクトのインターフェースを手動で公開するには、あまりきれいでないトリックをひとつ行う必要があります。 幸運なことに、このデモンストレーションでは我々はインターフェースにメソッドをひとつだけ持っています =). わたしのやることは具体的には、メソッド呼び出しを XPCOMオブジェクトへ中継する XBLウィジェットにメソッドの属性を定義することで全てです。</p>
+
+<pre class="eval"> &lt;method name="autoComplete"&gt;
+ &lt;argument name="aSearchString"/&gt;
+ &lt;argument name="resultListener"/&gt;
+ &lt;body&gt;
+  ![CDATA[
+ return this.autoCompleteSession.autoComplete(null,
+ anonymousContent[0], aSearchString, this.autoCompleteListener);
+ ]]
+ &lt;/body&gt;
+ &lt;/method&gt;
+</pre>
+
+<p>メソッドの本体がそのまま自動補完のセッションを得て、その上で自動補完メソッドを呼び出しているのが分かるでしょう。</p>
+
+<h3 id=".E3.82.A6.E3.82.A3.E3.82.B8.E3.82.A7.E3.83.83.E3.83.88.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.82.92.E5.AE.9F.E8.A3.85.E3.81.99.E3.82.8B" name=".E3.82.A6.E3.82.A3.E3.82.B8.E3.82.A7.E3.83.83.E3.83.88.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.82.92.E5.AE.9F.E8.A3.85.E3.81.99.E3.82.8B">ウィジェットのインターフェースを実装する</h3>
+
+<p>次にやるべきことは、自動補完のセッションを渡せるようにウィジェットのインターフェースを実装することです。 自動補完セッションがウィジェットに検索結果付きでコールバックしてほしいところです。 XPCOMオブジェクトのときに行ったのと同じようなトリックを行うことができます。</p>
+
+<pre class="eval">&lt;property name="autoCompleteListener"&gt;
+ ![CDATA[
+ ({
+ onAutoCompleteResult: function(aItem, aOriginalString, aMatch)
+ {
+ if ( aItem )
+ {
+ anonymousContent[0].value = aMatch;
+ }
+ }
+ })
+ ]]
+</pre>
+
+<p>autoCompleteListener の値を処理する JS がオブジェクトを生成する(そして式をわたしが行ったようなペアの集合につつむ)限りは、その autoCompleteListener の値はわたしのインターフェースを実装したオブジェクトになります。 ここで、.autoCompleteListener の結果を auto complete listener を必要とするメソッド(たとえばわたしの自動補完セッションオブジェクトのような)へ渡すことができます。</p>
+
+<h3 id=".E3.82.A4.E3.83.99.E3.83.B3.E3.83.88.E3.83.8F.E3.83.B3.E3.83.89.E3.83.A9.E3.82.92.E4.BD.9C.E3.82.8B" name=".E3.82.A4.E3.83.99.E3.83.B3.E3.83.88.E3.83.8F.E3.83.B3.E3.83.89.E3.83.A9.E3.82.92.E4.BD.9C.E3.82.8B">イベントハンドラを作る</h3>
+
+<p>最後の部分は簡単なところです。 自動補完検索を開始するハンドラが欲しいところです。 このハンドラは、そのまま XPCOMオブジェクトに渡される、我々の公開したウィジェット上の自動補完メソッドを呼んで、nsIAutoCompleteListener の実装に渡します。</p>
+
+<pre class="eval"> &lt;handlers&gt;
+ &lt;handler type="keypress" keycode="vk_return"
+ value="autoComplete(anonymousContent[0].value,
+ this.autoCompleteListener);"/&gt;
+ &lt;/handlers&gt;
+</pre>
diff --git a/files/ja/mozilla/tech/xpcom/generating_guids/index.html b/files/ja/mozilla/tech/xpcom/generating_guids/index.html
new file mode 100644
index 0000000000..d992f0e151
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/generating_guids/index.html
@@ -0,0 +1,79 @@
+---
+title: Generating GUIDs
+slug: Mozilla/Tech/XPCOM/Generating_GUIDs
+tags:
+ - Add-ons
+ - Developing Mozilla
+ - 'Developing_Mozilla:Tools'
+ - Extensions
+ - Tools
+ - XPCOM
+ - 要更新
+translation_of: Mozilla/Tech/XPCOM/Generating_GUIDs
+---
+<p><b>GUID</b> は、Mozilla プログラミングで、XPCOM <a href="/ja/docs/Interfaces">インタフェース</a> (このタイプの GUID は IID と呼ばれています) やコンポーネント (CID) 、<a href="/ja/docs/Extension">拡張機能</a>や<a href="/ja/docs/Themes">テーマ</a>を含むアドオンなどの実体のそれぞれの型を識別するために使われます。とはいえ、<a href="/ja/docs/Firefox_1.5">Firefox 1.5</a> からは、アドオンでは <code><a class="link-mailto" href="mailto:extensionname@organization.tld" rel="freelink">extensionname@organization.tld</a></code> 形式の ID で<a href="/ja/docs/Install_Manifests#id">識別することができます(また、そうするべきです)</a>。</p>
+
+<div class="blockIndicator warning">
+ <p><strong>警告:</strong> If you just want an ID for your add-on, generating a GUID is almost definitely not what you want to do. Using the <code><var>extensionname</var>@<var>organization</var>.<var>tld</var></code> form is approximately one thousand times easier for everyone involved. Don't have a domain name? Do you have a blog on a subdomain? Use that. If all else fails, using <code><var>extensionname</var>@<var>yourusername</var>.addons.mozilla.org</code> should be fine; no one will care. Remember, these are identifiers, not e-mail addresses, and they're never resolved.</p>
+</div>
+
+<h2 id="Canonical_form" name="Canonical_form">標準形式</h2>
+<p>GUID の共通のフォームは <code>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx</code> です。各 <code>x</code> には 16 進数が入ります。ここには、標準形式の GUID の生成に利用できるツールが数多くあります。</p>
+
+<div class="note">
+ <p><strong>Note:</strong> If you do choose to use an email-style ID for your add-on, you probably don't want it to be a real email address, since it might attract spam.</p>
+</div>
+
+<h3 id="Online_tools" name="Online_tools">オンラインツール</h3>
+<ul>
+ <li><a href="http://www.somacon.com/p113.php">Generate GUID Online</a></li>
+ <li><a href="http://www.famkruithof.net/uuid/uuidgen">UUID (GUID) Generator on the WEB</a></li>
+ <li><a href="http://mozilla.pettay.fi/cgi-bin/mozuuid.pl">UUID Generator for Mozilla Code</a> (both IDL and C++.h forms)</li>
+ <li><a class="link-irc" href="irc://irc.mozilla.org/firefox">#firefox</a> IRC チャンネル上の (botbot や firebot のような) ボットのひとつで、それらに "uuid" とメッセージを送る (<code>/msg</code>) ことで GUID を取得できます。</li>
+
+</ul>
+<h3 id="Windows" name="Windows">Windows</h3>
+<p>Windows ユーザは GUID を得るために Microsoft の<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=94551F58-484F-4A8C-BB39-ADB270833AFC&amp;displaylang=en">GuidGen</a> ツールを使用することができます。 (このツールは MS Visual C++ の一部でもあります)</p>
+<h3 id="Linux" name="Linux">Linux</h3>
+<p><code>/usr/bin/uuidgen</code> を使用します。これは、<code>libuuid1</code> パッケージ (Debian) にあります。</p>
+<h3 id="Perl" name="Perl">Perl</h3>
+<p><a href="http://www.johnkeiser.com/mozilla/mozilla_tools.html">jkeiser's Mozilla tools</a> に C++ および IDL の両方のスタイルの出力ができる UUID generator が含まれています。</p>
+<h2 id="COM.2FXPCOM_format" name="COM.2FXPCOM_format">COM/XPCOM 形式</h2>
+<p>Mozilla C++ コード内で IID および CID を 定義する(<code>#define</code>) 場合は、一般的に次の書式を使用します。</p>
+<pre class="brush:cpp">// xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
+#define NS_...ID \
+{ 0xXXXXXXXX, 0xXXXX, 0xXXXX, \
+ { 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX } }
+</pre>
+<p>以下のツールを使用すると、この形式でコードを生成することができます。</p>
+<h3 id="Online_tools" name="Online_tools">オンラインツール</h3>
+<ul>
+ <li><a href="http://mozilla.pettay.fi/cgi-bin/mozuuid.pl" rel="freelink">http://mozilla.pettay.fi/cgi-bin/mozuuid.pl</a></li>
+</ul>
+<h3 id="guidgen" name="guidgen">guidgen</h3>
+<p><code>guidgen.exe</code> は UUID をこの形式で生成できます。これは Microsoft Visual Studio の一部です。</p>
+<h3 id="bash" name="bash">bash</h3>
+<p>以下をあなたの <code>.bashrc</code> ファイルに追加します:</p>
+<pre class="brush:cpp">uuidgen-c++()
+{
+ local UUID=$(uuidgen)
+ echo "// $UUID"
+ echo "#define NS__IID \\"
+ echo "{ 0x${UUID:0:8}, 0x${UUID:9:4}, 0x${UUID:14:4}, \\"
+ echo -n " { 0x${UUID:19:2}, 0x${UUID:21:2}, 0x${UUID:24:2}, "
+ echo -n "0x${UUID:26:2}, 0x${UUID:28:2}, 0x${UUID:30:2}, "
+ echo "0x${UUID:32:2}, 0x${UUID:34:2} } }"
+}
+</pre>
+<h3 id="Perl_2" name="Perl_2">Perl</h3>
+<pre class="brush:text">#!/usr/bin/perl
+$uuid = `uuidgen`;
+chomp $uuid;
+print $uuid, "\n";
+@parts = ($uuid =~ /^(.{8})-(.{4})-(.{4})-(..)(..)-(..)(..)(..)(..)(..)(..)$/);
+print "{ 0x$parts[0], 0x$parts[1], 0x$parts[2], \\", "\n", " { ";
+for (3 .. 9) {
+ print "0x$parts[$_], ";
+}
+print "0x$parts[10] } }", "\n";
+</pre>
diff --git a/files/ja/mozilla/tech/xpcom/generic_factory/index.html b/files/ja/mozilla/tech/xpcom/generic_factory/index.html
new file mode 100644
index 0000000000..297a49c5f5
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/generic_factory/index.html
@@ -0,0 +1,136 @@
+---
+title: Generic factory
+slug: Mozilla/Tech/XPCOM/Generic_factory
+tags:
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/Generic_factory
+---
+<p><a href="ja/XPCOM">XPCOM</a> では、<b>汎用ファクトリ</b> は <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsIGenericFactory.h" rel="custom">xpcom/glue/nsIGenericFactory.h</a></code> にある機能を利用して生成されたファクトリのことを指します。
+</p><p><span>元の訳では「総称ファクトリー」となっていたが、「汎用」の方が適当ではないか</span>
+</p>
+<h4 id="概要"> 概要 </h4>
+<p>ほとんどの XPCOM ファクトリは、とても単純なもので済みます。Rick Potts は、テンプレートベースの汎用ファクトリ (nsFactory&lt;T&gt;) を書いていますが、これによりファクトリの生成過程が単純化され、CreateInstance() メソッドを書くだけで済むようになります。新しい nsIGenericFactory インタフェースによる、もっと進んだ手段を使うことができます。これは、一つのインタフェースを、nsIFactory の簡易な実装が必要な時にいつでも再使用できるようにしたものです。そのインタフェースとその使用の記述をここに挙げます。
+</p>
+<pre class="eval">/**
+ * 汎用的な nsIFactory の実装を提供します。この実装は、とても
+ * 簡易なファクトリを必要とする DLL で使うことができます。
+ */
+class nsIGenericFactory : public nsIFactory {
+public:
+ static const nsIID&amp; IID() { static nsIID iid = NS_IGENERICFACTORY_IID; return iid; }
+
+ typedef NS_CALLBACK(ConstructorProcPtr) (nsISupports *aOuter, REFNSIID aIID, void **aResult);
+
+ /**
+ * 汎用ファクトリのコンストラクタ関数を設定します。
+ * これは CreateInstance によって呼び出されます。
+ */
+ NS_IMETHOD SetConstructor(ConstructorProcPtr constructor) = 0;
+};
+</pre>
+<p>nsIGenericFactory は、簡単に使えます。NS_GENERICFATORY_CIDのCID と NS_IGENERICFACTORY_IID の IID を使って、リポジトリから新しいインスタンスを作成します。ConstructionProcPtr プロトタイプに適合するコンストラクタ関数を定義してください。そして、その関数に対するポインタとともに nsIGenericFactory::SetConstructor を呼び出してください。それでおしまいです。これで、あなたは完全な機能を持つファクトリオブジェクトを使うことができます。
+</p>
+<h4 id="実例"> 実例 </h4>
+<pre class="eval">class nsIComponent : public nsISupports {
+public:
+ NS_IMETHOD DoSomething() = 0;
+};
+
+class MyComponent : public nsIComponent {
+public:
+ MyComponent();
+ virtual ~MyComponent();
+
+ static NS_METHOD Create(nsISupports *aOuter, REFNSIID aIID, void **aResult);
+
+ NS_IMPL_ISUPPORTS
+
+ NS_IMETHOD DoSomething();
+};
+</pre>
+<p>このクラスのためのファクトリを作るには、単に以下のように書いてください。
+</p>
+<pre class="eval">nsIFactory* NewComponentFactory(nsIRepository* repository)
+{
+ nsIGenericFactory* factory = NULL;
+ nsCID kGenericFactoryCID = NS_GENERICFACTORY_CID;
+ nsresult res = repository-&gt;CreateInstance(kGenericFactoryCID, NULL, nsIGenericFactory::IID(), &amp;factory);
+ if (res == NS_OK) {
+ factory-&gt;SetConstructor(&amp;MyComponent::Create);
+ }
+ return factory;
+}
+</pre>
+<p>この例では、XPCOM リポジトリは、インタフェースとして使うことができると仮定しています。(もうすぐそうなる予定です)
+</p>
+<h4 id="背景"> 背景 </h4>
+<p>(これは、私のオリジナルのニュース投稿 &lt;<a class=" link-mailto" href="mailto:beard-2402991733140001@h-198-93-95-151.mcom.com">beard-2402991733140001@h-198-93-95-151.mcom.com</a>&gt; が元になっています。)
+</p><p>我々は、異なるファクトリ実装を膨大に作ってきたと思われます。すべての単純なファクトリの代わりとして以下のクラスを使えば、コードサイズ (すべての QueryInterface、AddRef、Release の実装) を縮小できるはずです。
+</p>
+<pre class="eval"><span>// アイデア: 汎用ファクトリを作ることで、多くの
+ // nsIFactory コードの複製を避けられます。我々に必要なのは、
+ // アロケータ関数だけです。その他の実装は、まったく同じです。
+
+ #include "nsIFactory.h"
+
+ class nsGenericFactory : public nsIFactory {
+ public:
+ typedef nsresult (*CreatorProcPtr) (nsISupports *aOuter,
+ REFNSIID aIID, void **aResult);
+
+ nsGenericFactory(CreatorProcPtr creator);
+ virtual ~nsGenericFactory();
+
+ NS_DECL_ISUPPORTS
+
+ NS_IMETHOD CreateInstance(nsISupports *aOuter, REFNSIID aIID, void **aResult);
+
+ NS_IMETHOD LockFactory(PRBool aLock);
+
+ private:
+ CreatorProcPtr mCreator;
+ };
+
+ nsGenericFactory::nsGenericFactory(CreatorProcPtr creator)
+ : mCreator(creator)
+ {
+ NS_INIT_REFCNT();
+ }
+
+ nsGenericFactory::~nsGenericFactory() {}
+
+ static NS_DEFINE_IID(kIFactoryIID, NS_IFACTORY_IID);
+
+ NS_IMPL_ISUPPORTS(nsGenericFactory, kIFactoryIID)
+
+ NS_IMETHODIMP nsGenericFactory::CreateInstance(nsISupports *aOuter,
+ REFNSIID aIID, void **aResult)
+ {
+ return mCreator(aOuter, aIID, aResult);
+ }
+
+ NS_IMETHODIMP nsGenericFactory::LockFactory(PRBool aLock)
+ {
+ return NS_OK;
+ }</span>
+</pre>
+<p>多くのクラスは、クリエータ関数として使うための静的なエントリーポイントをすでに持っています。そのため、多くの場合、クラスのための新しいファクトリを作るのは、単にこんな感じでいいのです。
+</p>
+<pre class="eval">nsIFactory* NewMallocFactory()
+{
+ nsIFactory* factory = new nsGenericFactory(&amp;nsMalloc::Create);
+ factory-&gt;AddRef();
+ return factory;
+}
+</pre>
+<p>Warren に話すと、彼はこの手順を短縮するために、関数ポインタと一緒にファクトリを登録できるようにしようと提案しました。
+</p>
+<div class="originaldocinfo">
+<h2 id="原文書の情報"> 原文書の情報 </h2>
+<ul><li> 著者: <a class="link-mailto" href="mailto:beard@netscape.com">Patrick Beard</a>
+</li><li> 最終更新日: February 26, 1999
+</li><li> 著作権: Portions of this content are © 1998–2007 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">詳細</a>
+</li></ul>
+</div>
+<div class="noinclude">
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/guide/how_to_build_an_xpcom_component_in_javascript/index.html b/files/ja/mozilla/tech/xpcom/guide/how_to_build_an_xpcom_component_in_javascript/index.html
new file mode 100644
index 0000000000..0e12b4f39c
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/guide/how_to_build_an_xpcom_component_in_javascript/index.html
@@ -0,0 +1,190 @@
+---
+title: How to Build an XPCOM Component in Javascript
+slug: Mozilla/Tech/XPCOM/Guide/How_to_Build_an_XPCOM_Component_in_Javascript
+tags:
+ - Add-ons
+ - Extensions
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/Guide/Building_components_in_JavaScript
+---
+<p>
+</p><p>これは JavaScript で XPCOM コンポーネントを作成するための "Hello World" 的なチュートリアルです。このチュートリアルでは、XPCOM がどのように、そしてなぜそのように動くのかということや、コードの例が何をするものなのかということは説明しません。詳細は <a href="ja/XPCOM">別の記事</a> を参照してください。このチュートリアルでは、コンポーネントをできる限り少数かつ簡単なステップで<b>動かす</b>ためにすべきことを説明していきます。
+</p><p>警告:これは Mac 上での結果です。Windows では手順が異なるかもしれません。
+</p><p><br>
+</p>
+<h2 id=".E5.AE.9F.E8.A3.85" name=".E5.AE.9F.E8.A3.85"> 実装 </h2>
+<p>このコンポーネントの例では "Hello World!" という文字列を返すメソッド 1 つだけを公開します。
+</p>
+<h3 id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.81.AE.E5.AE.9A.E7.BE.A9" name=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.81.AE.E5.AE.9A.E7.BE.A9"> インタフェースの定義 </h3>
+<p>作ったコンポーネントを JavaScript から、あるいは他の XPCOM コンポーネント内で使用したいとなると、公開したいインタフェースを定義しなければなりません(そのコンポーネントを JavaScript から<b>のみ</b>使用したい場合は、ここで説明するインタフェースを作成せずに済むように <code>wrappedJSObject</code> というトリックを使うことができます。<a class="external" href="http://kb.mozillazine.org/Dev_:_Extending_the_Chrome_Protocol">ここ</a> に例があります)。
+</p><p>Mozilla アプリケーションには定義済みのインタフェースがたくさんあるため、新たに定義する必要がないかもしれません。既存の XPCOM インタフェースは Mozilla のソースコードの中のさまざまな場所で閲覧することができますし、<a class="external" href="http://xpcomviewer.mozdev.org/">XPCOMViewer</a> という、登録済みのインタフェースやコンポーネントを閲覧するための GUI を使うこともできます。Firefox 1.5 で動作する古いバージョンの XPCOMViewer は <a class="external" href="http://downloads.mozdev.org/xpcomviewer/">mozdev mirrors</a> からダウンロードできます。
+</p><p>もし必要なインタフェースが見つかれば、IDL を書いたり typelib をコンパイルしたりする必要はありません。<a href="#.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AE.E4.BD.9C.E6.88.90">次のセクション</a> に飛んでもかまいません。
+</p><p>適当な既存のインタフェースが見つからなかった場合は独自に定義する必要があります。XPCOM はインタフェースの定義に <a href="ja/XPIDL">XPIDL</a> という IDL の方言を使用します。ここに今回の HelloWorld コンポーネント用の XPIDL 定義を示します。
+</p><p>HelloWorld.idl
+</p>
+<pre>#include "nsISupports.idl"
+
+[scriptable, uuid(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)]
+interface nsIHelloWorld : nsISupports
+{
+ string hello();
+};
+</pre>
+<p>作成する XPCOM コンポーネントおのおのに新しい UUID を付ける必要があることに注意してください。詳細は <a href="ja/Generating_GUIDs">GUID の生成</a> を参照してください。
+</p>
+<h3 id="typelib_.E3.81.AE.E3.82.B3.E3.83.B3.E3.83.91.E3.82.A4.E3.83.AB" name="typelib_.E3.81.AE.E3.82.B3.E3.83.B3.E3.83.91.E3.82.A4.E3.83.AB"> typelib のコンパイル </h3>
+<p>インタフェース定義を Mozilla アプリケーションに登録して使用するためには、バイナリ形式 (XPT) にコンパイルする必要があります。コンパイルは Gecko SDK を用いて行うことができます。Mac、Linux、Windows 版の Gecko SDK の入手方法については <a href="ja/Gecko_SDK">Gecko SDK</a> という記事をお読みください。
+</p>
+<div class="note"><b>注意:</b>Mac 版の SDK は PowerPC 版のみダウンロード可能です。Intel 版が必要な場合はそのページの説明に従って自分でコンパイルする必要があります。</div>
+<p>このコマンドを実行して typelib をコンパイルします。ここで、&lt;tt&gt;{sdk_dir}&lt;/tt&gt; は Gecko SDK を解凍したディレクトリです。
+</p>
+<pre class="eval">{sdk_dir}/bin/xpidl -m typelib -w -v -I {sdk_dir}/idl -e HelloWorld.xpt HelloWorld.idl
+</pre>
+<p>これで HelloWorld.xpt という typelib ファイルが現在の作業ディレクトリに作成されます。
+</p>
+<h3 id=".E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AE.E4.BD.9C.E6.88.90" name=".E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AE.E4.BD.9C.E6.88.90"> コンポーネントの作成 </h3>
+<p>HelloWorld.js
+</p>
+<pre>/***********************************************************
+定数
+***********************************************************/
+
+// nsIHelloWorld.idl 内のインタフェース定義への参照
+const nsIHelloWorld = Components.interfaces.nsIHelloWorld;
+
+// すべてのコンポーネントがサポートしなければならない必須の基本インタフェースへの参照
+const nsISupports = Components.interfaces.nsISupports;
+
+// このコンポーネントを一意的に識別する UUID
+// http://kruithof.xs4all.nl/uuid/uuidgen にて生成可能
+const CLASS_ID = Components.ID("{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx}");
+
+// 説明
+const CLASS_NAME = "My Hello World Javascript XPCOM Component";
+
+// テキスト形式の一意識別子
+const CONTRACT_ID = "@dietrich.ganx4.com/helloworld;1";
+
+/***********************************************************
+クラス定義
+***********************************************************/
+
+// クラスコンストラクタ
+function HelloWorld() {
+};
+
+// クラス定義
+HelloWorld.prototype = {
+
+ // このインタフェースで公開したい関数の定義
+ hello: function() {
+ return "Hello World!";
+ },
+
+ QueryInterface: function(aIID)
+ {
+ if (!aIID.equals(nsIHelloWorld) &amp;&amp;
+  !aIID.equals(nsISupports))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ }
+};
+
+/***********************************************************
+クラスファクトリ
+
+このオブジェクトはグローバルスコープである Components.classes のメンバ。
+コントラクト ID がキーになっている。例:
+
+myHelloWorld = Components.classes["@dietrich.ganx4.com/helloworld;1"].
+ createInstance(Components.interfaces.nsIHelloWorld);
+
+***********************************************************/
+var HelloWorldFactory = {
+ createInstance: function (aOuter, aIID)
+ {
+ if (aOuter != null)
+ throw Components.results.NS_ERROR_NO_AGGREGATION;
+ return (new HelloWorld()).QueryInterface(aIID);
+ }
+};
+
+/***********************************************************
+モジュール定義(xpcom 登録)
+***********************************************************/
+var HelloWorldModule = {
+ registerSelf: function(aCompMgr, aFileSpec, aLocation, aType)
+ {
+ aCompMgr = aCompMgr.
+ QueryInterface(Components.interfaces.nsIComponentRegistrar);
+ aCompMgr.registerFactoryLocation(CLASS_ID, CLASS_NAME,
+ CONTRACT_ID, aFileSpec, aLocation, aType);
+ },
+
+ unregisterSelf: function(aCompMgr, aLocation, aType)
+ {
+ aCompMgr = aCompMgr.
+ QueryInterface(Components.interfaces.nsIComponentRegistrar);
+ aCompMgr.unregisterFactoryLocation(CLASS_ID, aLocation);
+ },
+
+ getClassObject: function(aCompMgr, aCID, aIID)
+ {
+ if (!aIID.equals(Components.interfaces.nsIFactory))
+ throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
+
+ if (aCID.equals(CLASS_ID))
+ return HelloWorldFactory;
+
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ },
+
+ canUnload: function(aCompMgr) { return true; }
+};
+
+/***********************************************************
+モジュール初期化
+
+アプリケーションがコンポーネントを登録するときにこの関数が呼び出される。
+***********************************************************/
+function NSGetModule(aCompMgr, aFileSpec) { return HelloWorldModule; }
+
+</pre>
+<h2 id=".E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB" name=".E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB"> インストール </h2>
+<h3 id=".E6.8B.A1.E5.BC.B5.E6.A9.9F.E8.83.BD.E3.81.AB" name=".E6.8B.A1.E5.BC.B5.E6.A9.9F.E8.83.BD.E3.81.AB"> 拡張機能に </h3>
+<ol><li> HelloWorld.js と HelloWorld.xpt を {extensiondir}/components/ にコピーする
+</li><li> プロファイルディレクトリから compreg.dat と xpti.dat を削除する
+</li><li> アプリケーションを再起動する
+</li></ol>
+<h3 id="Firefox_.E3.81.AB" name="Firefox_.E3.81.AB"> Firefox に </h3>
+<ol><li> ソースから実行する場合、HelloWorld.js と HelloWorld.xpt を {objdir}/dist/bin/components ディレクトリにコピーする
+</li><li> components ディレクトリから compreg.dat と xpti.dat を削除する
+</li><li> プロファイルディレクトリから compreg.dat と xpti.dat を削除する
+</li><li> アプリケーションを再起動する
+</li></ol>
+<h2 id=".E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AE.E4.BD.BF.E7.94.A8" name=".E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AE.E4.BD.BF.E7.94.A8"> コンポーネントの使用 </h2>
+<pre>try {
+ // JavaScript 内でコンポーネントを使用できるようにするには、一般にこれが必要
+ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
+
+ var myComponent = Components.classes['@dietrich.ganx4.com/helloworld;1']
+ .createInstance(Components.interfaces.nsIHelloWorld);
+
+ alert(myComponent.hello());
+} catch (anError) {
+ dump("ERROR: " + anError);
+}
+</pre>
+<h2 id=".E3.81.9D.E3.81.AE.E4.BB.96.E3.81.AE.E8.B3.87.E6.96.99" name=".E3.81.9D.E3.81.AE.E4.BB.96.E3.81.AE.E8.B3.87.E6.96.99"> その他の資料 </h2>
+<ul><li> XPCOM コンポーネントの JS での実装についての mozillazine フォーラムの 2 つのスレッド。説明、コードの例、トラブルシューティング情報もあり:
+<ul><li> <a class=" external" href="http://forums.mozillazine.org/viewtopic.php?t=308369" rel="freelink">http://forums.mozillazine.org/viewtopic.php?t=308369</a>
+</li><li> <a class=" external" href="http://forums.mozillazine.org/viewtopic.php?t=367298" rel="freelink">http://forums.mozillazine.org/viewtopic.php?t=367298</a>
+</li></ul>
+</li><li> <a class="external" href="http://kb.mozillazine.org/Implementing_XPCOM_components_in_JavaScript">Implementing XPCOM components in JavaScript</a> - kb.mozillazine.org 内
+</li><li> <a class="external" href="http://www.mozilla.org/scriptable/avoiding-leaks.html">Using XPCOM in JavaScript without leaking</a> - 必読
+</li><li> <a class="external" href="http://lxr.mozilla.org/seamonkey/source/xpcom/sample/nsSample.js">コンポーネントの例</a>
+</li><li> <a class="external" href="http://www.mozilla.org/scriptable/js-components-status.html">古い JS+XPCOM のメモ</a> - wrappedJSObject の情報もあり
+</li></ul>
+<div class="noinclude">
+</div>
+{{ languages( { "en": "en/How_to_Build_an_XPCOM_Component_in_Javascript", "zh-cn": "cn/How_to_Build_an_XPCOM_Component_in_Javascript" } ) }}
diff --git a/files/ja/mozilla/tech/xpcom/guide/index.html b/files/ja/mozilla/tech/xpcom/guide/index.html
new file mode 100644
index 0000000000..725b612220
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/guide/index.html
@@ -0,0 +1,16 @@
+---
+title: XPCOM guide
+slug: Mozilla/Tech/XPCOM/Guide
+tags:
+ - Landing
+ - Mozilla
+ - NeedsTranslation
+ - TopicStub
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/Guide
+---
+<p><span class="seoSummary">These articles provide tutorials and usage documentation for XPCOM, including how to use it in your own projects and how to build XPCOM components for your Firefox add-ons and the like.</span></p>
+<div class="row topicpage-table">
+ <div class="section"><dl><dl><dt class="landingPageList"><a href="/ja/docs/How_to_Build_an_XPCOM_Component_in_Javascript">How to Build an XPCOM Component in Javascript</a></dt><dd class="landingPageList"></dd><dt class="landingPageList"><a href="/ja/docs/Mozilla_internal_string_guide">XPCOM string guide</a></dt><dd class="landingPageList">このガイドは過剰に存在しているstringクラスについてドキュメント化したものです。これによって「こういう場合、いったいどのstringクラスを使ったらいいの?」という長年の疑問に対する答えとなることを期待しています。</dd></dl></dl></div>
+ <div class="section"><dl><dt class="landingPageList"><a href="/ja/docs/XPCOM_hashtable_guide">XPCOM ハッシュテーブル・ガイド</a></dt><dd class="landingPageList">ハッシュテーブルは、<strong>アイテム</strong>を格納するための構造体です。個々のアイテムは、それぞれを識別するための<strong>キー</strong>を持ちます。ハッシュテーブルからアイテムを検索・追加・削除するためにはキーを使います。ハッシュテーブルは<a href="/ja/XPCOM_array_guide" title="https://developer.mozilla.org/ja/XPCOM_array_guide">配列</a>に似ていますが、以下に示すような大きな違いがあります。</dd></dl></div>
+ </div>
diff --git a/files/ja/mozilla/tech/xpcom/guide/mozilla_internal_string_guide/index.html b/files/ja/mozilla/tech/xpcom/guide/mozilla_internal_string_guide/index.html
new file mode 100644
index 0000000000..bdcb54baa2
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/guide/mozilla_internal_string_guide/index.html
@@ -0,0 +1,834 @@
+---
+title: XPCOM string guide
+slug: Mozilla/Tech/XPCOM/Guide/Mozilla_internal_string_guide
+tags:
+ - 移行
+ - 要更新
+translation_of: Mozilla/Tech/XPCOM/Guide/Internal_strings
+---
+<h2 id=".E5.BA.8F.E6.96.87" name=".E5.BA.8F.E6.96.87">序文</h2>
+
+<div>
+<p>by Alec Flett<br>
+ Thanks to David Baron for <a class="external" href="http://dbaron.org/mozilla/coding-practices">actual docs</a>,<br>
+ Peter Annema for lots of direction,<br>
+ Myk Melez for some more docs, and<br>
+ David Bradley for a diagram<br>
+ Revised by Darin Fisher for Mozilla 1.7<br>
+ Revised by Jungshik Shin to clarify character encoding issues</p>
+</div>
+
+<p> このガイドは過剰に存在しているstringクラスについてドキュメント化したものです。これによって「こういう場合、いったいどのstringクラスを使ったらいいの?」という長年の疑問に対する答えとなることを期待しています。</p>
+
+<div style="border: thin solid steelblue; padding: 0.5em;">
+<p> もしあなたがMozillaの組み込み開発者か、もしくはMozillaコードベースとは別個に配布されることを予定しているXPCOMコンポーネントを書いているなら、この文書は多くの場合あなたにとって最適のものとは言えません!もしあなたがMozilla 1.7以降を対象に開発を行っているなら、この文書の代わりに新しい最小版APIである <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsStringAPI.h" rel="custom">xpcom/glue/nsStringAPI.h</a></code> とりわけ<code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/string/public/nsEmbedString.h" rel="custom">xpcom/string/public/nsEmbedString.h</a></code> クラスを使うべきです。</p>
+</div>
+
+<p> お急ぎですか?それなら <a href="/ja/XPCOM/String_Quick_Reference" title="ja/XPCOM/String_Quick_Reference">String Quick-Reference</a> () を見てください。</p>
+
+<h2 id=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB" name=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB">はじめに</h2>
+
+<p>string クラスは、unicode と 1バイト文字の文字列のバッファを扱うために使われる C++ クラスのライブラリです。 これらは <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/string" rel="custom">xpcom/string</a></code> ディレクトリの Mozilla コードベースに属します。</p>
+
+<p>Abstract (interface) クラスは"nsA"で始まり、 具象クラスは"<code>ns</code>"で始まります。 "<code><strong>C</strong>String</code>" を名前に持つクラスは シングルバイト ASCII 文字列もしくは、UTF-8 やその他の文字セットでエンコードされたマルチバイト unicode 文字列を参照する 8 ビット文字を格納します。 名前に単に "<code>String</code>" を持つ他のすべてのクラスは、 主に UTF16 でエンコードされる 2バイト(<code>PRUnichar</code>)文字列を参照します。 例:<code>nsAString</code> は 2バイト文字を蓄えるための抽象クラスで、 <code>nsDependentCString</code> は 1バイト文字を蓄えるための具象クラスです。 どの 2バイト文字列クラスも同等の 1バイト文字列クラスを持ちます。 例:<code>nsCString</code> クラスは 1バイト文字列クラスで、 <code>nsString</code> と対応します。</p>
+
+<p>1バイトと 2バイトの文字列クラスは完全に異なる基底クラスを持ちますが、 同じ API を共有します。 このように、1バイト文字列を 2バイト文字列へ、何らかのヘルパークラスかルーチンによる変換なしに代入することは出来ません。 このドキュメントの目的は、クラスドキュメントの中で 2バイト文字列クラスについて言及することです。 どの 2バイトクラスも同等の 1バイトクラスを持つと仮定しても安全です。</p>
+
+<h2 id="String_ガイドライン">String ガイドライン</h2>
+
+<p>仲間の開発者、レビューワ、ユーザをハッピーにさせるために、コードの中でこれらの単純なルールに従ってください。</p>
+
+<ul>
+ <li>是非とも<a href="#Unicode_Conversion"><code><span class="nowiki">*WithConversion</span></code> 関数を避ける</a>: <code>AssignWithConversion</code>, <code>AppendWithConversion</code>, <code>EqualsWithConversion</code>, など</li>
+ <li>出来る限りもっとも抽象的なクラスを使う。大抵はこれ:
+ <ul>
+ <li><a href="#Abstract_Classes"><code>nsAString</code></a> 関数の引数のために</li>
+ <li><a href="#Concrete_Classes"><code>nsString</code> メンバ変数のために </a></li>
+ <li><a href="#Concrete_Classes"><code>nsAutoString</code> または <code>nsXPIDLString</code></a> ローカル(スタックベース)変数のために</li>
+ </ul>
+ </li>
+ <li><code>nsAString</code> 互換オブジェクトとしてリテラル文字列(例:<code>"foo"</code>)を表現するためには <a href="#Literal_Strings"><code>NS_LITERAL_[C</code></a>STRING/<code>NS_NAMED_LITERAL_[C]STRING</code>] を使う。</li>
+ <li>文字列を結合するときには<a href="#Concatenation">string 連結</a>(例: "<code>+</code>" オペレータ)を使う。</li>
+ <li><code>nsAString</code>互換文字列を変換する必要のある生の文字ポインタを持つとき、 <a href="#Raw_Pointers"><code>nsDependentString</code></a>を使う。</li>
+ <li>既存の文字列から一部を抜き出すためには <a href="#Substring"><code>Substring()</code></a> を使う。</li>
+ <li>文字列断片の解析と抜き出しには <a href="#Iterators">iterators</a> を使う。</li>
+</ul>
+
+<p> </p>
+
+<h2 id="Abstract.EF.BC.88.E6.8A.BD.E8.B1.A1.EF.BC.89.E3.82.AF.E3.83.A9.E3.82.B9" name="Abstract.EF.BC.88.E6.8A.BD.E8.B1.A1.EF.BC.89.E3.82.AF.E3.83.A9.E3.82.B9">Abstract(抽象)クラス</h2>
+
+<p>どの string クラスも <code>nsAString</code>(もしくは <code>nsACString</code>) から派生しています。 このクラスはアクセスと文字列操作のための基礎インタフェースを提供します。 具象クラスが <code>nsAString</code>から派生する一方、 <code>nsAString</code>自身はインスタンス化できません。</p>
+
+<p>これは、コードベースの他の部分で抽象オブジェクト記述の記述のために Mozilla が使っている "interface" の考え方によく似ています。 インタフェースについて、クラス名は "nsI" で始まり、"I" は "Interface" を意味します。 抽象クラスは "nsA" で始まり、"A" は "Abstract" を意味します。</p>
+
+<p><code>nsAString</code> から派生した抽象クラスがたくさんあります。 これらの抽象サブクラスもまたインスタンス化できません。 しかし、それらは <code>nsAString</code> よりもわずかながらより詳細に string を記述します。 それからは、抽象クラスの背後で下敷きになった実装が <code>nsAString</code> に加えて特定の能力を提供することを保証します。</p>
+
+<p>以下のリストで主な抽象クラスについて記述します。一度それらになじんだら、<a href="#Appendix_WhatToUse">どのクラスをいつ使うか</a>を参照してください。</p>
+
+<ul>
+ <li><code class="decl">nsAString</code><span class="nowiki">: すべての文字列のための基底クラスです。 これは、代入/個々の文字へのアクセス/基本的なの文字操作/文字列比較のための API を提供します。このクラスは XPIDL の </span><code>AString</code> 引数型に対応します。</li>
+ <li><code class="decl">nsSubstring</code><span class="nowiki">: string クラスのすべてに対する共通の基本クラスです。文字列の内部のデータへ最適化されたアクセスをするためのものです。</span><code>nsSubstring</code> は null 終端文字列である必要はありません(後方互換のために、<code>nsASingleFragmentString</code> は、このクラスを示す typedef がなされています)。</li>
+ <li><code class="decl">nsString</code><span class="nowiki">: null 終端の保存を保証した </span><code>nsSubstring</code> によって作られます。このクラスでは、下敷きとなっている文字バッファにアクセスするためのメソッド(<code>.get()</code>) を使うことができます。(後方互換のために、<code>nsAFlatString</code> は、このクラスを示す typedef がなされています)。</li>
+</ul>
+
+<p>その他の string クラスは、<code>nsSubstring</code> か <code>nsString</code> かを継承しています。 そのため、どの文字列クラスも <code>nsAString</code> と互換があります。</p>
+
+<p><code>nsSubstring</code> と <code>nsAString</code> は共に null 終端である必要のない一続きの文字の配列を示していることに言及するのは重要なことでしょう。 この似通った二つのクラスが存在する必要があるのは何故なのかと疑問に思う人もいるでしょう。 えぇ、<code>nsSubstring</code> は主として、最適化目的に存在します。それは、<code>nsAString</code> が Mozilla 1.0 とともにリリースされた凍結された <code>nsAString</code> crustバイナリレベルの互換を保たなくてはならないからです。 Mozilla 1.7 のリリースまで、<code>nsAString</code> は複合的な断片に分けられた文字列を表す能力を持っていました。 複合的な断片に分けられた文字列のサポートに関するコストは高く、限られたメリットを提供していました。 文字列クラスの複雑さを減らして、パフォーマンスを改善しようという努力のために、複合的な断片に分けられた文字列のサポートを削減する決定がなされました。詳細は <a class="external" href="http://bugzilla.mozilla.org/show_bug.cgi?id=231995">bug 231995</a> を参照して下さい。</p>
+
+<p><code>nsSubstring</code> は、下敷きとしている <code>nsAString</code> バッファへのより効果的なインタフェースを提供していますが、<code>nsAString</code> は未だにパラメータ渡しのためにもっとも共通して使われています。 それは、XPIDL の <code>AString</code> と対応した文字辣クラスだからです。 そのために、この文字列ガイドは <code>nsAString</code> に重点を置いた文字列クラスについて言及し続けるでしょう。</p>
+
+<p>どの stiring も <code>nsAString</code>(もしくは <code>nsACString</code>) から派生しているため、それらはいくつかの基礎となる機能を共有します。</p>
+
+<p>読取専用の共通メソッド:</p>
+
+<ul>
+ <li><code class="decl">.Length()</code> - string 中の文字数。</li>
+ <li><code class="decl">.IsEmpty()</code> - string が何らかの値を持っているかどうか決定する最も早い方法。次のコードでテストするよりこれを使ってください:<code><em>string</em>.Length == 0</code></li>
+ <li><code class="decl">.Equals(<em>string</em>)</code> - もし引数の string が現在の string と同じ値を持っていれば TRUE。</li>
+</ul>
+
+<p>文字列修正の共通メソッド:</p>
+
+<ul>
+ <li><code class="decl">.Assign(<em>string</em>)</code> - 新しい値を string に代入する。</li>
+ <li><code class="decl">.Append(<em>string</em>)</code> - string に値を追加する。</li>
+ <li><code class="decl">.Insert(<em>string</em>, <em>position</em>)</code> - 引数の string を <em>position</em> の文字の後ろに挿入する。</li>
+ <li><code class="decl">.Truncate(<em>length</em>)</code> - string を引数の長さに縮める。</li>
+</ul>
+
+<p><a href="#Appendix_nsAString">付録</a>に完全なドキュメントがあります。</p>
+
+<p> </p>
+
+<h3 id=".E8.AA.AD.E5.8F.96.E5.B0.82.E7.94.A8_strings" name=".E8.AA.AD.E5.8F.96.E5.B0.82.E7.94.A8_strings">読取専用 strings</h3>
+
+<p>string 上での<code>const</code> 属性は string が書き込み可能かどうかを示します。 もし、string が<code>const nsAString</code> のように定義されていたら、string 内のデータは操作不可です。 もし、<code>const</code> でないメソッドを <code>const</code> string 上で呼び出そうとしても、 コンパイラはビルド時にエラーとしてこれを示します。</p>
+
+<p>例:</p>
+
+<p> </p>
+
+<pre class="eval">void nsFoo::ReverseCharacters(nsAString&amp; str) {
+ ...
+ str.Assign(reversedStr); // modifies the string
+}
+</pre>
+
+<p>これはコンパイルできない。なぜなら、<code>const</code> クラスへ代入しているから:</p>
+
+<pre class="eval">void nsFoo::ReverseCharacters(const nsAString&amp; str) {
+ ...
+ <strong>str.Assign(reversedStr);</strong>
+}
+</pre>
+
+<p> </p>
+
+<h3 id=".E9.96.A2.E6.95.B0.E3.81.AE.E5.BC.95.E6.95.B0.E3.81.A8.E3.81.97.E3.81.A6.E3.81.AE_Abstract.EF.BC.88.E6.8A.BD.E8.B1.A1.EF.BC.89.E3.82.AF.E3.83.A9.E3.82.B9" name=".E9.96.A2.E6.95.B0.E3.81.AE.E5.BC.95.E6.95.B0.E3.81.A8.E3.81.97.E3.81.A6.E3.81.AE_Abstract.EF.BC.88.E6.8A.BD.E8.B1.A1.EF.BC.89.E3.82.AF.E3.83.A9.E3.82.B9">関数の引数としての Abstract(抽象)クラス</h3>
+
+<p>関数の引数としては、具象クラスの代わりにできる限りもっとも抽象的なインタフェースを使うことが推奨されます。 文字列を参照渡しする場合には、ポインタ('*'文字)ではなく、C++の参照('&amp;' 文字)を用いるのが習慣です。たとえば:</p>
+
+<pre class="eval">// 抽象クラスによる参照
+nsFoo::PrintString(<strong>const nsAString&amp;</strong> str) {..}
+
+// 具象クラスを使っている!
+nsFoo::PrintString(const <strong>nsString&amp;</strong> str) {..}
+
+// ポインタを使っている!
+nsFoo::PrintString(const <strong>nsAString*</strong> str) {..}
+</pre>
+
+<p>抽象クラスはまた、ときどきオブジェクトへの一時的な参照を蓄えるのにも使われます。 これらの両方の使い方は、後述の<a href="#Common_Patterns">共通パターン</a>を参照してください。</p>
+
+<p> </p>
+
+<h2 id=".E5.85.B7.E8.B1.A1.E3.82.AF.E3.83.A9.E3.82.B9" name=".E5.85.B7.E8.B1.A1.E3.82.AF.E3.83.A9.E3.82.B9">具象クラス</h2>
+
+<p>具象クラスは string データを実際に蓄える必要があるコードの中で使うためのものです。 具象クラスのもっともありがちな使い方は、ローカル変数もしくはクラスや構造体のメンバとして使うというものです。 抽象クラスはそれぞれデータの格納方式が違うために、大抵は具象クラスの格納方針も異なります。</p>
+
+<p>以下はに、もっとも一般的な具象クラスの一覧を示します。一度それらになじんだら、<a href="#Appendix_WhatToUse">どのクラスをいつ使うか</a>を参照してください。 The following is a list of the most common concrete classes. Once you are familiar with them, see the appendix describing <a href="#Appendix_WhatToUse">What Class to Use When</a>.</p>
+
+<ul>
+ <li><code class="decl">nsString / nsCString</code> - バッファがヒープ上に割り当てられている null 終端 string です。 string オブジェクトがなくなったときにそのバッファは破棄されます。</li>
+ <li><code class="decl">nsAutoString / nsCAutoString</code> - nsString から派生した、 string 自身と同じ格納スペースに 64文字バッファを持つ string。 もし、文字長が 64より長い string が nsAutoString に代入されると、新しいバッファがヒープ上に割り当てられます。 これはメンバ変数としてはあまり用いられるべきではないでしょう。</li>
+ <li><code class="decl">nsXPIDLString / nsXPIDLCString</code>- nsString から派生した文字列で、 このクラスは <code>getter_Copies()</code> 演算子によって、XPIDL の<code>出力 wstring / string</code> パラメータへの簡単なアクセスをサポートしています。</li>
+ <li><code class="decl">nsDependentString</code>- nsString から派生した文字列で、 この string は自分自身ではバッファを<strong>持ちません</strong>。 生の文字列(<code>const PRUnichar*</code> や <code>const char*</code>)を <code>nsAString</code> 型に変換するのに有用です。</li>
+ <li><code class="decl">nsPrintfCString</code>- nsString から派生した文字列で、 この string は nsCAutoString のように振る舞います。 このクラスのコンストラクタで <code>printf</code> スタイルのフォーマットの string と引数リストから シングルバイトの string を作ることが出来ます。</li>
+ <li><code class="decl">NS_LITERAL_STRING/NS_NAMED_LITERAL_STRING</code>- これらは("abc" のような)リテラル stringを <code>nsAStrings</code> や nsString のサブクラスに変換します。 プラットフォームでサポートしているダブルバイト string リテラルにおいて(例:MSVC++ や -fshort-wchar オプションを付けた GCC)、これらは <code>nsDependentString</code> クラス周辺の単純なマクロです。 これらは <code>nsDependentString</code> による単なるラップより若干速いです。なぜなら、それらの長さの計算にコンパイラを使い、ダブルバイトリテラル string のごちゃごちゃしたクロスプラットフォーム上の細部を隠しもするからです。</li>
+</ul>
+
+<p>ヘルパールーチンなどの副産物として作られた具象クラスはたくさんあります。 これらのクラスは<em>直接使うことを避け</em>るべきです。 string ライブラリから自分のためのクラスを作ってください。</p>
+
+<ul>
+ <li><code class="decl">nsSubstringTuple</code> - <a href="#Concatenation">文字列連結</a>を通した生成</li>
+ <li><code class="decl">nsDependentSubstring</code> - <a href="#Substring">Substring</a> を通した生成</li>
+ <li><code class="decl">nsPromiseFlatString</code> - <a href="#Raw_Pointers"><code>PromiseFlatString()</code></a> を通した生成</li>
+</ul>
+
+<p>もちろん、あなたのコードの中のこれらの string クラスの参照が必要な時はあります。 しかし、一般的なルールでは、これらは使わない方がよいです。</p>
+
+<h2 id=".E3.82.A4.E3.83.86.E3.83.AC.E3.83.BC.E3.82.BF" name=".E3.82.A4.E3.83.86.E3.83.AC.E3.83.BC.E3.82.BF">イテレータ</h2>
+
+<p>イテレータは string の中の位置への参照を保つオブジェクトです。 ある意味で、これらは配列の中のインデックスを参照する数値や、 文字列の中の位置を参照する文字ポインタのようなものです。 イテレータは、文字列への読み込みと書き込みとを区別する文法的な意味も提供します。</p>
+
+<p>イテレータは文字列の部分文字列の抽出のためにもっともよく用いられるべきです。 これらは文字列の内容の修正のための機能を提供しますが、 たいていはヘルパールーチン、つまり文字列自身のメソッドの方が、複雑な文字列変換より早いでしょう。</p>
+
+<p>イテレータは繰り返している文字列クラスで宣言されます:</p>
+
+<pre class="eval">nsAString::const_iterator start, end; // 読み取り専用イテレータ
+ nsAStrings
+ nsAFlatString::iterator substr_start, substr_end; // nsString のための書き込み用イテレータ
+</pre>
+
+<p>イテレータは string にある4つのメソッドのうちあなたが参照したい一つにより初期化されます:</p>
+
+<pre class="eval">// 'str' から読み込もう
+str.BeginReading(start); // 'str' の先頭で 'start' を初期化する
+str.EndReading(end); // 'end' は string の終端になるでしょう
+
+// 'url' に書き込みもしたいんです
+url.BeginWriting(substr_start);
+url.EndWriting(substr_end);
+</pre>
+
+<p>ポインタ参照オペレータ * によってイテレータが指す文字へアクセス可能です。</p>
+
+<pre class="eval">if (*start == '[')
+ printf("Starts with a bracket\n");
+</pre>
+
+<p>上記例では、'end' と 'substr_end' は実際にかつて string の終端だった文字を指すでしょう。 なので、.EndReading() の結果を直接ポインタ内容参照してはいけないことに注意してください。</p>
+
+<p>二つのイテレータが同じ位置を指すかどうかは、== か != で調べることが出来ます。 ++ でイテレータの参照を進めることも出来ます。 ++ はイテレータの前にもってくることが好まれます。そして、それは一時的なイテレータの作成を防ぐことになります。</p>
+
+<p> </p>
+
+<pre class="eval">while (start != end) // string 全体を通して順番に回る
+ ++start;
+</pre>
+
+<p>(const-iterators とは反対のように)書き込みイテレータにより、効果的に string に書き込むことが出来ます:</p>
+
+<p> </p>
+
+<pre class="eval">// * をすべて ! に変える
+while (substr_start != substr_end) {
+ if (*substr_start == '*')
+ *substr_start = '!';
+ ++substr_start;
+}
+</pre>
+
+<p>With the patch for <a class="external" href="http://bugzilla.mozilla.org/show_bug.cgi?id=231995">bug 231995</a>, this loop is now as efficient as iterating with raw character pointers.</p>
+
+<p> </p>
+
+<h3 id=".E3.82.A4.E3.83.86.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.AB.E3.82.88.E3.82.8B.E3.83.AB.E3.83.BC.E3.83.97" name=".E3.82.A4.E3.83.86.E3.83.AC.E3.83.BC.E3.82.BF.E3.81.AB.E3.82.88.E3.82.8B.E3.83.AB.E3.83.BC.E3.83.97">イテレータによるループ</h3>
+
+<p><span id="comment">原文ではindex部分には残っていますが、見出し、a nameを含めて削除されています。</span></p>
+
+<h2 id=".E3.83.98.E3.83.AB.E3.83.91.E3.83.BC.E3.82.AF.E3.83.A9.E3.82.B9.E3.81.A8.E9.96.A2.E6.95.B0" name=".E3.83.98.E3.83.AB.E3.83.91.E3.83.BC.E3.82.AF.E3.83.A9.E3.82.B9.E3.81.A8.E9.96.A2.E6.95.B0">ヘルパークラスと関数</h2>
+
+<h3 id=".E6.96.87.E5.AD.97.E5.88.97.E6.A4.9C.E7.B4.A2" name=".E6.96.87.E5.AD.97.E5.88.97.E6.A4.9C.E7.B4.A2">文字列検索</h3>
+
+<p><code>FindInReadable()</code> はかつての <code>string.Find(..)</code> の代わりのものです。 構文は:</p>
+
+<pre class="eval">PRBool FindInReadable(const nsAString&amp; pattern,
+ nsAString::const_iterator start, nsAString::const_iterator end,
+ nsStringComparator&amp; aComparator = nsDefaultStringComparator());
+</pre>
+
+<p>これを使うために、<code>start</code> と <code>end</code> は検索したい文字列のそれぞれ先頭と終端をさしていなくてはなりません。 もし、探している文字列が見つかったら、<code>start</code> と <code>end</code> は見つかった部分の先頭と終端を指すように調整されます。 戻り値は、PR_TRUE か PR_FALSE で、文字列が見つかったかどうかを示します。</p>
+
+<p>例:</p>
+
+<pre class="eval">const nsAString&amp; str = GetSomeString();
+nsAString::const_iterator start, end;
+
+str.BeginReading(start);
+str.EndReading(end);
+
+NS_NAMED_LITERAL_STRING(valuePrefix, "value=");
+
+if (FindInReadable(valuePrefix, start, end)) {
+ // end は今、検索した文字の後ろを指している
+ valueStart = end;
+}
+</pre>
+
+<h3 id=".E3.83.A1.E3.83.A2.E3.83.AA.E5.89.B2.E5.BD.93" name=".E3.83.A1.E3.83.A2.E3.83.AA.E5.89.B2.E5.BD.93">メモリ割当</h3>
+
+<p>既存の文字列から新しい文字列バッファ(<code>PRUnichar*</code>/<code>char*</code>)を割り当てるために好ましいメソッドは、 以下のメソッドです:</p>
+
+<ul>
+ <li><strong><code>PRUnichar* ToNewUnicode(<em>nsAString&amp;</em>)</code></strong> - nsAString から <code>PRUnichar*</code> を割り当てます。</li>
+ <li><strong><code>char *ToNewCString(<em>nsACString&amp;</em>)</code></strong> - nsACString から <code>char*</code> バッファを割り当てます。 このメソッドは nsAStrings 上でも働きますが、暗黙の<a href="#Lossy_Conversions">損失の多い変換</a>となるでしょう。 この機能は入力が厳密に ASCII であることが判っている場合にだけ使うべきです。しばしば UTF8 への変換がより適しています。 次項 <code class="decl">ToNewUTF8String</code> も参照のこと。</li>
+ <li><strong><code>char* ToNewUTF8String(<em>nsAString&amp;</em>)</code></strong> - 与えられた nsAString の UTF8 エンコードされたバージョンを含む新しい <code>char*</code> バッファを割り当てます。 詳細は<a href="#Unicode_Conversion">Unicode 変換</a>を参照して下さい。</li>
+</ul>
+
+<p>これらのメソッドは These methods return a buffer allocated using XPCOM's allocator (<code>nsMemory::Alloc</code>) instead of the traditional allocator (<code>malloc</code>, etc.). You should use <code>nsMemory::Free</code> to deallocate the result when you no longer need it. これらのメソッドは伝統的なアロケータ (<code>malloc</code> など)の代わりに XPCOM のアロケータ (<code>nsMemory::Alloc</code>)で割り当てられたバッファを返すでしょう。 必要としなくなった時、その戻り値を開放するために <code>nsMemory::Free</code> を使うべきです。</p>
+
+<h3 id=".E6.97.A2.E5.AD.98.E3.81.AE.E6.96.87.E5.AD.97.E5.88.97.E3.81.AE.E6.96.AD.E7.89.87" name=".E6.97.A2.E5.AD.98.E3.81.AE.E6.96.87.E5.AD.97.E5.88.97.E3.81.AE.E6.96.AD.E7.89.87">既存の文字列の断片</h3>
+
+<p>実際に新しいスペースを割り当てたり、その文字列の部分文字列の文字をコピーしたりしないで既存の文字列の部分文字列を参照するのはとても簡単です。<code>Substring()</code> はそのような文字列への参照を生成するのにとてもよいメソッドです。</p>
+
+<pre class="eval">void ProcessString(const nsAString&amp; str) {
+ const nsAString&amp; firstFive = Substring(str, 0, 5);
+ // firstFive は今最初の 5 文字を示す文字列です
+}
+</pre>
+
+<p> </p>
+
+<h2 id="Unicode_.E5.A4.89.E6.8F.9B" name="Unicode_.E5.A4.89.E6.8F.9B">Unicode 変換</h2>
+
+<p>文字列は二つの基本的な形式で<em>保存</em>することができます。 8 ビット文字(<code>char</code>)文字列もしくは、16 ビット文字(<code>PRUnichar</code>)文字列です。 クラス名に大文字の「C」を持つどの文字列クラスも、8 ビット文字を含みます。 それには、nsCString、nsDependentCString などのクラスが含まれます。 「C」を<em>持たない</em>どの文字列クラスも、16 ビット文字を含みます。</p>
+
+<p>格納構造に加え、文字列はまた、<em>エンコード</em>もされているという側面があります。 文字列のエンコーディングは、8 もしくは 16 ビットの文字列として unicode 文字値の組を保持することを意味します。 大きな文字値を小さな容量の文字列として保存する方法がたくさんあるため、エンコーディングがたくさんあります。 <em>文字セット</em>は、特定のエンコーディング方法の人間が理解できる名称です。 例えば、「ASCII」は 7 ビット値を 8 ビット文字列にマッピングした文字セットです。 「isolatin1」は8 ビット文字列で西欧文字エンコーディングするための共通文字セットです。</p>
+
+<p>文字列の文字セットは、文字列クラスの名前によって定義されて<em>いません</em>。 そのかわり、文字列の適切なエンコーディングを決定することは実装者の責任です。 もっとも一般的なのエンコーディングは:</p>
+
+<ul>
+ <li><strong>ASCII</strong> - 基本的な英語のみの文字列のための 8 ビットエンコーディングです。 どの ASCII 値も配列の正確に 1 バイトに格納されます。</li>
+ <li><strong>UCS2</strong> - 基本の unicode 格納のためのエンコーディングです。 UCS2 で格納された文字の unicode 値は、文字列クラスの正確に一つの 16 ビット <code>PRUnichar</code> に格納されます。</li>
+ <li><strong>UTF8</strong> - unicode 値のための8 ビットエンコーディング。 どの UTF8 値も 1 から 6 バイトの組で保持されます。 UTF8 は unicode 文字セット全体を表現する能力があり、効率よく UTF32 へマップします。</li>
+ <li><strong>UTF16</strong> - 拡張 unicode 格納のための 16 ビットエンコーディングです。 UCS2 に対して後方互換性があります。 UTF16で格納された unicode 文字値は、文字列クラスの 1 つもしくは 2 つの 16ビット <code>PRUnichar</code> を必要とします。 このエンコーディングは現在頻繁には使われません。しかし、より新しい unicode 標準が採用されるにつれて、きっと増えるでしょう。 UTF16 は unicode 文字セット全体を表現する能力があり、効率よく UTF32 へマップします。</li>
+</ul>
+
+<p>加えて、国際化ライブラリによって提供される文字通り何百のエンコーディングがあります。 これらのライブラリへのアクセスは、アプリケーションの一部であるか(例えば Mozilla の <code>nsICharsetConversionManager</code> のように)、オペレーティングシステムへビルドされている(例えば Unix 系 OS の <code>iconv()</code> のように)でしょう。</p>
+
+<p>既存のコードで作業する時、正しい変換機構を決定するために、操作している文字列の現在の使い方を吟味することは重要です。</p>
+
+<p>新しいコードを書く時、どの格納クラスそしてエンコーディングがもっとも適切かを知ろうとしても混乱するかもしれません。この問題への単純な答えはありません。しかし、少数の重要なガイドラインがあります:</p>
+
+<ul>
+ <li><strong>文字列はいつも ASCII ?</strong> 最初の、そして最大のもので、どの種類の値が文字列に格納されているかを決めることが必要です。文字列がいつでも内部の ASCII 文字列、例えば「left」、「true」、「background」などであれば、そのままの C-文字列がたぶん選ぶべきものです。</li>
+ <li><strong>文字列が ASCII であれば、ASCII でない文字列と比較・代入・さもなければ相互作用しますか?</strong> 8 ビット ASCII 値を 16 ビット UCS2 文字列と代入もしくは比較するとき、実行時に「膨らませる」必要があります。 もし、文字列が十分に小さい(そう、 64 バイトより小さい)ならば、余計な変換を避けるために 16 ビット unicode クラスにも文字列を格納する、というのも手です。そのかわり、ASCII 文字列が、8 ビット文字列だった場合に比べて 2 倍のスペース、つまり 16 ビット unicode 文字列と同じスペースを占める、という欠点があります。</li>
+ <li><strong>文字列はたいてい ASCII であるけれど、unicode をサポートしなくていいのでしょうか?</strong> 文字列はほとんど大抵 ASCII であるけれど、unicode 値も格納する必要があるのなら、UTF8 は正しいエンコーディングだ。 ASCII 値は 8 ビットのまま格納され、拡張 unicode 値は 2 〜 6 バイトで格納されるでしょう。 しかし、もし文字列が unicode 値との比較や代入までも必要とするのなら、実行時変換が必要となるでしょう。</li>
+ <li><strong>ASCII でない大きな文字列データを格納しますか?</strong> ここに至るまでは、 UTF8 は理想的な文字列に見えます。 欠点は、西欧以外の文字のほとんど(例えば日本語文字)を使う場合に、UTF8 は「ふくれ気味な」エンコーディングです。 UTF-8 では、日本語文字列は大抵一文字あたり 3 バイト必要です。 UCS2 では、一文字が 2 バイトであるのと比べて、日本語テキストにおいて UTF-8 は相当に多くのサイズを消費します。</li>
+ <li><strong>unicode 文字列のコンテントを処理する必要がありますか?</strong> UTF8 やその他の 8 ビット格納形式で unicode 値をエンコーディングすることの一つの問題点は、実際も unicode 値も文字列の中で複数バイトにわたることです。 ほとんどのエンコーディングでは、実際のバイト数は文字から文字へで異なります。 それぞれの文字を通して反復処理する必要があるときには、エンコーディングを考慮する必要があります。 UCS2 文字列で反復処理するなら、これは非常に簡易です。なぜなら、どの 16 ビット PRUnichar も、unicode 値と対応するからです。</li>
+</ul>
+
+<p>ASCII、UTF8、UCS2 の変換を助けるため、 いくつかのヘルパーメソッドとヘルパークラスがあります。 これらのクラスのうちいくつかは、スタック上の一時オブジェクトとしてもっともよく使われるため、関数のように見えます。</p>
+
+<p>To assist with ASCII, UT8 and UCS2 conversions, there are some helper methods and classes. Some of these classes look like functions, becuase they are most often used as temporary objects on the stack.</p>
+
+<h4 id="UTF8_.2F_UCS2_.E5.A4.89.E6.8F.9B" name="UTF8_.2F_UCS2_.E5.A4.89.E6.8F.9B">UTF8 / UCS2 変換</h4>
+
+<ul>
+ <li><code class="decl">NS_ConvertUTF8toUCS2(<em>const nsACString&amp;</em>)</code> - UTF-8 エンコードされた nsACString もしくは <code>const char*</code> を UCS2 string に変換する nsAutoString のサブクラス。もし、代わりに <code>const PRUnichar*</code> バッファが必要なら、.get() メソッドを使ってください。例:</li>
+</ul>
+
+<pre class="eval">/* シグネチャ: void HandleUnicodeString(const nsAString&amp; str); */
+object-&gt;HandleUnicodeString(<strong>NS_ConvertUTF8toUCS2</strong>(utf8String));
+</pre>
+
+<pre class="eval">/* シグネチャ: void HandleUnicodeBuffer(const PRUnichar* str); */
+object-&gt;HandleUnicodeBuffer(<strong>NS_ConvertUTF8toUCS2</strong>(utf8String).get())
+
+</pre>
+
+<ul>
+ <li><code class="decl">NS_ConvertUCS2toUTF8(<em>const nsAString&amp;</em>)</code> - UTF8 エンコードされた nsAString を UTF8 された文字列に変換する nsAFlatCString。上記同様に、<code>const char*</code> へアクセスするときは、.get() を使ってください。</li>
+ <li><code class="decl">NS_ConvertUCS2toUTF8(<em>const nsAString&amp;</em>)</code> - UCS2 エンコードされた nsAString を UTF-8 エンコードされた string へ変換する nsCAutoString。 上記項目と同様に、<code>const char*</code> にアクセスするために .get() を使うことが出来ます。</li>
+</ul>
+
+<pre class="eval">/* シグネチャ: void HandleUTF8String(const nsACString&amp; str); */
+object-&gt;HandleUTF8String(NS_ConvertUCS2toUTF8(unicodeString));
+</pre>
+
+<pre class="eval">/* シグネチャ: void HandleUTF8Buffer(const char* str); */
+object-&gt;HandleUTF8Buffer(NS_ConvertUCS2toUTF8(unicodeString).get())
+</pre>
+
+<ul>
+ <li><code class="decl">CopyUTF8toUCS2(<em>const nsACString&amp;, const nsAString&amp;</em>)</code> - 変換と割り当てを行う。</li>
+</ul>
+
+<pre class="eval">// UCS2 値を返す
+void Foo::GetUnicodeValue(nsAString&amp; result) {
+ CopyUTF8toUCS2(mLocalUTF8Value, result);
+}
+</pre>
+
+<ul>
+ <li><code class="decl">CopyUCS2toUTF8(<em>const nsAString&amp;, const nsACString&amp;</em>)</code> - 変換と割り当てを行う。</li>
+</ul>
+
+<pre class="eval">// UTF8 値を返す
+void Foo::GetUTF8Value(nsACString&amp; result) {
+ CopyUCS2toUTF8(mLocalUnicodeValue, result);
+}
+</pre>
+
+<ul>
+ <li><code class="decl">ToNewUTF8String(<em>const nsAString&amp;</em>)</code> - 割り当てと変換を行う</li>
+</ul>
+
+<pre class="eval">void Foo::GetUTF8Value(const char** result) {
+ *result = ToNewUTF8String(mLocalUnicodeValue);
+}
+</pre>
+
+<p> </p>
+
+<h3 id=".E6.90.8D.E5.A4.B1.E3.81.AE.E5.A4.9A.E3.81.84.E5.A4.89.E6.8F.9B" name=".E6.90.8D.E5.A4.B1.E3.81.AE.E5.A4.9A.E3.81.84.E5.A4.89.E6.8F.9B">損失の多い変換</h3>
+
+<p>以下はオリジナル文字列が ASCII ベースであることが保証できるときだけ使われるべきです。</p>
+
+<h4 id="UCS2_.E3.81.8B.E3.82.89_ASCII_.E3.81.B8.E3.81.AE.E3.82.B3.E3.83.B3.E3.83.90.E3.83.BC.E3.82.BF" name="UCS2_.E3.81.8B.E3.82.89_ASCII_.E3.81.B8.E3.81.AE.E3.82.B3.E3.83.B3.E3.83.90.E3.83.BC.E3.82.BF">UCS2 から ASCII へのコンバータ</h4>
+
+<p>これらのコンバータ(変換機構)は、変換プロセスの中で<em><strong>情報の消失</strong></em>があるため<em><strong>とても危険</strong></em>です。<em><strong>UCS2 から ASCII への変換は、文字列が ASCII であることが保証されない限りさけるべきです</strong></em>。どの UCS2(16 ビット)文字も、8 ビット文字は単に 8 ビット文字にキャストされます。それは、0xFF を超えるすべての文字の値は任意の 8 ビット文字に変換されてしまうということです。</p>
+
+<ul>
+ <li><code class="decl">NS_LossyConvertUCS2toASCII(<em>nsAString</em>)</code> - string の圧縮した値を含む一時バッファを持つ nsCAutoString。</li>
+ <li><code class="decl">CopyUCS2toASCII(<em>nsAString</em>, <em>nsACString</em>)</code> - UCS2 から ASCII 文字列オブジェクトへコピーの変換をします。</li>
+ <li><code class="decl">ToNewCString(<em>nsAString</em>)</code> - 新しい <code>char*</code> 文字列を割り当てます。</li>
+</ul>
+
+<p> </p>
+
+<h4 id="ASCII_.E3.81.8B.E3.82.89_UCS2_.E3.81.B8.E3.81.AE.E3.82.B3.E3.83.B3.E3.83.90.E3.83.BC.E3.82.BF" name="ASCII_.E3.81.8B.E3.82.89_UCS2_.E3.81.B8.E3.81.AE.E3.82.B3.E3.83.B3.E3.83.90.E3.83.BC.E3.82.BF">ASCII から UCS2 へのコンバータ</h4>
+
+<p>これらは、<em>ASCII でない文字列を無意味な unicode 文字列に壊してしまう</em>ため、<em><strong>とても危険</strong></em>です。 <em><strong>ASCII から UCS2 への変換は、文字列が ASCII であることが保証されない限りさけるべきです</strong></em>。 つまり、もし複数バイト文字セットの 8 ビット文字列エンコードされたものを持っている場合、文字列のどのバイトもただキャストによって 16 バイト数値に"水増し"されるだけなのです。</p>
+
+<p>例えば、文字列の最初の unicode 文字が 4 バイトの UTF-8 シーケンスで表されているような UTF-8 文字列を想像してください。"水増しされた" unicode 文字列の最初の 4 バイトは最初の文字をあらわす 4 つの値を含んでいます。これらの値は文字列を UCS2 として扱うなら無意味です。</p>
+
+<ul>
+ <li><code class="decl">NS_ConvertASCIItoUCS2(<em>nsACString</em>)</code> - string の水増しした値を含む一時バッファを持つ nsCAutoString。</li>
+ <li><code class="decl">NS_ConvertASCIItoUCS2(<em>nsACString</em>)</code> - 水増しした文字列の値を含む一時バッファをもつ nsAFlatString。</li>
+ <li><code class="decl">CopyASCIItoUCS2(<em>nsACString</em>, <em>nsAString</em>)</code> - ある文字列から unicode 文字列オブジェクトへコピーの変換をします。</li>
+ <li><code class="decl">ToNewUnicode(<em>nsACString</em>)</code> - 水増しした値を含む新しい <code>PRUnichar*</code> 文字列を生成します。</li>
+</ul>
+
+<p> </p>
+
+<h2 id=".E5.85.B1.E9.80.9A.E3.83.91.E3.82.BF.E3.83.BC.E3.83.B3" name=".E5.85.B1.E9.80.9A.E3.83.91.E3.82.BF.E3.83.BC.E3.83.B3">共通パターン</h2>
+
+<p>多くの API は、呼び出し元に文字列を返すためのバッファを割り当てるメソッドとなります。 バッファを使い終えた時に呼び出し元が文字列を解放することを覚えている必要があるため、これはトリッキーでもあります。 幸運にも、<code>nsXPIDLString</code> クラスでこれを簡単に行えます。</p>
+
+<p><br>
+ メソッドはこのような感じです:</p>
+
+<pre class="eval">void GetValue(PRUnichar** aValue)
+{
+ *aValue = ToNewUnicode(foo);
+}
+</pre>
+
+<p>文字列クラスなしで、呼び出し元は文字列を解放する必要があるでしょう:</p>
+
+<pre class="eval">{
+ PRUnichar* val;
+ GetValue(&amp;val);
+
+ if (someCondition) {
+ // 値を解放することを忘れてはいけない
+ // don't forget to free the value!
+ nsMemory::Free(val);
+ return NS_ERROR_FAILURE;
+ }
+
+ ...
+ // 後で、やはり解放を忘れてはいけない!
+ // and later, still don't forget to free!
+ nsMemory::Free(val);
+}
+</pre>
+
+<p><code>nsXPIDLString</code> を使えば、このことを心配する必要はありません。 <code>getter_Copies()</code> を使って文字列クラスをラップするだけで、 スコープの外へ出た時にクラスがバッファを解放するでしょう。</p>
+
+<pre class="eval">{
+ nsXPIDLString val;
+ GetValue(getter_Copies(val));
+</pre>
+
+<pre class="eval"> // val はここで自身によって解放されるでしょう
+ // val will free itself here
+ if (someCondition)
+ return NS_ERROR_FAILURE;
+ ...
+ // 後で、やはり解放する必要がない
+ // and later, still nothing to free
+}
+</pre>
+
+<p>結果としてのコードはとても単純で、読みやすいです。</p>
+
+<p> </p>
+
+<h3 id=".E3.83.AA.E3.83.86.E3.83.A9.E3.83.AB.E6.96.87.E5.AD.97.E5.88.97" name=".E3.83.AA.E3.83.86.E3.83.A9.E3.83.AB.E6.96.87.E5.AD.97.E5.88.97">リテラル文字列</h3>
+
+<p><em>リテラル文字列</em>は C++ コードに書かれた生の文字列の値です。 例えば、<code>printf("Hello World\n");</code> ステートメント中の値 <code>"Hello World\n"</code> はリテラル文字列です。 nsAString や nsACString が必要なとき、リテラル文字列値を挿入する必要がしばしば発生します。 これら 4 つのマクロは必要な変換のために提供されています:</p>
+
+<ul>
+ <li><code class="decl">NS_LITERAL_CSTRING(<em>literal string</em>)</code> - 一時的 nsCString</li>
+ <li><code class="decl">NS_NAMED_LITERAL_CSTRING(<em>variable</em>,<em>literal string</em>);</code> - <em>variable</em> と名づけられた nsCString 変数を定義します</li>
+ <li><code class="decl">NS_LITERAL_STRING(<em>literal string</em>)</code> - Unicode 版<em>literal string</em>(リテラル文字列)を持つ一時 nsString</li>
+ <li><code class="decl">NS_NAMED_LITERAL_STRING(<em>variable</em>,<em>literal string</em>);</code> - Unicode 版 <em>literal string</em>(リテラル文字列)を持つ、名称 <em>variable</em> の nsString 変数を宣言する</li>
+</ul>
+
+<p>nsDependentCString もまた nsCString の中の文字列の値をラップすることを考えれば、これらのマクロの <code>CSTRING</code> 版は、一見不要に見えます。これらのマクロの長所は、これらの文字列の長さがコンパイル時に計算できるため、実行時に長さを決めるために文字列を読み込む必要がありません。</p>
+
+<p>これらのマクロの <code>STRING</code> 版は、(例えば、MSVC++ や -fshort-wchar オプション付きの GCC のように)リテラル unicode 文字列をサポートするプラットフォーム上での実行時の変換をしないで、unicode 版の固定のリテラル string を宣言する移植性のある方法を提供します。</p>
+
+<pre class="eval">// Init(const PRUnichar*) 呼び出し
+Init(L"start value"); // よくない - L"..." は移植性が低い!
+Init(NS_ConvertASCIItoUCS2("start value").get()); // よくない - 実行時の ASCII-&gt;UCS2 変換!
+
+// Init(const nsAString&amp;) 呼び出し
+Init(nsDependentString(L"start value")); // よくない - 移植性が低い!
+Init(NS_ConvertASCIItoUCS2("start value")); // よくない - 実行時の ASCII-&gt;UCS2 変換!
+
+// Init(const nsACString&amp;) 呼び出し
+Init(nsDependentCString("start value")); // よくない - 文字列長が実行時に決まる
+</pre>
+
+<p>適切な NS_LITERAL_[C]STRING 使用法を以下にいくつか示します。</p>
+
+<pre class="eval">// Init(const PRUnichar*) 呼び出し
+Init(NS_LITERAL_STRING("start value").get());
+
+// Init(const nsAString&amp;) 呼び出し
+Init(NS_LITERAL_STRING("start value"));
+
+// Init(const nsACString&amp;) 呼び出し
+Init(NS_LITERAL_CSTRING("start value"));
+</pre>
+
+<p><br>
+ これらのマクロを使った問題の追跡に役に立つであろう詳細をいくつか示します:</p>
+
+<p><code>NS_LITERAL_STRING</code> は(Windows や Macintosh などといった)いくつかのプラットフォーム上でコンパイル時に UCS2 への変換をしますが、他のプラットフォームでは実行時に変換されます。NS_LITERAL_STRING を使うことによって、あなたのコードで問題のプラットフォームのために最良の変換が使われることを保証します。</p>
+
+<p>いくつかのプラットフォームで実行時変換が行われるため、<code>NS_LITERAL_STRING/NS_NAMED_LITERAL_STRING</code> マクロ内部でのリテラル文字列連結の使用は、それらのプラットフォームではコンパイルされるでしょうが、コンパイル時変換をサポートするプラットフォーム上ではコンパイルできないでしょう。</p>
+
+<p>以下に例示します:</p>
+
+<p> </p>
+
+<pre class="eval">// Init(nsAString&amp;) 呼び出し
+Init(NS_LITERAL_STRING("start "
+ "value")); // いくつかのプラットフォームでだけコンパイルされます。
+</pre>
+
+<p>その理由は、いくつかのプラットフォームで<code>L"..."</code> 構文が使われますが、これは連結の最初の文字列にだけ適用されるためです(<code>"start "</code>)。コンパイラは unicode でない文字列 <code>"value"</code> との連結を試みると困惑します。</p>
+
+<h3 id=".E6.96.87.E5.AD.97.E5.88.97.E9.80.A3.E7.B5.90" name=".E6.96.87.E5.AD.97.E5.88.97.E9.80.A3.E7.B5.90">文字列連結</h3>
+
+<p>文字列は <code>+</code> 演算子を用いて互いに連結可能です。結果となる文字列は <code>const nsAString</code> オブジェクトとなります。 結果となる文字列は、その他の <code>nsAString</code> のように振る舞いをさせることも参照もできます。 連結は<em>部分文字列のコピーではありません</em>。代わりに、オリジナルの文字列を参照するに過ぎません。 結果としての文字列は、少なくとも連結された文字列と同じだけの生存期間を持つという意味で、その部分文字列のすべてに依存します。</p>
+
+<p>例えば、二つの文字列の値を使うことができ、接続を <code>const nsAString&amp;</code> をとる他の関数に引き渡すことができます:</p>
+
+<pre class="eval">void HandleTwoStrings(const nsAString&amp; one, const nsAString&amp; two) {
+ // HandleString(const nsAString&amp;) 呼び出し
+ HandleString(one + two);
+}
+</pre>
+
+<p>注意:このケースでは、二つの文字列は暗黙のうちに一時的な nsString に結びつけられ、 一時的 string は、<code>HandleString</code> に渡されます。 もし、<code>HandleString</code> がその入力を他の nsString へ代入したならば、 いくつかの文字列を連結し、その結果を一時変数に格納することもできます:</p>
+
+<pre class="eval">NS_NAMED_LITERAL_STRING(start, "start ");
+NS_NAMED_LITERAL_STRING(middle, "middle ");
+NS_NAMED_LITERAL_STRING(end, "end");
+// 3つの相互依存した断片を持つ string を生成 - 複雑なコピーではない!
+nsString combinedString = start + middle + end;
+</pre>
+
+<p> </p>
+
+<pre class="eval">// void HandleString(const nsAString&amp;); 呼び出し
+HandleString(combinedString);
+</pre>
+
+<p>もし、一度きりだけ使う一時的なものを作るために <code>NS_LITERAL_STRING</code> を使うのなら、 結合の中で定義するのが安全でしょう。なぜなら、文字列バッファは(<code>nsSubstringTuple</code> 型の)一時的結合オブジェクトと同じ生存期間となるからです。</p>
+
+<pre class="eval">// HandlePage(const nsAString&amp;); 呼び出し
+// 結合された文字列はその部分文字列と同じ生存期間なので安全
+HandlePage(NS_LITERAL_STRING("start ") + NS_LITERAL_STRING("end"));
+</pre>
+
+<h3 id=".E3.83.AD.E3.83.BC.E3.82.AB.E3.83.AB.E5.A4.89.E6.95.B0" name=".E3.83.AD.E3.83.BC.E3.82.AB.E3.83.AB.E5.A4.89.E6.95.B0">ローカル変数</h3>
+
+<p>関数内のローカル変数は通常、スタック上に確保されます。 <code>nsAutoString</code>/<code>nsCAutoString</code> クラスは、 <code>nsString</code>/<code>nsCString</code> の派生物です。 これらが、文字列自身と同じ格納領域に割り当てられた 64 文字のバッファを持ちます。 もし、nsAutoString がスタック上に割り当てられていれば、文字列は破棄時に 64 文字スタックバッファ持ちます。 They own a 64-character buffer allocated in the same storage space as the string itself. If the nsAutoString is allocated on the stack, then it has at its disposal a 64-character stack buffer. このことにより、小さな文字列を扱う時、余計なメモリの割り当てをしないで実装することができます。</p>
+
+<pre class="eval">...
+nsAutoString value;
+GetValue(value); // 結果が 64 文字より少なければ、
+ // 割り当てを省くことができる。
+GetValue(value); // if the result is less than 64 characters,
+ // then this just saved us an allocation
+...
+</pre>
+
+<h3 id=".E3.83.A1.E3.83.B3.E3.83.90.E5.A4.89.E6.95.B0" name=".E3.83.A1.E3.83.B3.E3.83.90.E5.A4.89.E6.95.B0">メンバ変数</h3>
+
+<p>一般に、メンバ変数としては、<code>nsString</code> や <code>nsCString</code> といった具象クラスを使うべきでしょう。</p>
+
+<pre class="eval">class Foo {
+ ...
+ // これらは UTF8 や unicode 値を各々格納する
+ // these store UTF8 and Unicode values respectively
+ nsCString mLocalName;
+ nsString mTitle;
+};
+</pre>
+
+<p>文字列は直接クラスの中で宣言され、文字列へのポインタとして宣言されるのではないことに注意してください。 このようにはしないでください:</p>
+
+<p>Note that the strings are declared directly in the class, not as pointers to strings. Don't do this:</p>
+
+<pre class="eval">class Foo {
+public:
+ Foo() { mLocalName = new nsCString(); }
+ ~Foo() { delete mLocalName; }
+
+private:
+ // これらは UTF8 や unicode 値を各々格納する
+ // these store UTF8 and Unicode values respectively
+ nsCString* mLocalName;
+};
+</pre>
+
+<p>上記のコードは文字列オブジェクトのコストを節約しているように見えるかもしれませんが、 <code>nsString</code>/<code>nsCString</code> は小さなオブジェクトです。 割り当てのオーバーヘッドは、ポインタで節約するよりも数バイト勝っているだけです。</p>
+
+<p><br>
+ その他の間違ったパターンとしては、メンバ変数として、 <code>nsAutoString</code>/<code>nsCAutoString</code> を使うというものがあります。 <a href="#Local_Variables">ローカル変数</a>で述べたように、 これらのクラスはとても大きなバッファを中にもって作られます。 もしクラスの中にこれらを持つことは、クラスを 64 バイト(<code>nsCAutoString</code>)もしくは 128 バイト(<code>nsAutoString</code>)膨らませることになります。</p>
+
+<p><br>
+ 例:</p>
+
+<pre class="eval">class Foo {
+ ...
+
+ // Foo クラスが 128 バイト膨らむ!
+ // bloats 'Foo' by 128 bytes!
+ nsAutoString mLocalName;
+};
+</pre>
+
+<p> </p>
+
+<h3 id=".E7.94.9F.E3.81.AE.E6.96.87.E5.AD.97.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF" name=".E7.94.9F.E3.81.AE.E6.96.87.E5.AD.97.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF">生の文字ポインタ</h3>
+
+<p><code>PromiseFlatString()</code> は、元になった文字列と同じ値を含む null 終端のバッファを持つ一時バッファを生成するのに使うことができます。 <code>PromiseFlatString()</code> は必要ならば一時バッファを作ります。 これは多くの場合、nsAString を null 終端文字列を要求する API に通すために使われます。</p>
+
+<p>以下の例では、nsAString はリテラル文字列と一体化されます。そして結果は単純な文字バッファを求める API に通されます。</p>
+
+<pre class="eval">// URL を修正し、AddPage(const PRUnichar* url) へ通す
+void AddModifiedPage(const nsAString&amp; url) {
+ NS_NAMED_LITERAL_STRING(httpPrefix, "<a class="external" href="http://" rel="freelink">http://</a>");
+ const nsAString&amp; modifiedURL = httpPrefix + url;
+
+ // 一時バッファ生成
+ AddPage(PromiseFlatString(modifiedURL).get());
+}
+</pre>
+
+<p>既に null 終端である文字列を扱うとき、<code>PromiseFlatString()</code> は洗練された方法です。 そのようなケースで一時バッファを作らなくてすみます。</p>
+
+<p> </p>
+
+<pre class="eval">// URL を修正し、AddPage(const PRUnichar* url) へ通す
+void AddModifiedPage(const nsAString&amp; url, PRBool addPrefix) {
+ if (addPrefix) {
+ // 一時バッファを作成<strong>なければならない</strong> - 文字列は複数の断片でできている
+ NS_NAMED_LITERAL_STRING(httpPrefix, "<a class="external" href="http://" rel="freelink">http://</a>");
+ AddPage(PromiseFlatString(httpPrefix + modifiedURL));
+ } else {
+ // 一時バッファを作成<strong>してもよい</strong>、実行時にチェックする
+ AddPage(PromiseFlatString(url).get());
+ }
+}
+</pre>
+
+<p> </p>
+
+<h2 id="IDL" name="IDL">IDL</h2>
+
+<p>文字列ライブラリは IDL を通しても利用できます。 特別に IDL 型を定義することによって属性やメソッドを宣言することで、 string クラスは対応メソッドへの引数として使えます。</p>
+
+<p> </p>
+
+<h3 id="IDL_.E6.96.87.E5.AD.97.E5.88.97.E5.9E.8B" name="IDL_.E6.96.87.E5.AD.97.E5.88.97.E5.9E.8B">IDL 文字列型</h3>
+
+<p>C++ シグネチャにより、メソッドのすべての引数が<a href="#Abstract_Classes">抽象クラス</a>をベースにしているようなのような上述通りの抽象型を定義することができます。 以下のテーブルには IDL のそれぞれの文字列型の目的を記します。</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th class="header">IDL type</th>
+ <th class="header">C++ Type</th>
+ <th class="header">Purpose</th>
+ </tr>
+ <tr>
+ <td><code>string</code></td>
+ <td><code>char*</code></td>
+ <td>Raw character pointer to ASCII (7-bit) string, no string classes used. High bit is not guaranteed across XPConnect boundaries</td>
+ </tr>
+ <tr>
+ <td><code>wstring</code></td>
+ <td><code>PRUnichar*</code></td>
+ <td>Raw character pointer to UTF-16 string, no string classes used</td>
+ </tr>
+ <tr>
+ <td><code>AString</code></td>
+ <td><code>nsAString</code></td>
+ <td>UTF-16 string</td>
+ </tr>
+ <tr>
+ <td><code>ACString</code></td>
+ <td><code>nsACString</code></td>
+ <td>8-bit string, all bits are preserved across XPConnect boundaries</td>
+ </tr>
+ <tr>
+ <td><code>AUTF8String</code></td>
+ <td><code>nsACString</code></td>
+ <td>UTF-8 string - converted to UTF-16 as necessary when value is used across XPConnect boundaries</td>
+ </tr>
+ <tr>
+ <td><code>DOMString</code></td>
+ <td><code>nsAString</code></td>
+ <td>UTF-16 string used in the DOM. More or less the same as <code>AString</code>, but in JavaScript it has no distinction between whether the string is void or just empty. (not sure on this, looking for corrections.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="C.2B.2B_.E3.82.B7.E3.82.B0.E3.83.8D.E3.83.81.E3.83.A3" name="C.2B.2B_.E3.82.B7.E3.82.B0.E3.83.8D.E3.83.81.E3.83.A3">C++ シグネチャ</h3>
+
+<p>IDL では、<code>in</code> 引数は読み込み専用で、*String 引数に対する C++ シグネチャにより、それらの引数のための <code>const nsAString&amp;</code> を使った上記ガイドラインが行えます。 <code>out</code> と <code>inout</code> 引数は、呼ばれた側で書き込み可能なよう単純に <code>nsAString</code> として定義されています。</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th class="header">IDL</th>
+ <th class="header">C++</th>
+ </tr>
+ <tr>
+ <td>
+ <pre class="eval">
+interface nsIFoo : nsISupports {
+
+ attribute AString utf16String;
+
+
+
+
+ AUTF8String getValue(in ACString key);
+
+};
+</pre>
+ </td>
+ <td>
+ <pre class="eval">
+class nsIFoo : public nsISupports {
+
+ NS_IMETHOD GetUtf16String(nsAString&amp;
+ aResult) = 0;
+ NS_IMETHOD SetUtf16String(const nsAString&amp;
+ aValue) = 0;
+
+ NS_IMETHOD GetValue(const nsACString&amp; aKey,
+ nsACString&amp; aResult) = 0;
+};
+</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>上記の例では、<code>unicodeString</code> は Unicode 文字列として扱われています。 <code>GetUnicodeString()</code> のインプリメントでは <code>aResult.Assign</code> を値を返す("return"する)のに使っています。 <code>SetUnicodeString()</code> では、文字列の値は<a href="#Iterators">イテレータ</a>、<a href="#Raw_Pointers"><code>PromiseFlatString</code></a>、その他の文字列への代入などを含む雑多なメソッドを通して使うことができます。</p>
+
+<p><code>GetValue()</code> では、最初の引数である <code>aKey</code> は、生の 8 ビット 値の連続として扱われます。 <code>aKey</code> 内の ASCII でないどの文字列も、XPConnect 境界を越えた場合も内容が保証されます。 <code>GetValue()</code> のインプリメンテーションは UTF-8 エンコードされた 8 ビット文字列の aResult への代入となっています。 もし、このメソッドがスクリプトからの呼び出しなどによって XPConnect の境界を越えて呼ばれたとき、結果は UTF-8 から UCS2へデコードされ、Unicode 値として利用されます。</p>
+
+<h3 id=".E6.96.87.E5.AD.97.E5.88.97.E5.9E.8B.E3.81.AE.E9.81.B8.E6.8A.9E" name=".E6.96.87.E5.AD.97.E5.88.97.E5.9E.8B.E3.81.AE.E9.81.B8.E6.8A.9E">文字列型の選択</h3>
+
+<p>IDL で使う正しい文字列型を決めるのは難しいかもしれません。 以下の点は適切な文字列型を決める助けになるでしょう。</p>
+
+<ul>
+ <li>文字列クラスを用いることは、<code>out</code> 引数へ新規にメモリ割当をすることを防ぐでしょう。 例えば、もし呼び出し側が <code>nsAutoString</code> を <code>out</code> 引数のための値を受け取るのに使っている場合、(C++ 内で単純に <code>nsAString</code> として定義されている)短い(64 文字以下の)値の <code>out</code> 引数への代入は <code>nsAutoString</code> のバッファへの値のコピーに過ぎません。 それ以上に、文字列クラスを使うことで、文字列バッファを共有することができます。 多くの場合、ある文字列オブジェクトから別の文字列オブジェクトへ代入することにより、参照のカウントを単に増やすことを優先してコピーを避けることが出来ます。</li>
+ <li>文字列クラスを使った <code>in</code> 文字列は、しばしば長さを事前に計算します。これはパフォーマンス上のメリットとなるでしょう。</li>
+ <li>生の文字バッファが必要とされる場所では、<code>string</code> と <code>wstring</code> は <code>PromiseFlatString</code> よりも高速なアクセスを提供します。</li>
+ <li><code>AUTF8String</code> で定義された UTF-8 文字列は、XPConnect 境界を越えるとき、デコードされる必要があるでしょう。 これはパフォーマンスに打撃を与えます。一方で、 UTF-8 文字列は共通で用いられる ASCII 文字列では省スペースしか占有しません。</li>
+ <li><code>wstring</code> や <code>AString</code> で定義された Unicode 文字列は、Unicode 値が必要とされるときは、速いです。 しかし、もし値によりしばしば ASCII が使われるなら、下敷きとなった文字列の格納スペースの半分は無駄になります。</li>
+</ul>
+
+<h2 id=".E4.BB.98.E9.8C.B2_A_.E3.81.A9.E3.81.AE.E3.82.AF.E3.83.A9.E3.82.B9.E3.82.92.E3.81.84.E3.81.A4.E4.BD.BF.E3.81.86.E3.81.8B" name=".E4.BB.98.E9.8C.B2_A:_.E3.81.A9.E3.81.AE.E3.82.AF.E3.83.A9.E3.82.B9.E3.82.92.E3.81.84.E3.81.A4.E4.BD.BF.E3.81.86.E3.81.8B">付録 A: どのクラスをいつ使うか</h2>
+
+<p>この表はどのクラスをいつ使うべきかを示すクィックリファレンスです。</p>
+
+<table class="alternate data">
+ <tbody>
+ <tr>
+ <th>内容</th>
+ <th>クラス</th>
+ <th>メモ</th>
+ </tr>
+ <tr class="even">
+ <td>ローカル変数</td>
+ <td><code>nsAutoString</code><code>nsCAutoString</code></td>
+ <td> </td>
+ </tr>
+ <tr class="odd">
+ <td>クラスのメンバ変数</td>
+ <td><code>nsString</code><code>nsCString</code></td>
+ <td> </td>
+ </tr>
+ <tr class="even">
+ <td>メソッドの引数の型</td>
+ <td><code>nsAString</code><code>nsACString</code></td>
+ <td>引数に抽象クラスを使う。入力引数には <code>const nsAString&amp;</code> を使い、出力引数には <code>nsAString&amp;</code> を使う。</td>
+ </tr>
+ <tr class="odd">
+ <td>出力文字列を回収するRetrieving "out" string/wstrings</td>
+ <td><code>nsXPIDLString</code><code>nsXPIDLCString</code></td>
+ <td><code>getter_Copies()</code> を使う。<code>nsString</code> / <code>nsCString</code> と似ている。</td>
+ </tr>
+ <tr class="even">
+ <td>文字バッファをラップするbuffers</td>
+ <td><code>nsDependentString</code><code>nsDependentCString</code></td>
+ <td><code>const char*</code> / <code>const PRUnichar*</code> バッファをラップする。</td>
+ </tr>
+ <tr class="odd">
+ <td>リテラル文字列</td>
+ <td><code>NS_LITERAL_STRING</code><code>NS_LITERAL_CSTRING</code></td>
+ <td>nsDependent[C]String と似ているが、ビルド時に長さが事前計算される。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id=".E4.BB.98.E9.8C.B2_B_nsAString_.E3.83.AA.E3.83.95.E3.82.A1.E3.83.AC.E3.83.B3.E3.82.B9.3D" name=".E4.BB.98.E9.8C.B2_B:_nsAString_.E3.83.AA.E3.83.95.E3.82.A1.E3.83.AC.E3.83.B3.E3.82.B9.3D">付録 B: nsAString リファレンス=</h2>
+
+<p>読み込み専用メソッド</p>
+
+<ul>
+ <li><strong>Length()</strong></li>
+ <li><strong>IsEmpty()</strong></li>
+ <li><strong>IsVoid()</strong></li>
+ <li><strong>BeginReading(<em>iterator</em>)</strong></li>
+ <li><strong>EndReading(<em>iterator</em>)</strong></li>
+ <li><strong>Equals(<em>string</em>[,<em>comparator</em>])</strong></li>
+ <li><strong>First()</strong></li>
+ <li><strong>Last()</strong></li>
+ <li><strong>CountChar()</strong></li>
+ <li><strong>Left(<em>outstring</em>, <em>length</em>)</strong></li>
+ <li><strong>Mid(<em>outstring</em>, <em>position</em>, <em>length</em>)</strong></li>
+ <li><strong>Right(<em>outstring</em>, <em>length</em>)</strong></li>
+ <li><strong>FindChar(<em>character</em>)</strong></li>
+</ul>
+
+<p>文字列を修正するメソッド</p>
+
+<ul>
+ <li><strong>Assign(<em>string</em>)</strong></li>
+ <li><strong>Append(<em>string</em>)</strong></li>
+ <li><strong>Insert(<em>string</em>)</strong></li>
+ <li><strong>Cut(<em>start</em>, <em>length</em>)</strong></li>
+ <li><strong>Replace(<em>start</em>, <em>length</em>, <em>string</em>)</strong></li>
+ <li><strong>Truncate(<em>length</em>)</strong></li>
+ <li><strong>SetIsVoid(<em>state</em>)</strong></li>
+ <li><strong>BeginWriting(<em>iterator</em>)</strong></li>
+ <li><strong>EndWriting(<em>iterator</em>)</strong></li>
+ <li><strong>SetCapacity()</strong></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/guide/xpcom_hashtable_guide/index.html b/files/ja/mozilla/tech/xpcom/guide/xpcom_hashtable_guide/index.html
new file mode 100644
index 0000000000..9d2c618917
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/guide/xpcom_hashtable_guide/index.html
@@ -0,0 +1,297 @@
+---
+title: XPCOM ハッシュテーブル・ガイド
+slug: Mozilla/Tech/XPCOM/Guide/XPCOM_hashtable_guide
+translation_of: Mozilla/Tech/XPCOM/Guide/Hashtables
+---
+<h2 id="What_Is_a_Hashtable.3F" name="What_Is_a_Hashtable.3F">ハッシュテーブルとは何ですか?</h2>
+
+<p>ハッシュテーブルは、<strong>アイテム</strong>を格納するための構造体です。個々のアイテムは、それぞれを識別するための<strong>キー</strong>を持ちます。ハッシュテーブルからアイテムを検索・追加・削除するためにはキーを使います。ハッシュテーブルは<a href="/ja/XPCOM_array_guide" title="https://developer.mozilla.org/ja/XPCOM_array_guide">配列</a>に似ていますが、以下に示すような大きな違いがあります。</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th> </th>
+ <th class="header">配列</th>
+ <th class="header">ハッシュテーブル</th>
+ </tr>
+ <tr>
+ <td class="header">キー:</td>
+ <td><em>整数。</em>配列ではキーとして常に整数が利用され、またキーは連続している必要があります。</td>
+ <td><em>任意の型。</em>文字列、整数、 XPCOM インターフェースのポインタ、 IID を含む、ほとんどすべてのデータ型がキーとして利用できます。また、キーは連続している必要はありません(たとえば 1, 5, 3000 を利用できます)。</td>
+ </tr>
+ <tr>
+ <td class="header">検索にかかる時間:</td>
+ <td><em>O(1)。</em>検索時間は定数時間です。</td>
+ <td><em>O(1)。</em>検索時間は一般に定数時間ですが、配列よりも定数時間だけ長くかかる可能性があります。</td>
+ </tr>
+ <tr>
+ <td class="header">ソート:</td>
+ <td><em>ソートされています。</em>アイテムはソートされて保管されます。また、ソートされた順序で列挙されます。</td>
+ <td><em>ソートされていません。</em>アイテムはソートされずに保管されます。また、ソートされずに列挙されます。</td>
+ </tr>
+ <tr>
+ <td class="header">追加・削除:</td>
+ <td><em>O(n)。</em>大きな配列へのアイテムの追加・削除は時間がかかる可能性があります。</td>
+ <td><em>O(1)。</em>ハッシュテーブルへのアイテムの追加・削除は高速に行われます。</td>
+ </tr>
+ <tr>
+ <td class="header">余計に消費される領域:</td>
+ <td><em>なし。</em>配列は中が詰まった構造体であり、アイテムのサイズ以上に消費される領域はありません。</td>
+ <td><em>あり。</em>ハッシュテーブルは中が詰まった構造体ではありません。実装によりますが、大量のメモリが無駄に消費される可能性があります。</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>実装としては、ハッシュテーブルはキーを渡されるとそのキーに数学的な<strong>ハッシュ関数</strong>を適用してキーを<strong>乱数化</strong>します。以後、キーのハッシュ値がアイテムの場所の検索に利用されます。優れたハッシュテーブルの実装は、メモリが余計に必要になったとき、または多すぎる量のメモリが割り当てられているとき、自動的にハッシュテーブルのサイズを変更します。</p>
+
+<h2 id="When_Should_I_Use_a_Hashtable.3F" name="When_Should_I_Use_a_Hashtable.3F">どんなときにハッシュテーブルを使うべきですか?</h2>
+
+<p>ハッシュテーブルは以下のような場合に有用です。</p>
+
+<ul>
+ <li>高速なランダムアクセスが必要なデータのセット</li>
+ <li>非整数のキー、連続しない整数のキーを持ったデータ</li>
+ <li>アイテムの追加・削除が大量に発生するデータ</li>
+</ul>
+
+<p>以下のような場合、ハッシュテーブルは利用されるべきでは<em>ありません</em>。</p>
+
+<ul>
+ <li>データのセットがソートされている必要がある場合</li>
+ <li>アイテムの数が非常に少ない場合(おおむね12-16個未満)</li>
+ <li>ランダムアクセスを必要としないデータ</li>
+</ul>
+
+<p>このような状況では、配列、連結リスト、様々な木構造などが効果的です。</p>
+
+<h2 id="Mozilla.27s_Hashtable_Implementations" name="Mozilla.27s_Hashtable_Implementations">Mozilla のハッシュテーブル実装</h2>
+
+<p>Mozilla ではいくつかのハッシュテーブルの実装を用意しています。これらはテスト・調整されており、また実装にかかわる内部の複雑さが隠蔽されています。</p>
+
+<ul>
+ <li><code><a href="#PLDHash_.28JSDHash.29">PLDHash</a></code> - C の低レベルAPI。キーとデータを単独の大きな構造体としてメモリ上に格納します。ヒープ領域を効果的に利用します。利用者は「エントリークラス」(訳注:保管するアイテムを表すクラス・構造体)を宣言する必要があります。 また、アイテムへのポインタを別に持っておくことはできません。</li>
+ <li><code><a href="#PLHashTable">PLHashTable</a></code> - C の低レベルAPI。エントリークラスへのポインタは変化しません。大きな構造体を利用する場合は効果的です。細かなヒープ領域を大量に確保する結果、メモリを無駄に使用することがよくあります。</li>
+ <li><code><a href="#nsTHashtable">nsTHashtable</a></code> - <code>低レベル C++ による</code><code> PLDHash の</code>ラッパです。コールバック関数を生成し、ほとんどのキャストを自動的に行います。利用者はキーとデータを保持するエントリークラスを自分で用意します。</li>
+ <li><code><a href="#nsBaseHashtable_and_friends:_nsDataHashtable.2C_nsInterfaceHashtable.2C_and_nsClassHashtable">nsDataHashtable/nsInterfaceHashtable/nsClassHashtable</a></code> - 高レベル C++ による <code>PLDHash のラッパです。</code>単純なキー型・データ型を利用する一般的な使い方をする場合は簡単に利用できます。 利用者はエントリークラスを宣言・使用する必要がありません。 <code><strong>nsDataHashtable</strong></code> 型は <code>PRUint32</code> のようなスカラー値を扱います。 <code><strong>nsInterfaceHashtable</strong></code> 型はインタフェースを、 <code><strong>nsClassHashtable</strong></code> 型はクラスへのポインタ型を扱います。</li>
+</ul>
+
+<h3 id="Which_Hashtable_Should_I_Use.3F" name="Which_Hashtable_Should_I_Use.3F">どのハッシュテーブルを使えば良いですか?</h3>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th class="header" colspan="2" rowspan="2"> </th>
+ <th class="header" colspan="5">キーの型:</th>
+ </tr>
+ <tr>
+ <th class="header">integer</th>
+ <th class="header">String/CString</th>
+ <th class="header">nsID</th>
+ <th class="header">nsISupports*</th>
+ <th class="header">Complex</th>
+ </tr>
+ <tr>
+ <td class="header" rowspan="8">データ型:</td>
+ <td class="header">None (Hash Set)</td>
+ <td><code>nsInt32HashSet</code></td>
+ <td><code>ns(C)StringHashSet</code></td>
+ <td colspan="3"><code>nsTHashtable&lt;...&gt;</code></td>
+ </tr>
+ <tr>
+ <td class="header" rowspan="2">Simple (PRUint32)</td>
+ <td colspan="4"><code>nsDataHashtable</code></td>
+ <td rowspan="6"><code>nsTHashtable&lt;...&gt;</code></td>
+ </tr>
+ <tr>
+ <td><code>&lt;nsUint32HashKey,<br>
+ PRUint32&gt;</code></td>
+ <td><code>&lt;ns(C)StringHashKey,<br>
+ PRUint32&gt;</code></td>
+ <td><code>&lt;nsIDHashKey,<br>
+ PRUint32&gt;</code></td>
+ <td><code>&lt;nsISupportsHashKey,<br>
+ PRUint32&gt;</code></td>
+ </tr>
+ <tr>
+ <td class="header" rowspan="2">Interface (nsISupports)</td>
+ <td colspan="4"><code>nsInterfaceHashtable</code></td>
+ </tr>
+ <tr>
+ <td><code>&lt;nsUint32HashKey,<br>
+ nsISupports&gt;</code></td>
+ <td><code>&lt;ns(C)StringHashKey,<br>
+ nsISupports&gt;</code></td>
+ <td><code>&lt;nsIDHashKey,<br>
+ nsISupports&gt;</code></td>
+ <td><code>&lt;nsISupportsHashKey,<br>
+ nsISupports&gt;</code></td>
+ </tr>
+ <tr>
+ <td class="header" rowspan="2">Class (nsString*)</td>
+ <td colspan="4"><code>nsClassHashtable</code></td>
+ </tr>
+ <tr>
+ <td><code>&lt;nsUint32HashKey,<br>
+ nsString&gt;</code></td>
+ <td><code>&lt;ns(C)StringHashKey,<br>
+ nsString&gt;</code></td>
+ <td><code>&lt;nsIDHashKey,<br>
+ nsString&gt;</code></td>
+ <td><code>&lt;nsISupportsHashKey,<br>
+ nsString&gt;</code></td>
+ </tr>
+ <tr>
+ <td class="header">Complex<br>
+ (structures, etc.)</td>
+ <td colspan="5"><code>nsTHashtable&lt;...&gt;</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="PLDHash_.28JSDHash.29" name="PLDHash_.28JSDHash.29">PLDHash (JSDHash)</h3>
+
+<p><code>PLDHash</code> <span style="font-family: monospace;">と</span><code> JSDHash</code> は同じものです。 <code>PLDHash は</code> XPCOM ライブラリから、 <code>JSDHash は</code> JavaScript のライブラリからリンクされています。 <code>JSDHash</code> は SpiderMonkey の JavaScript エンジンで広く利用されています。</p>
+
+<p><code>PLDHash</code> は C で書かれた低レベルな実装です。非常に柔軟ですが、 <code>PLDHash</code> を理解し、利用するためには多少の時間がかかります。基本的なガイドはここにありますが、 <code>PLDHash を利用するつもりであれば、 </code><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/pldhash.h" rel="custom">xpcom/glue/pldhash.h</a></code> のほとんどを読む必要があります。 C++ のコードから利用する場合、キャストにかかわるエラーの可能性を容易に避けられるため、 C++ によるラッパ(後述)の方がずっと易しく、また安全です。</p>
+
+<p>利用者はまず <a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/pldhash.h#81" rel="custom">&lt;code&gt;PLDHashEntryHdr&lt;/code&gt;</a> から派生する<strong>エントリー構造体</strong>を宣言する必要があります。エントリー構造体はハッシュテーブルに格納するデータ(任意のポインタ、固定長のデータ型)を持ちます。<strong>ノート:</strong> double-hashing 実装のため、ハッシュテーブルの内容が変更された際、エントリーはメモリ上で移動される可能性があります。エントリーへのポインタを定数としたい場合は、 <code><a href="#PLHashTable">PLHashTable</a></code> が代わりに利用できます。</p>
+
+<p>また、利用者は <a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/pldhash.h#312" rel="custom">&lt;code&gt;PLDHashTableOps&lt;/code&gt;</a> 構造体を初期化しなくてはいけません。この構造体は C++ の vtable と似たようなもので、エントリーを初期化・比較・検索するための適切なユーザ定義関数へのポインタを提供します。 <code>PLDHash</code> はキーの型が何であるかを知らないため、キーを扱う全ての関数は <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/pldhash.h#354" rel="custom">const void*</a></code> で宣言されなければなりません。また、利用者のコードはこれらのポインタを適切な型にキャストする必要があります。</p>
+
+<p>PLDHashTables は、スタック・ヒープのどちらにも配置することができます。:</p>
+
+<ul>
+ <li>スタックに配置する場合、または C++ のクラスメンバとして利用される場合、テーブルは <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/pldhash.h#427" rel="custom">PL_DHashTableInit</a> で初期化され</code>、 <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/pldhash.h#459" rel="custom">PL_DHashTableFinish</a></code> で破棄される必要があります。</li>
+ <li>ヒープに配置する場合、 <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/pldhash.h#410" rel="custom">PL_NewDHashTable</a></code>, <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/pldhash.h#420" rel="custom">PL_DHashTableDestroy</a></code> でテーブルの割り当て・削除を行ってください。</li>
+</ul>
+
+<h3 id="PLHashTable" name="PLHashTable">PLHashTable</h3>
+
+<p><code>PLHashTable</code> は NSPR の一部です。ヘッダファイルは <code><code><a href="https://dxr.mozilla.org/mozilla-central/source/nsprpub/lib/ds/plhash.h" rel="custom">nsprpub/lib/ds/plhash.h</a></code></code> にあります。 <code>PLHashTable</code> はヒープに多数の領域を割り当てようとするため、一般的には <code><a href="#PLDHash_.28JSDHash.29">PLDHash</a></code> の方が <code>PLHashTable よりも優れています。</code></p>
+
+<p><code>PLDHash よりも </code><code>PLHashTable</code> の方が好ましい状況は以下の2つです。</p>
+
+<ul>
+ <li>エントリーへのポインタが定数である必要がある場合。</li>
+ <li>ハッシュテーブルに格納されているエントリーが非常に大きい場合(12ワード以上)。 <code>PLDHash</code> は大きな構造体を効率的に扱えません。</li>
+</ul>
+
+<h3 id="nsTHashtable" name="nsTHashtable">nsTHashtable</h3>
+
+<p><code>nsTHashtable</code> は <code>PLDHash をラップする C++ のテンプレートで、</code> <code>PLDHash</code> の複雑な部分(コールバック関数、構造体など)を隠蔽します。 <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsTHashtable.h" rel="custom">xpcom/glue/nsTHashtable.h</a></code> に目を通しておいてください。</p>
+
+<p><code>nsTHashtable を利用するためには、利用者は</code> <a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsTHashtable.h#65" rel="custom">pre-defined format</a> にある通りに<code>エントリークラスを宣言する必要があります。このエントリークラスは、ハッシュテーブルに格納するキーとデータを保持します(上記の </code><code>PLDHash と同様です</code><code>)。また、クラスの中でキーを処理する関数も宣言します。<span style="font-family: Verdana,Tahoma,sans-serif;">ほとんどの場合、エントリークラスは完全にインラインで書くことができます。</span></code>エントリークラスの例については <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsHashKeys.h" rel="custom">xpcom/glue/nsHashKeys.h</a></code> を参照してください。</p>
+
+<p>テンプレートのパラメータはエントリークラスです。テーブルを正しく初期化するためには <code>Init()</code> を利用しなくてはいけません。また現在のところ、テーブルの内容を変更するためには <code>PutEntry/GetEntry/RemoveEntry</code> 関数を利用してください。 <code>EnumerateEntries</code> 関数では列挙ができますが、並び順は見かけ上ランダムである(ソートされていない)ことに気をつけてください。</p>
+
+<ul>
+ <li><code>nsTHashtable</code> はスタック、クラスメンバ、ヒープに割り当てることができます。</li>
+ <li>エントリーへのポインタは、ハッシュテーブルにアイテムが追加・削除された際に変更されることがあります。エントリーへのポインタを長時間保持しないでください。</li>
+ <li>このため、 <code>nsTHashtable</code> は本質的にスレッドセーフではありません。マルチスレッドで利用する場合、適切なロック機構を用意する必要があります。</li>
+</ul>
+
+<p><code>nsTHashtable を使用する前に、</code> <code>nsBaseHashtable</code> とその関連クラスが利用用途に合うかどうか確認してください。エントリークラスを宣言する必要がないため、それらの方がずっと使いやすくなっています。もし単純なキー型・データ型を利用するのであれば、多くの場合こちらの方が良い選択肢です。</p>
+
+<h3 id="nsBaseHashtable_and_friends_nsDataHashtable.2C_nsInterfaceHashtable.2C_and_nsClassHashtable" name="nsBaseHashtable_and_friends:_nsDataHashtable.2C_nsInterfaceHashtable.2C_and_nsClassHashtable">nsBaseHashtable とその関連クラス: nsDataHashtable, nsInterfaceHashtable, nsClassHashtable</h3>
+
+<p>これらの C++ テンプレートは、 <code>PLDHash</code> の複雑な部分のほとんどを隠蔽しつつ、ハッシュテーブルを利用するための高レベルなインタフェースを提供します。以下のような機能を持ちます:</p>
+
+<ul>
+ <li>ハッシュテーブルの操作はエントリークラスを使わずに行うことができます。コードの可読性を高めます。</li>
+ <li>スレッドセーフ性(オプション)。ハッシュテーブルは読み書きの際にロックを設定することができます。</li>
+ <li>予め定義されたキークラス。strings, インタフェースを自動的にクリーンアップします。</li>
+ <li><code>nsInterfaceHashtable</code> <span style="font-family: monospace;">と</span><code> nsClassHashtable</code> は自動的にオブジェクトを解放・削除し、メモリリークを防ぎます。</li>
+</ul>
+
+<p><code>nsBaseHashtable</code> は直接利用しません。ここから派生した3つの派生クラスから、保持するデータ型に合わせて利用するクラスを1つ選んでください。 <code>KeyClass</code> は <code>nsHashKeys.h</code> で定義されています。他3つも同様です:</p>
+
+<ul>
+ <li><code>nsDataHashtable&lt;KeyClass, <em>DataType</em>&gt;</code> - <code>DataType</code> は <code>PRUint32</code> or <code>PRBool</code> のような単純型です。</li>
+ <li><code>nsInterfaceHashtable&lt;KeyClass, <em>Interface</em>&gt;</code> - <code>Interface</code> は <code>nsISupports</code>, <code>nsIDOMNode</code> のような XPCOM インタフェースです。</li>
+ <li><code>nsClassHashtable&lt;KeyClass, <em>T</em>&gt;</code> - <code>T</code> は任意の C++ クラスです。ハッシュテーブルはオブジェクトへのポインタを格納します。また、オブジェクトがハッシュテーブルから取り去られた場合、そのオブジェクトを削除します。</li>
+</ul>
+
+<p>目を通しておくべき重要なファイルは <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsBaseHashtable.h" rel="custom">xpcom/glue/nsBaseHashtable.h</a></code> と <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsHashKeys.h" rel="custom">xpcom/glue/nsHashKeys.h</a></code> です。これらのクラスはスタック、クラスメンバ、ヒープに置くことができます。初期化には <code>Init()</code> 関数を利用してください。このとき、スレッドセーフな排他制御を行うかどうかを決められます。ハッシュテーブルの内容を変更するには <code>Put()</code>, <code>Get()</code>, <code>Remove()</code> 関数を利用してください。</p>
+
+<p>2つの列挙関数が用意されています:</p>
+
+<ul>
+ <li><code>EnumerateRead()</code> は読み取り専用の列挙型を提供します。内容の変更や削除はできません。</li>
+ <li><code>Enumerate()</code> は読み書きのできる列挙型を提供します。必要に応じて内容の変更・削除ができます。</li>
+</ul>
+
+<h3 id="Using_nsTHashtable_as_a_hash-set" name="Using_nsTHashtable_as_a_hash-set">nsTHashtable をハッシュセットとして利用する</h3>
+
+<p>ハッシュセットはキーの存在だけを追跡します。キーとデータとの関連づけは行いません。このような動作は、 <code>nsTHashtable&lt;nsSomeHashKey&gt;</code> を利用することで実現できます。The appropriate entries are GetEntry and PutEntry.</p>
+
+<h2 id="Future_Plans" name="Future_Plans">Future Plans</h2>
+
+<h3 id="nsISimpleEnumerator_support" name="nsISimpleEnumerator_support">nsISimpleEnumerator support</h3>
+
+<p>The (obsolete) <code>nsHashtable</code> has a wrapper that exposes an <code>nsISimpleEnumerator</code> on its items. I will add this support to the various <code>nsBaseHashtable</code> classes as well, as needed.</p>
+
+<h2 id="Hash_Functions" name="Hash_Functions">Hash Functions</h2>
+
+<p>All of the above hashtables need a <a class="external" href="http://www.nist.gov/dads/HTML/hash.html">Hash Function</a>. This function converts the key into a semi-unique integer. The mozilla codebase already contains hash functions for most key types, including narrow and wide strings, pointers, and most binary data:</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void*<br>
+ (or nsISupports*)</code></td>
+ <td>cast using <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/base/nscore.h#443" rel="custom">NS_PTR_TO_INT32</a></code></td>
+ </tr>
+ <tr>
+ <td><code>char*</code> string</td>
+ <td rowspan="2"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsCRT.h#228" rel="custom">nsCRT::HashCode()</a></code></td>
+ </tr>
+ <tr>
+ <td><code>PRUnichar*</code> string</td>
+ </tr>
+ <tr>
+ <td><code>nsAString</code></td>
+ <td rowspan="2"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsTHashtable.cpp#41" rel="custom">HashString()</a></code></td>
+ </tr>
+ <tr>
+ <td><code>nsACString</code></td>
+ </tr>
+ <tr>
+ <td><code>nsID&amp;</code></td>
+ <td><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsHashKeys.h#227" rel="custom">nsIDHashKey::HashKey()</a></code></td>
+ </tr>
+ </tbody>
+</table>
+
+<p>Writing a good hash function is well beyond the scope of this document, and has been discussed extensively in computer-science circles for many years. There are many different types of hash functions. Mozilla has tuned a good general-purpose hash algorithm for strings and <code>nsID</code>.</p>
+
+<h2 id="Mozilla.27s_Old.2FObsolete.2FDeprecated.2FDecrepit_Hashtables" name="Mozilla.27s_Old.2FObsolete.2FDeprecated.2FDecrepit_Hashtables">Mozilla's Old/Obsolete/Deprecated/Decrepit Hashtables</h2>
+
+<h3 id="nsHashtable" name="nsHashtable">nsHashtable</h3>
+
+<p><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsHashtable.h" rel="custom">nsHashtable</a></code> was a C++ wrapper around <code>PLHashTable</code>, and now wraps <code>PLDHash</code>. The design of the key classes is not optimal, however, and <code>nsHashtable</code> has been deprecated in favor of <code>nsDataHashtable</code> and friends.</p>
+
+<h3 id="nsObjectHashtable" name="nsObjectHashtable">nsObjectHashtable</h3>
+
+<p><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsHashtable.h#163" rel="custom">nsObjectHashtable</a></code> is a form of <code>nsHashtable</code>. It has been replaced by <code>nsClassHashtable</code>.</p>
+
+<h3 id="nsSupportsHashtable" name="nsSupportsHashtable">nsSupportsHashtable</h3>
+
+<p><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsHashtable.h#193" rel="custom">nsSupportsHashtable</a></code> is a form of <code>nsHashtable</code>. It has been replaced by <code>nsInterfaceHashtable</code>.</p>
+
+<h3 id="nsHashSets" name="nsHashSets">nsHashSets</h3>
+
+<p><code>nsHashSets</code> has predefined hash sets for common keys, which are trivially easy to use. See <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsHashSets.h" rel="custom">xpcom/ds/nsHashSets.h</a></code>. This functionality has been replaced by <code>nsTHashtable&lt;nsSomeHashKey&gt;</code>.</p>
+
+<h3 id="nsDoubleHashtable" name="nsDoubleHashtable">nsDoubleHashtable</h3>
+
+<p><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsDoubleHashtable.h" rel="custom">nsDoubleHashtable</a></code> is the (obsolete) precursor to <code>nsTHashtable</code>. It uses macros instead of C++ templates.</p>
+
+<div class="originaldocinfo">
+<h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2>
+
+<ul>
+ <li>Author(s): Benjamin Smedberg &lt;<a class="link-mailto" href="mailto:benjamin@smedbergs.us" rel="freelink">benjamin@smedbergs.us</a>&gt;</li>
+</ul>
+</div>
+
+<p> </p>
diff --git a/files/ja/mozilla/tech/xpcom/index.html b/files/ja/mozilla/tech/xpcom/index.html
new file mode 100644
index 0000000000..ceea8f01cb
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/index.html
@@ -0,0 +1,114 @@
+---
+title: XPCOM
+slug: Mozilla/Tech/XPCOM
+tags:
+ - Landing
+ - Mozilla
+ - XPCOM
+ - アドオン
+ - 拡張機能
+translation_of: Mozilla/Tech/XPCOM
+---
+<p><strong>XPCOM</strong> は Microsoft COM と同じクロスプラットフォームのコンポーネントオブジェクトモデルです。これには複数の<a href="/ja/docs/XPCOM/Language_Bindings">言語バインディング</a>があり、XPCOM コンポーネントを C++ に加えて JavaScript、Java、Pythonで使用および実装することができます。XPCOM のインタフェースは <a href="/ja/docs/XPIDL">XPIDL</a> という IDL の方言で定義されています。</p>
+
+<div class="warning">
+<p><strong>XPCOM は Firefox 拡張機能ではもはや利用できません。代わりに <a href="/ja/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a> を使用してください。</strong></p>
+</div>
+
+<p>XPCOM 自体は一連のコアコンポーネントとクラスを提供します。XPCOM コンポーネントの大部分はこのコアセットの一部ではなく、プラットフォームの他の部分 (例えば <a href="/ja/docs/Mozilla/Gecko">Gecko</a> や <a href="/ja/docs/Necko">Necko</a>) によって提供されます。アプリケーション、または拡張機能を使用することもできます。</p>
+
+
+
+<div class="row topicpage-table">
+<div class="section">
+<dl>
+ <dt class="landingPageList"><a href="/ja/docs/Accessing_the_Windows_Registry_Using_XPCOM">Accessing the Windows Registry Using XPCOM</a></dt>
+ <dd class="landingPageList"></dd>
+ <dt class="landingPageList"><a href="/ja/docs/Fun_With_XBL_and_XPConnect">Fun With XBL and XPConnect</a></dt>
+ <dd class="landingPageList">この文章では、XBL の応用である、XULウィジェットへのアクセスを可能にする簡単な XPCOMインターフェースについて述べます。 XBLのこのインターフェースを定義するという特徴は、自動補完を行う C++ オブジェクトへの XPConnectを介したインターフェースを定義するのに使用されます。 一度通常の XULテキストフィールドをこのインターフェースに結び付ければ、通常の JavaScript を用いて、オブジェクトの自動補完機能を呼び出すようになります。 この相互作用の基本的なモデルは次のとおりです:</dd>
+ <dt class="landingPageList"><a href="/ja/docs/Generating_GUIDs">Generating GUIDs</a></dt>
+ <dd class="landingPageList"><strong>GUID</strong> は、Mozilla プログラミングで、XPCOM <a href="/ja/docs/Interfaces">インタフェース</a> (このタイプの GUID は IID と呼ばれています) やコンポーネント (CID) 、<a href="/ja/docs/Extension">拡張機能</a>や<a href="/ja/docs/Themes">テーマ</a>を含むアドオンなどの実体のそれぞれの型を識別するために使われます。とはいえ、<a href="/ja/docs/Firefox_1.5">Firefox 1.5</a> からは、アドオンでは <code><a class="link-mailto" href="mailto:extensionname@organization.tld" rel="freelink">extensionname@organization.tld</a></code> 形式の ID で<a href="/ja/docs/Install_Manifests#id">識別することができます(また、そうするべきです)</a>。</dd>
+ <dt class="landingPageList"><a href="/ja/docs/Generic_factory">Generic factory</a></dt>
+ <dd class="landingPageList"><a href="ja/XPCOM">XPCOM</a> では、<strong>汎用ファクトリ</strong> は <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsIGenericFactory.h" rel="custom">xpcom/glue/nsIGenericFactory.h</a></code> にある機能を利用して生成されたファクトリのことを指します。</dd>
+ <dt class="landingPageList"><a href="/ja/docs/Interfacing_with_the_XPCOM_cycle_collector">Interfacing with the XPCOM cycle collector</a></dt>
+ <dd class="landingPageList">これは Firefox 3 の XPCOM に導入されたサイクルコレクタの簡単な概要です。既存の C++ クラスを XPCOM サイクルコレクションに加えるための変更を順を追って説明します。cyclical-ownership リークに困っているクラスがあれば、このページが役立つでしょう。</dd>
+ <dt class="landingPageList"><a href="/ja/docs/Introduction_to_XPCOM_for_the_DOM">Introduction to XPCOM for the DOM</a></dt>
+ <dd class="landingPageList">Fabian Guisset &lt;<a class="link-mailto" href="mailto:fguisset@softhome.net">fguisset@softhome.net</a>&gt;</dd>
+ <dt class="landingPageList"><a href="/ja/docs/XPCOM/Setting_HTTP_request_headers">Setting HTTP request headers</a></dt>
+ <dd class="landingPageList">HTTP は Web の中核を成す技術の一つです。実際のコンテンツに加え、HTTP ヘッダによって<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html">いくつかの重要な情報</a>が HTTP リクエストとレスポンスの両方で渡されます。</dd>
+ <dt class="landingPageList"><a href="/ja/docs/Storage">Storage</a></dt>
+ <dd class="landingPageList"><strong>Storage</strong> は <a href="http://www.sqlite.org/">SQLite</a> データベース API です。信頼できる呼び出し元、つまり拡張機能と Firefox コンポーネントのみが利用できます。</dd>
+ <dt class="landingPageList"><a href="/ja/docs/XPCOM/The_Thread_Manager">The Thread Manager</a></dt>
+ <dd class="landingPageList"></dd>
+ <dt class="landingPageList"><a href="/ja/docs/Using_nsCOMPtr">Using nsCOMPtr</a></dt>
+ <dd class="landingPageList">このドキュメントは、<code>nsCOMPtr</code> について書かれたすべてを集めたものです。もしあなたが <code>nsCOMPtr</code> について疑問があり、このドキュメントでは分からないのであれば、 おそらくそれに答えられるドキュメントはないでしょう。<a class="external" href="news:mozilla.dev.tech.xpcom">XPCOM ニュースグループ</a>、または他のベテランの <code>nsCOMPtr</code> ユーザに尋ねる、あるいは実験して答えを見つける、などの別の手段で答えを得るしかありません。</dd>
+</dl>
+
+<dl>
+</dl>
+</div>
+
+<div class="section">
+<dl>
+ <dt class="landingPageList"><a href="/ja/docs/Weak_reference">Weak reference</a></dt>
+ <dd class="landingPageList">In <a href="ja/XPCOM">XPCOM</a>, a <strong>weak reference</strong> is a special object that contains a pointer to an XPCOM object, but does<em>not</em> keep that object alive. If the referent object is destroyed before the weak reference, the pointer inside the weak reference is set to <code>nsnull</code>.</dd>
+ <dt class="landingPageList"><a href="/ja/docs/XPCOM/wrappedJSObject">wrappedJSObject</a></dt>
+ <dd class="landingPageList"><code>wrappedJSObject</code>は<a href="ja/XPConnect">XPConnect</a>ラッパで利用できることがあるプロパティです。利用できる場合、それはあなたに、ラッパによって隠蔽されたJavaScriptオブジェクトへのアクセスを可能にします。</dd>
+ <dt class="landingPageList"><a href="/ja/docs/XPCOM_ABI">XPCOM ABI</a></dt>
+ <dd class="landingPageList"><a href="ja/XPCOM">XPCOM</a> <abbr title="Application Binary Interface">ABI</abbr>は、XPCOMコンポーネントのバイナリインターフェースです。スクリプト言語(<a href="ja/JavaScript">JavaScript</a>など)によって書かれたXPCOMコンポーネントは、特に改変をしなくてもプラットフォーム(WindowsやOS Xなど)を越えて動作させられますが、コンパイルが必要な言語(C++など)で書かれたコンポーネントの場合、異なるプラットフォームで動かすためには再コンパイルが必要です。コンパイルされたXPCOMコンポーネントは多くの場合、「バイナリ」や「ネイティブ」などと呼ばれます。</dd>
+ <dt class="landingPageList"><a href="/ja/docs/Mozilla/Tech/XPCOM/Guide">XPCOM guide</a></dt>
+ <dd class="landingPageList">These articles provide tutorials and usage documentation for XPCOM, including how to use it in your own projects and how to build XPCOM components for your Firefox add-ons and the like.</dd>
+ <dt class="landingPageList"><a href="/ja/docs/XPCOM_ownership_guidelines">XPCOM ownership guidelines</a></dt>
+ <dd class="landingPageList">...自然なことです。もしあなたが一時的なオブジェクトを作ったのであれば、明らかにそれを破壊するのはあなたの責任です。それは確かに所有の徴候です。もしあなたがより長い生存期間を持つオブジェクトを作ったのであれば、あなたは所有権を失うまでそれを所有することになるでしょう。</dd>
+ <dt class="landingPageList"><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference">XPCOM reference</a></dt>
+ <dd class="landingPageList">This reference describes the interfaces and functions provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM">XPCOM</a> library. In addition, it details the various helper classes and functions, as well as the components, provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM/Glue">XPCOM glue</a> library. The contents herein are oriented primarily toward extension developers and people embedding XPCOM in other projects.</dd>
+ <dt class="landingPageList"><a href="/ja/docs/XPCOM/Language_Bindings">XPCOM 言語バインディング</a></dt>
+ <dd class="landingPageList"><strong>XPCOM 言語バインディング</strong>は、以下の目的のために特定の言語と <a href="/ja/XPCOM" rel="internal" title="ja/XPCOM">XPCOM</a> との橋渡しを行います。</dd>
+ <dt class="landingPageList"><a href="/ja/docs/xptcall_FAQ">xptcall FAQ</a></dt>
+ <dd class="landingPageList"><code>xptcall</code> は、低レベルの XPCOM メソッド呼び出しのための小さなライブラリです。プラットフォーム固有の C/C++ とアセンブラ言語のコードを使って実装されています。異なる言語間の呼び出しと異なるスレッドへのメソッド呼び出しを容易にするためのものです。 Mozillaをあらゆるプラットフォーム上で動作させるためには、このコードを移植する必要があります。</dd>
+</dl>
+</div>
+</div>
+
+
+
+
+
+<div class="blockIndicator communitybox">
+<div class="column-container">
+<h2 id="XPCOMコミュニティに参加してください">XPCOMコミュニティに参加してください</h2>
+
+<div class="column-half">
+<div class="communitysubhead">あなたの好きな方法でディスカッションに参加してください</div>
+
+<ul class="communitymailinglist">
+ <li><a href="https://lists.mozilla.org/listinfo/dev-tech-xpcom">メーリングリストとして</a></li>
+ <li><a href="http://groups.google.com/group/mozilla.dev.tech.xpcom">ニュースグループとして</a></li>
+ <li><a href="http://groups.google.com/group/mozilla.dev.tech.xpcom/feeds">フィードとして</a></li>
+</ul>
+</div>
+
+<div class="column-half">
+<ul class="communitycontact">
+ <li><strong>IRC: </strong><a href="irc://irc.mozilla.org/developers">#developers</a> <span class="smaller">(<a href="https://wiki.mozilla.org/IRC">さらに詳しく</a>)</span></li>
+ <li><strong>Tools: </strong><a href="http://ted.mielczarek.org/code/mozilla/jscomponentwiz/">JavaScript Component Wizard</a>, <a href="http://www.mytools360.com-a.googlepages.com/home#XPComPro">Visual C++ Component Wizard</a>, <a href="http://www.yutools.com/wp/tools/yuxpcomwizard/?lang=en">Visual C++ Component Wizard for Visual Studio 2010</a>, <a href="https://addons.mozilla.org/en-US/firefox/addon/xpcomviewer/">XPCOMViewer addon: browse XPCOM interfaces easily</a></li>
+</ul>
+</div>
+</div>
+</div>
+
+
+
+
+
+<section id="Quick_Links">
+<ol>
+ <li><a href="http://www.ibm.com/developerworks/library/os-xpcomfirefox/">Tutorial from IBM DeveloperWorks</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System">Binary components tutorial</a></li>
+ <li><a href="http://www.iosart.com/firefox/xpcom/">Linux and Windows how-to guide</a></li>
+ <li><a href="http://starkravingfinkle.org/blog/2006/10/mozilla-platform-xpcom-in-c/">Windows example blog post</a></li>
+ <li><a href="http://wanderingstan.com/2007-11-16/geekout_how_to_make_a_c_xpcom_component">Another Windows example</a></li>
+ <li><a href="http://rcrowley.org/2007/07/17/cross-platform-xpcom-a-howto.html">Mac OS X example</a></li>
+ <li><a href="/en-US/docs/Web/JavaScript" title="JavaScript (JS) is a lightweight interpreted or JIT-compiled programming language with first-class functions. While it is most well-known as the scripting language for Web pages, many non-browser environments also use it, such as Node.js, Apache CouchDB and Adobe Acrobat.">JavaScript</a></li>
+</ol>
+</section>
diff --git a/files/ja/mozilla/tech/xpcom/interfacing_with_the_xpcom_cycle_collector/index.html b/files/ja/mozilla/tech/xpcom/interfacing_with_the_xpcom_cycle_collector/index.html
new file mode 100644
index 0000000000..3c154bd1fe
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/interfacing_with_the_xpcom_cycle_collector/index.html
@@ -0,0 +1,67 @@
+---
+title: Interfacing with the XPCOM cycle collector
+slug: Mozilla/Tech/XPCOM/Interfacing_with_the_XPCOM_cycle_collector
+tags:
+ - Firefox 3
+ - XPCOM
+ - 要更新
+translation_of: Mozilla/Tech/XPCOM/Interfacing_with_the_XPCOM_cycle_collector
+---
+<div></div>
+<p>これは Firefox 3 の XPCOM に導入されたサイクルコレクタの簡単な概要です。既存の C++ クラスを XPCOM サイクルコレクションに加えるための変更を順を追って説明します。cyclical-ownership リークに困っているクラスがあれば、このページが役立つでしょう。</p>
+<p>このドキュメントは Mozilla C++ 開発者向けです。</p>
+
+
+<h2 id="What_the_cycle_collector_does" name="What_the_cycle_collector_does">サイクルコレクタの役割</h2>
+
+<p>サイクルコレクタは、そのほとんどの時間を費やして、ガーベッジサイクルに加わる <i>かもしれない</i>、XPCOM オブジェクトへのポインタを蓄積して (または捨てて) います。これは、コレクタ作業の待機 (<span style="color: green;">idle</span>)ステージにおいて "疑わしい" refcount イベント (0 ではない N の N+1 から N) を通過する、とても素早い <code>nsAutoRefCnt</code> レジスタおよび、そのアンレジスタの特殊な変異型です。</p>
+<p>コレクタはバッファに居座る疑わしいポインタを定期的に検査します。これはコレクタ作業の調査 (<span style="color: green;">scan</span>)ステージです。このステージでは、コレクタは単独のサイクルコレクション・ヘルパークラスの各候補に繰り返し尋ね、ヘルパーが存在するときは、コレクタが候補 (自身) の子を記述するようにヘルパーに要求します。この方法で、コレクタが、疑わしいオブジェクトの手がかりとなる所有者の部分グラフを構築します。</p>
+<p>すべての参照をもう一つのオブジェクトへ再び問い合わせ、参照カウントがすべてグループ内の内部ポインタで占められているオブジェクトを確立するオブジェクトのグループをコレクタが見つけた場合、開放の対象となる <i>cyclical garbage</i> グループに入れるかどうかが考慮されます。これはコレクタ作業のリンク解除 (<span style="color: green;">unlink</span>)ステージです。このステージでは、コレクタは見つかったガーベッジオブジェクトをざっと見渡し、それらのヘルパーオブジェクトに再び相談して、各オブジェクトをそれらの子から "リンク解除" するか尋ねます。</p>
+<p>コレクタは JS ヒープを見渡す方法も知っており、所有者のサイクルをそこへ提出したり、そこから去らせたりできます。</p>
+
+
+
+<h2 id="How_the_collector_can_fail" name="How_the_collector_can_fail">コレクタの失敗例</h2>
+
+<p>サイクルコレクタは保守的なデバイスです。以下はガーベッジサイクルの収集に失敗する状況です。</p>
+<ol>
+ <li>デフォルトで任意のポインタを疑うことはありません。オブジェクトは <i>それら自身で疑う</i> べきです。一般的に、<code>nsAutoRefCnt</code> よりも <code>nsCycleCollectingAutoRefCnt</code> が使用されます。</li>
+ <li><code>nsICycleCollectionParticipant</code> に QI された (<span style="color: green;">QI'ed</span>)時は、ヘルパーオブジェクトを返すオブジェクトを横断するだけです。横断中に未知の境目 (<span style="color: green;">edge</span>)に遭遇した場合は、その境目で断念します。これはサイクルに加えられたすべての境目が関与していなければならないことを意味します。そうでなければ、サイクルは見つかりません。</li>
+ <li>ヘルパーオブジェクト上の <code>Traverse</code> メソッドと <code>Unlink</code> メソッドは魔法ではありません。これらはプログラマが提供しており、正しく動作しなければなりませんが、正しく動作しないとコレクタが失敗します。</li>
+ <li>コレクタはスタック上に存在する一時的な自身へのポインタを見つける方法を知りません。そのため、プログラムのトップループの近くからだけ実行することが重要です。追加の自身へのポインタがあってもクラッシュしませんが、自身のオブジェクト内で見つかる、参照カウントに加えることができないポインタ自身を見つけるため、サイクルの収集に失敗する可能性があります。</li>
+</ol>
+
+
+
+<h2 id="How_to_make_your_classes_participate" name="How_to_make_your_classes_participate">クラスをサイクルコレクタに加える方法</h2>
+
+<p>サイクルコレクタとあなたのクラスの間のインタフェースは、<code>xpcom/base/nsCycleCollector.h</code> のコンテンツを使用して直接アクセスできます。しかし、あなたのクラスに注釈をつけるための、もっと簡単に使用できる便利なマクロが <code>xpcom/base/nsCycleCollectionParticipant.h</code> にあります。一般的に、<code>mBar</code> と <code>mBaz</code> の 2 つの <code>nsCOMPtr</code> エッジを持つ <code>nsFoo</code> クラスを調整すると仮定すると、処理はいくつかの簡単な調整に絞られます:</p>
+<ol>
+ <li><code>nsFoo.h</code> と <code>nsFoo.cpp</code> の両方に <code>nsCycleCollectionParticipant.h</code> ヘッダを include します。</li>
+ <li><code>nsFoo</code> の定義で、<code>NS_DECL_ISUPPORTS</code> の行を <code>NS_DECL_CYCLE_COLLECTING_ISUPPORTS</code> に変更します。</li>
+ <li><code>nsFoo</code> の定義のパブリックな部分に <code>NS_DECL_CYCLE_COLLECTION_CLASS(nsFoo)</code> の行を追加します。</li>
+
+ <li><code>nsFoo.cpp</code> 内の <code>nsFoo</code> のインタフェースマップに <code>NS_INTERFACE_MAP_ENTRIES_CYCLE_COLLECTION(nsFoo)</code> の行を追加します。
+<pre>NS_INTERFACE_TABLE_HEAD(nsFoo)
+ NS_INTERFACE_TABLE2(nsFoo,
+ nsIBar,
+ nsIBaz)
+ NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(nsFoo)
+NS_INTERFACE_MAP_END
+</pre></li>
+ <li><code>nsFoo.cpp</code> 内の <code>NS_IMPL_ADDREF(nsFoo)</code> の行を <code>NS_IMPL_CYCLE_COLLECTING_ADDREF(nsFoo)</code> に変更します。</li>
+ <li><code>nsFoo.cpp</code> 内の <code>NS_IMPL_RELEASE(nsFoo)</code> の行を <code>NS_IMPL_CYCLE_COLLECTING_RELEASE(nsFoo)</code> に変更します。</li>
+ <li><code>nsFoo.cpp</code> に <code>NS_IMPL_CYCLE_COLLECTION_CLASS_2(nsFoo, mBar, mBaz)</code> の行を追加します。</li>
+</ol>
+
+<p>あなたのクラスを、この設計図よりもさらに複雑な構造にすることも可能です。例えば、あなたのクラスが複数の <code>nsISupports</code> ベースクラスを持っており、破滅を明確にするいくつかの <code>*_AMBIGUOUS</code> マクロを使用する必要がある場合です。または、あなたのクラスが <code>NS_IMPL_CYCLE_COLLECTION_CLASS_<i>N</i></code> マクロで効果が無い、複雑な所有者構造をしている場合です。後者の場合は、あなたのヘルパークラスに <i>Traverse</i> メソッドと <i>Unlink</i> メソッドを自分で実装する必要があるでしょう。これらの例では <code>NS_IMPL_CYCLE_COLLECTION_TRAVERSE_{BEGIN,END}</code> マクロと <code>NS_IMPL_CYCLE_COLLECTION_UNLINK_{BEGIN,END}</code> マクロの使用が役立ちます。これらの使用例は、より複雑な <code>content/base/src/nsGenericElement.cpp</code> などのクラスを参照してください。あなたのクラスが切取られた部分であるか、他のクラスの集合である場合、切り取られたクラスや外部のクラスもサイクルコレクションに加えられることが重要です。そうしないと、サイクルコレクタにオブジェクトも収集させてしまいます。</p>
+
+<h3 id="Manually_implementing_the_Traverse_and_Unlink_methods" name="Manually_implementing_the_Traverse_and_Unlink_methods">Manually implementing the Traverse and Unlink methods</h3>
+<p>Each field that may contain cycle collected objects needs to be passed to the cycle collector, so it can detect cycles that pass through those fields.</p>
+<p>The main macro for Traverse is NS_IMPL_CYCLE_COLLECTION_TRAVERSE:<br>
+  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mSomeMember)</p>
+
+<p>Unlink works similarly:<br>
+  NS_IMPL_CYCLE_COLLECTION_UNLINK(mSomeMember)</p>
+
+<p>These macros should handle a variety of cases, such as reference counted pointers to cycle collected nsISupports or non-nsISupports objects, as well as arrays of these pointers.</p>
diff --git a/files/ja/mozilla/tech/xpcom/introduction_to_xpcom_for_the_dom/index.html b/files/ja/mozilla/tech/xpcom/introduction_to_xpcom_for_the_dom/index.html
new file mode 100644
index 0000000000..ed14941416
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/introduction_to_xpcom_for_the_dom/index.html
@@ -0,0 +1,319 @@
+---
+title: Introduction to XPCOM for the DOM
+slug: Mozilla/Tech/XPCOM/Introduction_to_XPCOM_for_the_DOM
+translation_of: Mozilla/Tech/XPCOM/Introduction_to_XPCOM_for_the_DOM
+---
+<p>Fabian Guisset &lt;<a class="link-mailto" href="mailto:fguisset@softhome.net">fguisset@softhome.net</a>&gt;
+</p><p>注意: この文書はまだ DOM の権威の校正を経ておりませんので、正確でない部分があるかもしれません。
+</p><p>この文書は <b>DOM コードのコンテキスト</b>で XPCOM を<b>使用する</b>方法の入門書です。文書に記述されています XPCOM や nsCOMPtr の使用法は DOM コードを読んだり、書いたりするために必要な知識の 8 割をカバーしています。XPCOM の上級向けの内容については <a href="ja/XPCOM">XPCOM</a> のページをご参照ください。
+</p><p>この文書のバグの追跡は <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=99592" title="FIXED: hacking the DOM feedback">バグ 99592</a> で可能です。
+</p><p>対象読者: DOM コードに C++ と XPCOM を使用するための手っ取り早い入門書が必要な読者。<a class="external" href="http://www.mozilla-japan.org/docs/dom/mozilla/hacking.html">DOM ハッキングガイド</a> の残りの部分を読むには、この文書の内容を理解している必要があります。
+</p>
+<div class="note">
+<p>重要な注意事項: この文書は C++ の知識、特にそのオブジェクト指向の部分の理解を前提としています。Stanley Lippman と Josee Lajoie による「C++ Primer」を読んで、私は C++ を学んでから、DOM コードをあれこれ試してみました。この本は、その分野に関わるすべての初心者にお勧めできます。 </p>
+</div>
+<h3 id=".E5.85.A5.E9.96.80.E3.81.B8.E3.81.AE.E6.89.8B.E5.BC.95.E3.81.8D" name=".E5.85.A5.E9.96.80.E3.81.B8.E3.81.AE.E6.89.8B.E5.BC.95.E3.81.8D"> 入門への手引き </h3>
+<p>DOM は XPCOM を広く使います。事実、 DOM を実装して使用するには XPCOM が必要になります。しかし、コードを読んだり既存のフレームワークに何かするだけならば、詳細まで知る必要はありません。nsCOMPtr も含めて DOM が提供する数多くのマクロや機能はとても便利なものです。この章では、できるだけ枝葉末節の解説を避けて、 XPCOM のうち DOM で最も広く使われている範囲をカバーしたいと思います。そして nsCOMPtr のインターフェイス、参照カウント、 nsISupports インターフェイスを解説します。新しいインターフェイスの追加方法についてのチュートリアルや、最後に C++ におけるクラスの継承についての詳細の議論についても解説します。
+</p>
+<h3 id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9" name=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9"> インターフェイス </h3>
+<p>オブジェクト指向のプログラミングは<b>クラス</b>間の<b>継承</b>の使用を基本にしています。さらに、メソッドを宣言しても実装しないメソッドがある場合、クラスは「抽象クラス」として宣言することができます。この概念を最大限に推し進めると、メソッドを実装せずに宣言したクラスは「完全に仮想的」になります。そのようなクラスはインターフェイスと呼ばれます。インターフェイスの目的は、ひとつのインターフェイスに・・・実装の詳細内容を心配することなく、(普通クラスとして表される) オブジェクトを操作する一セットのメソッドを持たせることです。もしあるクラスが、あるインターフェイスを実装しているならば、そのままインターフェイスのメソッドを使うようにしてください。そうすれば、インターフェイスの実装 (具象クラス) に変更があっても、気にする必要がなくなります。XPCOM はこの考えを究極まで推進しています。純粋な仮想メソッドが以下の構文で宣言されます: </p>
+<pre class="eval">virtual nsresult FunctionFoo() = 0;
+</pre>
+<p>インターフェイスはこのようにすべてのメンバ関数が純粋に仮想関数として宣言される、単に C++ のクラスです。インターフェイスはまた <a href="ja/XPIDL">XPIDL</a> を使って定義されます。この件は、 1.E の節「新しいインターフェイスの追加方法」で解説されます。
+</p><p>インターフェイスは実装を備えていないので、非抽象クラス (具象クラス) によって実装される必要があります。その際、インターフェイスが nsIFoo 、クラスが nsFoo である場合、「nsFoo は nsIFoo を実装する」あるいは「nsFoo は nsIFoo を継承する」と言います。C++ クラスのコードは次のようになります:
+</p>
+<pre class="eval">class nsFoo : public nsIFoo
+</pre>
+<p>オブジェクト指向の C++ を知らない人のために言うと、nsFoo は nsIFoo からの「派生」として宣言されることになります。そしてこの時、nsIFoo は nsFoo の「基底クラス」になります。この入門書では、オブジェクト指向の C++ についてもっと多くを知る必要はありません。しかし、1.F 節ではその件でさらに詳しい議論があり、DOM コードのほとんどを理解することが必要になります。
+</p><p>(オブジェクトと呼ばれる) クラスのインスタンスは (ヒープや空き領域に)、下記の構文を使って動的に割り付けられます。 </p>
+<pre class="eval">nsFoo *fooptr = new nsFoo;
+</pre>
+<p>その時オブジェクトは、 fooptr 経由でのみ操作されます。この時、nsFoo クラスが nsIFoo インターフェイスを実装するならどうなるかを考えてみましょう。nsFoo オブジェクトを fooptr 経由で直接操作可能ですね。しかし、コードはあまり頑健ではありません。事実、使われているメソッドの名前やシグニチャーを変更する者がいると、全コードに渡りこれらのメソッドへの呼び出しをすべて変えなければなりません。具象クラスとは反対に、インターフェイスは時が経過しても安定しているはずです。事実、Mozilla コードの多くのインターフェイスは凍結されて (インターフェイス定義の最初に @Frozen コメントで指示されて) います。これは、それらのインターフェイスがこの先変わることがないという意味です。メリットは、こうして作られたコードが将来永遠に (最高の条件で) 存在し続けることです。反対に欠点は、そのようなインタフェースを改善する方法を見つけなければならないということと、それらを凍結すると実装者に新しいインタフェースを作らせるのを強いることになってしまう、ということです。要するに、必要な時はいつでも実装ではなくインターフェイスを操作することです。nsFoo によって実装される nsIFoo インターフェイスへのポインタは以下のように宣言されます。
+</p>
+<pre class="eval">nsIFoo *fooptr = new nsFoo;
+</pre>
+<p>fooptr のようなポインタはその時、「nsFoo クラスのインスタンスによって実装される nsIFoo インターフェイスへのポインタ」とか、それを短縮して「nsIFoo へのポインタ」と呼ばれます。今後私が「インターフェイスへのポインタ」について言う時は、「C++ 具象クラスのインターフェイスによって実装されたインターフェイスへのポインタ」を事実上意味します。注意すべき重要点は、nsIFoo へのポインタのみが nsIFoo インターフェイスやその親で定義されたメソッドを呼び出せることです。たとえば、nsFoo が nsIFoo と nsIBa というふたつの異なるインターフェイスを実装するなら、nsIFoo へのポインタは nsIBa で定義されたメソッドを呼び出せません。その逆もありません。
+</p><p>注意: 前の段落は大変重要です。もしそれが完全に理解できていないならば、これ以上読み進める必要はありません。
+</p><p>参照カウントの基本
+</p><p>XPCOM は参照カウントのメカニズム(短縮形 refcount )を使って、インターフェイスのポインタがオブジェクトを指している間にオブジェクトが削除されていないことを確認します。事実、削除されたオブジェクトを指し示すポインタを間接参照することは悪い影響を及ぼす可能性があります。そんな訳で、インターフェイスへのポインタがオブジェクトのアドレスを代入される都度、そのオブジェクトのカウントを一つ増やす必要があります。これを実行する関数は、”AddRef”と呼ばれ、nsISupports インターフェイスで定義されます。ポインタがすでにオブジェクトのアドレスを保持しない時、そのオブジェクトの参照カウントを一つ減じる必要があります。これには同じく、nsISupports インターフェイスで定義された”Release”関数を使用します。オブジェクトの参照カウントが 0(zero) に達するとオブジェクトは自分自身を削除します。こんなわけで、各々のオブジェクトの参照カウントの記録を確保することは大変重要になります。最初のケースでは、もし AddRef を使ってオブジェクトのカウントを増やすのを忘れると、私たちがポインタを使用して何かする前にオブジェクトは自分自身を削除するかもしれません。そのために、間接参照される時に、クラッシュを引き起こすことがあります。次のケースでは、もしオブジェクトを Release 関数を使って開放することを忘れると、オブジェクトは自分自身を削除しません。それで「メモリリーク」を発生させ、つまり、不要になってもオブジェクトを確保しているので、メモリがシステムに返されることはありません。どちらのケースも不都合なので、参照カウントには細心の注意を払わなくてはなりません。
+</p><p>幸運なことに、とっても便利な nsCOMPtr があります。 </p>
+<h3 id="nsCOMPtr" name="nsCOMPtr"> nsCOMPtr </h3>
+<p>Scott Collins は私たちに <a href="ja/Using_nsCOMPtr">nsCOMPtr</a> を授けてくれたので、すぐにそれを使用しましょう。 nsCOMPtr は C++ auto_ptr の拡張機能で、参照カウントの操作を管理します。そして、比較、初期化などに対していくつかの機能を提供します。nsCOMPtr は大抵の場合インターフェイスへの通常のポインタのように使われます。nsIFoo インターフェイスへのポインタは、通常下記のように宣言されます:
+</p>
+<pre class="eval">nsIFoo *fooptr;
+</pre>
+<p>同じ nsIFoo インターフェイスへの nsCOMPtr は下記のように宣言されます:
+</p>
+<pre class="eval">nsCOMPtr&lt;nsIFoo&gt; fooptr;
+</pre>
+<p>nsCOMPtr は次の節で解説されます。nsCOMPtr についての詳細情報は <a href="ja/Using_nsCOMPtr#Getting_Started_Guide">ユーザの手引き</a> を読んでください。
+</p>
+<h3 id="QueryInterface.28.29" name="QueryInterface.28.29"> QueryInterface() </h3>
+<p>再び、nsIFoo と nsIFoo2 の 2 つのインターフェイスを実装する nsFoo クラスを考えてください:
+</p>
+<pre class="eval">class nsFoo : public nsIFoo, public nsIFoo2
+</pre>
+<p>ともかく nsFoo のインスタンスが作られることを前提としましょう (この断定はほとんど常に正しいです)。そうすると、nsIFoo インターフェイスで定義されたメソッドを使ってそのオブジェクトを操作したくなるでしょう。目的は nsIFoo インターフェイスへポインタを確保することです。そのために、主な 2 つのテクニックが存在し、コンテキストによってするべきことが分かります。最初のテクニックは「Getter」を使うことであり、次のテクニックは「this」ポインタで static なキャストを使うことです。
+</p><p>getter は、グローバルな領域やクラスの領域で定義され、要求されたインターフェイスへのポインタを「返す」関数です。一般的に getter は以下のように機能します:最初にインターフェイスへのポインタである ifooptr を代入なしに宣言します。それから、getter 関数へポインタのアドレスを渡します。この時 getter 関数は、ポインタへ正確なアドレスを代入し、要求されたインターフェイスへのポインタへ QueryInterface します。ifooptr はすでに、実際のオブジェクトのアドレスを代入されたインターフェイスへのポインタとなっています。このようにして、ifooptr 経由で nsIFoo で定義されたメソッドをすぐに呼び出せます。以下にコードの例を示します。 </p>
+<pre class="eval">nsCOMPtr&lt;nsIFoo&gt; ifooptr;
+GetInterfaceIFoo(getter_AddRefs(ifooptr));
+ifooptr-&gt;FunctionOfnsIFoo();
+</pre>
+<p>独特の構文である getter_AddRefs(pointer) は、通常の「&amp;」(address-of) C++ 演算子に対して nsCOMPtr が対応するものと同じです。すなわち、Getter メソッドは AddRef メソッドを呼び出します。これは、「このオブジェクトに参照を追加しません。もうすでにあなたが追加していますからね」という呼び出し元と「このオブジェクトへは私が参照を追加しますので、追加しないでください」という呼び出し先との間の契約になります。もし、呼び出し元と呼び出し先が両方で AddRef を実行すると、どちらかの参照は解放されないので、オブジェクトはメモリリークとなります。
+</p><p>すべての Getter 関数は返されたポインタを <b>AddRef しなければならない</b>ことに注意してください。それでも今 Getter 関数 を使用しているとしても、心配することはありません。<a href="ja/XPCOM_ownership_guidelines">XPCOM 所有の手引き</a> で詳しい情報を参照できます。
+</p><p>フレームやビューのように、インターフェイスには参照カウントされないものがあることにも注意してください。これらに対しては生のインターフェイスポインタを使用しなければなりません。マニュアルで参照カウントする必要はありません。 </p>
+<pre class="eval">今 nsIFoo2 インターフェイスで宣言され、nsFoo で実装された関数を実行したいとしましょう。しかしこの時、ifooptr 経由ではその関数にアクセスできません。それは 1.B の節で述べた理由のために ifooptr が nsIFoo へのポインタだからです。XPCOM には便利なメソッドがあり、別のインターフェイスへのポインタがある時、インターフェイスへのポインタを持てます。そして、2 つのインターフェイスは同じオブジェクトによって実装されます。この時のメソッドが QueryInterface() です。それは nsISupports インターフェイスで定義されます。<b>Mozilla の各々のインターフェイスは nsISupports を継承しています</b>。このことは、XPCOM の主要規則の 1 つです。目的はこうです。オブジェクト (クラスのインスタンス) が所定のインターフェイスを実装するかどうかを知る。これが QueryInterface() の働きです。インターフェイスとインターフェイスを保持するポインタのアドレスを QueryInterface() に渡します。その時インターフェイスがオブジェクトによって実装されていれば、渡されたポインタはオブジェクトのアドレスを代入されます。もし実装されていなければ、 QueryInterface() は NS_NOINTERFACE を返し、渡されたポインタは null になります。
+</pre>
+<p>QueryInterface() はユーザへオブジェクトの実装を隠蔽するのに便利です。 QueryInterface() をただ呼び出してから、インターフェイスのメソッドを呼び出します。その外は知る必要がありません。それでは、nsIFoo へのポインタがある時、どのように QueryInterface() を使って nsIFoo2 へのポインタを得るのでしょうか? ifooptr を再利用できない以上、nsIFoo2 への新ポインタである ifooptr2 を作ります。以下の構文が (nsCOMPtr とだけ使う場合) 推奨されます: </p>
+<pre class="eval">nsCOMPtr&lt;nsIFoo2&gt; ifooptr2 (do_QueryInterface(ifooptr));
+</pre>
+<p>この構文は nsCOMPtr の宣言と初期化を同時にするのに推奨されます。あとで、別のアドレスをそこへ代入する必要があるならば、簡単にこうできます:
+</p>
+<pre class="eval">ifooptr2 = do_QueryInterface(another_pointer);
+
+</pre>
+<p>しかしこの構文は、単に実際の関数への便利なショートカットにすぎません。以下の構文は生のポインタで QueryInterface() を使用する方法を表します。
+</p>
+<pre class="eval">nsIFoo2 *ifooptr2;
+ifooptr-&gt;QueryInterface(NS_GET_IID(nsIFoo2), (void **)&amp;ifooptr2);
+</pre>
+<p>NS_GET_IID は引数の IID に対して評価をするマクロです。2 つのインターフェイスを比較して同一性を調べるのに便利です。nsCOMPtr への getter_AddRefs() の働きについてはすでに見たとおりです。今回は、ifooptr2 のアドレスを渡します。nsFoo は nsIFoo2 を実装するので、ifooptr2 は nsFoo の現在のインスタンスのアドレスを代入されます。すると、ifooptr2 経由で nsIFoo2 で定義されたメソッドを呼び出せます:
+</p>
+<pre class="eval">ifooptr2-&gt;FunctionOfnsIFoo2();
+</pre>
+<p>ところで、 nsFoo で実装されないインターフェイスへ QueryInterface を試みるならば、渡されたポインタは null となります。そんな訳で、自分の処理を本当に確実に明白に間違いないと思われないなら、nsCOMPtr が null になっていないかどうか必ず確認してください。以下のサンプルを参考にしてください。
+</p>
+<pre class="eval">nsCOMPtr&lt;nsINotImplemented&gt; iptr(do_QueryInterface(ifooptr));
+if(!iptr) {
+ // nsFoo は nsINotImplemented を実装しない。 iptr はそのため null である
+ return NS_OK;
+}
+</pre>
+<p>QueryInterface が null-safe であることに注意することも大切です。たとえば前の例では、ifooptr がnull であっても、不都合は発生しません。さらに、QueryInterface の呼び出しの戻り値は正当な理由がない限りは返されるべきではありません。NS_NOINTERFACE を返すことが心配ならば、前のサンプルが示すように NS_OK を返してください。
+</p><p>この節の始めに、インターフェイスへのポインタを取得する 2 つ目の方法について話しました。これは、getter 関数が有効でない場合に使われるはずです。おそらくご存知でしょうが、オブジェクトの”this”メンバはそのオブジェクトへのポインタです。そこで必要なインターフェイスへ static に”this”を単にキャストできます。しかしキャストする前にご自分の処理が絶対間違いようにしてください。間違いがあれば参照カウントで問題が発生します。
+</p><p>最近遭遇した問題の例を紹介します: nsHTMLAnchorElement クラスのメンバ関数で、nsHTMLAnchorElement オブジェクトによって実装された nsIContent インターフェイスへのポインタを取得する必要がありました。しかし、getter 関数がなかったので 2 つ目の方法を使わなければなりませんでした: </p>
+<pre class="eval">nsCOMPtr&lt;nsIContent&gt; content = getter_AddRefs(NS_STATIC_CAST(nsIContent*, this));
+// または自分自身をカウントしたいならば、
+nsIContent *content = NS_STATIC_CAST(nsIContent*, this);
+</pre>
+<p>この 2 つめの構文は注意して扱われる必要があり、XPCOM プログラマーの上級者だけに推奨されます。
+</p><p>ここまでに解説しました XPCOM と nsCOMPtr の使用方法はコードを読んだり少しでも書くのに必要な知識の 8 割をカバーしています。引き続き do_GetService へ進んで、QueryInterface などの実装の説明は可能ですが、そこまでする必要があると思いません。そこで XPCOM のさらに詳しい内容については <a class="external" href="http://www.mozilla-japan.org/projects/xpcom/">XPCOM プロジェクトのページ</a> を参照してください。
+</p><p>次の節は Mozilla DOM へ新しいインターフェイスを追加する方法に関するチュートリアルであり、ビルドの解説やその他を含みます。最後の節はオブジェクト指向の C++ 、インターフェイスの継承、その他面白いトピックに関する詳細の内容についての議論になっています。 </p>
+<h3 id=".E3.83.81.E3.83.A5.E3.83.BC.E3.83.88.E3.83.AA.E3.82.A2.E3.83.AB_.E6.96.B0.E3.81.97.E3.81.84.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.AE.E8.BF.BD.E5.8A.A0.E6.96.B9.E6.B3.95" name=".E3.83.81.E3.83.A5.E3.83.BC.E3.83.88.E3.83.AA.E3.82.A2.E3.83.AB:_.E6.96.B0.E3.81.97.E3.81.84.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.AE.E8.BF.BD.E5.8A.A0.E6.96.B9.E6.B3.95"> チュートリアル: 新しいインターフェイスの追加方法 </h3>
+<h4 id=".E5.A7.8B.E3.82.81.E3.81.AB" name=".E5.A7.8B.E3.82.81.E3.81.AB"> 始めに </h4>
+<p>このチュートリアルの目的は、DOM に新しいインターフェイスを追加しそれを実装する方法を解説することです。チュートリアルを理解するために前節をよく理解してください。新しいインターフェイスを追加したくなるのにはいくつかの理由があります。新しい DOM のオブジェクトを追加したり、最終的な「インターフェイスの凍結”を順守するためです。最初に XPIDL を調べて、それがどのようにインターフェイスの定義を支援できるか見てみましょう。次にビルドシステム、makefiles、などを解説します。最後に、 nsIDOMFabian インターフェイス (Fabian は私の名前なのですが ;-) を通じてこれらの新しいインターフェイスの実装を観てみましょう。
+</p>
+<h4 id="XPIDL" name="XPIDL"> XPIDL </h4>
+<p>XPIDL は Cross-Platform Interface Definition Language の頭文字です。 C++ でインターフェイスを直接コーディングせずに、 XPIDL を使うことが可能です。それを使用するとインターフェイスの定義のタスクを簡略化し、文書の自動生成や XPT の生成などの面白い機能をいくつか提供します。最初にするべきことは、私たちのインターフェイスである nsIDOMFabian が何をするか決めます。この文書のために、私は nsIDOMFabian という新しい HTML インターフェイスを実装することにしました。そのインターフェイスは nsHTMLDocument クラスによって実装されます。
+</p><p>XPIDL の構文は簡単です: </p>
+<pre class="eval"><span class="nowiki">
+ #include "domstubs.idl";
+
+ [scriptable, uuid(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)]
+ interface nsIDOMFabian : nsISupports
+ {
+ void fabian();
+ readonly attribute boolean neat;
+ };
+ </span>
+</pre>
+<p>これが nsIDOMFabian インターフェイスの定義です。インターフェイスの <i>uuid</i> は一意の識別子であり、すべてのインターフェイスに 1 つ必要です。ウインドウで guidgen を使うか、また irc.mozilla.org の #mozilla で「mozbot uuid」コマンドを発行して uuid を生成できます。
+</p><p>コンパイル時に、XPIDL コンパイラはこのインターフェイスの定義を実際の C++ コードに変換しますが、これは純粋な抽象クラスを備えたヘッダファイルです。このクラスは以下のようになっています: </p>
+<pre class="eval"><span class="nowiki">
+ #define NS_IDOMFABIAN_IID \
+ {0xxxxxxxxx, 0xxxxx, 0xxxxx, \
+ { 0xxx, 0xxx, 0xxx, 0xxx, 0xxx, 0xxx, 0xxx, 0xxx }}
+
+ class nsIDOMFabian : public nsISupports {
+ public:
+
+ NS_IMETHOD Fabian(void) = 0;
+ NS_IMETHOD GetNeat(PRBool *aNeat) = 0;
+
+ };
+
+ #define NS_DECL_NSIDOMFABIAN
+ #define NS_FORWARD_NSIDOMFABIAN(_to)
+ #define NS_FORWARD_SAFE_NSIDOMFABIAN(_to)
+ </span>
+</pre>
+<p>見て分かるとおり、自動生成のヘッダは私たちのインターフェイスの IID を備えており、「純粋な抽象クラス」は正しく定義されます。XPIDL コンパイラは IDL メソッドと属性を以下の規則に従って C++ の関数へ変換します:
+</p><p>インターフェイスのメソッドは C++ でも同じ名前を保持します。しかし IDL ではいわゆる「interCaps」モデルを使用しなければなりません。つまり最初の文字は小文字になり、そのあとの新しい単語の最初の文字は大文字になります。たとえば、IDL では getElementById と書くので、C++ では GetElementById に翻訳されることになります。
+</p><p>NS_IMETHOD は基本的に「virtual nsresult」を意味するマクロです。ここでは解説していませんが、規則に従って引数のリストと戻り値の型は正しい C++ の型へ変換されます。
+</p><p>インターフェイスの属性は 2 つの関数になります: getter と setter です。私たちの例では、属性は read-only で宣言されるので、getter だけが定義されます: GetNeat です。引数は自動的に XPIDL によって生成される PRBool 型のオブジェクトへのポインタです。賢いですね。同じ interCaps のモデルが同様に IDL の属性へ適用されることに注意してください。
+</p><p>1.E.d で 3 つのマクロが詳細に解説されます。次のステップは新しいインターフェイスをビルドすることです。 </p><p><br>
+</p>
+<h4 id=".E3.83.93.E3.83.AB.E3.83.89.E3.82.B7.E3.82.B9.E3.83.86.E3.83.A0" name=".E3.83.93.E3.83.AB.E3.83.89.E3.82.B7.E3.82.B9.E3.83.86.E3.83.A0"> ビルドシステム </h4>
+<p>ここはとても簡単なところです: すでにあるものをコピーするだけですから。最初にどのディレクトリへインターフェイスを置くか決めなければなりません。最も論理的選択は、すべての HTML インターフェイスが存在する dom/public/idl/html です。次に、このディレクトリのすべての makefiles へ nsIDOMFabian.idl を追加しなければなりません。これには必要であれば、「MANIFEST」「makefile.win」「Makefile.in」などが含まれます。単に nsIDOMFabian の既存のエントリをコピーしてください。<b>注意: Makefiles では、TABS と ホワイトスペースが混在します。他のエントリはかならず正確にコピーしてください。</b>
+</p><p>次にインターフェイスをビルドするために dom/ へ「make」とタイプしてください。すべてうまく行けば、 nsIDOMFabian.h ファイルが dom/public/idl/html/_xpidlgen/ にあり、インターフェイスに対して C++ コードを保持しているはずです。私の経験ではインターフェイスを機能させる前に、残念ながら「distclean」をビルドしなければならないことがあります。 </p>
+<h4 id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.AE.E5.AE.9F.E8.A3.85" name=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.AE.E5.AE.9F.E8.A3.85"> インターフェイスの実装 </h4>
+<p>インターフェイスの実装方法をさらに詳細に観てみましょう。 C++ の具象クラスによってインターフェイスが実装されなければならないことをすでに知っています。このクラスは複数のインターフェイスを直接または継承によって実装できます (継承の議論は次の節を参照してください)。また私たちは XPIDL で定義されたインターフェイスがメソッドと属性を保持し、これらは XPIDL コンパイラによって C++ の関数に変換されることも知りました。インターフェイスを実装するクラスは明示的に、インターフェイスで定義された各メソッドを実装し、各属性の setter と getter を実装しなければなりません。もし属性が read-only であればもちろん getter だけが必要になります。
+</p><p><a href="https://dxr.mozilla.org/mozilla-central/source/content/html/document/src/nsHTMLDocument.h" rel="custom">nsHTMLDocument.h</a> で定義されている nsHTMLDocument クラスに nsIDOMFabian を実装することにしました。するべきことが 3 つあります: クラスの宣言を変更すること、クラスの本体を変更すること、インターフェイスで宣言された関数をコード化することです。
+</p><p>クラス宣言とクラス本体の変更: </p>
+<pre class="eval"><span class="nowiki">
+ #include "nsIDOMFabian.h"
+ class nsHTMLDocument: public ... ,
+ public nsIDOMFabian
+ {
+ // ...
+ NS_DECL_NSIDOMFABIAN
+ // ...
+ };
+ </span>
+</pre>
+<p>最初に nsIDOMFabian を継承するように、nsHTMLDocument クラスを宣言する必要があります。それからクラスの public なインターフェイスで、マクロの NS_DECL_NSIDOMFABIAN を使ってインターフェイスの実装に必要なメソッドを宣言します。このマクロは XPIDL コンパイラによって自動生成されることを憶えてください。 それは nsIDOMFabian インターフェイスのためのクラスで実装されるメソッドをすべて宣言します。典型的な NS_DECL_NSIFOO マクロは以下のようになっています:
+</p>
+<pre class="eval"><span class="nowiki">
+ #define NS_DECL_NSIFOO \
+ NS_IMETHOD GetBar();
+ </span>
+</pre>
+<p>このマクロはクラスの定義で使われる必要があり、nsFoo クラスは nsFoo::GetBar() メソッドを備えることになります。関数が宣言されたので、最後にコード化が可能になります。
+</p><p>関数を実装する様々な可能性があります。最初の方法は最も簡単です。実装しなければならない関数は nsHTMLDocument::Fabian() と nsHTMLDocument::GetNeat() です。それでは、コード化してみましょう。 </p>
+<pre class="eval">NS_IMETHODIMP nsHTMLDocument::Fabian(void)
+{
+ printf("Hello from the nsIDOMFabian interface\n");
+ // 任意のコード...
+ return NS_OK;
+}
+
+NS_IMETHODIMP nsHTMLDocument::GetNeat(PRBool *aNeat)
+{
+ if(!aNeat) {
+ return NS_ERROR_NULL_POINTER;
+ }
+
+ nsresult rv = Fabian();
+ if( rv == NS_OK ) {
+ *aNeat = PR_TRUE;
+ } else {
+ *aNeat = PR_FALSE;
+ }
+ return NS_OK;
+}
+</pre>
+<p>このコードはもちろん nsHTMLDocument.cpp で書かれます。関数はとても簡単であり、ただ概念を説明しているだけです。2 番めの可能性は「インターフェイス転送マクロ」を使うことです。このマクロはまた XPIDL コンパイラによって自動生成されます。以下はインターフェイス転送の背景にある理論で、そのあとに来るのは nsIDOMFabian のサンプルです。
+</p>
+<h5 id=".E7.90.86.E8.AB.96" name=".E7.90.86.E8.AB.96"> 理論 </h5>
+<p>実際のクラス nsBar を継承する実際のクラス nsFoo があると仮定しましょう。また nsFoo が nsIFoo インターフェイスを実装するとも仮定しましょう。nsFoo が nsIFoo を実装する可能性の 1 つは、 nsIFoo インターフェイスのメソッドを、クラス nsBar のこれらの同じメソッドの実装へ転送することです。
+</p>
+<pre class="eval">// XPIDLでの nsIFoo インターフェイス (最低限の実装)
+interface nsIFoo {
+ attribute type prop;
+ void meth();
+};
+
+class nsBar {
+ NS_IMETHOD GetProp();
+ NS_IMETHOD SetProp();
+ NS_IMETHOD Meth();
+};
+
+class nsFoo : public nsIFoo,
+ public nsBar {
+// nsFoo クラスの定義
+};
+
+nsFoo::GetProp() { return nsBar::GetProp(); }
+nsFoo::SetProp() { return nsBar::SetProp(); }
+nsFoo::Meth() { return nsBar::Meth(); }
+</pre>
+<p>このようなコードが機能するのに nsBar はもちろん GetProp、 SetProp、 Meth を実装しなければなりません。注意が必要なのは、nsBar は nsIFoo インターフェイスのメソッドを実装しますが、nsIFoo インターフェイスを継承<b>しません</b>。 そしてこの場合<b>だけ</b>インターフェイス転送を使用できます。
+</p><p>この時 3 つのメソッドをタイプして nsBar へ送らなくても、代わりに「インターフェイス転送マクロ」の NS_FORWARD_NSIFOO を使用できます。 </p>
+<pre class="eval"><span class="nowiki">
+ #define NS_FORWARD_NSIFOO(_to) \
+ NS_IMETHOD GetProp() { return _to GetProp(); } \
+ NS_IMETHOD SetProp() { return _to SetProp(); } \
+ NS_IMETHOD Meth() { return _to Meth(); }
+ </span>
+</pre>
+<p>このマクロの意味を理解するのは簡単です。 _to クラスの実装に対して nsIFoo インターフェイスのすべてのメソッドを転送します。
+</p><p>nsIDOMFabian のアプリケーション: nsDocument で 2 つの関数をコード化し nsHTMLDocument から nsDocument へ nsIDOMFabian を転送できます。こうすることで例えば、 nsXMLDocument で nsDocument のコードを再利用することもできます。この技術はすでに大抵のドキュメントメソッドで使われています。 </p>
+<pre class="eval">// File nsDocument.h:
+class nsDocument : public ...
+{
+ // ...
+ NS_IMETHOD Fabian(void);
+ NS_IMETHOD GetNeat(PRBool *aNeat);
+ // ...
+}
+
+// File nsDocument.cpp:
+nsDocument::Fabian()
+{
+ // ...
+}
+nsDocument::GetNeat(PRBool *aNeat)
+{
+ // ...
+}
+
+// File nsHTMLDocument.h:
+class nsHTMLDocument : public ... ,
+ public nsIDOMFabian
+{
+ // ...
+ NS_FORWARD_NSIDOMFABIAN(nsDocument::)
+ // ...
+}
+
+// Nothing needed in nsHTMLDocument.cpp
+</pre>
+<p>これは「インターフェイス転送」の簡単な例です。これらの2つの方法は DOM でインターフェイスを実装する最も一般的方法です。もう少し複雑な他の方法がありますが、ここでは扱いません
+</p><p><b>重要な注記: どの DOM クラスによって実装される nsISupports インターフェイスも、転送マクロや宣言マクロを使って実装されません。nsISupports の実装には特別なマクロが提供されます</b>
+</p><p>新しいインターフェイスの追加方法についてのチュートリアルはここで終わりです。ただ全面的に rebuild してください。distclean でビルドするといいでしょう。<b>しかし、JavaScript からメソッドを有効にすることはできません</b>。というのは、nsIDOMFabian は Class Info. にないからです。その追加方法に関しては <a class="external" href="http://www.mozilla.org/docs/dom/mozilla/hacking.html#oneh">Class Info の使い方</a> を参照してください。 </p>
+<h3 id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.AE.E7.B6.99.E6.89.BF_.28.E4.B8.8A.E7.B4.9A.E8.80.85.E5.90.91.E3.81.91.29" name=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.AE.E7.B6.99.E6.89.BF_.28.E4.B8.8A.E7.B4.9A.E8.80.85.E5.90.91.E3.81.91.29"> インターフェイスの継承 (上級者向け) </h3>
+<p>Mozilla における継承モデルは当然 C++ クラスの継承モデルと同じです。オブジェクト指向のプログラミングに詳しい方であれば、この議論の理解には問題はないでしょう。
+</p>
+<h5 id=".E7.94.9F.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.AE.E7.B6.99.E6.89.BF" name=".E7.94.9F.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.82.A4.E3.82.B9.E3.81.AE.E7.B6.99.E6.89.BF"> 生のインターフェイスの継承 </h5>
+<p>最初の概念を理解するのは難しくありません。それは、「インターフェイスの継承」です。XPIDL や header にインターフェイスの定義があれば、そのインターフェイスは必ず他のインターフェイスを継承しています。たとえば、 nsIDOMHTMLAnchorElement インターフェイスにとって以下の「連鎖」が備わっています:<br> nsISupports -&gt; nsIDOMNode -&gt; nsIDOMElement -&gt; nsIDOMHTMLElement -&gt; nsIDOMHTMLAnchorElement
+</p><p>すなわち、クラスが連鎖にあるインターフェイスの 1 つを実装すると、そのクラスは<i>実装されたインターフェイスのすべての祖先</i>を実装しなければならないということです。たとえば、実際のクラスが、nsIDOMElement を実装するなら、そのクラスは nsIDOMNode と nsISupports をも実装しなければならないのです。 </p>
+<h5 id=".E7.90.86.E8.AB.96_2" name=".E7.90.86.E8.AB.96_2"> 理論 </h5>
+<p>インターフェイスの継承がどういうことであるかを理解できたので、もっと一般的なケースを調べてみましょう。最初にごく理論的に考えて、次に nsHTMLAnchorElement のサンプルを使って議論を解説します。
+</p><p>実際のクラス nsFoo によって実装されている DOM オブジェクト Foo があると仮定しましょう。nsIFoo1、nsIFoo2、nsIFoo3 の 3 つのインターフェイス に加えて別の実際のクラス nsBar もあるとしましょう。この状況は以下のようになります: </p>
+<pre class="eval">nsBar &lt;- nsIFoo1
+ |
+ V
+nsFoo &lt;- nsIFoo2 &lt;- nsIFoo3
+</pre>
+<p>この状況で上記に記されているように nsIFoo2 インターフェイスは nsIFoo3 インターフェイスを継承します。 nsFoo は nsIFoo2 を実装しその結果 nsIFoo3 も実装します。nsBar は nsIFoo1 を実装します。実際のクラス nsFoo は別の実際のクラス nsBar を継承します。継承を説明する規則は以下のようになっています:
+</p>
+<ul><li> nsFoo は自動的に nsIFoo1 を実装します。というのは、すでに nsIFoo1 を実装しているクラスを継承しているからです。
+</li><li> nsBar は nsIFoo1 を実装しなければ<i>なりません</i>。
+</li><li> nsFoo は、nsIFoo2 と nsIFoo3 が nsBar へ<i>転送</i>されない限りは、nsIFoo2 と nsIFoo3 を実装しなければ<i>なりません</i>。インターフェイスの転送については 1.E.d の節で解説されています。
+</li></ul>
+<p>これらの規則はとても簡単であり DOM のコードで広く使われています。クラスやインターフェイスが増えるにつれてコードはより複雑になりますが、上記の方法を使えば必ず問題を低減することができます。
+</p>
+<h5 id=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB" name=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB"> サンプル </h5>
+<p>簡単なサンプルである HTML Anchor Element を見てみましょう。 最初に、インターフェイスの継承規則を解説しましょう。nsIDOMHTMLAnchorElement(HTML Anchor Element のために W3C によって定義されたメソッドやプロパティを備えているが)を見れば、それが別のインターフェイスである nsIDOMHTMLElement を継承してるのが分かります:
+</p>
+<pre class="eval">interface nsIDOMHTMLAnchorElement : nsIDOMHTMLElement
+</pre>
+<p>すなわち、nsIDOMHTMLAnchorElement インターフェイスを実装するクラスはすべて nsIDOMHTMLElement インターフェイスも実装しなければならないということです。 nsIDOMHTMLElement を見ると、それが nsIDOMElement を継承しており、後者は nsIDOMNode を継承しており、さらに nsIDOMNode が、nsISupports を継承しているのが分かります。 nsIDOMHTMLAnchorElement は継承のために今述べたすべてのインターフェイスを実装しなければなりません。インターフェイスの実装方法は 1.E.d.の段落を参照してください。
+</p><p>インターフェイスの継承によってトップレベルのインターフェイスが nsISupports であることが分かります。すべてのインターフェイスは直接的にまた間接的に nsISupports を継承しなければなりません。このインターフェイスは 1.B. の節で説明された AddRef()、 Release()、QueryInterface() という3 つのメソッドを定義します。 nsISupports は <a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/base/nsISupports.idl" rel="custom">xpcom/base/</a> で 1999 年以降変更されることなく平和に息づいています。 XPCOM インターフェイスと nsISupports については、<a class="external" href="http://www.mozilla-japan.org/docs/modunote.htm">モジュール化の方法</a> をご参照ください。
+</p><p>インターフェイスが継承された時の実装を解説するのに、HTML Anchor Element を実装している実際のクラスを調べてみましょう。調べるのは nsHTMLAnchorElement です。実際のクラスの継承の連鎖はこのようになっています: </p>
+<pre class="eval">nsGenericElement -&gt; nsGenericHTMLElement -&gt; nsGenericHTMLContainerElement -&gt; nsHTMLAnchorElement
+</pre>
+<p>クラスの定義は以下のようになっています:
+</p>
+<pre class="eval">class nsHTMLAnchorElement : public nsGenericHTMLContainerElement
+class nsGenericHTMLContainerElement : public nsGnericHTMLElement
+class nsGenericHTMLElement : public nsGenericElement
+</pre>
+<pre class="eval">クラスの定義を見ると、nsGenericHTMLElement と nsGenericHTMLContainerElement は直接インターフェイスを実装していません。しかし、nsGenericElement は実装しています:
+</pre>
+<pre class="eval">class nsGenericElement : public nsIHTMLContent
+</pre>
+<p>これはもちろん nsGenericElement が nsIHTMLContent インターフェイスを実装していることになります。 nsIHTMLContent への継承の連鎖は以下のようになります:
+</p>
+<pre class="eval">nsISupports -&gt; nsIContent -&gt; nsIStyledContent -&gt; nsIXMLContent -&gt; nsIHTMLContent
+</pre>
+<p>nsGenericElement は上記のすべてのインターフェイスを実装しなくてはなりません。そして、<i>nsGenericElement を継承するすべての実際のクラスは自動的にこれらのインターフェイスを実装します</i>。 このことはすでにこの段落で定義した規則と一致しています。
+</p>
+<h3 id=".E9.96.A2.E9.80.A3.E8.B3.87.E6.96.99" name=".E9.96.A2.E9.80.A3.E8.B3.87.E6.96.99"> 関連資料 </h3>
+<ul><li> <a href="ja/XPIDL/xpidl">XPIDL リファレンス</a>
+</li><li> <a class="external" href="http://www.mozilla-japan.org/docs/dom/mozilla/classes/">DOM オブジェクトを C++ クラスへマッピングする</a>
+</li><li> <a class="external" href="http://www.mozilla-japan.org/docs/modunote.htm">モジュール化の方法</a>
+</li></ul>
+<div class="noinclude">
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.classes/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.classes/index.html
new file mode 100644
index 0000000000..0095fbdc58
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.classes/index.html
@@ -0,0 +1,109 @@
+---
+title: Components.classes
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.classes
+tags:
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.classes
+---
+<p> </p>
+
+<p><code>Components.classes</code> は、プロパティが <a href="ja/ContractID">ContractID</a> によって索引付けされたクラスである、読み出し専用オブジェクトです。</p>
+
+<h2 id=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB" name=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB">はじめに</h2>
+
+<p><code>Components.classes</code> は、<a href="ja/NsIJSCID">nsIJSCID</a> インターフェースを実装した読み出し専用オブジェクトです。それぞれのオブジェクトは、<a href="ja/XPCOM">XPCOM</a> サービスとして構築またはアクセスされうる XPCOM コンポーネントのクラスのひとつを表します。</p>
+
+<p>このオブジェクトのプロパティは、コンポーネントクラスの ContractID (または人間が読める形式の名前) で索引付けされています。</p>
+
+<p>All of the properties and methods of the nsIJSCID and its ancestor interface <a href="ja/NsIJSID">nsIJSID</a> are available for use on the objects contained in this object.</p>
+
+<p><strong>Note</strong> that <code>Components.classes</code> reflects only those component classes that have been previously installed and registered with the component manager using ContractIDs. If you want to use a class which was only registered with their <a href="ja/CID">CID</a>, use <code><a href="ja/Components.classesByID">Components.classesByID</a></code> instead of <code>Components.classes</code> to retrieve it.</p>
+
+<p>あるマシンには ContractID を指定されたアドオンコンポーネントが存在し、別のマシンにはインストールされていないこともあり得ます。Components.classes は、以前にインストールされ ProgId を用いてコンポーネントマネージャに登録されたコンポーネントクラスのみを反映します。ですから、あるマシンには ProgID を指定されたアドオンコンポーネントが存在し、別のマシンにはインストールされていないこともあり得ます。<code>Components.classes</code> オブジェクトに与えられた要素がそのマシンに登録されていない場合、その要素にアクセスを試みると、ストリクトモードでは JavaScript の警告が生成され、戻り値は JavaScript の <code><a href="ja/Core_JavaScript_1.5_Reference/Global_Properties/undefined">undefined</a></code> になります。要素にアクセスする際は、あらかじめ <code><a href="ja/Core_JavaScript_1.5_Reference/Operators/Special_Operators/in_Operator">in</a></code> オペレータを使って、その要素をテストするべきです。</p>
+
+<pre class="eval">if (!("@some/bogus/class;1" in Components.classes))
+ // do something...
+</pre>
+
+<p><code>Components.classes</code> オブジェクトのプロパティは <code><a href="ja/Core_JavaScript_1.5_Reference/Statements/for...in">for...in</a></code> ループを使って列挙できます。</p>
+
+<h2 id=".E4.BD.BF.E3.81.84.E6.96.B9" name=".E4.BD.BF.E3.81.84.E6.96.B9">使い方</h2>
+
+<h3 id=".E4.B8.8E.E3.81.88.E3.82.89.E3.82.8C.E3.81.9F_ContractID_.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.82.92.E5.8F.96.E5.BE.97.E3.81.99.E3.82.8B" name=".E4.B8.8E.E3.81.88.E3.82.89.E3.82.8C.E3.81.9F_ContractID_.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.82.92.E5.8F.96.E5.BE.97.E3.81.99.E3.82.8B">与えられた ContractID のためのオブジェクトを取得する</h3>
+
+<p>In order to retrieve the object for a given ContractID, you can query the <code>Components.classes</code> array as follows:</p>
+
+<pre class="eval">var clazz0 = Components.classes["@mozilla.org/preferences;1"];
+var clazz1 = Components.classes["@mozilla.org/messenger;1"];
+</pre>
+
+<p>The first line will return you the class object for the ContractID <code>@mozilla.org/preferences;1</code>, the second line will return you the class object for the ContractID <code>@mozilla.org/messenger;1</code>.</p>
+
+<div class="note">
+<p>It may be helpful to abbreviate <code>Components.classes</code> by storing a reference to the object as a constant:</p>
+
+<pre class="eval">// use whatever name suits your fancy -- Cc is probably the most common abbreviation
+const Cc = Components.classes;
+const C = Components.classes;
+
+var clazz0 = Cc["@mozilla.org/preferences;1"];
+var clazz1 = C["@mozilla.org/messenger;1"];
+</pre>
+</div>
+
+<h3 id="XPCOM_.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.82.B9.E3.82.92.E4.BD.9C.E6.88.90.E3.81.99.E3.82.8B" name="XPCOM_.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.82.B9.E3.82.92.E4.BD.9C.E6.88.90.E3.81.99.E3.82.8B">XPCOM コンポーネントのインスタンスを作成する</h3>
+
+<p>An XPCOM component instance can be created from the returned class object as follows:</p>
+
+<pre class="eval">var clazz = Components.classes["@mozilla.org/messenger;1"];
+var obj = clazz.createInstance();
+</pre>
+
+<p><code>createInstance()</code> calls will return <a href="ja/XPConnect">XPConnect</a> wrappers for these native objects which only expose the methods of the <a href="ja/NsISupports">nsISupports</a> interface. This is because the specific interface on the component that the caller desires has not been specified. Specifying that interface is done using the properties of the <code><a href="ja/Components.interfaces">Components.interfaces</a></code> object:</p>
+
+<pre class="eval">var obj = Components.classes["@mozilla.org/supports-array;1"]
+ .createInstance(Components.interfaces.nsISupportsArray);
+</pre>
+
+<p>which is equivalent to:</p>
+
+<pre class="eval">var obj = Components.classes["@mozilla.org/supports-array;1"];
+ .createInstance()
+ .QueryInterface(Components.interfaces.nsISupportsArray);
+</pre>
+
+<p>Alternatively, you can use the <code><a href="ja/Core_JavaScript_1.5_Reference/Operators/Special_Operators/new_Operator">new</a></code> operator on the class object to create a new instance of that class:</p>
+
+<pre class="eval">var clazz = Components.classes["@mozilla.org/supports-array;1"];
+var inst = new clazz(Components.interfaces.nsISupportsArray);
+</pre>
+
+<p>This implicitly calls the <code>createInstance()</code> method for you.</p>
+
+<h3 id="XPCOM_.E3.82.B5.E3.83.BC.E3.83.93.E3.82.B9.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.B8.E3.81.AE.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9" name="XPCOM_.E3.82.B5.E3.83.BC.E3.83.93.E3.82.B9.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.B8.E3.81.AE.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9">XPCOM サービスコンポーネントへのアクセス</h3>
+
+<p>既存のインスタンスは、以下のように、サービスとしてアクセスできます。</p>
+
+<pre class="eval">var clazz = Components.classes["@mozilla.org/preferences;1"];
+var obj = clazz.getService();
+</pre>
+
+<p><code>getService()</code> は、<code>createInstance()</code> のように、ネイティブオブジェクトへの <a href="ja/XPConnect">XPConnect</a> ラッパーを返し、<a href="ja/NsISupports">nsISupports</a> インターフェースのメソッドのみを見せます。これは、呼び出し側の求めるコンポーネント上の特殊なインターフェースが特定されないようにするためです。このインターフェースの指定は、<code><a href="ja/Components.interfaces">Components.interfaces</a></code> オブジェクトの要素を使って行います。</p>
+
+<pre class="eval">var clazz = Components.classes["@mozilla.org/preferences;1"]
+var srv = clazz.getService(Components.interfaces.nsIPref);
+</pre>
+
+<p>これは以下と同等です。</p>
+
+<pre class="eval">var clazz = Components.classes["@mozilla.org/preferences;1"]
+var obj = clazz.getService();
+var srv = obj.QueryInterface(Components.interfaces.nsIPref);
+</pre>
+
+<h2 id=".E3.81.82.E3.82.8B.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6.E3.80.81.E3.82.A4.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.82.B9.E3.81.AE.E4.BD.9C.E6.88.90.E3.81.8C.E5.BF.85.E8.A6.81.E3.81.8B.E3.80.81.E3.82.B5.E3.83.BC.E3.83.93.E3.82.B9.E3.81.A8.E3.81.97.E3.81.A6.E5.88.A9.E7.94.A8.E5.8F.AF.E8.83.BD.E3.81.8B.E3.82.92.E8.AA.BF.E3.81.B9.E3.82.8B" name=".E3.81.82.E3.82.8B.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6.E3.80.81.E3.82.A4.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.82.B9.E3.81.AE.E4.BD.9C.E6.88.90.E3.81.8C.E5.BF.85.E8.A6.81.E3.81.8B.E3.80.81.E3.82.B5.E3.83.BC.E3.83.93.E3.82.B9.E3.81.A8.E3.81.97.E3.81.A6.E5.88.A9.E7.94.A8.E5.8F.AF.E8.83.BD.E3.81.8B.E3.82.92.E8.AA.BF.E3.81.B9.E3.82.8B">あるコンポーネントについて、インスタンスの作成が必要か、サービスとして利用可能かを調べる</h2>
+
+<p>It is not possible to programmatically determine if a given component has to be instantiated or used as a service.</p>
+
+<p>Often, this is stated in the documentation of the component you want to use. If this is not the case, you might want to try and find example usages of that component within <a class="external" href="http://lxr.mozilla.org/mozilla/search">LXR</a>.</p>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.classesbyid/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.classesbyid/index.html
new file mode 100644
index 0000000000..ca8065fee2
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.classesbyid/index.html
@@ -0,0 +1,20 @@
+---
+title: Components.classesByID
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.classesByID
+tags:
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.classesByID
+---
+<p>
+</p><p><code>Components.classesByID</code> は、プロパティが <a href="ja/CID">CID</a> によって索引付けされたクラスである、読み出し専用オブジェクトです。
+</p>
+<h2 id="はじめに"> はじめに </h2>
+<p><code>Components.classesByID</code> は、<a href="ja/NsIJSCID">nsIJSCID</a> インターフェースを実装した読み出し専用オブジェクトです。それぞれのオブジェクトは、<a href="ja/XPCOM">XPCOM</a> サービスとして構築またはアクセスされうる XPCOM コンポーネントのクラスのひとつを表します。
+</p><p><code>Components.classesByID</code> は、要素が CID の「標準的な」形式で索引付けされている以外は <code><a href="ja/Components.classes">Components.classes</a></code> と同様です。また、コンポーネントマネージャによって <a href="ja/ContractID">ContractID</a> を使って登録されたコンポーネントクラスだけでなく、プレーンの CID を使って登録されたクラスも表します。
+</p>
+<h2 id="使い方"> 使い方 </h2>
+<p>In order to retrieve the object for a given CID, you can use that CID as an index with <code>Components.classesByID</code> as follows:
+</p>
+<pre class="eval">var clazz = Components.classesByID["{ed132c20-eed1-11d2-baa4-00805f8a5dd7}"];
+</pre>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.constructor/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.constructor/index.html
new file mode 100644
index 0000000000..dba394eb69
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.constructor/index.html
@@ -0,0 +1,109 @@
+---
+title: Components.Constructor
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.Constructor
+tags:
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.Constructor
+---
+<p>
+</p><p><span id="Summary"></span>
+</p>
+<h3 id="概要"> 概要 </h3>
+<p>XPCOM コンポーネントの新規インスタンスを作成/生成するのに使用できる JavaScript 関数を作成します。
+</p><p><span id="Syntax"></span>
+</p>
+<h3 id="構文"> 構文 </h3>
+<pre class="eval">var func = [ new ] Components.Constructor(<i>contractID</i> [, <i>interfaceName</i> [, <i>initializer</i> ] ]);
+</pre>
+<p><span id="Parameters"></span>
+</p>
+<h3 id="パラメータ"> パラメータ </h3>
+<dl><dt> <code>contractID</code></dt><dd> コンポーネントのコントラクト ID を含む文字列
+</dd><dt> <code>interfaceName</code> </dt><dd> 与えられると、新規作成されるインスタンスそれぞれに対してこの文字列の名前のインターフェイスで <a href="ja/NsISupports/QueryInterface">QueryInterface</a> が呼び出される
+</dd><dt> <code>initializer</code> </dt><dd> 与えられると、この文字列の名前の関数が、新規作成されるインスタンスに対してその時に与えられる引数を使って呼び出される
+</dd></dl>
+<p><span id="Description"></span>
+</p>
+<h3 id="説明"> 説明 </h3>
+<p><code>Components.Constructor()</code> は XPCOM コンポーネントのインスタンス作成に便利なショートカットです。これを使うと、インスタンスを作りたい時に毎回 <code>Components.classes</code>、<code>Components.interfaces</code>、<code>createInstance</code> などをタイピングする手間が無くなります。また、より <a href="ja/JavaScript">JavaScript</a> 的な構文で XPCOM オブジェクトを作成できるようになります。もう一つの重要な恩恵として、<code>Components.Constructor()</code> はいくつかの計算をあらかじめ行うので、<code>Components.Constructor()</code> から返される関数を使って XPCOM オブジェクトを作成した方が下記に示すように基本原則に基づいてオブジェクトを作成するよりも高速になります。 (JavaScript エンジンと XPCOM の間のレイヤーをまたぐ回数がより少なくて済むというのも高速になる理由の一つです。)
+</p><p><code>Components.Constructor()</code> によって返される関数のふるまいは、 <code>Components.Constructor()</code> が呼び出されたときに与えられた引数によって異なります。与えられた引数が 1 つだけなら、その引数は作成される XPCOM コンポーネントの<a href="ja/Contract_ID">コントラクト ID</a> になります。コンポーネントはすぐ返されますが、そのコンポーネントからは基本インターフェイスの <code><a href="ja/NsISupports">nsISupports</a></code> しか利用できません。なのでそのオブジェクトのメソッドを呼び出すためにはそれに対して <a href="ja/NsISupports/QueryInterface">QueryInterface</a> を呼び出さなければなりません。例えば、
+</p>
+<pre class="eval">var BinaryInputStream = Components.Constructor("@mozilla.org/binaryinputstream;1");
+var bis = new BinaryInputStream();
+print(bis.toString()); // "[xpconnect wrapped nsISupports]"
+
+try
+{
+ // someInputStream は既存の nsIInputStream
+ // bis は nsIBinaryInputStream に QI されていないのでエラーを投げる
+ bis.setInputStream(someInputStream);
+}
+catch (e)
+{
+ bis.QueryInterface(Components.interfaces.nsIBinaryInputStream);
+ bis.setInputStream(someInputStream); // これで成功
+}
+</pre>
+<p>引数が 2 つ与えられると、作成されるインスタンスは第 2 引数の名前を持つ XPCOM インターフェイスに <code><a href="ja/NsISupports/QueryInterface">QueryInterface</a></code> されます。
+</p>
+<pre class="eval">var BinaryInputStream = Components.Constructor("@mozilla.org/binaryinputstream;1",
+ "nsIBinaryInputStream");
+var bis = new BinaryInputStream();
+print(bis.toString()); // "[xpconnect wrapped nsIBinaryInputStream]"
+
+// someInputStream は既存の nsIInputStream
+bis.setInputStream(someInputStream); // 成功
+</pre>
+<p>引数が 3 つ与えられると、インスタンスに対して <code><a href="ja/NsISupports/QueryInterface">QueryInterface</a></code> されるだけでなく、初期化メソッドも呼び出されたことになります。初期化メソッドに使われる引数は、<code>Components.Constructor()</code> によって作成された関数を呼び出す時に渡された引数です。
+</p>
+<pre class="eval">var BinaryInputStream = Components.Constructor("@mozilla.org/binaryinputstream;1",
+ "nsIBinaryInputStream",
+ "setInputStream");
+try
+{
+ // 引数の数が nsIBinaryInputStream.setInputStream が
+ // 取るものと異なるのでエラーを投げる
+ var bis = new BinaryInputStream();
+}
+catch (e)
+{
+ // someInputStream は既存の nsIInputStream
+ bis = new BinaryInputStream(someInputStream); // 成功
+ var bytes = bis.readByteArray(<i>someNumberOfBytes</i>); // 成功
+}
+</pre>
+<p>基本原則に基づいたインスタンスの作成と <code>Components.Constructor()</code> を使ったインスタンスの作成を比較して下さい。後者の方が前者よりもずっと (たくさんの違う場所でコンポーネントのインスタンスを作成している場合には特に) 読みやすくなります。
+</p>
+<pre class="eval">var bis = Components.classes["@mozilla.org/binaryinputstream;1"]
+ .createInstance(Components.interfaces.nsIBinaryInputStream);
+bis.setInputStream(someInputStream);
+</pre>
+<pre class="eval">// 前もって BinaryInputStream が初期化されているとして
+var bis = new BinaryInputStream(someInputStream);
+</pre>
+<p><code>Components.Constructor()</code> は、他の一般的なメソッドを使って実現できる挙動のシンタックスシュガーに過ぎません (高速できれいなシンタックスシュガーですが)。 次の JavaScript 関数と等価です。
+</p>
+<pre class="eval">function Components_Constructor(contractID, interfaceName, initializer)
+{
+ var ccArgs = arguments;
+
+ function ctor()
+ {
+ var instance = Components.classes[contractID]
+ .createInstance(Components.interfaces.nsISupports);
+
+ if (ccArgs.length &gt; 1)
+ {
+ instance.QueryInterface(Components.interfaces[interfaceName]);
+
+ if (ccArgs.length &gt; 2)
+ instance[initializer].apply(instance, arguments);
+ }
+
+ return instance;
+ }
+
+ return ctor;
+}
+</pre>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.exception/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.exception/index.html
new file mode 100644
index 0000000000..f7a4540734
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.exception/index.html
@@ -0,0 +1,26 @@
+---
+title: Components.Exception
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.Exception
+tags:
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.Exception
+---
+<p>
+</p>
+<h3 id="要約"> 要約 </h3>
+<p><code>Components.Exception</code> は、nsIXPCException オブジェクトを作る JavaScript コンストラクタです。これらの例外オブジェクトは JavaScript で XPCOM インターフェースを実装する際に投げられるでしょう。例外が補足 (catch) できなかった場合、単純に <code>nsresult</code> の値を投げるよりも、この方がエラーコンソールにより分かりやすい診断結果を表示できるでしょう。
+</p><p><a href="ja/NsIXPCException">nsIXPCException</a> もご覧ください。
+</p>
+<h3 id="構文"> 構文 </h3>
+<pre class="eval">var exception = [ new ] Components.Exception([ <i>message</i> [, <i>result</i> [, <i>stack</i> [, <i>data</i> ] ] ] ]);
+</pre>
+<h3 id="パラメータ"> パラメータ </h3>
+<dl><dt> <code>message</code> </dt><dd> 例外が投げられた場合に、あるいは開発者が指定した場所で、エラーコンソールに表示する文字列。デフォルトは「exception」
+</dd><dt> <code>result</code> </dt><dd> 例外の <code>nsresult</code> 値。デフォルトは <code>NS_ERROR_FAILURE</code>
+</dd><dt> <code>stack</code> </dt><dd> 例外にセットされる XPCOM スタック。デフォルトは現在のスタックチェーン
+</dd><dt> <code>data</code> </dt><dd> 保存したい任意の追加データ。デフォルトは <code>null</code>
+</dd></dl>
+<h3 id="実例"> 実例 </h3>
+<pre class="eval">throw Components.Exception("I am throwing an Exception from a Javascript XPCOM component.");
+</pre>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.id/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.id/index.html
new file mode 100644
index 0000000000..5908f888b6
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.id/index.html
@@ -0,0 +1,23 @@
+---
+title: Components.ID
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.ID
+tags:
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.ID
+---
+<p>
+</p>
+<h3 id="要約"> 要約 </h3>
+<p><code>Components.ID</code> は、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIJSID" title="">nsIJSID</a></code> インターフェースに合わせたネイティブオブジェクトを作成するコンストラクタです。
+</p>
+<h3 id="構文"> 構文 </h3>
+<pre class="eval">var interfaceID = [ new ] Components.ID(iid);
+</pre>
+<h3 id="パラメータ"> パラメータ </h3>
+<dl><dt> <code>iid</code></dt><dd> A string of the format <code>'{00000000-0000-0000-0000-000000000000}'</code> giving the interface ID of the interface
+</dd></dl>
+<h3 id="説明"> 説明 </h3>
+<p><code>Components.ID</code> は、インターフェース ID をパラメータとして取る、QueryInterface、getInterfaces などのメソッドを実装するために使われるインターフェース ID を作成します。
+</p><p><code><a href="ja/Components.classes">Components.classes</a></code>、<code><a href="ja/Components.classesByID">Components.classesByID</a></code>、<code><a href="ja/Components.interfaces">Components.interfaces</a></code> は、ほとんどの JavaScript コードが扱うことのない <code>nsID</code> をほぼすべて提供します。Components.classes, Components.classesByID, Components.interfaces はほとんどの JavaScript コードが扱う必要がある nsID のほぼ全てです。例外は、コンポーネントが JavaScript で書かれていて、自身を独自の <code>nsID</code> でコンポーネントマネージャに登録する必要がある場合です。その際の ID は未登録のため、<code><a href="ja/Components.classes">Components.classes</a></code> には現れません。
+</p>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.interfaces/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.interfaces/index.html
new file mode 100644
index 0000000000..8105f7f239
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.interfaces/index.html
@@ -0,0 +1,37 @@
+---
+title: Components.interfaces
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.interfaces
+tags:
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.interfaces
+---
+<p>
+</p><p><code>Components.interfaces</code> は、プロパティがそれらの名前によって索引付けされたクラスである、読み出し専用オブジェクトです。
+</p>
+<h2 id="はじめに"> はじめに </h2>
+<p><code>Components.interfaces</code> は、<a href="ja/NsIJSCID">nsIJSCID</a> インターフェースを実装した読み出し専用オブジェクトです。それぞれのオブジェクトは、いくつかのコンポーネントが実装している (あるいは未実装の可能性もあります) <a href="ja/XPCOM">XPCOM</a> インターフェースのひとつを表します。
+</p><p><br>
+対応する <code>.idl</code> の宣言が <code>[scriptable]</code> として設計されたインターフェースのみを反映します。つまり、<a href="ja/XPConnect">XPConnect</a> が JavaScript へ反映することのできるインターフェースということです。
+</p><p><code>Components.interfaces</code> オブジェクトのプロパティは、<code>nsID</code> nsID 型のパラメータを除いた XPCOM メソッドで利用されます。これには <code><a href="ja/NsISupports">nsISupports</a>::<a href="ja/NsISupports/QueryInterface">QueryInterface</a></code>、<code>nsICID::getService</code> が受け取る追加パラメータ、<code>nsICID::createInstance</code> (JavaScript から呼ばれた場合)、<code><a href="ja/NsIClassInfo">nsIClassInfo</a>::<a href="ja/NsIClassInfo/getInterfaces">getInterfaces</a></code> が含まれます。
+</p><p><code>Components.interfaces</code> オブジェクトのプロパティは <code><a href="ja/Core_JavaScript_1.5_Reference/Statements/for...in">for...in</a></code> ループを使って列挙できます。
+</p>
+<h2 id="使い方"> 使い方 </h2>
+<h3 id="インターフェースオブジェクトへのアクセス"> インターフェースオブジェクトへのアクセス </h3>
+<p><code>Components.interfaces</code> オブジェクトのプロパティはインターフェース名で索引付けされます。インターフェースオブジェクトは以下のようにして取得できます。
+</p>
+<pre class="eval">var iface = Components.interfaces.nsISupportsArray;
+</pre>
+<p>この戻り値は <code>nsISupportsArray</code> インターフェースのインターフェースオブジェクトです。
+</p>
+<h3 id="インターフェースで定義されたコンスタントへのアクセス"> インターフェースで定義されたコンスタントへのアクセス </h3>
+<p>Interface descriptions (cf. <a href="ja/XPIDL">XPIDL</a>) may not only contain method declarations, but also constants. For example, assume we have the following interface declaration:
+</p>
+<pre class="eval">interface nsIFoo : nsISupports {
+ const PRUint32 MYFLAG = 5;
+};
+</pre>
+<p>The constant <code>MYFLAG</code> can then be accessed using
+</p>
+<pre class="eval">var myFlag = Components.interfaces.nsIFoo.MYFLAG;
+</pre>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.lastresult/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.lastresult/index.html
new file mode 100644
index 0000000000..d830cc301c
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.lastresult/index.html
@@ -0,0 +1,57 @@
+---
+title: Components.lastResult
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.lastResult
+tags:
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.lastResult
+---
+<p>
+</p><p><code>Components.lastResult</code> は XPConnect を介した直前の <a href="ja/XPCOM">XPCOM</a> メソッド呼び出しの結果コードである数値コード <code>nsresult</code> を返します。
+</p>
+<h2 id="はじめに"> はじめに </h2>
+<p><code>Components.lastResult</code> は一般的に、「成功」コードを返す XPCOM メソッドの結果のテストにのみ役立ちます。というのは、失敗した結果コードは XPConnect が例外に変換して、呼び出し元の JavaScript メソッドへ投げるからです。ほとんどのインターフェースは 1 つの成功コード (<code>NS_OK</code>) だけを返すので、<code>Components.lastResult</code> はほとんど必要ありません。
+</p><p><code>Components.lastResult</code> が利用される場合は、対象の呼び出しの後テストのためにローカル変数に保存することが、複数のテストを <code>Components.lastResult</code> に対して行うよりも適当です。多くの「Components」プロパティとメソッドは XPConnect で実装されていて、それに続く <code>Components.lastResult</code> 呼び出しは対象とした呼び出しでなく「暗黙的な」 XPConnect 呼び出しの結果を返すかもしれないからです。
+</p>
+<h2 id="実例"> 実例 </h2>
+<p>In the following example, the local variable <code>i</code> contains the actual result returned by <code>bar()</code> (assuming that <code>bar()</code> is called via XPConnect), and <code>Components.lastResult</code> contains the success code returned by <code>bar()</code>.
+</p>
+<pre class="eval">// Given that foo.bar is a method that might return
+// the success codes NS_OK, '5', and '6' OR some error code...
+try
+{
+ var i = foo.bar();
+
+ switch (Components.lastResult)
+ {
+ case Components.results.NS_OK:
+ // NS_OK is good!
+ break;
+ case 5:
+ // do something with 5 here
+ break;
+ case 6:
+ // do something with 6 here
+ break;
+ default:
+ // this was a success code we did not expect. Bad component!
+ break;
+ }
+ // and so on....
+}
+catch (e)
+{
+ // the call threw an exception or a native component returned
+ // a failure code!
+ if (e instanceof Components.interfaces.nsIXPCException)
+ {
+ // we might do something interesting here with the exception object
+ var rv = e.result;
+ }
+ else
+ {
+ // if we don't know how to handle it then rethrow
+ throw e;
+ }
+}
+</pre>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.manager/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.manager/index.html
new file mode 100644
index 0000000000..29aea92083
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.manager/index.html
@@ -0,0 +1,11 @@
+---
+title: Components.manager
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.manager
+tags:
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.manager
+---
+<p>
+</p><p><code>Components.manager</code> はグローバルなネイティブコンポーネントマネージャーサービスの便利な反映です。<a href="ja/NsIComponentManager">nsIComponentManager</a> インターフェースのスクリプト可能なメソッドはこのオブジェクトで直接呼び出しできます。
+</p>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.results/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.results/index.html
new file mode 100644
index 0000000000..129d147668
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.results/index.html
@@ -0,0 +1,40 @@
+---
+title: Components.results
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.results
+tags:
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.results
+---
+<p>
+</p><p><code>Components.results</code> は、<code><a href="https://dxr.mozilla.org/mozilla-central/source/js/src/xpconnect/src/xpc.msg" rel="custom">js/src/xpconnect/src/xpc.msg</a></code> にあるマクロの最初のパラメータとしてリストされた名前のプロパティを持つ、読み出し専用オブジェクトです。各オブジェクトの値はそのコンスタントの値に対応しています。
+</p>
+<h2 id="はじめに"> はじめに </h2>
+<p><code>Components.results</code> は、よく知られた XPCOM の結果コードの名前をプロパティに持つオブジェクトで、それぞれの値は対応する結果コードに対応しています。このオブジェクトのプロパティは、未知の nsresult 変数をテストするのに利用したり、失敗を示すために「投げ」たりできます。
+</p>
+<pre class="eval"> if(something_unexpected_happened)
+ throw Components.results.NS_ERROR_UNEXPECTED;
+</pre>
+<p><code>Components.results</code> オブジェクトのプロパティは <code><a href="ja/Core_JavaScript_1.5_Reference/Statements/for...in">for...in</a></code> ループを使って列挙できます。
+</p>
+<h2 id="使い方"> 使い方 </h2>
+<h3 id="nsISupports_の実装"> <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> の実装 </h3>
+<p>The standard <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> is usually implemented in JavaScript by using <code>Components.results</code> to get a failure return value if <code> does not implement the given interface. Note the common use of an abbreviation for &lt;code&gt;Components.results</code>, <code>Cr</code>:
+</p>
+<pre class="eval">const Ci = Components.interfaces, Cr = Components.results;
+
+function Class()
+{
+ /* ... */
+}
+Class.prototype =
+{
+ /* ... */
+ QueryInterface: function(id)
+ {
+ if (id.equals(Ci.IMyInterface))
+ return this;
+ throw Cr.NS_ERROR_NO_INTERFACE;
+ }
+};
+</pre>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.returncode/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.returncode/index.html
new file mode 100644
index 0000000000..ad0542e783
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.returncode/index.html
@@ -0,0 +1,28 @@
+---
+title: Components.returnCode
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.returnCode
+tags:
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.returnCode
+---
+<p>
+</p><p><code>Components.returnCode</code> は、<code>return</code> 命令による戻り値に加えて <a href="ja/XPCOM">XPCOM</a> の結果コードを保持できるプロパティです。
+</p>
+<div class="warning">
+<p>Note that <code>Components.returnCode</code> is currently non-functional due to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=287107" title='FIXED: xpcwrappedjsclass.cpp rev 1.73 regressed "return" of NS_COMFALSE (Components.returnCode)'>バグ 287107</a>. This problem was introduced in Mozilla 1.4.
+</p>
+</div>
+<h2 id=".E4.BD.BF.E3.81.84.E6.96.B9" name=".E4.BD.BF.E3.81.84.E6.96.B9"> 使い方 </h2>
+<p><code>Components.returnCode</code> は、JavaScript メソッドが特定の <code>nsresult</code> コードを返すことを、そのメソッドの XPCOM 呼び出し元へ示すのに利用できるプロパティです。
+</p><p>一般的には、<a href="ja/XPConnect">XPConnect</a> は JavaScript コードが <code>nsresult</code> コードを心配する必要のないようにうまく働きます。デフォルトでは、JavaScript メソッドの結果が成功だと、XPConnect は結果コード <code>NS_OK</code> を呼び出し元へ返します。もし JavaScript コードが失敗のシグナルを送る必要がある場合は、例外を投げることで果たします。しかし、成功コードの返り値を規定した XPCOM インターフェースがごくわずかに存在します。<code>Components.returnCode</code> はそれら稀なインターフェースを JavaScript で実装できるようにするために存在します。 </p>
+<h2 id=".E5.AE.9F.E4.BE.8B" name=".E5.AE.9F.E4.BE.8B"> 実例 </h2>
+<pre class="eval">var foo = {
+ bar: function(i) {
+ if (yada_yada)
+ Components.returnCode = 5;
+
+ return i * 2;
+ }
+};
+</pre>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.stack/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.stack/index.html
new file mode 100644
index 0000000000..f5b60e5c92
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.stack/index.html
@@ -0,0 +1,11 @@
+---
+title: Components.stack
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.stack
+tags:
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.stack
+---
+<p>
+</p><p><code>Components.stack</code> は、現在の JavaScript コールスタックのスナップショットを表す <a href="ja/NsIStackFrame">nsIStackFrame</a> (<a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/base/nsIException.idl#50" rel="custom">IDL 定義</a>) 型の読み出し専用プロパティです。これは様々な診断目的で利用できます。
+</p>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.evalinsandbox/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.evalinsandbox/index.html
new file mode 100644
index 0000000000..6c0cd7bf78
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.evalinsandbox/index.html
@@ -0,0 +1,34 @@
+---
+title: Components.utils.evalInSandbox
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.evalInSandbox
+tags:
+ - Add-ons
+ - Developing Mozilla
+ - Extensions
+ - JavaScript
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.evalInSandbox
+---
+<p>
+</p>
+<h3 id="はじめに"> はじめに </h3>
+<p>制限付き特権を持つ環境下で <a href="ja/JavaScript">JavaScript</a> のコードを評価したい場合があるかもしれません。<a href="ja/Firefox_1.5">Firefox 1.5</a> (Gecko 1.8) 以降にはこのための API が存在します。それにはそのコンテキスト内でコードを作成し、評価できる「サンドボックス (sandbox)」という概念が含まれています。このメソッドを用いて評価されるコードは常に普通のウェブページと同様の制限付き特権を持つ環境下で評価されます。
+</p>
+<h4 id="使用法"> 使用法 </h4>
+<p>evalInSandbox を使用するには、まず <code>Components.utils.Sandbox</code> というコンストラクタを用いてサンドボックスオブジェクトを作成する必要があります。サンドボックスは主要な URI で初期化しなければなりません。この URI は同一生成元 (same origin) セキュリティチェックに使用されます。例えば、<code><span>http://www.example.com/</span></code> という URI を渡すと、このサンドボックスを用いて評価されるコードは <span>http://www.example.com</span> からのデータにアクセスできるようになります。ウェブページの JavaScript から <code><a href="ja/DOM/document.domain">document.domain</a></code> をセットして同一生成元セキュリティチェックを変更することができるため、DOM window オブジェクトをサンドボックスのコンストラクタに渡してしまうこともできます。
+</p>
+<pre>// 主要な URI を渡してサンドボックスを作成
+var s = Components.utils.Sandbox("http://www.example.com/");
+// サンドボックスオブジェクトは実行するスクリプトに対して
+// グローバルスコープを持つ
+s.y = 5;
+var result = Components.utils.evalInSandbox("x = y + 2; x + 3", s);
+// result は 10、s.x は 7 となる
+
+s.foo = Components;
+// この場合は "Permission Denied" というエラーが生じる
+Components.utils.evalInSandbox("foo.classes", s);
+</pre>
+<div class="noinclude">
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.forcegc/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.forcegc/index.html
new file mode 100644
index 0000000000..cafc9f1ca9
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.forcegc/index.html
@@ -0,0 +1,20 @@
+---
+title: Components.utils.forceGC
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.forceGC
+tags:
+ - NeedsContent
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.forceGC
+---
+<p>このメソッドはスクリプトにガベージコレクションサイクルを強制します。 JavaScript ヒープがある大きさを超えると Mozilla JavaScript エンジンは自動的にガベージコレクションを実行するでしょう。もっとも、この機構は JS オブジェクトにぶら下がる ネイティブ (C++) XPCOM オブジェクトを把握してはいません。多くの場合、 JavaScript アプリケーションは巨大な XPCOM (のツリー) を参照している JavaScript オブジェクトについての内部情報を持っており、いつ参照しなくなるかを知っています。この場合 JavaScript からガベージコレクションサイクルを強制できることが重要になることがあります。</p>
+
+<p>ガベージコレクションを強制することは、他にも<a href="ja/Components.utils.getWeakReference">弱い JavaScript 参照</a>のハッシュからの死んだ参照 (<span style="color: green;">dead reference</span>)をクリーニングする前です。</p>
+
+<p>このメソッドを使う人はガベージコレクションが非常に負担の大きい (<span style="color: green;">expensive</span>)操作で、絶対必要だと<strong>知っている</strong> 時のみ使用すべきだとことに注意してください。</p>
+
+<div class="note"><strong>注</strong>: <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIDOMWindowUtils#garbageCollect()">nsIDOMWindowUtils.garbageCollect()</a></code> は同様の機能を提供しますが、 JavaScript エンジンのガベージコレクターに加えてサイクルコレクターも起動します。これにより、ガベージコレクターに依存するテストケースなど、 JavaScript オブジェクトのサイクルを構築する XPCOM コンポーネントも回収されることが重要になるかもしれないと分かるでしょう。</div>
+
+<p><code>UniversalXPConnect</code> 特権が必要です。</p>
+
+<p>もし、実行されている JavaScript コードがない状態で、将来的にガベージコレクションを起こすことをスケジューリングしたい場合は、代わりに <a href="/en/Components.utils.schedulePreciseGC" title="en/Components.utils.schedulePreciseGC"><code>Components.utils.schedulePreciseGC()</code></a> を使用することができます。</p>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.getweakreference/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.getweakreference/index.html
new file mode 100644
index 0000000000..7d07c19b32
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.getweakreference/index.html
@@ -0,0 +1,45 @@
+---
+title: Components.utils.getWeakReference
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.getWeakReference
+tags:
+ - XPCOM
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.getWeakReference
+---
+<p>このメソッドは <a href="ja/Firefox_3">Firefox 3</a> で導入され、オブジェクトの弱い参照 (<span style="color: green;">weak reference</span>)を得るために使います。オブジェクトの参照を得るには、結果のオブジェクトに対して <code>get()</code> を実行する必要があります。</p>
+
+<p>加えて、 <code>get()</code> が成功しても、オブジェクトが有効であるとは限りません。単にまだガベージコレクトされていないからかもしれないからです。オブジェクトが本当に欲しいものであるかを確認するには、 (DOM ノードの <a href="/ja/docs/Web/API/Node/parentNode" title="指定されたノードの DOM ツリー内の親ノードを返します。"><code>Node.parentNode()</code></a> のように) 他の角度からチェックする必要があります。</p>
+
+<h3 id="文法">文法</h3>
+
+<pre>weakRef = Components.utils.getWeakReference(<em>obj</em>);
+</pre>
+
+<h4 id="引数">引数</h4>
+
+<dl>
+ <dt><code>obj</code></dt>
+ <dd>弱い参照を得ようとするオブジェクト。</dd>
+</dl>
+
+<div class="note">
+<p><strong>注:</strong> <span title="(Firefox 11.0 / Thunderbird 11.0 / SeaMonkey 2.8)">Gecko 11.0</span> では、 このメソッドは <code>obj</code> が <code>null</code> の場合に例外を投げるように変更されました。 <span title="(Firefox 12.0 / Thunderbird 12.0 / SeaMonkey 2.9)">Gecko 12.0</span> で、暗黙に失敗するという以前の動作に戻されました。</p>
+</div>
+
+<h3 id="例">例</h3>
+
+<p>こちらの例では、ウィンドウへの弱い参照を把握します。そして後から、配列の中から一致するものを探して使用します。</p>
+
+<pre>var arr = [];
+
+arr.push(Cu.getWeakReference(window));
+
+// この部分は他のブロックで実行されます。
+for (var i=0; i&lt;arr.length; i++) {
+ if (arr[i].get() == window) {
+ // ウィンドウが見つかった
+ break;
+ }
+}
+</pre>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.import/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.import/index.html
new file mode 100644
index 0000000000..68cf7c5539
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.import/index.html
@@ -0,0 +1,118 @@
+---
+title: Components.utils.import
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.import
+tags:
+ - NeedsContent
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.import
+---
+<p>このメソッドは <a href="/ja/Firefox_3_for_developers" title="ja/Firefox_3_for_developers">Firefox 3</a> で導入され、異なるスコープ間でコードを簡単に共有するのに使われます。例えば、自分のコンポーネントの中で、コンポーネント登録の長い定型文をコピー&ペーストすることを避けるために <a href="/ja/XPCOMUtils.jsm" title="ja/XPCOMUtils.jsm">XPCOMUtils.jsm</a> をインポートすることができます。</p>
+
+<p>詳細は、<a href="/ja/JavaScript_code_modules/Using" title="ja/Using_JavaScript_code_modules">JavaScript コードモジュールの利用</a> を参照してください。</p>
+
+<div class="note">
+<p><strong>注記:</strong> <span title="(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)">Gecko 2.0</span> 以前、JavaScript コードモジュールは <strong>file:</strong> URL または <strong>resource:</strong> URL のみでしか読み込めませんでした。<span title="(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)">Gecko 2.0</span> で <strong>chrome:</strong> URL からの読み込みに対応しました。JAR アーカイブ内にあっても使用できます。</p>
+</div>
+
+<p><span id="Syntax"></span></p>
+
+<h3 id="Syntax" name="Syntax">構文</h3>
+
+<pre class="eval">Components.utils.import<em>(url</em> [, <em>scope</em>]);
+
+// 上記のコードでは jslint などの構文チェックツールコンパイラエラーが報告される場合は以下のように書けます。
+
+Components.utils["import"](<em>url </em>[, <em>scope</em>]);</pre>
+
+<p><span id="Parameters"></span></p>
+
+<h3 id="Parameters" name="Parameters">引数</h3>
+
+<dl>
+ <dt><code>url</code></dt>
+ <dd>読み込まれるスクリプトの URL の文字列。URL は、ディスク上のファイルを指さなくてはなりません。JAR ファイル内を指すことがあります。</dd>
+ <dt><code>scope</code></dt>
+ <dd>スクリプト上にインポートされる任意のオブジェクト。省略した場合、グローバルオブジェクトが使用されます。</dd>
+ <dd>
+ <div class="warning">
+ <p>Under Boot2Gecko, the scope is not optional. If your code is meant to work on all platforms, you should always provide a scope.</p>
+
+ <p>In case of doubt, <code>this</code> is generally a good scope.</p>
+ </div>
+ </dd>
+ <dt>return value</dt>
+ <dd>the module's global object.<br>
+ use of the return value is discouraged since it grants access to the module's internal properties which are not part of its public API.</dd>
+</dl>
+
+<p>読み込んだファイル内でエラー (構文エラーなど) が発生した場合、import が例外を投げます。</p>
+
+<p><span id="Example"></span></p>
+
+<h3 id="Example" name="Example">例</h3>
+
+<pre class="eval">Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+</pre>
+
+<p><span id="Difference_from_mozIJSSubScriptLoader"></span></p>
+
+<h3 id="Difference_from_mozIJSSubScriptLoader" name="Difference_from_mozIJSSubScriptLoader">mozIJSSubScriptLoader との違い</h3>
+
+<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIJSSubScriptLoader" title="">mozIJSSubScriptLoader</a></code> との違い:</p>
+
+<ul>
+ <li>異なる場所から同じコードをインポート/読み込みした時の挙動
+ <ul>
+ <li>サブスクリプトローダ (<span style="color: green;">subscript loader</span>) は、特定のコードが実行される度毎に 呼び出し元 (<span style="color: green;">caller</span>) のグローバルオブジェクトで評価します。</li>
+ <li><code>Components.utils.import</code> はそれぞれのモジュールのコードを一度だけ、自分自身のスコープの中で評価します</li>
+ </ul>
+
+ <p>例:</p>
+
+ <pre class="eval">var scope1 = {}, scope2 = {};
+Components.utils.import("resource://gre/modules/JSON.jsm", scope1);
+Components.utils.import("resource://gre/modules/JSON.jsm", scope2);
+assert(scope2.XPCOMUtils === scope1.XPCOMUtils);
+</pre>
+
+ <p>...<code>true</code> を返します。対して:</p>
+
+ <pre class="eval">var someURL = "resource://gre/modules/JSON.jsm";
+var obj1 = {}, obj2 = {};
+var loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
+ .getService(Components.interfaces.mozIJSSubScriptLoader);
+loader.loadSubScript(someURL, obj1);
+loader.loadSubScript(someURL, obj2);
+assert(obj2 === obj1);
+</pre>
+
+ <p>..<code>false</code> を返します。</p>
+
+ <p>これは、異なるスコープで実行している JS 間での効果的なコード (とデータ?) の共有に <code>Components.utils.import</code> がより適している事を意味しています。</p>
+ </li>
+</ul>
+
+<p><span id="Additional_Resources"></span></p>
+
+<h3 id="Additional_Resources" name="Additional_Resources">追加リソース</h3>
+
+<article class="approved text-content">
+<div class="boxed translate-rendered">
+<ul>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Components.utils">Components.utils</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=238324" title="FIXED: Implement JavaScript code-sharing module system">バグ 238324</a></li>
+ <li>The documentation in <a href="https://dxr.mozilla.org/mozilla-central/source/js/xpconnect/idl/xpccomponents.idl" rel="custom">xpccomponents.idl</a></li>
+ <li>The tests in <code><a href="https://dxr.mozilla.org/mozilla-central/source/js/xpconnect/tests/unit/" rel="custom">js/xpconnect/tests/unit/</a></code></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Using#Importing_CommonJS_modules">Importing SDK/CommonJS modules into other code</a></li>
+</ul>
+</div>
+</article>
+
+<div class="ckeditor-container editor-container dirty">
+<div class="editor">
+<div style="height: 168px;">
+<div style="border: 1px solid rgb(182, 182, 182); width: 503px; position: fixed; top: 0px;"> </div>
+</div>
+</div>
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.reporterror/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.reporterror/index.html
new file mode 100644
index 0000000000..56489ade2e
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils.reporterror/index.html
@@ -0,0 +1,40 @@
+---
+title: Components.utils.reportError
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.reportError
+tags:
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.reportError
+---
+<p><code>Components.utils.reportError</code> は、<a href="ja/Error_Console">エラーコンソール</a>に JavaScript の Error オブジェクトを送り、プログラムの実行に戻ります。例外を「食べて」おきながらも、例外をコンソールに送りたい例外処理ブロックで用います。</p>
+
+<p>これは必ずパラメータを 1 つ用いて呼び出します。通常、このパラメータは例外ハンドラが受け取ったオブジェクトです。それが JavaScript のエラーオブジェクトでなければ、パラメータは文字列に変換され、新しくエラーとして送られます。つまり、<code>Components.utils.reportError</code> を用いてデバッグメッセージをエラーコンソールに送ることができるということです。<a href="ja/DOM/window.dump">dump()</a> を用いるとネイティブコンソールにメッセージを出力できるのと同じようなものです。</p>
+
+<p>しかしながらログをとるには <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIConsoleService" title="">nsIConsoleService</a></code> を使用すべきです。これは <code>reportError</code> とは異なり、メッセージを通常の深刻度で記録するためです。</p>
+
+<pre class="eval">function myDump(aMessage) {
+ var consoleService = Components.classes["@mozilla.org/consoleservice;1"]
+ .getService(Components.interfaces.nsIConsoleService);
+ consoleService.logStringMessage("My component: " + aMessage);
+}
+</pre>
+
+<p>Firefox 3: エラーコンソールにはデフォルトではクロームエラーが表示されません。それらを表示するには、 'javascript.options.showInConsole' の設定を true に設定するか、代わりに <a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIConsoleService" title="en/Console service">nsConsoleService </a>を使用してメッセージを表示します。</p>
+
+<p>Firefox 4: このバージョンでは、デフォルトで 'javascript.options.showInConsole' の設定が true に設定されています。</p>
+
+<h3 id=".E4.BE.8B" name=".E4.BE.8B">例</h3>
+
+<p>例外ハンドラでの使用:</p>
+
+<pre class="eval">try {
+ this.could.raise.an.exception;
+} catch(e) {
+ Components.utils.reportError(e); // エラーを送り、実行を続ける
+}
+</pre>
+
+<p>エラーコンソールへのデバッグメッセージの出力:</p>
+
+<pre class="eval">Components.utils.reportError("init() called");
+</pre>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components.utils/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils/index.html
new file mode 100644
index 0000000000..6a581462b2
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components.utils/index.html
@@ -0,0 +1,46 @@
+---
+title: Components.utils
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils
+tags:
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components.utils
+---
+<p>
+</p><p><code>Components.utils</code> は便利でありながらも必須というわけではない、さまざまな XPConnect の機能のまとまりです。そのインタフェースは <code><a href="https://dxr.mozilla.org/mozilla-central/source/js/src/xpconnect/idl/xpccomponents.idl" rel="custom">js/src/xpconnect/idl/xpccomponents.idl</a></code> で定義されています。オブジェクトには今のところ次のメンバがあります。
+</p>
+<table class="fullwidth-table">
+<tbody><tr>
+<th>プロパティ</th>
+<th>説明</th>
+</tr>
+<tr>
+<td><a href="ja/Components.utils.evalInSandbox">evalInSandbox</a></td>
+<td>サンドボックスで JavaScript コードを実行する。普通、制限付き特権を持つ環境下でコードを実行するのに使用する。</td>
+</tr>
+<tr>
+<td><code><a href="ja/Components.utils.forceGC">forceGC</a></code></td>
+<td> ガベージコレクションサイクルを強制する。</td>
+</tr>
+<tr>
+<td><code><a href="ja/Components.utils.getWeakReference">getWeakReference</a></code></td>
+<td> 渡されたオブジェクトの弱い参照を得る。</td>
+</tr>
+<tr>
+<td><code><a href="ja/Components.utils.import">import</a></code></td>
+<td> JS のモジュールを、スコープを共有することなく現在のスクリプトに読み込む
+</td></tr>
+<tr>
+<td><a href="ja/Components.utils.lookupMethod">lookupMethod</a></td>
+<td>XPCOM オブジェクトのネイティブな(つまり、インタフェースで宣言されている)メソッドやプロパティを探す。<a href="ja/XPCNativeWrapper">XPCNativeWrapper</a> と同様の目的を果たす。</td>
+</tr>
+<tr>
+<td><a href="ja/Components.utils.reportError">reportError</a></td>
+<td>JavaScript の Error オブジェクトを JavaScript コンソールに送る。</td>
+</tr><tr>
+<td><a href="ja/Components.utils.Sandbox">Sandbox</a></td>
+<td><code>evalInSandbox</code> で使用するサンドボックス (sandbox) オブジェクトを作成する。</td>
+</tr>
+</tbody></table>
+<div class="noinclude">
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/components_object/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/components_object/index.html
new file mode 100644
index 0000000000..7bf0a7f0d0
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/components_object/index.html
@@ -0,0 +1,108 @@
+---
+title: Components object
+slug: Mozilla/Tech/XPCOM/Language_Bindings/Components_object
+tags:
+ - DOM
+ - Gecko
+ - Gecko DOM Reference
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+ - 要更新
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings/Components_object
+---
+<p><code>Components</code> オブジェクトは、<a href="/ja/docs/XPConnect">XPConnect</a> 機能が <a href="/ja/docs/JavaScript">JavaScript</a> へ反映されるのを仲介するオブジェクトです。<code>Components</code> オブジェクトは、実際には、XPConnect を利用するトップレベルのオブジェクトとして、JavaScript へ反映される {{Source("js/src/xpconnect/idl/xpccomponents.idl", "nsIXPCComponents")}} インタフェースのネイティブインスタンスです。</p>
+<p><code>Components</code> のプロパティの一部は高度な特権を必要とするため、Web ページ上では機能しません。</p>
+<p><code>Components</code> オブジェクトは次のメンバを持ちます。</p>
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <th>メンバ</th>
+ <th>説明</th>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.classes"><code>classes</code></a></td>
+ <td>ContractID によるクラスの配列</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.classesByID"><code>classesByID</code></a></td>
+ <td>CID によるクラスの配列</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.Constructor"><code>function Object() { [native code] }</code></a></td>
+ <td>コンポーネントのコンストラクタのためのコンストラクタ</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.Exception"><code>Exception</code></a></td>
+ <td>XPConnect の例外のためのコンストラクタ</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.ID"><code>ID</code></a></td>
+ <td>XPCOM nsID のためのコンストラクタ</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.interfaces"><code>interfaces</code></a></td>
+ <td>インタフェース名によるインタフェースの配列</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.interfacesByID"><code>interfacesByID</code></a></td>
+ <td>IID によるインタフェースの配列</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.isSuccessCode"><code>isSuccessCode</code></a></td>
+ <td>与えられた結果コードが成功かどうかを判別するための関数</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.lastResult"><code>lastResult</code></a></td>
+ <td>直前の XPConnect 呼び出しの結果コード</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.manager"><code>manager</code></a></td>
+ <td>グローバル XPCOM コンポーネントマネージャ</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.results"><code>results</code></a></td>
+ <td>名前による既知の結果コードの配列</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.returnCode"><code>returnCode</code></a></td>
+ <td>現在の呼び出しの未決定の結果</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.stack"><code>stack</code></a></td>
+ <td>現在の JavaScript のコールスタック</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.utils"><code>utils</code></a></td>
+ <td>いくつかの便利な機能へのアクセスを提供します。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.utils.evalInSandbox"><code>utils.evalInSandbox</code></a></td>
+ <td>JavaScript コードをサンドボックス内で実行。通常は限られた特権でコードを実行するときに使われます。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.utils.forceGC"><code>utils.forceGC</code></a></td>
+ <td>{{Gecko_minversion_inline(1.9)}} ガベージコレクションサイクルを強制します。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.utils.getWeakReference"><code>utils.getWeakReference</code></a></td>
+ <td>{{Gecko_minversion_inline(1.9)}} 渡されたオブジェクトの弱い参照を取得します。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.utils.import"><code>utils.import</code></a></td>
+ <td>{{Gecko_minversion_inline(1.9)}} JavaScript モジュールを、スコープを共有せずに現在のスクリプトに読み込みます。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.utils.lookupMethod"><code>utils.lookupMethod</code></a></td>
+ <td>XPCOM オブジェクトのネイティブの (例えばインタフェースで宣言された) メソッドやプロパティを参照します。<a href="/ja/docs/XPCNativeWrapper"><code>XPCNativeWrapper</code></a> と同じ役割を果たします。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.utils.reportError"><code>utils.reportError</code></a></td>
+ <td>JavaScript エラーオブジェクトを <a href="/ja/docs/Error_Console">エラーコンソール</a> に出力します。</td>
+ </tr>
+ <tr>
+ <td><a href="/ja/docs/Components.utils.Sandbox"><code>utils.Sandbox</code></a></td>
+ <td><code>evalInSandbox</code> で利用するサンドボックスオブジェクトを生成します。</td>
+ </tr>
+ </tbody>
+</table>
+<p><span class="comment">EDITORS! please keep descriptions of the following properties in sync with <a href="/ja/docs/Components.utils">Components.utils</a> page.</span></p>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/index.html
new file mode 100644
index 0000000000..f576a1cbb6
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/index.html
@@ -0,0 +1,25 @@
+---
+title: XPCOM 言語バインディング
+slug: Mozilla/Tech/XPCOM/Language_Bindings
+translation_of: Mozilla/Tech/XPCOM/Language_Bindings
+---
+<p><strong>XPCOM 言語バインディング</strong>は、以下の目的のために特定の言語と <a href="/ja/XPCOM" rel="internal" title="ja/XPCOM">XPCOM</a> との橋渡しを行います。</p>
+
+<ul>
+ <li>他の言語から XPCOM オブジェクトへのアクセス方法を提供します(「アクセス」とは、 XPCOM オブジェクトの読み込み・書き込み・生成・オブジェクトのメソッド呼び出しを意味します)。</li>
+ <li>他の言語で書かれた XPCOM オブジェクトのモジュールを「露出」させます。モジュールは XPCOM バインディングが存在する言語すべてからアクセスすることができるようになります。</li>
+</ul>
+
+<p>XPCOM レイヤー自身は C/C++ で書かれているため、 XPCOM API は C/C++ でサンドボックスの外側から呼び出すことができます。また、他の言語から XPCOM API を利用できるようにするためには別のレイヤーが必要になります。</p>
+
+<p>そのようなバインディング層が様々な言語に対して提供されています。</p>
+
+<ul>
+ <li><strong>JavaScript</strong>: <a href="/ja/XPConnect" rel="internal" title="ja/XPConnect">XPConnect</a> (これは Firefox に含まれています。 XUL アプリケーションで利用されています)</li>
+ <li><strong>Java</strong>: <a href="/ja/JavaXPCOM" rel="internal" title="ja/JavaXPCOM">JavaXPCOM</a> (これは Firefox には含まれていませんが、XULRunner の標準のビルドには梱包されており、また Eclipse のアプリケーションで利用されています)</li>
+ <li><strong>Python</strong>: <a href="/ja/PyXPCOM" rel="internal" title="ja/PyXPCOM">PyXPCOM</a> (これは標準のビルドには含まれていませんが、 ActiveState Komodo 製品では利用されています)</li>
+ <li><strong>Perl</strong>: <a href="/ja/PlXPCOM" rel="internal" title="ja/PlXPCOM">PlXPCOM</a></li>
+ <li><strong>Ruby</strong>: <a href="/ja/RbXPCOM" rel="internal" title="ja/RbXPCOM">RbXPCOM</a></li>
+</ul>
+
+<p>利用法が必要な場合は、それぞれのバインディングのページを参照してください。</p>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/development/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/development/index.html
new file mode 100644
index 0000000000..6d9b1ca50b
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/development/index.html
@@ -0,0 +1,24 @@
+---
+title: Development
+slug: Mozilla/Tech/XPCOM/Language_Bindings/JavaXPCOM/Development
+tags:
+ - JavaXPCOM
+ - 'XPCOM:Language Bindings'
+translation_of: Mozilla/Tech/XPCOM/Language_bindings/JavaXPCOM/Development
+---
+<p>
+</p>
+<h3 id=".E3.82.BD.E3.83.BC.E3.82.B9" name=".E3.82.BD.E3.83.BC.E3.82.B9"> ソース </h3>
+<p>最新のソースコードは、Mozilla trunk上の {{ Source("extensions/java/xpcom") }} ディレクトリ内にあります。
+</p>
+<h3 id=".E6.A7.8B.E7.AF.89.E6.89.8B.E9.A0.86" name=".E6.A7.8B.E7.AF.89.E6.89.8B.E9.A0.86"> 構築手順 </h3>
+<p>ビルドの手順はここにあります: <a href="ja/Building_JavaXPCOM">Building JavaXPCOM</a>。
+</p>
+<h3 id=".E3.83.90.E3.82.B0" name=".E3.83.90.E3.82.B0"> バグ </h3>
+<p>すべての JavaXPCOM バグは、 <a class="external" href="http://bugzilla.mozilla.org/">Bugzilla</a>内で、"Core" プロダクトと "Java to XPCOM Bridge" コンポーネントを使って記録されています。
+</p>
+<ul><li> 公開されている JavaXPCOMバグの<a class="link-https" href="https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&amp;product=Core&amp;component=Java+to+XPCOM+Bridge&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;chfieldto=Now">一覧</a>
+</li><li> 新しい JavaXPCOMバグを<a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Core&amp;component=Java+to+XPCOM+Bridge&amp;rep_platform=All&amp;op_sys=All">開く</a>
+</li><li> 最近1ヶ月の<a class="external" href="http://bonsai.mozilla.org/cvsquery.cgi?treeid=default&amp;module=all&amp;branch=HEAD&amp;branchtype=match&amp;dir=mozilla%2Fextensions%2Fjava%2Fxpcom&amp;file=&amp;filetype=match&amp;who=&amp;whotype=match&amp;sortby=Date&amp;hours=2&amp;date=month&amp;mindate=&amp;maxdate=&amp;cvsroot=%2Fcvsroot">チェックイン</a>
+</li></ul>
+{{ languages( { "en": "en/JavaXPCOM/Development", "zh-cn": "cn/JavaXPCOM/\u5f00\u53d1" } ) }}
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/embedding_mozilla_in_a_java_application_using_javaxpcom/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/embedding_mozilla_in_a_java_application_using_javaxpcom/index.html
new file mode 100644
index 0000000000..d523b94ce1
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/embedding_mozilla_in_a_java_application_using_javaxpcom/index.html
@@ -0,0 +1,156 @@
+---
+title: Embedding Mozilla in a Java Application using JavaXPCOM
+slug: >-
+ Mozilla/Tech/XPCOM/Language_Bindings/JavaXPCOM/Embedding_Mozilla_in_a_Java_Application_using_JavaXPCOM
+tags:
+ - Embedding Mozilla
+ - JavaXPCOM
+ - 'XPCOM:Language Bindings'
+translation_of: Archive/Mozilla/Embedding_Mozilla_in_a_Java_Application_using_JavaXPCOM
+---
+<p>
+</p><p><a href="ja/XULRunner">XULRunner</a>には<a href="ja/JavaXPCOM">JavaXPCOM</a>が標準搭載されており、これは、JavaのコードとXPCOMの相互利用を可能にするものです。この記事で示すとおり、JavaでのXPCOMオブジェクトの操作は、C++の場合とそれほど大きな差はありません。
+</p>
+<h4 id="必要な環境"> 必要な環境 </h4>
+<ul><li> Java 1.4.2 以降
+</li><li> <a href="ja/XULRunner">XULRunner</a> 1.8.0.1 以降
+</li></ul>
+<h4 id="組み込み"> 組み込み </h4>
+<p>Mozilla を Java アプリケーションに埋め込むためには、&lt;tt&gt;xulrunner/sdk/lib&lt;/tt&gt;フォルダーにある&lt;tt&gt;MozillaInterfaces.jar&lt;/tt&gt;というライブラリをclasspathに追加する必要があります。このライブラリは Mozilla をブートストラップし、XPCOM メソッドを呼び出すために必要なインターフェースを提供します。
+</p><p>組み込みを開始するために、<a href="https://dxr.mozilla.org/mozilla-central/source/extensions/java/xpcom/interfaces/Mozilla.java" rel="custom">Mozilla</a>共有クラスの提供するメソッドを使用します。はじめに、Java アプリケーションは適切な XULRunner installationを見つける必要があります。
+</p>
+<pre class="eval"> Mozilla mozilla = Mozilla.getInstance();
+ GREVersionRange[] range = new GREVersionRange[1];
+ range[0] = new GREVersionRange("1.8.0", true, "1.9", false);
+ <span>// work with trunk nightly version 1.9a1 ^^</span>
+
+ try {
+ File grePath = Mozilla.getGREPathWithProperties(range, null);
+ LocationProvider locProvider = new LocationProvider(grePath);
+ mozilla.initEmbedding(grePath, grePath, locProvider);
+ } catch (FileNotFoundException e) {
+ <span>// この例外は greGREPathWithProperties が GRE を見つけられなかったときに送出されます</span>
+ } catch (XPCOMException e) {
+ <span>// この例外は initEmbedding が失敗したときに送出されます</span>
+ }
+</pre>
+<p><code>LocationProvider</code>はJavaアプリケーションによって提供されるクラスです。これはインターフェース<a href="https://dxr.mozilla.org/mozilla-central/source/extensions/java/xpcom/interfaces/IAppFileLocProvider.java" rel="custom">IAppFileLocProvider</a>を実装しているもので、
+and tells XPCOM where to find certain files and directories.
+</p><p><code>initEmbedding</code>メソッドは embedding process を開始するもので、Java アプリケーションと XPCOM や Mozilla の連携を可能にするものです。ひとたび Java アプリケーションが Mozilla を使う作業を終えたとき、それは embedding process を terminate する必要があります。
+</p>
+<pre class="eval"> try {
+ mozilla.termEmbedding();
+ } catch (XPCOMException e) {
+ <span>// この例外は termEmbedding が失敗したときに送出されます</span>
+ }
+</pre>
+<h4 id="XPCOMオブジェクトを利用する"> XPCOMオブジェクトを利用する </h4>
+<p>Mozilla が組み込まれると、Java アプリケーションは XPCOM オブジェクトを利用することができるようになります。<code>Mozilla</code> クラスはこれの手助けをするメソッドを提供しており、たとえば、<code>getServiceManager</code>、<code>getComponentManager</code>、<code>newLocalFile</code>があります。JavaXPCOM により、 Java アプリケーションがXPCOM オブジェクトを取得し、メソッドを呼び出すのに加え、Java クラスオブジェクトを XPCOM メソッドに渡すことも可能になります。
+</p><p>例えば:
+</p>
+<pre class="eval"> Mozilla mozilla = Mozilla.getInstance();
+ WindowCreator creator = new WindowCreator(); <span>// nsIWindowCreator を実装</span>
+
+ nsIServiceManager serviceManager = mozilla.getServiceManager();
+
+ nsIWindowWatcher windowWatcher = (nsIWindowWatcher) serviceManager
+ .getServiceManagerByContractID(NS_WINDOWWATCHER_CONTRACTID,
+ nsIWindowWatcher.NS_IWINDOWWATCHER_IID);
+ windowWatcher.setWindowCreator(creator);
+</pre>
+<p>この例では、<code>nsIWindowCreator</code>インターフェースを実装した Java のクラスである<code>WindowCreator</code>が存在し、それを Mozilla に登録しようとしています。そのために、まず service manager を取得するのですが、それは Mozilla のwindow watcherのリファレンスにある方法によります。
+</p><p>別の例: (<a class="external" href="http://rayh.co.uk">rayh.co.uk</a>にあるもの)
+</p>
+<pre class="eval"> // linux 上ではこのコードが実行されるより前に gtk が初期化されている必要があることに注意
+ Mozilla moz = Mozilla.getInstance();
+
+ // 次に XUL アプリケーションを実行するために、XPCOMのservice managerのインスタンスを取得する必要がある
+ nsIServiceManager serviceManager = moz.getServiceManager();
+
+ // 次に @mozilla.org/toolkit/app-startup;1 サービスを取得する必要がある
+ nsIAppStartup appStartup = (nsIAppStartup)serviceManager.getServiceByContractID("@mozilla.org/toolkit/app-startup;1", nsIAppStartup.NS_IAPPSTARTUP_IID);
+
+ // 上のものへの nsIWindowWatcher インターフェースを取得する
+ nsIWindowCreator windowCreator = (nsIWindowCreator)appStartup.queryInterface(nsIWindowCreator.NS_IWINDOWCREATOR_IID);
+
+ // window watcher サービスを取得する
+ nsIWindowWatcher windowWatcher = (nsIWindowWatcher)serviceManager.getServiceByContractID("@mozilla.org/embedcomp/window-watcher;1", nsIWindowWatcher.NS_IWINDOWWATCHER_IID);
+
+ // window creator をsetする (from step 6)
+ windowWatcher.setWindowCreator(windowCreator);
+
+ // Create the root XUL window を作成:
+ nsIDOMWindow win = windowWatcher.openWindow(null, "<a class=" external">chrome://your-app/content/window.xul</a>", "mywindow", "chrome,resizable,centerscreen", null);
+
+ // これを active window にする
+ windowWatcher.setActiveWindow(win);
+
+ // application を xpcom/xul に手渡し、ここでブロックする:
+ appStartup.run();
+</pre>
+<p>これは動作する LocationProvider の例です :
+</p>
+<pre class="eval"> public class LocationProvider implements IAppFileLocProvider {
+</pre>
+<pre class="eval"> private final File libXULPath;
+ int counter = 0;
+
+ public LocationProvider(File grePath) {
+ this.libXULPath = grePath;
+ }
+</pre>
+<pre class="eval"> public File getFile(String aProp, boolean[] aPersistent) {
+ File file = null;
+ if (aProp.equals("GreD") || aProp.equals("GreComsD")) {
+ file = libXULPath;
+ if (aProp.equals("GreComsD")) {
+ file = new File(file, "components");
+ }
+ }
+ else if (aProp.equals("MozBinD") ||
+ aProp.equals("CurProcD") ||
+ aProp.equals("ComsD") ||
+ aProp.equals("ProfD"))
+ {
+ file = libXULPath;
+ if (aProp.equals("ComsD")) {
+ file = new File(file, "components");
+ }
+ }
+ return file;
+ }
+</pre>
+<pre class="eval"> public File[] getFiles(String aProp) {
+ File[] files = null;
+ if (aProp.equals("APluginsDL")) {
+ files = new File[1];
+ files[0] = new File(libXULPath, "plugins");
+ }
+ return files;
+ }
+</pre>
+<p><br>
+</p>
+<h4 id="XPCOM_の_UI_を別のスレッドから呼び出す"> XPCOM の UI を別のスレッドから呼び出す </h4>
+<p>appStartup.run() はメインのイベントループを始動し、アプリケーションが終了するまでそこに留まります。これ以降の場所で XPCOM とcommunicateするためには、nsIProxyObjectManager を使用する必要があります。
+</p><p>上の例に引き続き新しいウインドウを作成するためには、このようにします :
+</p>
+<pre class="eval"> // まず、event queue service を取得します。これは、XPCOM の全てのイベントキューを処理するものです。
+ nsIEventQueueService eventQueueServive = (nsIEventQueueService)serviceManager.getServiceByContractID("@mozilla.org/event-queue-service;1",nsIEventQueueService.NS_IEVENTQUEUESERVICE_IID);
+
+ // 次に、ウインドウを開くために、UI スレッドを取得します。
+ // nsIEventQueueService が所有するstatic変数がUIイベント用の特別なキューを所有しています。
+ nsIEventQueue eventQueue = eventQueueServive.getSpecialEventQueue(nsIEventQueueService.UI_THREAD_EVENT_QUEUE);
+
+ // 次に、proxy object manager 用の proxy を作成します。
+ nsIProxyObjectManager proxy = (nsIProxyObjectManager)componentManager.createInstanceByContractID("@mozilla.org/xpcomproxy;1",null,nsIProxyObjectManager.NS_IPROXYOBJECTMANAGER_IID);
+
+ // そして、proxy object manager を使って、さきほど作成した nsIWindowWatcher のインスタンスへの proxy を作成します。
+ nsIWindowWatcher windowProxy = (nsIWindowWatcher)proxy.getProxyForObject(eventQueue,windowWatcher.NS_IWINDOWWATCHER_IID,windowWatcher,nsIProxyObjectManager.INVOKE_SYNC);
+
+ // そうすれば、proxy を使ってメソッドを普通に呼び出すことができます。
+ windowProxy.openWindow(null, chromeUri, name, "centerscreen", null);
+</pre>
+<p>さらに詳しい情報は、<a class="external" href="http://www.xulplanet.com/references/xpcomref/ifaces/nsIProxyObjectManager.html">XulPlanet's documentation of nsIProxyObjectManager</a>を参照してください。
+</p><p>これは、<a class="external" href="http://rayh.co.uk/blog/?p=14">Injecting Events onto XPCOM’s UI Thread</a>からとられたものです。
+</p>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/examples/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/examples/index.html
new file mode 100644
index 0000000000..9c34d27c84
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/examples/index.html
@@ -0,0 +1,13 @@
+---
+title: Examples
+slug: Mozilla/Tech/XPCOM/Language_Bindings/JavaXPCOM/Examples
+tags:
+ - JavaXPCOM
+ - 'XPCOM:Language Bindings'
+translation_of: Mozilla/Tech/XPCOM/Language_bindings/JavaXPCOM/Examples
+---
+<p>
+</p><p>いくつかの Java テストアプリケーションがソースツリーにチェックインされています。ここには、Java から Gecko の埋め込みや XPCOM の初期化をする方法の例があります。<a class="external" href="http://lxr.mozilla.org/mozilla/source/extensions/java/xpcom/tests">mozilla/extensions/java/xpcom/tests</a>
+</p>
+<div class="noinclude">
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/index.html
new file mode 100644
index 0000000000..c2707f8de0
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/index.html
@@ -0,0 +1,73 @@
+---
+title: JavaXPCOM
+slug: Mozilla/Tech/XPCOM/Language_Bindings/JavaXPCOM
+tags:
+ - JavaXPCOM
+ - 'XPCOM:Language Bindings'
+ - 要更新
+translation_of: Mozilla/Tech/XPCOM/Language_bindings/JavaXPCOM
+---
+<p> </p>
+<div>
+ <p><b>JavaXPCOM</b> は Java と <a href="ja/XPCOM">XPCOM</a> のコミュニケーションを可能にします。つまり、Java アプリケーションは、XPCOM オブジェクトにアクセスでき、XPCOM オブジェクトも XPCOM インターフェースを実装するすべての Java class にアクセスできます。 JavaXPCOM を使うことで、開発者は Java アプリケーションから XPCOM や埋め込み <a href="ja/Gecko">Gecko</a> にデータを伝送することができます。 JavaXPCOM は <a href="ja/XPConnect">XPConnect</a> (JavaScript-XPCOM ブリッジ) に非常によく似ていて <a href="ja/XPIDL">XPIDL</a> を使用します。</p>
+ <p>JavaXPCOM は <a href="ja/XULRunner">XULRunner</a> の一部として標準で構築されています。 最近のビルドまたは <a href="ja/XULRunner_1.8.0.4_Release_Notes">XULRunner 1.8.0.4</a> をダウンロードして試してみてください。</p>
+</div>
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h4 id=".E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.86.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3" name=".E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.86.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3"><a>ドキュメンテーション</a></h4>
+ <dl>
+ <dt>
+ <a href="ja/JavaXPCOM/Development">JavaXPCOM Development</a></dt>
+ <dd>
+ <small>ソースの取得・構築方法、それから読み方・バグの報告の方法。</small></dd>
+ </dl>
+ <dl>
+ <dt>
+ <a href="ja/JavaXPCOM/Examples">サンプルコード</a></dt>
+ <dd>
+ <small>いくつかの Java テストアプリケーションがソースツリーにチェックインされており、Java から Gecko の埋め込みや XPCOM を初期化する方法の例があります。</small></dd>
+ </dl>
+ <dl>
+ <dt>
+ <a href="ja/JavaXPCOM/Embedding_Mozilla_in_a_Java_Application_using_JavaXPCOM">JavaXPCOM を使って Java アプリケーションへ Mozilla を組み込む</a></dt>
+ <dd>
+ <small><a href="ja/XULRunner">XULRunner</a> には JavaXPCOM が標準搭載されており、これは、Java のコードと XPCOM の相互利用を可能にするものです。この記事で示すとおり、Java での XPCOM オブジェクトの操作は C++ の場合とそれほど大きな差はありません。</small></dd>
+ </dl>
+ <p><span class="alllinks"><a>すべて見る...</a></span></p>
+ </td>
+ <td>
+ <h4 id=".E3.82.B3.E3.83.9F.E3.83.A5.E3.83.8B.E3.83.86.E3.82.A3" name=".E3.82.B3.E3.83.9F.E3.83.A5.E3.83.8B.E3.83.86.E3.82.A3">コミュニティ</h4>
+ <ul>
+ <li>Mozilla Java フォーラムを見る...</li>
+ </ul>
+ <ul>
+ <li><a href="https://lists.mozilla.org/listinfo/dev-tech-java"> メーリングリストとして</a></li>
+
+
+ <li><a href="http://groups.google.com/group/mozilla.dev.tech.java"> ニュースグループとして</a></li>
+ <li><a href="http://groups.google.com/group/mozilla.dev.tech.java/feeds"> フィードとして</a></li>
+</ul>
+ <ul>
+ <li>Mozilla Embedding フォーラムを見る...</li>
+ </ul>
+ <ul>
+ <li><a href="https://lists.mozilla.org/listinfo/dev-embedding"> メーリングリストとして</a></li>
+
+
+ <li><a href="http://groups.google.com/group/mozilla.dev.embedding"> ニュースグループとして</a></li>
+ <li><a href="http://groups.google.com/group/mozilla.dev.embedding/feeds"> フィードとして</a></li>
+</ul>
+ <ul>
+ <li><a class="link-mailto" href="mailto:jhpedemonte@gmail.com">Javier Pedemonte</a> JavaXPCOM プロジェクトを率いている開発者</li>
+ </ul>
+ <h4 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h4>
+ <dl>
+ <dd>
+ <a href="ja/XPCOM">XPCOM</a>, <a href="ja/Embedding_Mozilla">Embedding Mozilla</a></dd>
+ </dl>
+ </td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/other_resources/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/other_resources/index.html
new file mode 100644
index 0000000000..14a9eb1ee0
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/javaxpcom/other_resources/index.html
@@ -0,0 +1,15 @@
+---
+title: その他の情報源
+slug: Mozilla/Tech/XPCOM/Language_Bindings/JavaXPCOM/Other_Resources
+tags:
+ - JavaXPCOM
+ - 'XPCOM:Language Bindings'
+translation_of: Mozilla/Tech/XPCOM/Language_bindings/JavaXPCOM/Other_Resources
+---
+<h2 id="Other_Resources" name="Other_Resources">その他の情報源</h2>
+<ul>
+ <li><a href="/ja/docs/Embedding_Mozilla">Embedding Mozilla</a></li>
+ <li><a href="/ja/docs/XPConnect">XPConnect</a> - Javascript-XPCOM bridge</li>
+ <li><a href="/ja/docs/BlackConnect">BlackConnect</a> - Java-XPCOM bridge (no longer supported)</li>
+ <li><a href="http://www.mozilla.org/projects/blackwood/connect/RequirementsSpec.html#IDL">XPIDL to Java types</a> - from Blackconnect</li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/plxpcom/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/plxpcom/index.html
new file mode 100644
index 0000000000..4bb9b94597
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/plxpcom/index.html
@@ -0,0 +1,17 @@
+---
+title: PlXPCOM
+slug: Mozilla/Tech/XPCOM/Language_Bindings/PlXPCOM
+tags:
+ - PlXPCOM
+ - XPCOM
+ - 'XPCOM:Language Bindings'
+translation_of: Mozilla/Tech/XPCOM/Language_bindings/PlXPCOM
+---
+<p>Perl XPCOM (plXPCOM): Perl と XPCOM のバインディング
+</p>
+<ul><li> <a class="external" href="http://plxpcom.mozdev.org/">プロジェクトページ</a> (MozDev)
+</li><li> <a class="external" href="http://plxpcom.mozdev.org/docs/XPCOM.html">Perl オブジェクト定義</a> (MozDev)
+</li><li> <a class="external" href="http://plxpcom.mozdev.org/docs/xpcom-perl.html">開発者ガイド</a> (MozDev)
+</li><li> <a class="link-news" href="news://news.mozdev.org/public.mozdev.plxpcom">ニュースグループ</a> (MozDev)
+</li><li> <a class="external" href="http://plxpcom.mozdev.org/list.html">メーリングリスト</a> (MozDev)
+</li></ul>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/pyxpcom/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/pyxpcom/index.html
new file mode 100644
index 0000000000..5dfb513534
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/pyxpcom/index.html
@@ -0,0 +1,62 @@
+---
+title: PyXPCOM
+slug: Mozilla/Tech/XPCOM/Language_Bindings/PyXPCOM
+tags:
+ - PyXPCOM
+ - 'XPCOM:Language Bindings'
+translation_of: Mozilla/Tech/XPCOM/Language_bindings/PyXPCOM
+---
+<p>
+</p>
+<div>
+<p><b>PyXPCOM</b> は <a class="external" href="http://www.python.org/">Python</a> と <a href="ja/XPCOM">XPCOM</a> の間で通信を可能にします。すなわち、Python アプリケーションが XPCOM オブジェクトにアクセスできるように、また XPCOM が XPCOM インタフェースを実装したあらゆる Python クラスにアクセスできるようにします。PyXPCOM によって開発者は Python アプリケーションから XPCOM や組み込み <a href="ja/Gecko">Gecko</a> に通話が可能になります。PyXPCOM は <a href="ja/JavaXPCOM">JavaXPCOM</a> (Java と XPCOM のブリッジ) や <a href="ja/XPConnect">XPConnect</a> (JavaScript と XPCOM のブリッジ) と類似しています。
+</p>
+Python のクラスとインタフェース: Mozilla は組み込み開発者やコンポーネント開発者が利用できる多くの外部インターフェイスを定義しています。PyXPCOM はこれらのインタフェースを Python インタフェースとしてアクセスできる機能を提供します。PyXPCOM は Python から XPCOM や Gecko の初期化や終了を行う関数にアクセスを提供するいくつかのクラスや、さらに XPCOM のヘルパー関数をいくつか含みます。</div>
+<table class="topicpage-table">
+<tbody><tr><td>
+<h4 id="ドキュメント"> <a>ドキュメント</a> </h4>
+<dl><dt> <a href="ja/Building_PyXPCOM">PyXPCOM のビルド</a>
+</dt><dd> <small>PyXPCOM のビルド手順。</small>
+</dd></dl>
+<dl><dt> <a href="ja/Creating_a_Python_XPCOM_component">Creating a Python XPCOM component</a>
+</dt><dd> <small>Python を使って簡単な <a href="ja/XPCOM">XPCOM</a> コンポーネントを作る方法のサンプル。</small>
+</dd></dl>
+<dl><dt> <a class="external" href="http://www.ibm.com/developerworks/jp/webservices/library/co-pyxp1/">PyXPCOM 入門</a>
+</dt><dd> <small>PyXPCOM は XPCOM と Python の間を橋渡しする技術です。この記事はこれから PyXPCOM を学ぶ開発者のためのスタートガイドです。</small>
+</dd></dl>
+<p><span><a>すべて見る...</a></span>
+</p>
+<h4 id="歴史"> 歴史 </h4>
+<p>PyXPCOM は当初 <a class="external" href="http://www.activestate.com/">ActiveState Tool Corporation</a> によって開発され、彼らの <a class="external" href="http://www.activestate.com/Products/Komodo">Komodo プロジェクト</a> の一部として <a class="external" href="http://aspn.activestate.com/ASPN/Downloads/Komodo/index/PyXPCOM/">知られています</a>。現在のリリースでは Mozilla ビルドシステムにすでに <a class="external" href="http://public.activestate.com/pyxpcom/">統合されています</a>。
+</p>
+</td>
+<td>
+<h4 id="コミュニティ"> コミュニティ </h4>
+<ul><li> Mozilla XPCOM フォーラムを見る...
+</li></ul>
+<ul>
+ <li><a href="https://lists.mozilla.org/listinfo/dev-tech-xpcom"> メーリングリストとして</a></li>
+
+
+ <li><a href="http://groups.google.com/group/mozilla.dev.tech.xpcom"> ニュースグループとして</a></li>
+ <li><a href="http://groups.google.com/group/mozilla.dev.tech.xpcom/feeds"> フィードとして</a></li>
+</ul>
+
+<ul><li> <a class="external" href="http://listserv.activestate.com/mailman/listinfo/pyxpcom">ActiveState の Python XPCOM bindings メーリングリスト</a>
+</li><li> <a class="link-irc" href="irc://irc.mozilla.org:6667/pyxpcom">#pyxpcom on irc.mozilla.org</a>
+</li></ul>
+<h4 id="ソースコード"> ソースコード </h4>
+<ul><li> PyXPCOM のコードは trunk の <code><a href="https://dxr.mozilla.org/mozilla-central/source/extensions/python/xpcom/" rel="custom">extensions/python/xpcom/</a></code> ディレクトリから利用可能です。
+</li><li> PyXPCOM は標準ではビルドされないことに気をつけてください。PyXPCOM をビルドするには <a href="ja/Building_PyXPCOM">PyXPCOM のビルド</a> を参照してください。
+</li></ul>
+<h4 id="関連事項"> 関連事項 </h4>
+<dl><dd> <a href="ja/XPCOM">XPCOM</a>
+</dd><dd> <a href="ja/PyDOM">PyDOM</a>: JavaScript を Python で置き換える
+</dd></dl>
+</td></tr></tbody></table>
+<p><span>Categories</span>
+</p><p><span>Interwiki Language Links</span>
+</p><p><br>
+</p>
+<div class="noinclude">
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/language_bindings/rbxpcom/index.html b/files/ja/mozilla/tech/xpcom/language_bindings/rbxpcom/index.html
new file mode 100644
index 0000000000..ff1cec39a2
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/language_bindings/rbxpcom/index.html
@@ -0,0 +1,16 @@
+---
+title: RbXPCOM
+slug: Mozilla/Tech/XPCOM/Language_Bindings/RbXPCOM
+tags:
+ - RbXPCOM
+ - XPCOM
+ - 'XPCOM:Language Bindings'
+translation_of: Mozilla/Tech/XPCOM/Language_bindings/RbXPCOM
+---
+<p>Ruby Cross-Platform COM (rbXPCOM): Ruby と XPCOM のバインディング
+</p>
+<ul><li> <a class="external" href="http://rbxpcom.mozdev.org/">プロジェクトページ</a> (MozDev)
+</li><li> <a class="external" href="http://rbxpcom.mozdev.org/no_wrap/doc/">マニュアル</a> (MozDev)
+</li><li> <a class="external" href="http://rbxpcom.mozdev.org/list.html">メーリングリスト</a> (MozDev)
+</li><li> <a class="link-news" href="news://news.mozdev.org/public.mozdev.rbxpcom">ニュースグループ</a> (MozDev)
+</li></ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/components/index.html b/files/ja/mozilla/tech/xpcom/reference/components/index.html
new file mode 100644
index 0000000000..930d831c1e
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/components/index.html
@@ -0,0 +1,18 @@
+---
+title: Standard XPCOM components
+slug: Mozilla/Tech/XPCOM/Reference/Components
+tags:
+ - Components
+ - Landing
+ - Mozilla
+ - NeedsContent
+ - NeedsTranslation
+ - TopicStub
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/Reference/Components
+---
+<p>There are a number of components provided in the standard implementation of XPCOM; these are as follows.</p>
+<div class="row topicpage-table">
+ <div class="section"><dl><dl><dt class="landingPageList"><a href="/ja/docs/nsCategoryManager">nsCategoryManager</a></dt><dd class="landingPageList">The XPCOM Category Manager.</dd><dt class="landingPageList"><a href="/ja/docs/nsDirectoryService">nsDirectoryService</a></dt><dd class="landingPageList">XPCOM ディレクトリサービス。このサービスは、OS 固有のマナーで "よく知られた" ディレクトリの場所を返します。例えば、システムの一時ディレクトリやデスクトップディレクトリ、現在の作業ディレクトリなどのパスを提供します。</dd><dt class="landingPageList"><a href="/ja/docs/nsLocalFile">nsLocalFile</a></dt><dd class="landingPageList"><code><a href="ja/NsILocalFile">nsILocalFile</a></code> を実装するコンポーネント。</dd></dl></dl></div>
+ <div class="section"><dl><dt class="landingPageList"><a href="/ja/docs/nsObserverService">nsObserverService</a></dt><dd class="landingPageList">XPCOM Observer サービス。</dd><dt class="landingPageList"><a href="/ja/docs/nsScriptableInputStream">nsScriptableInputStream</a></dt><dd class="landingPageList"><code><a href="ja/NsIScriptableInputStream">nsIScriptableInputStream</a></code> を実装するコンポーネント。</dd></dl></div>
+ </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/components/nscategorymanager/index.html b/files/ja/mozilla/tech/xpcom/reference/components/nscategorymanager/index.html
new file mode 100644
index 0000000000..06226a5d35
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/components/nscategorymanager/index.html
@@ -0,0 +1,30 @@
+---
+title: nsCategoryManager
+slug: Mozilla/Tech/XPCOM/Reference/Components/nsCategoryManager
+tags:
+ - Components
+ - 'Components:Frozen'
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Components/nsCategoryManager
+---
+<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p>
+
+<h3 id=".E8.A6.81.E7.B4.84" name=".E8.A6.81.E7.B4.84">要約</h3>
+
+<p>The XPCOM Category Manager.</p>
+
+<dl>
+ <dt>Class ID</dt>
+ <dd><code>16d222a6-1dd2-11b2-b693-f38b02c021b2</code></dd>
+ <dt>ContractID</dt>
+ <dd><code>@mozilla.org/categorymanager;1</code></dd>
+</dl>
+
+<h3 id=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9" name=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9">サポートされたインタフェース</h3>
+
+<p><code><a href="ja/NsICategoryManager">nsICategoryManager</a></code></p>
+
+<h3 id=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88" name=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88">コメント</h3>
+
+<p>このコンポーネントは、単独で使用するか、XPCOM サービスマネージャを通してアクセスします。</p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/components/nsdirectoryservice/index.html b/files/ja/mozilla/tech/xpcom/reference/components/nsdirectoryservice/index.html
new file mode 100644
index 0000000000..dbec00fb06
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/components/nsdirectoryservice/index.html
@@ -0,0 +1,71 @@
+---
+title: nsDirectoryService
+slug: Mozilla/Tech/XPCOM/Reference/Components/nsDirectoryService
+tags:
+ - Components
+ - 'Components:Frozen'
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Components/nsDirectoryService
+---
+<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p>
+
+<h3 id=".E8.A6.81.E7.B4.84" name=".E8.A6.81.E7.B4.84">要約</h3>
+
+<p>XPCOM ディレクトリサービス。このサービスは、OS 固有のマナーで "よく知られた" ディレクトリの場所を返します。例えば、システムの一時ディレクトリやデスクトップディレクトリ、現在の作業ディレクトリなどのパスを提供します。</p>
+
+<dl>
+ <dt>Class ID</dt>
+ <dd><code>f00152d0-b40b-11d3-8c9c-000064657374</code></dd>
+ <dt>ContractID</dt>
+ <dd><code>@mozilla.org/file/directory_service;1</code></dd>
+</dl>
+
+<h3 id=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9" name=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9">サポートされたインタフェース</h3>
+
+<p><code><a href="ja/NsIProperties">nsIProperties</a></code>, <code><a href="ja/NsIDirectoryService">nsIDirectoryService</a> </code></p>
+
+<h3 id=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88" name=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88">コメント</h3>
+
+<p>このコンポーネントは、単独で使用するか、XPCOM サービスマネージャを通してアクセスします。</p>
+
+<h3 id=".E3.82.B3.E3.83.BC.E3.83.89.E4.BE.8B" name=".E3.82.B3.E3.83.BC.E3.83.89.E4.BE.8B">コード例</h3>
+
+<pre>#include "nsXPCOM.h"
+#include "nsCOMPtr.h"
+#include "nsDirectoryServiceDefs.h"
+#include "nsIServiceManager.h"
+#include "nsIProperties.h"
+
+/**
+ * Get the location of the system's "temp" directory.
+ */
+nsresult GetTempDir(nsIFile **aResult)
+{
+ nsresult rv;
+
+ nsCOMPtr&lt;nsIServiceManager&gt; svcMgr;
+ rv = NS_GetServiceManager(getter_AddRefs(svcMgr));
+ if (NS_FAILED(rv))
+ return rv;
+
+ nsCOMPtr&lt;nsIProperties&gt; directory;
+ rv = svcMgr-&gt;GetServiceByContractID("@mozilla.org/file/directory_service;1",
+ NS_GET_IID(nsIProperties),
+ getter_AddRefs(directory));
+ if (NS_FAILED(rv))
+ return rv;
+
+ rv = directory-&gt;Get(NS_OS_TEMP_DIR, NS_GET_IID(nsIFile), aResult);
+
+ return rv;
+}
+</pre>
+
+<p>NS_OS_TEMP_DIR は、他の多くの Directory Service キーと共に、<a class="external" href="http://lxr.mozilla.org/mozilla/source/xpcom/io/nsDirectoryServiceDefs.h">nsDirectoryServiceDefs.h</a> で定義されているので注意してください。</p>
+
+<h3 id=".E5.8F.82.E8.80.83" name=".E5.8F.82.E8.80.83">参考</h3>
+
+<p><a href="ja/Using_nsIDirectoryService">Using nsIDirectoryService</a>, <a href="ja/NsIProperties#get">nsIProperties::get</a>, <a href="ja/NsIDirectoryServiceProvider">nsIDirectoryServiceProvider</a></p>
+
+<div class="noinclude"> </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/components/nslocalfile/index.html b/files/ja/mozilla/tech/xpcom/reference/components/nslocalfile/index.html
new file mode 100644
index 0000000000..2b7872b2b8
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/components/nslocalfile/index.html
@@ -0,0 +1,41 @@
+---
+title: nsLocalFile
+slug: Mozilla/Tech/XPCOM/Reference/Components/nsLocalFile
+tags:
+ - Components
+ - 'Components:Frozen'
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Components/nsLocalFile
+---
+<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p>
+
+<h3 id=".E8.A6.81.E7.B4.84" name=".E8.A6.81.E7.B4.84">要約</h3>
+
+<p><code><a href="ja/NsILocalFile">nsILocalFile</a></code> を実装するコンポーネント。</p>
+
+<dl>
+ <dt>Class ID</dt>
+ <dd><code>2e23e220-60be-11d3-8c4a-000064657374</code></dd>
+ <dt>ContractID</dt>
+ <dd><code>@mozilla.org/file/local;1</code></dd>
+</dl>
+
+<h3 id=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9" name=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9">サポートされたインタフェース</h3>
+
+<p><code><a href="ja/NsILocalFile">nsILocalFile</a></code>, <code><a href="ja/NsIFile">nsIFile</a></code></p>
+
+<h3 id=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88" name=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88">コメント</h3>
+
+<p>このコンポーネントは XPCOM コンポーネントマネージャを通してアクセスします。</p>
+
+<h3 id=".E3.82.B3.E3.83.BC.E3.83.89.E4.BE.8B" name=".E3.82.B3.E3.83.BC.E3.83.89.E4.BE.8B">コード例</h3>
+
+<pre>function getFileSize(path) {
+ var file =
+ Components.classes["@mozilla.org/file/local;1"].
+ createInstance(Components.interfaces.nsILocalFile);
+ file.initWithPath(path);
+ return file.fileSize;
+}
+</pre>
diff --git a/files/ja/mozilla/tech/xpcom/reference/components/nsobserverservice/index.html b/files/ja/mozilla/tech/xpcom/reference/components/nsobserverservice/index.html
new file mode 100644
index 0000000000..579189906f
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/components/nsobserverservice/index.html
@@ -0,0 +1,30 @@
+---
+title: nsObserverService
+slug: Mozilla/Tech/XPCOM/Reference/Components/nsObserverService
+tags:
+ - Components
+ - 'Components:Frozen'
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Components/nsObserverService
+---
+<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p>
+
+<h3 id=".E8.A6.81.E7.B4.84" name=".E8.A6.81.E7.B4.84">要約</h3>
+
+<p>XPCOM Observer サービス。</p>
+
+<dl>
+ <dt>Class ID</dt>
+ <dd><code>D07F5195-E3D1-11d2-8ACD-00105A1B8860</code></dd>
+ <dt>ContractID</dt>
+ <dd><code>@mozilla.org/observer-service;1</code></dd>
+</dl>
+
+<h3 id=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9" name=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9">サポートされたインタフェース</h3>
+
+<p><code><a href="ja/NsIObserverService">nsIObserverService</a></code></p>
+
+<h3 id=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88" name=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88">コメント</h3>
+
+<p>このコンポーネントは、単独で使用するか、XPCOM サービスマネージャを通してアクセスします。これはメインスレッドからのみ使用されるべきです。</p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/components/nsscriptableinputstream/index.html b/files/ja/mozilla/tech/xpcom/reference/components/nsscriptableinputstream/index.html
new file mode 100644
index 0000000000..ce98722492
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/components/nsscriptableinputstream/index.html
@@ -0,0 +1,66 @@
+---
+title: nsScriptableInputStream
+slug: Mozilla/Tech/XPCOM/Reference/Components/nsScriptableInputStream
+tags:
+ - Components
+ - 'Components:Frozen'
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Components/nsScriptableInputStream
+---
+<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p>
+
+<h3 id=".E8.A6.81.E7.B4.84" name=".E8.A6.81.E7.B4.84">要約</h3>
+
+<p><code><a href="ja/NsIScriptableInputStream">nsIScriptableInputStream</a></code> を実装するコンポーネント。</p>
+
+<dl>
+ <dt>Class ID</dt>
+ <dd><code>7225c040-a9bf-11d3-a197-0050041caf44</code></dd>
+ <dt>ContractID</dt>
+ <dd><code>@mozilla.org/scriptableinputstream;1</code></dd>
+</dl>
+
+<h3 id=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9" name=".E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9">サポートされたインタフェース</h3>
+
+<p><code><a href="ja/NsIScriptableInputStream">nsIScriptableInputStream</a></code>, <code><a href="ja/NsIInputStream">nsIInputStream</a></code></p>
+
+<h3 id=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88" name=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88">コメント</h3>
+
+<p>このコンポーネントは XPCOM コンポーネントマネージャを通してアクセスします。</p>
+
+<h3 id=".E3.82.B3.E3.83.BC.E3.83.89.E4.BE.8B" name=".E3.82.B3.E3.83.BC.E3.83.89.E4.BE.8B">コード例</h3>
+
+<pre>const nsIScriptableInputStream = Components.interfaces.nsIScriptableInputStream;
+
+function consumeStream(inputStream)
+{
+ var factory = Components.classes["@mozilla.org/scriptableinputstream;1"];
+
+ var sis = factory.createInstance(nsIScriptableInputStream);
+ sis.init(inputStream);
+
+ try
+ {
+ while (true)
+ {
+ var chunk = sis.read(512);
+ if (chunk.length == 0)
+ break;
+
+ // ok, chunk now contains a portion of the stream's data.
+ // Do something with it!
+ }
+ }
+ catch (e)
+ {
+ dump("Error: failed reading from stream:\n" + e + "\n");
+ }
+}
+</pre>
+
+<h3 id=".E5.8F.82.E8.80.83" name=".E5.8F.82.E8.80.83">参考</h3>
+
+<p><a href="ja/NsIScriptableInputStream">nsIScriptableInputStream</a></p>
+
+<div class="noinclude"> </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/glue_classes/index.html b/files/ja/mozilla/tech/xpcom/reference/glue_classes/index.html
new file mode 100644
index 0000000000..370f7ffe1e
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/glue_classes/index.html
@@ -0,0 +1,16 @@
+---
+title: XPCOM glue classes
+slug: Mozilla/Tech/XPCOM/Reference/Glue_classes
+tags:
+ - Classes
+ - Landing
+ - NeedsTranslation
+ - TopicStub
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/Reference/Glue_classes
+---
+<p><span class="seoSummary">These "glue" classes are provided to make it easier to use XPCOM from C++ code.</span> When these classes are used by a component, you may need to link the component against the XPCOM glue library.</p>
+<div class="row topicpage-table">
+ <div class="section"><dl><dl><dt></dt></dl></dl></div>
+ <div class="section"><dl><dt class="landingPageList"><a href="/ja/docs/nsCOMPtr">nsCOMPtr</a></dt><dd class="landingPageList">このユーティリティクラスは、 C++ のコードからの XPCOM インタフェースの参照の管理をシンプルにします。</dd></dl></div>
+ </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/glue_classes/nscomptr/index.html b/files/ja/mozilla/tech/xpcom/reference/glue_classes/nscomptr/index.html
new file mode 100644
index 0000000000..3de5c924b8
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/glue_classes/nscomptr/index.html
@@ -0,0 +1,27 @@
+---
+title: nsCOMPtr
+slug: Mozilla/Tech/XPCOM/Reference/Glue_classes/nsCOMPtr
+tags:
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Glue_classes/nsCOMPtr
+---
+<div>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></div>
+
+<h2 id="Summary" name="Summary">概要</h2>
+
+
+<p>このユーティリティクラスは、 C++ のコードからの XPCOM インタフェースの参照の管理をシンプルにします。</p>
+
+<pre class="syntaxbox">#include "nsCOMPtr.h"</pre>
+
+
+<h2 id="Remarks" name="Remarks">備考</h2>
+
+<p>詳細については『 <a href="/ja/docs/Using_nsCOMPtr"><code>nsCOMPtr</code> の使用</a>』 を参照して下さい。</p>
+
+
+
+
+
+このクラスを使用するには、コンポーネントまたはアプリケーションから <a href="/ja/docs/XPCOM_Glue">XPCOM glue library</a> にリンクする必要があります。クラス自体とそれに使用されている支援機能は凍結されていませんが、容易な再利用のために XPCOM glue library の一部として提供されています。
diff --git a/files/ja/mozilla/tech/xpcom/reference/index.html b/files/ja/mozilla/tech/xpcom/reference/index.html
new file mode 100644
index 0000000000..49949e50fd
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/index.html
@@ -0,0 +1,21 @@
+---
+title: XPCOM reference
+slug: Mozilla/Tech/XPCOM/Reference
+tags:
+ - Landing
+ - Mozilla
+ - NeedsTranslation
+ - Reference
+ - TopicStub
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/Reference
+---
+<p>This reference describes the interfaces and functions provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM">XPCOM</a> library. In addition, it details the various helper classes and functions, as well as the components, provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM/Glue">XPCOM glue</a> library. The contents herein are oriented primarily toward extension developers and people embedding XPCOM in other projects.</p>
+<div class="note">
+ <p><strong>Note:</strong> If you're working on a module in the Mozilla codebase that's compiled with the <code>MOZILLA_INTERNAL_API</code> flag set, some of these APIs -- the string functions and classes in particular -- are not the ones you should be using. See the <a href="/en-US/docs/Mozilla/Tech/XPCOM/Guide/Internal_strings">XPCOM internal string guide</a> for documentation of the internal string API used within the Mozilla codebase.</p>
+</div>
+<div class="row topicpage-table">
+ <div class="section"><dl><dl><dt class="landingPageList"><a href="/ja/docs/NS_ENSURE_TRUE">NS ENSURE TRUE</a></dt><dd class="landingPageList"><strong>マクロ</strong></dd><dt class="landingPageList"><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Components">Standard XPCOM components</a></dt><dd class="landingPageList">There are a number of components provided in the standard implementation of XPCOM; these are as follows.</dd><dt class="landingPageList"><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Glue_classes">XPCOM glue classes</a></dt><dd class="landingPageList">These "glue" classes are provided to make it easier to use XPCOM from C++ code.</dd><dt class="landingPageList"><a href="/ja/docs/XPCOM_Interface_Reference_group">XPCOM Interface Reference group</a></dt><dd class="landingPageList">このページには2010年12月1日現在の Mozilla インターフェースが一覧となっています。<a href="/ja/XPCOM_Interface_Reference" title="ja/XPCOM_Interface_Reference">the XPCOM interface Reference</a> の一覧はアルファベット順に並べられていますが、このページではそれらを機能ごとにグループ化するという試みがなされています。グループ化とカテゴリの名称は著者<span style="color: darkgreen; background: #ef9;">【訳注: 英語版のこのページの著者】</span>による独断が多少入り混じっています。(これについては涙を流す結末になりうる重大な論点であるとは認識しています。ですが、どうやら私がこの編集を行った最初の人物であるようなので、最初の編集者としての権利を得たものとします。)</dd></dl></dl></div>
+ <div class="section"><dl><dt class="landingPageList"><a href="/ja/docs/XPCOM_Interface_Reference">XPCOM インタフェースリファレンス</a></dt><dd class="landingPageList">これは Mozilla プラットフォームにおいて提供されている XPCOM インタフェースのリファレンスです。</dd></dl></div>
+ </div>
+<p>Many XPCOM pages return an <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Core_functions/nsresult">nsresult</a></code>. Prior to Gecko 19 (Firefox 19 / Thunderbird 19 / SeaMonkey 2.16), this was an integer that simply returned an error code. It is now a strongly typed <code>enum</code> when XPCOM is built using a C++11 compiler. This causes compile-time errors to occur when improper values are returned as nsresult values, thereby making it easier to catch many bugs.</p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/ns_ensure_true/index.html b/files/ja/mozilla/tech/xpcom/reference/ns_ensure_true/index.html
new file mode 100644
index 0000000000..cf931e4a21
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/ns_ensure_true/index.html
@@ -0,0 +1,49 @@
+---
+title: NS ENSURE TRUE
+slug: Mozilla/Tech/XPCOM/Reference/NS_ENSURE_TRUE
+tags:
+ - XPCOM
+ - XPCOM_Macros
+translation_of: Mozilla/Tech/XPCOM/Reference/NS_ENSURE_TRUE
+---
+<h3 id="Summary" name="Summary">概要</h3>
+
+<p><strong>マクロ</strong></p>
+
+<p><em>expr</em> の評価値が <strong>false</strong> の場合に <em>return-value </em>を返す。</p>
+
+<h3 id="Syntax" name="Syntax">構文</h3>
+
+<pre>NS_ENSURE_TRUE( expr, return-value );
+</pre>
+
+<p> </p>
+
+<h3 id="Usage" name="Usage">使い方</h3>
+
+<pre>nsresult mozMyClass::MozStringMucking()
+{
+ char *foo = new char[123];
+ NS_ENSURE_TRUE(foo, NS_ERROR_OUT_OF_MEMORY);
+
+ // This is equivalent to doing:
+ // これは以下の式と同等です。
+ if (!foo)
+ return NS_ERROR_OUT_OF_MEMORY;
+
+ // Thou shalt not return NS_ERROR_FAILURE..
+ // これは、NS_ERROR_FAILURE を返さない。。
+ int i = 3;
+ NS_ENSURE_TRUE(i == 3, NS_ERROR_FAILURE);
+
+ return NS_OK;
+}
+
+char* mozMyClass::DoStuff()
+{
+ char* bar = new char[321];
+ NS_ENSURE_TRUE(bar, nsnull);
+
+ return bar;
+}
+</pre>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/imgiloader/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/imgiloader/index.html
new file mode 100644
index 0000000000..58a3045835
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/imgiloader/index.html
@@ -0,0 +1,27 @@
+---
+title: imgILoader
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/imgILoader
+tags:
+ - Interfaces
+ - MDC Project
+ - NeedsContent
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/imgILoader
+---
+<p>以下のコードスニペットを使用して imgLoader のインスタンスを生成することができます。</p>
+<pre class="eval">var imgLoader = Components.classes["@mozilla.org/image/loader;1"]
+ .getService(Components.interfaces.imgILoader);
+</pre>
+<p>インタフェースは以下のメソッドがあります:</p>
+<ul>
+ <li>loadImage</li>
+ <li>loadImageWithChanel</li>
+ <li>supportImageWithMimeType</li>
+</ul>
+<h3 id=".E5.8F.82.E8.80.83" name=".E5.8F.82.E8.80.83">参考</h3>
+<ul>
+ <li>XULPlanet 上の自動生成されたドキュメント: <a class="external" href="http://www.xulplanet.com/references/xpcomref/ifaces/imgILoader.html" rel="freelink">http://www.xulplanet.com/references/...mgILoader.html</a></li>
+</ul>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/index.html
new file mode 100644
index 0000000000..d797fde123
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/index.html
@@ -0,0 +1,15 @@
+---
+title: XPCOM インタフェースリファレンス
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference
+tags:
+ - XPCOM
+ - XPCOM Interface Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface
+---
+<p>これは Mozilla プラットフォームにおいて提供されている XPCOM インタフェースのリファレンスです。</p>
+<div class="cols-3">
+ <ul><li><a href="/ja/docs/XPCOM_Interface_Reference/NsIDOMHTMLMediaElement">NsIDOMHTMLMediaElement</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/imgILoader">imgILoader</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/mozIJSSubScriptLoader">mozIJSSubScriptLoader</a></li><li><a href="/ja/docs/mozIRegistry">mozIRegistry</a></li><li><a href="/ja/docs/mozIStorageStatementParams">mozIStorageStatementParams</a></li><li><a href="/ja/docs/nsIAccessible">nsIAccessible</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIAccessibleProvider">nsIAccessibleProvider</a></li><li><a href="/ja/docs/nsIAnnotationObserver">nsIAnnotationObserver</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIAsyncInputStream">nsIAsyncInputStream</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIConsoleService">nsIConsoleService</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIContentPrefObserver">nsIContentPrefObserver</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIContentPrefService">nsIContentPrefService</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsICryptoHash">nsICryptoHash</a></li><li><a href="/ja/docs/nsIDOMFile">nsIDOMFile</a></li><li><a href="/ja/docs/nsIDOMFileException">nsIDOMFileException</a></li><li><a href="/ja/docs/nsIDOMFileList">nsIDOMFileList</a></li><li><a href="/ja/docs/nsIDOMOfflineResourceList">nsIDOMOfflineResourceList</a></li><li><a href="/ja/docs/NsIDOMSimpleGestureEvent">nsIDOMSimpleGestureEvent</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIDownload">nsIDownload</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIDownloadManager">nsIDownloadManager</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIDownloadManagerUI">nsIDownloadManagerUI</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIDownloadProgressListener">nsIDownloadProgressListener</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIDragService">nsIDragService</a></li><li><a href="/ja/docs/nsIEffectiveTLDService">nsIEffectiveTLDService</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeed">nsIFeed</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedContainer">nsIFeedContainer</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedElementBase">nsIFeedElementBase</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedEntry">nsIFeedEntry</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedGenerator">nsIFeedGenerator</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedPerson">nsIFeedPerson</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedProcessor">nsIFeedProcessor</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedProgressListener">nsIFeedProgressListener</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedResult">nsIFeedResult</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedResultListener">nsIFeedResultListener</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIFeedTextConstruct">nsIFeedTextConstruct</a></li><li><a href="/ja/docs/nsIHttpActivityDistributor">nsIHttpActivityDistributor</a></li><li><a href="/ja/docs/nsIHttpActivityObserver">nsIHttpActivityObserver</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel">nsIHttpChannel</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIIOService">nsIIOService</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIIdleService">nsIIdleService</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIInputStream">nsIInputStream</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIJSCID">nsIJSCID</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIJSON">nsIJSON</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsILoginInfo">nsILoginInfo</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsILoginManager">nsILoginManager</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIObserver">nsIObserver</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIObserverService">nsIObserverService</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIOutputStream">nsIOutputStream</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIParentalControlsService">nsIParentalControlsService</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIParserUtils">nsIParserUtils</a></li><li><a href="/ja/docs/nsIPassword">nsIPassword</a></li><li><a href="/ja/docs/nsIPasswordManager">nsIPasswordManager</a></li><li><a href="/ja/docs/NsIPlacesView">nsIPlacesView</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIPrefBranch">nsIPrefBranch</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIScriptableUnescapeHTML">nsIScriptableUnescapeHTML</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIScriptableUnicodeConverter">nsIScriptableUnicodeConverter</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsISessionStore">nsISessionStore</a></li><li><a href="/ja/docs/nsISupports_proxies">nsISupports proxies</a></li><li><a href="/ja/docs/nsITaggingService">nsITaggingService</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIThread">nsIThread</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIThreadEventFilter">nsIThreadEventFilter</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIThreadInternal">nsIThreadInternal</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIThreadManager">nsIThreadManager</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIThreadObserver">nsIThreadObserver</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIThreadPool">nsIThreadPool</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener">nsIWebProgressListener</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIWindowMediator">nsIWindowMediator</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIXMLHttpRequest">nsIXMLHttpRequest</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIZipEntry">nsIZipEntry</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIZipReader">nsIZipReader</a></li><li><a href="/ja/docs/XPCOM_Interface_Reference/nsIZipWriter">nsIZipWriter</a></li></ul></div>
+<h2 id="See_also" name="See_also">関連情報</h2>
+<ul>
+ <li><a href="/ja/docs/XPCOM_Interface_Reference_group" title="XPCOM_Interface_Reference_group">Interfaces grouped by function</a></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/mozijssubscriptloader/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/mozijssubscriptloader/index.html
new file mode 100644
index 0000000000..5a0cb305dc
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/mozijssubscriptloader/index.html
@@ -0,0 +1,80 @@
+---
+title: mozIJSSubScriptLoader
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/mozIJSSubScriptLoader
+tags:
+ - Interfaces
+ - 'Interfaces:Scriptable'
+ - XPCOM
+ - XPCOM API Reference
+ - XPCOM Interface Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/mozIJSSubScriptLoader
+---
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/js/src/xpconnect/idl/mozIJSSubScriptLoader.idl" rel="custom">js/src/xpconnect/idl/mozIJSSubScriptLoader.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+このインタフェースは、 実行時に与えられた URL の JavaScript コードを読み込み実行するために、特権を持つ JavaScript から使用されます。
+</span>
+
+ <div style="height: 42px; position: relative; padding: 2px; width: auto;">
+
+ <div style="top: 22px; font-size: 11px; position: absolute; left: 0px; text-align: right; float: right; width: 100%;">66</div>
+
+<div style="height: 8px; top: 16px; left: 0%; background: #00dd00; position: absolute; width: 100%;" title="Introduced in Gecko 1.0 "></div>
+
+<div style="top: 0px; font-size: 11px; position: absolute; left: 0%;">Introduced</div>
+<div style="top: 22px; font-size: 11px; position: absolute; left: 0%;">Gecko 1.0</div>
+
+ <div style="height: 8px; top: 16px; left: 10.928571428571429%; background: #eeee00; position: absolute; width: 1%; border-radius: 4px; -webkit-border-radius: 4px;" title="Last changed in Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)"></div>
+
+</div>
+
+<div style="background: #eee; padding: 2px;">
+継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code>
+<span style="text-align: right; float: right;">最終更新: Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)</span></div>
+</div>
+<p>実装元: <code>@mozilla.org/moz/jssubscript-loader;1</code>。このサービスを取得するには次のコードを使用します:</p>
+<pre class="eval">var mozIJSSubScriptLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
+ .getService(Components.interfaces.mozIJSSubScriptLoader);
+</pre>
+<div class="note"><strong>補足:</strong> もう一つの JavaScript コードをインポートする方法は、<a class="internal" href="/ja/Components.utils.import" title="ja/Components.utils.import"><code>Components.utils.import</code></a> を参照してください。</div>
+<h2 id="Method_overview" name="Method_overview">メソッドの概要</h2>
+<table class="standard-table"> <tbody> <tr> <td><code>void <a href="#loadSubScript()">loadSubScript</a>(in wstring url, in targetObj <span class="inlineIndicator optional optionalInline">Optional</span>, in charset </code><code><span class="inlineIndicator optional optionalInline">Optional</span></code><code>);</code></td> </tr> </tbody>
+</table>
+<h2 id="Methods" name="Methods">メソッド</h2>
+<h3 id="loadSubScript" name="loadSubScript()">loadSubScript()</h3>
+<p>スクリプトを指定された URL から同期的に読み込み、実行します。</p>
+<p>指定されたスクリプトはシステムの規則に従って実行されます。これは、スクリプトができることに、全く制限がないことを意味します。</p>
+<div class="blockIndicator note"><strong>註:</strong> このメソッドは JavaScript からのみ呼び出されます!</div>
+<pre class="eval">void loadSubScript(
+ in wstring url,
+ in targetObj <span class="inlineIndicator optional optionalInline">Optional</span>,
+ in charset <span class="inlineIndicator optional optionalInline">Optional</span>,
+);
+</pre>
+<h6 id="Parameters" name="Parameters">引数</h6>
+<dl> <dt><code>url</code></dt> <dd>読み込むスクリプトを指す URL。これは、ローカルの <code>chrome: または resource:, file:</code> URL で<strong>あるべき</strong>です (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=307686" title="jssubscript-loader does not want to load script that are not local">バグ 307686</a> および <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=418356" title="FIXED: [FIX]It's unsafe to use mozIJSSubScriptLoader.loadSubScript() with non-chrome urls or chrome urls whose scheme/host part contain uppercase characters">バグ 418356</a> を参照)。 <div class="geckoVersionNote"> <div class="geckoVersionHeading">
+Gecko 1.9 note
+<div style="font-size: 9px; line-height: 1; font-style: italic;">(Firefox 3)</div>
+</div> <p>Firefox 3.0 より前のバージョンでは、<code>data:</code> URL が使用できましたが、セキュリティ上の問題から許可されなくなりました。</p> </div> </dd> <dt><code>targetObj</code></dt> <dd>スクリプトが実行されるためのスコープオブジェクトとして使用されるオブジェクト。デフォルトでは、呼び出し元のグローバルオブジェクトになります。</dd>
+</dl>
+<dl> <dt><code>charset</code> </dt> <dd>読み込むスクリプトファイルの文字エンコーディングを指定する任意の文字列。省略すると、ファイルは ASCII 文字列として処理されます。</dd>
+</dl>
+<h2 id="Example" name="Example">例</h2>
+<pre class="brush: js">var global = this;
+var obj = {};
+var loader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
+ .getService(Components.interfaces.mozIJSSubScriptLoader);
+loader.loadSubScript("data:text/plain,var a=1", obj)
+loader.loadSubScript("data:text/plain,this.b=1", obj)
+loader.loadSubScript("data:text/plain,c=1", obj)
+loader.loadSubScript("data:text/plain,function f(){}", obj)
+
+alert(obj.toSource()); // ({a:1, b:1, f:function f() {}})
+alert("a" in global); // false
+alert("b" in global); // false
+alert(global.c); // 1
+</pre>
+<div class="noinclude">
+
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/moziregistry/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/moziregistry/index.html
new file mode 100644
index 0000000000..0eb074f536
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/moziregistry/index.html
@@ -0,0 +1,89 @@
+---
+title: mozIRegistry
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/mozIRegistry
+tags:
+ - Outdated_articles
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/mozIRegistry
+---
+<div class="blockIndicator warning">
+ <p><strong>警告:</strong> <strong>この記事の内容は古くなっている可能性があります。</strong> これは実装されなかった機能の設計書のようです。</p>
+</div>
+<h3 id=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB" name=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB">はじめに</h3>
+<p>このドキュメントのタイトルは、とても誤解を受けやすいものになっています。実は、「レジストリインタフェース」についてのドキュメントではありません。このドキュメントは、インタフェースのクライアントとインタフェースの実装を実際に提供するコードとの間の、よりダイナミックな結合を Mozilla がどのように支援しているか、ということについて述べています。</p>
+<p>この目的のため、ソースコードの中の明確なある場所において (実際には) どの実装が使われるか、という情報の保存が必要になります。 そして、今までのところ、我々はその情報を「Netscape レジストリ」ファイルに格納することにしています。 以上が、この (ドキュメントの) 情報が「レジストリ」という概念とどのように関係するようになるのかということの説明です。</p>
+<p>いつか (私の希望ですが) このページのタイトルが適切に付けられるはずです。そうすれば、この場所が、Mozilla ブラウザを形成する様々な XPCOM コンポーネントがどのように互いに結びつくように考えられているか、を発見するための場所であることを皆さんが理解できるようになるでしょう。以下の情報は、それがどのように行われるかについて、あなたが知るべきすべてのことを説明するためのものです。</p>
+<h3 id=".E8.A6.81.E7.B4.84" name=".E8.A6.81.E7.B4.84">要約</h3>
+<p>クライアントは、任意のクラスのインスタンスを作成するために、nsRepository に依存します。 CLSID のダイナミックな結合を必要とするクライアントは、使用する CLSID を解決するために、ある高水準のサービス (TBD) を使う必要があります。 そのようにする意図は、そのようなサービス自身が新しい mozIRegistry インタフェースの上層部に作られるからです。</p>
+<p>我々は、新しい XPCOM インタフェース「mozIRegistry」を提案します。これは、libreg で実装されていた「Netscape レジストリ」の機能と同じレベルの機能を提供します。nsRepository は、このインタフェースを使用するように修正されるでしょう。それによって、別のレジストリの実装を実行時/リンク時に置き換えることができるようになります。2 つのレジストリインタフェースの実装が存在するでしょう。ひとつは、libreg だけに基づいたもの (互換性のため) で、もうひとつはより装飾的な RDF ベースのものです。</p>
+<h3 id=".E6.9C.AA.E8.A7.A3.E6.B1.BA.E3.81.AE.E5.95.8F.E9.A1.8C" name=".E6.9C.AA.E8.A7.A3.E6.B1.BA.E3.81.AE.E5.95.8F.E9.A1.8C">未解決の問題</h3>
+<p>我々は、2 つの未解決な問題を認識しています。どちらもタイムリーに解決できないほど、大変なようには見えません。</p>
+<ol>
+ <li>もし現在の CLSID の静的な結合を取り除いた時は、要求された CLSID が存在しないリスクがあるかもしれません。 必然的結果として、新しいクラス実装へアクセスできるように、ビルド/インストールプロセスがユーザ「レジストリ」の更新をしなければならないでしょう。 我々の現在のビルド/インストールプロセスは、まだそれらの問題を解決していません。</li>
+ <li>起動時において、mozIRegistry インタフェースにアクセスするためのサービスマネージャの使用に関係する問題がいくつかあります。現在のところ、nsIServiceManager は、そのサービスの実装をハードコードしているサービスにアクセスするために CLSID を必要とします。この問題は、別の mozIRegistry の実装を可能にするために、または実行時に結合される他のサービスマネージャの実装を可能にするためにも解決されなければなりません。私は、単純な CLSID の「別名」の仕組み (ある意味で COM の「コンポーネントカテゴリ」と同等の仕組み)、およびサービスを「設定する」ことができるようにする (これは、サービスマネージャがサービス自身を作成するというのと対立します) ことで、解決できると思います。最悪の場合は、クライアントは mozIRegistry シングルトンを他の手段 (つまり「NSGetRegistry」関数) を通じて取得するかもしれません。</li>
+</ol>
+<h3 id=".E3.82.A2.E3.83.BC.E3.82.AD.E3.83.86.E3.82.AF.E3.83.81.E3.83.A3" name=".E3.82.A2.E3.83.BC.E3.82.AD.E3.83.86.E3.82.AF.E3.83.81.E3.83.A3">アーキテクチャ</h3>
+<p><img alt="Image:mozIRegistry.jpg"></p>
+<p>この図は、他の Mozilla コンポーネントと相互作用するために使われる、様々なコンポーネントを示しています。</p>
+<p>いくつかは、説明のためのものです (図の上部付近の明るい色の箱)。これらには、(実際に) あなたが設計し、かつ実装するコンポーネントの型が入ります。 私は、それらについて説明して、あなたが他の箱をどのように使うべきかということの例を示そうと思います。</p>
+<p>暗い色の箱で示されるコンポーネントは、あなたが使うサービスです。 このドキュメントで、これらのコンポーネントの設計と実装の原則について説明します。</p>
+<p>最後に、(「mozRDFRegistry/nsIRDFDatabase」というラベルが付いている) ひとつのコンポーネントがあります。このコンポーネントは、mozIRegistry インタフェースのひとつの改良された実装として明らかになるかもしれません。 私は、その実装についてほんの短く論じる予定です。(その主な理由は、その実装を誰かにやって欲しいからです。)</p>
+<div class="note" id="ServiceManagerNote">
+ <p>コードを他の Mozilla コンポーネントに接続する時に、とても重要なコンポーネントがもうひとつあります。 それは「サービスマネージャ」です。 私は、ちょうどその役割を理解し始めたところです。まだ把握しきれていないので、今のところは(言えることは)何もありません。 将来的には、サービスマネージャについての情報を追加するつもりです。少なくとも、そのドキュメントへのリンクを張るつもりです。</p>
+</div>
+<h3 id=".E9.AB.98.E6.B0.B4.E6.BA.96.E3.81.AE.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88" name=".E9.AB.98.E6.B0.B4.E6.BA.96.E3.81.AE.E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82.B7.E3.83.A7.E3.83.B3.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88">高水準のアプリケーションコンポーネント</h3>
+<p>この箱は、潜在的ユーザのコアのレジストリ/リポジトリインタフェースを表しています。</p>
+<p>あなたのコードは、(たぶん) この箱に収まるでしょう。</p>
+<p>これらのコンポーネントは、その任務を果たすために、様々な度合で、他のコンポーネントを使う必要があるでしょう。これらの他のコンポーネントは、おそらく特定の XPCOM インタフェースを実装します。 あなたのコンポーネントが必要とするインタフェースを実装するオブジェクトを生成するにはどうすればよいでしょうか。</p>
+<p>ひとつの方法は、nsRepository を使ってインタフェースを生成することです。 nsRepository は、元々 XPCOM の CLSID からクラスファクトリーへのマッピングであり、加えてそのマッピングを管理し、与えられた CLSID のインスタンスを生成する関数を含むものです。</p>
+<p>nsRepository 関数は、nsRepository.h で宣言されています。 nsRepository についてのもっと多くの情報は、<a href="#nsRepository">下</a> にあります。</p>
+<p>他のコンポーネントにアクセスする 2 つ目の方法は、サービスマネージャを経由することです。これについては、このドキュメントではカバーされません。<a href="#ServiceManagerNote">上の注</a> を見てください。</p>
+<p>このセクションでは、多くの異なるコンポーネント、それらの他のコンポーネントへのダイナミックな結合の要求、そしてそれらがその要求を満たすためにどのようにコア XPCOM コンポーネントを利用するか、について論じるつもりです。</p>
+<ul>
+ <li><b>i18n</b></li>
+ <li><b>XUL/xpToolkit</b></li>
+ <li><b>App Shell</b></li>
+</ul>
+<h3 id="CLSID_.E7.B5.90.E5.90.88.E3.83.97.E3.83.AD.E3.83.88.E3.82.B3.E3.83.AB" name="CLSID_.E7.B5.90.E5.90.88.E3.83.97.E3.83.AD.E3.83.88.E3.82.B3.E3.83.AB"><code>CLSID</code> 結合プロトコル</h3>
+<p>ここには、レジストリーへの CLSID 情報の保存と、nsRepository を使った、コア XPCOM サービスの上層部でのインスタンス作成プロトコルを実装するための、その情報の使用の特定のイディオムの潜在的なカプセル化について書く予定です。</p>
+<p>これらは、提供している基本的なサービスによって、2 つのカテゴリーに分かれると思います。</p>
+<ul>
+ <li>与えられたインタフェースの実装を見付ける。</li>
+ <li>与えられた任意のプロパティに適合する適切な実装を見付ける。</li>
+</ul>
+<h3 id="nsRepository" name="nsRepository">nsRepository</h3>
+<p>これは、基本的に今提供されているものと同じです (mozilla/xpcom/public/nsRepository.h を参照してください)。 このコンポーネントに対する主な変更は、今まで呼んでいた NSReg.h の関数ではなく、新しい mozIRegistry インタフェースを利用するようにしたことです。 加えて、あまり重要ではない、いくつかの拡張があります。</p>
+<ul>
+ <li>Initialize() で .reg ファイル名の指定をサポートしている。</li>
+</ul>
+<p>このことは、(今よりは) もう少し柔軟性を増すことにつながり、その結果、XPCOM をより汎用的にすることができるでしょう。</p>
+<ul>
+ <li>初期化担当者 (クライアントアプリケーション) が、基本的な mozIRegistry の実装を仕立てることができるようになった。</li>
+</ul>
+<p>そのため、より進んだ実装 (例えば RDF ベースのもの) と基本的な libreg ベースのレジストリーの実装との間で選択することができます。</p>
+<p>nsRepository は CLSID だけを知っています。クライアントコンポーネント/アプリケーションは CLSID を取得する責任があります。 このテーマは、いくつかの点でもう少し説明が必要です。 基本的に、それらのサービスが mozIRegistry インタフェースに基づくべきだと想像します。 言い替えると、Rick が先週示唆したように、それらはレジストリーとリポジトリーの上層部にプロトコルを実装するでしょう。</p>
+<div class="note">
+ <p>私は、これは nsRepository のコードを改善するのに役立つと思います。これにより、サービスマネージャと同じように構造化されるでしょう。そうすると、nsRepository 自身をサービスとし、XPCOM モジュールを XPCOM の実装から完全に (?!) 引き離すことができるでしょう。</p>
+</div>
+<dl>
+ <dt>
+ mozIRegistry</dt>
+ <dd>
+ これは、新しいインタフェースで、現在 mozilla/modules/libreg/include/NSReg.h で定義されている libreg (「Netscapeレジストリー」としても知られている) が提供しているのと基本的に同じ関数を外に見せるものです。 クライアントは、このインタフェースをサービスマネージャを通じて、取得します (mozilla/xpcom/public/nsIServiceManager.h を見てください)。</dd>
+ <dt>
+ mozRegistry</dt>
+ <dd>
+ これは、とても簡単な mozIRegistry インタフェースの実装です。 NSReg.h の関数のための単純な C++ ラッパーとして作られています。 これは、現在の libreg の使用と完全に互換性のある (もう少し) 軽い実装を提供することを意図しています。</dd>
+ <dt>
+ mozRDFRegistry</dt>
+ <dd>
+ これは、付加的な能力を提供する RDF ベースの mozIRegistry 実装です。 これらの付加的な能力は、nsRepository によっては利用されないことに注意してください。 libreg の .reg ファイル、共有ライブラリのインストール、net を通じてアクセス可能な追加のコンポーネント、などに対応する基本的な RDF データソースの複数のタイプがあるでしょう。</dd>
+</dl>
+<p>この RDF データベースのコンテンツは、プレーンテキストの rdf/xml ファイルとして保存されます。そのため、中を見たり編集したりするのが簡単にできます。 またそれにより、人々が表示したりそのコンテンツを編集したりできるような、ブラウザーベースのアプリケーションの構築が容易になります。</p>
+<div class="originaldocinfo">
+ <h2 id=".E5.8E.9F.E6.96.87.E6.9B.B8.E3.81.AE.E6.83.85.E5.A0.B1" name=".E5.8E.9F.E6.96.87.E6.9B.B8.E3.81.AE.E6.83.85.E5.A0.B1">原文書の情報</h2>
+ <ul>
+ <li>著者: <a class="link-mailto" href="mailto:law@netscape.com">Bill Law</a></li>
+ <li>最終更新日: January 21, 1999</li>
+ <li>著作権: Portions of this content are © 1998–2007 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">詳細</a></li>
+ </ul>
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/mozistoragestatementparams/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/mozistoragestatementparams/index.html
new file mode 100644
index 0000000000..4ea6f0c619
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/mozistoragestatementparams/index.html
@@ -0,0 +1,25 @@
+---
+title: mozIStorageStatementParams
+slug: >-
+ Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/mozIStorageStatementParams
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatementParams
+---
+<p>このインターフェースは定義済みのプロパティを1つも持ちませんが、与えられたステートメントのSQL内で見つかった名前付きパラメータに基づいたプロパティを持ちます。例えば、次のようにステートメントを構築します:</p>
+<pre class="brush: js">var statement = dbConn.createStatement("SELECT * FROM table_name WHERE id = :item_id");
+</pre>
+<p>このオブジェクトは <code>item_id</code> という1つのプロパティを持つことになり、次のようにして値を名前付きパラメータに束縛することができる:</p>
+<pre class="brush: js">statement.params.item_id = 2;
+</pre>
+<p>なぜ値をハードコーディングせずに、パラメータへの束縛を行うべきかについてのより詳しい情報は、<a class="internal" href="/ja/Storage#Binding_Parameters" title="ja/Storage#Binding Parameters">overview document about binding parameters</a>をご覧ください。</p>
+<h2 id="プロパティの列挙">プロパティの列挙</h2>
+<p> このオブジェクトの全てのプロパティは <code><a class="internal" href="/en/Core_JavaScript_1.5_Reference/Statements/for...in" title="En/Core JavaScript 1.5 Reference/Statements/For...in">for..in</a></code> により列挙することが出来ます:</p>
+<pre class="brush: js">// valuesToBind は ステートメントの実行前にバインドすべき
+// key-value ペアを持つオブジェクト
+for (let param in statement.params)
+  statement.params[param] = valuesToBind[param];
+</pre>
+<h2 id="参照">参照</h2>
+<ul>
+ <li><a href="/en/Storage" title="en/Storage">Storage</a></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatement" title="">mozIStorageStatement</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiaccessible/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiaccessible/index.html
new file mode 100644
index 0000000000..32251140ee
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiaccessible/index.html
@@ -0,0 +1,484 @@
+---
+title: nsIAccessible
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIAccessible
+tags:
+ - Accessibility
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessible
+---
+<p> </p>
+<p><code>nsIAccessible</code> インタフェースは、MSAA や ATK のようなプラットフォーム固有のアクセシビリティ API をサポートする、クロスプラットフォームなインタフェースです。ATK の一般的な accessibility オブジェクトと同様に、<code>IAccessible</code> をサポートするのに必要なもののすべてが含まれています。</p>
+<p>accessible tree 内のオブジェクトについての情報を取得するために、処理中の accessibility クライアントによって使用されます。accessible tree は DOM tree 内の (ドキュメントやフォーカス可能な要素、テキストのような) ノード のサブセットです。Mozilla は <code>nsIAccessible</code> の実装を要求があるときに生成します。</p>
+<p>参照: <code><a class="external" href="http://www.mozilla.org/projects/ui/accessibility" rel="freelink">http://www.mozilla.org/projects/ui/accessibility</a></code> に詳しい情報があります。 </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/accessible/public/nsIAccessible.idl" rel="custom">accessible/public/nsIAccessible.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>継承元: <a href="ja/NsISupports">nsISupports</a></p>
+<p><span id="Method_overview"></span></p>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code><a href="ja/NsIDOMDOMStringList">nsIDOMDOMStringList</a> <a href="#getKeyBindings.28.29">getKeyBindings</a>(in PRUint8 aActionIndex);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#getFinalState.28.29">getFinalState</a>(out unsigned long aState, out unsigned long aExtraState);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#groupPosition.28.29">groupPosition</a>(out long aGroupLevel, out long aSimilarItemsInGroup, out long aPositionInGroup);</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIAccessible <a href="#getChildAtPoint.28.29">getChildAtPoint</a>(in long x, in long y);</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIAccessible <a href="#getChildAt.28.29">getChildAt</a>(in long aChildIndex);</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIAccessible <a href="#getAccessibleToRight.28.29">getAccessibleToRight</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIAccessible <a href="#getAccessibleToLeft.28.29">getAccessibleToLeft</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIAccessible <a href="#getAccessibleAbove.28.29">getAccessibleAbove</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIAccessible <a href="#getAccessibleBelow.28.29">getAccessibleBelow</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIAccessible <a href="#getAccessibleRelated.28.29">getAccessibleRelated</a>(in unsigned long aRelationType);</code></td>
+ </tr>
+ <tr>
+ <td><code><a href="ja/NsIAccessibleRelation">nsIAccessibleRelation</a> <a href="#getRelation.28.29">getRelation</a>(in unsigned long index);</code></td>
+ </tr>
+ <tr>
+ <td><code><a href="ja/NsIArray">nsIArray</a> <a href="#getRelations.28.29">getRelations</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#getBounds.28.29">getBounds</a>(out long x, out long y, out long width, out long height);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#setSelected.28.29">setSelected</a>(in boolean isSelected);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#extendSelection.28.29">extendSelection</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#takeSelection.28.29">takeSelection</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#takeFocus.28.29">takeFocus</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>AString <a href="#getActionName.28.29">getActionName</a>(in PRUint8 index);</code></td>
+ </tr>
+ <tr>
+ <td><code>AString <a href="#getActionDescription.28.29">getActionDescription</a>(in PRUint8 aIndex);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#doAction.28.29">doAction</a>(in PRUint8 index);</code></td>
+ </tr>
+ </tbody>
+</table>
+<p><span id="Attributes"></span></p>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code id="parent">parent</code></td>
+ <td><code>nsIAccessible</code></td>
+ <td>accessible tree 内の親ノード。</td>
+ </tr>
+ <tr>
+ <td><code id="nextSibling">nextSibling</code></td>
+ <td><code>nsIAccessible</code></td>
+ <td>accessible tree 内の次の兄弟ノード。</td>
+ </tr>
+ <tr>
+ <td><code id="previousSibling">previousSibling</code></td>
+ <td><code>nsIAccessible</code></td>
+ <td>accessible tree 内の前の兄弟ノード。</td>
+ </tr>
+ <tr>
+ <td><code id="firstChild">firstChild</code></td>
+ <td><code>nsIAccessible</code></td>
+ <td>accessible tree 内の最初の子ノード。</td>
+ </tr>
+ <tr>
+ <td><code id="lastChild">lastChild</code></td>
+ <td><code>nsIAccessible</code></td>
+ <td>accessible tree 内の最後の子ノード。</td>
+ </tr>
+ <tr>
+ <td><code id="children">children</code></td>
+ <td><code><a href="ja/NsIArray">nsIArray</a></code></td>
+ <td>この要素の子ノードすべての配列。</td>
+ </tr>
+ <tr>
+ <td><code id="childCount">childCount</code></td>
+ <td><code>long</code></td>
+ <td>accessible 子ノードの数。</td>
+ </tr>
+ <tr>
+ <td><code id="indexInParent">indexInParent</code></td>
+ <td><code>long</code></td>
+ <td>この親に含まれる子ノードのリストの、0 を基点とした accessible の index。または、この accessible が親ノードを持たない場合は <code>-1</code> を返す。</td>
+ </tr>
+ <tr>
+ <td><code id="name">name</code></td>
+ <td><code>AString</code></td>
+ <td>Accessible の名前 -- このノードのメインテキストと同等。</td>
+ </tr>
+ <tr>
+ <td><code id="value">value</code></td>
+ <td><code>AString</code></td>
+ <td>Accessible の値 -- このノードの数量または二次テキストと同等。role 属性を使用するウィジェットは、この値に valuenow 属性の使用を強制することができます。</td>
+ </tr>
+ <tr>
+ <td><code id="description">description</code></td>
+ <td><code>AString</code></td>
+ <td>Accessible の説明 -- このノードに関連付けられた長いテキスト。</td>
+ </tr>
+ <tr>
+ <td><code id="keyboardShortcut">keyboardShortcut</code></td>
+ <td><code>AString</code></td>
+ <td>Alt+D のように accesskey 名のローカライズされた文字列を提供。修飾子はユーザおよびプラットフォームの設定に影響されます。通常は <code>alt+文字</code>、または単にアクセスキーの文字がメニュー項目に使用されます。</td>
+ </tr>
+ <tr>
+ <td><code id="defaultKeyBinding">defaultKeyBinding</code></td>
+ <td><code>AString</code></td>
+ <td>ファイルを開くための <code>Ctrl+O</code> など、既定の動作のためのグローバルキーボードアクセラレータのローカライズされた文字列を提供。</td>
+ </tr>
+ <tr>
+ <td><code id="role">role</code></td>
+ <td><code>unsigned long</code></td>
+ <td>関連付けられた要素の accessible role の数。値はプラットフォームごとに異なります。<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleRole" title="">nsIAccessibleRole</a></code> 内で定義された <code>ROLE_*</code> 定数を参照してください。
+ <p>これは、<code>finalRole</code> がするように role 属性を考慮に入れません。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code id="finalRole">finalRole</code></td>
+ <td><code>unsigned long</code></td>
+ <td>accessible role の数。値はプラットフォームごとに異なります。<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleRole" title="">nsIAccessibleRole</a></code> 内で定義された <code>ROLE_*</code> 定数を参照してください。ウィジェットは、final role を強制するために role 属性を使用することができます。</td>
+ </tr>
+ <tr>
+ <td><code id="help">help</code></td>
+ <td><code>AString</code></td>
+ <td>ノードに関連付けられたヘルプテキスト。</td>
+ </tr>
+ <tr>
+ <td><code id="focusedChild">focusedChild</code></td>
+ <td><code>nsIAccessible</code></td>
+ <td>フォーカスされたノードの accessible 子ノード。</td>
+ </tr>
+ <tr>
+ <td><code id="attributes">attributes</code></td>
+ <td><code><a href="ja/NsIPersistentProperties">nsIPersistentProperties</a></code></td>
+ <td>Accessible の属性。</td>
+ </tr>
+ <tr>
+ <td><code id="relationsCount">relationsCount</code></td>
+ <td><code>unsigned long</code></td>
+ <td>このオブジェクトに関連する accessible の数を返す。</td>
+ </tr>
+ <tr>
+ <td><code id="numActions">numActions</code></td>
+ <td><code>PRUint8</code></td>
+ <td>この accessible に関連付けられた accessible action の数。</td>
+ </tr>
+ </tbody>
+</table>
+<p><span id="Methods"></span></p>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="getKeyBindings.28.29" name="getKeyBindings.28.29">getKeyBindings()</h3>
+<p>このメソッドは、与えられた accessible にサポートされた action index のための、グローバルキーボードアクセラレータのローカライズされた文字列を提供します。</p>
+<pre class="eval"> nsIDOMDOMStringList getKeyBindings(
+ in PRUint8 aActionIndex
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aActionIndex&lt;/tt&gt;</dt>
+ <dd>
+ 与えられた action の index。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6>
+<p>グローバルキーボードアクセラレータのローカライズされた文字列の配列を返す。</p>
+<h3 id="getFinalState.28.29" name="getFinalState.28.29">getFinalState()</h3>
+<p>このメソッドは final state を回収します。Accessible state -- ノードの真偽値プロパティについて書かれたビットフィールド。多くの state は、既知の確かな role 属性がサポートする有効なものだけです。</p>
+<pre class="eval"> void getFinalState(
+ out unsigned long aState,
+ out unsigned long aExtraState
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aState&lt;/tt&gt;</dt>
+ <dd>
+ 最初のビットフィールド (参照: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleStates" title="">nsIAccessibleStates</a></code> <code>STATE_*</code> constants)。</dd>
+ <dt>
+ &lt;tt&gt;aExtraState&lt;/tt&gt;</dt>
+ <dd>
+ 2 番目のビットフィールド (参照: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleStates" title="">nsIAccessibleStates</a></code> <code>EXT_STATE_*</code> constants)。</dd>
+</dl>
+<h3 id="groupPosition.28.29" name="groupPosition.28.29">groupPosition()</h3>
+<p>このメソッドはグループ化情報を返します。tree 項目、list 項目、tab パネルの label、radio ボタンなどに使用されます。また、テキストではないオブジェクトの収集にも使用されます。</p>
+<pre class="eval"> void groupPosition(
+ out long aGroupLevel,
+ out long aSimilarItemsInGroup,
+ out long aPositionInGroup
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aGroupLevel&lt;/tt&gt;</dt>
+ <dd>
+ 1 を基点とする。ARIA <code>level</code> プロパティと同様。</dd>
+ <dt>
+ &lt;tt&gt;aSimilarItemsInGroup&lt;/tt&gt;</dt>
+ <dd>
+ 現在の項目を含み、1 を基点とする。ARIA <code>setsize</code> プロパティと同様。</dd>
+ <dt>
+ &lt;tt&gt;aPositionInGroup&lt;/tt&gt;</dt>
+ <dd>
+ 1 を基点とする。ARIA <code>posinset</code> プロパティと同様。</dd>
+</dl>
+<h3 id="getChildAtPoint.28.29" name="getChildAtPoint.28.29">getChildAtPoint()</h3>
+<p>このメソッドは、スクリーンピクセルの (x, y) 座標を含む、accessible の子ノードを返します。</p>
+<p>この点の位置が現在の accessible 内で子ノードの外にある場合は、現在の accessible が返されます。</p>
+<p>この点の位置が現在の accessible または 子ノード内のどちらにもない場合は、<code>NULL</code> が返されます。</p>
+<pre class="eval"> nsIAccessible getChildAtPoint(
+ in long x,
+ in long y
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;x&lt;/tt&gt;</dt>
+ <dd>
+ Accessible の X 座標。</dd>
+ <dt>
+ &lt;tt&gt;y&lt;/tt&gt;</dt>
+ <dd>
+ Accessible の Y 座標。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6>
+<p>(x, y) 座標で与えられた accessible の子ノードを返す。</p>
+<h3 id="getChildAt.28.29" name="getChildAt.28.29">getChildAt()</h3>
+<p>このメソッドは、0 を基点とした index または 0 より小さい場合は最後の子ノードを使用して、accessible の N 番目の子ノードを返します。</p>
+<pre class="eval"> nsIAccessible getChildAt(
+ in long aChildIndex
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aChildIndex&lt;/tt&gt;</dt>
+ <dd>
+ N 番目の子ノードの index。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_3" name=".E6.88.BB.E3.82.8A.E5.80.A4_3">戻り値</h6>
+<p>0 を基点とした index または 0 より小さい場合は最後の子ノードを使用して、accessible の N 番目の子ノードを返す。</p>
+<h3 id="getAccessibleToRight.28.29" name="getAccessibleToRight.28.29">getAccessibleToRight()</h3>
+<p>このメソッドは、このノードの右側に配置された accessible ノードを返します。</p>
+<pre class="eval"> nsIAccessible getAccessibleToRight();
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_6" name=".E5.BC.95.E6.95.B0_6">引数</h6>
+<p>なし。</p>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_4" name=".E6.88.BB.E3.82.8A.E5.80.A4_4">戻り値</h6>
+<p>このノードの右側に配置された accessible ノードを返す。</p>
+<h3 id="getAccessibleToLeft.28.29" name="getAccessibleToLeft.28.29">getAccessibleToLeft()</h3>
+<p>このメソッドは、このノードの左側に配置された accessible ノードを返します。</p>
+<pre class="eval"> nsIAccessible getAccessibleToLeft();
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_7" name=".E5.BC.95.E6.95.B0_7">引数</h6>
+<p>なし。</p>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_5" name=".E6.88.BB.E3.82.8A.E5.80.A4_5">戻り値</h6>
+<p>このノードの左側に配置された accessible ノードを返す。</p>
+<h3 id="getAccessibleAbove.28.29" name="getAccessibleAbove.28.29">getAccessibleAbove()</h3>
+<p>このメソッドは、このノードの上側に配置された accessible ノードを返します。</p>
+<pre class="eval"> nsIAccessible getAccessibleAbove();
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_8" name=".E5.BC.95.E6.95.B0_8">引数</h6>
+<p>なし。</p>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_6" name=".E6.88.BB.E3.82.8A.E5.80.A4_6">戻り値</h6>
+<p>このノードの上側に配置された accessible ノードを返す。</p>
+<h3 id="getAccessibleBelow.28.29" name="getAccessibleBelow.28.29">getAccessibleBelow()</h3>
+<p>このメソッドは、このノードの下側に配置された accessible ノードを返します。</p>
+<pre class="eval"> nsIAccessible getAccessibleBelow();
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_9" name=".E5.BC.95.E6.95.B0_9">引数</h6>
+<p>なし。</p>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_7" name=".E6.88.BB.E3.82.8A.E5.80.A4_7">戻り値</h6>
+<p>このノードの下側に配置された accessible ノードを返す。</p>
+<h3 id="getAccessibleRelated.28.29" name="getAccessibleRelated.28.29">getAccessibleRelated()</h3>
+<p>このメソッドは、与えられた relation type (参照: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleRelation" title="">nsIAccessibleRelation</a></code> で定義された定数) によって、これに関連する accessible を返します。</p>
+<pre class="eval"> nsIAccessible getAccessibleRelated(
+ in unsigned long aRelationType
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_10" name=".E5.BC.95.E6.95.B0_10">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aRelationType&lt;/tt&gt;</dt>
+ <dd>
+ accessible 間の relation type。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_8" name=".E6.88.BB.E3.82.8A.E5.80.A4_8">戻り値</h6>
+<p>与えられた relation type によって提供された accessible に関連する accessible を返す。</p>
+<h3 id="getRelation.28.29" name="getRelation.28.29">getRelation()</h3>
+<p>このメソッドは、このオブジェクトに対する accessible relation を一つ返します。</p>
+<pre class="eval"> nsIAccessibleRelation getRelation(
+ in unsigned long index
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_11" name=".E5.BC.95.E6.95.B0_11">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;index&lt;/tt&gt;</dt>
+ <dd>
+ 回収される relation の index。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_9" name=".E6.88.BB.E3.82.8A.E5.80.A4_9">戻り値</h6>
+<p>このオブジェクトに対する accessible relation を一つ返す。</p>
+<h3 id="getRelations.28.29" name="getRelations.28.29">getRelations()</h3>
+<p>このメソッドは、このオブジェクトに対する複数の accessible relations を返します。</p>
+<pre class="eval"> nsIArray getRelations();
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_12" name=".E5.BC.95.E6.95.B0_12">引数</h6>
+<p>なし。</p>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_10" name=".E6.88.BB.E3.82.8A.E5.80.A4_10">戻り値</h6>
+<p>このオブジェクトに対する複数の accessible relations を返す。</p>
+<h3 id="getBounds.28.29" name="getBounds.28.29">getBounds()</h3>
+<p>このメソッドは、画面上の accessible の (x および y) 座標ならびに accessible の width および height を返します。</p>
+<pre class="eval"> void getBounds(
+ out long x,
+ out long y,
+ out long width,
+ out long height
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_13" name=".E5.BC.95.E6.95.B0_13">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;x&lt;/tt&gt;</dt>
+ <dd>
+ Accessible の X 座標。</dd>
+ <dt>
+ &lt;tt&gt;y&lt;/tt&gt;</dt>
+ <dd>
+ Accessible の Y 座標。</dd>
+ <dt>
+ &lt;tt&gt;width&lt;/tt&gt;</dt>
+ <dd>
+ Accessible の幅。</dd>
+ <dt>
+ &lt;tt&gt;height&lt;/tt&gt;</dt>
+ <dd>
+ Accessible の高さ。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_11" name=".E6.88.BB.E3.82.8A.E5.80.A4_11">戻り値</h6>
+<p>画面上の accessible の (x および y) 座標ならびに accessible の width および height を返す。</p>
+<h3 id="setSelected.28.29" name="setSelected.28.29">setSelected()</h3>
+<p>このメソッドは、この accessible を現在選択されたものに追加、または削除します。</p>
+<pre class="eval"> void setSelected(
+ in boolean isSelected
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_14" name=".E5.BC.95.E6.95.B0_14">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;isSelected&lt;/tt&gt;</dt>
+ <dd>
+ 現在選択されたもの。</dd>
+</dl>
+<h3 id="extendSelection.28.29" name="extendSelection.28.29">extendSelection()</h3>
+<p>このメソッドは、現在の accessible アンカーノードからこの accessible へ、現在選択されたものを広げます。</p>
+<pre class="eval"> void extendSelection();
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_15" name=".E5.BC.95.E6.95.B0_15">引数</h6>
+<p>なし。</p>
+<h3 id="takeSelection.28.29" name="takeSelection.28.29">takeSelection()</h3>
+<p>このメソッドは、この accessible ノードのみを選択します。</p>
+<pre class="eval"> void takeSelection();
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_16" name=".E5.BC.95.E6.95.B0_16">引数</h6>
+<p>なし。</p>
+<h3 id="takeFocus.28.29" name="takeFocus.28.29">takeFocus()</h3>
+<p>このメソッドは、この accessible ノードにフォーカスします。</p>
+<p><code>STATE_FOCUSABLE</code> の状態は、このノードが普通にフォーカス可能かどうか示します。このノードがフォーカス可能かどうかを決めるのは、呼び出し側に責任があります。通常、フォーカス不能なノード (table など) 上の <code>accTakeFocus</code> はそのノードにフォーカスを設定していますが、通常は、ほとんどのスタイルシートで視覚的に示されません。</p>
+<pre class="eval"> void takeFocus();
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_17" name=".E5.BC.95.E6.95.B0_17">引数</h6>
+<p>なし。</p>
+<h3 id="getActionName.28.29" name="getActionName.28.29">getActionName()</h3>
+<p>このメソッドは、0 を基点とした index で accessible action の name を取得します。</p>
+<pre class="eval"> AString getActionName(
+ in PRUint8 index
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_18" name=".E5.BC.95.E6.95.B0_18">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;index&lt;/tt&gt;</dt>
+ <dd>
+ 0 を基点とする index。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_12" name=".E6.88.BB.E3.82.8A.E5.80.A4_12">戻り値</h6>
+<p>accessible action の name を返す。</p>
+<h3 id="getActionDescription.28.29" name="getActionDescription.28.29">getActionDescription()</h3>
+<p>このメソッドは、0 を基点とした index で accessible action の description を取得します。</p>
+<pre class="eval"> AString getActionDescription(
+ in PRUint8 aIndex
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_19" name=".E5.BC.95.E6.95.B0_19">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aIndex&lt;/tt&gt;</dt>
+ <dd>
+ 0 を基点とする index。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_13" name=".E6.88.BB.E3.82.8A.E5.80.A4_13">戻り値</h6>
+<p>accessible action の description を返す。</p>
+<h3 id="doAction.28.29" name="doAction.28.29">doAction()</h3>
+<p>このメソッドは、0 を基点とした index で accessible action を実行します。Action 番号 <code>0</code> はデフォルトの action です。</p>
+<pre class="eval"> void doAction(
+ in PRUint8 index
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_20" name=".E5.BC.95.E6.95.B0_20">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;index&lt;/tt&gt;</dt>
+ <dd>
+ 0 を基点とする index。</dd>
+</dl>
+<p><span id="See_also"></span></p>
+<h3 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h3>
+<ul>
+ <li><a href="ja/Accessibility">Accessibility</a></li>
+ <li><a href="ja/NsIPersistentProperties">nsIPersistentProperties</a></li>
+ <li><a href="ja/NsIDOMDOMStringList">nsIDOMDOMStringList</a></li>
+ <li><a href="ja/NsIAccessibleRelation">nsIAccessibleRelation</a></li>
+</ul>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiaccessibleprovider/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiaccessibleprovider/index.html
new file mode 100644
index 0000000000..23a49f7cf2
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiaccessibleprovider/index.html
@@ -0,0 +1,49 @@
+---
+title: nsIAccessibleProvider
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIAccessibleProvider
+tags:
+ - Accessibility
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIAccessibleProvider
+---
+<p> </p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/accessible/public/nsIAccessibleProvider.idl" rel="custom">accessible/public/nsIAccessibleProvider.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>継承元: <a href="ja/NsISupports">nsISupports</a></p>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>accessible</code></td>
+ <td><code><a href="ja/NsIAccessible">nsIAccessible</a></code></td>
+ <td>accessible を返す。
+ <i>
+ 読み取り専用</i>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h3 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h3>
+<ul>
+ <li><a href="ja/Accessibility">Accessibility</a></li>
+ <li><a href="ja/NsIAccessible">nsIAccessible</a></li>
+</ul>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiannotationobserver/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiannotationobserver/index.html
new file mode 100644
index 0000000000..04355548d1
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiannotationobserver/index.html
@@ -0,0 +1,128 @@
+---
+title: nsIAnnotationObserver
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIAnnotationObserver
+tags:
+ - Developing Mozilla
+ - Extensions
+ - Interfaces
+ - Places
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIAnnotationObserver
+---
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/places/public/nsIAnnotationService.idl" rel="custom">toolkit/components/places/public/nsIAnnotationService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+ <div style="height: 42px; position: relative; padding: 2px; width: auto;">
+
+ <div style="top: 22px; font-size: 11px; position: absolute;">1.0</div>
+
+ <div style="top: 22px; font-size: 11px; position: absolute; left: 0px; text-align: right; float: right; width: 100%;">66</div>
+
+ <div style="height: 8px; top: 16px; background: #dd0000; left: 0px; position: absolute; width: 5.714285714285714%;"></div>
+
+<div style="height: 8px; top: 16px; left: 5.714285714285714%; background: #00dd00; position: absolute; width: 94.28571428571429%;" title="Introduced in Gecko 1.8 (Firefox 1.5 / Thunderbird 1.5 / SeaMonkey 1.0)"></div>
+
+<div style="top: 0px; font-size: 11px; position: absolute; left: 5.714285714285714%;">Introduced</div>
+<div style="top: 22px; font-size: 11px; position: absolute; left: 5.714285714285714%;">Gecko 1.8</div>
+
+ <div style="height: 8px; top: 16px; left: 8.071428571428571%; background: #eeee00; position: absolute; width: 1%; border-radius: 4px; -webkit-border-radius: 4px;" title="Last changed in Gecko 1.9 (Firefox 3)"></div>
+
+</div>
+
+<div style="background: #eee; padding: 2px;">
+継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+
+<h2 id="Method_overview" name="Method_overview">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#onItemAnnotationRemoved()">onItemAnnotationRemoved</a>(in long long aItemId, in AUTF8String aName);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#onItemAnnotationSet()">onItemAnnotationSet</a>(in long long aItemId, in AUTF8String aName);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#onPageAnnotationRemoved()">onPageAnnotationRemoved</a>(in nsIURI aURI, in AUTF8String aName);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#onPageAnnotationSet()">onPageAnnotationSet</a>(in nsIURI aPage, in AUTF8String aName);</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Methods" name="Methods">メソッド</h2>
+
+<h3 id="onItemAnnotationRemoved" name="onItemAnnotationRemoved">onItemAnnotationRemoved()</h3>
+<p>あるアイテムに対するアノテーションが削除された場合に呼ばれます。もし <code>aName</code> が空であれば、与えられた URI に対する全ての削除されたアノテーションを意味します。アノテーションの期限が切れている (expired) 場合はこのメソッドは呼び出されません。(通常アプリケーションが終了する場合などにこれが起こります)</p>
+<pre>void onItemAnnotationRemoved(
+ in long long aItemId,
+ in aUTF8String aName
+);
+</pre>
+<h6 id="引数">引数</h6>
+<dl>
+ <dt>aItemId</dt>
+ <dd>アノテーションが削除されるアイテムの ID</dd>
+ <dt>aName</dt>
+ <dd>アノテーションの名前</dd>
+</dl>
+
+<h3 id="onItemAnnotationSet" name="onItemAnnotationSet">onItemAnnotationSet()</h3>
+<p>アノテーションの値があるアイテムにセットされたときに呼ばれます。アノテーションは新しいアノテーションであっても、既に存在するアノテーションに対する新しい値のセットであっても構いません。</p>
+<pre>void onItemAnnotationSet(
+ in long long aItemId,
+ in AUTF8String aName
+);
+</pre>
+<h6 id="引数_2">引数</h6>
+<dl>
+ <dt>aItemId</dt>
+ <dd>アノテーションがセットされるアイテムの ID</dd>
+ <dt>aName</dt>
+ <dd>アノテーションの名前</dd>
+</dl>
+
+<h3 id="onPageAnnotationRemoved" name="onPageAnnotationRemoved">onPageAnnotationRemoved()</h3>
+<p>URIに対するアノテーションが削除されたときに呼ばれます。もし <code>aName</code> が空であれば、与えられたURIに対する全ての削除されたアノテーションを意味します。アノテーションの期限が切れている (expired) 場合はこのメソッドは呼び出されません。(通常アプリケーションが終了する場合などにこれが起こります)</p>
+<pre>void onPageAnnotationRemoved(
+ in nsIURI aPage,
+ in AUTF8String aName
+);
+</pre>
+<h6 id="引数_3">引数</h6>
+<dl>
+ <dt>aURI</dt>
+ <dd>アノテーションが削除される URI</dd>
+ <dt>aName</dt>
+ <dd>アノテーションの名前</dd>
+</dl>
+
+<h3 id="onPageAnnotationSet" name="onPageAnnotationSet">onPageAnnotationSet()</h3>
+<p>アノテーションが URI に対してセットされたときに呼ばれます。アノテーションは新しいアノテーションであっても、既に存在するアノテーションに対する新しい値のセットであっても構いません。</p>
+<pre>void onPageAnnotationSet(
+ in nsIURI aPage,
+ in AUTF8String aName
+);
+</pre>
+<h6 id="引数_4">引数</h6>
+<dl>
+ <dt>aURI</dt>
+ <dd>アノテーションがセットされる URI</dd>
+ <dt>aName</dt>
+ <dd>アノテーションの名前</dd>
+</dl>
+
+<h2 id="See_also" name="See_also">参照</h2>
+<ul>
+ <li><a href="/docs/Mozilla/Tech/Places" title="/Places">Places</a></li>
+ <li><a href="/docs/Mozilla/Tech/Places/Using_the_Places_annotation_service" title="/Using the Places annotation service">Using the Places annotation service</a></li>
+ <li><a href="/docs/Mozilla/Tech/Places/Using_the_Places_favicon_service" title="/Using the Places favicon service">Using the Places favicon service</a></li>
+ <li><a href="/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAnnotationService" title="/nsIAnnotationService">nsIAnnotationService</a></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiasyncinputstream/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiasyncinputstream/index.html
new file mode 100644
index 0000000000..9679edc1f1
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiasyncinputstream/index.html
@@ -0,0 +1,96 @@
+---
+title: nsIAsyncInputStream
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIAsyncInputStream
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIAsyncInputStream
+---
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/io/nsIAsyncInputStream.idl" rel="custom">xpcom/io/nsIAsyncInputStream.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIInputStream" title="">nsIInputStream</a></code>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.7 </span></div>
+</div>
+<p> </p>
+<p>ノンブロッキングな入力ストリームは、読み込みの際にNS_BASE_STREAM_WOULD_BLOCKを返すことがあります。この場合、呼び出し元では、ストリームに読み取り対象のデータが到着するまで待機する必要があります。もしもストリームがnsIAsyncInputStreamを実装していれば、呼び出し元はこのインタフェースを使って、( <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIAsyncInputStream#AsyncWait()">AsyncWait()</a></code> メソッドを介して)、ストリームが読み取り可能になるか閉じたときに、非同期で通知するよう要求できます。</p>
+<div>
+ このインタフェースはもっぱらノンブロッキングなストリームに対して使用されますが、 <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIInputStream#isNonBlocking()">nsIInputStream.isNonBlocking()</a></code> は必ずしもtrueを返す必要はありません。ノンブロッキングな <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIInputStream" title="">nsIInputStream</a></code> がnsIAsyncInputStreamを必ず実装している必要もありません。</div>
+<div>
+  </div>
+<h2 id="Method_overview" name="Method_overview">Method overview</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#asyncWait()">asyncWait</a>(in nsIInputStreamCallback aCallback, in unsigned long aFlags, in unsigned long aRequestedCount, in nsIEventTarget aEventTarget);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#closeWithStatus()">closeWithStatus</a>(in nsresult aStatus);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Constants" name="Constants">Constants</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">Constant</td>
+ <td class="header">Value</td>
+ <td class="header">Description</td>
+ </tr>
+ <tr>
+ <td><code>WAIT_CLOSURE_ONLY</code></td>
+ <td><code>(1&lt;&lt;0)</code></td>
+ <td>
+ <p><code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIAsyncInputStream#asyncWait()">asyncWait()</a></code> に渡すと、このフラグはデフォルトの挙動を上書きし、OnInputStreamReadyによる通知がストリームが閉じるまで抑制されるようになります( closeWithStatusかcloseがストリームに対して呼ばれるか、おそらくストリーム内の何らかのエラーが原因で閉じられるまで抑制されます)。</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Methods" name="Methods">Methods</h2>
+<h3 id="asyncWait" name="asyncWait()">asyncWait()</h3>
+<p>ストリームが読み取り可能になるか閉じられるのを、非同期に待ち受けます。通知は1度だけ、つまりasyncWaitの呼び出しごとにちょうど一度だけcallbackによる通知が行われます。OnInputStreamReady イベントが送信されると、ストリームは <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIInputStreamCallback" title="">nsIInputStreamCallback</a></code> イベントへの参照を解放します。この通知イベントのハンドラの中で再びasyncWaitを呼び出しても安全です。</p>
+<div>
+ このメソッドは任意のタイミングで(まだ読み出しが行われていない場合ですら)呼び出される可能性があります。言い換えればこれは、ストリームに既に読み取り対象のデータがある場合に呼び出される可能性もあるということです。ストリームが閉じているときに呼び出される可能性もあります。asyncWaitが呼び出された時にストリームが既に読み取り可能または閉じていた場合、 <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIInputStreamCallback#onInputStreamReady()">nsIInputStreamCallback.onInputStreamReady()</a></code> イベントはただちに送信されます。それ以外の場合、ストリームが読み取り可能になるまたは閉じるのを待って、イベントは送信されます。</div>
+<p> </p>
+<pre class="eval">void asyncWait(
+ in nsIInputStreamCallback aCallback,
+ in unsigned long aFlags,
+ in unsigned long aRequestedCount,
+ in nsIEventTarget aEventTarget
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aCallback</code></dt>
+ <dd>
+ ストリームの準備が整うと呼び出されるオブジェクトです。既存のコールバックをクリアするためにnullをセットすることもできます。</dd>
+ <dt>
+ <code>aFlags</code></dt>
+ <dd>
+ このメソッドの動作を設定するために渡すフラグを、オプションで指定します。何も指定しない場合は0を渡してください。</dd>
+ <dt>
+ <code>aRequestedCount</code></dt>
+ <dd>
+ 指定されたバイト数以上データが読み込み可能になるまで待機します。このパラメータは実際のストリームに対する提案にすぎず、実際には無視されるかもしれません。特に指定が無い場合は0を渡すとよいでしょう。</dd>
+ <dt>
+ <code>aEventTarget</code></dt>
+ <dd>
+ nullを指定すると、通知を任意のスレッドで受け取ります(呼び出し元スレッド上で再帰的に受け取り、同期呼び出しになる可能性もあります)。特定のイベントターゲットを指定すると、そこに通知されるようになります。  </dd>
+</dl>
+<h3 id="closeWithStatus" name="closeWithStatus()">closeWithStatus()</h3>
+<p>このメソッドは、ストリームを閉じて内部ステータスをセットします。ストリームが既に閉じられている場合、このメソッドの呼び出しは無視されます。いったんストリームが閉じられると、ストリームのステータスを変更することはできません。成功ステータスをこのメソッドに渡した場合は<code>NS_BASE_STREAM_CLOSEDとして扱われ、これは</code><code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIInputStream#close()">nsIInputStream.close()</a></code>と同等の効果があります。</p>
+<div class="blockIndicator note"><strong>註:</strong> このメソッドは、入力側と出力側を持ったパイプをサポートするために存在しているようなところがあります。パイプの入力側が閉じられると、パイプの出力側への書き込みは失敗するようになります。"壊れた"パイプに書き込もうとした時に返ってくるエラーコードが、パイプの入力側を閉じたときに渡されたステータスコードに相当します。これにより、パイプの取り扱いが非常に簡単になるケースがあります。</div>
+<pre class="eval">void closeWithStatus(
+ in nsresult aStatus
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aStatus</code></dt>
+ <dd>
+ 閉じられたストリームがアクセスされた場合に返るエラーです。</dd>
+</dl>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiconsoleservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiconsoleservice/index.html
new file mode 100644
index 0000000000..0db6957354
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiconsoleservice/index.html
@@ -0,0 +1,51 @@
+---
+title: nsIConsoleService
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIConsoleService
+tags:
+ - Interfaces
+ - 'Interfaces:Scriptable'
+ - MDC Project
+ - NeedsContent
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIConsoleService
+---
+<p> </p>
+<h3 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h3>
+<p>コンソールサービスは、すべての Mozilla アプリケーションに付属する <a href="ja/JavaScript_%e3%82%b3%e3%83%b3%e3%82%bd%e3%83%bc%e3%83%ab">JavaScript コンソール</a> <span style="color: darkgreen; background: #ef9;">【訳注: Firefox 2 ではエラーコンソールという名称に変更されている】</span> ツールのバックエンド部分です。色々なメッセージ、警告、エラーをロギングしたり、ロギングされたメッセージを取得したりするために使用します。</p>
+<p>インタフェース定義: <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/base/nsIConsoleService.idl" rel="custom">xpcom/base/nsIConsoleService.idl</a></code></p>
+<p>Contract ID: <code>@mozilla.org/consoleservice;1</code></p>
+<p>このインタフェースは未凍結で、将来的に変更される可能性があります (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=228205" title="Redesign nsIConsoleService and related APIs">バグ 228205</a>)。</p>
+<h3 id=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB" name=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB">サンプル</h3>
+<h4 id=".E5.8D.98.E7.B4.94.E3.81.AA.E3.83.A1.E3.83.83.E3.82.BB.E3.83.BC.E3.82.B8.E3.82.92.E3.83.AD.E3.82.AE.E3.83.B3.E3.82.B0.E3.81.99.E3.82.8B" name=".E5.8D.98.E7.B4.94.E3.81.AA.E3.83.A1.E3.83.83.E3.82.BB.E3.83.BC.E3.82.B8.E3.82.92.E3.83.AD.E3.82.AE.E3.83.B3.E3.82.B0.E3.81.99.E3.82.8B">単純なメッセージをロギングする</h4>
+<p>文字列のメッセージをコンソールへ出力するための一般的な使い方:</p>
+<pre class="eval">function LOG(msg) {
+ var consoleService = Components.classes["@mozilla.org/consoleservice;1"]
+ .getService(Components.interfaces.nsIConsoleService);
+ consoleService.logStringMessage(msg);
+}
+</pre>
+<p>ロギングのための代替手段となるメソッドには <a href="ja/Components.utils.reportError">Components.utils.reportError</a> と <a href="ja/DOM/window.dump">dump()</a> があります。</p>
+<h4 id=".E8.BF.BD.E5.8A.A0.E6.83.85.E5.A0.B1.E3.81.A8.E3.81.A8.E3.82.82.E3.81.AB.E3.83.A1.E3.83.83.E3.82.BB.E3.83.BC.E3.82.B8.E3.82.92.E3.83.AD.E3.82.AE.E3.83.B3.E3.82.B0.E3.81.99.E3.82.8B" name=".E8.BF.BD.E5.8A.A0.E6.83.85.E5.A0.B1.E3.81.A8.E3.81.A8.E3.82.82.E3.81.AB.E3.83.A1.E3.83.83.E3.82.BB.E3.83.BC.E3.82.B8.E3.82.92.E3.83.AD.E3.82.AE.E3.83.B3.E3.82.B0.E3.81.99.E3.82.8B">追加情報とともにメッセージをロギングする</h4>
+<p>ソースファイルや行番号といった他の情報を含めるためには、より複雑なコードを使う必要があります。</p>
+<pre class="eval">function myLogToConsole(aMessage, aSourceName, aSourceLine, aLineNumber,
+ aColumnNumber, aFlags, aCategory)
+{
+ var consoleService = Components.classes["@mozilla.org/consoleservice;1"]
+ .getService(Components.interfaces.nsIConsoleService);
+ var scriptError = Components.classes["@mozilla.org/scripterror;1"]
+ .createInstance(Components.interfaces.nsIScriptError);
+ scriptError.init(aMessage, aSourceName, aSourceLine, aLineNumber,
+ aColumnNumber, aFlags, aCategory);
+ consoleService.logMessage(scriptError);
+}
+</pre>
+<ul>
+ <li><code>aMessage</code> — ログとして出力する文字列。必ず指定する必要がある。</li>
+ <li><code>aSourceName</code> — エラーが発生したファイルのURL。これは JavaScript コンソールでハイパーリンクとして表示されるので、本当の URL にした方が良い。適切な URL がなければ <code>null</code> を渡すこともできる。</li>
+ <li><code>aSourceLine</code> — ファイル <code>aSourceName</code> 中の行番号 #<code>aLineNumber</code> である。あなたは行を指定する責任があるが、面倒であれば <code>null</code> を渡して JavaScript コンソール中にソースファイルの行を表示させないようにすることもできる。</li>
+ <li><code>aLineNumber</code> と <code>aColumnNumber</code> — エラーがある正確な位置を特定する。 <code>aColumnNumber</code> は問題のある文字に対して矢印を付加するために用いられる。</li>
+ <li><code>aFlags</code> — <code>nsIScriptError</code> で定義されたフラグ。現時点で使用可能な値: <code>nsIScriptError.errorFlag = 0</code>, <code>nsIScriptError.warningFlag = 1</code>, <code>nsIScriptError.exceptionFlag = 2</code>, <code>nsIScriptError.strictFlag = 4</code>.</li>
+ <li><code>aCategory</code> — メッセージ出力の原因となったコードの種類を表す文字列。かなり多くの種類の文字列があるが、それらは一箇所に集約されていなようだ。いずれは、それらがすべて &lt;tt&gt;nsIScriptError.idl&lt;/tt&gt; にリストアップされることを望んでいる。</li>
+</ul>
+<p><span class="comment">Interwiki Languages Links</span></p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicontentprefobserver/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicontentprefobserver/index.html
new file mode 100644
index 0000000000..af2a563df5
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicontentprefobserver/index.html
@@ -0,0 +1,79 @@
+---
+title: nsIContentPrefObserver
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIContentPrefObserver
+tags:
+ - Firefox 3
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPrefObserver
+---
+<p> <code>nsIContentPrefObserver</code> インタフェースは、コンテンツ設定項目の値に対する変更を容易に監視できるようにします。</p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/contentprefs/public/nsIContentPrefService.idl" rel="custom">toolkit/components/contentprefs/public/nsIContentPrefService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#onContentPrefSet.28.29">onContentPrefSet</a>(in <a href="ja/AString">AString</a> aGroup, in AString aName, in <a href="ja/NsIVariant">nsIVariant</a> aValue);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#onContentPrefRemoved.28.29">onContentPrefRemoved</a>(in AString aGroup, in AString aName);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="onContentPrefSet.28.29" name="onContentPrefSet.28.29">onContentPrefSet()</h3>
+<p>設定項目の値が変更されたときに呼び出されます。(既存の設定項目の値が変更されたときと、新しい設定項目が作成されたときのいずれも)</p>
+<pre class="eval"> void onContentPrefSet(
+ in AString aGroup,
+ in AString aName,
+ in nsIVariant aValue
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aGroup&lt;/tt&gt;</dt>
+ <dd>
+ 設定項目が属するグループ。これは Web サイトの URI になります。設定項目がグローバルで、すべての Web サイトに適用される場合、この値は <code>null</code> となります。</dd>
+ <dt>
+ &lt;tt&gt;aName&lt;/tt&gt;</dt>
+ <dd>
+ 値が変更された設定項目の名前。</dd>
+ <dt>
+ &lt;tt&gt;aValue&lt;/tt&gt;</dt>
+ <dd>
+ 設定項目の新しい値。</dd>
+</dl>
+<h3 id="onContentPrefRemoved.28.29" name="onContentPrefRemoved.28.29">onContentPrefRemoved()</h3>
+<p>設定項目が削除されたときに呼び出されます。</p>
+<pre class="eval"> void onContentPrefSet(
+ in AString aGroup,
+ in AString aName
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aGroup&lt;/tt&gt;</dt>
+ <dd>
+ 設定項目が属するグループ。これは Web サイトの URI になります。設定項目がグローバルで、すべての Web サイトに適用される場合、この値は <code>null</code> となります。</dd>
+ <dt>
+ &lt;tt&gt;aName&lt;/tt&gt;</dt>
+ <dd>
+ 削除された設定項目の名前。</dd>
+</dl>
+<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2>
+<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPrefService" title="">nsIContentPrefService</a></code>, <a href="ja/Using_content_preferences">Using content preferences</a></p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicontentprefservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicontentprefservice/index.html
new file mode 100644
index 0000000000..15a3e9a837
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicontentprefservice/index.html
@@ -0,0 +1,203 @@
+---
+title: nsIContentPrefService
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIContentPrefService
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPrefService
+---
+<p> <code>nsIContentPrefService</code> は、拡張機能やブラウザのコードにおいて、特定の URI のための設定を保存する方法を提供します。設定項目はキーと値のペアで URI ごとに保存されます。使用例は <a href="ja/Using_content_preferences">Using content preferences</a> を参照してください。</p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/contentprefs/public/nsIContentPrefService.idl" rel="custom">toolkit/components/contentprefs/public/nsIContentPrefService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p>
+<p>実装: <code>@mozilla.org/content-pref/service;1</code>。インスタンスを作成するには、以下のように記述します。</p>
+<pre class="eval">var prefService = Components.classes["@mozilla.org/content-pref/service;1"]
+ .getService(Components.interfaces.nsIContentPrefService);
+</pre>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#addObserver.28.29">addObserver</a>(in AString aName, in <a href="ja/NsIContentPrefObserver">nsIContentPrefObserver</a> aObserver);</code></td>
+ </tr>
+ <tr>
+ <td><code><a href="ja/NsIVariant">nsIVariant</a> <a href="#getPref.28.29">getPref</a>(in <a href="ja/NsIURI">nsIURI</a> aURI, in <a href="ja/AString">AString</a> aName);</code></td>
+ </tr>
+ <tr>
+ <td><code><a href="ja/NsIPropertyBag2">nsIPropertyBag2</a> <a href="#getPrefs.28.29">getPrefs</a>(in nsIURI aURI);</code></td>
+ </tr>
+ <tr>
+ <td><code>boolean <a href="#hasPref.28.29">hasPref</a>(in nsIURI aURI, in AString aName);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#removeObserver.28.29">removeObserver</a>(in AString aName, in <a href="ja/NsIContentPrefObserver">nsIContentPrefObserver</a> aObserver);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#removePref.28.29">removePref</a>(in nsIURI aURI, in AString aName);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#setPref.28.29">setPref</a>(in nsIURI aURI, in AString aName, in nsIVariant aValue);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>grouper</code></td>
+ <td><code><a href="ja/NsIContentURIGrouper">nsIContentURIGrouper</a></code></td>
+ <td>URI が属するグループを判別するのにサービスが使用するコンポーネント。デフォルトでは、これは完全なホスト名で (つまりサイトごとに) URI をグループ化する「hostname grouper」になります。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="getPref.28.29" name="getPref.28.29">getPref()</h3>
+<p>特定の URI のために保存された設定の値を返します。</p>
+<pre class="eval"> nsIVariant getPref(
+ in nsIURI aURI,
+ in AString aName
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aURI&lt;/tt&gt;</dt>
+ <dd>
+ 設定を取得する URI。グローバル設定空間から設定を取得する場合は <code>null</code> を指定します。グローバル設定はすべての URI に適用されます。</dd>
+ <dt>
+ &lt;tt&gt;aName&lt;/tt&gt;</dt>
+ <dd>
+ 値を取得する設定の名前。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6>
+<p>設定の値が返されます。これには、文字列、整数値、真偽値、あるいはその他の値が含まれる可能性があります。指定された名前で保存されている値がなく、設定の値が <code>null</code> (<code>nsIDataType:VTYPE_EMPTY</code>) もしくは <code>undefined</code> (<code>nsIDataType:VTYPE_VOID</code>) であった場合、結果は <code>null</code> になる場合があります。</p>
+<h3 id="setPref.28.29" name="setPref.28.29">setPref()</h3>
+<p>特定の URI のために設定の値を設定します。</p>
+<pre class="eval"> nsIVariant setPref(
+ in nsIURI aURI,
+ in AString aName,
+ in nsIVariant aValue
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aURI&lt;/tt&gt;</dt>
+ <dd>
+ 設定を保存する URI。グローバル設定空間にある設定を設定する場合は <code>null</code> を指定します。グローバル設定はすべての URI に適用されます。</dd>
+ <dt>
+ &lt;tt&gt;aName&lt;/tt&gt;</dt>
+ <dd>
+ 値を設定する設定の名前。</dd>
+ <dt>
+ &lt;tt&gt;aValue&lt;/tt&gt;</dt>
+ <dd>
+ 設定に割り当てる値。</dd>
+</dl>
+<h3 id="hasPref.28.29" name="hasPref.28.29">hasPref()</h3>
+<p>特定の設定項目が存在するかどうかを判別します。</p>
+<pre class="eval"> boolean hasPref(
+ in nsIURI aURI,
+ in AString aName
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aURI&lt;/tt&gt;</dt>
+ <dd>
+ 設定項目が存在するかどうかを判別する URI。グローバル設定空間にある設定を判別する場合は <code>null</code> を指定します。</dd>
+ <dt>
+ &lt;tt&gt;aName&lt;/tt&gt;</dt>
+ <dd>
+ 設定項目が存在するかどうかを判別する設定の名前。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6>
+<p>設定が存在する場合は <code>true</code>、存在しなければ <code>false</code>。</p>
+<h3 id="removePref.28.29" name="removePref.28.29">removePref()</h3>
+<p>特定の設定項目を削除します。</p>
+<pre class="eval"> void removePref(
+ in nsIURI aURI,
+ in AString aName
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aURI&lt;/tt&gt;</dt>
+ <dd>
+ 削除する設定の URI。グローバル設定空間にある設定を削除する場合は <code>null</code> を指定します。</dd>
+ <dt>
+ &lt;tt&gt;aName&lt;/tt&gt;</dt>
+ <dd>
+ 削除する設定の名前。</dd>
+</dl>
+<h3 id="getPrefs.28.29" name="getPrefs.28.29">getPrefs()</h3>
+<p>特定の URI のための設定とそれらの値をすべて含んだ <code><a href="ja/NsIPropertyBag2">nsIPropertyBag2</a></code> を返します。</p>
+<pre class="eval"> nsIPropertyBag2 getPrefs(
+ in nsIURI aURI,
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aURI&lt;/tt&gt;</dt>
+ <dd>
+ 取得したい設定の URI。グローバル設定空間にある設定を取得する場合は <code>null</code> を指定します。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_3" name=".E6.88.BB.E3.82.8A.E5.80.A4_3">戻り値</h6>
+<p>設定とそれらの値をすべて含んだ <code><a href="ja/NsIPropertyBag2">nsIPropertyBag2</a></code>。</p>
+<h3 id="addObserver.28.29" name="addObserver.28.29">addObserver()</h3>
+<p>特定の設定の変更を監視するオブザーバを追加します。</p>
+<pre class="eval"> void addObserver(
+ in AString aName,
+ in nsIContentPrefObserver aObserver
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_6" name=".E5.BC.95.E6.95.B0_6">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aName&lt;/tt&gt;</dt>
+ <dd>
+ 監視を行う設定の名前。すべての設定の変更を監視する包括的オブザーバを追加する場合は <code>null</code> を指定します。</dd>
+ <dt>
+ &lt;tt&gt;aObserver&lt;/tt&gt;</dt>
+ <dd>
+ 設定の値が変更された場合に通知を受ける <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPrefObserver" title="">nsIContentPrefObserver</a></code> を実装したオブジェクトの名前。</dd>
+</dl>
+<h3 id="removeObserver.28.29" name="removeObserver.28.29">removeObserver()</h3>
+<p>特定の設定の変更を監視している既存のオブザーバを削除します。</p>
+<pre class="eval"> void addObserver(
+ in AString aName,
+ in nsIContentPrefObserver aObserver
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_7" name=".E5.BC.95.E6.95.B0_7">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aName&lt;/tt&gt;</dt>
+ <dd>
+ 監視を停止する設定の名前。すべての設定の変更を監視する包括的オブザーバを削除する場合は <code>null</code> を指定します。</dd>
+ <dt>
+ &lt;tt&gt;aObserver&lt;/tt&gt;</dt>
+ <dd>
+ 設定の値が変更された場合に通知を受けるオブザーバの名前。</dd>
+</dl>
+<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2>
+<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPrefObserver" title="">nsIContentPrefObserver</a></code>, <a href="ja/Using_content_preferences">Using content preferences</a></p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicryptohash/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicryptohash/index.html
new file mode 100644
index 0000000000..bd17097a4f
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsicryptohash/index.html
@@ -0,0 +1,265 @@
+---
+title: nsICryptoHash
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsICryptoHash
+tags:
+ - Add-ons
+ - Extensions
+ - Interfaces
+ - 'Interfaces:Scriptable'
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsICryptoHash
+---
+<p> </p>
+
+<h3 id=".E5.B0.8E.E5.85.A5" name=".E5.B0.8E.E5.85.A5">導入</h3>
+
+<p><code>nsICryptoHash</code> はデータの暗号化ハッシュ関数を計算するために使用することができます。例えば、ファイルの MD5 ハッシュを計算することができます。サポートされているハッシュアルゴリズムは MD2 と MD5, SHA-1, SHA-256, SHA-384 そして SHA-512 です。このインターフェースは <a href="ja/Firefox_1.5">Firefox 1.5</a> 以上でのみ利用できます。</p>
+
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/base/public/nsICryptoHash.idl" rel="custom">netwerk/base/public/nsICryptoHash.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.8 (Firefox 1.5 / Thunderbird 1.5 / SeaMonkey 1.0)</span></div>
+</div>
+
+<h3 id=".E5.AE.9A.E6.95.B0" name=".E5.AE.9A.E6.95.B0">定数</h3>
+
+<h4 id=".E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5.E3.82.A2.E3.83.AB.E3.82.B4.E3.83.AA.E3.82.BA.E3.83.A0" name=".E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5.E3.82.A2.E3.83.AB.E3.82.B4.E3.83.AA.E3.82.BA.E3.83.A0">ハッシュアルゴリズム</h4>
+
+<p>これらの定数はこのインターフェースでサポートされているハッシュアルゴリズムを表しています。利用可能な値は以下の通りです:</p>
+
+<ul>
+ <li><code>MD2</code></li>
+ <li><code>MD5</code></li>
+ <li><code>SHA1</code></li>
+ <li><code>SHA512</code></li>
+ <li><code>SHA256</code></li>
+ <li><code>SHA384</code></li>
+</ul>
+
+<h3 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h3>
+
+<h4 id="init" name="init">init</h4>
+
+<pre>void init(in unsigned long aAlgorithm);
+</pre>
+
+<p>インタフェースで定義された定数の1つを指定してどのハッシュアルゴリズムを使用するか指示して、<code>init()</code> はオブジェクトを初期化します。どんなデータであれオブジェクトを更新する前にこのメソッドか <code><a href="#initWithString">initWithString()</a></code> を呼ばなければなりません。</p>
+
+<h5 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF">パラメタ</h5>
+
+<p><code>aAlgorithm</code></p>
+
+<dl>
+ <dd>使用するハッシュアルゴリズム。インタフェースで定義されている定数の 1 つでなくてはなりません。</dd>
+</dl>
+
+<h5 id=".E4.BE.8B.E5.A4.96" name=".E4.BE.8B.E5.A4.96">例外</h5>
+
+<p><code><span class="nowiki">NS_ERROR_INVALID_ARG</span></code></p>
+
+<dl>
+ <dd>サポートされていないアルゴリズムの種類が渡されたことを示します。</dd>
+</dl>
+
+<h4 id="initWithString" name="initWithString">initWithString</h4>
+
+<pre>void initWithString(in ACString aAlgorithm);
+</pre>
+
+<p><code>initWithString()</code> は <code>"MD5"</code> のような文字列としてアルゴリズムの名前を指定することで、どのハッシュアルゴリズムを使用するか指定し、オブジェクトを初期化します。 どんなデータであれオブジェクトを更新する前にこのメソッドか <code><a href="#init">init()</a></code> を呼ばなければなりません。</p>
+
+<h5 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_2" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_2">パラメタ</h5>
+
+<p><code>aAlgorithm</code></p>
+
+<dl>
+ <dd>使用するハッシュアルゴリズム</dd>
+</dl>
+
+<h5 id=".E4.BE.8B.E5.A4.96_2" name=".E4.BE.8B.E5.A4.96_2">例外</h5>
+
+<p><code>NS_ERROR_INVALID_ARG</code></p>
+
+<dl>
+ <dd>サポートされていないアルゴリズムの種類が渡されたことを示します。</dd>
+</dl>
+
+<h4 id="update" name="update">update</h4>
+
+<pre>void update([const, array, size_is(aLen)] in octet aData, in unsigned long aLen);
+</pre>
+
+<p><code>update()</code> はハッシュを計算されるデータの配列をオブジェクトに追加します。このメソッドのを使った例は<a href="#.E6.96.87.E5.AD.97.E5.88.97.E3.81.AE.E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5.E3.82.92.E8.A8.88.E7.AE.97.E3.81.99.E3.82.8B">文字列のハッシュを計算する</a>を参照してください。</p>
+
+<h5 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_3" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_3">パラメタ</h5>
+
+<p><code>aData</code></p>
+
+<dl>
+ <dd>ハッシュを計算されるバッファ</dd>
+</dl>
+
+<p><code>aLen</code></p>
+
+<dl>
+ <dd><code>aData</code> バッファの長さ</dd>
+</dl>
+
+<h5 id=".E4.BE.8B.E5.A4.96_3" name=".E4.BE.8B.E5.A4.96_3">例外</h5>
+
+<p><code>NS_ERROR_NOT_INITIALIZED</code></p>
+
+<dl>
+ <dd><code><a href="#init">init()</a></code> か <code><a href="#initWithString">initWithString()</a></code> が呼び出されていないことを表します。</dd>
+</dl>
+
+<h4 id="updateFromStream" name="updateFromStream">updateFromStream</h4>
+
+<pre>void updateFromStream(in nsIInputStream aStream, in unsigned long aLen);
+</pre>
+
+<p><code>updateFromStream()</code> は <code><a href="ja/NsIInputStream">nsIInputStream</a></code> からハッシュを計算されるデータを追加します。このメソッドのを使った例は<a href="#.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5.E3.82.92.E8.A8.88.E7.AE.97.E3.81.99.E3.82.8B">ファイルのハッシュを計算する</a>を参照してください。</p>
+
+<h5 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_4" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_4">パラメタ</h5>
+
+<p><code>aStream</code></p>
+
+<dl>
+ <dd>読み込まれる入力ストリーム</dd>
+</dl>
+
+<p><code>aLen</code></p>
+
+<dl>
+ <dd>与えられた <code>aStream</code> をどれだけ読み込むか。<code>PR_UINT32_MAX</code> が渡されることは利用できる全てのデータがハッシュを更新するために使われることを示しています。</dd>
+</dl>
+
+<h5 id=".E4.BE.8B.E5.A4.96_4" name=".E4.BE.8B.E5.A4.96_4">例外</h5>
+
+<p><code>NS_ERROR_NOT_INITIALIZED</code></p>
+
+<dl>
+ <dd><code><a href="#init">init()</a></code> か <code><a href="#initWithString">initWithString()</a></code> が呼び出されていないことを表します。<code>NS_ERROR_NOT_AVAILABLE</code></dd>
+ <dd>ハッシュを計算するための要求された量のデータのが利用できないことを示しています。</dd>
+</dl>
+
+<h4 id="finish" name="finish">finish</h4>
+
+<pre>ACString finish(in PRBool aASCII);
+</pre>
+
+<p><code>finish()</code> はハッシュオブジェクトを完成させ、実際のハッシュデータを生成します。</p>
+
+<h5 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_5" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_5">パラメタ</h5>
+
+<p><code>aASCII</code></p>
+
+<dl>
+ <dd>もし true なら戻り値は base-64 エンコードされた文字列です。もし false なら戻り値にはバイナリデータです。</dd>
+</dl>
+
+<h5 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h5>
+
+<p>このメソッドはオブジェクトから読み込まれたハッシュデータを返します。これはバイナリか base-64 エンコードされた文字列のどちらかが可能です。</p>
+
+<h5 id=".E4.BE.8B.E5.A4.96_5" name=".E4.BE.8B.E5.A4.96_5">例外</h5>
+
+<p><code>NS_ERROR_NOT_INITIALIZED</code></p>
+
+<dl>
+ <dd><code><a href="#init">init()</a></code> か <code><a href="#initWithString">initWithString()</a></code> が呼び出されていないことを表します。</dd>
+</dl>
+
+<div class="note"><strong>注意:</strong> このメソッドは <code><a href="#init">init()</a></code> が呼ばれた後ではいつでも呼ばれるかもしれません。この呼び出しはオブジェクトを初期化する前の状態にリセットします。</div>
+
+<h3 id=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB.E3.82.B3.E3.83.BC.E3.83.89" name=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB.E3.82.B3.E3.83.BC.E3.83.89">サンプルコード</h3>
+
+<div class="note"><strong>注意:</strong> 下のサンプルは Firefox 2 で実装された <a href="ja/New_in_JavaScript_1.7">JavaScript 1.7</a> の機能を使っています。この例を Firefox 1.5 で使うには、<span style="border-bottom: 1px dashed green;" title="array comprehension">配列内包</span>をループに置き換えて下さい。</div>
+
+<h4 id=".E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5.E3.82.92.E8.A8.88.E7.AE.97.E3.81.99.E3.82.8B" name=".E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5.E3.82.92.E8.A8.88.E7.AE.97.E3.81.99.E3.82.8B">ファイルのハッシュを計算する</h4>
+
+<p><code>nsICryptoHash</code> を使うと簡単にファイルのハッシュを計算することができます。<code>nsICryptoHash</code> のインスタンスを作り、ファイルから入力ストリームを開き、ファイルのハッシュを更新する必要があります。以下の例はファイルの MD5 ハッシュを計算する方法を示しています:</p>
+
+<pre>// 便宜上ここではハードコードしています。
+var path = "c:\\windows\\notepad.exe";
+var f = Components.classes["@mozilla.org/file/local;1"]
+ .createInstance(Components.interfaces.nsILocalFile);
+f.initWithPath(path);
+var istream = Components.classes["@mozilla.org/network/file-input-stream;1"]
+ .createInstance(Components.interfaces.nsIFileInputStream);
+// 読み出すためにストリームを開きます。
+istream.init(f, 0x01, 0444, 0);
+var ch = Components.classes["@mozilla.org/security/hash;1"]
+ .createInstance(Components.interfaces.nsICryptoHash);
+// MD5 アルゴリズムを使います。
+ch.init(ch.MD5);
+// これはファイル全体を読む込むことを updateFromStream に指示します。
+const PR_UINT32_MAX = 0xffffffff;
+ch.updateFromStream(istream, PR_UINT32_MAX);
+// ここで false を渡すとバイナリデータが戻ってきます
+// true は base-64 文字列が戻ってきます
+var hash = ch.finish(false);
+
+// 1 バイトに対して 2 つの 16 進数コードを返す。
+function toHexString(charCode)
+{
+ return ("0" + charCode.toString(16)).slice(-2);
+}
+
+// バイナリのハッシュデータを 16 進数文字列に変換する。
+var s = Array.from(hash, (c, i) =&gt; toHexString(hash.charCodeAt(i))).join("");
+// s は今 16 進数でハッシュを保持しています。
+</pre>
+
+<p>私の Windows XP SP2 システムでは、これはハッシュの値として <code>5eb63bbbe01eeed093cb22bb8f5acdc3</code> を返しましたが、 あなたのマイレージは違うかもしれません。単純ですがこの例はインターフェースの大部分の機能を示しました。</p>
+
+<p>最初に注意すべきことは <code><a href="#init">init()</a></code> メソッドを呼んだときに、使うハッシュアルゴリズムを指定しなければならいないことです。利用可能なアルゴリズムの全てはインタフェースの<a href="#.E5.AE.9A.E6.95.B0">定数</a>として指定されています。</p>
+
+<p>さらに注意すべきことは <code><a href="#updateFromStream">updateFromStream()</a></code> メソッドを呼び出したとき、2 番目のパラメタは呼び出すバイト数であることがです。ここで <code>PR_UINT32_MAX</code> を渡すことでファイル全体を読み出したいことを要求します。</p>
+
+<p>最後に <code><a href="#finish">finish()</a></code> メソッドの呼び出しがハッシュ値を生成することに注意してください。このメソッドの 1 つのパラメタはこの例ではバイナリデータを返すために <code>false</code> です。<code>true</code> を渡すことで base 64 エンコードされた文字列としてハッシュを返します。この例ではバイナリデータを使い、ハッシュプログラムが通常出力するように結果を 16 進数文字列を生成しました。</p>
+
+<h4 id=".E6.96.87.E5.AD.97.E5.88.97.E3.81.AE.E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5.E3.82.92.E8.A8.88.E7.AE.97.E3.81.99.E3.82.8B" name=".E6.96.87.E5.AD.97.E5.88.97.E3.81.AE.E3.83.8F.E3.83.83.E3.82.B7.E3.83.A5.E3.82.92.E8.A8.88.E7.AE.97.E3.81.99.E3.82.8B">文字列のハッシュを計算する</h4>
+
+<p>もう一つの一般的な操作は文字列のハッシュを計算することです。ハッシュ関数はバイトで計算するため、最初に文字列を <code><a href="ja/NsIScriptableUnicodeConverter">nsIScriptableUnicodeConverter</a></code> とあ指定した Unicode エンコーディングを使いバイトの並びに変換する必要があります。</p>
+
+<div class="note"><strong>注意:</strong> 異なるエンコーディングは異なるハッシュ値を生成します!もしあなたが結果を比較するなら、常に同じエンコーディングを使うべきです。</div>
+
+<p>下の例では 文字列を UTF-8 エンコーディングでバイトに変換し、その MD5 ハッシュを計算する方法を示しています。前の例と同じように結果は 16 進数文字列として計算しました。</p>
+
+<pre>var str = "hello world";
+var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
+ .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
+// ここでは UTF-8 を使います。他のエンコーディングも選ぶこともできます。
+converter.charset = "UTF-8";
+// result は出力用パラメータです。
+// result.value は配列の長さを保持します。
+var result = {};
+// data はバイトの配列です。
+var data = converter.convertToByteArray(str, result);
+var ch = Components.classes["@mozilla.org/security/hash;1"]
+ .createInstance(Components.interfaces.nsICryptoHash);
+ch.init(ch.MD5);
+ch.update(data, data.length);
+var hash = ch.finish(false);
+
+// 1 バイトに対して 2 つの 16 進数コードを返す。
+function toHexString(charCode)
+{
+ return ("0" + charCode.toString(16)).slice(-2);
+}
+
+// バイナリのハッシュデータを 16 進数文字列に変換する。
+var s = Array.from(hash, (c, i) =&gt; toHexString(hash.charCodeAt(i))).join("");
+// 今 s はハッシュを 16 進数で保持しており、以下のようになるはずです。
+// 5eb63bbbe01eeed093cb22bb8f5acdc3
+</pre>
+
+<p>この例では、ハッシュを計算されるバイトの配列を渡すために <code><a href="#update">update()</a></code> メソッドを使いました。先ほどの例と同じように、バイナリの結果を 16 進数文字列に変換しています。</p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfile/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfile/index.html
new file mode 100644
index 0000000000..39a1336dcb
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfile/index.html
@@ -0,0 +1,108 @@
+---
+title: nsIDOMFile
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDOMFile
+tags:
+ - DOM
+ - Firefox 3
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFile
+---
+<p>
+</p><p>
+<code>nsIDOMFile</code> インターフェイスは、フォーム上で input の type "file" を使ってサブミットされたファイルからデータを読み出します。これはオフラインで web アプリケーションを使っているユーザがフォームにサブミットした時に保存されるファイルを参照可能にし、そしてそのデータは読み込む事ができ、またインターネット接続が再開された時にアップロードが可能となります。
+</p><div class="blockIndicator note"><strong>註:</strong> </div>
+<p><br>
+</p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/content/base/public/nsIDOMFile.idl" rel="custom">content/base/public/nsIDOMFile.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>Inherits from: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code>
+</p><p><span id="Method_overview"></span>
+</p>
+<h2 id="Method_overview" name="Method_overview">Method overview</h2>
+<table class="standard-table"> <tbody><tr>
+<td> <code>DOMString <a href="#getAsBinary.28.29">getAsBinary</a>();</code>
+</td></tr>
+<tr>
+<td> <code>DOMString <a href="#getAsDataURL.28.29">getAsDataURL</a>();</code>
+</td></tr>
+<tr>
+<td> <code>DOMString <a href="#getAsText.28.29">getAsText</a>(in DOMString encoding);</code>
+</td></tr>
+</tbody></table>
+<p><span id="Attributes"></span>
+</p>
+<h2 id="Attributes" name="Attributes">Attributes</h2>
+<table class="standard-table"> <tbody><tr>
+<td class="header">Attribute
+</td><td class="header">Type
+</td><td class="header">Description
+</td></tr> <tr>
+<td><code>fileName</code>
+</td><td><code>DOMString</code>
+</td><td> <code>nsIDOMFile</code> オブジェクトから参照されるファイルの名前を含む読み込み専用の属性
+</td></tr>
+<tr>
+<td><code>fileSize</code>
+</td><td><code>unsigned long long</code>
+</td><td> 参照されたファイルのbyteのサイズ
+</td></tr>
+</tbody></table>
+<p><span id="Methods"></span>
+</p>
+<h2 id="Methods" name="Methods">Methods</h2>
+<p><span id="getAsBinary()"></span>
+</p>
+<h3 id="getAsBinary.28.29" name="getAsBinary.28.29">getAsBinary()</h3>
+<p>ファイル上のデータの生のバイナリフォーマットを含む <code><a href="ja/DOMString">DOMString</a></code> を
+返します。
+</p>
+<pre class="eval"> DOMString getAsBinary();
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<p>無し。
+</p>
+<h6 id=".E8.BF.94.E3.82.8A.E5.80.A4" name=".E8.BF.94.E3.82.8A.E5.80.A4">返り値</h6>
+<p>ファイル上の生のバイナリを含む <code>DOMString</code> 。
+</p><p><span id="getAsDataURL()"></span>
+</p>
+<h3 id="getAsDataURL.28.29" name="getAsDataURL.28.29">getAsDataURL()</h3>
+<p>参照されたファイルのコンテンツを<code>data:</code> URL でエンコードした <code>DOMString</code>を返します。
+</p>
+<pre class="eval"> DOMString getAsDataURL();
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<p>無し
+</p>
+<h6 id="Return_value" name="Return_value">Return value</h6>
+<p><code>data:</code> URL としてエンコードされたファイルのデータを含む <code><a href="ja/DOMString">DOMString</a></code> </p><p><span id="getAsText()"></span>
+</p>
+<h3 id="getAsText.28.29" name="getAsText.28.29">getAsText()</h3>
+<p>与えられたエンコーディングを用いたテキストとして判断されたファイルのデータを <code>DOMString</code> として含んだファイルを返します。
+</p>
+<pre class="eval"> DOMString getAsText(
+ in DOMString encoding
+ );
+</pre>
+<h6 id="Parameters_2" name="Parameters_2">Parameters</h6>
+<dl><dt>&lt;tt&gt;encoding&lt;/tt&gt;
+</dt><dd> 指定したエンコードの文字列を利用して返り値のデータとします。もし、文字列が空であれば、UTF-8 が代りに使われます。
+</dd></dl>
+<h6 id="Return_value_2" name="Return_value_2">Return value</h6>
+<p>特定の &lt;tt&gt;エンコーディング&lt;/tt&gt; で解釈されたテキストとしてファイルのデータを含む<code><a href="ja/DOMString">DOMString</a></code> 。
+</p><p><span id="See_also"></span>
+</p>
+<h2 id="See_also" name="See_also">See also</h2>
+<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFileList" title="">nsIDOMFileList</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFileException" title="">nsIDOMFileException</a></code>
+</p>
+<div class="noinclude">
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfileexception/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfileexception/index.html
new file mode 100644
index 0000000000..b84fee1d18
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfileexception/index.html
@@ -0,0 +1,57 @@
+---
+title: nsIDOMFileException
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDOMFileException
+tags:
+ - DOM
+ - Firefox 3
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFileException
+---
+<p>
+
+<code>nsIDOMFileException</code> インタフェースは、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFile" title="">nsIDOMFile</a></code> インタフェース内でのメソッドの呼び出しによって発生する例外を表します。
+</p><p><br>
+</p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/content/base/public/nsIDOMFileException.idl" rel="custom">content/base/public/nsIDOMFileException.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table"> <tbody><tr>
+<td class="header">属性
+</td><td class="header">型
+</td><td class="header">説明
+</td></tr> <tr>
+<td><code>code</code>
+</td><td><code>unsigned short</code>
+</td><td>エラーが起きた状態を表すエラーコード。詳しくは <a href="#Constants">定数一覧</a> を参照してください。
+</td></tr>
+</tbody></table>
+<h2 id=".E5.AE.9A.E6.95.B0" name=".E5.AE.9A.E6.95.B0">定数</h2>
+<table class="standard-table"> <tbody><tr>
+<td class="header">定数
+</td><td class="header">値
+</td><td class="header">説明
+</td></tr> <tr>
+<td><code>NOT_FOUND_ERR</code>
+</td><td> 0
+</td><td>指定されたファイルが見つかりませんでした。
+</td></tr>
+<tr>
+<td><code>NOT_READABLE_ERR</code>
+</td><td> 1
+</td><td>指定されたファイルが読み取り可能ではありませんでした。
+</td></tr>
+</tbody></table>
+<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2>
+<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFile" title="">nsIDOMFile</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFileList" title="">nsIDOMFileList</a></code>
+</p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfilelist/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfilelist/index.html
new file mode 100644
index 0000000000..f599ddb061
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomfilelist/index.html
@@ -0,0 +1,80 @@
+---
+title: nsIDOMFileList
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDOMFileList
+tags:
+ - DOM
+ - Firefox 3
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFileList
+---
+<p>
+
+<code>nsIDOMFileList</code> インタフェースには、ユーザが Web フォーム上の「file」入力フィールドで選択したファイルを説明した <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFile" title="">nsIDOMFile</a></code> オブジェクトのリストが含まれています。
+</p><p>すべての <code>&lt;INPUT&gt;</code> 要素ノードは、このリスト内の項目へのアクセスを許可する <code>fileList</code> 配列を持っています。例えば、HTML に以下のファイル入力フィールドが含まれていた場合、
+</p>
+<pre class="eval">&lt;input id="fileItem" type=file&gt;
+</pre>
+<p>以下のようなコードで、このノードのファイルリストの最初のファイルを、様々な形式で取得できます。
+</p>
+<pre class="eval">// UTF-8 (既定の文字エンコーディング) でファイルのデータを取得します
+document.getElementById('fileItem').fileList[0].getAsText("");
+
+// 具体的に UTF-8 として解釈されたファイルのデータを取得します
+document.getElementById('fileItem').fileList[0].getAsText("utf8")
+
+// data: URL としてファイルのデータを取得します
+document.getElementById('fileItem').fileList[0].getAsDataURL()
+
+// 生のバイナリデータとしてファイルのデータを取得します
+document.getElementById('fileItem').fileList[0].getAsBinary()
+</pre>
+<p><br>
+</p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/content/base/public/nsIDOMFileList.idl" rel="custom">content/base/public/nsIDOMFileList.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code>
+</p>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table"> <tbody><tr>
+<td> <code>nsIDOMFile <a href="#item.28.29">item</a>(in unsigned long index);</code>
+</td></tr>
+</tbody></table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table"> <tbody><tr>
+<td class="header">属性
+</td><td class="header">型
+</td><td class="header">説明
+</td></tr> <tr>
+<td><code>length</code>
+</td><td><code>unsigned long</code>
+</td><td>リスト内のファイル数を示す読み取り専用の属性。
+</td></tr>
+</tbody></table>
+<h2 id=".E5.B1.9E.E6.80.A7_2" name=".E5.B1.9E.E6.80.A7_2">属性</h2>
+<h3 id="item.28.29" name="item.28.29">item()</h3>
+<p>ファイルリスト内の指定されたインデックスにある <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFile" title="">nsIDOMFile</a></code> を返します。
+</p>
+<pre class="eval"> nsIDOMFile item(
+ in unsigned long index
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<dl><dt>&lt;tt&gt;index&lt;/tt&gt;
+</dt><dd>リストから取得するファイルの、ゼロベースのインデックス。
+</dd></dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6>
+<p>リクエストされたファイルを表す <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFile" title="">nsIDOMFile</a></code>。
+</p>
+<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2>
+<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFile" title="">nsIDOMFile</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMFileException" title="">nsIDOMFileException</a></code>
+</p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomhtmlmediaelement/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomhtmlmediaelement/index.html
new file mode 100644
index 0000000000..736e9da5b3
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomhtmlmediaelement/index.html
@@ -0,0 +1,39 @@
+---
+title: NsIDOMHTMLMediaElement
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/NsIDOMHTMLMediaElement
+tags:
+ - Firefox 3.5
+ - Gecko 1.9.1
+ - Interfaces
+ - 'Interfaces:Scriptable'
+ - XPCOM
+ - XPCOM Interface Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/NsIDOMHTMLMediaElement
+---
+<div><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/interfaces/html/nsIDOMHTMLMediaElement.idl" rel="custom">dom/interfaces/html/nsIDOMHTMLMediaElement.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;"> HTML5 の新要素である <a href="/ja/docs/Web/HTML/Element/audio" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>&lt;audio&gt;</code></a> 要素と <a href="/ja/docs/Web/HTML/Element/video" title="HTML の映像要素 (&lt;video>) は、文書中に映像再生に対応するメディアプレイヤーを埋め込みます。"><code>&lt;video&gt;</code></a> 要素に対しぞれぞれ <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMHTMLAudioElement" title="">nsIDOMHTMLAudioElement</a></code> インターフェース、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMHTMLVideoElement" title="">nsIDOMHTMLVideoElement</a></code> インターフェースを実装する為の基礎となるインターフェース </span>
+
+ <div style="height: 42px; position: relative; padding: 2px; width: auto;">
+
+ <div style="top: 22px; font-size: 11px; position: absolute;">1.0</div>
+
+ <div style="top: 22px; font-size: 11px; position: absolute; left: 0px; text-align: right; float: right; width: 100%;">67</div>
+
+ <div style="height: 8px; top: 16px; background: #dd0000; left: 0px; position: absolute; width: 9.389671267605634%;"></div>
+
+<div style="height: 8px; top: 16px; left: 9.389671267605634%; background: #00dd00; position: absolute; width: 90.61032873239436%;" title="Introduced in Gecko 1.9.1 (Firefox 3.5 / Thunderbird 3.0 / SeaMonkey 2.0)"></div>
+
+<div style="top: 0px; font-size: 11px; position: absolute; left: 9.389671267605634%;">Introduced</div>
+<div style="top: 22px; font-size: 11px; position: absolute; left: 9.389671267605634%;">Gecko 1.9.1</div>
+
+ <div style="height: 8px; top: 16px; left: 20.62676056338028%; background: #eeee00; position: absolute; width: 1%; border-radius: 4px; -webkit-border-radius: 4px;" title="Last changed in Gecko 11.0 (Firefox 11.0 / Thunderbird 11.0 / SeaMonkey 2.8)"></div>
+
+</div>
+
+<div style="background: #eee; padding: 2px;">
+継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMHTMLElement" title="">nsIDOMHTMLElement</a></code>
+<span style="text-align: right; float: right;">最終更新: Gecko 11.0 (Firefox 11.0 / Thunderbird 11.0 / SeaMonkey 2.8)</span></div>
+</div></div>
+
+<div><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMHTMLMediaElement">nsIDOMHTMLMediaElement</a></code>インターフェースには<a href="/ja/docs/Web/API/HTMLMediaElement"><code>HTMLMediaElement</code></a>インターフェースが実装されています。詳細については各ページを参照して下さい。</div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomofflineresourcelist/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomofflineresourcelist/index.html
new file mode 100644
index 0000000000..db33da81d4
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomofflineresourcelist/index.html
@@ -0,0 +1,184 @@
+---
+title: nsIDOMOfflineResourceList
+slug: >-
+ Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDOMOfflineResourceList
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMOfflineResourceList
+---
+<p>
+</p><p><code>nsIDOMOfflineResourceList</code> インタフェースは、アプリケーションキャッシュへのアクセスを提供します。これは、Web コンテンツのリソースをオフラインでも利用できるよう、ローカルにキャッシュできるようにする機能です。キャッシュにリソースを追加したり、キャッシュからリソースを削除したり、動的に管理されたリソースリストを列挙するためのメソッドが含まれます。
+</p><p><br>
+</p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/public/idl/offline/nsIDOMOfflineResourceList.idl" rel="custom">dom/public/idl/offline/nsIDOMOfflineResourceList.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code>
+</p>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81"> メソッドの概要 </h2>
+<table class="standard-table"> <tbody><tr>
+<td> <code>void <a href="#add.28.29">add</a>(in <a href="ja/DOMString">DOMString</a> uri);</code>
+</td></tr>
+<tr>
+<td> <code><a href="ja/DOMString">DOMString</a> <a href="#item.28.29">item</a>(in unsigned long index);</code>
+</td></tr>
+<tr>
+<td> <code>void <a href="#remove.28.29">remove</a>(in <a href="ja/DOMString">DOMString</a> uri);</code>
+</td></tr>
+<tr>
+<td> <code>void <a href="#swapCache.28.29">swapCache</a>();</code>
+</td></tr>
+<tr>
+<td> <code>void <a href="#update.28.29">update</a>();</code>
+</td></tr>
+</tbody></table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7"> 属性 </h2>
+<table class="standard-table"> <tbody><tr>
+<td class="header">属性
+</td><td class="header">型
+</td><td class="header">説明
+</td></tr> <tr>
+<td> <code>length</code>
+</td><td> <code>unsigned long</code>
+</td><td> 動的に管理されたオフラインリソースリスト内のエントリー数。<i>読み取り専用</i>。
+</td></tr>
+<tr>
+<td> <code>onchecking</code>
+</td><td> <code><a href="ja/NsIDOMEventListener">nsIDOMEventListener</a></code>
+</td><td> アプリケーションキャッシュマニフェストを取得したり、更新を確認する際に呼び出されるイベントリスナー。
+</td></tr>
+<tr>
+<td> <code>onerror</code>
+</td><td> <code><a href="ja/NsIDOMEventListener">nsIDOMEventListener</a></code>
+</td><td> キャッシュプロセスの途中でエラーが発生した場合に呼び出されるイベントリスナー。
+</td></tr>
+<tr>
+<td> <code>onnoupdate</code>
+</td><td> <code><a href="ja/NsIDOMEventListener">nsIDOMEventListener</a></code>
+</td><td> ダウンロードス売る更新がない場合に呼び出されるイベントリスナー。
+</td></tr>
+<tr>
+<td> <code>ondownloading</code>
+</td><td> <code><a href="ja/NsIDOMEventListener">nsIDOMEventListener</a></code>
+</td><td> リソースがキャッシュにダウンロードされる際に呼び出されるイベントリスナー。
+</td></tr>
+<tr>
+<td> <code>onprogress</code>
+</td><td> <code><a href="ja/NsIDOMEventListener">nsIDOMEventListener</a></code>
+</td><td> ダウンロードプロセスの途中で定期的に呼び出されるイベントリスナー。
+</td></tr>
+<tr>
+<td> <code>onupdateready</code>
+</td><td> <code><a href="ja/NsIDOMEventListener">nsIDOMEventListener</a></code>
+</td><td> リソースの更新が完了した際に呼び出されるイベントリスナー。バージョン管理されたアプリケーションキャッシュがサポートされていないため、このイベントはまだ使われていません。
+</td></tr>
+<tr>
+<td> <code>oncached</code>
+</td><td> <code><a href="ja/NsIDOMEventListener">nsIDOMEventListener</a></code>
+</td><td> キャッシュが完了した際に呼び出されるイベントリスナー。
+</td></tr>
+<tr>
+<td> <code>status</code>
+</td><td> <code>unsigned short</code>
+</td><td> アプリケーションキャッシュの状態を示す、いずれかの<a href="#constants">定数</a>。
+</td></tr>
+</tbody></table>
+<h2 id=".E5.AE.9A.E6.95.B0" name=".E5.AE.9A.E6.95.B0"> 定数 </h2>
+<table class="standard-table"> <tbody><tr>
+<td class="header">定数
+</td><td class="header">値
+</td><td class="header">説明
+</td></tr> <tr>
+<td> <code>UNCACHED</code>
+</td><td> 0
+</td><td> オブジェクトはアプリケーションキャッシュと関連付けられていません。
+</td></tr>
+<tr>
+<td> <code>IDLE</code>
+</td><td> 1
+</td><td> アプリケーションキャッシュは更新プロセスの途中ではありません。
+</td></tr>
+<tr>
+<td> <code>CHECKING</code>
+</td><td> 2
+</td><td> アプリケーションキャッシュマニフェストを取得して、更新を確認しています。
+</td></tr>
+<tr>
+<td> <code>DOWNLOADING</code>
+</td><td> 3
+</td><td> リソースをダウンロードしてキャッシュに追加しています。
+</td></tr>
+<tr>
+<td> <code>UPDATEREADY</code>
+</td><td> 4
+</td><td> 新しいバージョンのアプリケーションキャッシュが利用可能です。
+<div class="blockIndicator note"><strong>註:</strong> バージョン管理されたアプリケーションキャッシュはまだ実装されていません。このため、このステータス値は現時点では使われていません。</div>
+
+</td></tr>
+</tbody></table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89"> メソッド </h2>
+<h3 id="add.28.29" name="add.28.29"> add() </h3>
+<p>動的に管理されたエントリーにアイテムを追加します。リソースは取得され、アプリケーションキャッシュに追加されます。
+</p>
+<pre class="eval"> void add(
+ in DOMString uri
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<dl><dt> &lt;tt&gt;uri&lt;/tt&gt;
+</dt><dd> リストに追加するリソースの URI。
+</dd></dl>
+<h3 id="item.28.29" name="item.28.29"> item() </h3>
+<p>キャッシュされたリソースのリストから、特定のオフセットにあるアイテムの URI を返します。
+</p>
+<pre class="eval"> DOMString item(
+ in unsigned long index
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6>
+<dl><dt> &lt;tt&gt;index&lt;/tt&gt;
+</dt><dd> URI を取得する、キャッシュされたアイテムのインデックス。
+</dd></dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6>
+<p>指定されたリソースの URI を含む <code><a href="ja/DOMString">DOMString</a></code>。
+</p>
+<h3 id="remove.28.29" name="remove.28.29"> remove() </h3>
+<p>動的に管理されたエントリーのリストからアイテムを削除します。アプリケーションキャッシュ内の指定された URI に対する最後の参照であった場合、キャッシュエントリーが削除されます。
+</p>
+<pre class="eval"> void remove(
+ in DOMString uri
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6>
+<dl><dt> &lt;tt&gt;uri&lt;/tt&gt;
+</dt><dd> リストから削除するアイテムの URI。
+</dd></dl>
+<h3 id="swapCache.28.29" name="swapCache.28.29"> swapCache() </h3>
+<p>アプリケーションキャッシュの最新版でやりとりを行います。
+</p><div class="blockIndicator note"><strong>註:</strong> バージョン管理されたアプリケーションキャッシュはまだサポートされていないため、このメソッドは例外を投げます。</div>
+
+<pre class="eval"> void swapCache();
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6>
+<p>なし。
+</p>
+<h3 id="update.28.29" name="update.28.29"> update() </h3>
+<p>アプリケーションキャッシュの更新プロセスを開始します。
+</p>
+<pre class="eval"> void update();
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6>
+<p>なし。
+</p>
+<h2 id=".E5.8F.82.E8.80.83.E8.B3.87.E6.96.99" name=".E5.8F.82.E8.80.83.E8.B3.87.E6.96.99"> 参考資料 </h2>
+<ul><li> <a href="ja/Offline_resources_in_Firefox">Offline resources in Firefox</a>
+</li></ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomsimplegestureevent/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomsimplegestureevent/index.html
new file mode 100644
index 0000000000..70719d4b06
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidomsimplegestureevent/index.html
@@ -0,0 +1,61 @@
+---
+title: nsIDOMSimpleGestureEvent
+slug: >-
+ Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/NsIDOMSimpleGestureEvent
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/NsIDOMSimpleGestureEvent
+---
+<p><code>nsIDOMSimpleGestureEvent</code> インターフェースはマウスやトラックパッドによるジェスチャイベントを表現します。</p>
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/public/idl/events/nsIDOMSimpleGestureEvent.idl" rel="custom">dom/public/idl/events/nsIDOMSimpleGestureEvent.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9.1 (Firefox 3.5 / Thunderbird 3.0 / SeaMonkey 2.0)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMMouseEvent" title="">nsIDOMMouseEvent</a></code></p>
+<h2 id="メソッドの概要">メソッドの概要</h2>
+<table class="standard-table"> <tbody> <tr> <td><code>void initSimpleGestureEvent(in DOMString typeArg,<br>                             in boolean canBubbleArg,<br>                             in boolean cancelableArg,<br>                             in nsIDOMAbstractView viewArg,<br>                             in long detailArg,<br>                             in long screenXArg,<br>                             in long screenYArg,<br>                             in long clientXArg,<br>                             in long clientYArg,<br>                             in boolean ctrlKeyArg,<br>                             in boolean altKeyArg,<br>                             in boolean shiftKeyArg,<br>                             in boolean metaKeyArg,<br>                             in unsigned short buttonArg,<br>                             in nsIDOMEventTarget relatedTargetArg,<br>                             in unsigned long directionArg,<br>                             in double deltaArg);</code></td> </tr> </tbody>
+</table>
+<h2 id="属性">属性</h2>
+<table class="standard-table"> <tbody> <tr> <td class="header">属性</td> <td class="header">型</td> <td class="header">説明</td> </tr> <tr> <td><code>direction</code></td> <td><code>unsigned long</code></td> <td>ジェスチャの移動方向。このページの <a href="#Direction_constants">Direction constants</a> と <a href="#Rotation_constants">Rotation constants</a> を参照。<strong>読み取り専用。</strong></td> </tr> <tr> <td><code>delta</code></td> <td><code>double</code></td> <td> <p>ジェスチャがどれほど移動したかを示す変化量。Update イベント (MozXxxGestureUpdate イベント) では前回の更新からの変化を示します。<code>MozRotateGesture</code> と <code>MozMagnifyGesture</code> イベントでは、これはイベントが処理されてからの総変化量を表します。</p> <p>回転イベントでは、この値は度で指定されます (正の値は時計回りの回転を表し、負の値は反時計回りの回転を表します)。拡大ジェスチャでは、単位は実装独自ですが、正の値は拡大を表し、負の値は縮小を表します。</p> <div class="note"><strong>注意:</strong> 現時点において Mac OS X では拡大ジェスチャでつかわれる単位が文書化されていません。典型的な値は 0.0 から 100.0 の範囲のようです。しかし、現在信頼できるのは、値が正になるか負になるかのみです。Windows では、今回とその直前における、2 つのタッチ点間の幅の変化をピクセル単位で表します。</div> </td> </tr> </tbody>
+</table>
+<h2 id="方向についての定数">方向についての定数</h2>
+<table class="standard-table"> <tbody> <tr> <td class="header">定数</td> <td class="header">値</td> <td class="header">説明</td> </tr> <tr> <td><code>DIRECTION_UP</code></td> <td>1</td> <td>上向きスワイプ。</td> </tr> <tr> <td><code>DIRECTION_DOWN</code></td> <td>2</td> <td>下向きスワイプ。</td> </tr> <tr> <td><code>DIRECTION_LEFT</code></td> <td>4</td> <td>左向きスワイプ。</td> </tr> <tr> <td><code>DIRECTION_RIGHT</code></td> <td>8</td> <td>右向きスワイプ。</td> </tr> </tbody>
+</table>
+<h2 id="回転についての定数">回転についての定数</h2>
+<table class="standard-table"> <tbody> <tr> <td class="header">定数</td> <td class="header">値</td> <td class="header">説明</td> </tr> <tr> <td><code>ROTATION_COUNTERCLOCKWISE</code></td> <td>1</td> <td>反時計回りの回転。</td> </tr> <tr> <td><code>ROTATION_CLOCKWISE</code></td> <td>2</td> <td>時計回りの回転。</td> </tr> </tbody>
+</table>
+<h2 id="メソッド">メソッド</h2>
+<h3 id="initSimpleGestureEvent">initSimpleGestureEvent()</h3>
+<p>ジェスチャイベントの初期化</p>
+<pre class="eval">void initSimpleGestureEvent(
+  in DOMString typeArg,
+  in boolean canBubbleArg,
+  in boolean cancelableArg,
+  in nsIDOMAbstractView viewArg,
+  in long detailArg,
+  in long screenXArg,
+  in long screenYArg,
+  in long clientXArg,
+  in long clientYArg,
+  in boolean ctrlKeyArg,
+  in boolean altKeyArg,
+  in boolean shiftKeyArg,
+  in boolean metaKeyArg,
+  in unsigned short buttonArg,
+  in nsIDOMEventTarget relatedTargetArg,
+  in unsigned long directionArg,
+  in double deltaArg
+);
+</pre>
+<h6 id="パラメータ">パラメータ</h6>
+<dl> <dt><code>directionArg</code></dt> <dd><code>direction</code> 属性に代入する値。</dd> <dt><code>deltaArg</code></dt> <dd><code>delta</code> 属性に代入する値。</dd> </dl>
+<h1 id="参照">参照</h1>
+<ul> <li><a class="internal" href="/Ja/DOM/Mouse_gesture_events" title="Ja/DOM/Mouse gesture events">マウスジェスチャイベント</a></li> <li><a class="internal" href="/ja/DOM/event" title="Ja/DOM/Event"><code>event</code></a></li>
+</ul>
+
+<p> </p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownload/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownload/index.html
new file mode 100644
index 0000000000..454d955e70
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownload/index.html
@@ -0,0 +1,135 @@
+---
+title: nsIDownload
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDownload
+tags:
+ - Firefox 3
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDownload
+---
+<p> <code>nsIDownload</code> インタフェースは、ダウンロードオブジェクトを表します。ダウンロードオブジェクトは、ダウンロードマネージャによって利用されています。(ダウンロード待ち、ダウンロード中、ダウンロード完了後のファイルを管理する <code><a href="ja/NsIDownloadManager">nsIDownloadManager</a></code> を参照してください)</p>
+<div class="note">
+ <b>注意:</b> ダウンロードが完了すると、ダウンロードマネージャは <code>nsIDownload</code> オブジェクトの更新を停止します。完了ステータスは、<code>nsIDownloadManager::DOWNLOAD_FINISHED</code>、<code>nsIDownloadManager::DOWNLOAD_FAILED</code>、<code>nsIDownloadManager::DOWNLOAD_CANCELED</code> のいずれかになります。</div>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/downloads/public/nsIDownload.idl" rel="custom">toolkit/components/downloads/public/nsIDownload.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsITransfer" title="">nsITransfer</a></code></p>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>targetFile</code></td>
+ <td><code><a href="ja/NsILocalFile">nsILocalFile</a></code></td>
+ <td>ダウンロードされたファイルが保存される (あるいはダウンロードが完了している場合は保存された) 場所を示します。
+ <i>
+ 読み取り専用。</i>
+ </td>
+ </tr>
+ <tr>
+ <td><code>percentComplete</code></td>
+ <td><code><a href="ja/PRint32">PRint32</a></code></td>
+ <td>完了したファイル転送の割合。ファイルサイズが不明な場合は -1 となります。
+ <i>
+ 読み取り専用。</i>
+ </td>
+ </tr>
+ <tr>
+ <td><code>amountTransferred</code></td>
+ <td><code><a href="ja/PRUint64">PRUint64</a></code></td>
+ <td>完了したダウンロードのバイト数。
+ <i>
+ 読み取り専用。</i>
+ </td>
+ </tr>
+ <tr>
+ <td><code>size</code></td>
+ <td><code><a href="ja/PRUint64">PRUint64</a></code></td>
+ <td>ファイルの合計サイズ (バイト)。ファイルサイズが不明な場合は <code>LL_MAXUINT</code> となります。
+ <i>
+ 読み取り専用。</i>
+ </td>
+ </tr>
+ <tr>
+ <td><code>source</code></td>
+ <td><code><a href="ja/NsIURI">nsIURI</a></code></td>
+ <td>ダウンロードファイルの取得元 URI。
+ <i>
+ 読み取り専用。</i>
+ </td>
+ </tr>
+ <tr>
+ <td><code>cancelable</code></td>
+ <td><code><a href="ja/NsICancelable">nsICancelable</a></code></td>
+ <td>ダウンロードをキャンセルするために使用できるオブジェクト。ダウンロード完了後、この値は <code>null</code> に設定されます。
+ <i>
+ 読み取り専用。</i>
+ </td>
+ </tr>
+ <tr>
+ <td><code>displayName</code></td>
+ <td><code><a href="ja/AString">AString</a></code></td>
+ <td>ユーザが読める形での転送の説明。
+ <i>
+ 読み取り専用。</i>
+ </td>
+ </tr>
+ <tr>
+ <td><code>startTime</code></td>
+ <td><code>long long</code></td>
+ <td>ファイル転送が開始された時刻。
+ <i>
+ 読み取り専用。</i>
+ </td>
+ </tr>
+ <tr>
+ <td><code>speed</code></td>
+ <td><code>double</code></td>
+ <td>ダウンロードの転送速度 (バイト/秒)。
+ <i>
+ 読み取り専用。</i>
+ </td>
+ </tr>
+ <tr>
+ <td><code>MIMEInfo</code></td>
+ <td><code><a href="ja/NsIMIMEInfo">nsIMIMEInfo</a></code></td>
+ <td>この任意の属性は、MIME タイプ、ヘルパーアプリケーション、ダウンロード完了後にヘルパーアプリケーションを自動的に実行するかどうかなど、ターゲットに関連する MIME 情報を提供します。</td>
+ </tr>
+ <tr>
+ <td><code>id</code></td>
+ <td><code>unsigned long</code></td>
+ <td>データベース内でダウンロードを固有に識別できる ID。</td>
+ </tr>
+ <tr>
+ <td><code>state</code></td>
+ <td><code>short</code></td>
+ <td>ダウンロードの状況。<a href="ja/NsIDownloadManager#Constants">nsIDownloadManager の定数一覧</a> を参照してください。</td>
+ </tr>
+ <tr>
+ <td><code>referrer</code></td>
+ <td><code><a href="ja/NsIURI">nsIURI</a></code></td>
+ <td>ダウンロードのリファラ URI。これは HTTP ダウンロードの場合のみ使用され、<code>null</code> になる可能性もあります。</td>
+ </tr>
+ <tr>
+ <td><code>resumable</code></td>
+ <td><code>boolean</code></td>
+ <td>ダウンロードを中止後に再開できるかどうかを示します。これは、ダウンロードが HTTP/1.1 あるいは FTP を通じて行われていて、サーバが再開に対応している場合のみ有効になります。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2>
+<p><code><a href="ja/NsIDownloadManager">nsIDownloadManager</a></code>, <code><a href="ja/NsIDownloadProgressListener">nsIDownloadProgressListener</a></code>, <code><a href="ja/NsIXPInstallManagerUI">nsIXPInstallManagerUI</a></code></p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadmanager/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadmanager/index.html
new file mode 100644
index 0000000000..813eca1337
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadmanager/index.html
@@ -0,0 +1,424 @@
+---
+title: nsIDownloadManager
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDownloadManager
+tags:
+ - Firefox 3
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDownloadManager
+---
+<p> <code>nsIDownloadManager</code> インタフェースは、アプリケーションや拡張機能がダウンロードマネージャとやりとりできるようにします。例えば、ダウンロードするファイルの追加や削除、ダウンロードに関する情報の取得、ダウンロード完了時の通知取得、といった機能を備えています。</p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/downloads/public/nsIDownloadManager.idl" rel="custom">toolkit/components/downloads/public/nsIDownloadManager.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p>
+<p>実装: <code>@mozilla.org/download-manager;1</code>。インスタンスを作成するには、以下のように記述します。</p>
+<pre class="eval">var dm = Components.classes["@mozilla.org/download-manager;1"]
+ .createInstance(Components.interfaces.nsIDownloadManager);
+</pre>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>nsIDownload <a href="#addDownload.28.29">addDownload</a>(in short aDownloadType, in <a href="ja/NsIURI">nsIURI</a> aSource, in nsIURI aTarget, in <a href="ja/AString">AString</a> aDisplayName, in <a href="ja/NsIMIMEInfo">nsIMIMEInfo</a> aMIMEInfo, in <a href="ja/PRTime">PRTime</a> aStartTime, in <a href="ja/NsILocalFile">nsILocalFile</a> aTempFile, in <a href="ja/NsICancelable">nsICancelable</a> aCancelable)</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIDownload <a href="#getDownload.28.29">getDownload</a>(in unsigned long aID)</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#cancelDownload.28.29">cancelDownload</a>(in unsigned long aID)</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#removeDownload.28.29">removeDownload</a>(in unsigned long aID)</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#pauseDownload.28.29">pauseDownload</a>(in unsigned long aID)</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#resumeDownload.28.29">resumeDownload</a>(in unsigned long aID)</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#retryDownload.28.29">retryDownload</a>(in unsigned long aID)</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#cleanUp.28.29">cleanUp</a>()</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#addListener.28.29">addListener</a>(in <a href="ja/NsIDownloadProgressListener">nsIDownloadProgressListener</a> aListener)</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#removeListener.28.29">removeListener</a>(in <a href="ja/NsIDownloadProgressListener">nsIDownloadProgressListener</a> aListener)</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>DBConnection</code></td>
+ <td><code><a href="ja/MozIStorageConnection">mozIStorageConnection</a></code></td>
+ <td>ダウンロードデータベースへのデータベース接続。
+ <i>
+ 読み取り専用。</i>
+ </td>
+ </tr>
+ <tr>
+ <td><code>canCleanUp</code></td>
+ <td><code>boolean</code></td>
+ <td>ダウンロードが、完了時、失敗時、キャンセル時に削除可能かどうかを示します。
+ <i>
+ 読み取り専用。</i>
+ </td>
+ </tr>
+ <tr>
+ <td><code>activeDownloadCount</code></td>
+ <td><code>long</code></td>
+ <td>現在ダウンロード中のファイル数。
+ <i>
+ 読み取り専用。</i>
+ </td>
+ </tr>
+ <tr>
+ <td><code>activeDownloads</code></td>
+ <td><code><a href="ja/NsISimpleEnumerator">nsISimpleEnumerator</a></code></td>
+ <td>アクティブな nsIDownloads の列挙。
+ <i>
+ 読み取り専用。</i>
+ </td>
+ </tr>
+ <tr>
+ <td><code>defaultDownloadsDirectory</code></td>
+ <td><code><a href="ja/NsILocalFile">nsILocalFile</a></code></td>
+ <td>プラットフォーム標準のダウンロードディレクトリを返します。
+ <i>
+ 読み取り専用。</i>
+ </td>
+ </tr>
+ <tr>
+ <td><code>userDownloadsDirectory</code></td>
+ <td><code><a href="ja/NsILocalFile">nsILocalFile</a></code></td>
+ <td>ユーザが設定したダウンロードディレクトリを返します。
+ <i>
+ 読み取り専用。</i>
+ <p>上記のパスは、ユーザが編集可能な 2 つの設定項目に依存します。</p>
+ <p><code>browser.download.folderList</code> は、標準のダウンロード場所を定義します。</p>
+ <ul>
+ <li>0: ファイルは初期設定ではデスクトップにダウンロードされます。</li>
+ <li>1: ファイルは初期設定ではシステム標準のダウンロードフォルダにダウンロードされます。</li>
+ <li>2: ファイルは <code>browser.download.dir</code> で設定されたローカルパスにダウンロードされます。この設定値が不正な場合、ダウンロードディレクトリは初期設定値にフォールバックされます。</li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.AE.9A.E6.95.B0" name=".E5.AE.9A.E6.95.B0">定数</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">定数</td>
+ <td class="header">値</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>DOWNLOAD_NOTSTARTED</code></td>
+ <td>-1</td>
+ <td>ダウンロードはまだ開始されていません。</td>
+ </tr>
+ <tr>
+ <td><code>DOWNLOAD_DOWNLOADING</code></td>
+ <td>0</td>
+ <td>ダウンロードは現在進行中です。</td>
+ </tr>
+ <tr>
+ <td><code>DOWNLOAD_FINISHED</code></td>
+ <td>1</td>
+ <td>ダウンロードは完了しました。</td>
+ </tr>
+ <tr>
+ <td><code>DOWNLOAD_FAILED</code></td>
+ <td>2</td>
+ <td>ダウンロードは失敗しました。</td>
+ </tr>
+ <tr>
+ <td><code>DOWNLOAD_CANCELED</code></td>
+ <td>3</td>
+ <td>ユーザがダウンロードをキャンセルしました。</td>
+ </tr>
+ <tr>
+ <td><code>DOWNLOAD_PAUSED</code></td>
+ <td>4</td>
+ <td>ダウンロードは中止されています。</td>
+ </tr>
+ <tr>
+ <td><code>DOWNLOAD_QUEUED</code></td>
+ <td>5</td>
+ <td>ダウンロードは待ち状態で、まだダウンロードは開始されていません。</td>
+ </tr>
+ <tr>
+ <td><code>DOWNLOAD_BLOCKED</code></td>
+ <td>6</td>
+ <td>保護者による制限 (ペアレンタルコントロール) が働いたために、あるいは、そのファイルがウイルスに感染していて駆除できないとウイルス対策ソフトによって判断されたために、ダウンロードはブロックされました。</td>
+ </tr>
+ <tr>
+ <td><code>DOWNLOAD_SCANNING</code></td>
+ <td>7</td>
+ <td>ダウンロードはウイルス対策ソフトによってスキャンが行われています。</td>
+ </tr>
+ <tr>
+ <td><code>DOWNLOAD_TYPE_DOWNLOAD</code></td>
+ <td>0</td>
+ <td>
+ <i>
+ 不明</i>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="addDownload.28.29" name="addDownload.28.29">addDownload()</h3>
+<p>nsIDownload を作成し、ダウンロードマネージャが管理できるように追加します。</p>
+<pre class="eval">nsIDownload addDownload(
+ in short aDownloadType,
+ in nsIURI aSource,
+ in nsIURI aTarget,
+ in AString aDisplayName,
+ in nsIMIMEInfo aMIMEInfo,
+ in PRTime aStartTime,
+ in nsILocalFile aTempFile,
+ in nsICancelable aCancelable
+)
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aDownloadType&lt;/tt&gt;</dt>
+ <dd>
+ 転送するダウンロードの種類。
+ <i>
+ 詳細不明</i>
+ </dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aSource&lt;/tt&gt;</dt>
+ <dd>
+ ファイルの取得元 URI。<code>null</code> にはなりません。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aTarget&lt;/tt&gt;</dt>
+ <dd>
+ 転送されたファイルが保存される場所を示した URI。<code>null</code> にはなりません。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aDisplayName&lt;/tt&gt;</dt>
+ <dd>
+ ユーザが読める形での転送の説明。空白文字になる可能性があります。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aMIMEInfo&lt;/tt&gt;</dt>
+ <dd>
+ ターゲットファイルに関連付けられた MIME 情報。これには、MIME タイプや、適切な場合にはヘルパーアプリケーションが含まれます。このパラメータはオプションです。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;startTime&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードの開始時刻。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aTempFile&lt;/tt&gt;</dt>
+ <dd>
+ 一時ファイル (受信したデータが保存されるファイルで、ターゲットファイルとは異なります) の場所。ダウンロードが完了すると、ファイルは &lt;tt&gt;aTarget&lt;/tt&gt; によって示される場所に移動されます。これは <code>null</code> になる可能性があります。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aCancelable&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードをキャンセルするために使用できるオブジェクト。<code>null</code> にはなりません。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6>
+<p>新たに作成された、渡されたプロパティを伴ったダウンロード項目。</p>
+<div class="note">
+ <b>注:</b> ダウンロードを追加しても、即座に転送が開始されるわけではありません。追加した後ダウンロードを開始したい場合は、<code><a href="ja/NsIWebBrowserPersist">nsIWebBrowserPersist</a></code> オブジェクトを作成し、このメソッドを呼び出し、戻り値となるダウンロードオブジェクトのための <code>progressListener</code> を設定し、その後で <code>saveURI()</code> メソッドを呼び出す必要があります。</div>
+<h3 id="getDownload.28.29" name="getDownload.28.29">getDownload()</h3>
+<p>ダウロードマネージャによって管理されているダウンロードを取得します。これは、進行中、あるいは完了したダウンロードで、データベースに保存されている項目になります。</p>
+<pre class="eval">nsIDownload getDownload(
+ in unsigned long aID
+)
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aID&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードの固有 ID。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6>
+<p>指定された ID のダウンロード。</p>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96">投げられる例外</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;NS_ERROR_NOT_AVAILABLE&lt;/tt&gt;</dt>
+ <dd>
+ 指定されたダウンロードはデータベース内にありません。</dd>
+</dl>
+<h3 id="cancelDownload.28.29" name="cancelDownload.28.29">cancelDownload()</h3>
+<p>指定された ID のダウンロードが進行中であった場合、そのダウンロードをキャンセルします。これは、そのダウンロードによって提供された <code><a href="ja/NsICancelable">nsICancelable</a></code> の <code>cancel(NS_BINDING_ABORTED)</code> を呼び出します。</p>
+<pre class="eval"> void cancelDownload(
+ in unsigned long aID
+ )
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aID&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードの固有 ID。</dd>
+</dl>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_2" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_2">投げられる例外</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;NS_ERROR_FAILURE&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードが進行中ではありません。</dd>
+</dl>
+<h3 id="removeDownload.28.29" name="removeDownload.28.29">removeDownload()</h3>
+<p>指定された ID のダウンロードが進行中でなかった場合、そのダウンロードを削除します。<code>cancelDownload()</code> が単純に転送をキャンセルしつつ関連情報を残すのに対して、<code>removeDownload()</code> は関連情報もすべて削除します。</p>
+<pre class="eval"> void removeDownload(
+ in unsigned long aID
+ )
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aID&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードの固有 ID。</dd>
+</dl>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_3" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_3">投げられる例外</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;NS_ERROR_FAILURE&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードはアクティブです。</dd>
+</dl>
+<h3 id="pauseDownload.28.29" name="pauseDownload.28.29">pauseDownload()</h3>
+<p>指定されたダウンロードを中止します。</p>
+<pre class="eval"> void pauseDownload(
+ in unsigned long aID
+ )
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aID&lt;/tt&gt;</dt>
+ <dd>
+ 中止するダウンロードの固有 ID。</dd>
+</dl>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_4" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_4">投げられる例外</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;NS_ERROR_FAILURE&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードが進行中ではありません。</dd>
+</dl>
+<h3 id="resumeDownload.28.29" name="resumeDownload.28.29">resumeDownload()</h3>
+<p>指定されたダウンロードを再開します。</p>
+<pre class="eval"> void resumeDownload(
+ in unsigned long aID
+ )
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_6" name=".E5.BC.95.E6.95.B0_6">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aID&lt;/tt&gt;</dt>
+ <dd>
+ 再開するダウンロードの固有 ID。</dd>
+</dl>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_5" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_5">投げられる例外</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;NS_ERROR_FAILURE&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードが進行中ではありません。</dd>
+</dl>
+<h3 id="retryDownload.28.29" name="retryDownload.28.29">retryDownload()</h3>
+<p>失敗したダウンロードを再試行します。</p>
+<pre class="eval"> void retryDownload(
+ in unsigned long aID
+ )
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_7" name=".E5.BC.95.E6.95.B0_7">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aID&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードの固有 ID。</dd>
+</dl>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_6" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_6">投げられる例外</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;NS_ERROR_NOT_AVAILALE&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードが不明です。</dd>
+</dl>
+<h3 id="cleanUp.28.29" name="cleanUp.28.29">cleanUp()</h3>
+<p>完了、失敗、キャンセルされたダウンロードをリストから削除します。</p>
+<pre class="eval"> void cleanUp()
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_8" name=".E5.BC.95.E6.95.B0_8">引数</h6>
+<p>ありません。</p>
+<h3 id="addListener.28.29" name="addListener.28.29">addListener()</h3>
+<p>ダウンロードマネージャにリスナーを追加します。</p>
+<pre class="eval"> void addListener(
+ in nsIDownloadProgressListener aListener
+ )
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_9" name=".E5.BC.95.E6.95.B0_9">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aListener&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードマネージャからステータス情報を受け取る <code><a href="ja/NsIDownloadProgressListener">nsIDownloadProgressListener</a></code> オブジェクト。</dd>
+</dl>
+<h3 id="removeListener.28.29" name="removeListener.28.29">removeListener()</h3>
+<p>ダウンロードマネージャからリスナーを削除します。</p>
+<pre class="eval"> void removeListener(
+ in nsIDownloadProgressListener aListener
+ )
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_10" name=".E5.BC.95.E6.95.B0_10">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aListener&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードマネージャのリスニングを中止する <code><a href="ja/NsIDownloadProgressListener">nsIDownloadProgressListener</a></code> オブジェクト。</dd>
+</dl>
+<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDownload" title="">nsIDownload</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDownloadManagerUI" title="">nsIDownloadManagerUI</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDownloadProgressListener" title="">nsIDownloadProgressListener</a></code></li>
+ <li><a href="ja/The_Download_Manager_schema">The Download Manager schema</a></li>
+</ul>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadmanagerui/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadmanagerui/index.html
new file mode 100644
index 0000000000..958b1fc5e6
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadmanagerui/index.html
@@ -0,0 +1,111 @@
+---
+title: nsIDownloadManagerUI
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDownloadManagerUI
+tags:
+ - Firefox 3
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDownloadManagerUI
+---
+<p> <code>nsIDownloadManagerUI</code> インタフェースは、ダウンロードマネージャのためのユーザインタフェースを実装するために利用されます。標準のダウンロードマネージャのユーザインタフェースを置き換えたい場合は、このインタフェースを実装してください。</p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/downloads/public/nsIDownloadManagerUI.idl" rel="custom">toolkit/components/downloads/public/nsIDownloadManagerUI.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#getAttention.28.29">getAttention</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#show.28.29">show</a>([optional] in <a href="ja/NsIInterfaceRequestor">nsIInterfaceRequestor</a> aWindowContext, [optional] in unsigned long aID, [optional] in short aReason);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>visible</code></td>
+ <td><code>boolean</code></td>
+ <td>読み取り専用。ダウンロードマネージャのユーザインタフェースが開かれている場合は <code>true</code>、そうでなければ <code>false</code> を返します。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.AE.9A.E6.95.B0" name=".E5.AE.9A.E6.95.B0">定数</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">定数</td>
+ <td class="header">値</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>REASON_USER_INTERACTED</code></td>
+ <td>0</td>
+ <td>ダウンロードマネージャのユーザインタフェースを開く際、この値は、ユーザのリクエストによって開かれたかどうかを示します。</td>
+ </tr>
+ <tr>
+ <td><code>REASON_NEW_DOWNLOAD</code></td>
+ <td>1</td>
+ <td>ダウンロードマネージャのユーザインタフェースを開く際、この値は、新たなダウンロードが開始されたために開かれたどうかを示します。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="getAttention.28.29" name="getAttention.28.29">getAttention()</h3>
+<p>ダウンロードマネージャのユーザインタフェースがすでに開かれている場合、そこに注意を促します。</p>
+<pre class="eval"> void getAttention();
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<p>None.</p>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96">投げられる例外</h6>
+<dl>
+ <dt>
+ <code>NS_ERROR_UNEXPECTED</code></dt>
+ <dd>
+ ユーザインタフェースが開かれていません。</dd>
+</dl>
+<h3 id="show.28.29" name="show.28.29">show()</h3>
+<p>ダウンロードマネージャのユーザインタフェースをユーザに表示します。</p>
+<pre class="eval"> void show(
+ [optional] in nsIInterfaceRequestor aWindowContext,
+ [optional] in unsigned long aID,
+ [optional] in short aReason
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aWindowContext&lt;/tt&gt;</dt>
+ <dd>
+ ユーザインタフェースを表示するための親ウィンドウコンテキスト。この情報を使えば、ダウンロードマネージャを同じウィンドウのタブに、親としておくことができます。</dd>
+ <dt>
+ &lt;tt&gt;aID&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードマネージャのユーザインタフェースを開く際、事前に選択されるダウンロードの ID。</dd>
+ <dt>
+ &lt;tt&gt;aReason&lt;/tt&gt;</dt>
+ <dd>
+ ユーザインタフェースが表示された理由を示す <a href="#Constants">定数</a> のいずれか。</dd>
+</dl>
+<h3 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h3>
+<ul>
+ <li><a href="ja/The_Download_Manager_schema">The Download Manager schema</a></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadprogresslistener/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadprogresslistener/index.html
new file mode 100644
index 0000000000..e1878800fc
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidownloadprogresslistener/index.html
@@ -0,0 +1,295 @@
+---
+title: nsIDownloadProgressListener
+slug: >-
+ Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDownloadProgressListener
+tags:
+ - Firefox 3
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDownloadProgressListener
+---
+<p><code>nsIDownloadProgressListener</code> インタフェースは、アプリケーションや拡張機能が、ダウンロードマネージャによって処理されているダウンロードの状況を監視する方法を提供します。開発者は、自分のコードでこのインタフェースを実装し、<code><a href="ja/NsIDownloadManager">nsIDownloadManager</a></code> の <code><a href="ja/NsIDownloadManager#addListener.28.29">addListener()</a></code> 関数を呼び出すだけで、監視を開始できます。</p>
+<p>ダウンロードマネージャの状況を監視する必要がなくなったら、<code>nsIDownloadManager</code> の <code><a href="ja/NsIDownloadManager#removeListener.28.29">removeListener()</a></code> 関数を呼び出せば監視が中止されます。</p>
+<p>ダウンロードの状況に変更があると、ダウンロードマネージャによって、ここで説明されているメソッドが呼び出されるので、必要なタイミングで処理を行えます。</p>
+<p>このインタフェースの挙動は、<code><a href="ja/NsIWebProgress">nsIWebProgress</a></code> インタフェースと非常に似ています。</p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/downloads/public/nsIDownloadProgressListener.idl" rel="custom">toolkit/components/downloads/public/nsIDownloadProgressListener.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#onDownloadStateChange.28.29">onDownloadStateChange</a>(in short aState, in nsIDownload aDownload)</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#onProgressChange.28.29">onProgressChange</a>(in <a href="ja/NsIWebProgress">nsIWebProgress</a> aWebProgress, in <a href="ja/NsIRequest">nsIRequest</a> aRequest, in long long aCurSelfProgress, in long long aMaxSelfProgress, in long long aCurTotalProgress, in long long aMaxTotalProgress, in <a href="ja/NsIDownload">nsIDownload</a> aDownload)</code></td>
+ </tr>
+ <tr>
+ <td><span class="icon-only-inline" title="これは廃止されたAPIであり、今後の動作は保障されていません。ご注意下さい。"><i class="icon-trash"> </i></span> <code>void <a href="#onStatusChange.28.29">onStatusChange</a>(in <a href="ja/NsIWebProgress">nsIWebProgress</a> aWebProgress, in <a href="ja/NsIRequest">nsIRequest</a> aRequest, in <a href="ja/Nsresult">nsresult</a> aStatus, in <a href="ja/Wstring">wstring</a> aMessage, in <a href="ja/NsIDownload">nsIDownload</a> aDownload)</code></td>
+ </tr>
+ <tr>
+ <td><span class="icon-only-inline" title="これは廃止されたAPIであり、今後の動作は保障されていません。ご注意下さい。"><i class="icon-trash"> </i></span> <code>void <a href="#onLocationChange.28.29">onLocationChange</a>(in <a href="ja/NsIWebProgress">nsIWebProgress</a> aWebProgress, in <a href="ja/NsIRequest">nsIRequest</a> aRequest, in <a href="ja/NsIURI">nsIURI</a> aLocation, in <a href="ja/NsIDownload">nsIDownload</a> aDownload)</code>x</td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#onSecurityChange.28.29">onSecurityChange</a>(in <a href="ja/NsIWebProgress">nsIWebProgress</a> aWebProgress, in <a href="ja/NsIRequest">nsIRequest</a> aRequest, in unsigned long aState, in <a href="ja/NsIDownload">nsIDownload</a> aDownload)</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>document</code></td>
+ <td><code><a href="ja/NsIDOMDocument">nsIDOMDocument</a></code></td>
+ <td>ダウンロードマネージャのウィンドウを表すダウンロードドキュメント。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="onDownloadStateChange.28.29" name="onDownloadStateChange.28.29">onDownloadStateChange()</h3>
+<p>特定のダウンロードの状況に変更があったときに呼び出されます。</p>
+<pre class="eval"> void onDownloadStateChange(
+ in short aState,
+ in nsIDownload aDownload
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aState&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードの変更前の状況。<a href="ja/NsIDownloadManager#Constants">取り得る値の一覧</a> は <code><a href="ja/NsIDownloadManager">nsIDownloadManager</a></code> を参照してください。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aDownload&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロード状況に変更があったファイルを表す <code><a href="ja/NsIDownload">nsIDownload</a></code> オブジェクト。このオブジェクトから、ダウンロードの変更後の状況を取得できます。</dd>
+</dl>
+<h3 id="onStateChange.28.29" name="onStateChange.28.29">onStateChange()</h3>
+<p>特定のダウンロードの状況に変更があったときに呼び出されます。</p>
+<pre class="eval"> void onStateChange(
+ in nsIWebProgress aWebProgress,
+ in nsIRequest aRequest,
+ in unsigned long aStateFlags,
+ in nsresult aStatus,
+ in nsIDownload aDownload
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aWebProgress&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードを監視するためにダウンロードマネージャによって利用される <code><a href="ja/NsIWebProgress">nsIWebProgress</a></code> インスタンス。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aRequest&lt;/tt&gt;</dt>
+ <dd>
+ 状況を変更した <code><a href="ja/NsIChannel">nsIChannel</a></code>。この引数は <code>NULL</code> を取ることができません。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aStateFlags&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードの変更後の状況を示すフラグ。この値は、<code><a href="ja/NsIWebProgressListener">nsIWebProgressListener</a></code> の記事に書かれている <a href="ja/NsIWebProgressListener#.E7.8A.B6.E6.B3.81.E9.81.B7.E7.A7.BB.E3.83.95.E3.83.A9.E3.82.B0">状況遷移フラグ</a> のいずれかの組み合わせになります。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aStatus&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードの変更後の状況に関する情報。詳しくは <code>nsIWebProgressListener</code>]] の [[nsIWebProgressListener#onStateChange|<code>onStateChange()</code> を参照してください。これは <code><a href="ja/NsIDownloadManager#Constants">nsIDownloadManager</a></code> の状況を示す定数 のいずれかになる場合もあります。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aDownload&lt;/tt&gt;</dt>
+ <dd>
+ 状況が変更されたダウンロード。</dd>
+</dl>
+<h3 id="onProgressChange.28.29" name="onProgressChange.28.29">onProgressChange()</h3>
+<p>ダウンロードの進捗レベルがダウンロードによって変更されたときに呼び出されます。</p>
+<pre class="eval"> void onProgressChange(
+ in nsIWebProgress aWebProgress,
+ in nsIRequest aRequest,
+ in long long aCurSelfProgress,
+ in long long aMaxSelfProgress,
+ in long long aCurTotalProgress,
+ in long long aMaxTotalProgress,
+ in nsIDownload aDownload
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aWebProgress&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードを監視するためにダウンロードマネージャによって利用される <code><a href="ja/NsIWebProgress">nsIWebProgress</a></code> インスタンス。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aRequest&lt;/tt&gt;</dt>
+ <dd>
+ 状況を変更した <code><a href="ja/NsIChannel">nsIChannel</a></code>。この引数は <code>NULL</code> を取ることができません。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aCurSelfProgress&lt;/tt&gt;</dt>
+ <dd>
+ &lt;tt&gt;aDownload&lt;/tt&gt; で指定されたダウンロードに対して行われた、現在の進捗の量。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aMaxSelfProgress&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロード完了を示すために達成しなければならない、個別進捗状況の値。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aCurTotalProgress&lt;/tt&gt;</dt>
+ <dd>
+ すべてのダウンロードに対して行われた、現在の進捗の量。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aMaxTotalProgress&lt;/tt&gt;</dt>
+ <dd>
+ すべてのダウンロード完了を示すために達成しなければならない、合計進捗状況の値。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aDownload&lt;/tt&gt;</dt>
+ <dd>
+ 進捗状況が &lt;tt&gt;aCurSelfProgress&lt;/tt&gt; と &lt;tt&gt;aMaxSelfProgress&lt;/tt&gt; の引数によって表される <code><a href="ja/NsIDownload">nsIDownload</a></code> オブジェクト。</dd>
+</dl>
+<h3 id="onStatusChange.28.29" name="onStatusChange.28.29">onStatusChange()</h3>
+<p>ダウンロードのリクエストの状況に変更があったときに呼び出されます。受け取る状況メッセージは、ユーザに直接表示することを意図したものです。</p>
+<div class="warning">
+ <b>警告:</b> このメソッドは Firefox 3 (Gecko 1.9) で削除されました。それ以前のバージョンでも、このメソッドが呼び出されているコードはありません。</div>
+<pre class="eval"> void onStatusChange(
+ in nsIWebProgress aWebProgress,
+ in nsIRequest aRequest,
+ in nsresult aStatus,
+ in wstring aMessage,
+ in nsIDownload aDownload
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aWebProgress&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードを監視するためにダウンロードマネージャによって利用される <code><a href="ja/NsIWebProgress">nsIWebProgress</a></code> インスタンス。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;nsIChannel&lt;/tt&gt;</dt>
+ <dd>
+ 状況を変更した <code><a href="ja/NsIChannel">nsIChannel</a></code>。この引数は <code>NULL</code> を取ることができません。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aStatus&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードの変更後の状況に関する情報。詳しくは <code>nsIWebProgressListener</code>]] の [[nsIWebProgressListener#onStateChange|<code>onStateChange()</code> を参照してください。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aMessage&lt;/tt&gt;</dt>
+ <dd>
+ 画面上に表示されることを意図した、ユーザが読める形での状況メッセージ</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aDownload&lt;/tt&gt;</dt>
+ <dd>
+ 状況が変更されたダウンロード。</dd>
+</dl>
+<h3 id="onLocationChange.28.29" name="onLocationChange.28.29">onLocationChange()</h3>
+<div class="warning">
+ <b>警告:</b> このメソッドは Firefox 3 (Gecko 1.9) で削除されました。それ以前のバージョンでも、このメソッドが呼び出されているコードはありません。</div>
+<pre class="eval"> void onLocationChange(
+ in nsIWebProgress aWebProgress,
+ in nsIRequest aRequest,
+ in nsIURI aLocation,
+ in nsIDownload aDownload
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aWebProgress&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードを監視するためにダウンロードマネージャによって利用される <code><a href="ja/NsIWebProgress">nsIWebProgress</a></code> インスタンス。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aRequest&lt;/tt&gt;</dt>
+ <dd>
+ 状況を変更した <code><a href="ja/NsIChannel">nsIChannel</a></code>。この引数は <code>NULL</code> を取ることができません。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aLocation&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロード中のファイルの URI。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aDownload&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロード中のファイルを表す <code><a href="ja/NsIDownload">nsIDownload</a></code> オブジェクト。</dd>
+</dl>
+<h3 id="onSecurityChange.28.29" name="onSecurityChange.28.29">onSecurityChange()</h3>
+<p>ダウンロード中に使われるセキュリティレベルが変更されたときに呼び出されます。例えば、最初のリクエストが HTTPS を通じて行われ、その後ダウンロードが HTTP に変わった場合、この関数が呼び出され、その遷移を通知します。</p>
+<pre class="eval"> void onSecurityChange(
+ in nsIWebProgress aWebProgress,
+ in nsIRequest aRequest,
+ in unsigned long aState,
+ in nsIDownload aDownload
+ );
+
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_6" name=".E5.BC.95.E6.95.B0_6">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aWebProgress&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードを監視するためにダウンロードマネージャによって利用される <code><a href="ja/NsIWebProgress">nsIWebProgress</a></code> インスタンス。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aRequest&lt;/tt&gt;</dt>
+ <dd>
+ 状況を変更した <code><a href="ja/NsIChannel">nsIChannel</a></code>。この引数は <code>NULL</code> を取ることができません。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aState&lt;/tt&gt;</dt>
+ <dd>
+ ダウンロードの変更後の状況。<a href="ja/NsIDownloadManager#Constants">取り得る値の一覧</a> は <code><a href="ja/NsIDownloadManager">nsIDownloadManager</a></code> を参照してください。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aDownload&lt;/tt&gt;</dt>
+ <dd>
+ セキュリティレベルが変更されたダウンロード。</dd>
+</dl>
+<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2>
+<p><code><a href="ja/NsIDownloadManager">nsIDownloadManager</a></code>, <code><a href="ja/NsIDownload">nsIDownload</a></code>, <code><a href="ja/NsIWebProgressListener">nsIWebProgressListener</a></code></p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidragservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidragservice/index.html
new file mode 100644
index 0000000000..66878aa9ec
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsidragservice/index.html
@@ -0,0 +1,227 @@
+---
+title: nsIDragService
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIDragService
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIDragService
+---
+<div class="blockIndicator draft">
+ <p><strong>草案</strong><br>
+ このページは完成していません。</p>
+
+</div>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/public/nsIDragService.idl" rel="custom">widget/public/nsIDragService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>継承元: <a href="ja/NsISupports">nsISupports</a></p>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#invokeDragSession.28.29">invokeDragSession</a>(in <a href="ja/NsIDOMNode">nsIDOMNode</a> aDOMNode, in <a href="ja/NsISupportsArray">nsISupportsArray</a> aTransferables, in <a href="ja/NsIScriptableRegion">nsIScriptableRegion</a> aRegion, in unsigned long aActionType);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#invokeDragSessionWithImage.28.29">invokeDragSessionWithImage</a>(in <a href="ja/NsIDOMNode">nsIDOMNode</a> aDOMNode, in <a href="ja/NsISupportsArray">nsISupportsArray</a> aTransferableArray, in <a href="ja/NsIScriptableRegion">nsIScriptableRegion</a> aRegion, in unsigned long aActionType,in <a href="ja/NsIDOMNode">nsIDOMNode</a> aImage, in long aImageX, in long aImageY, in <a href="ja/NsIDOMMouseEvent">nsIDOMMouseEvent</a> aDragEvent);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#invokeDragSessionWithSelection.28.29">invokeDragSessionWithSelection</a>(in <a href="ja/NsISelection">nsISelection</a> aSelection, in <a href="ja/NsISupportsArray">nsISupportsArray</a> aTransferableArray, in unsigned long aActionType, in <a href="ja/NsIDOMMouseEvent">nsIDOMMouseEvent</a> aDragEvent);</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIDragSession <a href="#getCurrentSession.28.29">getCurrentSession</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>void<a href="#startDragSession.28.29">startDragSession</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#endDragSession.28.29">endDragSession</a>(in <a href="ja/PRBool">PRBool</a> aDoneDrag);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#fireDragEventAtSource.28.29">fireDragEventAtSource</a>(in unsigned long aMsg);</code> </td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.AE.9A.E6.95.B0" name=".E5.AE.9A.E6.95.B0">定数</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">定数</td>
+ <td class="header">値</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>DRAGDROP_ACTION_NONE</code></td>
+ <td>0</td>
+ <td><code>LONG</code> データ形式。</td>
+ </tr>
+ <tr>
+ <td><code>DRAGDROP_ACTION_COPY</code></td>
+ <td>1</td>
+ <td><code>LONG</code> データ形式。</td>
+ </tr>
+ <tr>
+ <td><code>DRAGDROP_ACTION_MOVE</code></td>
+ <td>2</td>
+ <td><code>LONG</code> データ形式。</td>
+ </tr>
+ <tr>
+ <td><code>DRAGDROP_ACTION_LINK</code></td>
+ <td>3</td>
+ <td><code>LONG</code> データ形式。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="invokeDragSession.28.29" name="invokeDragSession.28.29">invokeDragSession()</h3>
+<p>移転可能なオブジェクトの配列を伴った、モーダルなドラッグセッションを開始します。</p>
+<pre class="eval"> void invokeDragSession (
+ in nsIDOMNode aDOMNode,
+ in nsISupportsArray aTransferables,
+ in nsIScriptableRegion aRegion,
+ in unsigned long aActionType
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aDOMNode&lt;/tt&gt;</dt>
+ <dd>
+  </dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aTransferables&lt;/tt&gt;</dt>
+ <dd>
+ ドラッグされる移転可能なオブジェクトの配列。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aRegion&lt;/tt&gt;</dt>
+ <dd>
+ カーソルフィードバックの矩形を含む範囲。ウィンドウ座標で指定。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aActionType&lt;/tt&gt;</dt>
+ <dd>
+ コピー、移動、リンクのうち、いずれが可能かを指定。</dd>
+</dl>
+<h3 id="invokeDragSessionWithImage.28.29" name="invokeDragSessionWithImage.28.29">invokeDragSessionWithImage()</h3>
+<p>画像を利用して、モーダルなドラッグセッションを開始します。最初 4 つの引数は <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/invokeDragSession" title="">invokeDragSession</a></code> と同じです。</p>
+<p><code>aImage</code> 引数を使って独自の画像を指定することができます。画像が指定された場合、<code>aImageX</code> と <code>aImageY</code> 引数で、その画像の中でカーソルが位置するオフセットを指定できます。つまり、画像が表示されたときに、指定された量だけ左上に画像がずらされて、画像内のその位置にカーソルが現れます。<code>aImage</code> が <code>null</code> の場合、<code>aImageX</code> と <code>aImageY</code> は使われず、代わりにソースノードである <code>aDOMNode</code> から画像が判別され、オフセットは自動計算されます。このため、画像の初期位置は、要素が位置するのと同じ画面上の位置になります。ノードはドキュメント内になくてはなりません。</p>
+<p>今のところ、サポートされている画像はすべて DOM ノードです。これが HTML <code>&lt;image&gt;</code> あるいは <code>&lt;canvas&gt;</code> 要素の場合、ドラッグに付随する画像はその画像データから取得されます。要素がドキュメント上にある場合は、画像は表示されているサイズで表示されます。ドキュメント上にない場合は、実際のサイズで表示されます。他の種類の要素については、現在表示されているのと同じ方法で、画面外のバッファとして表示されます。ドキュメント上の選択範囲はドラッグ中非表示となります。画像の位置を計算するのに、イベントの現在の画面座標が必要となるため、<code>aDragEvent</code> は必ず指定する必要があります。</p>
+<pre class="eval"> void invokeDragSessionWithImage(in nsIDOMNode aDOMNode,
+ in nsISupportsArray aTransferableArray,
+ in nsIScriptableRegion aRegion,
+ in unsigned long aActionType,
+ in nsIDOMNode aImage,
+ in long aImageX,
+ in long aImageY,
+ in nsIDOMMouseEvent aDragEvent
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aImage&lt;/tt&gt;</dt>
+ <dd>
+ 画像オブジェクト</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aImageX&lt;/tt&gt;</dt>
+ <dd>
+ 画像の X 座標</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aImageY&lt;/tt&gt;</dt>
+ <dd>
+ 画像の Y 座標</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aDragEvent&lt;/tt&gt;</dt>
+ <dd>
+  </dd>
+</dl>
+<h3 id="invokeDragSessionWithSelection.28.29" name="invokeDragSessionWithSelection.28.29">invokeDragSessionWithSelection()</h3>
+<p>選択範囲をドラッグ画像として利用して、モーダルなドラッグセッションを開始します。画像の位置を計算するのに、イベントの現在の画面座標が必要となるため、<code>aDragEvent</code> は必ず指定する必要があります。</p>
+<pre class="eval"> void invokeDragSessionWithSelection(
+ in nsISelection aSelection,
+ in nsISupportsArray aTransferableArray,
+ in unsigned long aActionType,
+ in nsIDOMMouseEvent aDragEvent
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aSelection&lt;/tt&gt;</dt>
+ <dd>
+  </dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aTransferableArray&lt;/tt&gt;</dt>
+ <dd>
+  </dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aActionType&lt;/tt&gt;</dt>
+ <dd>
+ コピー、移動、リンクのうち、いずれが可能かを指定。</dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;aDragEvent&lt;/tt&gt;</dt>
+ <dd>
+  </dd>
+</dl>
+<h3 id="getCurrentSession.28.29" name="getCurrentSession.28.29">getCurrentSession()</h3>
+<p>現在のドラッグセッションを返します。</p>
+<pre class="eval"> nsIDragSession getCurrentSession ( ) ;
+</pre>
+<h3 id="startDragSession.28.29" name="startDragSession.28.29">startDragSession()</h3>
+<p>ドラッグサービスにドラッグセッションを開始するよう伝えます。これは外部でドラッグが発生したときに呼び出されます。</p>
+<pre class="eval"> void startDragSession ( ) ;
+</pre>
+<h3 id="endDragSession.28.29" name="endDragSession.28.29">endDragSession()</h3>
+<p>ドラッグサービスにドラッグセッションを終了するよう伝えます。これは外部でドラッグが発生したときに呼び出されます。</p>
+<pre class="eval"> void endDragSession (
+ in PRBool aDoneDrag
+ ) ;
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aDoneDrag &lt;/tt&gt; </dt>
+ <dd>
+ <code>aDoneDrag</code> が <code>true</code> の場合、ドラッグはすでに終了しています。そうでない場合、ドラッグはウィンドウを離れたところです。この引数は Firefox 3 以前のバージョンには存在しません。</dd>
+</dl>
+<h3 id="fireDragEventAtSource.28.29" name="fireDragEventAtSource.28.29">fireDragEventAtSource()</h3>
+<p>ドラッグのソースに対してドラッグイベントを発生させます。このメソッドは Firefox 3 以降で利用可能です。</p>
+<pre class="eval"> void fireDragEventAtSource (
+ in unsigned long aMsg
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aMsg &lt;/tt&gt;</dt>
+ <dd>
+  </dd>
+</dl>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsieffectivetldservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsieffectivetldservice/index.html
new file mode 100644
index 0000000000..3e4a0adab5
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsieffectivetldservice/index.html
@@ -0,0 +1,173 @@
+---
+title: nsIEffectiveTLDService
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIEffectiveTLDService
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIEffectiveTLDService
+---
+<p><code>nsIEffectiveTLDService</code>はホスト名を検証し、それがTLDであるように見えるもっとも長い部分を決定します。URIのベースドメインを決定する役割も持ちます。</p>
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/dns/public/nsIEffectiveTLDService.idl" rel="custom">netwerk/dns/public/nsIEffectiveTLDService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p>
+<p>実装: @mozilla.org/network/effective-tld-service;1</p>
+<p>このサービスを使うには:</p>
+<pre>var eTLDService = Components.classes["@mozilla.org/network/effective-tld-service;1"]
+ .getService(Components.interfaces.nsIEffectiveTLDService);
+</pre>
+<h2 id="メソッドの概要">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code><a href="/ja/ACString" title="ja/ACString">ACString</a> <a href="#getPublicSuffix.28.29">getPublicSuffix</a>(in <a href="/en/XPCOM_Interface_Reference/nsIURI" title="en/XPCOM Interface Reference/nsIURI">nsIURI</a> aURI);</code></td>
+ </tr>
+ <tr>
+ <td><code><a href="/ja/ACString" title="ja/ACString">ACString</a> <a href="#getBaseDomain.28.29">getBaseDomain</a>(in <a href="/en/XPCOM_Interface_Reference/nsIURI" title="en/XPCOM Interface Reference/nsIURI">nsIURI</a> aURI, [optional] in <a href="/en/PRUint32" title="en/PRUint32">PRUint32</a> aAdditionalParts);</code></td>
+ </tr>
+ <tr>
+ <td><code><a href="/ja/ACString" title="ja/ACString">ACString</a> <a href="#getPublicSuffixFromHost.28.29">getPublicSuffixFromHost</a>(in <a href="/en/AUTF8String" title="en/AUTF8String">AUTF8String</a> aHost);</code></td>
+ </tr>
+ <tr>
+ <td><code><a href="/ja/ACString" title="ja/ACString ">ACString</a> <a href="#getBaseDomainFromHost.28.29">getBaseDomainFromHost</a>(in <a href="/en/AUTF8String" title="en/AUTF8String">AUTF8String</a> aHost, [optional] in <a href="/en/PRUint32" title="en/PRUint32">PRUint32</a> aAdditionalParts);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="メソッド">メソッド</h2>
+<h3 id="getPublicSuffix.28.29" name="getPublicSuffix.28.29">getPublicSuffix()</h3>
+<p>URIのパブリック接尾辞を返します。パブリック接尾辞はその下に個々のドメインが登録される最高位レベルのドメインです。パブリック接尾辞はひとつまたはそれ以上のドットを含みます。例えば、<code>www.bbc.co.uk</code>のパブリック接尾辞は<code>co.uk</code>になります、なぜならば<code>.uk</code> TLDはその下にドメインを登録することを許していないからです。その他の例として、<code>developer.mozilla.org</code>では<code>org</code>になります。</p>
+<pre>ACString getPublicSuffix(
+ in nsIURI aURI
+);
+</pre>
+<h6 id="引数">引数</h6>
+<dl>
+ <dt>
+ aURI</dt>
+ <dd>
+ 解析するURI</dd>
+</dl>
+<p>戻り値</p>
+<p>パブリック接尾辞を含む<a href="/ja/ACString" title="ja/ACString">ACString</a>オブジェクト</p>
+<h6 id="例外">例外</h6>
+<dl>
+ <dt>
+ NS_ERROR_INVALID_ARG</dt>
+ <dd>
+ この例外は<code>aURI</code>に含まれるホスト名が空であった場合に発生します。</dd>
+ <dt>
+ NS_ERROR_HOST_IS_IP_ADDRESS</dt>
+ <dd>
+ この例外は<code>aURI</code>が数値、IPv4アドレス、IPv6アドレスのいずれかであった場合に発生します。</dd>
+</dl>
+<h3 id="getBaseDomain.28.29" name="getBaseDomain.28.29">getBaseDomain()</h3>
+<p>URIのベースドメインを返します。ベースドメインは、パブリック接尾辞に指定された数の追加ドメイン名を追加したものです。</p>
+<pre>ACString getBaseDomain(
+ in <a>nsIURI</a> aURI
+ [optional] in <a title="en/PRUint32">PRUint32</a> aAdditionalParts
+);
+</pre>
+<h6 id="引数_2">引数</h6>
+<dl>
+ <dt>
+ aURI</dt>
+ <dd>
+ 解析するURI</dd>
+ <dt>
+ aAdditionalParts</dt>
+ <dd>
+ パブリック接尾辞に追加するドメイン名の数</dd>
+</dl>
+<h6 id="戻り値">戻り値</h6>
+<p>ベースドメインを含む<a href="/en/ACString" title="en/ACString">ACString</a>オブジェクト(パブリック接尾辞に、追加パート部分を足したもの)</p>
+<h6 id="例外_2">例外</h6>
+<dl>
+ <dt>
+ NS_ERROR_INVALID_ARG</dt>
+ <dd>
+ この例外は<code>aURI</code>が空であった場合に発生します。</dd>
+ <dt>
+ NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS</dt>
+ <dd>
+ この例外は<code>aAdditionalParts</code>で指定された値に対してサブドメインが不足する場合に発生します。</dd>
+ <dt>
+ NS_ERROR_HOST_IS_IP_ADDRESS</dt>
+ <dd>
+ この例外は<code>aURI</code>が数値、IPv4アドレス、IPv6アドレスのいずれかであった場合に発生します。</dd>
+</dl>
+<h3 id="getPublicSuffixFromHost.28.29" name="getPublicSuffixFromHost.28.29">getPublicSuffixFromHost()</h3>
+<p>ホスト文字列のパブリック接尾辞を返します。さもなくば機能的には<a href="#getPublicSuffix()">getPublicSuffix()</a>と同じです。</p>
+<pre>ACString getPublicSuffixFromHost(
+ in AUTF8String aHost
+);
+</pre>
+<h6 id="引数_3">引数</h6>
+<dl>
+ <dt>
+ aHost</dt>
+ <dd>
+ 解析されるホスト名</dd>
+</dl>
+<h6 id="戻り値_2">戻り値</h6>
+<p>パブリック接尾辞を含む<a href="/en/ACString" title="en/ACString">ACString</a>オブジェクト</p>
+<h6 id="例外_3">例外</h6>
+<dl>
+ <dt>
+ NS_ERROR_INVALID_ARG</dt>
+ <dd>
+ この例外は<code>aHost</code>が空であった場合に発生します。</dd>
+ <dt>
+ NS_ERROR_UNEXPECTED</dt>
+ <dd>
+ この例外は<code>aHost</code>がURI中に含まれることを許可されない文字を含む場合に<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIIDNService" title="">nsIIDNService</a></code>内のNormalize()メソッドにより発生します。</dd>
+</dl>
+<h3 id="getBaseDomainFromHost.28.29" name="getBaseDomainFromHost.28.29">getBaseDomainFromHost()</h3>
+<p>ホスト名のベースドメイン部分を返します。さもなくば機能的には<a href="#getBaseDomain()">getBaseDomain()</a>と同じです。</p>
+<pre>ACString getBaseDomainFromHost(
+ in AUTF8String aHost,
+ [optional] in PRUint32 aAdditionalParts
+);
+</pre>
+<h6 id="引数_4">引数</h6>
+<dl>
+ <dt>
+ aHost</dt>
+ <dd>
+ 解析されるホスト名</dd>
+ <dt>
+ aAdditionalParts</dt>
+ <dd>
+ パブリック接尾辞に追加するドメイン名の数</dd>
+</dl>
+<h6 id="戻り値_3">戻り値</h6>
+<p>ベースドメインを含む<a href="/en/ACString" title="en/ACString">ACString</a>オブジェクト(パブリック接尾辞に、追加パート部分を足したもの)</p>
+<h6 id="例外_4">例外</h6>
+<dl>
+ <dt>
+ NS_ERROR_INVALID_ARG</dt>
+ <dd>
+ aHostが空であった場合に発生します。</dd>
+ <dt>
+ NS_ERROR_UNEXPECTED</dt>
+ <dd>
+ この例外は<code>aHost</code>がURI中に含まれることを許可されない文字を含む場合に<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIIDNService" title="">nsIIDNService</a></code>内のNormalize()メソッドにより発生します。</dd>
+ <dt>
+ NS_ERROR_INSUFFICIENT_DOMAIN_LEVELS</dt>
+ <dd>
+ この例外は<code>aAdditionalParts</code>で指定された値に対してサブドメインが不足する場合に発生します。</dd>
+ <dt>
+ NS_ERROR_HOST_IS_IP_ADDRESS</dt>
+ <dd>
+ この例外は<code>aHost</code>が数値、IPv4アドレス、IPv6アドレスのいずれかであった場合に発生します。</dd>
+</dl>
+<h3 id="言及">言及</h3>
+<p>全ての戻り値はASCII/ACEでエンコーディングされ、<a class="external" href="http://tools.ietf.org/html/rfc3454" title="http://tools.ietf.org/html/rfc3454">RFC 3454</a>に沿っています。</p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsienumerator/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsienumerator/index.html
new file mode 100644
index 0000000000..f90f1ef647
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsienumerator/index.html
@@ -0,0 +1,40 @@
+---
+title: nsIEnumerator
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIEnumerator
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+ - XPCOM Interface Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIEnumerator
+---
+<div>
+<div class="blockIndicator obsolete obsoleteHeader">
+<p><strong>廃止</strong><br>
+ この機能は廃止されました。一部のブラウザーでは引き続き機能する可能性がありますが、いつでも削除できるため使用は推奨されません。使用しないようにして下さい。</p>
+</div>
+</div>
+
+<p><a href="http://lxr.mozilla.org/mozilla/source/xpcom/ds/nsIEnumerator.idl">nsIEnumerator.idl</a></p>
+
+<div class="warning"><strong>警告:これは壊れたインターフェイスです</strong>;<strong>必要がない限り使用しないでください。列挙子に一般的に使用されるインターフェイスは</strong> <a href="/en-US/docs/XPCOM_Interface_Reference/nsISimpleEnumerator" title="nsISimpleEnumerator">nsISimpleEnumerator</a> です。</div>
+
+<h2 id="使用例">使用例</h2>
+
+<pre class="brush:js notranslate">var iter = --------();
+try {
+ iter.first();
+ do {
+ var data = iter.currentItem();
+ if( data instanceof Ci.nsI------ ) {
+ ...
+ ...
+ }
+ iter.next();
+ } while( Components.lastResult == 0 );
+} catch(e) {}
+</pre>
+
+<p><a href="http://www.google.com/search?&amp;q=warren%20harris%2004/21/1999%2016:11:03">この件に関するいくつかのメモについては、1999-04-21 16:11:03の "Warren Harris" からのEメールを検索して下さい。</a></p>
+
+<p><a href="http://www.geocrawler.com/archives/3/137/1999/4/150">このバージョン</a> は上手く機能していない様なので、 Google キャッシュを使用する必要があるかもしれません。</p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeed/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeed/index.html
new file mode 100644
index 0000000000..639be1b844
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeed/index.html
@@ -0,0 +1,125 @@
+---
+title: nsIFeed
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeed
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeed
+---
+<p><code>nsIFeed</code> インターフェースは単一の Atom か RSS(Really Simple Syndication) ニュースフィードに相当します。アイテムかフィードのエントリにアクセスするのと同じように、フィードに関する情報を提供する属性を含んでいます。</p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeed.idl" rel="custom">toolkit/components/feeds/public/nsIFeed.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div>
+</div>
+<p>継承元: <code><a href="ja/NsIFeedContainer">nsIFeedContainer</a></code></p>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>cloud</code></td>
+ <td><code><a href="ja/NsIWritablePropertyBag2">nsIWritablePropertyBag2</a></code></td>
+ <td>フィードの <code>cloud</code> 属性が何なのか確証を持っている人は誰もいません。XML-RPC か SOAP サービスと関係があるように推測されます。</td>
+ </tr>
+ <tr>
+ <td><code>enclosureCount</code></td>
+ <td><code>long</code></td>
+ <td>フィードに関連づけられたエンクロージャの数を表します。</td>
+ </tr>
+ <tr>
+ <td><code>generator</code></td>
+ <td><code><a href="ja/NsIFeedGenerator">nsIFeedGenerator</a></code></td>
+ <td>フィードを生成したソフトウェアを記述します。</td>
+ </tr>
+ <tr>
+ <td><code>image</code></td>
+ <td><code><a href="ja/NsIWritablePropertyBag2">nsIWritablePropertyBag2</a></code></td>
+ <td>RSS 2 で定義された画像の URL とメターデータを提供します。</td>
+ </tr>
+ <tr>
+ <td><code>items</code></td>
+ <td><code><a href="ja/NsIArray">nsIArray</a></code></td>
+ <td><code><a href="ja/NsIFeedEntry">nsIFeedEntry</a></code> オブジェクトの配列として、アイテムの配列かフィードのエントリを定義します。</td>
+ </tr>
+ <tr>
+ <td><code>skipDays</code></td>
+ <td><code><a href="ja/NsIArray">nsIArray</a></code></td>
+ <td>一週間の中でフィードがフェッチされたくない曜日の配列です。配列のそれぞれのエントリは、週のスキップする曜日の名前です。例えば、月曜日にフェッチをスキップする、フィードが月曜日にフェッチされたくないならこの配列の中に "Monday" と指定します。
+ <div class="note">
+ <b>注意:</b> このフィールドはまれにしか実装されていません</div>
+ </td>
+ </tr>
+ <tr>
+ <td><code>skipHours</code></td>
+ <td><code><a href="ja/NsIArray">nsIArray</a></code></td>
+ <td>一日の中でフェッチすべきでない時間の配列です。時間は、0(真夜中)から 23 (午後11:00)までの整数値で表され、常に UTC を使って表されます。
+ <div class="note">
+ <b>注意:</b> このフィールドはまれにしか実装されていません</div>
+ </td>
+ </tr>
+ <tr>
+ <td><code>subtitle</code></td>
+ <td><code><a href="ja/NsIFeedTextConstruct">nsIFeedTextConstruct</a></code></td>
+ <td>フィードの description と subtitle, 及び適切な拡張に基づいてフィードのサブタイトルを返します。</td>
+ </tr>
+ <tr>
+ <td><code>textInput</code></td>
+ <td><code><a href="ja/NsIWritablePropertyBag2">nsIWritablePropertyBag2</a></code></td>
+ <td>フィードのソースに読者が返信を送ることを可能にするテキストボックスに関する情報。サポートしているアグリゲータはフィードと一緒に表示することができる
+ <div class="note">
+ <b>注意:</b> このフィールドは滅多に使われておらず、多くのアグリゲータと非互換です。</div>
+ </td>
+ </tr>
+ <tr>
+ <td><code>type</code></td>
+ <td><code>long</code></td>
+ <td>フィードが提供するコンテントの種類を表します。取りうる種類の型は:
+ <dl>
+ <dt>
+ <code>TYPE_FEED</code></dt>
+ <dd>
+ 標準のテキストベースのフィード。</dd>
+ </dl>
+ <dl>
+ <dt>
+ <code>TYPE_AUDIO</code></dt>
+ <dd>
+ Podcast のような音声フィード</dd>
+ </dl>
+ <dl>
+ <dt>
+ <code>TYPE_IMAGE</code></dt>
+ <dd>
+ Photocast のような画像フィード</dd>
+ </dl>
+ <dl>
+ <dt>
+ <code>TYPE_VIDEO</code></dt>
+ <dd>
+ Videocast のようなビデオフィード</dd>
+ </dl>
+ <p>
+ <i>
+ この属性は読み込み専用です。</i>
+ </p>
+ <div class="note">
+ <b>注意:</b> これを値のビットマスクと考えるべきです。ある時には、type は一緒に OR された一つ以上の値を含みます。これが Firefox 2 の前または後で起こるかどうかは明確ではありません。</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2>
+<p><a href="ja/NsIFeedContainer">nsIFeedContainer</a></p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedcontainer/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedcontainer/index.html
new file mode 100644
index 0000000000..2450d88d63
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedcontainer/index.html
@@ -0,0 +1,101 @@
+---
+title: nsIFeedContainer
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedContainer
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedContainer
+---
+<p><code>nsIFeedContainer</code> インタフェースはフィード(<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeed" title="">nsIFeed</a></code>) とフィードエントリ(<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedEntry" title="">nsIFeedEntry</a></code>) の両方で使われる標準的なフィールドを提供します。</p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedContainer.idl" rel="custom">toolkit/components/feeds/public/nsIFeedContainer.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedElementBase" title="">nsIFeedElementBase</a></code></p>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code><a href="#normalize.28.29">normalize</a>();</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>authors</code></td>
+ <td><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIArray" title="">nsIArray</a></code></td>
+ <td>フィードあるいはエントリの著者を記述する <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedPerson" title="">nsIFeedPerson</a></code> オブジェクトの配列。</td>
+ </tr>
+ <tr>
+ <td><code>categories</code></td>
+ <td><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIArray" title="">nsIArray</a></code></td>
+ <td>フィードあるいはエントリで見付かったカテゴリの配列。
+ <div class="note">
+ <b>注意:</b> 返される配列は <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedCategory" title="">nsIFeedCategory</a></code> オブジェクトを含むでしょう。ただしそのインタフェースはまだ実装されていません。</div>
+ </td>
+ </tr>
+ <tr>
+ <td><code>contributors</code></td>
+ <td><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIArray" title="">nsIArray</a></code></td>
+ <td>フィードあるいはエントリの貢献者を記述する <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedPerson" title="">nsIFeedPerson</a></code> オブジェクトの配列。</td>
+ </tr>
+ <tr>
+ <td><code>fields</code></td>
+ <td><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWritablePropertyBag2" title="">nsIWritablePropertyBag2</a></code></td>
+ <td>ドキュメントで見つかったすべてのフィールドへのアクセスを提供します。一般的な Atom 及び RSS フィールドは "dc:subject" や "content:encoded" のようないくつかの名前空間づけられた拡張を含めてノーマライズされます。フィードの種類をチェックし特定のフィールドにアクセスすることによって消費者はノーマライズを避けることができます。
+ <p>一般的な名前空間は接頭辞を使うことで <code>get("dc:subject");</code> のようにアクセスできます。接頭辞に関する更なる情報は <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIFeedResult#registerExtensionPrefix()">nsIFeedResult.registerExtensionPrefix()</a></code> を参照してください。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>id</code></td>
+ <td><code><a href="ja/AString">AString</a></code></td>
+ <td>フィードあるいはエントリの識別する文字列。フィード全てがこれらを持つわけでは無いですがメジャーなフィードフォーマットはそれぞれのエントリに ID を持っています。</td>
+ </tr>
+ <tr>
+ <td><code>link</code></td>
+ <td><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code></td>
+ <td>フィードあるいはエントリの第一のリンクを含む URI。</td>
+ </tr>
+ <tr>
+ <td><code>rights</code></td>
+ <td><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedTextConstruct" title="">nsIFeedTextConstruct</a></code></td>
+ <td>フィードあるいはエントリの権利あるいはライセンスのテキスト。</td>
+ </tr>
+ <tr>
+ <td><code>title</code></td>
+ <td><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedTextConstruct" title="">nsIFeedTextConstruct</a></code></td>
+ <td>フィードあるいはエントリのタイトルいくつかのフィードはタイトルがないことに覚えておいてください。またいくつかはタイトルにマークアップを使っており、この属性をデコードするときには注意してください。</td>
+ </tr>
+ <tr>
+ <td><code>updated</code></td>
+ <td><code><a href="ja/AString">AString</a></code></td>
+ <td><a class="external" href="http://www.ietf.org/rfc/rfc0822.txt">RFC822</a> フォーマットでのフィードあるいはエントリが最後に更新された日付を含む文字列。この文字列は JavaScript と mail コードでパース可能です。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="normalize.28.29" name="normalize.28.29">normalize()</h3>
+<p>コンテナのフィールドを便利な属性とを同期させます。</p>
+<pre class="eval"> void normalize();
+</pre>
+<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2>
+<p><a href="ja/NsIURI">nsIURI</a>, <a href="ja/NsIFeedTextConstruct">nsIFeedTextConstruct</a></p>
+<p><span class="comment">Interwiki link</span></p>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedelementbase/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedelementbase/index.html
new file mode 100644
index 0000000000..fe7d1a107f
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedelementbase/index.html
@@ -0,0 +1,46 @@
+---
+title: nsIFeedElementBase
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedElementBase
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedElementBase
+---
+<p><code>nsIFeedElementBase</code> インタフェースは基本となるインタフェースです。</p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedElementBase.idl" rel="custom">toolkit/components/feeds/public/nsIFeedElementBase.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div>
+</div>
+<p>継承元: <code><a href="ja/NsISupports">nsISupports</a></code></p>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>attributes</code></td>
+ <td><code><a href="ja/NsISAXAttributes">nsISAXAttributes</a></code></td>
+ <td>その要素で見つかったすべての属性。ほとんどの派生インタフェースが標準のフィールドに便利なアクセサを提供するので、標準的でないフィールドを探すときにのみ役に立ちます。</td>
+ </tr>
+ <tr>
+ <td><code>baseURI</code></td>
+ <td><code><a href="ja/NsIURI">nsIURI</a></code></td>
+ <td>フィードまたはエントリの base URI。</td>
+ </tr>
+ </tbody>
+</table>
+<p><span class="comment">Interwiki link</span></p>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedentry/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedentry/index.html
new file mode 100644
index 0000000000..ee585a4147
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedentry/index.html
@@ -0,0 +1,68 @@
+---
+title: nsIFeedEntry
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedEntry
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedEntry
+---
+<p><code>nsIFeedEntry</code> インタフェースは RSS か Atom ニュースフィードの単一のエントリを記述し、エントリのデータにアクセスできる属性を提供します。</p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedEntry.idl" rel="custom">toolkit/components/feeds/public/nsIFeedEntry.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div>
+</div>
+<p>継承元: <code><a href="ja/NsIFeedContainer">nsIFeedContainer</a></code></p>
+<h3 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h3>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>content</code></td>
+ <td><code><a href="ja/NsIFeedTextConstruct">nsIFeedTextConstruct</a></code></td>
+ <td>エントリのコンテントの完全なテキスト。これは <code>atom:content</code> 及び/または <code>content:encoded</code> フィールドに由来します。</td>
+ </tr>
+ <tr>
+ <td><code>enclosures</code></td>
+ <td><code><a href="ja/NsIArray">nsIArray</a></code></td>
+ <td>エントリに含まれている全てのエンクロージャの配列。これらは podcast や photocast 等で使われます。</td>
+ </tr>
+ <tr>
+ <td><code>mediaContent</code></td>
+ <td><code><a href="ja/NsIArray">nsIArray</a></code></td>
+ <td>エンクロージャまたはエントリ内でインライン表示されるその他のメディアの全ての配列。</td>
+ </tr>
+ <tr>
+ <td><code>parent</code></td>
+ <td><code><a href="ja/NsIFeedContainer">nsIFeedContainer</a></code></td>
+ <td>エントリの親への参照。フィード (<code><a href="ja/NsIFeed">nsIFeed</a></code>) かもう一つのエントリのどちらかです。</td>
+ </tr>
+ <tr>
+ <td><code>published</code></td>
+ <td><code><a href="ja/AString">AString</a></code></td>
+ <td><a class="external" href="http://www.ietf.org/rfc/rfc0822.txt">RFC822</a> フォーマットでのエントリが配信された日付を表す文字列。この日付は JavaScript と mail コードの両方でパース可能です。</td>
+ </tr>
+ <tr>
+ <td><code>summary</code></td>
+ <td><code><a href="ja/NsIFeedTextConstruct">nsIFeedTextConstruct</a></code></td>
+ <td>フィードエントリのコンテントの要約。これはエントリの description と subtitle, summary, content および適切な拡張を使って生成されます。</td>
+ </tr>
+ </tbody>
+</table>
+<h3 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h3>
+<p><a href="ja/NsIFeedContainer">nsIFeedContainer</a></p>
+<p><span class="comment">Interwiki link</span></p>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedgenerator/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedgenerator/index.html
new file mode 100644
index 0000000000..02e51e7ced
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedgenerator/index.html
@@ -0,0 +1,51 @@
+---
+title: nsIFeedGenerator
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedGenerator
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedGenerator
+---
+<p><code>nsIFeedGenerator</code> インタフェースは RSS か Atom ニュースフィードを生成したソフトウェアを記述します。</p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedGenerator.idl" rel="custom">toolkit/components/feeds/public/nsIFeedGenerator.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div>
+</div>
+<p>継承元: <code><a href="ja/NsIFeedElementBase">nsIFeedElementBase</a></code></p>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>agent</code></td>
+ <td><code><a href="ja/AString">AString</a></code></td>
+ <td>フィードを作成したソフトウェアの名前。</td>
+ </tr>
+ <tr>
+ <td><code>uri</code></td>
+ <td><code><a href="ja/NsIURI">nsIURI</a></code></td>
+ <td>ジェネレータソフトウェアに関連づけられた URI。</td>
+ </tr>
+ <tr>
+ <td><code>version</code></td>
+ <td><code><a href="ja/AString">AString</a></code></td>
+ <td>フィードを作成したジェネレータソフトウェアのバージョンを表す文字列。</td>
+ </tr>
+ </tbody>
+</table>
+<p><span class="comment">Interwiki link</span></p>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedperson/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedperson/index.html
new file mode 100644
index 0000000000..bb0efa8e92
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedperson/index.html
@@ -0,0 +1,53 @@
+---
+title: nsIFeedPerson
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedPerson
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedPerson
+---
+<p><code>nsIFeedPerson</code> インタフェースは RSS または Atom フィードの著者か貢献者を記述します。</p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedPerson.idl" rel="custom">toolkit/components/feeds/public/nsIFeedPerson.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div>
+</div>
+<p>継承元: <a href="ja/NsIFeedElementBase">nsIFeedElementBase</a></p>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>email</code></td>
+ <td><code><a href="ja/AString">AString</a></code></td>
+ <td>その人の email アドレス。</td>
+ </tr>
+ <tr>
+ <td><code>name</code></td>
+ <td><code><a href="ja/AString">AString</a></code></td>
+ <td>その人の名前。</td>
+ </tr>
+ <tr>
+ <td><code>uri</code></td>
+ <td><code><a href="ja/NsIURI">nsIURI</a></code></td>
+ <td>その人に関連づけられた URI。ほとんどの場合、これはその人のホームページです。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2>
+<p><a href="ja/NsIFeedElementBase">nsIFeedElementBase</a></p>
+<p><span class="comment">Interwiki link</span></p>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedprocessor/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedprocessor/index.html
new file mode 100644
index 0000000000..c7b4cb306a
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedprocessor/index.html
@@ -0,0 +1,116 @@
+---
+title: nsIFeedProcessor
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedProcessor
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedProcessor
+---
+<p><code>nsIFeedProcessor</code> インタフェースは RSS または Atom フィードをパースします。これは処理中と処理後にそれらのコンテンツに基づいてコールバックを引き起こします。</p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedProcessor.idl" rel="custom">toolkit/components/feeds/public/nsIFeedProcessor.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIStreamListener" title="">nsIStreamListener</a></code></p>
+<p>実装元: <code>@mozilla.org/feed-processor;1</code>。インスタンスを作成するには次のコードを使用します:</p>
+<pre class="eval">var fp = Components.classes["@mozilla.org/feed-processor;1"]
+ .createInstance(Components.interfaces.nsIFeedProcessor);
+</pre>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#parseAsync.28.29">parseAsync</a>(in nsIRequestObserver requestObserver, in nsIURI uri);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#parseFromStream.28.29">parseFromStream</a>(in nsIInputStream stream, in nsIURI uri);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#parseFromString.28.29">parseFromString</a>(in AString str, in nsIURI uri);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>listener</code></td>
+ <td><code><a href="ja/NsIFeedResultListener">nsIFeedResultListener</a></code></td>
+ <td>feed result listener はフィードイベントに反応します。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="parseAsync.28.29" name="parseAsync.28.29">parseAsync()</h3>
+<p>非同期にフィードをパースします。そして、呼び出し元はパース処理を開始するためにプロセッサの <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIStreamListener" title="">nsIStreamListener</a></code> メソッドを呼び出さなくてはなりません。非同期パース中に <code>nsIFeedProcessor</code> インタフェースの他のパースメソッドを呼び出してはなりません。</p>
+<pre class="eval"> void parseAsync(
+ in nsIRequestObserver requestObserver,
+ in nsIURI uri
+ );
+</pre>
+<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF">パラメータ</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;requestObserver&lt;/tt&gt;</dt>
+ <dd>
+ パースが始まったときと終わりにオブザーバは通知されます。これは <code>null</code> が可能です。</dd>
+ <dt>
+ &lt;tt&gt;uri&lt;/tt&gt;</dt>
+ <dd>
+ フィードの中の URI を解決するための base URI。</dd>
+</dl>
+<h3 id="parseFromStream.28.29" name="parseFromStream.28.29">parseFromStream()</h3>
+<p><code><a href="ja/NsInputStream">nsInputStream</a></code> からフィードをパースします。</p>
+<pre class="eval"> void parseFromStream(
+ in nsIInputStream stream,
+ in nsIURI uri
+ );
+</pre>
+<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_2" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_2">パラメータ</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;stream&lt;/tt&gt;</dt>
+ <dd>
+ フィードを読み込んでパースする <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsInputStream" title="">nsInputStream</a></code> へのポインタ。</dd>
+ <dt>
+ &lt;tt&gt;uri&lt;/tt&gt;</dt>
+ <dd>
+ フィードの中の URI を解決するための base URI。</dd>
+</dl>
+<h3 id="parseFromString.28.29" name="parseFromString.28.29">parseFromString()</h3>
+<p><code><a href="ja/AString">AString</a></code> からフィードをパースをします。</p>
+<pre class="eval"> void parseFromString(
+ in AString str,
+ in nsIURI uri
+ );
+</pre>
+<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_3" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_3">パラメータ</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;str&lt;/tt&gt;</dt>
+ <dd>
+ フィードとして処理される文字列。</dd>
+ <dt>
+ &lt;tt&gt;uri&lt;/tt&gt;</dt>
+ <dd>
+ フィードの中の URI を解決するための base URI。</dd>
+</dl>
+<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2>
+<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIStreamListener" title="">nsIStreamListener</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedResultListener" title="">nsIFeedResultListener</a></code></p>
+<p><span class="comment">Interwiki link</span></p>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedprogresslistener/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedprogresslistener/index.html
new file mode 100644
index 0000000000..e655256058
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedprogresslistener/index.html
@@ -0,0 +1,102 @@
+---
+title: nsIFeedProgressListener
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedProgressListener
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedProgressListener
+---
+<p><code>nsIFeedProgressListener</code> インタフェースは、RSS あるいは Atom フィードの処理中に使われるコールバックを定義します。フィードコンテントアクセス API を使うプログラムはこれらのコールバックのいずれも実装する必要はありません。それらは任意ですが、パース処理中にフィードバックを提供することができます。</p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsiFeedListener.idl" rel="custom">toolkit/components/feeds/public/nsiFeedListener.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div>
+</div>
+<p>継承元: <code><a href="ja/NsIFeedResultListener">nsIFeedResultListener</a></code></p>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#handleEntry.28.29">handleEntry</a>(in nsIFeedEntry entry, in nsIFeedResult result);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#handleFeedAtFirstEntry.28.29">handleFeedAtFirstEntry</a>(in nsIFeedResult result);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#handleStartFeed.28.29">handleStartFeed</a>(in nsIFeedResult result);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#reportError.28.29">reportError</a>(in AString errorText, in long lineNumber, in boolean bozo);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="handleEntry.28.29" name="handleEntry.28.29">handleEntry()</h3>
+<p>エントリあるいはアイテムが処理された後に呼ばれます。もしドキュメントが単独のアイテムあるいはエントリなら、 <code><a href="#handleFeedAtFirstEntry.28.29">handleFeedAtFirstEntry()</a></code> メソッドが呼ばれることなく、<code><a href="ja/NsIFeedEntry">nsIFeedEntry</a></code> が <code>parent</code> の値に <code>null</code> を持つでしょう。</p>
+<pre class="eval"> void handleEntry(
+ in nsIFeedEntry entry,
+ in nsIFeedResult result
+ );
+</pre>
+<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF">パラメータ</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;entry&lt;/tt&gt;</dt>
+ <dd>
+ ちょうど処理されたエントリに関する情報を含んでいる <code><a href="ja/NsIFeedEntry">nsIFeedEntry</a></code> のポインタ。</dd>
+ <dt>
+ &lt;tt&gt;result&lt;/tt&gt;</dt>
+ <dd>
+ 処理されているフィードに関する現在の情報を含む <code><a href="ja/NsIFeedResult">nsIFeedResult</a></code> のポインタ。</dd>
+</dl>
+<h3 id="handleFeedAtFirstEntry.28.29" name="handleFeedAtFirstEntry.28.29">handleFeedAtFirstEntry()</h3>
+<p>そのフィードで最初にエントリあるいはアイテムに出会った時に呼ばれます。Atomでは全てのフィードデータがエントリーに先行する必要があります; RSSではこれは必要ではありませんが通常はそうです。言い替えるとこのメソッドが呼ばれるとき、十中八九、ほとんどあるいは全てのフィードレベルのメタデータが処理され、受け取った <code><a href="ja/NsIFeedResult">nsIFeedResult</a></code> オブジェクトで利用できるでしょう。</p>
+<pre class="eval"> void handleFeedAtFirstEntry(
+ in nsIFeedResult result
+ );
+</pre>
+<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_2" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_2">パラメータ</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;result&lt;/tt&gt;</dt>
+ <dd>
+ 最初のエントリが見付かったが、処理される前の時点のフィードを表す <code><a href="ja/NsIFeedResult">nsIFeedResult</a></code>。</dd>
+</dl>
+<div class="note">
+ <b>注意:</b> もしフィードのタイプがエントリのみあるいはアイテムのみのタイプの場合、このイベントが呼ばれることはありません。</div>
+<h3 id="handleStartFeed.28.29" name="handleStartFeed.28.29">handleStartFeed()</h3>
+<p>フィードで妥当な先頭部分が検出されるとただちに呼ばれます; これはあなたのコードにそのフィードが他の種類のドキュメントではなく実際のフィードであるように見えることを知らせてくれます。</p>
+<p> </p>
+<pre class="eval"> void handleStartFeed(
+ in nsIFeedResult result
+ );
+</pre>
+<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_3" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_3">パラメータ</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;result&lt;/tt&gt;</dt>
+ <dd>
+ フィードがパースされ始めた時点での状態を表す <code><a href="ja/NsIFeedResult">nsIFeedResult</a></code>。</dd>
+</dl>
+<h3 id="reportError.28.29" name="reportError.28.29">reportError()</h3>
+<p>致命的な XML パースエラーが発生したときや、ドキュメントがフィードではなかったときにフィードプロセッサによって呼ばれます。</p>
+<pre class="eval"> void reportError(
+ in AString errorText,
+ in long lineNumber,
+ in boolean bozo
+ );
+</pre>
+<p>それぞれのメソッドは少なくとも処理の時点での状態を表す <code><a href="ja/NsIFeedResult">nsIFeedResult</a></code> を入力として受け取ります。</p>
+<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2>
+<p><a href="ja/NsIFeedResultListener">nsIFeedResultListener</a></p>
+<p><span class="comment">Interwiki link</span></p>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedresult/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedresult/index.html
new file mode 100644
index 0000000000..cca291098e
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedresult/index.html
@@ -0,0 +1,105 @@
+---
+title: nsIFeedResult
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedResult
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedResult
+---
+<p><code>nsIFeedResult</code> インタフェースは HTTP へのアクセスと、フィードあるいはエントリのメタデータのパースを提供します。</p>
+
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedResult.idl" rel="custom">toolkit/components/feeds/public/nsIFeedResult.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div>
+</div>
+
+<p>継承元: <code><a href="ja/NsISupports">nsISupports</a></code></p>
+
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#registerExtensionPrefix.28.29">registerExtensionPrefix</a>(in AString namespace, in AString prefix);</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>bozo</code></td>
+ <td><code>boolean</code></td>
+ <td>フィードが XML パース中に深刻なエラーを引き起こすと、フィードプロセッサは <code>bozo</code> ビットを設定します。エラーが発生する前にパースされたフィードのメタデータとエントリがあるかもしれません。</td>
+ </tr>
+ <tr>
+ <td><code>doc</code></td>
+ <td><code><a href="ja/NsIFeedContainer">nsIFeedContainer</a></code></td>
+ <td>パースされたフィードあるいはエントリ。フィードでないものが処理された場合は <code>null</code> です。</td>
+ </tr>
+ <tr>
+ <td><code>headers</code></td>
+ <td><code><a href="ja/NsIProperties">nsIProperties</a></code></td>
+ <td>フィードに伴って発生する HTTP レスポンスヘッダ。</td>
+ </tr>
+ <tr>
+ <td><code>stylesheet</code></td>
+ <td><code><a href="ja/NsIURI">nsIURI</a></code></td>
+ <td>フィードのソースを変換するために利用可能な <a href="ja/XSLT">XSLT</a> スタイルシート。いくつかのフィードは処理命令 (processing instruction)にこの情報を含んでいます。それは一般に特定のフィードで動作するように設計されたクライアントで使うことが意図されています。</td>
+ </tr>
+ <tr>
+ <td><code>uri</code></td>
+ <td><code><a href="ja/NsIURI">nsIURI</a></code></td>
+ <td>取り込んだフィードのアドレス。</td>
+ </tr>
+ <tr>
+ <td><code>version</code></td>
+ <td><code><a href="ja/AString">AString</a></code></td>
+ <td>フィードのバージョン; フィードでないものが処理された場合は <code>null</code> です。値は以下のどれか一つになります:
+ <blockquote>atom, rss2, rss09, rss091, rss091userland, rss092, rss1, atom03, atomEntry, rssItem</blockquote>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+
+<h3 id="registerExtensionPrefix.28.29" name="registerExtensionPrefix.28.29">registerExtensionPrefix()</h3>
+
+<p>フィードあるいはエントリの<span style="color: darkgreen; background: #ef9;">【訳注: RSS また Atom の】</span>拡張にアクセスするために使われる名前空間の接頭辞を登録する。</p>
+
+<div class="warning"><strong>警告:</strong> このメソッドは現時点では実装されていません。</div>
+
+<pre class="eval"> void registerExtensionPrefix(
+ in AString namespace,
+ in AString prefix
+ );
+</pre>
+
+<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF">パラメータ</h6>
+
+<dl>
+ <dt>namespace</dt>
+ <dd>拡張の名前空間;prefix</dd>
+ <dd>拡張にアクセスするために使われる接頭辞</dd>
+</dl>
+
+<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2>
+
+<p><a href="ja/NsISupports">nsISupports</a>, <a href="ja/NsIFeedContainer">nsIFeedContainer</a>, <a href="ja/NsIURI">nsIURI</a>, <a href="ja/NsIProperties">nsIProperties</a></p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedresultlistener/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedresultlistener/index.html
new file mode 100644
index 0000000000..72dd667210
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedresultlistener/index.html
@@ -0,0 +1,50 @@
+---
+title: nsIFeedResultListener
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedResultListener
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedResultListener
+---
+<p><code>nsIFeedResultListener</code> インタフェースは、パース処理中のフィードパーサからイベントを受け取るためのプログラムによって実装されるべきです。</p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedListener.idl" rel="custom">toolkit/components/feeds/public/nsIFeedListener.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div>
+</div>
+<p>継承元: <code><a href="ja/NsISupports">nsISupports</a></code></p>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#handleResult.28.29">handleResult</a>(in nsIFeedResult result);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="handleResult.28.29" name="handleResult.28.29">handleResult()</h3>
+<p>フィードの処理が完了したときに呼ばれます。処理中にエラーが発生しても、エラーが発生する前に処理された、フィードレベルのデータやエントリの妥当な (<span style="color: green;">valid</span>)データが利用できるかもしれません。進歩状況の表示などをしないなら、パースされたフィードを受け取るための実装に必要なものは、これがすべてです。</p>
+<pre class="eval"> void handleResult(
+ in nsIFeedResult result
+ );
+</pre>
+<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF">パラメータ</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;result&lt;/tt&gt;</dt>
+ <dd>
+ パースされたフィードを表す <code><a href="ja/NsIFeedResult">nsIFeedResult</a></code>。</dd>
+</dl>
+<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2>
+<p><a href="ja/NsIFeedProgressListener">nsIFeedProgressListener</a>, <a href="ja/NsISupports">nsISupports</a></p>
+<p><span class="comment">Interwiki link</span></p>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedtextconstruct/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedtextconstruct/index.html
new file mode 100644
index 0000000000..93ee41b0b8
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsifeedtextconstruct/index.html
@@ -0,0 +1,94 @@
+---
+title: nsIFeedTextConstruct
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIFeedTextConstruct
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedTextConstruct
+---
+<p><code>nsIFeedTextConstruct</code> インタフェースはプレーンテキストや HTML あるいは XHTML を含む RSS, Atom フィードのテキストフィールドを記述します。いくつかの拡張要素は "type" パラメータも含んでおり、このインタフェースはそれらも同様に記述します。</p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIFeedTextConstruct.idl" rel="custom">toolkit/components/feeds/public/nsIFeedTextConstruct.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p>
+<p>実装元: <code>@mozilla.org/feed-textconstruct;1</code>。ユーザは通常、このインスタンスを直接作成する必要はありません。他の <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeed" title="">nsIFeed</a></code> や <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedEntry" title="">nsIFeedEntry</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFeedContainer" title="">nsIFeedContainer</a></code> などのフィード関連のインタフェースは、<code>nsIFeedTextConstruct</code> を実装するオブジェクトを返す属性を持っています。</p>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>nsIDOMDocumentFragment <a href="#createDocumentFragment.28.29"> createDocumentFragment</a>(in nsIDOMElement element);</code></td>
+ </tr>
+ <tr>
+ <td><code>AString <a href="#plainText.28.29">plainText</a>();</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>base</code></td>
+ <td><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code></td>
+ <td>テキスト構造物が HTML あるいは XHTML を含んでいた場合、コンテントの相対参照はこの base URI を使って解決されるべきです。</td>
+ </tr>
+ <tr>
+ <td><code>lang</code></td>
+ <td><code><a href="ja/AString">AString</a></code></td>
+ <td>テキストの言語(アメリカ英語では "en-US")。</td>
+ </tr>
+ <tr>
+ <td><code>text</code></td>
+ <td><code><a href="ja/AString">AString</a></code></td>
+ <td>実際のテキストコンテント。<code>type</code> が "html" か "xhtml" のどちらかではこの文字列はマークアップを含みます。</td>
+ </tr>
+ <tr>
+ <td><code>type</code></td>
+ <td><code><a href="ja/AString">AString</a></code></td>
+ <td>記述されているコンテントの種類; "text" か "html" あるいは "xhtml" のどれか一つ。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="createDocumentFragment.28.29" name="createDocumentFragment.28.29">createDocumentFragment()</h3>
+<p>与えられた DOM 要素の上に新しい document fragment を作ります。それはテキストと(もしテキストが HTML あるいは XHTML を構成しているなら)マークアップを含みます。</p>
+<pre class="eval"> nsIDOMDocumentFragment createDocumentFragment(
+ in nsIDOMElement element
+ );
+</pre>
+<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF">パラメータ</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;element&lt;/tt&gt;</dt>
+ <dd>
+ 新しい document fragment を作る要素。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6>
+<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDocumentFragment" title="">nsIDocumentFragment</a></code> はテキストとマークアップを含みます。</p>
+<h3 id="plainText.28.29" name="plainText.28.29">plainText()</h3>
+<p>テキストを全てのマークアップを取り除き全てのエンティティをデコードしてプレーンテキストとして返します。</p>
+<pre class="eval"> AString plainText();
+</pre>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6>
+<p>テキスト構造物のコンテントのプレーンテキスト版。もし <code>type</code> 属性が "text" の場合、このメソッドは <code>text</code> 属性の変更されていない値を返します。</p>
+<h2 id=".E5.82.99.E8.80.83" name=".E5.82.99.E8.80.83">備考</h2>
+<p>もし ドキュメントの <code>type</code> が "html" あるいは "xhtml" の場合、"&lt;" 文字はマークアップを意味します。その文字を表示するためには、"<code>&amp;lt;</code>" のようなエスケープが使われなくてはなりません。type が "text" の場合、"&lt;" 文字はそれ自身を表します。</p>
+<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2>
+<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMElement" title="">nsIDOMElement</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDocumentFragment" title="">nsIDocumentFragment</a></code></p>
+<p><span class="comment">Interwiki link</span></p>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpactivitydistributor/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpactivitydistributor/index.html
new file mode 100644
index 0000000000..dab28ff668
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpactivitydistributor/index.html
@@ -0,0 +1,68 @@
+---
+title: nsIHttpActivityDistributor
+slug: >-
+ Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIHttpActivityDistributor
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityDistributor
+---
+<p><code>nsIHttpActivityDistributor</code> インターフェースはHTTPの転送アクティビティを観察するクライアントを登録、あるいは登録解除するために使用されます。これは、特にデバッガーやトラフィックをモニタする目的に便利です。</p>
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/protocol/http/public/nsIHttpActivityObserver.idl" rel="custom">netwerk/protocol/http/public/nsIHttpActivityObserver.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9.2 (Firefox 3.6 / Thunderbird 3.1 / Fennec 1.0)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityObserver" title="">nsIHttpActivityObserver</a></code></p>
+<p>実装: <code>@mozilla.org/network/http-activity-distributor;1</code>. サービスにアクセスするには以下のようにします:</p>
+<pre class="eval">var httpDistrib = Components.classes["@mozilla.org/network/http-activity-distributor;1"]
+ .getService(Components.interfaces.nsIHttpActivityDistributor);
+</pre>
+<h2 id="Method_overview" name="Method_overview">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="/#addObserver()" title="#addObserver()">addObserver</a>(in <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityObserver" title="">nsIHttpActivityObserver</a></code> aObserver);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="/#removeObserver()" title="#removeObserver()">removeObserver</a>(in <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityObserver" title="">nsIHttpActivityObserver</a></code> aObserver);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="メソッド">メソッド</h2>
+<h3 id="eatCookie.28.29" name="eatCookie.28.29">addObserver()</h3>
+<p>HTTPの転送アクティビティの通知を開始する。</p>
+<pre class="eval">void addObserver(
+  in nsIHttpActivityObserver aObserver
+);
+</pre>
+<h6 id="Parameters" name="Parameters">値</h6>
+<dl>
+ <dt>
+ <code>aObserver</code></dt>
+ <dd>
+ HTTPの転送アクティビティの通知を受ける <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityObserver" title="">nsIHttpActivityObserver</a></code>  。 このオブジェクトの{ifmethod("nsIHttpActivityObserver", "observeActivity")}} メソッドが活動が起こる度に呼び出されます。</dd>
+</dl>
+<h3 id="eatCookie.28.29" name="eatCookie.28.29">removeObserver()</h3>
+<p>HTTPの転送アクティビティの通知を停止する。</p>
+<pre class="eval">void removeObserver(
+  in nsIHttpActivityObserver aObserver
+);
+</pre>
+<h6 id="Parameters" name="Parameters">値</h6>
+<dl>
+ <dt>
+ <code>aObserver</code></dt>
+ <dd>
+ HTTPの転送アクティビティの通知を中止する <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityObserver" title="">nsIHttpActivityObserver</a></code> 。</dd>
+ <dt>
+  </dt>
+</dl>
+<h2 id="参照">参照</h2>
+<ul>
+ <li><a href="/ja/Monitoring_HTTP_activity" title="ja/Monitoring HTTP activity">HTTP アクティビティのモニタリング</a></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityObserver" title="">nsIHttpActivityObserver</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpactivityobserver/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpactivityobserver/index.html
new file mode 100644
index 0000000000..782caa9682
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpactivityobserver/index.html
@@ -0,0 +1,172 @@
+---
+title: nsIHttpActivityObserver
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIHttpActivityObserver
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityObserver
+---
+<p><code>nsIHttpActivityObserver</code> はデバッガーやトラフィックモニターのようなHTTPの転送アクティビティの通知を要求するクライアントにより実装されるインターフェースです。</p>
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/protocol/http/public/nsIHttpActivityObserver.idl" rel="custom">netwerk/protocol/http/public/nsIHttpActivityObserver.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9.2 (Firefox 3.6 / Thunderbird 3.1 / Fennec 1.0)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p>
+<h2 id="Method_overview" name="Method_overview">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void observeActivity(in <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> aHttpChannel, in PRUint32 aActivityType, in PRUint32 aActivitySubtype,<br>
+                      in PRTime aTimestamp, in PRUint64 aExtraSizeData, in ACString aExtraStringSize);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="属性"> 属性</h2>
+<table class="standard-table" style="width: auto;">
+ <tbody>
+ <tr>
+ <td class="header">Attribute</td>
+ <td class="header">Type</td>
+ <td class="header">Description</td>
+ </tr>
+ <tr>
+ <td><code>isActive</code></td>
+ <td><code>boolean</code></td>
+ <td>
+ <p>インターフェースがアクティブで、HTTPの活動を通知されたい場合は<code> true、</code> それ以外の場合は <code>false。</code> もし <code>false </code>の場合, <code><a href="https://developer.mozilla.org/ja/docs/nsIHttpActivityObserver#observeActivity()">observeActivity()</a></code> メソッドは呼び出されない。</p>
+ <div class="note">
+ <strong>注意:</strong> この属性は互換性のためだけに存在するもので、使用されるべきではありません。</div>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Activity_type_constants" name="Activity type constants">アクティビティタイプ定数</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">定数</td>
+ <td class="header">値</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>ACTIVITY_TYPE_SOCKET_TRANSPORT</code></td>
+ <td>0x0001</td>
+ <td>Socket の転送活動が発生した。</td>
+ </tr>
+ <tr>
+ <td><code>ACTIVITY_TYPE_HTTP_TRANSPORT</code></td>
+ <td>0x0002</td>
+ <td>HTTP の転送活動が発生した。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Activity_subtype_constants" name="Activity subtype constants">アクティビティサブタイプ定数</h2>
+<table class="standard-table" style="width: 914px; height: 194px;">
+ <tbody>
+ <tr>
+ <td class="header">定数</td>
+ <td class="header">値</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><span style="font-family: monospace;">ACTIVITY_SUBTYPE_REQUEST_</span><code>HEADER</code></td>
+ <td>0x5001</td>
+ <td>
+ <p>HTTP リクエストが送信キューにキューイングされた。Observer は <code>aExtraStringData </code>からリクエストヘッダを<span style="font-family: monospace;">参照できる。</span></p>
+ </td>
+ </tr>
+ <tr>
+ <td><span style="font-family: monospace;">ACTIVITY_SUBTYPE_REQUEST_BODY_SENT</span></td>
+ <td>0x5002</td>
+ <td>HTTP リクエストのボディが送信された。</td>
+ </tr>
+ <tr>
+ <td><span style="font-family: monospace;">ACTIVITY_SUBTYPE_RESPONSE_</span><code>START</code></td>
+ <td>0x5003</td>
+ <td>HTTP レスポンスを受信し始めた。</td>
+ </tr>
+ <tr>
+ <td><span style="font-family: monospace;">ACTIVITY_SUBTYPE_RESPONSE_HEADER</span></td>
+ <td>0x5004</td>
+ <td>HTTPのレスポンスヘッダを受信した。</td>
+ </tr>
+ <tr>
+ <td><span style="font-family: monospace;">ACTIVITY_SUBTYPE_RESPONSE_COMPLETE</span></td>
+ <td>0x5005</td>
+ <td>HTTPのレスポンスを完全に受信し終えた。</td>
+ </tr>
+ <tr>
+ <td><span style="font-family: monospace;">ACTIVITY_SUBTYPE_TRANSACTION_CLOSE</span></td>
+ <td>0x5006</td>
+ <td>HTTPのトランザクションが閉じられた。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Methods" name="Methods">メソッド</h2>
+<h3 id="eatCookie.28.29" name="eatCookie.28.29">observeActivity()</h3>
+<p>HTTPの転送アクティビティが発生した際に呼び出されます。HTTPの活動が発生した際に行うべき処理はこのメソッドに定義します。</p>
+<pre class="eval">void observeActivity(
+  in nsISupports aHttpChannel,
+  in PRUint32 aActivityType,
+  in PRUint32 aActivitySubtype,
+  in PRTime aTimestamp,
+ in PRUint64 aExtraSizeData,
+ in ACString aExtraStringData
+);
+</pre>
+<h6 id="Parameters" name="Parameters">値</h6>
+<dl>
+ <dt>
+ <code>aHttpChannel</code></dt>
+ <dd>
+ 活動が発生した <a href="/NsIHttpChannel" title="NsIHttpChannel">HTTP チャンネル</a>。</dd>
+ <dt>
+ <code>aActivityType</code></dt>
+ <dd>
+ 発生したアクティビティのタイプ; <a href="/ja/nsIHttpActivityObserver#.e3.82.a2.e3.82.af.e3.83.86.e3.82.a3.e3.83.93.e3.83.86.e3.82.a3.e3.82.bf.e3.82.a4.e3.83.97.e5.ae.9a.e6.95.b0" title="ja/nsIHttpActivityObserver#.e3.82.a2.e3.82.af.e3.83.86.e3.82.a3.e3.83.93.e3.83.86.e3.82.a3.e3.82.bf.e3.82.a4.e3.83.97.e5.ae.9a.e6.95.b0">アクティビティタイプ定数</a>で定義された値のうちの1つ。</dd>
+ <dt>
+ <code>aActivitySubtype</code></dt>
+ <dd>
+ 発生したアクティビティのタイプをさらに細かく分類したサブタイプ。アクティビティのタイプが <code>ACTIVITY_TYPE_SOCKET_TRANSPORT</code> の場合、 この値は <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISocketTransport" title="">nsISocketTransport</a></code> で定義された <code>STATUS_*</code> 定数のどれかになります。もしアクティビティのタイプが <code>ACTIVITY_TYPE_HTTP_TRANSACTION</code> の場合、この値は前述の<a href="/ja/nsIHttpActivityObserver#.e3.82.a2.e3.82.af.e3.83.86.e3.82.a3.e3.83.93.e3.83.86.e3.82.a3.e3.82.b5.e3.83.96.e3.82.bf.e3.82.a4.e3.83.97.e5.ae.9a.e6.95.b0" title="ja/nsIHttpActivityObserver#.e3.82.a2.e3.82.af.e3.83.86.e3.82.a3.e3.83.93.e3.83.86.e3.82.a3.e3.82.b5.e3.83.96.e3.82.bf.e3.82.a4.e3.83.97.e5.ae.9a.e6.95.b0">アクティビティサブタイプ定数</a>で定義された定数のどれかになります。</dd>
+ <dt>
+ <code>aTimestamp</code></dt>
+ <dd>
+ 活動が発生した時刻です。1970年1月1日午前零時<span class="kana">を基準とした経過時刻がマイクロ秒で表されます。</span></dd>
+ <dt>
+ <code>aExtraSizeData</code></dt>
+ <dd>
+ 追加のサイズデータが利用できる場合にその値が渡されます。後述の<a href="/ja/nsIHttpActivityObserver#.e3.82.a2.e3.82.af.e3.83.86.e3.82.a3.e3.83.93.e3.83.86.e3.82.a3.e3.83.87.e3.83.bc.e3.82.bf.e3.82.92.e6.89.b1.e3.81.86" title="ja/nsIHttpActivityObserver#.e3.82.a2.e3.82.af.e3.83.86.e3.82.a3.e3.83.93.e3.83.86.e3.82.a3.e3.83.87.e3.83.bc.e3.82.bf.e3.82.92.e6.89.b1.e3.81.86">アクティビティデータを扱う</a>もご覧ください。</dd>
+ <dt>
+ <code>aExtraStringData</code></dt>
+ <dd>
+ 追加の文字列データが利用できる場合にその値が渡されます。後述の<a href="/ja/nsIHttpActivityObserver#.e3.82.a2.e3.82.af.e3.83.86.e3.82.a3.e3.83.93.e3.83.86.e3.82.a3.e3.83.87.e3.83.bc.e3.82.bf.e3.82.92.e6.89.b1.e3.81.86" title="ja/nsIHttpActivityObserver#.e3.82.a2.e3.82.af.e3.83.86.e3.82.a3.e3.83.93.e3.83.86.e3.82.a3.e3.83.87.e3.83.bc.e3.82.bf.e3.82.92.e6.89.b1.e3.81.86">アクティビティデータを扱う</a>もご覧ください。</dd>
+</dl>
+<h2 id="Interpreting_activity_data" name="Interpreting activity data">アクティビティデータを扱う</h2>
+<p><code>aActivityType</code> および <code>aActivitySubtype</code> フィールドの値によって, <code>aExtraSizeData</code> と <code>aExtraStringData</code> パラメータは違う意味を持ちます。</p>
+<h3 id="ソケット転送アクティビティ">ソケット転送アクティビティ</h3>
+<p>もしアクティビティのタイプが <code>ACTIVITY_TYPE_SOCKET_TRANSPORT</code> かつサブタイプが <code>STATUS_SENDING_TO</code> であれば、 <code>aExtraSizeData</code> パラメータは送信されたバイト数を含むことになります。1つの HTTP トランザクションは分割されたソケットの書き出しによって、複数のチャンクから構成される事があるため、それぞれのソケットアクティビティで通知されるのはそのチャンクで転送されたバイト数のみとなります。</p>
+<h3 id="HTTP_トランザクションアクティビティ">HTTP トランザクションアクティビティ</h3>
+<p>通知されたアクティビティのタイプが <code>ACTIVITY_TYPE_HTTP_TRANSACTION</code> の場合、 追加のデータを含むものは3種類あります:</p>
+<dl>
+ <dt>
+ <code>ACTIVITY_SUBTYPE_REQUEST_HEADER</code></dt>
+ <dd>
+ <code>aExtraStringData</code> はヘッダの文字列を含みます。</dd>
+ <dt>
+ <code>ACTIVITY_SUBTYPE_RESPONSE_HEADER</code></dt>
+ <dd>
+ <code>aExtraStringData</code> はレスポンスヘッダの文字列を含みます。</dd>
+ <dt>
+ <code>ACTIVITY_SUBTYPE_RESPONSE_COMPLETE</code></dt>
+ <dd>
+ <code>aExtraSizeData</code> はトータルで受信したバイト数を含みます。</dd>
+</dl>
+<h2 id="参照">参照</h2>
+<ul>
+ <li><a href="/en/Monitoring_HTTP_activity" title="en/Monitoring HTTP activity">HTTP アクティビティのモニタリング</a></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpActivityDistributor" title="">nsIHttpActivityDistributor</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpchannel/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpchannel/index.html
new file mode 100644
index 0000000000..6a67b2c570
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsihttpchannel/index.html
@@ -0,0 +1,569 @@
+---
+title: nsIHttpChannel
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIHttpChannel
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpChannel
+---
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/protocol/http/nsIHttpChannel.idl" rel="custom">netwerk/protocol/http/nsIHttpChannel.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+このインターフェイスでは、HTTPリクエストパラメータの変更、および結果として得られるHTTPレスポンスステータスとヘッダーが使用可能になった時点での検査が可能です。
+</span>
+
+<div style="background: #eee; padding: 2px;">
+継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.3 </span></div>
+</div>
+
+<p>To create an HTTP channel, use <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIIOService" title="">nsIIOService</a></code> with a HTTP URI, for example:</p>
+
+<pre class="brush:js">var ios = Components.classes["@mozilla.org/network/io-service;1"]
+ .getService(Components.interfaces.nsIIOService);
+var ch = ios.newChannel("https://www.example.com/", null, null);
+</pre>
+
+<h2 id="メソッド概要">メソッド概要</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#getOriginalResponseHeader()">getOriginalResponseHeader</a>(in ACString aHeader, in nsIHttpHeaderVisitor aVisitor);</code> </td>
+ </tr>
+ <tr>
+ <td><code>ACString <a href="#getRequestHeader()">getRequestHeader</a>(in ACString aHeader);</code></td>
+ </tr>
+ <tr>
+ <td><code>ACString <a href="#getResponseHeader()">getResponseHeader</a>(in ACString header);</code></td>
+ </tr>
+ <tr>
+ <td><code>boolean <a href="#isNoCacheResponse()">isNoCacheResponse</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>boolean <a href="#isNoStoreResponse()">isNoStoreResponse</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#redirectTo()">redirectTo</a>(in nsIURI aNewURI);</code> </td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#setEmptyRequestHeader()">setEmptyRequestHeader</a>(in ACString aHeader);</code> </td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#setReferrerWithPolicy()">setReferrerWithPolicy</a>(in nsIURI referrer, in unsigned long referrerPolicy);</code> </td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#setRequestHeader()">setRequestHeader</a>(in ACString aHeader, in ACString aValue, in boolean aMerge);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#setResponseHeader()">setResponseHeader</a>(in ACString header, in ACString value, in boolean merge);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#visitOriginalResponseHeaders()">visitOriginalResponseHeaders</a>(in nsIHttpHeaderVisitor aVisitor);</code> </td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#visitRequestHeaders()">visitRequestHeaders</a>(in nsIHttpHeaderVisitor aVisitor);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#visitResponseHeaders()">visitResponseHeaders</a>(in nsIHttpHeaderVisitor aVisitor);</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Constants">Constants</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">Constant</td>
+ <td class="header">Description</td>
+ </tr>
+ <tr>
+ <td><code>REFERRER_POLICY_NO_REFERRER_WHEN_DOWNGRADE</code></td>
+ <td>Default; indicates not to pass on the referrer when downgrading from https to http</td>
+ </tr>
+ <tr>
+ <td><code>REFERRER_POLICY_NO_REFERRER</code></td>
+ <td>Indicates no referrer will be sent</td>
+ </tr>
+ <tr>
+ <td><code>REFERRER_POLICY_ORIGIN</code></td>
+ <td>Only send the origin of the referring URI</td>
+ </tr>
+ <tr>
+ <td><code>REFERRER_POLICY_ORIGIN_WHEN_XORIGIN</code></td>
+ <td>Same as the default; Only send the origin of the referring URI for cross-origin requests</td>
+ </tr>
+ <tr>
+ <td><code>REFERRER_POLICY_UNSAFE_URL</code></td>
+ <td>Always send the referrer, even when downgrading from https to http</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Attributes">Attributes</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">Attribute</td>
+ <td class="header">Type</td>
+ <td class="header">Description</td>
+ </tr>
+ <tr>
+ <td><code>allowPipelining</code></td>
+ <td><code>boolean</code></td>
+ <td>
+ <p>This attribute is a hint to the channel to indicate whether or not the underlying HTTP transaction should be allowed to be pipelined with other transactions. This should be set to <code>false</code>, for example, if the application knows that the corresponding document is likely to be very large.</p>
+
+ <p>This attribute is <code>true</code> by default, though other factors may prevent pipelining.</p>
+ This attribute may only be set before the channel is opened.
+
+ <h4 id="Exceptions_thrown">Exceptions thrown</h4>
+
+ <dl>
+ <dt><code>NS_ERROR_FAILURE</code></dt>
+ <dd>If set after the channel has been opened.</dd>
+ </dl>
+ </td>
+ </tr>
+ <tr>
+ <td><code>redirectionLimit</code></td>
+ <td><code>unsigned long</code></td>
+ <td>
+ <p>This attribute specifies the number of redirects this channel is allowed to make. If zero, the channel will fail to redirect and will generate a <code>NS_ERROR_REDIRECT_LOOP</code> failure status.</p>
+
+ <div class="note">
+ <p><strong>Note:</strong> An HTTP redirect results in a new channel being created. If the new channel supports <code>nsIHttpChannel</code>, then it will be assigned a value to its <code>redirectionLimit</code> attribute one less than the value of the redirected channel's <code>redirectionLimit</code> attribute. The initial value for this attribute may be a configurable preference (depending on the implementation).</p>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td><code>referrer</code></td>
+ <td><code><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code></code></td>
+ <td>
+ <p>Get or set the URI of the HTTP <code>Referer:</code> header. This is the address (URI) of the resource from which this channel's URI was obtained (see RFC2616 section 14.36).</p>
+
+ <p>This attribute may only be set before the channel is opened.</p>
+
+ <div class="note">
+ <p><strong>Note:</strong> The channel may silently refuse to set the Referer: header if the URI does not pass certain security checks (e.g., a "https://" URL will never be sent as the <code>referrer</code> for a plaintext HTTP request). The implementation is not required to throw an exception when the <code>referrer</code> URI is rejected.</p>
+ </div>
+
+ <h4 id="Exceptions_thrown_2">Exceptions thrown</h4>
+
+ <dl>
+ <dt><code>NS_ERROR_IN_PROGRESS</code></dt>
+ <dd>If set after the channel has been opened.</dd>
+ <dt><code>NS_ERROR_FAILURE</code> </dt>
+ <dd>If used for setting referrer during <a href="#visitRequestHeaders()"><code>visitRequestHeaders()</code></a>. Getting the value will not throw.</dd>
+ </dl>
+ </td>
+ </tr>
+ <tr>
+ <td><code>requestMethod</code></td>
+ <td><code>ACString</code></td>
+ <td>
+ <p>Set or get the HTTP request method (default is "GET"). Setter is case insensitive; getter returns an uppercase string.</p>
+
+ <p>This attribute may only be set before the channel is opened.</p>
+
+ <div class="note">
+ <p><strong>Note:</strong> The data for a "POST" or "PUT" request can be configured via <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIUploadChannel" title="">nsIUploadChannel</a></code>. However, after setting the upload data, it may be necessary to set the request method explicitly. The documentation for <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIUploadChannel" title="">nsIUploadChannel</a></code> has further details.</p>
+ </div>
+
+ <h4 id="Exceptions_thrown_3">Exceptions thrown</h4>
+
+ <dl>
+ <dt><code>NS_ERROR_IN_PROGRESS</code></dt>
+ <dd>If set after the channel has been opened.</dd>
+ </dl>
+ </td>
+ </tr>
+ <tr>
+ <td><code>requestSucceeded</code></td>
+ <td><code>boolean</code></td>
+ <td>
+ <p>Returns <code>true</code> if the HTTP response code indicates success. The value of <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIRequest#status()">nsIRequest.status()</a></code> will be NS_OK even when processing a <code><a href="/en-US/docs/Web/HTTP/Response_codes#404">404 File Not Found</a></code> response because such a response may include a message body that (in some cases) should be shown to the user. Use this attribute to distinguish server error pages from normal pages, instead of comparing the response status manually against the set of valid response codes, if that is required by your application. <strong>Read only.</strong></p>
+
+ <h4 id="Exceptions_thrown_4">Exceptions thrown</h4>
+
+ <dl>
+ <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt>
+ <dd>If called before the response has been received (before <code>onStartRequest()</code>).</dd>
+ </dl>
+ </td>
+ </tr>
+ <tr>
+ <td><code>responseStatus</code></td>
+ <td><code>unsigned long</code></td>
+ <td>Get the HTTP response code (For example 200). <strong>Read only.</strong>
+ <h4 id="Exceptions_thrown_5">Exceptions thrown</h4>
+
+ <dl>
+ <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt>
+ <dd>If called before the response has been received (before <code>onStartRequest()</code>).</dd>
+ </dl>
+ </td>
+ </tr>
+ <tr>
+ <td><code>responseStatusText</code></td>
+ <td><code>ACString</code></td>
+ <td>
+ <p>Get the HTTP response status text (For example "OK").</p>
+
+ <div class="note">
+ <p><strong>Note:</strong> This returns the raw (possibly 8-bit) text from the server. There are no assumptions made about the charset of the returned text. You have been warned!</p>
+ </div>
+
+ <p><strong>Read only.</strong></p>
+
+ <h4 id="Exceptions_thrown_6">Exceptions thrown</h4>
+
+ <dl>
+ <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt>
+ <dd>If called before the response has been received (before <code>onStartRequest()</code>).</dd>
+ </dl>
+ </td>
+ </tr>
+ <tr>
+ <td><code>referrerPolicy </code> <span class="inlineIndicator readOnly readOnlyInline" title="This value may not be changed.">読取専用 </span></td>
+ <td><code>unsigned long</code></td>
+ <td>The referrer policy in use for this channel, indicated by one of the constants listed above</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Methods">Methods</h2>
+
+<h3 id="sect1"></h3><h3 id="getOriginalResponseHeader">getOriginalResponseHeader()</h3>
+
+<p>Get the value of a particular original response header, that is, in the same form as it came from the network. I.e. empty headers will have an empty string as value and multiple headers will not be merged as opposed to <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#getResponseHeader()">getResponseHeader()</a></code>.</p>
+
+<pre class="syntaxbox">void getOriginalResponseHeader(
+ in ACString aHeader,
+ in nsIHttpHeaderVisitor aVisitor
+);</pre>
+
+<h4 id="Parameters">Parameters</h4>
+
+<dl>
+ <dt><code>aHeader</code></dt>
+ <dd>The case-insensitive name of the response header to query (For example "Set-Cookie").</dd>
+</dl>
+
+<dl>
+ <dt><code>aVisitor</code></dt>
+ <dd>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpHeaderVisitor" title="">nsIHttpHeaderVisitor</a></code> instance allowing to visit all equally named response headers.</dd>
+</dl>
+
+<h4 id="Exceptions_thrown_7">Exceptions thrown</h4>
+
+<dl>
+ <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt>
+ <dd>If called before the response has been received (before <code>onStartRequest()</code>) or if no header with that name is set in the response.</dd>
+</dl>
+
+<h3 id="getRequestHeader">getRequestHeader()</h3>
+
+<p>Get the value of a particular request header.</p>
+
+<pre class="syntaxbox">ACString getRequestHeader(
+ in ACString aHeader
+);
+</pre>
+
+<h4 id="Parameters_2">Parameters</h4>
+
+<dl>
+ <dt><code>aHeader</code></dt>
+ <dd>The case-insensitive name of the request header to query (For example "Cache-Control").</dd>
+</dl>
+
+<h4 id="Return_value">Return value</h4>
+
+<p>The value of the request header.</p>
+
+<h4 id="Exceptions_thrown_8">Exceptions thrown</h4>
+
+<dl>
+ <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt>
+ <dd>If the header is not set.</dd>
+</dl>
+
+<h3 id="getResponseHeader">getResponseHeader()</h3>
+
+<p>Get the value of a particular response header.</p>
+
+<pre class="syntaxbox">ACString getResponseHeader(
+ in ACString header
+);
+</pre>
+
+<h4 id="Parameters_3">Parameters</h4>
+
+<dl>
+ <dt><code>header</code></dt>
+ <dd>The case-insensitive name of the response header to query (For example "Set-Cookie").</dd>
+</dl>
+
+<h4 id="Return_value_2">Return value</h4>
+
+<p>The value of the response header.</p>
+
+<h4 id="Exceptions_thrown_9">Exceptions thrown</h4>
+
+<dl>
+ <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt>
+ <dd>If called before the response has been received (before <code>onStartRequest()</code>) or if the header is not set in the response.</dd>
+</dl>
+
+<h3 id="isNoCacheResponse">isNoCacheResponse()</h3>
+
+<p>Returns <code>true</code> if the server sent the equivalent of a "Cache-control: no-cache" response header. Equivalent response headers include: "Pragma: no-cache", "Expires: 0", and "Expires" with a date value in the past relative to the value of the "Date" header.</p>
+
+<pre class="syntaxbox">boolean isNoCacheResponse();
+</pre>
+
+<h4 id="Parameters_4">Parameters</h4>
+
+<p>None.</p>
+
+<h4 id="Return_value_3">Return value</h4>
+
+<p>Returns <code>true</code> if the server sent the equivalent of a "Cache-control: no-cache" response header, otherwise <code>false</code>.</p>
+
+<h4 id="Exceptions_thrown_10">Exceptions thrown</h4>
+
+<dl>
+ <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt>
+ <dd>If called before the response has been received (before <code>onStartRequest()</code>).</dd>
+</dl>
+
+<h3 id="isNoStoreResponse">isNoStoreResponse()</h3>
+
+<pre class="syntaxbox">boolean isNoStoreResponse();
+</pre>
+
+<h4 id="Parameters_5">Parameters</h4>
+
+<p>None.</p>
+
+<h4 id="Return_value_4">Return value</h4>
+
+<p><code>true</code> if the server sent a "Cache-Control: no-store" response header.</p>
+
+<h4 id="Exceptions_thrown_11">Exceptions thrown</h4>
+
+<dl>
+ <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt>
+ <dd>If called before the response has been received (before <code>onStartRequest()</code>).</dd>
+</dl>
+
+<h3 id="sect2"></h3><h3 id="redirectTo">redirectTo()</h3>
+
+<p>Instructs the channel to immediately redirect to a new destination. Can only be called on channels not yet opened.</p>
+
+<p>This method provides no explicit conflict resolution. The last caller to call it wins.</p>
+
+<pre class="syntaxbox">void redirectTo(
+ in nsIURI aNewURI
+);
+</pre>
+
+<h4 id="Parameters_6">Parameters</h4>
+
+<dl>
+ <dt><code>aNewURI</code></dt>
+ <dd>The new URI to which we should redirect.</dd>
+</dl>
+
+<h4 id="Exceptions_thrown_12">Exceptions thrown</h4>
+
+<dl>
+ <dt><code>NS_ERROR_ALREADY_OPENED</code></dt>
+ <dd>If called after the channel has been opened.</dd>
+</dl>
+
+<h3 id="sect3"></h3><h3 id="setEmptyRequestHeader">setEmptyRequestHeader()</h3>
+
+<p>This method is called to set an empty value for a particular request header. This should be used with caution in the cases where the behavior of <a href="#setRequestHeader()"><code>setRequestHeader()</code></a> ignoring empty header values is undesirable. This method may only be called before the channel is opened.</p>
+
+<pre class="syntaxbox">void setEmptyRequestHeader(
+ in ACString aHeader
+);
+</pre>
+
+<h4 id="Parameters_7">Parameters</h4>
+
+<dl>
+ <dt><code>aHeader</code></dt>
+ <dd>The case-insensitive name of the request header to set (For example "Cookie").</dd>
+</dl>
+
+<h4 id="Exceptions_thrown_13">Exceptions thrown</h4>
+
+<dl>
+ <dt><code>NS_ERROR_IN_PROGRESS</code></dt>
+ <dd>If called after the channel has been opened.</dd>
+ <dt><code>NS_ERROR_FAILURE</code> </dt>
+ <dd>If called during <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#visitRequestHeaders()">visitRequestHeaders()</a></code>.</dd>
+</dl>
+
+<h3 id="sect4"></h3><h3 id="setReferrerWithPolicy">setReferrerWithPolicy()</h3>
+
+<p>Call this method to set the channel's referrer using the referrer policy indicated with one of the predefined constants.</p>
+
+<pre class="syntaxbox">void setReferrerWithPolicy(
+ in nsIURI aReferrer,
+ in unsigned long aReferrerPolicy
+);</pre>
+
+<h4 id="Parameters_8">Parameters</h4>
+
+<dl>
+ <dt><code>aReferrer</code></dt>
+ <dd>The URI to base the referrer on.</dd>
+ <dt><code>aReferrerPolicy</code></dt>
+ <dd>The referrer policy to use when determining the referrer to use.</dd>
+</dl>
+
+<h4 id="Exceptions_thrown_14">Exceptions thrown</h4>
+
+<dl>
+ <dt><code>NS_ERROR_FAILURE</code> </dt>
+ <dd>If called during <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#visitRequestHeaders()">visitRequestHeaders()</a></code>.</dd>
+</dl>
+
+<h3 id="setRequestHeader">setRequestHeader()</h3>
+
+<p>This method is called to set the value of a particular request header. This method allows, for example, the cookies module to add "Cookie" headers to the outgoing HTTP request. This method may only be called before the channel is opened. If aValue is empty and aMerge is <code>false</code>, the header will be cleared.</p>
+
+<pre class="syntaxbox">void setRequestHeader(
+ in ACString aHeader,
+ in ACString aValue,
+ in boolean aMerge
+);
+</pre>
+
+<h4 id="Parameters_9">Parameters</h4>
+
+<dl>
+ <dt><code>aHeader</code></dt>
+ <dd>The case-insensitive name of the request header to query (For example "Cookie").</dd>
+ <dt><code>aValue</code></dt>
+ <dd>The request header value to set (For example "X=1").</dd>
+ <dt><code>aMerge</code></dt>
+ <dd>If <code>true</code>, the new header value will be merged with any existing values for the specified header. This flag is ignored if the specified header does not support merging (For example the "Content-Type" header can only have one value). The list of headers for which this flag is ignored is an implementation detail. If this flag is <code>false</code>, then the header value will be replaced with the contents of <code>aValue</code>.</dd>
+</dl>
+
+<h4 id="Exceptions_thrown_15">Exceptions thrown</h4>
+
+<dl>
+ <dt><code>NS_ERROR_IN_PROGRESS</code></dt>
+ <dd>If called after the channel has been opened.</dd>
+ <dt><code>NS_ERROR_FAILURE</code> </dt>
+ <dd>If called during <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#visitRequestHeaders()">visitRequestHeaders()</a></code>.</dd>
+</dl>
+
+<h3 id="setResponseHeader">setResponseHeader()</h3>
+
+<p>Set the value of a particular response header. This method allows, for example, the HTML content sink to inform the HTTP channel about HTTP-EQUIV headers found in HTML &lt;META&gt; tags. If value is empty and merge is <code>false</code>, the header will be cleared.</p>
+
+<pre class="syntaxbox">void setResponseHeader(
+ in ACString header,
+ in ACString value,
+ in boolean merge
+);
+</pre>
+
+<h4 id="Parameters_10">Parameters</h4>
+
+<dl>
+ <dt><code>header</code></dt>
+ <dd>The case-insensitive name of the response header to set(For example "Cache-Cookie").</dd>
+ <dt><code>value</code></dt>
+ <dd>The response header value to set (For example "no-cache").</dd>
+ <dt><code>merge</code></dt>
+ <dd>If <code>true</code>, the new header value will be merged with any existing values for the specified header. This flag is ignored if the specified header does not support merging (For example the "Content-Type" header can only have one value). The list of headers for which this flag is ignored is an implementation detail. If this flag is false, then the header value will be replaced with the contents of <code>value</code>.</dd>
+</dl>
+
+<h4 id="Exceptions_thrown_16">Exceptions thrown</h4>
+
+<dl>
+ <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt>
+ <dd>If called before the response has been received (before <code>onStartRequest()</code>).</dd>
+ <dt><code>NS_ERROR_ILLEGAL_VALUE</code></dt>
+ <dd>If changing the value of this response header is not allowed.</dd>
+ <dt><code>NS_ERROR_FAILURE</code> </dt>
+ <dd>If called during <a href="#visitResponseHeaders()"><code>visitResponseHeaders()</code></a>, <a href="#visitOriginalResponseHeaders()"><code>visitOriginalResponseHeaders()</code></a> or <a href="#getOriginalResponseHeader()"><code>getOriginalResponseHeader()</code></a>.</dd>
+</dl>
+
+<h3 id="sect5"></h3><h3 id="visitOriginalResponseHeaders">visitOriginalResponseHeaders()</h3>
+
+<p>Call this method to visit all original response headers, that is, in the same form as they came from the network. I.e. empty headers will be have an empty string as value and multiple headers will not be merged as opposed to <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#visitResponseHeaders()">visitResponseHeaders()</a></code>.</p>
+
+<div class="warning">
+<p><strong>Warning:</strong> Calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#setResponseHeader()">setResponseHeader()</a></code> while visiting response headers will return a <code>NS_ERROR_FAILURE</code>.</p>
+</div>
+
+<pre class="syntaxbox">void visitOriginalResponseHeaders(
+ in nsIHttpHeaderVisitor aVisitor
+);
+</pre>
+
+<h4 id="Parameters_11">Parameters</h4>
+
+<dl>
+ <dt><code>aVisitor</code></dt>
+ <dd>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpHeaderVisitor" title="">nsIHttpHeaderVisitor</a></code> instance allowing to visit all original response headers.</dd>
+</dl>
+
+<h3 id="visitRequestHeaders">visitRequestHeaders()</h3>
+
+<p>Call this method to visit all request headers.</p>
+
+<div class="warning">
+<p><strong>Warning:</strong> Calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#setRequestHeader()">setRequestHeader()</a></code>, <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#setReferrerWithPolicy()">setReferrerWithPolicy()</a></code> or <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#setEmptyRequestHeader()">setEmptyRequestHeader()</a></code> while visiting request headers has undefined behavior until Gecko 47 (Firefox 47.0 / Thunderbird 47.0 / SeaMonkey 2.44). Starting from Gecko 48 (Firefox 48.0 / Thunderbird 48.0 / SeaMonkey 2.45) they will return a <code>NS_ERROR_FAILURE</code>.</p>
+</div>
+
+<pre class="syntaxbox">void visitRequestHeaders(
+ in nsIHttpHeaderVisitor aVisitor
+);
+</pre>
+
+<h4 id="Parameters_12">Parameters</h4>
+
+<dl>
+ <dt><code>aVisitor</code></dt>
+ <dd>The header visitor instance.</dd>
+</dl>
+
+<h3 id="visitResponseHeaders">visitResponseHeaders()</h3>
+
+<p>Call this method to visit all response headers.</p>
+
+<div class="warning">
+<p><strong>Warning:</strong> Calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIHttpChannel#setResponseHeader()">setResponseHeader()</a></code> while visiting response headers has undefined behavior until Gecko 48 (Firefox 48.0 / Thunderbird 48.0 / SeaMonkey 2.45). Starting from Gecko 49 (Firefox 49.0 / Thunderbird 49.0 / SeaMonkey 2.46) it will return a <code>NS_ERROR_FAILURE</code>.</p>
+</div>
+
+<pre class="syntaxbox">void visitResponseHeaders(
+ in nsIHttpHeaderVisitor aVisitor
+);
+</pre>
+
+<h4 id="Parameters_13">Parameters</h4>
+
+<dl>
+ <dt><code>aVisitor</code></dt>
+ <dd>The header visitor instance.</dd>
+</dl>
+
+<h4 id="Exceptions_thrown_17">Exceptions thrown</h4>
+
+<dl>
+ <dt><code>NS_ERROR_NOT_AVAILABLE</code></dt>
+ <dd>If called before the response has been received (before <code>onStartRequest()</code>).</dd>
+</dl>
+
+<div class="note">
+<p><strong>Note:</strong> Starting from Firefox 49, empty headers will be returned in case the preference <code>network.http.keep_empty_response_headers_as_empty_string</code> is set to <code>true</code>. Since Firefox 50 the preference defaults to <code>true</code>.</p>
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiidleservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiidleservice/index.html
new file mode 100644
index 0000000000..5118321489
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiidleservice/index.html
@@ -0,0 +1,135 @@
+---
+title: nsIIdleService
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIIdleService
+tags:
+ - Interfaces
+ - MDC Project
+ - NeedsContent
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIIdleService
+---
+<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a> </p>
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/widget/public/nsIIdleService.idl" rel="custom">widget/public/nsIIdleService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9a </span></div>
+</div>
+<h2 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h2>
+<p>アイドルサービスは、ユーザがどのくらいの時間「アイドル状態」であるか、つまり、マウスやキーボードなどを使っていない時間を監視できるようにするサービスです。アイドル時間を直接取得することも可能ですが、所定の間隔でオブザーバを登録する使い方が一般的でしょう。</p>
+<p>現在のところ、<code>nsIIdleService</code> の実装は、Windows、Mac OS X、Linux (XScreenSaver を通じて) に対応しています。</p>
+<p>実装は <code>@mozilla.org/widget/idleservice;1</code> で行われています。インスタンスを作成するには、以下のように記述します。</p>
+<pre class="eval">var idleService = Components.classes["@mozilla.org/widget/idleservice;1"]
+ .getService(Components.interfaces.nsIIdleService)
+</pre>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#addIdleObserver.28.29">addIdleObserver</a>(in <a href="ja/NsIObserver">nsIObserver</a> observer, in unsigned long time)</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#removeIdleObserver.28.29">removeIdleObserver</a>(in <a href="ja/NsIObserver">nsIObserver</a> observer, in unsigned long time)</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>idleTime</code></td>
+ <td><code>long</code></td>
+ <td>ユーザが最後に操作を行ってから経過したミリ秒単位での時間。
+ <i>
+ 読み取り専用</i>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="addIdleObserver.28.29" name="addIdleObserver.28.29">addIdleObserver()</h3>
+<p>ユーザの操作が一定時間アイドル状態になった場合や、アイドル状態から復帰した際に通知を受けるオブザーバを追加します。</p>
+<pre class="eval">void addIdleObserver(
+ in nsIObserver observer,
+ in unsigned long time
+)
+</pre>
+<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF">パラメータ</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;observer&lt;/tt&gt;</dt>
+ <dd>
+ 通知を受ける <a href="ja/NsIObserver">オブザーバ</a></dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;time&lt;/tt&gt;</dt>
+ <dd>
+ オブザーバに通知が行われるまでのユーザのアイドル時間 (秒)</dd>
+</dl>
+<h6 id=".E5.82.99.E8.80.83" name=".E5.82.99.E8.80.83">備考</h6>
+<ul>
+ <li>オブザーバが受け取る通知のサブジェクトは、常に <code>nsIIdleService</code> そのものです。ユーザがアイドル状態になった時、オブザーバのトピックは「idle」となり、復帰時には「back」となります。通知のデータパラメータには現在のユーザのアイドル時間が含まれます。</li>
+</ul>
+<ul>
+ <li>同じオブザーバを 2 回追加することができます。</li>
+</ul>
+<ul>
+ <li>大半の実装は、アイドル情報を取得するために OS に問い合わせを行う必要があります。これは、その実装の問い合わせ間隔によって、通知に遅延が生じる可能性があるということです。この間隔は、現在の実装では 5 秒となっています。</li>
+</ul>
+<h3 id="removeIdleObserver.28.29" name="removeIdleObserver.28.29">removeIdleObserver()</h3>
+<p>addIdleObserver で登録されたオブザーバを削除します。</p>
+<pre class="eval">void removeIdleObserver(
+ in nsIObserver observer,
+ in unsigned long time
+)
+</pre>
+<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_2" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_2">パラメータ</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;observer&lt;/tt&gt;</dt>
+ <dd>
+ 削除する <a href="ja/NsIObserver">オブザーバ</a></dd>
+</dl>
+<dl>
+ <dt>
+ &lt;tt&gt;time&lt;/tt&gt;</dt>
+ <dd>
+ オブザーバに通知が行われるまでのユーザのアイドル時間 (秒)</dd>
+</dl>
+<h6 id=".E5.82.99.E8.80.83_2" name=".E5.82.99.E8.80.83_2">備考</h6>
+<p>オブザーバの削除は、指定したアイドル時間のオブザーバについて 1 回だけ行われます。オブザーバを複数追加した場合は、個別に削除する必要があります。</p>
+<h2 id=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB.E3.82.B3.E3.83.BC.E3.83.89" name=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB.E3.82.B3.E3.83.BC.E3.83.89">サンプルコード</h2>
+<p>例 1:</p>
+<pre class="eval">var idleService = Components.classes["@mozilla.org/widget/idleservice;1"]
+ .getService(Components.interfaces.nsIIdleService)
+setTimeout(function() { alert(idleService.idleTime) }, 1000)
+// このコードを追加した後、マウスやキーボードを操作しないと、
+// 1000 前後の数字が警告ダイアログで表示されます。
+</pre>
+<p>例 2:</p>
+<pre class="eval">var idleService = Components.classes["@mozilla.org/widget/idleservice;1"]
+ .getService(Components.interfaces.nsIIdleService)
+var idleObserver = {
+ observe: function(subject, topic, data) {
+ alert("topic: " + topic + "\ndata: " + data);
+ }
+};
+idleService.addIdleObserver(idleObserver, 60); // 1 分
+// ...
+// removeIdleObserver を使ってオブザーバを削除するのを忘れずに!
+idleService.removeIdleObserver(idleObserver, 60);
+</pre>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiinputstream/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiinputstream/index.html
new file mode 100644
index 0000000000..46174421ec
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiinputstream/index.html
@@ -0,0 +1,65 @@
+---
+title: nsIInputStream
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIInputStream
+tags:
+ - Interfaces
+ - 'Interfaces:Frozen'
+ - 'Interfaces:Scriptable'
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIInputStream
+---
+<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p>
+<h3 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h3>
+<p><code>nsIInputStream</code> インターフェースは、読み込み可能なデータソースを表します。</p>
+<pre> #include "nsIInputStream.h"
+
+ [scriptable, uuid=(fa9c7f6c-61b3-11d4-9877-00c04fa0cf4a)]
+ interface nsIInputStream : nsISupports { ... };
+</pre>
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/io/nsIInputStream.idl" rel="custom">xpcom/io/nsIInputStream.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.0 </span></div>
+</div>
+<h3 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h3>
+<dl>
+ <dt>
+ <code><a href="ja/NsIInputStream/close">close</a></code></dt>
+ <dd>
+ このメソッドは、入力ストリームを閉じます。</dd>
+</dl>
+<dl>
+ <dt>
+ <code><a href="ja/NsIInputStream/available">available</a></code></dt>
+ <dd>
+ このメソッドは、現在ストリームから読み込み可能なバイトサイズを返します。</dd>
+</dl>
+<dl>
+ <dt>
+ <code><a href="ja/NsIInputStream/read">read</a></code></dt>
+ <dd>
+ このメソッドは、データをストリームからバッファにコピーします。scriptable ではありません。</dd>
+</dl>
+<dl>
+ <dt>
+ <code><a href="ja/NsIInputStream/readSegments">readSegments</a></code></dt>
+ <dd>
+ このメソッドは、ストリームの内部バッファへのダイレクトアクセスを提供します。scriptable ではありません。</dd>
+</dl>
+<dl>
+ <dt>
+ <code><a href="ja/NsIInputStream/isNonBlocking">isNonBlocking</a></code></dt>
+ <dd>
+ このメソッドは、ストリームが非ブロッキングならtrueを返します。</dd>
+</dl>
+<h3 id=".E5.B1.A5.E6.AD.B4" name=".E5.B1.A5.E6.AD.B4">履歴</h3>
+<p>このインターフェースは Mozilla 1.0で凍結されました。詳細は <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=124465" title="FIXED: [meta] freeze specific necko APIs for mozilla 1.0">バグ 124465</a> を見てください。</p>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiioservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiioservice/index.html
new file mode 100644
index 0000000000..ef8ffd9671
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiioservice/index.html
@@ -0,0 +1,456 @@
+---
+title: nsIIOService
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIIOService
+tags:
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIIOService
+---
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/base/public/nsIIOService.idl" rel="custom">netwerk/base/public/nsIIOService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+This interface provides a set of URL parsing utility functions. These are provided as a convenience to the programmer and in some cases to improve performance by eliminating intermediate data structures and interfaces.
+</span>
+
+<div style="background: #eee; padding: 2px;">
+継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.2 </span></div>
+</div>
+
+<p>This interface duplicates many of the <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProtocolHandler" title="">nsIProtocolHandler</a></code> methods in a protocol handler independent way (For example <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIIOService#newURI()">newURI()</a></code> inspects the scheme in order to delegate creation of the new URI to the appropriate protocol handler).</p>
+
+<div class="blockIndicator note"><strong>註:</strong> <code>nsIIOService</code> may only be used from the main thread.</div>
+
+<p>Implemented by <code>@mozilla.org/network/io-service;1</code> as a service:</p>
+
+<pre class="eval">var iOService = Components.classes["@mozilla.org/network/io-service;1"]
+ .getService(Components.interfaces.nsIIOService);
+</pre>
+
+<h2 id="Method_overview" name="Method_overview">メソッドの概要</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>boolean <a href="#allowPort()">allowPort</a>(in long aPort, in string aScheme);</code></td>
+ </tr>
+ <tr>
+ <td><code>ACString <a href="#extractScheme()">extractScheme</a>(in AUTF8String urlString);</code></td>
+ </tr>
+ <tr>
+ <td><code>unsigned long <a href="#getProtocolFlags()">getProtocolFlags</a>(in string aScheme);</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIProtocolHandler <a href="#getProtocolHandler()">getProtocolHandler</a>(in string aScheme);</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIChannel <a href="#newChannel()">newChannel</a>(in AUTF8String aSpec, in string aOriginCharset, in nsIURI aBaseURI); </code><span class="inlineIndicator obsolete obsoleteInline" title="(Firefox 48 / Thunderbird 48 / SeaMonkey 2.45)">Gecko 48 で廃止</span></td>
+ </tr>
+ <tr>
+ <td><code>nsIChannel <a href="#newChannel2()">newChannel2</a>(in AUTF8String aSpec, in string aOriginCharset, in nsIURI aBaseURI, in nsIDOMNode aLoadingNode, in nsIPrincipal aLoadingPrincipal, in nsIPrincipal aTriggeringPrincipal, in uint32_t aSecurityFlags, in uint32_t aContentPolicyType);</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIChannel <a href="#newChannelFromURI()">newChannelFromURI</a>(in nsIURI aURI); </code> <span class="inlineIndicator obsolete obsoleteInline" title="(Firefox 48 / Thunderbird 48 / SeaMonkey 2.45)">Gecko 48 で廃止</span></td>
+ </tr>
+ <tr>
+ <td><code>nsIChannel <a href="#newChannelFromURI2()">newChannelFromURI2</a>(in nsIURI aURI, in nsIDOMNode aLoadingNode, in nsIPrincipal aLoadingPrincipal, in nsIPrincipal aTriggeringPrincipal, in unsigned long aSecurityFlags, in unsigned long aContentPolicyType);</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIChannel <a href="#newChannelFromURIWithLoadInfo()">newChannelFromURIWithLoadInfo</a>(in nsIURI aURI, in nsILoadInfo aLoadInfo);</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIChannel <a href="#newChannelFromURIWithProxyFlags2()">newChannelFromURIWithProxyFlags2</a>(in nsIURI aURI, in nsIURI aProxyURI, in uint32_t aProxyFlags,in nsIDOMNode aLoadingNode, in nsIPrincipal aLoadingPrincipal, in nsIPrincipal aTriggeringPrincipal, in uint32_t aSecurityFlags, in uint32_t aContentPolicyType); </code></td>
+ </tr>
+ <tr>
+ <td><code>nsIURI <a href="#newFileURI()">newFileURI</a>(in nsIFile aFile);</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIURI <a href="#newURI()">newURI</a>(in AUTF8String aSpec, in string aOriginCharset, in nsIURI aBaseURI);</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Attributes" name="Attributes">属性</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">Attribute</td>
+ <td class="header">Type</td>
+ <td class="header">Description</td>
+ </tr>
+ <tr>
+ <td><code>offline</code></td>
+ <td><code><a href="/en/boolean" title="en/boolean">boolean</a></code></td>
+ <td>Returns <code>true</code> if networking is in "<code>offline</code>" mode. When in <code>offline</code> mode, attempts to access the network will fail (although this does not necessarily correlate with whether there is actually a network available -- that's hard to detect without causing the dialer to come up). Observers will be notified of changes to this attribute.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Methods" name="Methods">メソッド</h2>
+
+<h3 id="allowPort" name="allowPort()">allowPort()</h3>
+
+<p>Checks if a port number is banned. This involves consulting a list of unsafe ports, corresponding to network services that may be easily exploitable. If the given port is considered unsafe, then the protocol handler (corresponding to aScheme) will be asked whether it wishes to override the IO service's decision to block the port. This gives the protocol handler ultimate control over its own security policy while ensuring reasonable, default protection.</p>
+
+<p>Is similar to <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIProtocolHandler#allowPort()">nsIProtocolHandler.allowPort()</a></code>.</p>
+
+<pre class="eval">boolean allowPort(
+ in long aPort,
+ in string aScheme
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aPort</code></dt>
+ <dd>The port to check</dd>
+ <dt><code>aScheme</code></dt>
+ <dd>The scheme for the protocol handler that could override the IOService's decision.</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p><code>true</code> if the port is allowed, <code>false</code> otherwise.</p>
+
+<h3 id="extractScheme" name="extractScheme()">extractScheme()</h3>
+
+<p>Utility to extract the scheme from a URL string, consistently and according to spec (see <a class="external" href="http://tools.ietf.org/html/rfc3986" title="http://tools.ietf.org/html/rfc3986">RFC 3986</a>).</p>
+
+<div class="blockIndicator note"><strong>註:</strong>  Most URL parsing is done via <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code>, and in fact the scheme can also be extracted from a URL string via <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code>. This method is provided purely as an optimization. </div>
+
+<pre class="eval">ACString extractScheme(
+ in AUTF8String urlString
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>urlString</code></dt>
+ <dd>The string for the URL to extract the scheme from.</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p>A string corresponding to the scheme.</p>
+
+<h6 id="Exceptions_thrown" name="Exceptions_thrown">Exceptions thrown</h6>
+
+<dl>
+ <dt><code>NS_ERROR_MALFORMED_URI</code></dt>
+ <dd>If URL string is not of the right form.</dd>
+</dl>
+
+<h3 id="getProtocolFlags" name="getProtocolFlags()">getProtocolFlags()</h3>
+
+<p>Returns the protocol flags for a given scheme.</p>
+
+<pre class="eval">unsigned long getProtocolFlags(
+ in string aScheme
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aScheme</code></dt>
+ <dd>The scheme for which to get the protocol flags.</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p>The value of the <code>protocolFlags</code> attribute for the corresponding <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProtocolHandler" title="">nsIProtocolHandler</a></code>.</p>
+
+<h3 id="getProtocolHandler" name="getProtocolHandler()">getProtocolHandler()</h3>
+
+<p>Returns a protocol handler for a given URI scheme.</p>
+
+<pre class="eval">nsIProtocolHandler getProtocolHandler(
+ in string aScheme
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aScheme</code></dt>
+ <dd>The URI scheme for which to get a protocol handler.</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProtocolHandler" title="">nsIProtocolHandler</a></code> for the scheme.</p>
+
+<h3 id="newChannel" name="newChannel()">newChannel()</h3>
+
+<p><span class="inlineIndicator obsolete obsoleteInline" title="(Firefox 48 / Thunderbird 48 / SeaMonkey 2.45)">Gecko 48 で廃止</span><br>
+ <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIIOService#newURI()">newURI()</a></code> や <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIIOService#newChannelFromURI()">newChannelFromURI()</a></code> の重複した呼び出しを避けるショートカットメソッドです。</p>
+
+<pre class="eval">nsIChannel newChannel(
+ in AUTF8String aSpec,
+ in string aOriginCharset,
+ in nsIURI aBaseURI
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aSpec</code></dt>
+ <dd>希望するuriのためのスペックです。</dd>
+ <dt><code>aOriginCharset</code></dt>
+ <dd>uriのためのキャラクタセットです。たぶんnullになるでしょう。</dd>
+ <dt><code>aBaseURI</code></dt>
+ <dd>スペックのためベースURLです。たぶんnullになるでしょう。もしaSpecが相対パスだった時このパラメーターは無視されます。</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p>Returns an <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code> based on <code>aSpec</code> and <code>aBaseURI</code>.</p>
+
+<h3 id="newChannel2" name="newChannel2()">newChannel2()</h3>
+
+<p><code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIIOService#newURI()">newURI()</a></code> や <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIIOService#newChannelFromURI()">newChannelFromURI()</a></code>の再呼び出しを避けるためのショートカットメソッドです。</p>
+
+<pre class="eval">nsIChannel newChannel2(
+ <code>in AUTF8String aSpec,
+ in string aOriginCharset,
+ in nsIURI aBaseURI,
+ in nsIDOMNode aLoadingNode,
+ in nsIPrincipal aLoadingPrincipal,
+ in nsIPrincipal aTriggeringPrincipal,
+ in uint32_t aSecurityFlags,
+ in uint32_t aContentPolicyType,
+</code>
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aSpec</code></dt>
+ <dd>
+ <p>希望するuriのためのスペックです。</p>
+ </dd>
+ <dt><code>aOriginCharset</code></dt>
+ <dd>uriのためのキャラクタセットです。たぶんnullになるでしょう。</dd>
+ <dt><code>aBaseURI</code></dt>
+ <dd>スペックのためベースURLです。たぶんnullになるでしょう。もしaSpecが相対パスだった時このパラメーターは無視されます。</dd>
+ <dt><code>aLoadingNode</code></dt>
+ <dd><code>チャンネルのloadingDocumentです。この要素やドキュメントがリクエストの結果として使われるでしょう。これはこのリクエストへの結果としてアクセスされる要素やドキュメントです。例として画像をロードする場合、これはイメージがロードされるドキュメントになります。そしてCSSの場合、</code> <code>レンダリングがこのスタイルシートに影響を与えられる</code>ド<code>キュメントになります。もし可能なら、ロードが実行される要素を渡します。</code>しかしもしロードが XMLHttpRequestなどのJS API やforなどで複数の要素に渡って合体される場合は代わりにDocumentノードに渡します。ロードがアドオンや内部のブラウザ機能から来るようにロードがどんなドキュメントにも関連していない場合、nullを使います。</dd>
+ <dt><code>aLoadingPrincipal</code></dt>
+ <dd>チャンネルにロードするもののPrincipalです。 リクエストの結果としてこのドキュメントのprincipalが使用されます。 この値のデフォルトは aLoadingNode のprincipalです。そのため、もし aLoadingNode が渡された場合は、nullとして残すことができます。 しかし、aLoadingNode が null としてロードされている場合は、値を渡す必要があります。 例としてWebWorkerからロードする場合を考えてみます。この場合はworkerのprincipalを渡します。アドオンやブラウザ内部からロードする場合は、 system principalを渡します。This principal should almost always be the system principal if aLoadingNode is null. The only exception to this is for loads from WebWorkers since they don't have any nodes to be passed as aLoadingNode. Please note, aLoadingPrincipal is *not* the principal of the resource being loaded. But rather the principal of the context where the resource will be used.</dd>
+ <dt><code>aTriggeringPrincipal</code></dt>
+ <dd>The triggeringPrincipal of the load. The triggeringPrincipal is the principal of the resource that caused this particular URL to be loaded. Most likely the triggeringPrincipal and the loadingPrincipal are identical, in which case the triggeringPrincipal can be left out. In some cases the loadingPrincipal and the triggeringPrincipal are different however, e.g. a stylesheet may import a subresource. In that case the principal of the stylesheet which contains the import command is the triggeringPrincipal, and the principal of the document whose rendering is affected is the loadingPrincipal.</dd>
+ <dt><code>aSecurityFlags</code></dt>
+ <dd>このchannelのsecurityFlagsです。すべてのsecurityFlagsはnsILoadInfoで定義されています。</dd>
+ <dt><code>aContentPolicyType</code></dt>
+ <dd>このchannelのcontentPolicyTypeです。すべてのcontentPolicytypeはnsIContentPolicyで定義されています。</dd>
+ <dt><span style="color: darkgreen; background: #ef9;">【訳注: アドオン開発者が暫定的に使う場合はTYPE_OTHERを使う。firefox開発者はTYPE_OTHERを使うのは避けるべきです】</span></dt>
+ <dt><span style="color: darkgreen; background: #ef9;">【訳注: nsIContentPolicyがincludeしている nsIContentPolicyBase.idl に書いてあるっぽいです】</span></dt>
+</dl>
+
+<h6 id="Return_value" name="Return_value"> </h6>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p>aSpecやaBaseURIに基づいた <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code> を返します<code>。</code></p>
+
+<h3 id="newChannelFromURI" name="newChannelFromURI()">newChannelFromURI()</h3>
+
+<p><span class="inlineIndicator obsolete obsoleteInline" title="(Firefox 48 / Thunderbird 48 / SeaMonkey 2.45)">Gecko 48 で廃止</span></p>
+
+<p>与えられたURIのチャンネルを作成します</p>
+
+<pre class="eval">nsIChannel newChannelFromURI(
+ in nsIURI aURI
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aURI</code></dt>
+ <dd>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> from which to make a channel.</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code> for the uri.</p>
+
+<h3 id="newChannelFromURI2" name="newChannelFromURI2()">newChannelFromURI2()</h3>
+
+<p>Creates a channel for a given URI.</p>
+
+<pre>nsIChannel newChannelFromURI2(
+ in nsIURI aURI,
+ in nsIDOMNode aLoadingNode,
+ in nsIPrincipal aLoadingPrincipal,
+ in nsIPrincipal aTriggeringPrincipal,
+ in unsigned long aSecurityFlags,
+ in unsigned long aContentPolicyType
+);</pre>
+
+<p>Please note, if you provide both a loadingNode and a loadingPrincipal, then loadingPrincipal must be equal to loadingNode-&gt;NodePrincipal(). But less error prone is to just supply a loadingNode.</p>
+
+<p>Keep in mind that URIs coming from a webpage should <em>never</em> use the systemPrincipal as the loadingPrincipal.</p>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aURI</code></dt>
+ <dd>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> from which to make a channel.</dd>
+ <dt>aLoadingNode</dt>
+ <dd>The loadingDocument of the channel.<br>
+ The element or document where the result of this request will be used. This is the document/element that will get access to the result of this request. For example for an image load, it's the document in which the image will be loaded. And for a CSS stylesheet it's the document whose rendering will be affected by the stylesheet. If possible, pass in the element which is performing the load. But if the load is coming from a JS API (such as XMLHttpRequest) or if the load might be coalesced across multiple elements (such as for &lt;img&gt;) then pass in the Document node instead.<br>
+ <br>
+ For loads that are not related to any document, such as loads coming from addons or internal browser features, use null here.</dd>
+ <dt>aLoadingPrincipal                                                     </dt>
+ <dd>The loadingPrincipal of the channel.<br>
+ <br>
+ The principal of the document where the result of this request will be used.<br>
+ <br>
+ This defaults to the principal of aLoadingNode, so when aLoadingNode is passed this can be left as null. However for loads where aLoadingNode is null this argument must be passed.  For example for loads from a WebWorker, pass the principal of that worker. For loads from an addon or from internal browser features, pass the system principal. This principal should almost always be the system principal if aLoadingNode is null. The only exception to this is for loads from WebWorkers since they don't have any nodes to be passed as aLoadingNode. Please note, aLoadingPrincipal is *not* the principal of the resource being loaded. But rather the principal of the context here the resource will be used.</dd>
+ <dt>aTriggeringPrincipal                                                  </dt>
+ <dd>The triggeringPrincipal of the load.<br>
+ <br>
+ The triggeringPrincipal is the principal of the resource that caused this particular URL to be loaded. Most likely the triggeringPrincipal and the loadingPrincipal are identical, in which case the triggeringPrincipal can be left out. In some cases the loadingPrincipal and the triggeringPrincipal are different however, e.g. a stylesheet may import a subresource. In that case the principal of the stylesheet which contains the import command is the triggeringPrincipal, and the principal of the document whose rendering is affected is the loadingPrincipal.</dd>
+ <dt>aSecurityFlags                                                        </dt>
+ <dd>The securityFlags of the channel. Any of the securityflags defined in nsILoadInfo.idl</dd>
+ <dt>aContentPolicyType                                                        </dt>
+ <dd>The contentPolicyType of the channel. Any of the content types defined in nsIContentPolicy.idl              </dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code> for the uri.</p>
+
+<h3 id="newChannelFromURIWithLoadInfo" name="newChannelFromURIWithLoadInfo()">newChannelFromURIWithLoadInfo()</h3>
+
+<p>Creates a channel for a given URI. Equivalent to <code>newChannelFromURI2(aURI, aLoadingNode, ...)</code></p>
+
+<pre>nsIChannel newChannelFromURIWithLoadInfo(
+ in nsIURI aURI,
+ in nsILoadInfo aLoadInfo
+);</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aURI</code></dt>
+ <dd>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> from which to make a channel.</dd>
+ <dt>aLoadInfo</dt>
+ <dd>A load info object.</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code> for the uri.</p>
+
+<h3 id="newChannelFromURIWithProxyFlags2" name="newChannelFromURIWithProxyFlags2()">newChannelFromURIWithProxyFlags2()</h3>
+
+<p><br>
+ Creates a channel for a given URI. Equivalent to <code>newChannelFromURI2(aURI, aLoadingNode, ...)</code></p>
+
+<pre>nsIChannel newChannelFromURIWithProxyFlags2(
+ in nsIURI aURI,
+ in nsIURI aProxyURI,
+ in uint32_t aProxyFlags,
+ in nsIDOMNode aLoadingNode,
+ in nsIPrincipal aLoadingPrincipal,
+ in nsIPrincipal aTriggeringPrincipal,
+ in uint32_t aSecurityFlags,
+ in uint32_t aContentPolicyType
+);</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aURI</code></dt>
+ <dd>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> from which to make a channel.</dd>
+ <dt>aProxyURI</dt>
+ <dd>nsIURI to use for proxy resolution. Can be null in which case aURI is used.</dd>
+ <dt>aPorxyFlags</dt>
+ <dd>Flags from nsIProtocolProxyService to use when resolving proxies for this new channel.</dd>
+ <dt>aLoadingNode</dt>
+ <dd>The loadingDocument of the channel. The element or document where the result of this request will be used. This is the document/element that will get access to the result of this request. For example for an image load, it's the document in which the image will be loaded. And for a CSS stylesheet it's the document whose rendering will be affected by the stylesheet. If possible, pass in the element which is performing the load. But if the load is coming from a JS API (such as XMLHttpRequest) or if the load might be coalesced across multiple elements (such as for ) then pass in the Document node instead. For loads that are not related to any document, such as loads coming from addons or internal browser features, use null here.</dd>
+ <dt>aLoadingPrincipal</dt>
+ <dd>The loadingPrincipal of the channel. The principal of the document where the result of this request will be used. This defaults to the principal of aLoadingNode, so when aLoadingNode is passed this can be left as null. However for loads where aLoadingNode is null this argument must be passed. For example for loads from a WebWorker, pass the principal of that worker. For loads from an addon or from internal browser features, pass the system principal. This principal should almost always be the system principal if aLoadingNode is null. The only exception to this is for loads from WebWorkers since they don't have any nodes to be passed as aLoadingNode. Please note, aLoadingPrincipal is *not* the principal of the resource being loaded. But rather the principal of the context where the resource will be used.</dd>
+ <dt>aTriggeringPrincipal</dt>
+ <dd>The triggeringPrincipal of the load. The triggeringPrincipal is the principal of the resource that caused this particular URL to be loaded. Most likely the triggeringPrincipal and the loadingPrincipal are identical, in which case the triggeringPrincipal can be left out. In some cases the loadingPrincipal and the triggeringPrincipal are different however, e.g. a stylesheet may import a subresource. In that case the principal of the stylesheet which contains the import command is the triggeringPrincipal, and the principal of the document whose rendering is affected is the loadingPrincipal.</dd>
+ <dt>aSecurityFlags</dt>
+ <dd>The securityFlags of the channel. Any of the securityflags defined in nsILoadInfo.</dd>
+ <dt>aContentPolicyType</dt>
+ <dd>The contentPolicyType of the channel. Any of the content types defined in nsIContentPolicy.</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code> for the uri.</p>
+
+<h3 id="newFileURI" name="newFileURI()">newFileURI()</h3>
+
+<p>This method constructs a new URI from a <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFile" title="">nsIFile</a></code>.</p>
+
+<pre class="eval">nsIURI newFileURI(
+ in nsIFile aFile
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aFile</code></dt>
+ <dd>The <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFile" title="">nsIFile</a></code> whose URI is desired.</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> corresponding to the file.</p>
+
+<h3 id="newURI" name="newURI()">newURI()</h3>
+
+<p>This method constructs a new URI by determining the scheme of the URI spec, and then delegating the construction of the URI to the protocol handler for that scheme. QueryInterface can be used on the resulting URI object to obtain a more specific type of URI.</p>
+
+<pre class="eval">nsIURI newURI(
+ in AUTF8String aSpec,
+ in string aOriginCharset,
+ in nsIURI aBaseURI
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aSpec</code></dt>
+ <dd>The spec for the desired uri.</dd>
+ <dt><code>aOriginCharset</code></dt>
+ <dd>The charset for the uri. May be null.</dd>
+ <dt><code>aBaseURI</code></dt>
+ <dd>The base URI for the spec. May be null. If <code>aSpec</code> is an absolute URL, this parameter is ignored.</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> object corresponding to <code>aSpec</code> and <code>aBaseURI</code>.</p>
+
+<h6 id="Exceptions_thrown" name="Exceptions_thrown">Exceptions thrown</h6>
+
+<dl>
+ <dt><code>NS_ERROR_MALFORMED_URI</code></dt>
+ <dd>If URI does not begin with a valid scheme (as defined by <a href="https://tools.ietf.org/html/rfc3986">RFC 3986</a>) followed by a colon.</dd>
+</dl>
+
+<h2 id="Remarks" name="Remarks">備考</h2>
+
+<div class="blockIndicator note"><strong>註:</strong>  The proper way to create a new <code>nsIURI</code> is with <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIIOService#newURI()">newURI()</a></code> method defined above. Do NOT create a new <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code> with <code>createInstance()</code>. </div>
+
+<p>This was a frozen interface see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=157131" title="FIXED: [meta] nsIIOService need to be frozen">バグ 157131</a> for details. From <span title="(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)">Gecko 2.0</span> interfaces are no longer frozen.</p>
+
+<h2 id="See_also" name="See_also">関連項目</h2>
+
+<ul>
+ <li><a class="external" href="http://tools.ietf.org/html/rfc3986" title="http://tools.ietf.org/html/rfc3986">RFC 3986</a></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsijscid/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsijscid/index.html
new file mode 100644
index 0000000000..0b472eba03
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsijscid/index.html
@@ -0,0 +1,24 @@
+---
+title: nsIJSCID
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIJSCID
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIJSCID
+---
+<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p>
+<h2 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h2>
+<p>コンポーネントのインスタンス化とサービスコンポーネントの利用を可能にするための機能を、<code>nsIJSCID</code>インターフェイスは提供します。</p>
+<pre class="eval">[scriptable, uuid(e3a24a60-d651-11d2-9843-006008962422)]
+interface nsIJSCID : <a href="ja/NsIJSID">nsIJSID</a> { ... };
+</pre>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="createInstance" name="createInstance"><code>createInstance</code></h3>
+<pre class="eval">nsISupports createInstance();
+</pre>
+<h3 id="getService" name="getService"><code>getService</code></h3>
+<pre class="eval">nsISupports getService();
+</pre>
+<h2 id=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE" name=".E9.96.A2.E9.80.A3.E9.A0.85.E7.9B.AE">関連項目</h2>
+<p><code>createInstance()</code>メソッドと<code>getService()</code>メソッドの使い方は、<code><a href="ja/Components.classes">Components.classes</a></code>を参照してください。</p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsijson/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsijson/index.html
new file mode 100644
index 0000000000..2e8d1beca3
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsijson/index.html
@@ -0,0 +1,165 @@
+---
+title: nsIJSON
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIJSON
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIJSON
+---
+<p> </p><div class="blockIndicator draft">
+ <p><strong>草案</strong><br>
+ このページは完成していません。</p>
+
+</div> <code>nsIJSON</code> インタフェースは、JavaScript コードから <a href="ja/JSON">JSON</a> 文字列をエンコード、デコードする便利な方法を提供します。
+<div class="note">
+ <b>注:</b> このインタフェースは JavaScript コードからのみ利用されます。</div>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/dom/public/idl/json/nsIJSON.idl" rel="custom">dom/public/idl/json/nsIJSON.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p>
+<p>実装: <code>@mozilla.org/dom/json;1</code> インスタンスを作成するには、以下のように記述します。</p>
+<pre class="eval">var nativeJSON = Components.classes["@mozilla.org/dom/json;1"]
+ .createInstance(Components.interfaces.nsIJSON);
+</pre>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<div class="blockIndicator note"><strong>註:</strong> IDL ファイルには、コメントアウトされた IDL が一部含まれています。これは、その部分が IDL で適切に記述できないことを表現しているのが原因です。ただし、この記事の目的に照らし合わせて、実在するかのように説明し、この問題を意図的に無視しています。</div>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code><a href="ja/JSObject">JSObject</a> <a href="#decode.28.29">decode</a>(in <a href="ja/AString">AString</a> str, [optional] in JSObject whitelist);</code></td>
+ </tr>
+ <tr>
+ <td><code>JSObject <a href="#decodeFromStream.28.29">decodeFromStream</a>(in <a href="ja/NsIInputStream">nsIInputStream</a> stream, in long contentLength, [optional] in JSObject optFilter);</code></td>
+ </tr>
+ <tr>
+ <td><code><a href="ja/AString">AString</a> <a href="#encode.28.29">encode</a>(in <a href="ja/JSObject">JSObject</a> value, [optional] in JSObject whitelist);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#encodeToStream.28.29">encodeToStream</a>(in <a href="ja/NsIOutputStream">nsIOutputStream</a> stream, in string charset, in boolean writeBOM, in JSObject value, [optional] in JSObject optFilter);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="decode.28.29" name="decode.28.29">decode()</h3>
+<p>JSON 文字列をデコードします。JavaScript オブジェクトが存在する場合はそのオブジェクトを返します。</p>
+<pre class="eval"> JSObject decode(
+ in AString str,
+ [optional] in JSObject whitelist
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;str&lt;/tt&gt;</dt>
+ <dd>
+ デコードする JSON 文字列。</dd>
+ <dt>
+ &lt;tt&gt;whitelist&lt;/tt&gt;</dt>
+ <dd>
+  ?</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6>
+<p>JSON 文字列から再構築された、元の JavaScript オブジェクト。</p>
+<h3 id="decodeFromStream.28.29" name="decodeFromStream.28.29">decodeFromStream()</h3>
+<p>入力ストリームから読み出した JSON 文字列をデコードします。JavaScript オブジェクトが存在する場合はそのオブジェクトを返します。</p>
+<pre class="eval"> JSObject decodeFromStream(
+ in nsIInputStream stream,
+ in long contentLength,
+ [optional] in JSObject optFilter
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;stream&lt;/tt&gt;</dt>
+ <dd>
+ JSON 文字列を読み出す <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIInputStream" title="">nsIInputStream</a></code>。</dd>
+ <dt>
+ &lt;tt&gt;contentLength&lt;/tt&gt;</dt>
+ <dd>
+ 読み出す JSON 文字列の長さ。</dd>
+ <dt>
+ &lt;tt&gt;optFilter&lt;/tt&gt;</dt>
+ <dd>
+  ?</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6>
+<p>JSON 文字列から再構築された、元の JavaScript オブジェクトを表す <code><a href="ja/JSObject">JSObject</a></code>。</p>
+<h3 id="encode.28.29" name="encode.28.29">encode()</h3>
+<p>JavaScript オブジェクトを JSON 文字列へエンコードします。</p>
+<pre class="eval"> AString encode(
+ in JSObject value,
+ [optional] in JSObject whitelist
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;value&lt;/tt&gt;</dt>
+ <dd>
+ エンコードする JavaScript オブジェクト。</dd>
+ <dt>
+ &lt;tt&gt;whitelist&lt;/tt&gt;</dt>
+ <dd>
+  ?</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_3" name=".E6.88.BB.E3.82.8A.E5.80.A4_3">戻り値</h6>
+<p>オブジェクトを表す JSON 文字列。</p>
+<h3 id="encodeToStream.28.29" name="encodeToStream.28.29">encodeToStream()</h3>
+<p>JavaScript オブジェクトを JSON 文字列へエンコードし、ストリームに書き込みます。</p>
+<pre class="eval"> void encodeToStream(
+ in nsIOutputStream stream,
+ in string charset,
+ in boolean writeBOM
+ in JSObject value,
+ [optional] in JSObject optFilter
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;stream&lt;/tt&gt;</dt>
+ <dd>
+ JSON 文字列を書き込む <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIOutputStream" title="">nsIOutputStream</a></code>。</dd>
+ <dt>
+ &lt;tt&gt;charset&lt;/tt&gt;</dt>
+ <dd>
+ 使用する文字エンコーディング。「UTF-8」「UTF-16LE」「UTF-16BE」など。</dd>
+ <dt>
+ &lt;tt&gt;writeBOM&lt;/tt&gt;</dt>
+ <dd>
+ ストリームにバイトオーダーマーク (BOM) を書き込む場合は <code>true</code>、書き込まない場合は <code>false</code> を指定します。</dd>
+ <dt>
+ &lt;tt&gt;value&lt;/tt&gt;</dt>
+ <dd>
+ エンコードする JavaScript オブジェクト。</dd>
+ <dt>
+ &lt;tt&gt;optFilter&lt;/tt&gt;</dt>
+ <dd>
+ ?</dd>
+</dl>
+<h2 id=".E4.BE.8B" name=".E4.BE.8B">例</h2>
+<h3 id=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.82.92.E3.82.A8.E3.83.B3.E3.82.B3.E3.83.BC.E3.83.89.E3.81.99.E3.82.8B" name=".E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.82.92.E3.82.A8.E3.83.B3.E3.82.B3.E3.83.BC.E3.83.89.E3.81.99.E3.82.8B">オブジェクトをエンコードする</h3>
+<pre class="eval">var myObj = {"foo":"bar"};
+
+var myJSONString = nativeJSON.encode(myObj);
+</pre>
+<p>返される文字列は「{"foo":"bar"}」になります。</p>
+<h3 id="JSON_.E6.96.87.E5.AD.97.E5.88.97.E3.82.92.E3.83.87.E3.82.B3.E3.83.BC.E3.83.89.E3.81.99.E3.82.8B" name="JSON_.E6.96.87.E5.AD.97.E5.88.97.E3.82.92.E3.83.87.E3.82.B3.E3.83.BC.E3.83.89.E3.81.99.E3.82.8B">JSON 文字列をデコードする</h3>
+<p>上記の文字列は、<code>decode()</code> に渡して、元のオブジェクトに戻すことができます。</p>
+<pre class="eval">var myObj2 = nativeJSON.decode(myJSONString);
+</pre>
+<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2>
+<ul>
+ <li><a href="ja/JSON">JSON</a></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsilogininfo/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsilogininfo/index.html
new file mode 100644
index 0000000000..9efe8fb32d
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsilogininfo/index.html
@@ -0,0 +1,147 @@
+---
+title: nsILoginInfo
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsILoginInfo
+tags:
+ - Firefox 3
+ - MDC Project
+ - NeedsEditorialReview
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsILoginInfo
+---
+<p>
+<code>nsILoginInfo</code>はFirefox 3のログインマネージャにて格納されるログインのための情報を保持するオブジェクトです。
+</p><p>ログインを作成し、管理するには<a href="ja/NsILoginManager">nsILoginManager</a>を使用する必要があります。<a href="ja/Using_nsILoginManager">Using nsILoginManager</a>の例をご覧ください。
+</p><p><br>
+</p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/passwordmgr/public/nsILoginInfo.idl" rel="custom">toolkit/components/passwordmgr/public/nsILoginInfo.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>Inherits from: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code>
+</p><p>Implemented by: <code>@mozilla.org/login-manager/loginInfo;1</code>. インスタンスを作成するためには次の例を使用してください。
+</p>
+<pre class="eval">var myLoginInfo = Components.classes["@mozilla.org/login-manager/loginInfo;1"]
+ .createInstance(Components.interfaces.nsILoginInfo);
+</pre>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table"> <tbody><tr>
+<td> <code>void <a href="#init.28.29">init</a>(in AString aHostname, in AString aFormSubmitURL, in AString aHttpRealm, in AString aUsername, in AString aPassword, in AString aUsernameField, in AString aPasswordField);</code>
+</td></tr>
+<tr>
+<td> <code>boolean <a href="#equals.28.29">equals</a>(in nsILoginInfo aLoginInfo);</code>
+</td></tr>
+<tr>
+<td> <code>boolean <a href="#equalsIgnorePassword.28.29">equalsIgnorePassword</a>(in nsILoginInfo aLoginInfo);</code>
+</td></tr>
+</tbody></table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table"> <tbody><tr>
+<td class="header">属性
+</td><td class="header">型
+</td><td class="header">記述
+</td></tr> <tr>
+<td><code>hostname</code>
+</td><td><code><a href="ja/AString">AString</a></code>
+</td><td> ログインが実行されるホストの名前。URLとしてフォーマットされます。(例として、"<a class=" external" href="http://www.wite.com" rel="freelink">http://www.wite.com</a>")。ポート番号(":123")が追加されることもあるでしょう。
+</td></tr>
+<tr>
+<td><code>formSubmitURL</code>
+</td><td><code><a href="ja/AString">AString</a></code>
+</td><td> フォームベースのログインがサブミットされるURL。HTMLフォームから獲得されるログイン向けにはこのフィールドは<code>form</code>要素の<code>action</code>属性になり、パスは削除されます(例として、"<a class=" external" href="http://www.site.com" rel="freelink">http://www.site.com</a>")。<code>action</code>属性のないフォームはデフォルトとしてフォームの元のURLにサブミットされます。そのためにそれはここに格納されます。このフィールドはログインがプロトコル認証から得られた場合には<code>NULL</code>です。
+</td></tr>
+<tr>
+<td><code>httpRealm</code>
+</td><td><code><a href="ja/AString">AString</a></code>
+</td><td> ログインが要求されたHTTP Realm。HTTPサーバが401の結果を返した時、WWW-Authenticateヘッダは"保護空間"を特定するRealmを含みます。<a class="external" href="http://www.ietf.org/rfc/rfc2617.txt"></a><a class="external" href="http://tools.ietf.org/html/rfc2617" title="http://tools.ietf.org/html/rfc2617">RFC 2617</a>を参照してください。結果に realm が含まれていなかった場合、あるいは空白だった場合は、代わりにホスト名が使われます。HTMLフォームから獲得されたログインに関してはこのフィールドは<code>NULL</code>です。
+</td></tr>
+<tr>
+<td><code>username</code>
+</td><td><code><a href="ja/AString">AString</a></code>
+</td><td> ログインのユーザ名
+</td></tr>
+<tr>
+<td><code>usernameField</code>
+</td><td><code><a href="ja/AString">AString</a></code>
+</td><td> フォーム内のユーザ名入力フィールドの<code>name</code>属性。フォームを利用しないログインでは、空白の文字列 ("") を指定する必要があります。
+</td></tr>
+<tr>
+<td><code>password</code>
+</td><td><code><a href="ja/AString">AString</a></code>
+</td><td> ログインのパスワード。
+</td></tr>
+<tr>
+<td><code>passwordField</code>
+</td><td><code><a href="ja/AString">AString</a></code>
+</td><td> パスワード入力フィールドの<code>name</code>属性。プロトコル認証から獲得されたログインではこのフィールドは<code>NULL</code>になります。
+</td></tr>
+</tbody></table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="init.28.29" name="init.28.29">init()</h3>
+<p>新しく作成されたnsILoginInfoオブジェクトを初期化します。
+</p>
+<pre class="eval"> void init(in AString aHostname,
+ in AString aFormSubmitURL,
+ in AString aHttpRealm,
+ in AString aUsername,
+ in AString aPassword,
+ in AString aUsernameField,
+ in AString aPasswordField
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<dl><dt>&lt;tt&gt;aHostname&lt;/tt&gt;
+</dt><dd><code>hostname</code>フィールドに割り当てられる値
+</dd><dt>&lt;tt&gt;aFormSubmitURL&lt;/tt&gt;
+</dt><dd><code>formSubmitURL</code>フィールドに割り当てられる値
+</dd><dt>&lt;tt&gt;aHttpRealm&lt;/tt&gt;
+</dt><dd><code>httpRealm</code>フィールドに割り当てられる値
+</dd><dt>&lt;tt&gt;aUsername&lt;/tt&gt;
+</dt><dd><code>username</code>フィールドに割り当てられる値
+</dd><dt>&lt;tt&gt;aPassword&lt;/tt&gt;
+</dt><dd><code>password</code>フィールドに割り当てられる値
+</dd><dt>&lt;tt&gt;aUsernameField&lt;/tt&gt;
+</dt><dd><code>usernameField</code>フィールドに割り当てられる値
+</dd><dt>&lt;tt&gt;aPasswordField&lt;/tt&gt;
+</dt><dd><code>passwordField</code>フィールドに割り当てられる値
+</dd></dl>
+<h3 id="equals.28.29" name="equals.28.29">equals()</h3>
+<p>このログインが別の<code>nsILoginInfo</code>オブジェクトと完全に等しいかどうか確定する
+</p>
+<pre class="eval"> boolean equals(
+ in nsILoginInfo aLoginInfo
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6>
+<dl><dt>&lt;tt&gt;aLoginInfo&lt;/tt&gt;
+</dt><dd>等しさを比較するログイン
+</dd></dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6>
+<p>もし二つのログインが完全に等しければ<code>true</code>、そうでなければ<code>false</code>。
+</p>
+<h3 id="matches.28.29" name="matches.28.29">matches()</h3>
+<p>このログインが他の <code>nsILoginInfo</code> オブジェクトとほぼ等しいかどうかを判別するテストを行います。<code>passwordField</code> と <code>usernameField</code> の値は無視され、<code>password</code> の値も任意で無視できます。このログインの <code>formSubmitURL</code> が空白の文字列である (かつ null でない) 場合は、ワイルドカードと同等に扱われます。
+</p>
+<pre class="eval"> boolean matches(
+ in nsILoginInfo aLoginInfo,
+ in boolean ignorePassword
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6>
+<dl><dt>&lt;tt&gt;aLoginInfo&lt;/tt&gt;
+</dt><dd>等しさを比較するログイン
+</dd></dl>
+<dl><dt>&lt;tt&gt;ignorePassword&lt;/tt&gt;
+</dt><dd>true の場合、判別時にパスワードの値を検査しません。
+</dd></dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6>
+<p>2つのログインが同等ならば<code>true</code>、等しくなければ<code>false</code>。
+</p>
+<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2>
+<h2 id="See_also" name="See_also">See also</h2>
+<p><a href="ja/NsILoginManager">nsILoginManager</a>, <a href="ja/Using_nsILoginManager">Using nsILoginManager</a>
+</p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiloginmanager/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiloginmanager/index.html
new file mode 100644
index 0000000000..ca03e05897
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiloginmanager/index.html
@@ -0,0 +1,306 @@
+---
+title: nsILoginManager
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsILoginManager
+tags:
+ - Firefox 3
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsILoginManager
+---
+<p> <a href="/ja/nsIPasswordManager" title="ja/nsIPasswordManager">nsIPasswordManager</a> に替わり Firefox 3 では <code>nsILoginManager</code> がパスワードマネージャーのインターフェイスとして使われます。</p>
+
+<p>使用例については <a href="/ja/Using_nsILoginManager" title="ja/Using_nsILoginManager">Using nsILoginManager</a> をご覧ください。</p>
+
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/passwordmgr/public/nsILoginManager.idl" rel="custom">toolkit/components/passwordmgr/public/nsILoginManager.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+
+<p>Inherits from: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsILoginManager" title="">nsILoginManager</a></code></p>
+
+<p>Implemented by: <code>@mozilla.org/login-manager;1</code>. To create an instance, use:</p>
+
+<pre class="eval">var loginManager = Components.classes["@mozilla.org/login-manager;1"]
+ .getService(Components.interfaces.nsILoginManager);
+</pre>
+
+<h2 id="Method_overview" name="Method_overview">Method overview</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#addLogin.28.29">addLogin</a>(in <a href="/ja/nsILoginInfo" title="ja/nsILoginInfo">nsILoginInfo</a> aLogin);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#removeLogin.28.29">removeLogin</a>(in <a href="/ja/nsILoginInfo" title="ja/nsILoginInfo">nsILoginInfo</a> aLogin);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#modifyLogin.28.29">modifyLogin</a>(in <a href="/ja/nsILoginInfo" title="ja/nsILoginInfo">nsILoginInfo</a> oldLogin, in <a href="/ja/nsILoginInfo" title="ja/nsILoginInfo">nsILoginInfo</a> newLogin);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#removeAllLogins.28.29">removeAllLogins</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#getAllLogins.28.29">getAllLogins</a>(out unsigned long count, [retval, array, size_is(count)] out <a href="/ja/nsILoginInfo" title="ja/nsILoginInfo">nsILoginInfo</a> logins);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#getAllDisabledHosts.28.29">getAllDisabledHosts</a>(out unsigned long count, [retval, array, size_is(count)] out wstring hostnames);</code></td>
+ </tr>
+ <tr>
+ <td><code>boolean <a href="#getLoginSavingEnabled.28.29">getLoginSavingEnabled</a>(in <a href="/ja/AString" title="ja/AString">AString</a> aHost);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#setLoginSavingEnabled.28.29">setLoginSavingEnabled</a>(in <a href="/ja/AString" title="ja/AString">AString</a> aHost, in boolean isEnabled);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#findLogins.28.29">findLogins</a>(out unsigned long count, in <a href="/ja/AString" title="ja/AString">AString</a> aHostname, in AString aActionURL, in AString aHttpRealm, [retval, array, size_is(count)] out <a href="/ja/nsILoginInfo" title="ja/nsILoginInfo">nsILoginInfo</a> logins);</code></td>
+ </tr>
+ <tr>
+ <td><code>unsigned long <a href="#countLogins.28.29">countLogins</a>(in <a href="/ja/AString" title="ja/AString">AString</a> aHostName, in <a href="/ja/AString" title="ja/AString">AString</a> aActionURL, in <a href="/ja/AString" title="ja/AString">AString</a> aHttpRealm,);</code></td>
+ </tr>
+ <tr>
+ <td><code><a href="/ja/NsIAutoCompleteResult" title="ja/NsIAutoCompleteResult">nsIAutoCompleteResult</a> <a href="#autoCompleteSearch.28.29">autoCompleteSearch</a>(in <a href="/ja/AString" title="ja/AString">AString</a> aSearchString, in nsIAutoCompleteResult aPreviousResult, in <a href="/ja/NsIDOMHTMLInputElement" title="ja/NsIDOMHTMLInputElement">nsIDOMHTMLInputElement</a> aElement);</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+
+<h3 id="addLogin.28.29" name="addLogin.28.29">addLogin()</h3>
+
+<p>新しいログイン情報をログインマネージャーに保存します。</p>
+
+<pre class="eval"> void addLogin(
+ in nsILoginInfo aLogin
+ );
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aLogin</code></dt>
+ <dd>The login to store.</dd>
+</dl>
+
+<h3 id="removeLogin.28.29" name="removeLogin.28.29">removeLogin()</h3>
+
+<p>ログインマネージャーからログイン情報を削除します。</p>
+
+<pre class="eval"> void removeLogin(
+ in nsILoginInfo aLogin
+ );
+</pre>
+
+<h6 id="Parameters_2" name="Parameters_2">Parameters</h6>
+
+<dl>
+ <dt><code>aLogin</code></dt>
+ <dd>The login to remove from the Login Manager.</dd>
+</dl>
+
+<h3 id="modifyLogin.28.29" name="modifyLogin.28.29">modifyLogin()</h3>
+
+<p>既存のログイン情報を修正し上書きします。</p>
+
+<pre class="eval"> void modifyLogin(
+ in nsILoginInfo oldLogin,
+ in nsILoginInfo newLogin
+ );
+</pre>
+
+<h6 id="Parameters_3" name="Parameters_3">Parameters</h6>
+
+<dl>
+ <dt><code>oldLogin</code></dt>
+ <dd>The login to be updated.</dd>
+ <dt><code>newLogin</code></dt>
+ <dd>The login information to replace the <code>oldLogin</code> with.</dd>
+</dl>
+
+<h3 id="removeAllLogins.28.29" name="removeAllLogins.28.29">removeAllLogins()</h3>
+
+<p>ログインマネージャーに保存されているすべてのログイン情報を削除します。この動作はマスターパスワードによる保護を無視します。</p>
+
+<pre class="eval"> void removeAllLogins();
+</pre>
+
+<h6 id="Parameters_4" name="Parameters_4">Parameters</h6>
+
+<p>None.</p>
+
+<h3 id="getAllLogins.28.29" name="getAllLogins.28.29">getAllLogins()</h3>
+
+<p>ログインマネージャーに保存されているすべてのログイン情報を配列として返します。</p>
+
+<pre class="eval"> void getAllLogins(
+ out unsigned long count,
+ [retval, array, size_is(count)] out nsILoginInfo logins
+ );
+</pre>
+
+<h6 id="Parameters_5" name="Parameters_5">Parameters</h6>
+
+<dl>
+ <dt><code>count</code></dt>
+ <dd>The number of elements in the returned array. JavaScript callers can simply use the array's <code>length</code> property and supply a dummy argument for this parameter.</dd>
+ <dt><code>logins</code></dt>
+ <dd>An array of <code><a href="/ja/nsILoginInfo" title="ja/nsILoginInfo">nsILoginInfo</a></code> objects containing all the logins the Login Manager has on record.</dd>
+</dl>
+
+<h6 id="Remarks" name="Remarks">Remarks</h6>
+
+<p>このメソッドは JavaScript から次のように呼ぶことができます:</p>
+
+<pre class="eval"> var logins = myLoginMgr.getAllLogins({});
+</pre>
+
+<p><code>logins</code> にはログイン情報が配列形式で戻されます。</p>
+
+<h3 id="getAllDisabledHosts.28.29" name="getAllDisabledHosts.28.29">getAllDisabledHosts()</h3>
+
+<p>ログイン情報の保存が無効に設定されているホストの一覧を返します。</p>
+
+<pre class="eval"> void getAllDisabledHosts(
+ out unsigned long count,
+ [retval, array, size_is(count)] out wstring hostnames
+ );
+</pre>
+
+<h6 id="Parameters_6" name="Parameters_6">Parameters</h6>
+
+<dl>
+ <dt><code>count</code></dt>
+ <dd>The number of elements in the returned array. JavaScript callers can simply use the array's <code>length</code> property and supply a dummy argument for this parameter.</dd>
+ <dt><code>hostnames</code></dt>
+ <dd>An array of hostname strings in URL format without a pathname. For example: <span class="nowiki">"https://www.site.com"</span>.</dd>
+</dl>
+
+<h6 id="Remarks_2" name="Remarks_2">Remarks</h6>
+
+<p>You can call this method from JavaScript like this:</p>
+
+<pre class="eval"> var disabledHosts = myLoginMgr.getAllDisabledHosts({});
+</pre>
+
+<h3 id="getLoginSavingEnabled.28.29" name="getLoginSavingEnabled.28.29">getLoginSavingEnabled()</h3>
+
+<p>指定されたホストでログイン情報を保存可能かどうかを返します。</p>
+
+<pre class="eval"> boolean getLoginSavingEnabled(
+ in AString aHost
+ );
+</pre>
+
+<h6 id="Parameters_7" name="Parameters_7">Parameters</h6>
+
+<dl>
+ <dt><code>aHost</code></dt>
+ <dd>The hostname to check. This argument should be in the origin URL format, with no pathname. For example: <span class="nowiki">"https://www.site.com"</span>.</dd>
+</dl>
+
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6>
+
+<p>ホストがログイン情報を保存できる場合は <code>treu</code> を、そうでない場合は <code>false</code> を返します。</p>
+
+<h3 id="setLoginSavingEnabled.28.29" name="setLoginSavingEnabled.28.29">setLoginSavingEnabled()</h3>
+
+<p>Enables or disables storing logins for a specified host. When login storing is disabled, the Login Manager won't prompt the user to store logins for that host. Existing logins are not affected.</p>
+
+<pre class="eval"> void setLoginSavingEnabled(
+ in AString aHost,
+ in boolean isEnabled
+ );
+</pre>
+
+<h6 id="Parameters_8" name="Parameters_8">Parameters</h6>
+
+<dl>
+ <dt><code>aHost</code></dt>
+ <dd>The hostname to adjust the setting for. This argument should be in the origin URL format, with no pathname. For example: <span class="nowiki">"https://www.site.com"</span>.</dd>
+ <dt><code>isEnabled</code></dt>
+ <dd>If <code>true</code>, login saving is enabled for the specified host. If <code>false</code>, login saving is disabled.</dd>
+</dl>
+
+<h3 id="findLogins.28.29" name="findLogins.28.29">findLogins()</h3>
+
+<p>Searches for logins matching the specified criteria. Called when looking for logins that might be applicable to a given form or authentication request.</p>
+
+<pre class="eval"> void findLogins(
+ out unsigned long count,
+ in AString aHostname,
+ in AString aActionURL,
+ in AString aHttpRealm,
+ [retval, array, size_is(count)] out nsILoginInfo logins
+ );
+</pre>
+
+<h6 id="Parameters_9" name="Parameters_9">Parameters</h6>
+
+<dl>
+ <dt><code>count</code></dt>
+ <dd>The number of elements in the returned array. JavaScript callers can simply use the array's <code>length</code> property and supply a dummy argument for this parameter.</dd>
+ <dt><code>aHostname</code></dt>
+ <dd>The hostname to which to restrict searches. When looking for form logins, this argument should be in origin HTML format, with no pathname. For protocol logins, such as http or ftp, it should be the hostname with the port number appended, such as "www.bar.com:443".</dd>
+ <dt><code>aActionURL</code></dt>
+ <dd>For form logins, this parameter should specify the URL to which the form will be submitted. For protocol logins, specify <code>null</code>.</dd>
+ <dt><code>aHttpRealm</code></dt>
+ <dd>For protocol logins, specify the HTTP Realm for which the login applies; this is obtained from the WWW-Authenticate header (see <a class="external" href="http://tools.ietf.org/html/rfc2617" title="http://tools.ietf.org/html/rfc2617">RFC 2617</a>). For form logins, this parameter should be <code>null</code>.</dd>
+ <dt><code>logins</code></dt>
+ <dd>An array of <code><a href="/ja/nsILoginInfo" title="ja/nsILoginInfo">nsILoginInfo</a></code> objects.</dd>
+</dl>
+
+<h6 id="Remarks_3" name="Remarks_3">Remarks</h6>
+
+<p>This method can be called from JavaScript like this:</p>
+
+<pre class="eval"> var logins = myLoginMgr.findLogins({}, hostname, ...);
+</pre>
+
+<h3 id="countLogins.28.29" name="countLogins.28.29">countLogins()</h3>
+
+<p>Returns the number of logins matching the specified criteria. Called when only the number of logins is needed, and not the actual logins (which avoids prompting the user for a Master Password, as the logins don't need to be decrypted).</p>
+
+<pre class="eval"> unsigned login countLogins(
+ in AString aHostname,
+ in AString aActionURL,
+ in AString aHttpRealm,
+ );
+</pre>
+
+<h6 id="Parameters_10" name="Parameters_10">Parameters</h6>
+
+<dl>
+ <dt><code>aHostname</code></dt>
+ <dd>The hostname to which to restrict searches. When looking for form logins, this argument should be in origin HTML format, with no pathname. For protocol logins, such as http or ftp, it should be the hostname with the port number appended, such as "www.bar.com:443".</dd>
+ <dt><code>aActionURL</code></dt>
+ <dd>For form logins, this parameter should specify the URL to which the form will be submitted. To match any form login, specify <code>""</code> (empty string). To not match any form logins (eg, when interested in protocol logins only), specify <code>null</code>.</dd>
+ <dt><code>aHttpRealm</code></dt>
+ <dd>For protocol logins, specify the HTTP Realm for which the login applies; this is obtained from the WWW-Authenticate header (see <a class="external" href="http://tools.ietf.org/html/rfc2617" title="http://tools.ietf.org/html/rfc2617">RFC 2617</a>). To match any protocol login, specify <code>""</code> (empty string). To not match any protocol logins (eg, when interested in form logins only), specify <code>null</code>.</dd>
+</dl>
+
+<p> </p>
+
+<h3 id="autoCompleteSearch.28.29" name="autoCompleteSearch.28.29">autoCompleteSearch()</h3>
+
+<p>Generates results for a user field autocomplete menu.</p>
+
+<div class="note">
+<p>This method is provided for use only by the FormFillController, which calls it directly. It should not be used for any other purpose, so no specific usage documentation is provided here.</p>
+</div>
+
+<h2 id="Remarks_4" name="Remarks_4">Remarks</h2>
+
+<p>Fill this out.</p>
+
+<h2 id="See_also" name="See_also">See also</h2>
+
+<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsILoginInfo" title="">nsILoginInfo</a></code>, <a href="/ja/Using_nsILoginManager" title="ja/Using_nsILoginManager">Using nsILoginManager</a></p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiobserver/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiobserver/index.html
new file mode 100644
index 0000000000..2c50f02fa8
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiobserver/index.html
@@ -0,0 +1,65 @@
+---
+title: nsIObserver
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIObserver
+tags:
+ - Interfaces
+ - 'Interfaces:Frozen'
+ - 'Interfaces:Scriptable'
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIObserver
+---
+<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p>
+<h3 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h3>
+<p><code>nsIObserver</code> は、オブジェクトが通知を監視するために使われます。 これらの通知は、いつもではなく時々、<a href="ja/NsIObserverService">nsIObserverService</a>を通してブロードキャストされます。</p>
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsIObserver.idl" rel="custom">xpcom/ds/nsIObserver.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 0.9.6 </span></div>
+</div>
+<h3 id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.83.BB.E3.82.B3.E3.83.BC.E3.83.89" name=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.83.BB.E3.82.B3.E3.83.BC.E3.83.89">インターフェース・コード</h3>
+<pre>[scriptable, uuid(DB242E01-E4D9-11d2-9DDE-000064657374)]
+interface nsIObserver : nsISupports {
+ void observe( in nsISupports aSubject,
+ in string aTopic,
+ in wstring aData );
+};
+</pre>
+<h3 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h3>
+<h4 id="observe" name="observe">observe</h4>
+<pre> void observe( in nsISupports aSubject,
+ in string aTopic,
+ in wstring aData );
+</pre>
+<p><code>observe</code> will be called when there is a notification for the topic that the observer has been registered for.</p>
+<p>In general, <code>aSubject</code> reflects the object whose change or action is being observed, <code>aTopic</code> indicates the specific change or action, and <code>aData</code> is an optional parameter or other auxiliary data further describing the change or action.</p>
+<p>The specific values and meanings of the parameters provided varies widely, though, according to where the observer was registered, and what topic is being observed.</p>
+<p>A single <code>nsIObserver</code> implementation can observe multiple types of notification, and is responsible for dispatching its own behaviour on the basis of the parameters for a given callback. In general, <code>aTopic</code> is the primary criterion for such dispatch; <code>nsIObserver</code> implementations should take care that they can handle being called with unknown values for <code>aTopic</code>.</p>
+<p>While some observer-registration systems may make this safe in specific contexts, it is generally recommended that <code>observe</code> implementations not add or remove observers while they are being notified.</p>
+<h3 id=".E9.96.A2.E9.80.A3.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9" name=".E9.96.A2.E9.80.A3.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.BC.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9">関連インターフェース</h3>
+<p><a href="ja/NsIObserverService">nsIObserverService</a></p>
+<h3 id=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB.E3.82.B3.E3.83.BC.E3.83.89" name=".E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB.E3.82.B3.E3.83.BC.E3.83.89">サンプルコード</h3>
+<p>The following is an implementation of <code>nsIObserver</code> that can be registered with the preference service to be notified of changes in preferences (see <a class="external" href="http://kb.mozillazine.org/Dev_:_Using_preferences#Using_preferences_observers">Using preferences</a> on MozillaZine for a complete example and for more information about the preference system in general).</p>
+<pre>var prefObserver = {
+ // nsIObserver
+ observe: function (aSubject, aTopic, aData) {
+ if (aTopic == "nsPref:changed") { // observe preference changes
+ // aData contains the name of the changed preference
+ dump(aData+" changed!");
+ }
+ },
+
+ QueryInterface: function(aIID) {
+ if(!aIID.equals(CI.nsISupports) &amp;&amp; !aIID.equals(CI.nsIObserver))
+ throw CR.NS_ERROR_NO_INTERFACE;
+ return this;
+ }
+};
+</pre>
+<p>See also <a class="external" href="http://kb.mozillazine.org/Using_observers">Using observers</a>.</p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiobserverservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiobserverservice/index.html
new file mode 100644
index 0000000000..ffd3a4649d
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiobserverservice/index.html
@@ -0,0 +1,186 @@
+---
+title: nsIObserverService
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIObserverService
+tags:
+ - Interfaces
+ - 'Interfaces:Frozen'
+ - 'Interfaces:Scriptable'
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIObserverService
+---
+<div>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></div>
+
+<h2 id="Summary" name="Summary">概要</h2>
+
+<p><code>nsIObserverService</code> インタフェースは、様々な通知を受けるオブザーバを追加、削除、通知、列挙するためのメソッドを提供します。 </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsIObserverService.idl" rel="custom">xpcom/ds/nsIObserverService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 0.9.6 </span></div>
+</div> 詳しくは <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=99163" title="FIXED: Freeze nsIObserver">バグ 99163</a> をご覧ください
+
+<pre> #include "nsIObserverService.h"
+ [scriptable, uuid=(D07F5192-E3D1-11d2-8ACD-00105A1B8860)]
+ interface nsIObserverService : nsISupports { ... };
+</pre>
+
+<p>XPCOM の <a href="ja/NsObserverService">nsObserverService</a> はこのインタフェースを実装して、様々なサブシステムのためのグローバル通知を提供しています。</p>
+
+<h2 id="Method_overview" name="Method_overview">メソッドの概要</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#addObserver.28.29">addObserver</a>(in <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIObserver" title="">nsIObserver</a></code> anObserver, in string aTopic, in boolean ownsWeak);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#removeObserver.28.29">removeObserver</a>( in <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIObserver" title="">nsIObserver</a></code> anObserver, in string aTopic );</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#notifyObservers.28.29">notifyObservers</a>( in <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code> aSubject, in string aTopic, in wstring someData );</code></td>
+ </tr>
+ <tr>
+ <td><code><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISimpleEnumerator" title="">nsISimpleEnumerator</a></code> enumerateObservers( in string aTopic );</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Methods" name="Methods">メソッド</h2>
+
+<h2 id="addObserver.28.29" name="addObserver.28.29">addObserver()</h2>
+
+<p>特定のトピックに関する通知を受けるために指定したリスナーの登録を行います。</p>
+
+<pre> void addObserver( in nsIObserver anObserver,
+ in string aTopic,
+ in boolean ownsWeak);
+</pre>
+
+<h6 id="addObserver-Parameters" name="addObserver-Parameters">引数</h6>
+
+<dl>
+ <dt><code>anObserver</code></dt>
+ <dd>通知を受けるインタフェースポインタ。</dd>
+ <dt><code>aTopic</code></dt>
+ <dd>通知のトピックまたはサブジェクト。</dd>
+ <dt><code>ownsWeak</code></dt>
+ <dd><code>false</code> に設定した場合、<code>nsIObserverService</code> は <code>anObserver</code> に対する強力な参照を保持します。<code>true</code> に設定し、なおかつ <code>anObserver</code> が <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWeakReference" title="">nsIWeakReference</a></code> インタフェースをサポートしている場合、弱い参照が保持されます。そうでない場合、エラーが返されます。</dd>
+</dl>
+
+<h2 id="removeObserver.28.29" name="removeObserver.28.29">removeObserver()</h2>
+
+<p>特定のトピックに関する通知を受けるために指定したリスナーの登録を解除します。</p>
+
+<pre> void removeObserver( in nsIObserver anObserver,
+ in string aTopic );
+</pre>
+
+<h6 id="removeObserver-Parameters" name="removeObserver-Parameters">引数</h6>
+
+<dl>
+ <dt><code>anObserver</code></dt>
+ <dd>通知を受けるのを停止するインタフェースポインタ。</dd>
+ <dt><code>aTopic</code></dt>
+ <dd>通知のトピックまたはサブジェクト。</dd>
+</dl>
+
+<h2 id="notifyObservers.28.29" name="notifyObservers.28.29">notifyObservers()</h2>
+
+<p>指定されたトピックについて登録されたすべてのリスナーに通知を行います。</p>
+
+<pre> void notifyObservers( in nsISupports aSubject,
+ in string aTopic,
+ in wstring someData );
+</pre>
+
+<h6 id="notifyObservers-Parameters" name="notifyObservers-Parameters">引数</h6>
+
+<dl>
+ <dt><code>aSubject</code></dt>
+ <dd>通知固有のインタフェースポインタ。</dd>
+ <dt><code>aTopic</code></dt>
+ <dd>通知のトピックまたはサブジェクト。</dd>
+ <dt><code>someData</code></dt>
+ <dd>通知固有のワイド文字列。</dd>
+</dl>
+
+<h2 id="enumerateObservers.28.29" name="enumerateObservers.28.29">enumerateObservers()</h2>
+
+<p>登録されたすべてのリスナの列挙を返します。</p>
+
+<pre> nsISimpleEnumerator enumerateObservers( in string aTopic );
+</pre>
+
+<h6 id="enumerateObservers-Parameters" name="enumerateObservers-Parameters">引数</h6>
+
+<dl>
+ <dt><code>aTopic</code></dt>
+ <dd>通知のトピックまたはサブジェクト。</dd>
+</dl>
+
+<h6 id="enumerateObservers-Return_value" name="enumerateObservers-Return_value">戻り値</h6>
+
+<p>登録されたすべてのリスナの列挙を返します。</p>
+
+<h2 id="notifyObservers" name="notifyObservers()">notifyObservers()</h2>
+
+<p>This method is called to notify all observers for a particular topic. See <a href="#Example">Example</a>.</p>
+
+<pre>void notifyObservers(
+ in nsISupports aSubject,
+ in string aTopic,
+ in wstring someData
+);
+</pre>
+
+<h6 id="notifyObservers-Parameters" name="notifyObservers-Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aSubject</code></dt>
+ <dd>A notification specific interface pointer. This usually corresponds to the source of the notification, but could be defined differently depending on the notification topic and may even be <code>null</code>.</dd>
+ <dt><code>aTopic</code></dt>
+ <dd>The notification topic. This string-valued key uniquely identifies the notification. This parameter must not be <code>null</code>.</dd>
+ <dt><code>someData</code></dt>
+ <dd>A notification specific string value. The meaning of this parameter is dependent on the topic. It may be <code>null</code>.</dd>
+</dl>
+
+<h2 id="removeObserver" name="removeObserver()">removeObserver()</h2>
+
+<p>This method is called to unregister an observer for a particular topic.</p>
+
+<pre>void removeObserver(
+ in nsIObserver anObserver,
+ in string aTopic
+);
+</pre>
+
+<h6 id="removeObserver-Parameters" name="removeObserver-Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>anObserver</code></dt>
+ <dd>The <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIObserver" title="">nsIObserver</a></code> instance to remove.</dd>
+ <dt><code>aTopic</code></dt>
+ <dd>The notification topic or subject. This string-valued key uniquely identifies the notification. This parameter must not be <code>null</code>.</dd>
+</dl>
+
+<h2 id="Example" name="Example">Example</h2>
+
+<p>This notifies all <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIObserver" title="">nsIObserver</a></code>s watching the "myTopicID" topic with an additional data parameter.</p>
+
+<pre class="brush: js">Components.classes["@mozilla.org/observer-service;1"]
+ .getService(Components.interfaces.nsIObserverService)
+ .notifyObservers(null, "myTopicID", "someAdditionalInformationPassedAs'Data'Parameter");
+</pre>
+
+<h2 id="See_also" name="See_also">関連記事</h2>
+
+<ul>
+ <li><a href="/ja/docs/NsObserverService">nsObserverService</a></li>
+ <li><a href="/ja/docs/Observer_Notifications">Observer Notifications</a>: オブザーバの概要と、Mozilla によって行われる組み込みの通知の一覧が掲載されています。</li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsioutputstream/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsioutputstream/index.html
new file mode 100644
index 0000000000..5af2c8425f
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsioutputstream/index.html
@@ -0,0 +1,60 @@
+---
+title: nsIOutputStream
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIOutputStream
+tags:
+ - Interfaces
+ - 'Interfaces:Frozen'
+ - 'Interfaces:Scriptable'
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIOutputStream
+---
+<p>« <a href="/ja/docs/XPCOM_API_Reference">XPCOM API Reference</a></p>
+<h3 id=".E6.A6.82.E8.A6.81" name=".E6.A6.82.E8.A6.81">概要</h3>
+<p><code>nsIOutputStream</code> インターフェースは書き込み可能なデータシンクを表します。</p>
+<pre> #include "nsIOutputStream.h"
+
+ [scriptable, uuid=(0d0acd2a-61b4-11d4-9877-00c04fa0cf4a)]
+ interface nsIOutputStream : nsISupports { ... };
+</pre>
+<h3 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h3>
+<dl>
+ <dt>
+ <code><a href="ja/NsIOutputStream/close">close</a></code></dt>
+ <dd>
+ このメソッドは、出力ストリームをクローズする。</dd>
+</dl>
+<dl>
+ <dt>
+ <code><a href="ja/NsIOutputStream/flush">flush</a></code></dt>
+ <dd>
+ このメソッドは、出力ストリームをフラッシュする。</dd>
+</dl>
+<dl>
+ <dt>
+ <code><a href="ja/NsIOutputStream/write">write</a></code></dt>
+ <dd>
+ このメソッドは、バッファからストリームにデータをコピーする。</dd>
+</dl>
+<dl>
+ <dt>
+ <code><a href="ja/NsIOutputStream/writeSegments">writeSegments</a></code></dt>
+ <dd>
+ このメソッドは、ストリームの内部バッファへの書き込むためのダイレクトアクセスを提供します。</dd>
+</dl>
+<dl>
+ <dt>
+ <code><a href="ja/NsIOutputStream/writeFrom">writeFrom</a></code></dt>
+ <dd>
+ このメソッドは、<code><a href="ja/NsIInputStream">nsIInputStream</a></code>からこの<code>nsIOutputStream</code>にデータをコピーします。</dd>
+</dl>
+<dl>
+ <dt>
+ <code><a href="ja/NsIOutputStream/isNonBlocking">isNonBlocking</a></code></dt>
+ <dd>
+ このメソッドは、ストリームが非ブロッキングならtrueを返す。</dd>
+</dl>
+<h3 id=".E5.B1.A5.E6.AD.B4" name=".E5.B1.A5.E6.AD.B4">履歴</h3>
+<p>このインターフェースはMozilla 1.0で凍結されています。詳細は <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=124465" title="FIXED: [meta] freeze specific necko APIs for mozilla 1.0">バグ 124465</a> を見てください。</p>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiparentalcontrolsservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiparentalcontrolsservice/index.html
new file mode 100644
index 0000000000..61a4dbcca2
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiparentalcontrolsservice/index.html
@@ -0,0 +1,172 @@
+---
+title: nsIParentalControlsService
+slug: >-
+ Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIParentalControlsService
+tags:
+ - Firefox 3
+ - Gecko 1.9
+ - Interfaces
+ - Parental Controls
+ - XPCOM
+ - XPCOM API Reference
+ - XPCOM Interface Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIParentalControlsService
+---
+<p>nsIParentalControlsServiceインターフェースはOSの保護者による制限(以下、ペアレンタルコントロールと記述)へのアクセスを提供します。これにより、ペアレンタルコントロール機能が使えるかどうかの検出、制限を迂回しての上書き要求がコード上から行えます。</p>
+<div class="blockIndicator note"><strong>註:</strong> 現在、このインターフェイスはMicrosoft Windows Vista.のみでサポートされています。</div>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/parentalcontrols/public/nsIParentalControlsService.idl" rel="custom">toolkit/components/parentalcontrols/public/nsIParentalControlsService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p>
+<p>実装: <code>@mozilla.org/parental-controls-service;1</code>. インスタンスを作成する場合には次のように記述します。</p>
+<pre class="eval">var parentalControls = Components.classes["@mozilla.org/parental-controls-service;1"]
+ .createInstance(Components.interfaces.nsIParentalControlsService);
+</pre>
+<h2 id="Method_overview" name="Method_overview">メソッド概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#log.28.29">log</a>(in short aEntryType, in boolean aFlag, in <a href="/en/XPCOM_Interface_Reference/nsIURI" title="en/XPCOM_Interface_Reference/nsIURI">nsIURI</a> aSource, [optional] in <a href="/en/XPCOM_Interface_Reference/nsIFile" title="en/XPCOM_Interface_Reference/nsIFile">nsIFile</a> aTarget);</code></td>
+ </tr>
+ <tr>
+ <td><code>boolean <a href="#requestURIOverride.28.29">requestURIOverride</a>(in <a href="/en/XPCOM_Interface_Reference/nsIURI" title="en/XPCOM_Interface_Reference/nsIURI">nsIURI</a> aTarget, [optional] in <a href="/en/XPCOM_Interface_Reference/nsIInterfaceRequestor" title="en/XPCOM_Interface_Reference/nsIInterfaceRequestor">nsIInterfaceRequestor</a> aWindowContext);</code></td>
+ </tr>
+ <tr>
+ <td><code>boolean <a href="#requestURIOverrides.28.29">requestURIOverrides</a>(in nsIArray aTargets, [optional] in nsIInterfaceRequestor aWindowContext);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Attributes" name="Attributes">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>blockFileDownloadsEnabled</code></td>
+ <td><code>boolean</code></td>
+ <td>
+ <p>現在のユーザアカウントのペアレンタルコントロールの現在の設定が全てのファイルダウンロードの禁止を含む場合にはtrue。<em>リードオンリー</em></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>loggingEnabled</code></td>
+ <td><code>boolean</code></td>
+ <td>
+ <p>現在のユーザアカウントがペアレンタルコントロールのログ機能をオンにしている場合には<code>true</code>。<br>
+ <code>true</code>の場合、アプリケーションは<code><a href="#log.28.29">log()</a></code>メソッドを使い、関係するイベントを記録する必要がある。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>parentalControlsEnabled</code></td>
+ <td><code>boolean</code></td>
+ <td>
+ <p>現在のユーザアカウントがペアレンタルコントロール機能をオンにしている場合には<code>true</code>。<em>リードオンリー</em>。</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Constants" name="Constants">定数</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">定数</td>
+ <td class="header">値</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>ePCLog_URIVisit</code></td>
+ <td>1</td>
+ <td>Webコンテンツへのアクセス</td>
+ </tr>
+ <tr>
+ <td><code>ePCLog_FileDownload</code></td>
+ <td>2</td>
+ <td>ファイルのダウンロード</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Methods" name="Methods">メソッド</h2>
+<h3 id="log.28.29" name="log.28.29">log()</h3>
+<p>アプリケーション固有のペアレンタルコントロールイベントを記録します。</p>
+<pre class="eval"> void log(
+ in short aEntryType,
+ in boolean aFlag,
+ in nsIURI aSource,
+ [optional] in nsIFile aTarget
+ );
+</pre>
+<h6 id="Parameters" name="Parameters">引数</h6>
+<dl>
+ <dt>
+ <code>aEntryType</code></dt>
+ <dd>
+ 記録するイベントの型。ページ上方の<a href="/ja/nsIParentalControlsService#Constants" title="ja/nsIParentalControlsService#Constants">定数</a>の項目を参照。</dd>
+ <dt>
+ <code>aFlag</code></dt>
+ <dd>
+ イベントをブロックする場合には<code>true</code>、許可する場合には<code>false</code>を設定します。</dd>
+ <dt>
+ <code>aSource</code></dt>
+ <dd>
+ subject context の URI</dd>
+ <dt>
+ <code>aTarget</code></dt>
+ <dd>
+ コンテンツをブロックしない場合のコンテンツの保存場所。</dd>
+</dl>
+<h3 id="requestURIOverride.28.29" name="requestURIOverride.28.29">requestURIOverride()</h3>
+<p>ペアレンタルコントロールでブロックされているURIを許可状態にするよう要求します。</p>
+<pre class="eval"> boolean requestURIOverride(
+ in nsIURI aTarget,
+ [optional] in nsIInterfaceRequestor aWindowContext
+ );
+</pre>
+<h6 id="Parameters_2" name="Parameters_2">引数</h6>
+<dl>
+ <dt>
+ <code>aTarget</code></dt>
+ <dd>
+ 上書きされるURI</dd>
+ <dt>
+ <code>aWindowContext</code></dt>
+ <dd>
+ イベントを発生させるウィンドウ</dd>
+</dl>
+<h6 id="戻り値">戻り値</h6>
+<p>ブロックが正常に上書きされれば<code>true</code>が、そうでなければ<code>false</code>が返ります。</p>
+<h6 id="Return_value_2" name="Return_value_2">注意書き</h6>
+<p>ブロックに対する上書き要求を操作するためのユーザインターフェース(「管理者パスワードを入力してください」と表示されるダイアログボックスなど)をOSが表示している間は、このメソッドはペアレンタルコントロールによるブロックを継続します。</p>
+<h3 id="requestURIOverrides.28.29" name="requestURIOverrides.28.29">requestURIOverrides()</h3>
+<p>一連のURIをペアレンタルコントロールで許可されるよう要求します。</p>
+<pre class="eval"> boolean requestURIOverrides(
+ in nsIArray aTargets,
+ [optional] in nsIInterfaceRequestor aWindowContext
+ );
+</pre>
+<p>引数</p>
+<dl>
+ <dt>
+ <code>aTargets</code></dt>
+ <dd>
+ 上書きを希望するURIを表す<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code>オブジェクトの配列</dd>
+ <dt>
+ <code>aWindowContext</code></dt>
+ <dd>
+ イベントを発生させるウィンドウ</dd>
+</dl>
+<h6 id="Return_value_2" name="Return_value_2">戻り値</h6>
+<p>ブロックが正常に上書きされればtrueが、そうでなければfalseが返る。</p>
+<h6 id="Remarks_2" name="Remarks_2">注意書き</h6>
+<p>ブロックに対する上書き要求を操作するためのユーザインターフェース(「管理者パスワードを入力してください」と表示されるダイアログボックスなど)をOSが表示している間は、このメソッドはペアレンタルコントロールによるブロックを継続します。</p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiparserutils/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiparserutils/index.html
new file mode 100644
index 0000000000..a90cbe4208
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiparserutils/index.html
@@ -0,0 +1,205 @@
+---
+title: nsIParserUtils
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIParserUtils
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIParserUtils
+---
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/parser/html/nsIParserUtils.idl" rel="custom">parser/html/nsIParserUtils.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+Provides non-Web HTML parsing functionality to Firefox extensions and XULRunner applications.
+</span>
+
+ <div style="height: 42px; position: relative; padding: 2px; width: auto;">
+
+ <div style="top: 22px; font-size: 11px; position: absolute;">1.0</div>
+
+ <div style="top: 22px; font-size: 11px; position: absolute; left: 0px; text-align: right; float: right; width: 100%;">66</div>
+
+ <div style="height: 8px; top: 16px; background: #dd0000; left: 0px; position: absolute; width: 24.285714285714285%;"></div>
+
+<div style="height: 8px; top: 16px; left: 24.285714285714285%; background: #00dd00; position: absolute; width: 75.71428571428572%;" title="Introduced in Gecko 13.0 (Firefox 13.0 / Thunderbird 13.0 / SeaMonkey 2.10)"></div>
+
+<div style="top: 0px; font-size: 11px; position: absolute; left: 24.285714285714285%;">Introduced</div>
+<div style="top: 22px; font-size: 11px; position: absolute; left: 24.285714285714285%;">Gecko 13.0</div>
+
+ <div style="height: 8px; top: 16px; left: 25.21428571428571%; background: #eeee00; position: absolute; width: 1%; border-radius: 4px; -webkit-border-radius: 4px;" title="Last changed in Gecko 14.0 (Firefox 14.0 / Thunderbird 14.0 / SeaMonkey 2.11)"></div>
+
+</div>
+
+<div style="background: #eee; padding: 2px;">
+継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code>
+<span style="text-align: right; float: right;">最終更新: Gecko 14.0 (Firefox 14.0 / Thunderbird 14.0 / SeaMonkey 2.11)</span></div>
+</div>
+
+<div class="warning">警告: Geckoの中からこれを使用しないでください。代わりに<code>nsContentUtils</code>、<code>nsTreeSanitizer</code>などを直接使用してください。</div>
+
+<p>Implemented by: <code>@mozilla.org/parserutils;1</code> as a service:</p>
+
+<pre class="eval">var parserUtils = Components.classes["@mozilla.org/<code>parserutils;1</code>"]
+ .getService(Components.interfaces.nsIParserUtils);
+</pre>
+
+<h2 id="Method_overview" name="Method_overview">メソッド概要</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>AString <a href="#convertToPlainText()">convertToPlainText</a>(in AString src, in unsigned long flags, in unsigned long wrapCol);</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIDOMDocumentFragment <a href="#parseFragment()">parseFragment</a>(in AString fragment, in unsigned long flags, in boolean isXML, in nsIURI baseURI, in nsIDOMElement element);</code> </td>
+ </tr>
+ <tr>
+ <td><code>AString <a href="#sanitize()">sanitize</a>(in AString src, in unsigned long flags);</code> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Constants" name="Constants">定数</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">Constant</td>
+ <td class="header">Value</td>
+ <td class="header">Description</td>
+ </tr>
+ <tr>
+ <td><code>SanitizerAllowComments</code></td>
+ <td><code>(1 &lt;&lt; 0)</code></td>
+ <td>Flag for sanitizer: Allow comment nodes. </td>
+ </tr>
+ <tr>
+ <td><code>SanitizerAllowStyle</code></td>
+ <td><code>(1 &lt;&lt; 1)</code></td>
+ <td>
+ <p>Flag for sanitizer: Allow <a href="/ja/docs/Web/HTML/Element/style" title="HTML の &lt;style> 要素は、文書あるいは文書の一部分のスタイル情報を含みます。"><code>&lt;style&gt;</code></a> elements and <code>style</code> attributes (with contents sanitized in case of <code>-moz-binding</code>).</p>
+
+ <div class="note"><strong>Note:</strong> If <code>-moz-binding</code> is absent, properties that might be XSS risks in other Web engines are preserved! </div>
+ </td>
+ </tr>
+ <tr>
+ <td><code>SanitizerCidEmbedsOnly</code></td>
+ <td><code>(1 &lt;&lt; 2)</code></td>
+ <td>
+ <p>Flag for sanitizer: Only allow cid: URLs for embedded content.</p>
+
+ <p>At present, sanitizing CSS backgrounds, and so on., is not supported, so setting this together with <code>SanitizerAllowStyle</code> doesn't make sense.</p>
+ At present, sanitizing CSS syntax in SVG presentational attributes is not supported, so this option flattens out SVG. </td>
+ </tr>
+ <tr>
+ <td><code>SanitizerDropNonCSSPresentation</code></td>
+ <td><code>(1 &lt;&lt; 3)</code></td>
+ <td>Flag for sanitizer: Drops non-CSS presentational HTML elements and attributes, such as <a href="/ja/docs/Web/HTML/Element/font" title="フォント要素(&lt;font>)はその内包するテキストの、フォントサイズ、文字色、使用フォントを定義します。"><code>&lt;font&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/center" title="廃止済みの HTML の中央揃え要素 (&lt;center>) は、中に含まれるブロックレベルまたはインラインコンテンツを中央揃えして表示するブロックレベル要素です。"><code>&lt;center&gt;</code></a>, and the <code>bgcolor</code> attribute. </td>
+ </tr>
+ <tr>
+ <td><code>SanitizerDropForms</code></td>
+ <td><code>(1 &lt;&lt; 4)</code></td>
+ <td>Flag for sanitizer: Drops forms and form controls (excluding <a href="/ja/docs/Web/HTML/Element/fieldset" title="HTML の &lt;fieldset> 要素は、ウェブフォーム内のラベル (&lt;label>) などのようにいくつかのコントロールをグループ化するために使用します。"><code>&lt;fieldset&gt;</code></a> and <a href="/ja/docs/Web/HTML/Element/legend" title="HTML の &lt;legend> 要素は、その親要素である &lt;fieldset> の内容のキャプションを表します。"><code>&lt;legend&gt;</code></a>. </td>
+ </tr>
+ <tr>
+ <td><code>SanitizerDropMedia</code></td>
+ <td><code>(1 &lt;&lt; 5)</code></td>
+ <td>Flag for sanitizer: Drops <a href="/ja/docs/Web/HTML/Element/img" title="HTML の &lt;img> 要素は、文書に画像を埋め込みます。これは置換要素です。"><code>&lt;img&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/video" title="HTML の映像要素 (&lt;video>) は、文書中に映像再生に対応するメディアプレイヤーを埋め込みます。"><code>&lt;video&gt;</code></a>, <a href="/ja/docs/Web/HTML/Element/audio" title="この項目についての文書はまだ書かれていません。書いてみませんか?"><code>&lt;audio&gt;</code></a>, and <a href="/ja/docs/Web/HTML/Element/source" title="HTML の &lt;source> 要素は、 &lt;picture> 要素、 &lt;audio> 要素、 &lt;video> 要素に対し、複数のメディアリソースを指定します。この要素自体は空要素です。この要素は一般的に、同一のメディアコンテンツをそれぞれのブラウザーに対応した複数のメディア形式で提供する場合に用います。"><code>&lt;source&gt;</code></a>, and flattens out <a href="/en/SVG" title="en/SVG">SVG</a>. </td>
+ </tr>
+ <tr>
+ <td><code>SanitizerLogRemovals</code></td>
+ <td><code>(1 &lt;&lt; 6)</code></td>
+ <td>Flag for sanitizer: Log messages to the <a href="/en-US/docs/Tools/Browser_Console">console</a> for everything that gets sanitized.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Methods" name="Methods">メソッド</h2>
+
+<h3 id="convertToPlainText" name="convertToPlainText()">convertToPlainText()</h3>
+
+<p>Converts HTML to plain text.</p>
+
+<pre class="eval">AString convertToPlainText(
+ in AString src,
+ in unsigned long flags,
+ in unsigned long wrapCol
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>src</code></dt>
+ <dd>The HTML source to parse (C++ callers are allowed but not required to use the same string for the return value.)</dd>
+ <dt><code>flags</code></dt>
+ <dd>Conversion option flags defined in <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDocumentEncoder" title="">nsIDocumentEncoder</a></code>.</dd>
+ <dt><code>wrapCol</code></dt>
+ <dd>Number of characters per line; 0 for no auto-wrapping.</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p>The plain text conversion of the HTML specified in <code>src</code>.</p>
+
+<h3 id="parseFragment">parseFragment()</h3>
+
+<p>Parses markup into a sanitized document fragment.</p>
+
+<pre class="eval">nsIDOMDocumentFragment parseFragment(
+ in AString fragment,
+ in unsigned long flags,
+ in boolean isXML,
+ in nsIURI baseURI,
+ in nsIDOMElement element
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>fragment</code></dt>
+ <dd>The input markup.</dd>
+ <dt><code>flags</code></dt>
+ <dd>Sanitization option flags defined above.</dd>
+ <dt><code>isXML</code></dt>
+ <dd><code>true</code> if |fragment| is XML and <code>false</code> if HTML.</dd>
+ <dt><code>baseURI</code></dt>
+ <dd>The base URL for this fragment.</dd>
+ <dt><code>element</code></dt>
+ <dd>The context node for the fragment parsing algorithm.</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMDocumentFragment" title="">nsIDOMDocumentFragment</a></code> object for the resulting sanitized document fragment.</p>
+
+<h3 id="sanitize">sanitize()</h3>
+
+<p>Parses a string into an HTML document, sanitizes the document, and returns the result serialized to a string.</p>
+
+<p>The sanitizer is designed to protect against XSS when sanitized content is inserted into a different-origin context without an iframe-equivalent sandboxing mechanism.</p>
+
+<p>By default, the sanitizer doesn't try to avoid leaking information that the content was viewed to third parties. That is, by default, for example <a href="/ja/docs/Web/HTML/Element/img" title="HTML の &lt;img> 要素は、文書に画像を埋め込みます。これは置換要素です。"><code>&lt;img&gt;</code></a> with a source pointing to an HTTP server potentially controlled by a third party is not removed. To avoid ambient information leakage upon loading the sanitized content, use the <code>SanitizerInternalEmbedsOnly</code> flag. In that case, <a href="/ja/docs/Web/HTML/Element/a" title="HTML の &lt;a> 要素 (アンカー要素) は、別のウェブページ、ファイル、同一ページ内の場所、電子メールアドレス、または他の URL へのハイパーリンクを作成します。"><code>&lt;a&gt;</code></a> links (and similar) to other content are preserved, so an explicit user action (following a link) after the content has been loaded can still leak information.</p>
+
+<p>By default, non-dangerous non-CSS presentational HTML elements and attributes or forms are not removed. To remove these, use <code>SanitizerDropNonCSSPresentation</code> and/or <code>SanitizerDropForms</code>.</p>
+
+<p>By default, comments and CSS is removed. To preserve comments, use <code>SanitizerAllowComments</code>. To preserve <a href="/ja/docs/Web/HTML/Element/style" title="HTML の &lt;style> 要素は、文書あるいは文書の一部分のスタイル情報を含みます。"><code>&lt;style&gt;</code></a> elements and <code>style</code> attributes on other elements, use <code>SanitizerAllowStyle</code>. <code>-moz-binding</code> is removed from <a href="/ja/docs/Web/HTML/Element/style" title="HTML の &lt;style> 要素は、文書あるいは文書の一部分のスタイル情報を含みます。"><code>&lt;style&gt;</code></a> elements and <code>style</code> attributes if present. In this case, properties that Gecko doesn't recognize can get removed as a side effect.</p>
+
+<div class="note"><strong>Note:</strong> If <code>-moz-binding</code> is not present, <a href="/ja/docs/Web/HTML/Element/style" title="HTML の &lt;style> 要素は、文書あるいは文書の一部分のスタイル情報を含みます。"><code>&lt;style&gt;</code></a> elements and <code>style</code> attributes, and if <code>SanitizerAllowStyle</code> is specified, the sanitized content may still be XSS dangerous if loaded into a non-Gecko Web engine!</div>
+
+<pre class="eval">AString sanitize(
+ in AString src,
+ in unsigned long flags
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>src</code></dt>
+ <dd>The HTML source to parse (C++ callers are allowed but not required to use the same string for the return value).</dd>
+ <dt><code>flags</code></dt>
+ <dd>Sanitization option flags defined above.</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p>The resulting text.</p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsipassword/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsipassword/index.html
new file mode 100644
index 0000000000..8f94e59a9f
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsipassword/index.html
@@ -0,0 +1,12 @@
+---
+title: nsIPassword
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIPassword
+tags:
+ - Interfaces
+ - MDC Project
+ - NeedsContent
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIPassword
+---
+<p>nsIPassword を使ったサンプルは <a href="ja/Using_nsIPasswordManager">Using nsIPasswordManager</a> を見てください。</p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsipasswordmanager/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsipasswordmanager/index.html
new file mode 100644
index 0000000000..0464fcd2ac
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsipasswordmanager/index.html
@@ -0,0 +1,16 @@
+---
+title: nsIPasswordManager
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIPasswordManager
+tags:
+ - Interfaces
+ - 'Interfaces:Scriptable'
+ - MDC Project
+ - NeedsContent
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIPasswordManager
+---
+<p><a href="ja/Using_nsIPasswordManager">Using nsIPasswordManager</a> に使用例があります。</p>
+<div class="noinclude">
+  </div>
+<p>n</p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiplacesview/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiplacesview/index.html
new file mode 100644
index 0000000000..209b11d0dd
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiplacesview/index.html
@@ -0,0 +1,128 @@
+---
+title: nsIPlacesView
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/NsIPlacesView
+tags:
+ - Developing Mozilla
+ - Extensions
+ - Interfaces
+ - Places
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIPlacesView
+---
+<p>nsIPlacesViewインターフェイスは、ビューにとらわれずに、<a href="/ja/Displaying_Places_information_using_views" title="ja/Displaying Places information using views">Placesビュー</a>についての情報にアクセスするための<br>
+ 手段を提供します。</p>
+<p>例えば、ツリー、リスト、またはその他の類似のリストでは、選択された表現の形式が違います。コントローラーは、こういった違いに注意を払うべきではありません。生成したビューの種類に依存した、選択された表現の形式を把握するために、コントローラコードが必要とされるべきではありません。むしろ、それぞれのビューにおいて、選択した表現の形式をコントローラーが理解できる形に変換する必要があります。<code>nsIPlacesView</code>インターフェイスを実装することにより、ビューは以上の作業などを行います。</p>
+<div class="note">
+ <p><code>nsIPlacesView</code> は現在IDLが存在しません。現在、<a href="/ja/Displaying_Places_information_using_views" title="ja/Displaying Places information using views">組み込みのPlacesビュー</a>の各々に直接実装されています。</p>
+</div>
+<h2 id="Method_overview" name="Method_overview">メソッド一覧</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>nsINavHistoryResultNode[] </code><a href="#getDragableSelection()" title="#getDragableSelection()"><code>getDragableSelection</code></a><code>();</code></td>
+ </tr>
+ <tr>
+ <td><code>nsINavHistoryResultNode[][</code><code>] </code><a href="#getRemovableSelectionRanges()"><code>getRemovableSelectionRanges</code></a><code>();</code></td>
+ </tr>
+ <tr>
+ <td><code>nsINavHistoryResult </code><a href="#getResult()"><code>getResult</code></a><code>();</code></td>
+ </tr>
+ <tr>
+ <td><code>nsINavHistoryContainerResultNode </code><a href="#getResultNode()"><code>getResultNode</code></a><code>();</code></td>
+ </tr>
+ <tr>
+ <td><code>nsINavHistoryResultNode[] </code><a href="#getSelectionNodes()"><code>getSelectionNodes</code></a><code>();</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#selectAll.28.29">selectAll</a>();</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Attributes" name="Attributes">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">詳細</td>
+ </tr>
+ <tr>
+ <td><code>hasSelection</code></td>
+ <td><code>boolean</code></td>
+ <td>アイテムが選択されているかどうか。  <em>読み取り専用。</em></td>
+ </tr>
+ <tr>
+ <td><code>insertionPoint</code></td>
+ <td><code><a href="/ja/InsertionPoint" title="ja/InsertionPoint">InsertionPoint</a></code></td>
+ <td>
+ <p>新規アイテムの、ドロップ、貼り付け、または作成の際に挿入される位置(<code>InsertionPoint</code>型)。<em>読み取り専用。</em></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>place</code></td>
+ <td><code>string</code></td>
+ <td>
+ <p>ビューに表示されているルートPlaceのURI(文字列型)。これはビューの更新により、動的に変更される可能性があります。<a class="internal" href="/ja/Displaying_Places_information_using_views#Connecting_a_view_to_its_data" title="ja/Displaying Places information using
+ views#Connecting a view to its data">Displaying Places information using views</a>の例を参照してください。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>selectedNode</code></td>
+ <td><code><a href="/ja/nsINavHistoryResultNode" title="ja/nsINavHistoryResultNode">nsINavHistoryResultNode</a></code></td>
+ <td>ビュー中で選択されているノード。選択されているノードが複数ある場合、この値はnullとなります。<em>読み取り専用。</em></td>
+ </tr>
+ </tbody>
+</table>
+<p> </p>
+<h2 id="Methods" name="Methods">メソッド</h2>
+<h3 id="init.28.29" name="init.28.29">getDragableSelection()</h3>
+<p>ビューからドラッグ可能である、選択されている<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryResultNode" title="">nsINavHistoryResultNode</a></code>オブジェクトの配列を返します。</p>
+<pre class="eval">nsINavHistoryResultNode[] getDragableSelection();
+</pre>
+<h6 id="Parameters" name="Parameters">パラメータ</h6>
+<p>無し。</p>
+<h6 id="戻り値">戻り値</h6>
+<p><code>nsINavHistoryResultNode</code>オブジェクトの配列。</p>
+<h3 id="getRemovableSelection.28.29" name="getRemovableSelection.28.29">getRemovableSelectionRanges()</h3>
+<p>ビューから削除可能なnsINavHistoryResultNode オブジェクトの配列の配列を返します。内包されているそれぞれの配列は、削除されうる連続的なノードの範囲を示します。</p>
+<pre class="eval">nsINavHistoryResultNode[][] getRemovableSelectionRanges();
+</pre>
+<h6 id="Parameters" name="Parameters">パラメータ</h6>
+<p>無し。</p>
+<h6 id="Return_value_2" name="Return_value_2">戻り値</h6>
+<p><code>nsINavHistoryResultNode</code>オブジェクトの配列の配列。</p>
+<h3 id="getResult">getResult()</h3>
+<p>ビューに表示されている<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryResult" title="">nsINavHistoryResult</a></code>オブジェクトを返します。</p>
+<pre>nsINavHistoryResult getResult();
+</pre>
+<h6 id="Parameters" name="Parameters">パラメータ</h6>
+<p>無し。</p>
+<h6 id="戻り値_2">戻り値</h6>
+<p>ビューに表示されている<code>nsINavHistoryResult</code>オブジェクト。</p>
+<h3 id="getResultNode">getResultNode()</h3>
+<p>ビューの結果の、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryContainerResultNode" title="">nsINavHistoryContainerResultNode</a></code>オブジェクトのルートノードを返します。</p>
+<pre>nsINavHistoryContainerResultNode getResultNode();
+</pre>
+<h6 id="Parameters" name="Parameters">パラメータ</h6>
+<p>無し。</p>
+<h6 id="戻り値_3">戻り値</h6>
+<p>ビューの結果の、<code>nsINavHistoryContainerResultNode</code> のルート。</p>
+<h3 id="getSelection.28.29" name="getSelection.28.29">getSelectionNodes()</h3>
+<p>ビューで現在選択されている全ての<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsINavHistoryResultNode" title="">nsINavHistoryResultNode</a></code>オブジェクトの配列を返します。モデル中での現象によっては、同様のオーダー、または同様のコンテナ、同様のプロバイダであっても、ノードは必ずしも返されるというわけではありません。</p>
+<pre class="eval">nsINavHistoryResultNode[] getSelectionNodes();
+</pre>
+<h6 id="Parameters" name="Parameters">パラメータ</h6>
+<p>無し。</p>
+<h6 id="戻り値_4">戻り値</h6>
+<p>選択されている<code>nsINavHistoryResultNode</code>オブジェクトの配列。</p>
+<h3 id="selectAll.28.29" name="selectAll.28.29">selectAll()</h3>
+<p>ビューで表示されているノードを全て選択する。</p>
+<pre class="eval">void selectAll();
+</pre>
+<h6 id="Parameters" name="Parameters">パラメータ</h6>
+<p>無し。</p>
+<h3 class="editable" id="参照"><span>参照 </span></h3>
+<div class="editIcon">
+ <a href="/../../../../ja/Core_JavaScript_1.5_Reference/Global_Objects/RegExp#" style="" title="編集部分"><span class="icon"><img alt="編集部分" class="sectionedit" src="../../../../skins/common/icons/icon-trans.gif"></span></a></div>
+<ul>
+ <li><a href="/ja/Displaying_Places_information_using_views" title="ja/Displaying Places information using views">Displaying Places information using views</a></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiprefbranch/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiprefbranch/index.html
new file mode 100644
index 0000000000..8333329cce
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiprefbranch/index.html
@@ -0,0 +1,494 @@
+---
+title: nsIPrefBranch
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIPrefBranch
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIPrefBranch
+---
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/modules/libpref/public/nsIPrefBranch.idl" rel="custom">modules/libpref/public/nsIPrefBranch.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+このインターフェースは preferences dataを操作するために使われます。対応するオブジェクトはpreferences service (nsIPrefService) から取得することができ、デフォルト値やアプリケーションのuser preferencesを参照したり変更したりするために使うことができます。
+</span>
+
+<div style="background: #eee; padding: 2px;">
+継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code>
+<span style="text-align: right; float: right;">最終更新: Gecko 13 (Firefox 13 / Thunderbird 13 / SeaMonkey 2.10)</span></div>
+</div>
+<p>このオブジェクトは自身が指し示す"branch"の起点となるpreference木の"root"値を伴って生成されます。各preferencesにはこのrootに続く最後の部分のみを使ってアクセスすることができます。 例えばオブジェクトが"browser.startup."をrootとして生成された場合、"browser.startup.page"、"browser.startup.homepage"、"browser.startup.homepage_override"などに対してGet/Setを行う際には"page"、"homepage"、"homepage_override"と指定することができます。</p>
+<h2 id="Method_overview" name="Method_overview">Method overview</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#addObserver()">addObserver</a>(in string aDomain, in nsIObserver aObserver, in boolean aHoldWeak);</code> </td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#clearUserPref()">clearUserPref</a>(in string aPrefName);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#deleteBranch()">deleteBranch</a>(in string aStartingAt);</code></td>
+ </tr>
+ <tr>
+ <td><code>boolean <a href="#getBoolPref()">getBoolPref</a>(in string aPrefName);</code></td>
+ </tr>
+ <tr>
+ <td><code>string <a href="#getCharPref()">getCharPref</a>(in string aPrefName);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#getChildList()">getChildList</a>(in string aStartingAt, [optional] out unsigned long aCount, [array, size_is(aCount), retval] out string aChildArray);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#getComplexValue()">getComplexValue</a>(in string aPrefName, in nsIIDRef aType, [iid_is(aType), retval] out nsQIResult aValue);</code></td>
+ </tr>
+ <tr>
+ <td><code>long <a href="#getIntPref()">getIntPref</a>(in string aPrefName);</code></td>
+ </tr>
+ <tr>
+ <td><code>long <a href="#getPrefType()">getPrefType</a>(in string aPrefName);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#lockPref()">lockPref</a>(in string aPrefName);</code></td>
+ </tr>
+ <tr>
+ <td><code>boolean <a href="#prefHasUserValue()">prefHasUserValue</a>(in string aPrefName);</code></td>
+ </tr>
+ <tr>
+ <td><code>boolean <a href="#prefIsLocked()">prefIsLocked</a>(in string aPrefName);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#removeObserver()">removeObserver</a>(in string aDomain, in nsIObserver aObserver);</code> </td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#resetBranch()">resetBranch</a>(in string aStartingAt);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#setBoolPref()">setBoolPref</a>(in string aPrefName, in long aValue);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#setCharPref()">setCharPref</a>(in string aPrefName, in string aValue);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#setComplexValue()">setComplexValue</a>(in string aPrefName, in nsIIDRef aType, in nsISupports aValue);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#setIntPref()">setIntPref</a>(in string aPrefName, in long aValue);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#unlockPref()">unlockPref</a>(in string aPrefName);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Attributes" name="Attributes">Attributes</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">Attribute</td>
+ <td class="header">Type</td>
+ <td class="header">Description</td>
+ </tr>
+ <tr>
+ <td><code>root</code></td>
+ <td><code><a href="/en-US/docs/string" title="en/string">string</a></code></td>
+ <td>Called to get the root on which this branch is based, such as "browser.startup." <strong>Read only.</strong></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Constants" name="Constants">Constants</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">Constant</td>
+ <td class="header">Value</td>
+ <td class="header">Description</td>
+ </tr>
+ <tr>
+ <td><code>PREF_INVALID</code></td>
+ <td><code>0</code></td>
+ <td><code>long</code></td>
+ </tr>
+ <tr>
+ <td><code>PREF_STRING</code></td>
+ <td><code>32</code></td>
+ <td><code>long</code> data type.</td>
+ </tr>
+ <tr>
+ <td><code>PREF_INT</code></td>
+ <td><code>64</code></td>
+ <td><code>long</code> data type.</td>
+ </tr>
+ <tr>
+ <td><code>PREF_BOOL</code></td>
+ <td><code>128</code></td>
+ <td><code>long</code> data type.</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Methods" name="Methods">Methods</h2>
+<h3 id="addObserver">addObserver()</h3>
+<p>preference change observerを追加します。preferenceに変化があると以下の引数が<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIObserver#observe()">nsIObserver.observe()</a></code>に渡されます:</p>
+<p><code>aSubject</code> - <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIPrefBranch" title="">nsIPrefBranch</a></code> オブジェクト (this)。</p>
+<p><code>aTopic</code> - <code>NS_PREFBRANCH_PREFCHANGE_TOPIC_ID で定義される文字列。</code></p>
+<p><code>aData</code> - 変更があったpreferenceの名前(<code>aSubject</code>の"root"に対する相対値)</p>
+<p><code>aSubject.get*Pref(aData)</code> で変更後の新しい値を得ることができます。例えば observer が<code>addObserver("bar.", ...)で</code><code>"foo."を起点とするbranchに対して登録を行った場合、</code><code>"foo.bar.baz"に対する変更がその</code>observerを起こします。その時の<code>aDataは</code><code>"bar.baz"</code>になります。</p>
+<pre class="eval">void addObserver(
+ in string aDomain,
+ in nsIObserver aObserver,
+ in boolean aHoldWeak
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aDomain</code></dt>
+ <dd>
+ 変更を監視したい preference 。完全なbranchを指定することもできます。 例えば "root" <code>prefbranch</code> から <code>addObserver("foo.bar.", ...)</code> を呼ぶと <code>foo.bar.baz</code> と <code>foo.bar.bzipを監視できます</code>。</dd>
+ <dt>
+ <code>aObserver</code></dt>
+ <dd>
+ preference の変更通知を受け取るオブジェクト。</dd>
+ <dt>
+ <code>aHoldWeak</code></dt>
+ <dd>
+ <code>true</code> を指定すると <code>aObserver の weak reference を保持します。この場合オブジェクトは</code> <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupportsWeakReference" title="">nsISupportsWeakReference</a></code> インターフェースを実装する必要があり、実装されていない場合は失敗します。<code>false</code> を指定すると strong reference を保持します。</dd>
+</dl>
+<h3 id="clearUserPref" name="clearUserPref()">clearUserPref()</h3>
+<p>Called to clear a user set value from a specific preference. This will, in effect, reset the value to the default value. If no default value exists the preference will cease to exist.</p>
+<div class="blockIndicator note"><strong>註:</strong> This method does nothing if the prefbranch it is called on is a default branch.</div>
+<pre class="eval">void clearUserPref(
+ in string aPrefName
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aPrefName</code></dt>
+ <dd>
+ The preference to be cleared.</dd>
+</dl>
+<h6 id="Remarks_2">Remarks</h6>
+<div class="geckoVersionNote">
+ <div class="geckoVersionHeading">
+Gecko 6.0 note
+<div style="font-size: 9px; line-height: 1; font-style: italic;">(Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3)</div>
+</div>
+ <p>Prior to Gecko 6.0 (Firefox 6.0 / Thunderbird 6.0 / SeaMonkey 2.3), this method would throw an exception if there was no user value set for the specified preference. Now, this method never throws. Instead, it simply does nothing.</p>
+</div>
+<h3 id="deleteBranch" name="deleteBranch()">deleteBranch()</h3>
+<p>Called to remove all of the preferences referenced by this branch.</p>
+<div class="blockIndicator note"><strong>註:</strong> This method can be called on either a default or user branch but, in effect, always operates on both.</div>
+<pre class="eval">void deleteBranch(
+ in string aStartingAt
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aStartingAt</code></dt>
+ <dd>
+ The point on the branch at which to start the deleting preferences. Pass in "" to remove all preferences referenced by this branch.</dd>
+</dl>
+<h3 id="getBoolPref" name="getBoolPref()">getBoolPref()</h3>
+<p>Called to get the state of an individual boolean preference.</p>
+<pre class="eval">boolean getBoolPref(
+ in string aPrefName
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aPrefName</code></dt>
+ <dd>
+ The boolean preference to get the state of.</dd>
+</dl>
+<h6 id="Return_value" name="Return_value">Return value</h6>
+<p>The value of the requested boolean preference.</p>
+<h3 id="getCharPref" name="getCharPref()">getCharPref()</h3>
+<p>Called to get the state of an individual string preference.</p>
+<pre class="eval">string getCharPref(
+ in string aPrefName
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aPrefName</code></dt>
+ <dd>
+ The string preference to retrieve.</dd>
+</dl>
+<h6 id="Return_value" name="Return_value">Return value</h6>
+<p>Returns <code>string</code> - The value of the requested string preference.</p>
+<h3 id="getChildList" name="getChildList()">getChildList()</h3>
+<p>Returns an array of strings representing the child preferences of the <code>root</code> of this branch.</p>
+<div class="blockIndicator note"><strong>註:</strong> This method can be called on either a default or user branch but, in effect, always operates on both.</div>
+<p>(To call from javascript use <code>children = nsIPrefBranch.getChildList("",obj)</code>, which will fill in obj.value with the count and <em>return</em> an array of keys! (It is <em>not</em> void in javascript)</p>
+<pre class="eval">void getChildList(
+ in string aStartingAt,
+ out unsigned long aCount,
+ [array, size_is(aCount), retval] out string aChildArray
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aStartingAt</code></dt>
+ <dd>
+ The point on the branch at which to start enumerating the child preferences. Pass in "" to enumerate all preferences referenced by this branch.</dd>
+ <dt>
+ <code>aCount</code> <span class="inlineIndicator optional optionalInline">Optional from Gecko 2.0</span></dt>
+ <dd>
+ Receives the number of elements in the array.</dd>
+ <dt>
+ <code>aChildArray</code></dt>
+ <dd>
+ Receives the array of child preferences.</dd>
+</dl>
+<h3 id="getComplexValue" name="getComplexValue()">getComplexValue()</h3>
+<p>Called to get the state of an individual complex preference. A complex preference is a preference which represents an XPCOM object that can not be easily represented using a standard boolean, integer or string value.</p>
+<pre class="eval">void getComplexValue(
+ in string aPrefName,
+ in nsIIDRef aType,
+ [iid_is(aType), retval] out nsQIResult aValue
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aPrefName</code></dt>
+ <dd>
+ The complex preference to get the value of.</dd>
+ <dt>
+ <code>aType</code></dt>
+ <dd>
+ The XPCOM interface that this complex preference represents. Interfaces currently supported are:
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsILocalFile" title="">NsILocalFile</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsISupportsString" title="">NsISupportsString</a></code> (UniChar)</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsIPrefLocalizedString" title="">NsIPrefLocalizedString</a></code> (Localized UniChar)</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsIFileSpec" title="">NsIFileSpec</a></code> (deprecated - to be removed eventually)</li>
+ </ul>
+ </dd>
+ <dt>
+ <code>aValue</code></dt>
+ <dd>
+ The XPCOM object into which to the complex preference value should be retrieved.</dd>
+</dl>
+<h3 id="getIntPref" name="getIntPref()">getIntPref()</h3>
+<p>Called to get the state of an individual integer preference.</p>
+<pre class="eval">long getIntPref(
+ in string aPrefName
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aPrefName</code></dt>
+ <dd>
+ The integer preference to get the value of.</dd>
+</dl>
+<h6 id="Return_value" name="Return_value">Return value</h6>
+<p>Returns <code>long</code> - The value of the requested integer preference.</p>
+<h3 id="getPrefType" name="getPrefType()">getPrefType()</h3>
+<p>Called to determine the type of a specific preference.</p>
+<pre class="eval">long getPrefType(
+ in string aPrefName
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aPrefName</code></dt>
+ <dd>
+ The preference to get the type of.</dd>
+</dl>
+<h6 id="Return_value" name="Return_value">Return value</h6>
+<p>Returns <code>long</code> - A value representing the type of the preference. This value will be <code>PREF_STRING</code>, <code>PREF_INT, PREF_BOOL,</code> or <code>PREF_INVALID</code>.</p>
+<h3 id="lockPref" name="lockPref()">lockPref()</h3>
+<p>Called to lock a specific preference. Locking a preference will cause the preference service to always return the default value regardless of whether there is a user set value or not.</p>
+<div class="blockIndicator note"><strong>註:</strong> This method can be called on either a default or user branch but, in effect, always operates on the default branch.</div>
+<pre class="eval">void lockPref(
+ in string aPrefName
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aPrefName</code></dt>
+ <dd>
+ The preference to be locked.</dd>
+</dl>
+<h3 id="prefHasUserValue" name="prefHasUserValue()">prefHasUserValue()</h3>
+<p>Called to check if a specific preference has a user value associated to it.</p>
+<div class="blockIndicator note"><strong>註:</strong> This method can be called on either a default or user branch but, in effect, always operates on the user branch.</div>
+<div class="blockIndicator note"><strong>註:</strong> If a preference was manually set to a value that equals the default value, then the preference no longer has a user set value, i.e. it is considered reset to its default value. In particular, this method will return <code>false</code> for such a preference and the preference will not be saved to a file by <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIPrefService#savePrefFile()">nsIPrefService.savePrefFile()</a></code>.</div>
+<pre class="eval">boolean prefHasUserValue(
+ in string aPrefName
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aPrefName</code></dt>
+ <dd>
+ The preference to be tested.</dd>
+</dl>
+<h6 id="Return_value" name="Return_value">Return value</h6>
+<p>Returns <code>boolean</code> - <code>true</code> The preference has a user set value. <code>false</code> The preference only has a default value.</p>
+<h3 id="prefIsLocked" name="prefIsLocked()">prefIsLocked()</h3>
+<p>Called to check if a specific preference is locked. If a preference is locked calling its Get method will always return the default value.</p>
+<div class="blockIndicator note"><strong>註:</strong> This method can be called on either a default or user branch but, in effect, always operates on the default branch.</div>
+<pre class="eval">boolean prefIsLocked(
+ in string aPrefName
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aPrefName</code></dt>
+ <dd>
+ The preference to be tested.</dd>
+</dl>
+<h6 id="Return_value" name="Return_value">Return value</h6>
+<p>Returns <code>boolean</code> - <code>true</code> The preference is locked. <code>false</code> The preference is not locked.</p>
+<h3 id="removeObserver">removeObserver()</h3>
+<p>Remove a preference change observer.</p>
+<div class="blockIndicator note"><strong>註:</strong> You must call <code>removeObserver</code> method on the same nsIPrefBranch instance on which you called <a href="#addObserver()">addObserver</a> method in order to remove <code>aObserver</code>; otherwise, the observer will not be removed.</div>
+<pre class="eval"> void removeObserver(
+ in string aDomain,
+ in nsIObserver aObserver
+ );
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aDomain</code></dt>
+ <dd>
+ The preference which is being observed for changes.</dd>
+ <dt>
+ <code>aObserver</code></dt>
+ <dd>
+ An observer previously registered with <a href="#addObserver()">addObserver</a>.</dd>
+</dl>
+<h3 id="resetBranch" name="resetBranch()">resetBranch()</h3>
+<p>Called to reset all of the preferences referenced by this branch to their default values.</p>
+<div class="blockIndicator note"><strong>註:</strong> This method can be called on either a default or user branch but, in effect, always operates on the user branch.</div>
+<div class="blockIndicator note"><strong>註:</strong> As of Firefox 3.0, this function has not yet been implemented.</div>
+<pre class="eval">void resetBranch(
+ in string aStartingAt
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aStartingAt</code></dt>
+ <dd>
+ The point on the branch at which to start the resetting preferences to their default values. Pass in "" to reset all preferences referenced by this branch.</dd>
+</dl>
+<h3 id="setBoolPref" name="setBoolPref()">setBoolPref()</h3>
+<p>Called to set the state of an individual boolean preference.</p>
+<pre class="eval">void setBoolPref(
+ in string aPrefName,
+ in long aValue
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aPrefName</code></dt>
+ <dd>
+ The boolean preference to set the state of.</dd>
+ <dt>
+ <code>aValue</code></dt>
+ <dd>
+ The boolean value to set the preference to.</dd>
+</dl>
+<h3 id="setCharPref" name="setCharPref()">setCharPref()</h3>
+<p>Called to set the state of an individual string preference.</p>
+<div class="note">
+ <strong>Note:</strong> preferences システムは大量のデータを保持するようには設計されていません。全ての preferences は単一のファイルに保存されアプリケーションが立ち上がる際に読み込まれます。文字列のpreferenceが最大どれだけのデータが保存できるだろうかと疑問に思った場合は、<a href="/en-US/docs/Code_snippets/File_I_O" title="en/Code snippets/File I//O">flat file</a> や <a href="/en-US/docs/Storage" title="en/Storage">sqlite database</a> など別の方法で保存することを検討してください。</div>
+<pre class="eval">void setCharPref(
+ in string aPrefName,
+ in string aValue
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aPrefName</code></dt>
+ <dd>
+ The string preference to set.</dd>
+ <dt>
+ <code>aValue</code></dt>
+ <dd>
+ The string value to set the preference to.</dd>
+</dl>
+<h3 id="setComplexValue" name="setComplexValue()">setComplexValue()</h3>
+<p>Called to set the state of an individual complex preference. A complex preference is a preference which represents an XPCOM object that can not be easily represented using a standard boolean, integer or string value.</p>
+<pre class="eval">void setComplexValue(
+ in string aPrefName,
+ in nsIIDRef aType,
+ in nsISupports aValue
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aPrefName</code></dt>
+ <dd>
+ The complex preference to set the value of.</dd>
+ <dt>
+ <code>aType</code></dt>
+ <dd>
+ The XPCOM interface that this complex preference represents. Interfaces currently supported are:
+ <ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsILocalFile" title="">NsILocalFile</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsISupportsString" title="">NsISupportsString</a></code> (UniChar)</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsIPrefLocalizedString" title="">NsIPrefLocalizedString</a></code> (Localized UniChar)</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsIFileSpec" title="">NsIFileSpec</a></code> (deprecated - to be removed eventually)</li>
+ </ul>
+ </dd>
+ <dt>
+ <code>aValue</code></dt>
+ <dd>
+ The XPCOM object from which to set the complex preference value.</dd>
+</dl>
+<h3 id="setIntPref" name="setIntPref()">setIntPref()</h3>
+<p>Called to set the state of an individual integer preference.</p>
+<pre class="eval">void setIntPref(
+ in string aPrefName,
+ in long aValue
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aPrefName</code></dt>
+ <dd>
+ The integer preference to set the value of.</dd>
+ <dt>
+ <code>aValue</code></dt>
+ <dd>
+ The integer value to set the preference to.</dd>
+</dl>
+<h3 id="unlockPref" name="unlockPref()">unlockPref()</h3>
+<p>Called to unlock a specific preference. Unlocking a previously locked preference allows the preference service to once again return the user set value of the preference.</p>
+<div class="blockIndicator note"><strong>註:</strong> This method can be called on either a default or user branch but, in effect, always operates on the default branch.</div>
+<pre class="eval">void unlockPref(
+ in string aPrefName
+);
+</pre>
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>aPrefName</code></dt>
+ <dd>
+ The preference to be unlocked.</dd>
+</dl>
+<h2 id="Remarks" name="Remarks">Remarks</h2>
+<p>Registering as a preference observer can open an object to potential cyclical references which will cause memory leaks. These cycles generally occur because an object both registers itself as an observer (causing the branch to hold a reference to the observer) and holds a reference to the branch object for the purpose of getting/setting preference values. There are 3 approaches which have been implemented in an attempt to avoid these situations:</p>
+<ol>
+ <li>The nsPrefBranch object supports <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupportsWeakReference" title="">nsISupportsWeakReference</a></code>. Any consumer may hold a weak reference to it instead of a strong one.</li>
+ <li>The nsPrefBranch object listens for xpcom-shutdown and frees all of the objects currently in its observer list. This ensures that long lived objects (services for example) will be freed correctly.</li>
+ <li>The observer can request to be held as a weak reference when it is registered. This insures that shorter lived objects (say one tied to an open window) will not fall into the cyclical reference trap.</li>
+</ol>
+<p>The list of registered observers may be changed during the dispatch of nsPref:changed notification. However, the observers are not guaranteed to be notified in any particular order, so you can't be sure whether the added/removed observer will be called during the notification when it is added/removed. </p>
+<p>It is possible to change preferences during the notification.</p>
+<p>It is not safe to change observers during this callback in releases before <span title="(Firefox 3)">Gecko 1.9</span>. If you want a safe way to remove a preference observer, please use an <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsITimer" title="">nsITimer</a></code>.</p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiscriptableunescapehtml/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiscriptableunescapehtml/index.html
new file mode 100644
index 0000000000..52e2dc8677
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiscriptableunescapehtml/index.html
@@ -0,0 +1,104 @@
+---
+title: nsIScriptableUnescapeHTML
+slug: >-
+ Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIScriptableUnescapeHTML
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIScriptableUnescapeHTML
+---
+<p><code>nsIScriptableUnescapeHTML</code> インタフェースは HTML 文字列をアンエスケープするユーティリティ・インタフェースです。</p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/feeds/public/nsIScriptableUnescapeHTML.idl" rel="custom">toolkit/components/feeds/public/nsIScriptableUnescapeHTML.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p>
+<p>サービスとして <code>@mozilla.org/feed-unescapehtml;1</code> による実装:</p>
+<pre class="eval">var gUnescapeHTML = Components.classes["@mozilla.org/feed-unescapehtml;1"]
+ .getService(Components.interfaces.nsIScriptableUnescapeHTML);
+</pre>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>AString <a href="#unescape.28.29">unescape</a>(in AString src);</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIDOMDocumentFragment <a href="#parseFragment.28.29">parseFragment</a>(in AString fragment, in PRBool isXML, in nsIURI baseURI, in nsIDOMElement element);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="unescape.28.29" name="unescape.28.29">unescape()</h3>
+<p>文字列の全てのエンティティを Unicode 文字に変換します。</p>
+<pre class="eval"> AString unescape(
+ in AString src
+ );
+</pre>
+<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF">パラメータ</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;src&lt;/tt&gt;</dt>
+ <dd>
+ アンエスケープする HTML 文字列のポインタ。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6>
+<p>アンエスケープされた文字列。</p>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96">投げられる例外</h6>
+<dl>
+ <dt>
+ <code>NS_ERROR_FAILURE</code></dt>
+ <dd>
+ 文字列をアンエスケープできない。</dd>
+</dl>
+<h3 id="parseFragment.28.29" name="parseFragment.28.29">parseFragment()</h3>
+<p>指定された文字列を既存の DOM 要素に追加する。これは <code>nsContentUtils::CreateContextualFragment</code> のフィード特有なバージョンです。</p>
+<pre class="eval"> nsIDOMDocumentFragment parseFragment(
+ in AString fragment,
+ in PRBool isXML,
+ in nsIURI baseURI,
+ in nsIDOMElement element
+ );
+</pre>
+<h6 id=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_2" name=".E3.83.91.E3.83.A9.E3.83.A1.E3.83.BC.E3.82.BF_2">パラメータ</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;fragment&lt;/tt&gt;</dt>
+ <dd>
+ &lt;tt&gt;element&lt;/tt&gt; に追加する文字列へのポインタ。</dd>
+ <dt>
+ &lt;tt&gt;isXML&lt;/tt&gt;</dt>
+ <dd>
+ もし &lt;tt&gt;fragment&lt;/tt&gt; が XML 文字列であればこれを <code>true</code> に設定してください。そうでなければ、<code>false</code> に設定してください。</dd>
+ <dt>
+ &lt;tt&gt;baseURI&lt;/tt&gt;</dt>
+ <dd>
+ その断片に含まれる URI を解決するための base URI へのポインタ。このパラメータは <code>isXML</code> が <code>false</code> の時は無視されます。</dd>
+ <dt>
+ &lt;tt&gt;element&lt;/tt&gt;</dt>
+ <dd>
+ その断片を追加する <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMElement" title="">nsIDOMElement</a></code> へのポインタ。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6>
+<p>新しいテキストが追加された要素の <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMDocumentFragment" title="">nsIDOMDocumentFragment</a></code>。</p>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_2" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_2">投げられる例外</h6>
+<dl>
+ <dt>
+ <code>NS_ERROR_FAILURE</code></dt>
+ <dd>
+ 要素にテキストを追加できない。</dd>
+</dl>
+<h2 id=".E5.8F.82.E7.85.A7" name=".E5.8F.82.E7.85.A7">参照</h2>
+<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMDocumentFragment" title="">nsIDOMDocumentFragment</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIURI" title="">nsIURI</a></code>, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMElement" title="">nsIDOMElement</a></code></p>
+<p><span class="comment">Interwiki link</span></p>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiscriptableunicodeconverter/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiscriptableunicodeconverter/index.html
new file mode 100644
index 0000000000..512346dbed
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiscriptableunicodeconverter/index.html
@@ -0,0 +1,142 @@
+---
+title: nsIScriptableUnicodeConverter
+slug: >-
+ Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIScriptableUnicodeConverter
+tags:
+ - Interfaces
+ - 'Interfaces:Scriptable'
+ - Unicode
+ - XPCOM
+ - XPCOM Interface Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIScriptableUnicodeConverter
+---
+<div><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/intl/uconv/idl/nsIScriptableUConv.idl" rel="custom">intl/uconv/idl/nsIScriptableUConv.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+このインターフェイスは、スクリプトで使用するための Unicode エンコーダーです。
+</span>
+
+<div style="background: #eee; padding: 2px;">
+継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.8 (Firefox 1.5 / Thunderbird 1.5 / SeaMonkey 1.0)</span></div>
+</div></div>
+
+<p>Implemented by: <code>@mozilla.org/intl/scriptableunicodeconverter</code>. To create an instance, use:</p>
+
+<pre>var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
+ .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
+</pre>
+
+<h2 id="Method_overview" name="Method_overview">メソッドの概要</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>ACString <a href="/ja/docs/XPCOM_Interface_Reference/nsIScriptableUnicodeConverter#ConvertFromUnicode()" title="nsIScriptableUnicodeConverter#ConvertFromUnicode()">ConvertFromUnicode</a>(in AString aSrc);</code></td>
+ </tr>
+ <tr>
+ <td><code>ACString <a href="/ja/docs/XPCOM_Interface_Reference/nsIScriptableUnicodeConverter#Finish()" title="nsIScriptableUnicodeConverter#Finish()">Finish</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>AString <a href="/ja/docs/XPCOM_Interface_Reference/nsIScriptableUnicodeConverter#ConvertToUnicode()" title="nsIScriptableUnicodeConverter#ConvertToUnicode()">ConvertToUnicode</a>(in ACString aSrc);</code></td>
+ </tr>
+ <tr>
+ <td><code>AString <a href="/ja/docs/XPCOM_Interface_Reference/nsIScriptableUnicodeConverter#convertFromByteArray()" title="nsIScriptableUnicodeConverter#convertFromByteArray()">convertFromByteArray</a>([const,array,size_is(aCount)] in octet aData, in unsigned long aCount);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="/ja/docs/XPCOM_Interface_Reference/nsIScriptableUnicodeConverter#convertToByteArray()" title="nsIScriptableUnicodeConverter#convertToByteArray()">convertToByteArray</a>(in AString aString,[optional] out unsigned long aLen,[array, size_is(aLen),retval] out octet aData);</code></td>
+ </tr>
+ <tr>
+ <td><code><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIInputStream" title="">nsIInputStream</a></code> <a href="/ja/docs/XPCOM_Interface_Reference/nsIScriptableUnicodeConverter#convertToInputStream()" title="nsIScriptableUnicodeConverter#convertToInputStream()">convertToInputStream</a>(in AString aString);</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Attributes" name="Attributes">属性</h2>
+
+<table class="standard-table" style="width: auto;">
+ <tbody>
+ <tr>
+ <td class="header">属性名</td>
+ <td class="header">型</td>
+ <td class="header">概要</td>
+ </tr>
+ <tr>
+ <td><code>charset</code></td>
+ <td><code>string</code></td>
+ <td>現在の文字セット。要求された文字セットがサポートされていない場合、 <code>NS_ERROR_UCONV_NOCONV</code> がスローされる。</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Methods" name="Methods">メソッド</h2>
+
+<h3 id="ConvertFromUnicode" name="ConvertFromUnicode()">ConvertFromUnicode()</h3>
+
+<p>Converts the data from Unicode to one Charset. Returns the converted string. After converting, Finish should be called and its return value appended to this return value.</p>
+
+<pre>ACString ConvertFromUnicode(
+ in AString aSrc
+);
+</pre>
+
+<h3 id="Finish" name="Finish()">Finish()</h3>
+
+<p>Returns the terminator string. Should be called after ConvertFromUnicode() and appended to that function's return value.</p>
+
+<pre>ACString Finish();
+</pre>
+
+<h3 id="ConvertToUnicode" name="ConvertToUnicode()">ConvertToUnicode()</h3>
+
+<p>Converts the data from one Charset to Unicode.</p>
+
+<pre>AString ConvertToUnicode(
+ in ACString aSrc
+);
+</pre>
+
+<h3 id="convertFromByteArray" name="convertFromByteArray()">convertFromByteArray()</h3>
+
+<p>Converts an array of bytes to a unicode string.</p>
+
+<pre>AString convertFromByteArray(
+ [const,array,size_is(aCount)] in octet aData,
+ in unsigned long aCount
+);
+</pre>
+
+<h3 id="convertToByteArray" name="convertToByteArray()">convertToByteArray()</h3>
+
+<p>Convert a unicode string to an array of bytes. Finish does not need to be called.</p>
+
+<pre>void convertToByteArray(in AString aString,
+ out unsigned long aLen, <span class="inlineIndicator optional optionalInline">Optional</span>
+ [array, size_is(aLen),retval] out octet aData
+);
+</pre>
+
+<h3 id="convertToInputStream" name="convertToInputStream()">convertToInputStream()</h3>
+
+<p>Converts a Unicode string to an input stream. The bytes in the stream are encoded according to the <code>charset</code> attribute. The returned stream is non-blocking.</p>
+
+<pre>nsIInputStream convertToInputStream(
+ in AString aString
+);
+</pre>
+
+<h6 id="convertToInputStream-Parameters" name="convertToInputStream-Parameters">引数</h6>
+
+<dl>
+ <dt><code>aString</code></dt>
+ <dd>The text to encode to the stream. The text is encoded into the character set specified by the <code>charset</code> attribute.</dd>
+</dl>
+
+<h6 id="convertToInputStream-Return_value" name="convertToInputStream-Return_value">戻り値</h6>
+
+<p>An <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIInputStream" title="">nsIInputStream</a></code> that will present the text specified in <code>aString</code> as its data.</p>
+
+<h2 id="Examples" name="Examples">例</h2>
+
+<p>See <a href="/ja/docs/Reading_textual_data" title="Reading_textual_data">Reading textual data</a> and <a href="/ja/docs/Writing_textual_data" title="Writing_textual_data">Writing textual data</a> for examples.</p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsisessionstore/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsisessionstore/index.html
new file mode 100644
index 0000000000..b77b282637
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsisessionstore/index.html
@@ -0,0 +1,419 @@
+---
+title: nsISessionStore
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsISessionStore
+tags:
+ - Interfaces
+ - 'Interfaces:Scriptable'
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsISessionStore
+---
+<p><code>nsISessionStore</code> インタフェースは、ブラウザのセッション、タブやウィンドウと関連付けてデータを保存する手段を拡張機能やコードへ提供します。 <a href="ja/Session_store_API">Session store API</a> も参照してください。</p>
+<p>この API は最上位の <code>browser.xul</code> ウィンドウに対して機能します。詳細については <a href="#Note_on_windows">#Note on windows</a> を参照してください。</p>
+<p>APIの呼び出しを成功させるためには、ユーザ設定値 <code><b>browser.sessionstore.enabled</b></code> は true でなければなりません。 <a class="external" href="http://kb.mozillazine.org/Browser.sessionstore.enabled"> を参照してください。 </a></p>
+<p><br>
+ <a class="external" href="http://kb.mozillazine.org/Browser.sessionstore.enabled"></a></p><div style="border: solid #ddd 2px; margin-bottom: 12px;"><a class="external" href="http://kb.mozillazine.org/Browser.sessionstore.enabled">
+</a><div style="background: #eee; padding: 2px;"><a class="external" href="http://kb.mozillazine.org/Browser.sessionstore.enabled"><code></code></a><code><a href="https://dxr.mozilla.org/mozilla-central/source/browser/components/sessionstore/nsISessionStore.idl" rel="custom">browser/components/sessionstore/nsISessionStore.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.8.1 (Firefox 2 / Thunderbird 2 / SeaMonkey 1.1)</span></div>
+</div>
+<p><a class="external" href="http://kb.mozillazine.org/Browser.sessionstore.enabled">継承元: </a><a href="ja/NsISupports">nsISupports</a></p>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="ja/NsISessionStore#deleteTabValue.28.29">deleteTabValue</a>(in nsIDOMNode aTab, in AString aKey);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="ja/NsISessionStore#deleteWindowValue.28.29">deleteWindowValue</a>(in nsIDOMWindow aWindow, in AString aKey);</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIDOMNode <a href="ja/NsISessionStore#duplicateTab.28.29">duplicateTab</a>(in nsIDOMWindow aWindow, in nsIDOMNode aTab);</code> </td>
+ </tr>
+ <tr>
+ <td><code>AString <a href="ja/NsISessionStore#getBrowserState.28.29">getBrowserState</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>unsigned long <a href="ja/NsISessionStore#getClosedTabCount.28.29">getClosedTabCount</a>(in nsIDOMWindow aWindow);</code></td>
+ </tr>
+ <tr>
+ <td><code>AString <a href="ja/NsISessionStore#getClosedTabData.28.29">getClosedTabData</a>(in nsIDOMWindow aWindow);</code></td>
+ </tr>
+ <tr>
+ <td><code>AString <a href="ja/NsISessionStore#getTabState.28.29">getTabState</a>(in nsIDOMNode aTab);</code> </td>
+ </tr>
+ <tr>
+ <td><code>AString <a href="ja/NsISessionStore#getTabValue.28.29">getTabValue</a>(in nsIDOMNode aTab, in AString aKey);</code></td>
+ </tr>
+ <tr>
+ <td><code>AString <a href="ja/NsISessionStore#getWindowState.28.29">getWindowState</a>(in nsIDOMWindow aWindow);</code></td>
+ </tr>
+ <tr>
+ <td><code>AString <a href="ja/NsISessionStore#getWindowValue.28.29">getWindowValue</a>(in nsIDOMWindow aWindow, in AString aKey);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="ja/NsISessionStore#init.28.29">init</a>(in nsIDOMWindow aWindow);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="ja/NsISessionStore#persistTabAttribute.28.29">persistTabAttribute</a>(in AString aName);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="ja/NsISessionStore#setBrowserState.28.29">setBrowserState</a>(in AString aState);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="ja/NsISessionStore#setTabState.28.29">setTabState</a>(in nsIDOMNode aTab, in AString aState);</code> </td>
+ </tr>
+ <tr>
+ <td><code>void <a href="ja/NsISessionStore#setTabValue.28.29">setTabValue</a>(in nsIDOMNode aTab, in AString aKey, in AString aStringValue);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="ja/NsISessionStore#setWindowState.28.29">setWindowState</a>(in nsIDOMWindow aWindow, in AString aState, in boolean aOverwrite);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="ja/NsISessionStore#setWindowValue.28.29">setWindowValue</a>(in nsIDOMWindow aWindow, in AString aKey, in AString aStringValue);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="ja/NsISessionStore#undoCloseTab.28.29">undoCloseTab</a>(in nsIDOMWindow aWindow, in unsigned long aIndex);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="deleteTabValue.28.29" name="deleteTabValue.28.29">deleteTabValue()</h3>
+<p>指定されたウィンドウ<span style="color: darkgreen; background: #ef9;">【訳注: 「タブ」の誤り?】</span>から値を削除する。</p>
+<pre class="eval"> void deleteTabValue(
+ in nsIDOMNode aTab,
+ in AString aKey
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aTab&lt;/tt&gt;</dt>
+ <dd>
+ どのタブから値を削除するか。</dd>
+ <dt>
+ &lt;tt&gt;aKey&lt;/tt&gt;</dt>
+ <dd>
+ どのキーに対する値を削除するか。</dd>
+</dl>
+<h3 id="deleteWindowValue.28.29" name="deleteWindowValue.28.29">deleteWindowValue()</h3>
+<p>指定されたウィンドウから値を削除する。</p>
+<pre class="eval"> void deleteWindowValue(
+ in nsIDOMWindow aWindow,
+ in AString aKey
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aWindow&lt;/tt&gt;</dt>
+ <dd>
+ どのウィンドウから値を削除するか。</dd>
+ <dt>
+ &lt;tt&gt;aKey&lt;/tt&gt;</dt>
+ <dd>
+ どのキーに対する値を削除するか。</dd>
+</dl>
+<h3 id="duplicateTab.28.29" name="duplicateTab.28.29">duplicateTab()</h3>
+<div class="blockIndicator standardNote">
+ <p><a href="https://developer.mozilla.org/ja/docs/Mozilla/Firefox/Releases/3">Firefox 3 における注記</a></p>
+ <p style="font-weight: 400;">このメソッドは Firefox 3 にて導入されました。</p>
+</div> 指定されたタブをできるだけ完全な形で複製する。
+<pre class="eval"> nsIDOMNode duplicateTab(
+ in nsIDOMWindow aWindow,
+ in nsIDOMNode aTab
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aWindow&lt;/tt&gt;</dt>
+ <dd>
+ 複製するタブが属するウィンドウ。</dd>
+ <dt>
+ &lt;tt&gt;aTab&lt;/tt&gt;</dt>
+ <dd>
+ 複製するタブ。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6>
+<p>新しいタブを表す <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIDOMNode" title="">nsIDOMNode</a></code> で、その内容は &lt;tt&gt;aTab&lt;/tt&gt; の複製である。</p>
+<h3 id="getBrowserState.28.29" name="getBrowserState.28.29">getBrowserState()</h3>
+<p>すべてのウィンドウとそのすべてのタブを含む、ブラウザ全体の現在の状態を返す。</p>
+<pre class="eval"> AString getBrowserState();
+</pre>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6>
+<p>ブラウザ上のすべてのウィンドウについて、現在の状態を表す <a href="ja/JSON">JSON</a> 文字列。</p>
+<h3 id="getClosedTabCount.28.29" name="getClosedTabCount.28.29">getClosedTabCount()</h3>
+<p>引数で渡されたウィンドウについて、何個のタブを復元できるかを返す。</p>
+<pre class="eval"> unsigned long getClosedTabCount(
+ in nsIDOMWindow aWindow
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aWindow&lt;/tt&gt;</dt>
+ <dd>
+ どのウィンドウから復元可能なタブの個数を取得するか。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_3" name=".E6.88.BB.E3.82.8A.E5.80.A4_3">戻り値</h6>
+<p>そのウィンドウの復元可能なタブの個数。</p>
+<h3 id="getClosedTabData.28.29" name="getClosedTabData.28.29">getClosedTabData()</h3>
+<p>指定されたウィンドウについて、閉じたタブのリストを返す。</p>
+<pre class="eval"> AString getClosedTabData(
+ in nsIDOMWindow aWindow
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aWindow&lt;/tt&gt;</dt>
+ <dd>
+ どのウィンドウからタブのリストを取得するか。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_4" name=".E6.88.BB.E3.82.8A.E5.80.A4_4">戻り値</h6>
+<p>&lt;tt&gt;aWindow&lt;/tt&gt; で指定したウィンドウについての閉じたタブのリストを表す JSON 文字列。リストは Last In / First Out (LIFO) の順序であり、リストの先頭のアイテムは最後に閉じられたタブである。</p>
+<h3 id="getTabState.28.29" name="getTabState.28.29">getTabState()</h3>
+<div class="blockIndicator standardNote">
+ <p><a href="https://developer.mozilla.org/ja/docs/Mozilla/Firefox/Releases/3">Firefox 3 における注記</a></p>
+ <p style="font-weight: 400;">このメソッドは Firefox 3 にて導入されました。</p>
+</div> 指定されたタブの状態を返す。
+<pre class="eval"> AString getTabState(
+ in nsIDOMNode aTab
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_6" name=".E5.BC.95.E6.95.B0_6">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aTab&lt;/tt&gt;</dt>
+ <dd>
+ どのタブの状態を返すか。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_5" name=".E6.88.BB.E3.82.8A.E5.80.A4_5">戻り値</h6>
+<p>指定されたタブの状態を表す JSON 文字列。</p>
+<div class="blockIndicator note"><strong>註:</strong> 戻り値の文字列は Cookie を含みません。もし Cookie も取得したいのであれば、代わりに <code><a href='"#getWindowState.28.29"'>getWindowState()</a></code> を使う必要があります。</div>
+<h3 id="getTabValue.28.29" name="getTabValue.28.29">getTabValue()</h3>
+<p>引数で渡されたウィンドウについて、キーに対応する値を返す。</p>
+<pre class="eval"> AString getTabValue(
+ in nsIDOMNode aTab,
+ in AString aKey
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_7" name=".E5.BC.95.E6.95.B0_7">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aTab&lt;/tt&gt;</dt>
+ <dd>
+ どのタブから値を取得するか。</dd>
+ <dt>
+ &lt;tt&gt;aKey&lt;/tt&gt;</dt>
+ <dd>
+ どのキーに対応する値を取得するか。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_6" name=".E6.88.BB.E3.82.8A.E5.80.A4_6">戻り値</h6>
+<p><code><a href="ja/NsISessionStore#setTabValue.28.29">setTabValue()</a></code> によって以前に &lt;tt&gt;aKey&lt;/tt&gt; に対して割り当てられた文字列の値。</p>
+<h3 id="getWindowState.28.29" name="getWindowState.28.29">getWindowState()</h3>
+<p>ブラウザ上の指定されたひとつのウィンドウについて、現在の状態を返す。</p>
+<pre class="eval"> AString getWindowState(
+ in nsIDOMWindow aWindow
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_8" name=".E5.BC.95.E6.95.B0_8">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aWindow&lt;/tt&gt;</dt>
+ <dd>
+ どのウィンドウの状態から状態を取得するか。 <a href="#Note_on_windows">#Note on windows</a> を参照。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_7" name=".E6.88.BB.E3.82.8A.E5.80.A4_7">戻り値</h6>
+<p>&lt;tt&gt;aWindow&lt;/tt&gt; によって指定されたウィンドウのみを含む、セッション状態を表す <a href="ja/JSON">JSON</a> 文字列。</p>
+<p>browser.sessionstate.enabled が false の場合にこのメソッドを呼び出すと、 "aWindows[i] has no properties" というメッセージの例外が発生する。</p>
+<h3 id="getWindowValue.28.29" name="getWindowValue.28.29">getWindowValue()</h3>
+<p>あるウィンドウについて、引数で指定されたキーと関連付けられた値を返す。</p>
+<pre class="eval"> AString getWindowValue(
+ in nsIDOMWindow aWindow,
+ in AString aKey
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_9" name=".E5.BC.95.E6.95.B0_9">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aWindow&lt;/tt&gt;</dt>
+ <dd>
+ どのウィンドウから値を取得するか。</dd>
+ <dt>
+ &lt;tt&gt;aKey&lt;/tt&gt;</dt>
+ <dd>
+ どのキーに対応する値を取得するか。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_8" name=".E6.88.BB.E3.82.8A.E5.80.A4_8">戻り値</h6>
+<p>指定されたキーに対して以前保存された文字列の値。もしキーに対する値がセットされていなければ、空の文字列を返す。</p>
+<h3 id="init.28.29" name="init.28.29">init()</h3>
+<p>セッションストアサービスを初期化する。</p>
+<div class="note">
+ <b>注意:</b> この関数はブラウザのみから利用されることを意図しており、拡張機能はこれを呼び出すべきではありません。</div>
+<pre class="eval"> void init(
+ in nsIDOMWindow aWindow
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_10" name=".E5.BC.95.E6.95.B0_10">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aWindow&lt;/tt&gt;</dt>
+ <dd>
+ どのウィンドウに対してサービスを初期化するか。</dd>
+</dl>
+<h3 id="setBrowserState.28.29" name="setBrowserState.28.29">setBrowserState()</h3>
+<p>現在のブラウザの状態をセットする。</p>
+<pre class="eval"> void setBrowserState(
+ in AString aState
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_11" name=".E5.BC.95.E6.95.B0_11">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aState&lt;/tt&gt;</dt>
+ <dd>
+ 使用するセッション状態を表す JSON 文字列。</dd>
+</dl>
+<div class="note">
+ <b>注意:</b> <code>setBrowserState()</code> を呼び出すと、現在のセッションが直ちに置き換わり、引数 &lt;tt&gt;aState&lt;/tt&gt; で渡したアプリケーション全体の状態が復元されます。</div>
+<h3 id="persistTabAttribute.28.29" name="persistTabAttribute.28.29">persistTabAttribute()</h3>
+<p>すべての XUL のタブに対して、保存と復元を行う tab 要素の属性名をセットする。</p>
+<pre class="eval"> void persistTabAttribute(
+ in AString aName
+ );
+</pre>
+<div class="note">
+ <b>注意:</b> 今のところ、どのタブに対して永続化する属性をセットするかを選択する手段はありません。このメソッドはすべてのタブに対して区別無く影響します。</div>
+<h6 id=".E5.BC.95.E6.95.B0_12" name=".E5.BC.95.E6.95.B0_12">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aName&lt;/tt&gt;</dt>
+ <dd>
+ すべてのタブに対して、保存復元する属性の名前。</dd>
+</dl>
+<h3 id="setTabState.28.29" name="setTabState.28.29">setTabState()</h3>
+<div class="blockIndicator standardNote">
+ <p><a href="https://developer.mozilla.org/ja/docs/Mozilla/Firefox/Releases/3">Firefox 3 における注記</a></p>
+ <p style="font-weight: 400;">このメソッドは Firefox 3 にて導入されました。</p>
+</div> 指定されたタブに対して、状態をセットする。
+<pre class="eval"> void setTabState(
+ in nsIDOMNode aTab,
+ in AString aState
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_13" name=".E5.BC.95.E6.95.B0_13">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aTab&lt;/tt&gt;</dt>
+ <dd>
+ どのタブへ状態をセットするか。</dd>
+ <dt>
+ &lt;tt&gt;aState&lt;/tt&gt;</dt>
+ <dd>
+ タブへセットする、タブの状態を表す JSON 文字列。例えば <code><a href="#getTabState.28.29">getTabState()</a></code> によって取得したもの。</dd>
+</dl>
+<h3 id="setTabValue.28.29" name="setTabValue.28.29">setTabValue()</h3>
+<p>タブに対して指定されたキーに対する値をセットする。</p>
+<pre class="eval"> void setTabValue(
+ in nsIDOMNode aTab,
+ in AString aKey,
+ in AString aStringValue
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_14" name=".E5.BC.95.E6.95.B0_14">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aTab&lt;/tt&gt;</dt>
+ <dd>
+ どのタブに対して値をセットするか。</dd>
+ <dt>
+ &lt;tt&gt;aKey&lt;/tt&gt;</dt>
+ <dd>
+ どのキーに対する値をセットするか。</dd>
+ <dt>
+ &lt;tt&gt;aStringValue&lt;/tt&gt;</dt>
+ <dd>
+ キー &lt;tt&gt;aKey&lt;/tt&gt; に対する値としてセットする文字列。 JavaScript のオブジェクトについては <code><a href="ja/ToSource">toSource()</a></code> メソッドを利用することができる。また、 <code><a href="ja/Eval">eval()</a></code> 関数を使うことによって、より複雑なデータ(あるいはオブジェクト全体までも)が値として割り当てることができる。</dd>
+</dl>
+<h3 id="setWindowState.28.29" name="setWindowState.28.29">setWindowState()</h3>
+<p>保存された状態を引数として渡し、ひとつのウィンドウへ状態をセットする。</p>
+<pre class="eval"> void setWindowState(
+ in nsIDOMWindow aWindow,
+ in AString aState,
+ in boolean aOverwrite
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_15" name=".E5.BC.95.E6.95.B0_15">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aWindow&lt;/tt&gt;</dt>
+ <dd>
+ &lt;tt&gt;aState&lt;/tt&gt; で示した状態をどの <a href="ja/NsIDOMWindow">ブラウザウィンドウ</a> に対してセットするか。</dd>
+ <dt>
+ &lt;tt&gt;aState&lt;/tt&gt;</dt>
+ <dd>
+ 指定したウィンドウに対して適用する、保存された状態。</dd>
+ <dt>
+ &lt;tt&gt;aOverwrite&lt;/tt&gt;</dt>
+ <dd>
+ もしこの引数が <code>true</code> であるなら、現在開かれているすべてのタブは削除され、状態 &lt;tt&gt;aState&lt;/tt&gt; のタブへと置き換わります。もし <code>false</code> であれば、ウィンドウにすでにあるタブに &lt;tt&gt;aState&lt;/tt&gt; のタブが追加されます。</dd>
+</dl>
+<h3 id="setWindowValue.28.29" name="setWindowValue.28.29">setWindowValue()</h3>
+<p>指定したウィンドウに対し、引数で渡したキーに対応する値をセットする。</p>
+<pre class="eval"> void setWindowValue(
+ in nsIDOMWindow aWindow,
+ in AString aKey,
+ in AString aStringValue
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_16" name=".E5.BC.95.E6.95.B0_16">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aWindow&lt;/tt&gt;</dt>
+ <dd>
+ どのウィンドウに対して値をセットするか。</dd>
+ <dt>
+ &lt;tt&gt;aKey&lt;/tt&gt;</dt>
+ <dd>
+ どのキーに対する値をセットするか。</dd>
+ <dt>
+ &lt;tt&gt;aStringValue&lt;/tt&gt;</dt>
+ <dd>
+ キー &lt;tt&gt;aKey&lt;/tt&gt; に対する値としてセットする文字列。 JavaScript のオブジェクトについては <code><a href="ja/ToSource">toSource()</a></code> メソッドを利用することができる。また、 <code><a href="ja/Eval">eval()</a></code> 関数を使うことによって、より複雑なデータ(あるいはオブジェクト全体までも)が値として割り当てることができる。</dd>
+</dl>
+<h3 id="undoCloseTab.28.29" name="undoCloseTab.28.29">undoCloseTab()</h3>
+<p>指定したウィンドウにて、閉じたタブを開きなおす。</p>
+<pre class="eval"> void undoCloseTab(
+ in nsIDOMWindow aWindow,
+ in unsigned long aIndex
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_17" name=".E5.BC.95.E6.95.B0_17">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;aWindow&lt;/tt&gt;</dt>
+ <dd>
+ どのウィンドウで閉じたタブを開きなおすか。</dd>
+ <dt>
+ &lt;tt&gt;aIndex&lt;/tt&gt;</dt>
+ <dd>
+ 閉じたタブのうち、どのインデックス番号のタブを復元するか。この値は、0よりも大きく、 <code><a href="ja/NsISessionStore#getClosedTabCount.28.29">getClosedTabCount()</a></code> で返される値よりも小さくなければならない。閉じたタブのリストは Last In / First Out (LIFO) の順序で保存されており、インデックス番号が0のタブは最後に閉じたタブである。</dd>
+</dl>
+<h2 id="Note_on_windows" name="Note_on_windows">Note on windows</h2>
+<p>The <code>nsISessionStore</code> API stores state information for certain windows inside the web brower. These windows are nsIDOMWindow objects that contain the <code>tabbrowser</code> that users see as tabs; the document in these windows is <code>browser.xul</code>.</p>
+<p>For many extensions, those that overlay <code>browser.xul</code>, the appropriate window object for <code>nsISessionStore</code> is the global object <code>'window'</code>.</p>
+<p>For Javascript running in windows other than the one you want to use in <code>nsISessionStore</code>, you need a <code>nsIDOMWindow</code> object containing <code>browser.xul</code>. This will be the outermost or root <code>nsIDOMWindow</code> in a <code>nsIXULWindow</code> (the window seen by users as a moveable frame on the display). This kind of DOMWindow object can be obtained from other <code>nsIDOMWindow</code> objects (like the sidebar window object) by applying the 'mainWindow' statement from <a href="ja/Working_with_windows_in_chrome_code">Working_with_windows_in_chrome_code</a>. This outermost or root window can also be obtained from the list returned by <code>nsIWindowMediator</code>; see example #3 in <a href="ja/Working_with_windows_in_chrome_code">Working_with_windows_in_chrome_code</a>. It can also be obtained from an <code>nsIXULWindow</code> using</p>
+<pre class="eval">if (xul_win.docShell instanceof nsIInterfaceRequestor) {
+ var win = xul_win.docShell.getInterface(nsIDOMWindow);
+ ...
+</pre>
+<h2 id=".E5.8F.82.E8.80.83" name=".E5.8F.82.E8.80.83">参考</h2>
+<p><a href="ja/NsISupports">nsISupports</a></p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsisupports_proxies/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsisupports_proxies/index.html
new file mode 100644
index 0000000000..05589a89d5
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsisupports_proxies/index.html
@@ -0,0 +1,89 @@
+---
+title: nsISupports proxies
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsISupports_proxies
+tags:
+ - MDC Project
+ - NeedsUpdate
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsISupports_proxies
+---
+<p>この文脈において、「プロキシ」とは、<code><a href="ja/NsISupports">nsISupports</a></code> から派生していてタイプライブラリを持つ任意のクラスのメソッドが、任意のプロセス中のスレッドにおいて呼び出しを行えるようにするスタブオブジェクトのことです。</p>
+<p>nsISupports プロキシが必要な主な理由は、JavaScript と UI が一つのスレッド上にあることです。ひとつのスレッドがビジーの場合、他のスレッドはブロックされます。このことの良い例が XPInstall です。そのインストールスクリプトは、小さくかつ速く走る、多くの JavaScript とは異なっています。XPInstall インストールスクリプトは、しばしばとても複雑であり、また、解凍のためやネイティブなファイルシステムの動作のために、長い実行時間を要求します。もし XPInstall が UI スレッドの上で動作するのであれば、製品はスクリプトが完了するまで動作できなくなるでしょう。これは、あきらかにまずいです。このため、XPInstall は、それ自身のスレッドに移動します。現在 XPInstall は、製品が動作している時に、インストールを実行できます。しかし、現在 XPInstall はプログレスメーターや確認ダイアログのようなUI要素にアクセスできません。分離した非 UI スレッドが UI スレッド上で動作しているかのように見せるにはどうしたらよいでしょう。ここで、<code>nsISupports</code> プロキシのユーティリティを使います。</p>
+<p>Seamonkey にかかわっている他の人々も同様の解決策を望んでいると思います。このドキュメントでは、nsISupports プロキシの使い方を説明しようと思います。また、<a class="external" href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/78236a4b312a2de4/939240fc3f5123a8?lnk=st&amp;rnum=1#939240fc3f5123a8"> もご参照ください。 </a></p>
+<h3 id=".E3.81.A9.E3.81.86.E3.82.84.E3.81.A3.E3.81.A6.E4.BD.BF.E3.81.86.E3.81.8B.EF.BC.9F" name=".E3.81.A9.E3.81.86.E3.82.84.E3.81.A3.E3.81.A6.E4.BD.BF.E3.81.86.E3.81.8B.EF.BC.9F"><a class="external" href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/78236a4b312a2de4/939240fc3f5123a8?lnk=st&amp;rnum=1#939240fc3f5123a8">どうやって使うか? </a></h3>
+<div class="note">
+ <p><a class="external" href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/78236a4b312a2de4/939240fc3f5123a8?lnk=st&amp;rnum=1#939240fc3f5123a8">Mozilla 1.9 で API に変更が行われましたが、以下のコードは更新されていません。更新後のインターフェースとドキュメントは <code></code></a><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/proxy/public/nsIProxyObjectManager.idl" rel="custom">xpcom/proxy/public/nsIProxyObjectManager.idl</a></code> をご覧ください。<a class="external" href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/78236a4b312a2de4/939240fc3f5123a8?lnk=st&amp;rnum=1#939240fc3f5123a8"> もご参照ください。 </a></p>
+</div>
+<p><a class="external" href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/78236a4b312a2de4/939240fc3f5123a8?lnk=st&amp;rnum=1#939240fc3f5123a8">ユーザの視点からいうと、</a><code><a href="ja/NsIProxyObjectManager">nsIProxyObjectManager</a></code> を調べるだけです。これには、二つの入口点があります。</p>
+<pre class="eval">NS_IMETHOD GetProxyForObject(nsIEventQueue *destQueue,
+ const nsIID &amp; iid,
+ nsISupports *object,
+ PRInt32 proxyType,
+ void * *result);
+
+NS_IMETHOD GetProxy(nsIEventQueue *destQueue,
+ const nsIID &amp; cid,
+ nsISupports *aOuter,
+ const nsIID &amp; iid,
+ PRInt32 proxyType,
+ void * *result);
+</pre>
+<p>2 つの API は基本的に同じです。違いは、最初の方はすでに作成した <code>object</code> オブジェクトを受け入れるのに対し、後の方は中でオブジェクトを作成することです。この生成は、目的のイベントキューで起きます。例えば、もしオブジェクトをリモートで使うだけでなく、リモートで作成したい場合、2 番目の API を使う必要があります。</p>
+<p>要求した IID はタイプライブラリの中に存在しなければ
+ <i>
+ なりません</i>
+ 。このことは、それに対する IDL とタイプライブラリを作成しておかなければならないことを意味します。もしそうしない場合や私が何を言っているのか理解できない場合は、 <a class="external" href="http://www.mozilla-japan.org/scriptable/" rel="freelink">http://www.mozilla-japan.org/scriptable/</a> を見てください</p>
+<p><code>proxyType</code> パラメータは、2 つのフラグのどちらかをとります。<code>PROXY_SYNC</code> または <code>PROXY_ASYNC</code> です。これら 2 つのフラグは、どちらも <code>PROXY_ALWAYS</code> と OR をとることができます。</p>
+<p><code>PROXY_ALWAYS</code> は、現在のスレッドがなんであれ、プロキシオブジェクトがいつも作られることを保証します。もしこのフラグがセットされていなければ、プロキシオブジェクトマネージャは、現在のスレッド上のイベントキューと渡されてきたイベントキューを比較します。もしこれらが一致したら、
+ <i>
+ プロキシ化されていない</i>
+ 、そのままのオブジェクトを返します。ほとんどの場合は、あなたはこのフラグをセットしたいでしょう。</p>
+<p><code>PROXY_SYNC</code> は、メソッドが目的のスレッド上で実行されるまで、呼び出しているスレッドをブロックするため、単なる関数呼び出しを行っているように振舞います。これが通常でかつデフォルトの場合です。</p>
+<p>一方、<code>PROXY_ASYNC</code> は、「飛んでいって (戻るのを) 忘れてしまう」メソッド呼び出しです。このフラグで作成されたオブジェクトでの呼び出しは、直ちに復帰し、復帰情報は失われます。NS_OK が (復帰値として) 返ってきます。</p>
+<div class="warning">
+ <code>PROXY_ASYNC</code> についての<b>警告</b>:
+ <p>このフラグを使う際には、よく気をつける必要があります。呼び出しているスレッドが終了した時、呼び出し側のスタックにアクセスしているすべてのメソッドが失敗します。例えば:</p>
+ <pre class="eval"> myFoo-&gt;bar(&amp;x)
+
+ ... スレッドが終了してしまう ...
+
+ bar(PRInt32 *x)
+ {
+ ...
+ *x = 0; &lt;----- ここで失敗します
+ }
+</pre>
+</div>
+<p>そのため、メソッドを実行するためのイベントキュー、そして作成された <code>nsISupports</code> オブジェクトや CID そしてフラグが渡されて、新しい <code>nsISupports</code> プロキシオブジェクトが返ってきます。一旦プロキシオブジェクトを手にすると、それをあたかも「本当の」オブジェクトであるかのように扱うことができます。「本当の」オブジェクトでのすべてのメソッドに対して、プロキシオブジェクトがスタブの役目を果たします。プロキシオブジェクトの使用が終わったら <code><a href="ja/NS_RELEASE">NS_RELEASE</a></code> を呼び出すべきです。これにより、自分自身と同様に「本当の」オブジェクトの解放も行います。自分でオブジェクトを作ってから、プロキシを作ったのであれば、少なくとも参照カウントが 2 でなければならないことに注意してください。(ひとつがプロキシのため、もうひとつは <code>GetProxyObject</code> の呼び出しで渡して作成したオブジェクトのためです。それに、その他の参照カウントが足されます。)</p>
+<p>ここでは、<code>GetProxyObject</code> に対してどのようにイベントキューを提供するかということを取り上げます。二つの可能性があります。ひとつは、興味を持っているイベントキューを知っている場合です。この場合、単にそれを使ってください。ほとんどの場合では、メイン UI スレッド (一種の基本的なスレッド) が必要でしょう。もしその場合、イベントキューとして、単に <code>nsnull</code> を渡すことができます。<code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/threads/nsIEventQueueService.h#44" rel="custom">xpcom/threads/nsIEventQueueService.h#44</a></code> にある定義済のフラグも使うことができます。</p>
+<p>呼び出し元が目的のスレッドにいるかどうかを決定するロジックもあります。これが真であれば、プロキシ経由では呼び出されずに、最適化のためにメソッド (最適化) を直接呼び出します。この検知は、<code>PROXY_SYNC</code> フラグで作成されたプロキシを使うときだけに使われます。</p>
+<h4 id=".E4.BD.BF.E7.94.A8.E4.BE.8B" name=".E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h4>
+<pre class="eval">nsresult rv = NS_OK;
+
+NS_WITH_SERVICE( nsIProxyObjectManager, pIProxyObjectManager, kProxyObjectManagerCID, &amp;rv);
+if(NS_FAILED(rv)) return rv;
+
+rv = pIProxyObjectManager-&gt;GetProxyForObject( NS_UI_THREAD_EVENTQ,
+ nsITestProxy::GetIID(),
+ createdTestObject,
+ PROXY_SYNC | PROXY_ALWAYS,
+ (void**)proxyToTestObject);
+
+ // もう本当のオブジェクトについては、気にしない。すなわち、GetProxyObjectが
+ // 参照カウントを行っている。
+NS_RELEASE(createdTestObject);
+
+proxyToTestObject-&gt;Test1(x,y,z);
+
+NS_RELEASE(proxyToTestObject);
+</pre>
+<div class="originaldocinfo">
+ <h2 id=".E5.8E.9F.E6.96.87.E6.9B.B8.E3.81.AE.E6.83.85.E5.A0.B1" name=".E5.8E.9F.E6.96.87.E6.9B.B8.E3.81.AE.E6.83.85.E5.A0.B1">原文書の情報</h2>
+ <ul>
+ <li>著者: <a class="link-mailto" href="mailto:dougt@netscape.com">Doug Turner</a></li>
+ <li>最終更新日: January 27, 2007</li>
+ <li>著作権: Portions of this content are © 1998–2007 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">詳細</a></li>
+ </ul>
+</div>
+<div class="noinclude">
+  </div>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsitaggingservice/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsitaggingservice/index.html
new file mode 100644
index 0000000000..67867b4076
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsitaggingservice/index.html
@@ -0,0 +1,180 @@
+---
+title: nsITaggingService
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsITaggingService
+tags:
+ - Interfaces
+ - 'Interfaces:Scriptable'
+ - Places
+ - XPCOM
+ - XPCOM API Reference
+ - XPCOM Interface Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsITaggingService
+---
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/places/public/nsITaggingService.idl" rel="custom">toolkit/components/places/public/nsITaggingService.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+&gt;インタフェースはあるURIに対するタグの付与とその除去を行う機能、与えられたタグからURIを取り出す機能、およびあるURIに関連付けられた全てのタグを取得するメソッドを提供します。
+</span>
+
+ <div style="height: 42px; position: relative; padding: 2px; width: auto;">
+
+ <div style="top: 22px; font-size: 11px; position: absolute;">1.0</div>
+
+ <div style="top: 22px; font-size: 11px; position: absolute; left: 0px; text-align: right; float: right; width: 100%;">66</div>
+
+ <div style="height: 8px; top: 16px; background: #dd0000; left: 0px; position: absolute; width: 8.571428571428571%;"></div>
+
+<div style="height: 8px; top: 16px; left: 8.571428571428571%; background: #00dd00; position: absolute; width: 91.42857142857143%;" title="Introduced in Gecko 1.9 (Firefox 3)"></div>
+
+<div style="top: 0px; font-size: 11px; position: absolute; left: 8.571428571428571%;">Introduced</div>
+<div style="top: 22px; font-size: 11px; position: absolute; left: 8.571428571428571%;">Gecko 1.9</div>
+
+ <div style="height: 8px; top: 16px; left: 10.928571428571429%; background: #eeee00; position: absolute; width: 1%; border-radius: 4px; -webkit-border-radius: 4px;" title="Last changed in Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)"></div>
+
+</div>
+
+<div style="background: #eee; padding: 2px;">
+継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code>
+<span style="text-align: right; float: right;">最終更新: Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)</span></div>
+</div>
+
+<p>実装: <code>@mozilla.org/browser/tagging-service;1</code> このサービスを使うには以下のものを使用して下さい。</p>
+
+<pre class="eval">var taggingSvc = Components.classes["@mozilla.org/browser/tagging-service;1"]
+ .getService(Components.interfaces.nsITaggingService);
+</pre>
+
+<h2 id="メソッドの概要">メソッドの概要</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#tagURI.28.29">tagURI</a>(in <a href="/ja/XPCOM_Interface_Reference/nsIURI" title="ja/XPCOM_Interface_Reference/nsIURI">nsIURI</a> aURI, in <a href="/ja/XPCOM_Interface_Reference/NsIVariant" title="ja/XPCOM_Interface_Reference/NsIVariant">nsIVariant</a> aTags);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#untagURI.28.29">untagURI</a>(in <a href="/ja/XPCOM_Interface_Reference/nsIURI" title="ja/XPCOM_Interface_Reference/nsIURI">nsIURI</a> aURI, in <a href="/ja/XPCOM_Interface_Reference/NsIVariant" title="ja/XPCOM_Interface_Reference/NsIVariant">nsIVariant</a> aTags);</code></td>
+ </tr>
+ <tr>
+ <td><code><a href="/ja/XPCOM_Interface_Reference/NsIVariant" title="ja/XPCOM_Interface_Reference/NsIVariant">nsIVariant</a> <a href="#getURIsForTag.28.29">getURIsForTag</a>(in AString aTag);</code></td>
+ </tr>
+ <tr>
+ <td><code><a href="/ja/XPCOM_Interface_Reference/NsIVariant" title="ja/XPCOM_Interface_Reference/NsIVariant">nsIVariant</a> </code><code><a href="#getTagsForURI.28.29">getTagsForURI</a>(in <a href="/ja/XPCOM_Interface_Reference/nsIURI" title="ja/XPCOM_Interface_Reference/nsIURI">nsIURI</a> aURI, [任意] out unsigned long length, [retval, array, size_is(length)] out wstring aTags);</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="属性">属性</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>allTags</code></td>
+ <td><code><a href="/ja/XPCOM_Interface_Reference/NsIVariant" title="ja/XPCOM_Interface_Reference/NsIVariant">nsIVariant</a></code></td>
+ <td>データベース内で URI に付与したタグの全てを(名前順で)受け取ります。</td>
+ </tr>
+ <tr>
+ <td><code>tagContainerIconSpec</code></td>
+ <td><code><a href="/ja/AUTF8String" title="ja/AUTF8String">AUTF8String</a></code></td>
+ <td>タグコンテナアイコンの URL 仕様を受け取ります</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="メソッド">メソッド</h2>
+
+<h3 id="tagURI.28.29" name="tagURI.28.29"><a name="tagURI()">tagURI()</a></h3>
+
+<p>与えられたタグのセットをある URI に付与します。 URI が持つ現在のタグのセットはそのまま残ります。 <code>aTags</code> に含まれるタグのうち、既に与えられた URI にセットされているものがあればそれは無視されます。</p>
+
+<pre class="eval"> void tagURI(
+ in nsIURI aURI,
+ in nsIVariant aTags
+);
+</pre>
+
+<h6 id="引数">引数</h6>
+
+<dl>
+ <dt><code>aURI</code></dt>
+ <dd>タグ付けする URI です。</dd>
+ <dt><code>aTags</code></dt>
+ <dd>与えられた URI に対して付与するタグの配列です。</dd>
+</dl>
+
+<h3 id="untagURI.28.29" name="untagURI.28.29"><a name="untagURI()">untagURI()</a></h3>
+
+<p>ある URI からタグを取り除きます。 aTags に含まれるタグのうち、与えられた URI に設定されていないものは無視されます。</p>
+
+<pre class="eval"> void untagURI(
+ in nsIURI aURI,
+ in nsIVariant aTags
+);
+</pre>
+
+<h6 id="Parameters_2" name="Parameters_2">引数</h6>
+
+<dl>
+ <dt><code>aURI</code></dt>
+ <dd>タグ付けを解除する URI です。</dd>
+ <dt><code>aTags</code></dt>
+ <dd>URI から取り除くタグの配列です。NULL を渡すと与えられた URI から全てのタグを取り除きます。</dd>
+</dl>
+
+<h3 id="getURIsForTag.28.29" name="getURIsForTag.28.29"><a name="getURIsForTag()">getURIsForTag()</a></h3>
+
+<p>このメソッドは、与えられたタグが付与されている全ての URI を取得します。</p>
+
+<pre class="eval"> nsIVariant getURIsForTag(
+ in AString aTag
+);
+</pre>
+
+<h6 id="Parameters_3" name="Parameters_3">引数</h6>
+
+<dl>
+ <dt><code>aTag</code></dt>
+ <dd>タグ名です。</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">返値</h6>
+
+<p><code>aTag</code> で指定されたタグが付与された全ての URI の配列</p>
+
+<h3 id="getTagsForURI.28.29" name="getTagsForURI.28.29"><a name="getTagsForURI()">getTagsForURI()</a></h3>
+
+<p>与えられたURIに付与されている全てのタグを取得します。</p>
+
+<pre class="eval">nsIVariant getTagsForURI(
+ in nsIURI aURI,
+ [任意] out unsigned long length,
+ [retval, array, size_is(length)] out wstring aTags
+);
+</pre>
+
+<h6 id="Parameters_4" name="Parameters_4">引数</h6>
+
+<dl>
+ <dt><code>aURI</code></dt>
+ <dd>タグを返す URI です。</dd>
+ <dt><code>length</code> <span class="inlineIndicator optional optionalInline">Optional</span></dt>
+ <dd>戻る際に aTags に返されたタグの数が入ります。任意ですが、 Gecko 2.0 より前は必須の引数でした。</dd>
+ <dt><code>aTags</code></dt>
+ <dd>戻る際に URI に付与されたタグの配列が入ります。</dd>
+</dl>
+
+<h6 id="Return_value_2" name="Return_value_2">返値</h6>
+
+<p>タグの配列(名前順)です。</p>
+
+<h3 id="関連情報">関連情報</h3>
+
+<ul>
+ <li><a href="/ja/Places" title="ja/Places">Places</a></li>
+ <li><a href="/ja/Using_the_Places_tagging_service" title="ja/Using_the_Places_tagging_service">Using the Places tagging service</a></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithread/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithread/index.html
new file mode 100644
index 0000000000..7f8e9a8940
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithread/index.html
@@ -0,0 +1,119 @@
+---
+title: nsIThread
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIThread
+tags:
+ - Firefox 3
+ - Interfaces
+ - Threads
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIThread
+---
+<p> <code>nsIThread</code> インタフェースは、オペレーティングシステム (OS) のスレッドに対する高レベルの抽象化を提供します。スレッドには組み込みのキューが含まれており、スレッドは、そのスレッド上で処理される <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRunnable" title="">nsIRunnable</a></code> オブジェクト (イベント) を取得できるイベントターゲットと言えます。</p>
+<p>スレッドを作成するには、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadManager" title="">nsIThreadManager</a></code> インタフェースを使います。</p>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIEventTarget" title="">nsIEventTarget</a></code></p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/threads/nsIThread.idl" rel="custom">xpcom/threads/nsIThread.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void shutdown()</code></td>
+ </tr>
+ <tr>
+ <td><code>boolean hasPendingEvents()</code></td>
+ </tr>
+ <tr>
+ <td><code>boolean processNextEvent(in boolean mayWait)</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>PRThread</code></td>
+ <td><code><a href="/ja/PRThread" title="ja/PRThread">PRThread</a></code></td>
+ <td><code>nsIThread</code> に相当する NSPR スレッドオブジェクト。<em>読み取り専用。</em></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="shutdown.28.29" name="shutdown.28.29">shutdown()</h3>
+<p>スレッドを停止します。これは、そのスレッドに割り当てられているイベントを中止し、スレッドが現在のスレッドに加わる前に、待機中のイベントがある場合はそれらを実行して完了させます (詳しくは <code><a href="/ja/PR_JoinThread" title="ja/PR_JoinThread">PR_JoinThread()</a></code> を参照してください)。このメソッド呼び出しの実行中、現在のスレッドに割り当てられたイベントは処理が継続されます。</p>
+<div class="warning">
+ <strong>警告:</strong> このメソッドは、スレッド自体から呼び出すことができません。その代わり、他のスレッド (通常、呼び出したいスレッドの作成元であるスレッド、もしくはメインのアプリケーションスレッド) から呼び出す必要があります。この関数が返されると、スレッドは停止され、以後イベントを受け付けることはできなくなります。</div>
+<pre class="eval">void shutdown()
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<p>なし。</p>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96">投げられる例外</h6>
+<dl>
+ <dt>
+ <code>NS_ERROR_UNEXPECTED</code></dt>
+ <dd>
+ <code>shutdown()</code> が、スレッド自体から誤って呼び出された場合。そのスレッドがスレッドマネージャの <code><a href="/ja/nsIThreadManager#newThread.28.29" title="ja/nsIThreadManager#newThread.28.29">newThread()</a></code> メソッドを使って作成されたものではない場合。あるいはスレッドがすでに停止処理中である場合。</dd>
+</dl>
+<h3 id="hasPendingEvents.28.29" name="hasPendingEvents.28.29">hasPendingEvents()</h3>
+<p>処理待機中のイベントがそのスレッドに存在するかどうかを判別します。</p>
+<div class="blockIndicator note"><strong>註:</strong> このメソッドは、他のスレッドからではなく、スレッド自体から呼び出す必要があります。</div>
+<pre class="eval">boolean hasPendingEvents()
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6>
+<p>なし。</p>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6>
+<p>関数が呼び出された時点で待機中のイベントが存在する場合は <code>true</code>。なお、<code>false</code> が返ってきた場合でも、現在のスレッドに他のスレッドがイベントを追加できるため、このメソッドが返るまでにイベントキューが空ではなくなる可能性があります。</p>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_2" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_2">投げられる例外</h6>
+<dl>
+ <dt>
+ <code>NS_ERROR_UNEXPECTED</code></dt>
+ <dd>
+ このスレッドが現在のスレッドではないときにこのメソッドが呼び出された場合。</dd>
+</dl>
+<h3 id="processNextEvent.28.29" name="processNextEvent.28.29">processNextEvent()</h3>
+<p>次に待機中のイベントを処理します。待機中のイベントが存在しない場合、<code>mayWait</code> 引数の値によっては、新しいイベントがスレッドに割り当てられるまで待機状態となります。</p>
+<p>このメソッドは再入可能ですが、このスレッドが現在のスレッドである場合のみ呼び出されます。</p>
+<pre class="eval">boolean processNextEvent(
+ in boolean mayWait
+)
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6>
+<dl>
+ <dt>
+ <code>mayWait</code></dt>
+ <dd>
+ <code>true</code> の場合、イベントキューが空であるときは、新しいイベントが処理可能になるまで待機します。<code>false</code> の場合、イベントキューが空であるときは即座に返ります。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6>
+<p>イベントが処理中であった場合は <code>true</code>、待機中のイベントが存在しない場合は <code>false</code>。</p>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_3" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_3">投げられる例外</h6>
+<dl>
+ <dt>
+ <code>NS_ERROR_UNEXPECTED</code></dt>
+ <dd>
+ このスレッドが現在のスレッドではないときにこのメソッドが呼び出された場合。</dd>
+</dl>
+<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2>
+<ul>
+ <li><a href="/ja/The_Thread_Manager" title="ja/The_Thread_Manager">The Thread Manager</a></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadManager" title="">nsIThreadManager</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadPool" title="">nsIThreadPool</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal" title="">nsIThreadInternal</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadObserver" title="">nsIThreadObserver</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadEventFilter" title="">nsIThreadEventFilter</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadeventfilter/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadeventfilter/index.html
new file mode 100644
index 0000000000..49f64ad777
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadeventfilter/index.html
@@ -0,0 +1,61 @@
+---
+title: nsIThreadEventFilter
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIThreadEventFilter
+tags:
+ - Firefox 3
+ - Interfaces
+ - Threads
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadEventFilter
+---
+<p><code>nsIThreadEventFilter</code> インタフェースを実装すると、あるイベントが入れ子になったイベントキューに受け付けられるかどうかを判別することができます。詳細は <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal" title="">nsIThreadInternal</a></code> の <code><a href="ja/NsIThreadInternal#pushEventQueue.28.29">pushEventQueue()</a></code> メソッドを参照してください。</p>
+<p>このインタフェースと <code><a href="#acceptEvent.28.29">acceptEvent()</a></code> メソッドを実装してから、それをフィルタとして実装したオブジェクトを渡すべきです。</p>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/threads/nsIThreadInternal.idl" rel="custom">xpcom/threads/nsIThreadInternal.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>[notxpcom] boolean acceptEvent(in <a href="ja/NsIRunnable">nsIRunnable</a> event);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="acceptEvent.28.29" name="acceptEvent.28.29">acceptEvent()</h3>
+<p>このメソッドは、あるイベントが入れ子になったイベントキューに受け付けられるかどうかを判別するために呼び出されます。</p>
+<div class="warning">
+ <b>警告:</b> このメソッドはスレッドオブジェクト上では呼び出しを行ってはいけません。</div>
+<pre class="eval">[notxpcom] boolean acceptEvent(
+ in nsIRunnable event
+)
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;event&lt;/tt&gt;</dt>
+ <dd>
+ 割り当てを行うイベント。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6>
+<p>イベントが受け入れられる場合は <code>true</code>、受け入れられない場合は <code>false</code>。</p>
+<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2>
+<ul>
+ <li><a href="ja/The_Thread_Manager">The Thread Manager</a></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadManager" title="">nsIThreadManager</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadPool" title="">nsIThreadPool</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadObserver" title="">nsIThreadObserver</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal" title="">nsIThreadInternal</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadinternal/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadinternal/index.html
new file mode 100644
index 0000000000..c363c03792
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadinternal/index.html
@@ -0,0 +1,82 @@
+---
+title: nsIThreadInternal
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIThreadInternal
+tags:
+ - Firefox 3
+ - Interfaces
+ - Threads
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal
+---
+<p> <code>nsIThreadInternal</code> インタフェースは、スレッド上に割り当てられたアクティビティを監視するために、XPCOM スレッドオブジェクトによって実装されています。</p>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code></p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/threads/nsIThreadInternal.idl" rel="custom">xpcom/threads/nsIThreadInternal.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void pushEventQueue(in <a href="ja/NsIThreadEventFilter">nsIThreadEventFilter</a> filter);</code></td>
+ </tr>
+ <tr>
+ <td><code>void popEventQueue();</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>observer</code></td>
+ <td><code><a href="ja/NsIThreadObserver">nsIThreadObserver</a></code></td>
+ <td>現在のスレッドオブザーバを取得、設定します。監視を無効化する場合は <code>null</code> を設定します。この属性はどのスレッドからも読み取り可能ですが、設定は、このスレッドオブジェクトに対応したスレッド上で行わなくてはなりません。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="pushEventQueue.28.29" name="pushEventQueue.28.29">pushEventQueue()</h3>
+<p>現在スレッド上で待機しているすべてのイベントを、<a href="#popEventQueue.28.29">popEventQueue()</a> が呼び出されるまで中止します。さらに、新たにスレッドに割り当てられたイベントは、指定されたフィルタによって許可された場合のみ処理されます。</p>
+<p>フィルタが <code>null</code> の場合、新しいイベントはすべて許可されます。</p>
+<p><code>pushEventQueue()</code> の呼び出しは入れ子にすることができますが、スレッドを元の状態に戻すには、対応する <a href="#popEventQueue.28.29">popEventQueue()</a> の呼び出しとそれぞれ対にする必要があります。</p>
+<pre class="eval">void pushEventQueue(
+ in nsIThreadEventFilter filter
+)
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;filter&lt;/tt&gt;</dt>
+ <dd>
+ 割り当てられたイベントに適用する <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadEventFilter" title="">nsIThreadEventFilter</a></code>。割り当てられているイベントをすべて許可する場合は <code>null</code>。</dd>
+</dl>
+<h3 id="popEventQueue.28.29" name="popEventQueue.28.29">popEventQueue()</h3>
+<p><a href="#pushEventQueue.28.29">pushEventQueue()</a> の呼び出しを取り消します。イベントキューが再開されると、キューに残っているイベントはすべて、より上のキューに追加されます。</p>
+<pre class="eval">void popEventQueue()
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6>
+<p>なし。</p>
+<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2>
+<ul>
+ <li><a href="ja/The_Thread_Manager">The Thread Manager</a></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadManager" title="">nsIThreadManager</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadPool" title="">nsIThreadPool</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadObserver" title="">nsIThreadObserver</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadEventFilter" title="">nsIThreadEventFilter</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadmanager/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadmanager/index.html
new file mode 100644
index 0000000000..bb797c4d5c
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadmanager/index.html
@@ -0,0 +1,112 @@
+---
+title: nsIThreadManager
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIThreadManager
+tags:
+ - Firefox 3
+ - Interfaces
+ - Threads
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadManager
+---
+<p> <code>nsIThreadManager</code> インタフェースは、アプリケーションや拡張機能がスレッドを作成、管理できるようにするもので、それぞれ <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code> で表されています。</p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/threads/nsIThreadManager.idl" rel="custom">xpcom/threads/nsIThreadManager.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code><a href="ja/NsIThread">nsIThread</a> newThread(in unsigned long creationFlags)</code></td>
+ </tr>
+ <tr>
+ <td><code><span class="nowiki">[noscript]</span> nsIThread getThreadFromPRThread(in <a href="ja/PRThread">PRThread</a> prthread)</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>mainThread</code></td>
+ <td><code><a href="ja/NsIThread">nsIThread</a></code></td>
+ <td>メインスレッド。
+ <i>
+ 読み取り専用。</i>
+ </td>
+ </tr>
+ <tr>
+ <td><code>currentThread</code></td>
+ <td><code>nsIThread</code></td>
+ <td>現在実行中のスレッド。呼び出されたスレッドが、それと関連付けられた <code>nsIThread</code> をまだ持っていない場合、スレッドが新たに作成され、現在の <code><a href="ja/PRThread">PRThread</a></code> と関連付けられます。
+ <i>
+ 読み取り専用。</i>
+ </td>
+ </tr>
+ <tr>
+ <td><code>isMainThread</code></td>
+ <td><code>boolean</code></td>
+ <td>現在実行中のスレッドがメインスレッドの場合に <code>true</code> を返します。
+ <i>
+ 読み取り専用。</i>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="newThread.28.29" name="newThread.28.29">newThread()</h3>
+<p>新しいスレッドを作成します。内部的には、これはグローバルユーザの <code><a href="ja/PRThread">PRThread</a></code> です。</p>
+<pre class="eval">nsIThread newThread(
+ in unsigned long creationFlags
+)
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;creationFlags&lt;/tt&gt;</dt>
+ <dd>
+ 将来の使用のために確保されています。0 を渡します。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6>
+<p>新たに作成された <code><a href="ja/NsIThread">nsIThread</a></code>。</p>
+<h3 id="getThreadFromPRThread.28.29" name="getThreadFromPRThread.28.29">getThreadFromPRThread()</h3>
+<p>このメソッドは、<code><a href="ja/PRThread">PRThread</a></code> を与えられて、対応する <code><a href="ja/NsIThread">nsIThread</a></code> を返します。対応する <code>nsIThread</code> が存在しない場合は <code>null</code> を返します。</p>
+<div class="blockIndicator note"><strong>註:</strong> このメソッドはネイティブコードからのみ呼び出されるでしょう。</div>
+<pre class="eval">[noscript] nsIThread getThreadFromPRThread(
+ in PRThread prthread
+)
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;prthread&lt;/tt&gt;</dt>
+ <dd>
+ 対応する <code>nsIThread</code> を取得するための <code><a href="ja/PRThread">PRThread</a></code>。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6>
+<p>指定された <code>PRThread</code> に一致する <code>nsIThread</code> を返します。一致する <code>nsIThread</code> が存在しない場合は <code>null</code> を返します。</p>
+<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2>
+<ul>
+ <li><a href="ja/The_Thread_Manager">The Thread Manager</a></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadPool" title="">nsIThreadPool</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal" title="">nsIThreadInternal</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadObserver" title="">nsIThreadObserver</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadEventFilter" title="">nsIThreadEventFilter</a></code></li>
+ <li><code><a href="ja/PRThread">PRThread</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadobserver/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadobserver/index.html
new file mode 100644
index 0000000000..5a058d0797
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadobserver/index.html
@@ -0,0 +1,125 @@
+---
+title: nsIThreadObserver
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIThreadObserver
+tags:
+ - Firefox 3
+ - Interfaces
+ - Threads
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadObserver
+---
+<p> <code>nsIThreadObserver</code> インタフェースを実装すると、オブザーバが階層化されたイベントキューを実装できます。</p>
+<p>例えば、以下のようにして、GUI ツールキットのために処理中のイベントを、あるスレッドのイベントの上に重ね合わせることができます。</p>
+<pre class="eval">var NativeQueue;
+Observer = {
+ onDispatchedEvent(thread) {
+ NativeQueue.signal();
+ }
+ onProcessNextEvent(thread, mayWait, recursionDepth) {
+ if (NativeQueue.hasNextEvent()) {
+ NativeQueue.processNextEvent();
+ }
+ while (mayWait &amp;&amp; !thread.hasPendingEvent()) {
+ NativeQueue.wait();
+ NativeQueue.processNextEvent();
+ }
+ }
+};
+</pre>
+<div class="warning">
+ <b>警告:</b> このインタフェースの実装はスレッドセーフでなければなりません。</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/threads/nsIThreadInternal.idl" rel="custom">xpcom/threads/nsIThreadInternal.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void onDispatchedEvent(in nsIThreadInternal thread);</code></td>
+ </tr>
+ <tr>
+ <td><code>void onProcessNextEvent(in nsIThreadInternal thread, in boolean mayWait, in unsigned long recursionDepth);</code></td>
+ </tr>
+ <tr>
+ <td><code>void afterProcessNextEvent(in nsIThreadInternal thread, in unsigned long recursionDepth);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="onDispatchedEvent.28.29" name="onDispatchedEvent.28.29">onDispatchedEvent()</h3>
+<p>イベントがスレッドに割り当てられた後に呼び出されます。このメソッドはどのスレッドからも呼び出すことができます。</p>
+<div class="blockIndicator note"><strong>註:</strong> このメソッドの呼び出し中にスレッドのオブザーバを変更することは有効です。</div>
+<pre class="eval">void onDispatchedEvent(
+ in nsIThreadInternal thread
+)
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;thread&lt;/tt&gt;</dt>
+ <dd>
+ イベントが割り当てられた <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code>。</dd>
+</dl>
+<h3 id="onProcessNextEvent.28.29" name="onProcessNextEvent.28.29">onProcessNextEvent()</h3>
+<p>イベントが処理される前に、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code> の <code><a href="ja/NsIThread#processNextEvent.28.29">processNextEvent()</a></code> メソッドによって呼び出されます。このメソッドはターゲットのスレッド上でのみ呼び出すことができます。</p>
+<div class="blockIndicator note"><strong>註:</strong> このメソッドの呼び出し中にスレッドのオブザーバを変更することは有効です。</div>
+<pre class="eval">void onProcessNextEvent(
+ in nsIThreadInternal thread,
+ in boolean mayWait,
+ in unsigned long recursionDepth
+</pre>
+<p>);</p>
+<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;thread&lt;/tt&gt;</dt>
+ <dd>
+ イベントの処理が行われている <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code>。</dd>
+ <dt>
+ &lt;tt&gt;mayWait&lt;/tt&gt;</dt>
+ <dd>
+ スレッドの呼び出しをブロックすることをメソッドに許可する場合は <code>true</code>。この引数は、例えばスレッド停止中などは <code>false</code> になります。</dd>
+ <dt>
+ &lt;tt&gt;recursionDepth&lt;/tt&gt;</dt>
+ <dd>
+ 現在の呼び出しに加えて、呼び出しスタック上での <code>ProcessNextEvent()</code> の呼び出し回数。</dd>
+</dl>
+<h3 id="afterProcessNextEvent.28.29" name="afterProcessNextEvent.28.29">afterProcessNextEvent()</h3>
+<p>イベントが処理された後に、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code> の <code><a href="ja/NsIThread#processNextEvent.28.29">processNextEvent()</a></code> メソッドによって呼び出されます。このメソッドはターゲットのスレッド上でのみ呼び出すことができます。</p>
+<div class="blockIndicator note"><strong>註:</strong> このメソッドの呼び出し中にスレッドのオブザーバを変更することは有効です。</div>
+<pre class="eval">void afterProcessNextEvent(
+ in nsIThreadInternal thread,
+ in unsigned long recursionDepth
+)
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6>
+<dl>
+ <dt>
+ &lt;tt&gt;thread&lt;/tt&gt;</dt>
+ <dd>
+ イベントの処理が行われた <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code>。</dd>
+ <dt>
+ &lt;tt&gt;recursionDepth&lt;/tt&gt;</dt>
+ <dd>
+ 現在の呼び出しに加えて、呼び出しスタック上での <code>ProcessNextEvent()</code> の呼び出し回数。</dd>
+</dl>
+<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2>
+<ul>
+ <li><a href="ja/The_Thread_Manager">The Thread Manager</a></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadManager" title="">nsIThreadManager</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadPool" title="">nsIThreadPool</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal" title="">nsIThreadInternal</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadEventFilter" title="">nsIThreadEventFilter</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadpool/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadpool/index.html
new file mode 100644
index 0000000000..703ee3c9a3
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsithreadpool/index.html
@@ -0,0 +1,78 @@
+---
+title: nsIThreadPool
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIThreadPool
+tags:
+ - Firefox 3
+ - Interfaces
+ - Threads
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadPool
+---
+<p> <code>nsIThreadPool</code> インタフェースはスレッドプールのサポートを提供します。</p>
+<p>スレッドプールは、限られた数の無名のワーカースレッドを作成できます。イベントがスレッドプールに割り当てられると、プールは、次に利用可能なワーカースレッド上でそのイベントを実行します。</p>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIEventTarget" title="">nsIEventTarget</a></code></p>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/threads/nsIThreadPool.idl" rel="custom">xpcom/threads/nsIThreadPool.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void shutdown()</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>threadLimit</code></td>
+ <td><code>unsigned long</code></td>
+ <td>プールに一度に存在できるスレッドの最大数。この属性を変更することで、最大数を変更することができます。</td>
+ </tr>
+ <tr>
+ <td><code>idleThreadLimit</code></td>
+ <td><code>unsigned long</code></td>
+ <td>存続している待機スレッドの最大数を取得、設定します。待機中のワーカースレッドがこの最大数を超えると、待機スレッドは順次破棄されます。</td>
+ </tr>
+ <tr>
+ <td><code>idleThreadTimeout</code></td>
+ <td><code>unsigned long</code></td>
+ <td>スレッドが破棄可能になるまで待機する時間をミリ秒で取得、設定します。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="shutdown.28.29" name="shutdown.28.29">shutdown()</h3>
+<p>スレッドプールを停止します。</p>
+<div class="warning">
+ <b>警告:</b> このメソッドをスレッドプール内のスレッドから呼び出してはいけません。代わりに、他のスレッド (通常、そのスレッドプールを作成したスレッド) から呼び出してください。</div>
+<p>このメソッドが返ると、スレッドプールと、そのすべてのスレッドは停止され、以後そのスレッドプールにイベントを割り当てることはできなくなります。</p>
+<pre class="eval">void shutdown()
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<p>なし。</p>
+<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2>
+<ul>
+ <li><a href="ja/The_Thread_Manager">The Thread Manager</a></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadManager" title="">nsIThreadManager</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal" title="">nsIThreadInternal</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadObserver" title="">nsIThreadObserver</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadEventFilter" title="">nsIThreadEventFilter</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiwebprogresslistener/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiwebprogresslistener/index.html
new file mode 100644
index 0000000000..4dccfef795
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiwebprogresslistener/index.html
@@ -0,0 +1,392 @@
+---
+title: nsIWebProgressListener
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIWebProgressListener
+tags:
+ - Interfaces
+ - 'Interfaces:Scriptable'
+ - XPCOM
+ - XPCOM API Reference
+ - XPCOM Interface Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgressListener
+---
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/uriloader/base/nsIWebProgressListener.idl" rel="custom">uriloader/base/nsIWebProgressListener.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">このインターフェースは、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンスのコンテクストだけではなく、すべての子 <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンスの、非同期リクエストの読み込みに関連する進捗を監視しようとするクライアントによって実装されています。</span>
+
+<div style="background: #eee; padding: 2px;">
+継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code>
+<span style="text-align: right; float: right;">最終更新: Gecko 15 (Firefox 15 / Thunderbird 15 / SeaMonkey 2.12)</span></div>
+</div>
+<p> </p>
+<h2 id="Method_overview" name="Method_overview">メソッド概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#onLocationChange()">onLocationChange</a>(in nsIWebProgress aWebProgress, in nsIRequest aRequest, in nsIURI aLocation);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#onProgressChange()">onProgressChange</a>(in nsIWebProgress aWebProgress, in nsIRequest aRequest, in long aCurSelfProgress, in long aMaxSelfProgress, in long aCurTotalProgress, in long aMaxTotalProgress);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#onSecurityChange()">onSecurityChange</a>(in nsIWebProgress aWebProgress, in nsIRequest aRequest, in unsigned long aState);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#onStateChange()">onStateChange</a>(in nsIWebProgress aWebProgress, in nsIRequest aRequest, in unsigned long aStateFlags, in nsresult aStatus);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#onStatusChange()">onStatusChange</a>(in nsIWebProgress aWebProgress, in nsIRequest aRequest, in nsresult aStatus, in wstring aMessage);</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Constants" name="Constants">定数</h2>
+<h3 id="State_Transition_Flags" name="State_Transition_Flags">遷移状態フラグ(State Transition Flags)</h3>
+<p>これらのフラグは、リクエストがロードされ、遷移しているさまざまな状態を表します。これらのフラグは排他的です。</p>
+<p>リクエストが与えられる度、<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> が呼び出されます。 <code>STATE_START</code> を伴って一回、<code>STATE_TRANSFERRING</code> フラグを伴ってゼロまたは数回、<code>STATE_REDIRECTING</code> と一回、最終的に<code>STATE_STOP</code> を伴って一回、<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> は呼び出されます。</p>
+<div class="note">
+ <strong>註:</strong>ドキュメントのリクエストにおいて、2つ目の <code>STATE_STOP</code> が生成されます。(詳しくは <code>STATE_IS_WINDOW</code> の詳細を参照してください)</div>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">定数</td>
+ <td class="header">値</td>
+ <td class="header">詳細</td>
+ </tr>
+ <tr>
+ <td><code>STATE_START</code></td>
+ <td><code>0x00000001</code></td>
+ <td>このフラグはリクエストが開始されたことを表します。このフラグはリクエストが初期化された際に設定されます。開始されたリクエストは、<code>STATE_STOP</code> フラグを伴って<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> が呼び出された時に完了します。</td>
+ </tr>
+ <tr>
+ <td><code>STATE_REDIRECTING</code></td>
+ <td><code>0x00000002</code></td>
+ <td>このフラグはリクエストがリダイレクトされていることを表します。<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> に通されたリクエストはリダイレクトされたものです。リダイレクトが発生したとき、その過程において自動的に新規リクエストが生成されます。新しいリクエストでも同様に <code>STATE_START</code> のイベントが発生し、リダイレクトされたリクエストは <code>STATE_STOP</code> を迎えると予想されます。</td>
+ </tr>
+ <tr>
+ <td><code>STATE_TRANSFERRING</code></td>
+ <td><code>0x00000004</code></td>
+ <td>このフラグは、リクエストしたデータがこちらへと転送されている状態にあることを表します。このフラグは、リクエストがつながり、ユーザーがリクエストに対応するコンテンツを見始めるようになることも意味します。</td>
+ </tr>
+ <tr>
+ <td><code>STATE_NEGOTIATING</code></td>
+ <td><code>0x00000008</code></td>
+ <td>このフラグは使用されません。</td>
+ </tr>
+ <tr>
+ <td><code>STATE_STOP</code></td>
+ <td><code>0x00000010</code></td>
+ <td>このフラグはリクエストが完了したことを表します。<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> の aStatus パラメータは、リクエストの最終ステータスを表します。</td>
+ </tr>
+ </tbody>
+</table>
+<h3 id="State_Type_Flags" name="State_Type_Flags">状態種類フラグ(State Type Flags)</h3>
+<p>これらのフラグは、発生しているトランザクションの状態についての実態をより詳しく説明します。これらのフラグは<strong>排他的ではありません</strong>( <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> イベントはこれらのフラグが組み合わさっていることを示すかもしれません。)</p>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">定数</td>
+ <td class="header">値</td>
+ <td class="header">詳細</td>
+ </tr>
+ <tr>
+ <td><code>STATE_IS_REQUEST</code></td>
+ <td><code>0x00010000</code></td>
+ <td>このフラグは、ドキュメントに限らないリクエストの遷移状態を表します。(下記のドキュメントのリクエストの詳細も参照してください) (例えば画像やスタイルシートといった)インラインコンテンツのような、他の種類のリクエストはの通常のリクエストとして見做されています。</td>
+ </tr>
+ <tr>
+ <td><code>STATE_IS_DOCUMENT</code></td>
+ <td><code>0x00020000</code></td>
+ <td>
+ <p>このフラグは、ドキュメントリクエストの遷移状態を表します。このフラグは <code>STATE_IS_REQUEST</code> を追加で設定します。ドキュメントリクエストは、 <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code> のサポートと、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code>::LOAD_DOCUMENT_URI を含む、リクエストの loadFlags 属性を含んでいます。</p>
+ <p>ドキュメントに対応した読み込みに関連するリクエストの全てが完了するまで、ドキュメントリクエストは完了しません。これには、(たとえば HTML &lt;iframe&gt; 要素といった)他のドキュメントリクエストも含まれます。ドキュメントリクエストに対応しているドキュメントは、<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> の aWebProgress パラメータの <code>DOMWindow</code> 属性を経由して取得できます。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>STATE_IS_NETWORK</code></td>
+ <td><code>0x00040000</code></td>
+ <td>
+ <p>このフラグは、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンスによって表わされる活動の開始または停止に対応する遷移状態を表します。このフラグには、<code>STATE_START</code> または <code>STATE_STOP</code> の一方及びその他の状態種類フラグが付随しています。</p>
+ <p><code>STATE_IS_WINDOW</code> とは異なり、このフラグは <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンスのアクティビティが開始または停止していると通知された時にのみ設定されます。アクティビティが子 <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンス でのみ発生した場合、そのアクテビティの開始または停止を示すためにこのフラグが設定されるでしょう。</p>
+ <p>例えば、HTML フレームセットの単体フレームのナビゲーションの場合、フレームセットウィンドウの <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> に加えられた <code>nsIWebProgressListener</code> インスタンスは、ナビゲーションの開始と中止を設定された <code>STATE_IS_NETWORK</code> フラグとともに <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> の呼び出しを受けます。言い換えれば、アクテビティが子ウィンドウに束縛された際には、外部ウィンドウのオブザーバーは開始または中止を 定義できるということです。</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>STATE_IS_WINDOW</code></td>
+ <td><code>0x00080000</code></td>
+ <td>
+ <p>このフラグは、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンスが示すアクティビティの開始と停止に対応する遷移状態を表します。このフラグは、<code>STATE_START</code> または <code>STATE_STOP</code> 、およびその他の状態種類フラグを伴います。</p>
+ <p>このフラグは、<code>STATE_IS_DOCUMENT</code> に類似しています。しかしながら、ドキュメントのリクエストが完了された時、生成された <code>STATE_STOP</code> と共に <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> が2回呼び出されます。ドキュメントのリクエストはそれぞれの呼び出しの際に aRequest を渡します。最初の呼び出しでは <code>STATE_IS_REQUEST</code> および <code>STATE_IS_DOCUMENT</code> が設定され、2回目の呼び出しでは <code>STATE_IS_WINDOW</code> が設定されます。(加えて、可能であれば <code>STATE_IS_NETWORK</code> が設定されます。<code>STATE_IS_NETWORK</code> が設定される場合の詳細については上記の詳細を参照してください) この2つの <code>STATE_STOP</code> イベントは、ドキュメントのリクエストが完了した際に発生した作業を分別するのに有効とされます。</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h3 id="State_Modifier_Flags" name="State_Modifier_Flags">状態変更フラグ(State Modifier Flags)</h3>
+<p>これらのフラグは、発生しているトランザクションの状態についての実態をより詳しく説明します。これらのフラグは<strong>排他的ではありません</strong>( <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> イベントはこれらのフラグが組み合わさっていることを示すかもしれません。)</p>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">定数</td>
+ <td class="header">値</td>
+ <td class="header">詳細</td>
+ </tr>
+ <tr>
+ <td><code>STATE_RESTORING</code></td>
+ <td><code>0x01000000</code></td>
+ <td>このフラグは、以前レンダリングされた表示結果の復元作業の開始または停止に相当する遷移状態を表します。このリクエストに関連するネットワーク・アクティビティはなく、読み込まれたオリジナルのドキュメントや表示に加えられた変更それ自体は、依然として存在しています。</td>
+ </tr>
+ </tbody>
+</table>
+<h3 id="State_Security_Flags" name="State_Security_Flags">セキュリティ状態フラグ(State Security Flags)</h3>
+<p>これらのフラグは <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onSecurityChange()">onSecurityChange()</a></code> が呼び出されることによって 報告されるセキュリティの状態について説明します。これらのフラグは排他的です。</p>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">定数</td>
+ <td class="header">値</td>
+ <td class="header">詳細</td>
+ </tr>
+ <tr>
+ <td><code>STATE_IS_INSECURE</code></td>
+ <td><code>0x00000004</code></td>
+ <td>このフラグは、リクエストに対応するデータが安全ではないチャンネルを経由して受信されたことを表します。</td>
+ </tr>
+ <tr>
+ <td><code>STATE_IS_BROKEN</code></td>
+ <td><code>0x00000001</code></td>
+ <td>このフラグは未知のセキュリティの状態であることを表します。これは、ページ中の一部のコンテンツのリクエストが、安全ではないチャンネルを経由して読み込まれていることを意味するかもしれません。</td>
+ </tr>
+ <tr>
+ <td><code>STATE_IS_SECURE</code></td>
+ <td><code>0x00000002</code></td>
+ <td>このフラグは、リクエストに対応するデータが安全なチャンネルを経由して受信されたことを表します。セキュリティの程度については、<code>STATE_SECURE_HIGH</code>、<code>STATE_SECURE_MED</code>、または <code>STATE_SECURE_LOW</code> によって表現されます。</td>
+ </tr>
+ </tbody>
+</table>
+<h3 id="Security_Strength_Flags" name="Security_Strength_Flags">セキュリティ強度フラグ(Security Strength Flags)</h3>
+<p>これらのフラグは、セキュリティの強度と、<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onSecurityChange()">onSecurityChange()</a></code> メソッドの呼び出しに伴う <code>STATE_IS_SECURE</code> について説明します。これらのフラグは排他的です。</p>
+<p>これらのフラグは、データ転送のセキュリティについて厳密な詳細を提供することを意味しません。これらは代わりに、セキュリティ通知の色区分や、その他ユーザー向けの基本的なデータ転送のフィードバックなどのような、簡易的なインジケータで使用されることを意図しています。</p>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">定数</td>
+ <td class="header">値</td>
+ <td class="header">詳細</td>
+ </tr>
+ <tr>
+ <td><code>STATE_SECURE_HIGH</code></td>
+ <td><code>0x00040000</code></td>
+ <td>このフラグは高レベルのセキュリティにあることを示します。</td>
+ </tr>
+ <tr>
+ <td><code>STATE_SECURE_MED</code></td>
+ <td><code>0x00010000</code></td>
+ <td>このフラグは中レベルのセキュリティにあることを示します。</td>
+ </tr>
+ <tr>
+ <td><code>STATE_SECURE_LOW</code></td>
+ <td><code>0x00020000</code></td>
+ <td>このフラグは低レベルのセキュリティにあることを示します。</td>
+ </tr>
+ </tbody>
+</table>
+<h3 id="State_Identity_Flags" name="State_Identity_Flags">アイデンティティ状態フラグ(State identity flags)</h3>
+<p>これらのフラグは、<code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onSecurityChange()">onSecurityChange()</a></code> メソッドの呼び出しにおける、身元検証のレベルについて説明します。</p>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">定数</td>
+ <td class="header">値</td>
+ <td class="header">詳細</td>
+ </tr>
+ <tr>
+ <td><code>STATE_IDENTITY_EV_TOPLEVEL</code></td>
+ <td><code>0x00100000</code></td>
+ <td>
+ <p>ステータスビットにおける EV とは Extended Validation すなわち High Assurance であり、高く保証されていることを意味します。</p>
+ <p>最高位のドキュメントには EV 証明書が使用されています。 </p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h3 id="Location_Change_Flags" name="Location_Change_Flags">ロケーション変更状態フラグ (Location Change flags)</h3>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">定数</td>
+ <td class="header">値</td>
+ <td class="header">詳細</td>
+ </tr>
+ <tr>
+ <td><code>LOCATION_CHANGE_SAME_DOCUMENT</code></td>
+ <td><code>0x00000001</code></td>
+ <td>このフラグは、<code>aWebProgress</code> が新たにドキュメントを読み込まなかったときのものです。例としては、アンカーによるスクロールや pushState/popState/replaceState によるロケーションの変更が挙げられます。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Methods" name="Methods">メソッド</h2>
+<h3 id="onLocationChange" name="onLocationChange()">onLocationChange()</h3>
+<p>変更を監視されているウィンドウのロケーションが変更された際に呼び出されます。読み込みがリクエストされたときではなく、与えられたウィンドウにおいて読み込みが発生しようとしているの一度確認された際に呼び出されます。たとえば、ウィンドウに於いて開始した読み込みが、新しいサイトに向けてプログレスとステータスメッセージを送信していたとしても、新たなページが読み込まれていると私たちが確認するまでは、<code>onLocationChange</code> は呼び出されないでしょう。別の例として、ブラウザの中でドキュメントが読み込まれているのではなく、サードパーティのツールへとドキュメントが渡された場合、PDFやフラッシュの読み込みでは <code>onLocationChange</code> は呼び出されないでしょう。</p>
+<pre class="eval">void onLocationChange(
+ in nsIWebProgress aWebProgress,
+ in nsIRequest aRequest,
+ in nsIURI aLocation
+ [optional] in unsigned long aFlags
+);
+</pre>
+<h6 id="Parameters" name="Parameters">引数</h6>
+<dl>
+ <dt>
+ <code>aWebProgress</code></dt>
+ <dd>
+ 通知が発生した <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンス。</dd>
+ <dt>
+ <code>aRequest</code></dt>
+ <dd>
+ 関連する <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRequest" title="">nsIRequest</a></code> 。いくつかの場合では、この値は <code>null</code> かもしれません。</dd>
+ <dt>
+ <code>aLocation</code></dt>
+ <dd>
+ 読み込まれているロケーションの URI 。</dd>
+ <dt>
+ <code>aFlags</code></dt>
+ <dd>
+ オプション:この値は、ロケーションが変更された状況や理由について表します。 <span class="inlineIndicator optional optionalInline">Optional from Gecko 10</span></dd>
+</dl>
+<h3 id="onProgressChange" name="onProgressChange()">onProgressChange()</h3>
+<p><code>aWebProgress</code> に関連するリクエストのひとつの変更されたプログレスを通知します。(<code>STATE_STOP</code> と <code>STATE_IS_WINDOW</code> フラグを含む <code>aStateFlags</code> を伴って呼び出された <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener#onStateChange()">onStateChange()</a></code> に対応する) aWebProgress の全てのリクエストが完了したとき、プログレス全体はゼロへとリセットされます。</p>
+<div class="note">
+ <strong>註:</strong>プログレスの値が未知である、または長整数型の最大値を上回る場合、プログレスの値は -1 によって置き換えられます。</div>
+<div class="note">
+ <strong>註:</strong>オブジェクトが <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgressListener2" title="">nsIWebProgressListener2</a></code> を実装しており、尚且つ呼び出し側がそのインターフェースを知っている場合、この関数は呼び出されません。その場合、代わりに <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/nsIWebProgressListener2#onProgressChange64()">nsIWebProgressListener2.onProgressChange64()</a></code> が呼び出されます。</div>
+<pre class="eval">void onProgressChange(
+ in nsIWebProgress aWebProgress,
+ in nsIRequest aRequest,
+ in long aCurSelfProgress,
+ in long aMaxSelfProgress,
+ in long aCurTotalProgress,
+ in long aMaxTotalProgress
+);
+</pre>
+<h6 id="Parameters" name="Parameters">引数</h6>
+<dl>
+ <dt>
+ <code>aWebProgress</code></dt>
+ <dd>
+ 通知が発生した <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンス。</dd>
+ <dt>
+ <code>aRequest</code></dt>
+ <dd>
+ 新しいプログレスを持つ <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRequest" title="">nsIRequest</a></code> 。</dd>
+ <dt>
+ <code>aCurSelfProgress</code></dt>
+ <dd>
+ リクエストの現在のプログレス。</dd>
+ <dt>
+ <code>aMaxSelfProgress</code></dt>
+ <dd>
+ リクエストの最大のプログレス。</dd>
+ <dt>
+ <code>aCurTotalProgress</code></dt>
+ <dd>
+ aWebProgress に関連する全てのリクエストにおける、現在のプログレス。</dd>
+ <dt>
+ <code>aMaxTotalProgress</code></dt>
+ <dd>
+ aWebProgress に関連する全てのリクエストにおける、全体のプログレス。</dd>
+</dl>
+<h3 id="onSecurityChange" name="onSecurityChange()">onSecurityChange()</h3>
+<p>セキュリティプログレスを通知します。このメソッドは (例えば HTTP -&gt; HTTPS または HTTP, FOO -&gt; HTTPS といった)セキュリティの遷移に応じて、およびドキュメントの読み込みの完了と共に呼び出されます。ネットワーク読み込みの間にエラーが発生した場合でも、同様に呼び出されます。</p>
+<div class="note">
+ <strong>註:</strong>セキュリティパッケージを導入している場合、これらの通知は一度しか発生しません。</div>
+<pre class="eval">void onSecurityChange(
+ in nsIWebProgress aWebProgress,
+ in nsIRequest aRequest,
+ in unsigned long aState
+);
+</pre>
+<h6 id="Parameters" name="Parameters">引数</h6>
+<dl>
+ <dt>
+ <code>aWebProgress</code></dt>
+ <dd>
+ 通知が発生した <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンス。</dd>
+ <dt>
+ <code>aRequest</code></dt>
+ <dd>
+ 新しいセキュリティ状態の <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRequest" title="">nsIRequest</a></code> 。</dd>
+ <dt>
+ <code>aState</code></dt>
+ <dd>
+ 上述の<a href="#State_Security_Flags">セキュリティ状態フラグ</a>と<a href="#Security_Strength_Flags">セキュリティ強度フラグ</a>によって構成された値。将来的には未定義なビット列を受け取ることになるかもしれません。</dd>
+</dl>
+<h3 id="onStateChange" name="onStateChange()">onStateChange()</h3>
+<p>aWebProgress に関連するリクエストのいずれかの状態が変更されたことを通知します。</p>
+<pre class="eval">void onStateChange(
+ in nsIWebProgress aWebProgress,
+ in nsIRequest aRequest,
+ in unsigned long aStateFlags,
+ in nsresult aStatus
+);
+</pre>
+<h6 id="Parameters" name="Parameters">引数</h6>
+<dl>
+ <dt>
+ <code>aWebProgress</code></dt>
+ <dd>
+ 通知が発生した <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> インスタンス。</dd>
+ <dt>
+ <code>aRequest</code></dt>
+ <dd>
+ 状態が変更した <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRequest" title="">nsIRequest</a></code> 。この引数は <code>null</code> である場合があります。</dd>
+ <dt>
+ <code>aStateFlags</code></dt>
+ <dd>
+ 新しい状態のフラグを表します。この値は、上述した遷移状態フラグのひとつと、状態種類フラグのひとつ、または複数によって構成されています。将来的には未定義なビット列を受け取ることになるかもしれません。</dd>
+ <dt>
+ <code>aStatus</code></dt>
+ <dd>
+ <p>状態の変更に関連するエラーステータスコードです。この引数は aStateFlag が <code>STATE_STOP</code> ビットを含まない限りは無視されます。ステータスコードは状態の変更に関連するリクエストの成功または失敗を示します。</p>
+ <div class="note">
+ <strong>註:</strong>HTTP <code>404 File Not Found</code> エラーのようなサーバー側で発生したエラーに対しても、成功したとのコードを示すかもしれません。こうした場合において、リクエスト自体のエラー情報については、(HTTPリクエストについては <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIHttpChannel" title="">nsIHttpChannel</a></code> を参照するなど)拡張されたエラー情報を問い合わせるべきです。</div>
+ </dd>
+</dl>
+<h3 id="onStatusChange" name="onStatusChange()"><strong>onStatusChange()</strong></h3>
+<p>リクエストのステータスが変更されたことを通知します。ステータスメッセージは、ブラウザのステータスバーなどといった、ユーザーへの表示を意図されています。</p>
+<pre class="eval">void onStatusChange(
+ in nsIWebProgress aWebProgress,
+ in nsIRequest aRequest,
+ in nsresult aStatus,
+ in wstring aMessage
+);
+</pre>
+<h6 id="Parameters" name="Parameters">引数</h6>
+<dl>
+ <dt>
+ <code>aWebProgress</code></dt>
+ <dd>
+ 通知が発火した <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIWebProgress" title="">nsIWebProgress</a></code> 。</dd>
+ <dt>
+ <code>aRequest</code></dt>
+ <dd>
+ 新たなステータスを持つ <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRequest" title="">nsIRequest</a></code> 。</dd>
+ <dt>
+ <code>aStatus</code></dt>
+ <dd>
+ <p>この値はエラーコードではありません。その代わり、現在のリクエストのステータスを示す数値になります。このインターフェースはステータスコードの設定が可能なようには定義されていません。</p>
+ <div class="note">
+ <strong>註:</strong>いくつかのステータス値は、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsITransport" title="">nsITransport</a></code> および <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISocketTransport" title="">nsISocketTransport</a></code>で定義されています</div>
+ </dd>
+ <dt>
+ <code>aMessage</code></dt>
+ <dd>
+ aStatus に対応するローカライズされたテキスト。</dd>
+</dl>
+<h2 id="Example" name="Example">例</h2>
+<p>タブごとへの nsIWebProgressListener:</p>
+<ul>
+ <li><a href="https://dxr.mozilla.org/mozilla-central/source/browser/base/content/tabbrowser.xml#444" rel="custom">gBrowser.mTabProgressListener による作成</a></li>
+</ul>
+<p>gBrowser.mProgressListeners (上で述べたようにタブ毎の nsIWebProgressListener によって起動される):</p>
+<ul>
+ <li><a href="https://dxr.mozilla.org/mozilla-central/source/browser/base/content/browser.js#4306" rel="custom">XULBrowserWindow.onStateChange</a> (etc.)</li>
+</ul>
+<p> </p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiwindowmediator/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiwindowmediator/index.html
new file mode 100644
index 0000000000..7a0b9ccaaa
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsiwindowmediator/index.html
@@ -0,0 +1,60 @@
+---
+title: nsIWindowMediator
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIWindowMediator
+tags:
+ - Interfaces
+ - 'Interfaces:Scriptable'
+ - MDC Project
+ - NeedsEditorialReview
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIWindowMediator
+---
+<p> </p>
+<p>ウィンドウメディエータは開いているウィンドウを監視する Mozilla コンポーネントです。 <code>nsIWindowMediator</code> インターフェイスを通じてアクセスできます。 <code>nsIWindowMediator</code> の最も一般的な二つの用途は次のようなものです。</p>
+<ol>
+ <li>最前面にある (<span style="color: green;">most recent</span>)、もしくは任意の、指定された型のウィンドウを取得する。</li>
+ <li>指定された型の全てのウィンドウを列挙する。</li>
+</ol>
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpfe/appshell/public/nsIWindowMediator.idl" rel="custom">xpfe/appshell/public/nsIWindowMediator.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.6 </span></div>
+</div>
+<p><br>
+ 下記の例で、<code>type</code> は検索したいウィンドウの型を示しています。ウィンドウに型を指定するには、<code>&lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/window" title="window">window</a></code>&gt;</code> や <code>&lt;<code><a href="/ja/docs/Mozilla/Tech/XUL/dialog" title="dialog">dialog</a></code>&gt;</code> のようなトップレベルの要素に <code><code id="a-windowtype"><a href="https://developer.mozilla.org/ja/docs/Mozilla/Tech/XUL/Attribute/windowtype">windowtype</a></code></code> 属性を付加します。</p>
+<p>ブラウザウィンドウは <code>navigator:browser</code> というウィンドウの型を持っています。ウィンドウの型に関わらず全てのウィンドウを検索するには、空文字列 <code>""</code> を渡して下さい。</p>
+<p><span id="Getting_most_recent_window"></span></p>
+<h3 id=".E6.9C.80.E5.89.8D.E9.9D.A2.E3.81.AB.E3.81.82.E3.82.8B.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E5.8F.96.E5.BE.97.E3.81.99.E3.82.8B" name=".E6.9C.80.E5.89.8D.E9.9D.A2.E3.81.AB.E3.81.82.E3.82.8B.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E5.8F.96.E5.BE.97.E3.81.99.E3.82.8B">最前面にあるウィンドウを取得する</h3>
+<p>次のコードは、指定した型のウィンドウのいずれかを取得したい時や、ある型のウィンドウ (例えばあなたの拡張機能の設定ダイアログ) がすでに開かれているかどうかを調べたい時に役立ちます。</p>
+<p><code>getMostRecentWindow</code> は、 <code>ChromeWindow</code> オブジェクト、もしくは指定された型のウィンドウが開かれていなければ、 <code>null</code> を返します。</p>
+<pre>var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+var win = wm.getMostRecentWindow(type);
+</pre>
+<p><span id="Enumerating_windows"></span></p>
+<h3 id=".E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E5.88.97.E6.8C.99.E3.81.99.E3.82.8B" name=".E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E5.88.97.E6.8C.99.E3.81.99.E3.82.8B">ウィンドウを列挙する</h3>
+<p>次のコードは、特定の型の開かれているウィンドウのそれぞれに何かをしなければならない時に使えます。例えば、設定ダイアログの "OK" ハンドラで、開かれているブラウザウィンドウのそれぞれに新しい設定を適用する時などです。</p>
+<pre>var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+var enumerator = wm.getEnumerator(type);
+while(enumerator.hasMoreElements()) {
+ var win = enumerator.getNext();
+ // |win| は [Object ChromeWindow] である(|window| と同等)。これに何かをする
+}
+</pre>
+<p>このコードでは特定の型のウィンドウ全てに対して反復処理を行っており、<var>type</var> で指定するのはウィンドウの型です。例えば、全てのブラウザウィンドウを列挙したければ、"navigator:browser" を指定します。型に関わらず全てのウィンドウを列挙したければ、<code>null</code> を指定します。</p>
+<div class="note">
+ <strong>注意:</strong> <code>nsIWindowMediator</code> のリファレンスページでは、 <code>getMostRecentWindow</code> の戻り値の型と、列挙された要素の型は、 <code>nsIDOMWindow</code>/<code>nsIDOMWindowInternal</code> とされています。実際には、JavaScript のコードから呼ばれる時には、これらのメソッドは普通 (常に?) <code>ChromeWindow</code> オブジェクトを返し、これは上記の両方と他の幾つかのインターフェイスを実装しています。あなたが恐らく慣れ親しんでいるであろう、グローバルオブジェクトの <code>window</code> は <code>ChromeWindow</code> 型です。</div>
+<p><span id="See_also"></span></p>
+<h3 id=".E5.8F.82.E8.80.83" name=".E5.8F.82.E8.80.83">参考</h3>
+<ul>
+ <li><a href="/ja/Working_with_windows_in_chrome_code" title="ja/Working_with_windows_in_chrome_code">chrome コードでウィンドウを動かす</a></li>
+</ul>
+<p><span class="comment">Interwiki Languages Links</span></p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsixmlhttprequest/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsixmlhttprequest/index.html
new file mode 100644
index 0000000000..1f24082b00
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsixmlhttprequest/index.html
@@ -0,0 +1,84 @@
+---
+title: nsIXMLHttpRequest
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIXMLHttpRequest
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIXMLHttpRequest
+---
+<div class="blockIndicator obsolete obsoleteHeader"><p><strong><span class="icon-only-inline" title="これは廃止されたAPIであり、今後の動作は保障されていません。ご注意下さい。"><i class="icon-trash"> </i></span> Gecko 60 で廃止 (Firefox 60 / Thunderbird 60 / SeaMonkey 2.57)</strong><br>この機能は廃止されました。まだいくつかのブラウザーで動作するかもしれませんが、いつ削除されてもおかしくないので、使わないようにしましょう。</p></div>
+
+<p><code>nsIXMLHttpRequest</code> along with <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIJSXMLHttpRequest" title="">nsIJSXMLHttpRequest</a></code> and <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIXMLHttpRequestEventTarget" title="">nsIXMLHttpRequestEventTarget</a></code> are Mozilla's implementation details of the DOM <a href="/en/DOM/XMLHttpRequest" title="en/DOM/XMLHttpRequest">XMLHttpRequest</a> object.</p>
+
+<div class="note"><strong>Note:</strong> If you're a web developer or a Mozilla add-on developer, please refer to the <a href="/en/DOM/XMLHttpRequest" title="en/DOM/XMLHttpRequest">XMLHttpRequest</a> documentation instead.</div>
+
+<p>This page contains documentation, specific to Mozilla application and add-on developers.</p>
+
+<p>The interface definition: <a href="https://dxr.mozilla.org/mozilla-central/source/dom/xhr/nsIXMLHttpRequest.idl">https://dxr.mozilla.org/mozilla-central/source/dom/xhr/nsIXMLHttpRequest.idl</a></p>
+
+<h3 id="Elevated_Privileges">Elevated Privileges</h3>
+
+<p>As mentioned in the "Non-Standard Properties" the property of <code>channel</code> was read-only. When using the XPCOM interface, as seen below in <a href="#Example_code">Example 2</a>, we can get access to this. The most obvious benefit is that we can set <a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsIRequest#Constants">nsiRequest - Constants</a> in the <code>xhr.channel.loadFlags</code>. For instance, as done in <a href="#Example_code">Example 2</a>, the flag of <code>LOAD_ANONYMOUS</code> is added, this strips all user data (cookies, tokens, etc).</p>
+
+<h3 id="Using_event_handlers_from_native_code">Using event handlers from native code</h3>
+
+<p>(Not sure if it's up-to-date)</p>
+
+<p>From native code, the way to set up onload and onerror handlers is a bit different. Here is a comment from Johnny Stenback &lt;<a class="link-mailto" href="mailto:jst@netscape.com" rel="freelink">jst@netscape.com</a>&gt;:</p>
+
+<blockquote>The mozilla implementation of nsIXMLHttpRequest implements the interface nsIDOMEventTarget and that's how you're supported to add event listeners. Try something like this: nsCOMPtr&lt;nsIDOMEventTarget&gt; target(do_QueryInterface(myxmlhttpreq)); target-&gt;AddEventListener(NS_LITERAL_STRING("load"), mylistener, PR_FALSE) where mylistener is your event listener object that implements the interface nsIDOMEventListener. The 'onload', 'onerror', and 'onreadystatechange' attributes moved to nsIJSXMLHttpRequest, but if you're coding in C++ you should avoid using those.</blockquote>
+
+<p>Though actually, if you use addEventListener from C++ weird things will happen too, since the result will depend on what JS happens to be on the stack when you do it....</p>
+
+<p>Conclusion: Do not use event listeners on XMLHttpRequest from C++, unless you're aware of all the security implications. And then think twice about it.</p>
+
+<h2 id="Example_code" name="Example_code">サンプルコード</h2>
+
+<p>This is a simple example code for opening a simple HTTP request from a xul application (like a Mozilla extension) without using observers:</p>
+
+<pre class="eval"> var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance();
+ req.open('POST', "<a class="external" href="http://www.foo.bar:8080/nietzsche.do" rel="freelink">http://www.foo.bar:8080/nietzsche.do</a>", true);
+ req.send('your=data&amp;and=more&amp;stuff=here');
+</pre>
+
+<h2 id="Example_code" name="Example_code">Example 2</h2>
+
+<pre><code>var {Cu: utils, Cc: classes, Ci: instances} = Components;
+Cu.import('resource://gre/modules/Services.jsm');
+function xhr(url, cb) {
+ let xhr = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIXMLHttpRequest);
+
+ let handler = ev =&gt; {
+ evf(m =&gt; xhr.removeEventListener(m, handler, !1));
+ switch (ev.type) {
+ case 'load':
+ if (xhr.status == 200) {
+ cb(xhr.response);
+ break;
+ }
+ default:
+ Services.prompt.alert(null, 'XHR Error', 'Error Fetching Package: ' + xhr.statusText + ' [' + ev.type + ':' + xhr.status + ']');
+ break;
+ }
+ };
+
+ let evf = f =&gt; ['load', 'error', 'abort'].forEach(f);
+ evf(m =&gt; xhr.addEventListener(m, handler, false));
+
+ xhr.mozBackgroundRequest = true;
+ xhr.open('GET', url, true);
+ xhr.channel.loadFlags |= Ci.nsIRequest.LOAD_ANONYMOUS | Ci.nsIRequest.LOAD_BYPASS_CACHE | Ci.nsIRequest.INHIBIT_PERSISTENT_CACHING;
+ xhr.responseType = "arraybuffer"; //dont set it, so it returns string, you dont want arraybuffer. you only want this if your url is to a zip file or some file you want to download and make a nsIArrayBufferInputStream out of it or something
+ xhr.send(null);
+}
+
+xhr('https://www.gravatar.com/avatar/eb9895ade1bd6627e054429d1e18b576?s=24&amp;d=identicon&amp;r=PG&amp;f=1', data =&gt; {
+ Services.prompt.alert(null, 'XHR Success', data);
+ var file = OS.Path.join(OS.Constants.Path.desktopDir, "test.png");
+ var promised = OS.File.writeAtomic(file, new UInt8Array(data));
+ promised.then(
+ function() {
+ alert('succesfully saved image to desktop')
+ },
+ function(ex) {
+ alert('FAILED in saving image to desktop')
+ }
+ );
+});</code></pre>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipentry/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipentry/index.html
new file mode 100644
index 0000000000..7892efac9a
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipentry/index.html
@@ -0,0 +1,60 @@
+---
+title: nsIZipEntry
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIZipEntry
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIZipEntry
+---
+<p> </p>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+</table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>compression</code></td>
+ <td><code>readonly attribute unsigned short</code></td>
+ <td>アイテムに使用される圧縮の種類。取り得る値とそれらの意味は <a class="external" href="http://www.pkware.com/business_and_developers/developer/appnote/" rel="freelink">http://www.pkware.com/business_and_d...loper/appnote/</a> にある ZIP ファイルの仕様書に定義されています。</td>
+ </tr>
+ <tr>
+ <td><code>size</code></td>
+ <td><code>readonly attribute unsigned long</code></td>
+ <td>アイテムに含まれるデータの圧縮済みサイズ。</td>
+ </tr>
+ <tr>
+ <td><code>realSize</code></td>
+ <td><code>readonly attribute unsigned long</code></td>
+ <td>アイテムに含まれるデータの非圧縮サイズ。</td>
+ </tr>
+ <tr>
+ <td><code>CRC32</code></td>
+ <td><code>readonly attribute unsigned long</code></td>
+ <td>エントリに含まれるファイルの CRC-32 ハッシュ値。</td>
+ </tr>
+ <tr>
+ <td><code>isDirectory</code></td>
+ <td><code>readonly attribute boolean</code></td>
+ <td>エントリの名前が「/」で終わる場合は true、そうでなければ false。</td>
+ </tr>
+ <tr>
+ <td><code>lastModifiedTime</code></td>
+ <td><code>readonly attribute PRTime</code></td>
+ <td>アイテムの最終更新日時。</td>
+ </tr>
+ <tr>
+ <td><code>isSynthetic</code></td>
+ <td><code>readonly attribute boolean</code></td>
+ <td>この属性は、アイテムが本当の ZIP エントリであるか、実際のエントリのパスの一部のために合成されたエントリであるかを判別するために使用します。合成エントリは、ZIP ファイル内部で対応するエントリを持たないディレクトリを表します。例えば、ZIP ファイル内のディレクトリ foo/ のためのエントリが、foo/bar.txt のためのエントリをひとつだけ含む場合、それは合成エントリとなります。その ZIP ファイルにディレクトリの実際のエントリが含まれる場合、そのディレクトリの nsIZipEntry に関しては、この属性は false となります。ファイルが合成エントリになることはできません。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2>
+<p><a href="ja/NsIZipReader">nsIZipReader</a></p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipreader/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipreader/index.html
new file mode 100644
index 0000000000..67615221ee
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipreader/index.html
@@ -0,0 +1,185 @@
+---
+title: nsIZipReader
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIZipReader
+tags:
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIZipReader
+---
+<p> </p>
+<div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/modules/libjar/nsIZipReader.idl" rel="custom">modules/libjar/nsIZipReader.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p>
+<p>実装: <code>@mozilla.org/libjar/zip-reader;1</code>。インスタンスを作成するには、以下のように記述します。</p>
+<pre class="eval">var zReader = Components.classes["@mozilla.org/libjar/zip-reader;1"]
+ .createInstance(Components.interfaces.nsIZipReader);
+</pre>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#open.28.29">open</a>(in nsIFile zipFile)</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#close.28.29">close</a>()</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#test.28.29">test</a>(in string aEntryName)</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#extract.28.29">extract</a>(in string zipEntry, in nsIFile outFile)</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIZipEntry <a href="#getEntry.28.29">getEntry</a>(in string zipEntry)</code></td>
+ </tr>
+ <tr>
+ <td><code>boolean <a href="#hasEntry.28.29">hasEntry</a>(in AUTF8String zipEntry)</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIUTF8StringEnumerator <a href="#findEntries.28.29">findEntries</a>(in string aPattern)</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIInputStream <a href="#getInputStream.28.29">getInputStream</a>(in string zipEntry)</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIInputStream <a href="#getInputStreamWithSpec.28.29">getInputStreamWithSpec</a>(in AUTF8String aJarSpec, in string zipEntry)</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>file</code></td>
+ <td><code>readonly attribute nsIFile</code></td>
+ <td>この ZIP ファイルリーダーが初期化された ZIP を表すファイル。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="open.28.29" name="open.28.29">open()</h3>
+<p>ZIP ファイルを開いてい読み取れるようにします。他のファイルを開くこともできますが、まず <code>close()</code> で閉じる必要があります。</p>
+<pre class="eval">void open(in nsIFile zipFile)
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<dl>
+ <dt>
+ <code>zipFile</code></dt>
+ <dd>
+ 開く ZIP ファイル。</dd>
+</dl>
+<h3 id="close.28.29" name="close.28.29">close()</h3>
+<p>ZIP ファイルを閉じます。以後、ファイルを展開しようとしたり、その入力ストリームから読み取りを行おうとするとエラーになります。</p>
+<pre class="eval">void close()
+</pre>
+<h3 id="test.28.29" name="test.28.29">test()</h3>
+<p>各アイテムをメモリに展開する際に CRC チェックを実行して、アーカイブの完全性を検証します。エントリが指定された場合、そのアイテムの完全性のみが検証されます。<code>NULL</code> が渡された場合、アーカイブ内のすべてのアイテムの完全性が検証されます。</p>
+<pre class="eval">void test(in string aEntryName)
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6>
+<dl>
+ <dt>
+ <code>aEntryName</code></dt>
+ <dd>
+ 検証を行う単独のエントリ、あるいは、アーカイブ内のすべてのエントリを検証する場合は <code>NULL</code>。</dd>
+</dl>
+<h3 id="extract.28.29" name="extract.28.29">extract()</h3>
+<p>ZIP エントリを、<code>outFile</code> で指定されたローカルファイルに展開します。展開を正常に完了するには、このエントリは非圧縮あるいはでデフレート圧縮形式で ZIP 内に保存されていなければなりません。エントリがディレクトリの場合、そのディレクトリが非再帰的に展開されます。</p>
+<pre class="eval">void extract(in string zipEntry, in nsIFile outFile)
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6>
+<dl>
+ <dt>
+ <code>zipEntry</code></dt>
+ <dd>
+ 展開する ZIP エントリ。</dd>
+</dl>
+<dl>
+ <dt>
+ <code>outFile</code></dt>
+ <dd>
+ ZIP ファイルの展開先に使用するローカルファイル</dd>
+</dl>
+<h3 id="getEntry.28.29" name="getEntry.28.29">getEntry()</h3>
+<p>指定された ZIP エントリに相当する <code>nsIZipEntry</code> を返します。</p>
+<pre class="eval">nsIZipEntry getEntry(in string zipEntry)
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6>
+<dl>
+ <dt>
+ <code>zipEntry</code></dt>
+ <dd>
+ ZIP エントリ。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6>
+<p>指定された ZIP エントリに相当する <code>nsIZipEntry</code>。</p>
+<h3 id="hasEntry.28.29" name="hasEntry.28.29">hasEntry()</h3>
+<p>ZIP ファイルに entryName で指定されたエントリが含まれているかどうかを確認します。</p>
+<pre class="eval">boolean hasEntry(in AUTF8String zipEntry)
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6>
+<p>真偽値。該当する ZIP エントリが存在する場合は <code>true</code>、存在しない場合は <code>false</code>。</p>
+<h3 id="findEntries.28.29" name="findEntries.28.29">findEntries()</h3>
+<p>一致するエントリ名を含む文字列の列挙 (enumerator) を返します。</p>
+<pre class="eval">nsIUTF8StringEnumerator findEntries(in string aPattern)
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_6" name=".E5.BC.95.E6.95.B0_6">引数</h6>
+<dl>
+ <dt>
+ <code>aPattern</code></dt>
+ <dd>
+ ZIP ファイル内でエントリを検索するために使用する正規表現。すべてのエントリを取得するには、この引数を <code>null</code> に設定します。そうでない場合、以下の構文を使ってください。</dd>
+</dl>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96">投げられる例外</h6>
+<dl>
+ <dt>
+ <code>NS_ERROR_ILLEGAL_VALUE</code></dt>
+ <dd>
+ 多くの、ただしすべてではない不正な <code>aPattern</code> の値が確認された場合。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_3" name=".E6.88.BB.E3.82.8A.E5.80.A4_3">戻り値</h6>
+<p>一致したエントリ名が含まれる <code>nsIUTF8StringEnumerator</code>。</p>
+<h3 id="getInputStream.28.29" name="getInputStream.28.29">getInputStream()</h3>
+<p>指定された ZIP エントリの内容が含まれる入力ストリームを返します。</p>
+<pre class="eval">nsIInputStream getInputStream(in string zipEntry)
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_7" name=".E5.BC.95.E6.95.B0_7">引数</h6>
+<dl>
+ <dt>
+ <code>zipEntry</code></dt>
+ <dd>
+ ストリームを開くエントリの名前。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_4" name=".E6.88.BB.E3.82.8A.E5.80.A4_4">戻り値</h6>
+<p>指定された ZIP エントリの内容が含まれる <code>nsIInputStream</code>。</p>
+<h3 id="getInputStreamWithSpec.28.29" name="getInputStreamWithSpec.28.29">getInputStreamWithSpec()</h3>
+<p>指定された ZIP エントリの内容が含まれる入力ストリームを返します。エントリが (「/」で終わる) ディレクトリを参照している場合、ディレクトリストリームが開かれます。そうでない場合はファイルエントリの内容が返されます。</p>
+<pre class="eval">nsIInputStream getInputStreamWithSpec(in AUTF8String aJarSpec, in string zipEntry)
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_8" name=".E5.BC.95.E6.95.B0_8">引数</h6>
+<dl>
+ <dt>
+ <code>aJarSpec</code></dt>
+ <dd>
+ JAR に使われている URI の Spec (利用されるのはディレクトリストリームの場合のみです)。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_5" name=".E6.88.BB.E3.82.8A.E5.80.A4_5">戻り値</h6>
+<p>指定された ZIP エントリの内容が含まれる <code>nsIInputStream</code>。</p>
+<h2 id="See_also" name="See_also">See also</h2>
+<p><a href="ja/NsIZipEntry">nsIZipEntry</a></p>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipwriter/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipwriter/index.html
new file mode 100644
index 0000000000..5113ed3323
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference/nsizipwriter/index.html
@@ -0,0 +1,496 @@
+---
+title: nsIZipWriter
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference/nsIZipWriter
+tags:
+ - Firefox 3
+ - Interfaces
+ - XPCOM
+ - XPCOM API Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIZipWriter
+---
+<p> <code>nsIZipWriter</code> インタフェースは、スクリプトを使ってデータを Zip ファイル形式にアーカイブできる簡単な方法を提供します。アーカイブに対する操作はひとつずつ実行することも、キューに入れておいて後で実行することもできます。</p>
+<p>実行したい操作をすべてキューに追加したら、<code><a href="#processQueue.28.29">processQueue()</a></code> を呼び出せば、キューに追加した順番通りに操作が実行されます。キューの途中で実行された操作は、オブザーバの対象外で発生したエラーもすべて例外として投げます。</p>
+<p>バックグラウンドでキューを実行中に、インタフェースに対して同時に操作を行おうとした場合、<code>NS_ERROR_IN_PROGRESS</code> という例外が投げられます。</p>
+<p>ファイル名やディレクトリ名の区切り記号には必ずスラッシュ ("/") を使い、また 1 文字目がスラッシュで始まっていてはいけません。</p>
+<div class="blockIndicator note"><strong>註:</strong> ディレクトリ内のファイルエントリを追加するために、そのディレクトリのエントリを追加しておく必要はありませんが、一部の Zip ユーティリティでは問題が生じる可能性がありますので、あらかじめディレクトリエントリを明示的に追加しておいた方が良いでしょう。</div>
+<p><br>
+ </p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/modules/libjar/zipwriter/public/nsIZipWriter.idl" rel="custom">modules/libjar/zipwriter/public/nsIZipWriter.idl</a></code><span style="text-align: right; float: right;"><a href="/ja/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+<i>Please add a summary to this article.</i>
+</span>
+
+<div style="background: #eee; padding: 2px;">
+<span> </span>
+<span style="text-align: right; float: right;">最終更新: Gecko 1.9 (Firefox 3)</span></div>
+</div>
+<p>継承元: <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISupports" title="">nsISupports</a></code></p>
+<p>実装: <code>@mozilla.org/zipwriter;1</code>. インスタンスを作成するには、以下のように記述します。</p>
+<pre class="eval">var zipWriter = Components.classes["@mozilla.org/zipwriter;1"]
+ .createInstance(Components.interfaces.nsIZipWriter);
+</pre>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.AE.E6.A6.82.E8.A6.81">メソッドの概要</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#addEntryDirectory.28.29">addEntryDirectory</a>(in AUTF8String aZipEntry, in PRTime aModTime, in boolean aQueue);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#addEntryChannel.28.29">addEntryChannel</a>(in AUTF8SZtring aZipEntry, in PRTime aModTime, in PRInt32 aCompression, in <a href="/ja/NsIChannel" title="ja/NsIChannel">nsIChannel</a> aChannel, in boolean aQueue)</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#addEntryFile.28.29">addEntryFile</a>(in AUTF8SZtring aZipEntry, in PRInt32 aCompression, in nsIFile aFile, in boolean aQueue)</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#addEntryStream.28.29">addEntryStream</a>(in AUTF8SZtring aZipEntry, in PRTime aModTime, in PRInt32 aCompression, in <a href="/ja/nsIInputStream" title="ja/nsIInputStream">nsIInputStream</a> aStream, in boolean aQueue)</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#close.28.29">close</a>()</code></td>
+ </tr>
+ <tr>
+ <td><code><a href="/ja/nsIZipEntry" title="ja/nsIZipEntry">nsIZipEntry</a> <a href="#getEntry.28.29">getEntry</a>(in <a href="/ja/AUTF8String" title="ja/AUTF8String">AUTF8String</a> aZipEntry);</code></td>
+ </tr>
+ <tr>
+ <td><code>boolean <a href="#hasEntry.28.29">hasEntry</a>(in AUTF8String aZipEntry);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#open.28.29">open</a>(in <a href="/ja/NsIFile" title="ja/NsIFile">nsIFile</a> aFile, in PRInt32 aIoFlags);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#processQueue.28.29">processQueue</a>(in nsIRequestObserver aObserver, in nsISupports aContext)</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#removeEntry.28.29">removeEntry</a>(in AUTF8String aZipEntry, in boolean aQueue)</code></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.B1.9E.E6.80.A7" name=".E5.B1.9E.E6.80.A7">属性</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">属性</td>
+ <td class="header">型</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>comment</code></td>
+ <td><code><a href="/ja/ACString" title="ja/ACString">ACString</a></code></td>
+ <td>開かれている Zip ファイルに関連付けられているコメントを取得あるいは設定します。開かれている Zip ファイルがない場合は、例外 <code>NS_ERROR_NOT_INITIALIZED</code> が投げられます。</td>
+ </tr>
+ <tr>
+ <td><code>inQueue</code></td>
+ <td><code>boolean</code></td>
+ <td>バックグラウンドのキューで操作が実行中の場合は <code>true</code>、バックグラウンド操作が実行中でない場合は <code>false</code>。<em>読み取り専用。</em></td>
+ </tr>
+ <tr>
+ <td><code>file</code></td>
+ <td><code><a href="/ja/NsIFile" title="ja/NsIFile">nsIFile</a></code></td>
+ <td>書き込みを行う Zip ファイル。<em>読み取り専用。</em></td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E5.AE.9A.E6.95.B0" name=".E5.AE.9A.E6.95.B0">定数</h2>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">定数</td>
+ <td class="header">値</td>
+ <td class="header">説明</td>
+ </tr>
+ <tr>
+ <td><code>COMPRESSION_NONE</code></td>
+ <td>0</td>
+ <td>ファイルを圧縮しない。</td>
+ </tr>
+ <tr>
+ <td><code>COMPRESSION_FASTEST</code></td>
+ <td>1</td>
+ <td>ファイルをアーカイブに追加する際、最速の圧縮方法を使用します。</td>
+ </tr>
+ <tr>
+ <td><code>COMPRESSION_DEFAULT</code></td>
+ <td>6</td>
+ <td>ファイルをアーカイブに追加する際、標準の圧縮方法を使用します。</td>
+ </tr>
+ <tr>
+ <td><code>COMPRESSION_BEST</code></td>
+ <td>9</td>
+ <td>ファイルをアーカイブに追加する際、最も圧縮率の高い圧縮方法を使用します。</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.BD.E3.83.83.E3.83.89">メソッド</h2>
+<h3 id="addEntryDirectory.28.29" name="addEntryDirectory.28.29">addEntryDirectory()</h3>
+<p>Zip ファイルに新しいディレクトリエントリを追加します。</p>
+<div class="blockIndicator note"><strong>註:</strong> ディレクトリ内のファイルエントリを追加するために、そのディレクトリのエントリを追加しておく必要はありませんが、一部の Zip ユーティリティでは問題が生じる可能性がありますので、あらかじめディレクトリエントリを明示的に追加しておいた方が良いでしょう。</div>
+<pre class="eval"> void addEntryDirectory(
+ in AUTF8String aZipEntry,
+ in PRTime aModTime,
+ in boolean aQueue
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0" name=".E5.BC.95.E6.95.B0">引数</h6>
+<dl>
+ <dt>
+ <code>aZipEntry</code></dt>
+ <dd>
+ Zip ファイルに追加するディレクトリエントリのパス。</dd>
+ <dt>
+ <code>aModTime</code></dt>
+ <dd>
+ エントリの変更日時。ミリ秒単位。</dd>
+ <dt>
+ <code>aQueue</code></dt>
+ <dd>
+ 操作をキューに追加して後で実行する場合は <code>true</code>、操作を即座に実行する場合は <code>false</code>。</dd>
+</dl>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96">投げられる例外</h6>
+<dl>
+ <dt>
+ <code>NS_ERROR_NOT_INITIALIZED</code></dt>
+ <dd>
+ 開かれている Zip ファイルがありません。</dd>
+ <dt>
+ <code>NS_ERROR_FILE_ALREADY_EXISTS</code></dt>
+ <dd>
+ 指定されたパスは既に Zip ファイルの中に存在します。</dd>
+ <dt>
+ <code>NS_ERROR_IN_PROGRESS</code></dt>
+ <dd>
+ Zip Writer は他の操作を実行中です。</dd>
+</dl>
+<h3 id="addEntryChannel.28.29" name="addEntryChannel.28.29">addEntryChannel()</h3>
+<p>チャンネルから Zip ファイルにデータを追加します。</p>
+<pre class="eval"> void addEntryChannel(
+ in AUTF8String aZipEntry,
+ in PRTime aModTime,
+ in PRInt32 aCompression,
+ in nsIChannel aChannel,
+ in boolean aQueue
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_2" name=".E5.BC.95.E6.95.B0_2">引数</h6>
+<dl>
+ <dt>
+ <code>aZipEntry</code></dt>
+ <dd>
+ Zip ファイルに追加するファイルエントリのパス。これは Zip ファイル内に配置されるパスになります。</dd>
+ <dt>
+ <code>aModTime</code></dt>
+ <dd>
+ エントリの変更日時。ミリ秒単位。</dd>
+ <dt>
+ <code>aCompression</code></dt>
+ <dd>
+ 使用する圧縮方法を表す <a href="#Constants">圧縮定数</a> のいずれか。</dd>
+ <dt>
+ <code>aChannel</code></dt>
+ <dd>
+ データを取得するチャンネル。</dd>
+ <dt>
+ <code>aQueue</code></dt>
+ <dd>
+ 操作をキューに追加して後で実行する場合は <code>true</code>、操作を即座に実行する場合は <code>false</code>。</dd>
+</dl>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_2" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_2">投げられる例外</h6>
+<dl>
+ <dt>
+ <code>NS_ERROR_NOT_INITIALIZED</code></dt>
+ <dd>
+ 開かれている Zip ファイルがありません。</dd>
+ <dt>
+ <code>NS_ERROR_FILE_ALREADY_EXISTS</code></dt>
+ <dd>
+ 指定されたパスは既に Zip ファイルの中に存在します。</dd>
+ <dt>
+ <code>NS_ERROR_IN_PROGRESS</code></dt>
+ <dd>
+ Zip Writer は他の操作を実行中です。</dd>
+</dl>
+<h3 id="addEntryFile.28.29" name="addEntryFile.28.29">addEntryFile()</h3>
+<p>新しいファイルもしくはディレクトリを Zip ファイルに追加します。指定されたファイルがディレクトリの場合、この呼び出しは以下と同じことになります。</p>
+<pre class="eval"> addEntryDirectory(aZipEntry, aFile.lastModifiedTime, aQueue);
+</pre>
+<pre class="eval"> void addEntryFile(
+ in AUTF8String aZipEntry,
+ in PRInt32 aCompression,
+ in nsIFile aFile,
+ in boolean aQueue
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_3" name=".E5.BC.95.E6.95.B0_3">引数</h6>
+<dl>
+ <dt>
+ <code>aZipEntry</code></dt>
+ <dd>
+ Zip ファイルに追加するファイルエントリのパス。これは Zip ファイル内に配置されるパスになります。</dd>
+ <dt>
+ <code>aCompression</code></dt>
+ <dd>
+ 使用する圧縮方法を表す <a href="#Constants">圧縮定数</a> のいずれか。</dd>
+ <dt>
+ <code>aFile</code></dt>
+ <dd>
+ データと変更日時を取得するファイル。</dd>
+ <dt>
+ <code>aQueue</code></dt>
+ <dd>
+ 操作をキューに追加して後で実行する場合は <code>true</code>、操作を即座に実行する場合は <code>false</code>。</dd>
+</dl>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_3" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_3">投げられる例外</h6>
+<dl>
+ <dt>
+ <code>NS_ERROR_NOT_INITIALIZED</code></dt>
+ <dd>
+ 開かれている Zip ファイルがありません。</dd>
+ <dt>
+ <code>NS_ERROR_FILE_ALREADY_EXISTS</code></dt>
+ <dd>
+ 指定されたパスは既に Zip ファイルの中に存在します。</dd>
+ <dt>
+ <code>NS_ERROR_IN_PROGRESS</code></dt>
+ <dd>
+ Zip Writer は他の操作を実行中です。</dd>
+</dl>
+<h3 id="addEntryStream.28.29" name="addEntryStream.28.29">addEntryStream()</h3>
+<p>入力ストリームから Zip ファイルにデータを追加します。</p>
+<pre class="eval"> void addEntryStream(
+ in AUTF8String aZipEntry,
+ in PRTime aModTime,
+ in PRInt32 aCompression,
+ in nsIInputStream aStream,
+ in boolean aQueue
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_4" name=".E5.BC.95.E6.95.B0_4">引数</h6>
+<dl>
+ <dt>
+ <code>aZipEntry</code></dt>
+ <dd>
+ Zip ファイルに追加するファイルエントリのパス。これは Zip ファイル内に配置されるパスになります。</dd>
+ <dt>
+ <code>aModTime</code></dt>
+ <dd>
+ エントリの変更日時。ミリ秒単位。</dd>
+ <dt>
+ <code>aCompression</code></dt>
+ <dd>
+ 使用する圧縮方法を表す <a href="#Constants">圧縮定数</a> のいずれか。</dd>
+ <dt>
+ <code>aStream</code></dt>
+ <dd>
+ データを取得する入力ストリーム。</dd>
+ <dt>
+ <code>aQueue</code></dt>
+ <dd>
+ 操作をキューに追加して後で実行する場合は <code>true</code>、操作を即座に実行する場合は <code>false</code>。</dd>
+</dl>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_4" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_4">投げられる例外</h6>
+<dl>
+ <dt>
+ <code>NS_ERROR_NOT_INITIALIZED</code></dt>
+ <dd>
+ 開かれている Zip ファイルがありません。</dd>
+ <dt>
+ <code>NS_ERROR_FILE_ALREADY_EXISTS</code></dt>
+ <dd>
+ 指定されたパスは既に Zip ファイルの中に存在します。</dd>
+ <dt>
+ <code>NS_ERROR_IN_PROGRESS</code></dt>
+ <dd>
+ Zip Writer は他の操作を実行中です。</dd>
+</dl>
+<h3 id="close.28.29" name="close.28.29">close()</h3>
+<p>Zip ファイルを閉じます。</p>
+<pre class="eval"> void close();
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_5" name=".E5.BC.95.E6.95.B0_5">引数</h6>
+<p>なし。</p>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_5" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_5">投げられる例外</h6>
+<dl>
+ <dt>
+ <code>NS_ERROR_NOT_INITIALIZED</code></dt>
+ <dd>
+ 開かれている Zip ファイルがありません。</dd>
+ <dt>
+ <code>NS_ERROR_IN_PROGRESS</code></dt>
+ <dd>
+ Zip Writer は他の操作を実行中です。</dd>
+</dl>
+<p>Zip ファイルの仕上げが失敗した場合、他の例外が投げられる場合もあります。</p>
+<h3 id="getEntry.28.29" name="getEntry.28.29">getEntry()</h3>
+<p>開かれている Zip ファイルから特定のエントリを取得します。</p>
+<pre class="eval"> nsIZipEntry getEntry(
+ in AUTF8String aZipEntry,
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_6" name=".E5.BC.95.E6.95.B0_6">引数</h6>
+<dl>
+ <dt>
+ <code>aZipEntry</code></dt>
+ <dd>
+ 取得するファイルエントリのパス。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4" name=".E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h6>
+<p>指定したエントリについて説明した <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIZipEntry" title="">nsIZipEntry</a></code> オブジェクト。あるいは、該当するエントリが存在しなかった場合 <code>null</code>。</p>
+<h3 id="hasEntry.28.29" name="hasEntry.28.29">hasEntry()</h3>
+<p>特定のエントリが Zip ファイル内に存在するかどうかを判別します。</p>
+<pre class="eval"> boolean hasEntry(
+ in AUTF8String aZipEntry,
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_7" name=".E5.BC.95.E6.95.B0_7">引数</h6>
+<dl>
+ <dt>
+ <code>aZipEntry</code></dt>
+ <dd>
+ 確認を行うファイルエントリのパス。</dd>
+</dl>
+<h6 id=".E6.88.BB.E3.82.8A.E5.80.A4_2" name=".E6.88.BB.E3.82.8A.E5.80.A4_2">戻り値</h6>
+<p>指定されたパスのエントリが Zip ファイル内に存在する場合は <code>true</code>、存在しない場合は <code>false</code> を返します。</p>
+<h3 id="open.28.29" name="open.28.29">open()</h3>
+<p>指定された Zip ファイルを開きます。</p>
+<pre class="eval"> void open(
+ in nsIFile aFile,
+ in PRInt32 aIoFlags
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_8" name=".E5.BC.95.E6.95.B0_8">引数</h6>
+<dl>
+ <dt>
+ <code>aFile</code></dt>
+ <dd>
+ 開く Zip ファイル。</dd>
+ <dt>
+ <code>aIoFlags</code></dt>
+ <dd>
+ <code>prio.h</code> で指定された、Zip ファイルのオープンフラグ。</dd>
+</dl>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_6" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_6">投げられる例外</h6>
+<dl>
+ <dt>
+ <code>NS_ERROR_ALREADY_INITIALIZED</code></dt>
+ <dd>
+ Zip ファイルは既に開かれています。</dd>
+ <dt>
+ <code>NS_ERROR_INVALID_ARG</code></dt>
+ <dd>
+ <code>aFile</code> 引数が null です。</dd>
+ <dt>
+ <code>NS_ERROR_FILE_NOT_FOUND</code></dt>
+ <dd>
+ 指定されたファイルが見つからず、フラグでそのファイルの作成が許可されていません。または、指定されたファイルを含むディレクトリが存在しません。</dd>
+ <dt>
+ <code>NS_ERROR_FILE_CORRUPTED</code></dt>
+ <dd>
+ 指定されたファイルは識別可能な Zip ファイルではありません。</dd>
+</dl>
+<p>ファイルが破損していた場合やサポートされていない形式だった場合など、ファイルを開くのに失敗すると、他の例外が投げられる場合もあります。</p>
+<h3 id="processQueue.28.29" name="processQueue.28.29">processQueue()</h3>
+<p>キュー全体の処理が完了するかエラーが発生するまで、キューに追加されたすべての項目を処理します。最初の操作が開始されたときと、最後の操作が完了したときに、オブザーバに通知が行われます。</p>
+<p>エラーが発生した場合はすべてオブザーバに通知されます。</p>
+<p>キューが完了するか、エラーが起きて途中までのキューの処理が中止されるまで、Zip Writer はビジー状態になります。途中までの処理に失敗した場合、残りの項目はキューに留まります。再度 <code>processQueue()</code> を呼び出すと、操作が中断されたところから再開されます。</p>
+<pre class="eval"> void processQueue(
+ in nsIRequestObserver aObserver,
+ in nsISupports aContext
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_9" name=".E5.BC.95.E6.95.B0_9">引数</h6>
+<dl>
+ <dt>
+ <code>aObserver</code></dt>
+ <dd>
+ キューから通知を受け取るオブザーバ。</dd>
+ <dt>
+ <code>aContext</code></dt>
+ <dd>
+ オブザーバに渡すコンテキスト。</dd>
+</dl>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_7" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_7">投げられる例外</h6>
+<dl>
+ <dt>
+ <code>NS_ERROR_NOT_INITIALIZED</code></dt>
+ <dd>
+ 開かれている Zip ファイルがありません。</dd>
+ <dt>
+ <code>NS_ERROR_IN_PROGRESS</code></dt>
+ <dd>
+ キューの処理は既に実行中です。</dd>
+</dl>
+<h3 id="removeEntry.28.29" name="removeEntry.28.29">removeEntry()</h3>
+<p>Zip ファイルからエントリを削除します。</p>
+<pre class="eval"> void removeEntry(
+ in AUTF8String aZipEntry,
+ in boolean aQueue
+ );
+</pre>
+<h6 id=".E5.BC.95.E6.95.B0_10" name=".E5.BC.95.E6.95.B0_10">引数</h6>
+<dl>
+ <dt>
+ <code>aZipEntry</code></dt>
+ <dd>
+ Zip ファイルから削除するエントリのパス。</dd>
+ <dt>
+ <code>aQueue</code></dt>
+ <dd>
+ 削除の操作をキューに追加する場合は <code>true</code>。即座に実行する場合は <code>false</code>。</dd>
+</dl>
+<h6 id=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_8" name=".E6.8A.95.E3.81.92.E3.82.89.E3.82.8C.E3.82.8B.E4.BE.8B.E5.A4.96_8">投げられる例外</h6>
+<dl>
+ <dt>
+ <code>NS_ERROR_NOT_INITIALIZED</code></dt>
+ <dd>
+ 開かれている Zip ファイルがありません。</dd>
+ <dt>
+ <code>NS_ERROR_IN_PROGRESS</code></dt>
+ <dd>
+ キューの処理は既に実行中です。</dd>
+ <dt>
+ <code>NS_ERROR_FILE_NOT_FOUND</code></dt>
+ <dd>
+ 指定されたパスにエントリが存在しません。</dd>
+</dl>
+<p>Zip ファイルの更新に失敗した場合、他の例外が投げられる場合もあります。</p>
+<h2 id=".E4.BE.8B" name=".E4.BE.8B">例</h2>
+<h3 id=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88.E3.82.92_Zip_.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AB.E8.BF.BD.E5.8A.A0.E3.81.99.E3.82.8B" name=".E3.82.B3.E3.83.A1.E3.83.B3.E3.83.88.E3.82.92_Zip_.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AB.E8.BF.BD.E5.8A.A0.E3.81.99.E3.82.8B">コメントを Zip ファイルに追加する</h3>
+<pre>var zipWriter = Components.Constructor("@mozilla.org/zipwriter;1", "nsIZipWriter");
+var zipW = new zipWriter();
+
+zipW.open(myZipFilePath, PR_RDWR | PR_CREATE_FILE | PR_TRUNCATE);
+zipW.comment = "This is a comment.";
+zipW.close();
+</pre>
+<p><code>PR_RDWR</code> とそれに続くオプションは、どのインタフェースにも含まれていない定数です (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=433295">Bug 433295</a> 参照)。このため、上記のコードを実際に動作させるには、以下のようなコードを追加する必要があります。</p>
+<pre>const PR_RDONLY = 0x01;
+const PR_WRONLY = 0x02;
+const PR_RDWR = 0x04;
+const PR_CREATE_FILE = 0x08;
+const PR_APPEND = 0x10;
+const PR_TRUNCATE = 0x20;
+const PR_SYNC = 0x40;
+const PR_EXCL = 0x80;
+</pre>
+<p><a href="/ja/Code_snippets/File_I//O_File" title="ja/Code_snippets/File_I//O_File">I/O Snippets</a> も参照してください。</p>
+<h3 id=".E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.82.92_Zip_.E3.82.A2.E3.83.BC.E3.82.AB.E3.82.A4.E3.83.96.E3.81.AB.E8.BF.BD.E5.8A.A0.E3.81.99.E3.82.8B" name=".E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.82.92_Zip_.E3.82.A2.E3.83.BC.E3.82.AB.E3.82.A4.E3.83.96.E3.81.AB.E8.BF.BD.E5.8A.A0.E3.81.99.E3.82.8B">ファイルを Zip アーカイブに追加する</h3>
+<p>このコードは、<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFile" title="">nsIFile</a></code> <code>theFile</code> で指定されたファイルを、Zip アーカイブへ同期的に追加するものです。</p>
+<pre>var zipWriter = Components.Constructor("@mozilla.org/zipwriter;1", "nsIZipWriter");
+var zipW = new zipWriter();
+
+zipW.open(myZipFilePath, PR_RDWR | PR_CREATE_FILE | PR_TRUNCATE);
+zipW.addEntryFile("Path/For/This/File/In/Zip Archive", Components.interfaces.nsIZipWriter.COMPRESSION_DEFAULT, theFile, false);
+zipW.close();
+</pre>
+<p>引数のうち <code>nyZipFilePath</code> は、実際にはパスではなく、新しい Zip ファイルの場所を指定する <code>nsIFile</code> インスタンスのことを指しています。ファイルそのものは存在していなくても構いませんが、そのファイルを含むディレクトリ (つまり nsIFile.parent) は必ず存在している必要があります。</p>
+<h3 id=".E3.81.9D.E3.81.AE.E4.BB.96.E3.81.AE.E4.BE.8B" name=".E3.81.9D.E3.81.AE.E4.BB.96.E3.81.AE.E4.BE.8B">その他の例</h3>
+<p>他の例については、ソースツリー内のユニットテストを参照してください。</p>
+<ul>
+ <li><code><a href="https://dxr.mozilla.org/mozilla-central/source/modules/libjar/zipwriter/test/unit" rel="custom">modules/libjar/zipwriter/test/unit</a></code></li>
+</ul>
+<h2 id=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B" name=".E9.96.A2.E9.80.A3.E8.A8.98.E4.BA.8B">関連記事</h2>
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIZipReader" title="">nsIZipReader</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFile" title="">nsIFile</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIChannel" title="">nsIChannel</a></code></li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIInputStream" title="">nsIInputStream</a></code></li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference_group/index.html b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference_group/index.html
new file mode 100644
index 0000000000..16538d388e
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/reference/xpcom_interface_reference_group/index.html
@@ -0,0 +1,976 @@
+---
+title: XPCOM Interface Reference group
+slug: Mozilla/Tech/XPCOM/Reference/XPCOM_Interface_Reference_group
+translation_of: Mozilla/Tech/XPCOM/Reference/Reference_by_grouping
+---
+<h2 id="Using_this_guide">Using this guide</h2>
+
+<p>このページには2010年12月1日現在の Mozilla インターフェースが一覧となっています。<a href="/ja/XPCOM_Interface_Reference" title="ja/XPCOM_Interface_Reference">the XPCOM interface Reference</a> の一覧はアルファベット順に並べられていますが、このページではそれらを機能ごとにグループ化するという試みがなされています。グループ化とカテゴリの名称は著者<span style="color: darkgreen; background: #ef9;">【訳注: 英語版のこのページの著者】</span>による独断が多少入り混じっています。(これについては涙を流す結末になりうる重大な論点であるとは認識しています。ですが、どうやら私がこの編集を行った最初の人物であるようなので、最初の編集者としての権利を得たものとします。)</p>
+<p>主要セクションの定義:</p>
+<ul>
+ <li><strong>Browser</strong>
+ <p>このセクションはビューペインまたは"browser window" 固有のコンテンツに関連する要素を含んでいます。<strong>System</strong> によってラップされていますが、便利に表示されます。</p>
+ </li>
+ <li><strong>Data</strong>
+ <p>このセクションはデータラッパーとコアオブジェクトの定義が含まれています。</p>
+ </li>
+ <li><strong>Security</strong>
+ <p>このセクションは安全なチャンネルコミュニケーションのための API 群を含んでいます。</p>
+ </li>
+ <li><strong>System</strong>
+ <p>このセクションは、(デバイスコールのような)外部のサポートしている要素の呼び出しを含む、アプリケーションレベルのインターフェースを含んでいます。これはルート要素であり、他のグループで定義されている幾つかの機能を含むものです。</p>
+ </li>
+ <li><strong>User</strong>
+ <p>このセクションは与えられたユーザーデータのストレージ固有の要素を含んでいます。</p>
+ </li>
+</ul>
+<div class="columns" style="">
+ <div class="primary Browser" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h1 id="Browser">Browser</h1>
+ <ul>
+ <li class="secondary Autocomplete" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Autocomplete">Autocomplete</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAutoCompleteController" title="ja/XPCOM_Interface_Reference/nsIAutoCompleteController">nsIAutoCompleteController</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAutoCompleteInput" title="ja/XPCOM_Interface_Reference/nsIAutoCompleteInput">nsIAutoCompleteInput</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAutoCompleteSearch" title="ja/XPCOM_Interface_Reference/nsIAutoCompleteSearch">nsIAutoCompleteSearch</a></li>
+ </ul>
+ </li>
+ <li class="secondary Console" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Console">Console</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIConsoleListener" title="ja/XPCOM_Interface_Reference/nsIConsoleListener">nsIConsoleListener</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIConsoleMessage" title="ja/XPCOM_Interface_Reference/nsIConsoleMessage">nsIConsoleMessage</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIConsoleService" title="ja/XPCOM_Interface_Reference/nsIConsoleService">nsIConsoleService</a></li>
+ </ul>
+ </li>
+ <li class="secondary Document" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Document">Document</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDocShell" title="ja/XPCOM_Interface_Reference/nsIDocShell">nsIDocShell</a></li>
+ </ul>
+ </li>
+ <li class="secondary DOM" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="DOM">DOM</h2>
+ <ul>
+ <li class="tercerary Device" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Device">Device</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMGeoGeolocation" title="ja/XPCOM_Interface_Reference/NsIDOMGeoGeolocation">nsIDOMGeoGeolocation</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMGeoPosition" title="ja/XPCOM_Interface_Reference/NsIDOMGeoPosition">nsIDOMGeoPosition</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMGeoPositionAddress" title="ja/XPCOM_Interface_Reference/nsIDOMGeoPositionAddress">nsIDOMGeoPositionAddress</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMGeoPositionCallback" title="ja/XPCOM_Interface_Reference/NsIDOMGeoPositionCallback">nsIDOMGeoPositionCallback</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMGeoPositionCoords" title="ja/XPCOM_Interface_Reference/NsIDOMGeoPositionCoords">nsIDOMGeoPositionCoords</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMGeoPositionError" title="ja/XPCOM_Interface_Reference/NsIDOMGeoPositionError">nsIDOMGeoPositionError</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMGeoPositionErrorCallback" title="ja/XPCOM_Interface_Reference/NsIDOMGeoPositionErrorCallback">nsIDOMGeoPositionErrorCallback</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMGeoPositionOptions" title="ja/XPCOM_Interface_Reference/NsIDOMGeoPositionOptions">nsIDOMGeoPositionOptions</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMGlobalPropertyInitializer" title="ja/XPCOM_Interface_Reference/nsIDOMGlobalPropertyInitializer">nsIDOMGlobalPropertyInitializer</a></li>
+ </ul>
+ </li>
+ <li class="tercerary Element" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Element">Element</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMChromeWindow" title="ja/XPCOM_Interface_Reference/nsIDOMChromeWindow">nsIDOMChromeWindow</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMClientRect" title="ja/XPCOM_Interface_Reference/nsIDOMClientRect">nsIDOMClientRect</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMElement" title="ja/XPCOM_Interface_Reference/nsIDOMElement">nsIDOMElement</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMHTMLAudioElement" title="ja/XPCOM_Interface_Reference/nsIDOMHTMLAudioElement">nsIDOMHTMLAudioElement</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMHTMLFormElement" title="ja/XPCOM_Interface_Reference/nsIDOMHTMLFormElement">nsIDOMHTMLFormElement</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMHTMLMediaElement" title="ja/XPCOM_Interface_Reference/NsIDOMHTMLMediaElement">nsIDOMHTMLMediaElement</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMHTMLSourceElement" title="ja/XPCOM_Interface_Reference/nsIDOMHTMLSourceElement">nsIDOMHTMLSourceElement</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMHTMLTimeRanges" title="ja/XPCOM_Interface_Reference/nsIDOMHTMLTimeRanges">nsIDOMHTMLTimeRanges</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMJSWindow" title="ja/XPCOM_Interface_Reference/nsIDOMJSWindow">nsIDOMJSWindow</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMNode" title="ja/XPCOM_Interface_Reference/nsIDOMNode">nsIDOMNode</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMNSHTMLDocument" title="ja/XPCOM_Interface_Reference/nsIDOMNSHTMLDocument">nsIDOMNSHTMLDocument</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMStorageItem" title="ja/XPCOM_Interface_Reference/NsIDOMStorageItem">nsIDOMStorageItem</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMStorageManager" title="ja/XPCOM_Interface_Reference/NsIDOMStorageManager">nsIDOMStorageManager</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMWindow" title="ja/XPCOM_Interface_Reference/nsIDOMWindow">nsIDOMWindow</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMWindow2" title="ja/XPCOM_Interface_Reference/nsIDOMWindow2">nsIDOMWindow2</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMWindowInternal" title="ja/XPCOM_Interface_Reference/nsIDOMWindowInternal">nsIDOMWindowInternal</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMWindowUtils" title="ja/XPCOM_Interface_Reference/nsIDOMWindowUtils">nsIDOMWindowUtils</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDynamicContainer" title="ja/XPCOM_Interface_Reference/nsIDynamicContainer">nsIDynamicContainer</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIEditor" title="ja/XPCOM_Interface_Reference/NsIEditor">nsIEditor</a></li>
+ </ul>
+ </li>
+ <li class="tercerary Event" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Event">Event</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMEvent" title="ja/XPCOM_Interface_Reference/nsIDOMEvent">nsIDOMEvent</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMEventGroup" title="ja/XPCOM_Interface_Reference/nsIDOMEventGroup">nsIDOMEventGroup</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMEventListener" title="ja/XPCOM_Interface_Reference/nsIDOMEventListener">nsIDOMEventListener</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMEventTarget" title="ja/XPCOM_Interface_Reference/nsIDOMEventTarget">nsIDOMEventTarget</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMMouseScrollEvent" title="ja/XPCOM_Interface_Reference/nsIDOMMouseScrollEvent">nsIDOMMouseScrollEvent</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMMozTouchEvent" title="ja/XPCOM_Interface_Reference/nsIDOMMozTouchEvent">nsIDOMMozTouchEvent</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMOrientationEvent" title="ja/XPCOM_Interface_Reference/nsIDOMOrientationEvent">nsIDOMOrientationEvent</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMProgressEvent" title="ja/XPCOM_Interface_Reference/NsIDOMProgressEvent">nsIDOMProgressEvent</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIDOMSimpleGestureEvent" title="ja/XPCOM_Interface_Reference/NsIDOMSimpleGestureEvent">nsIDOMSimpleGestureEvent</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDragDropHandler" title="ja/XPCOM_Interface_Reference/nsIDragDropHandler">nsIDragDropHandler</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDragService" title="ja/XPCOM_Interface_Reference/nsIDragService">nsIDragService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDragSession" title="ja/XPCOM_Interface_Reference/nsIDragSession">nsIDragSession</a></li>
+ </ul>
+ </li>
+ <li class="tercerary HTML" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="HTML">HTML</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibilityService" title="ja/XPCOM_Interface_Reference/nsIAccessibilityService">nsIAccessibilityService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleCoordinateType" title="ja/XPCOM_Interface_Reference/nsIAccessibleCoordinateType">nsIAccessibleCoordinateType</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleDocument" title="ja/XPCOM_Interface_Reference/nsIAccessibleDocument">nsIAccessibleDocument</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleEditableText" title="ja/XPCOM_Interface_Reference/nsIAccessibleEditableText">nsIAccessibleEditableText</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleEvent" title="ja/XPCOM_Interface_Reference/nsIAccessibleEvent">nsIAccessibleEvent</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleHyperLink" title="ja/XPCOM_Interface_Reference/nsIAccessibleHyperLink">nsIAccessibleHyperLink</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleHyperText" title="ja/XPCOM_Interface_Reference/nsIAccessibleHyperText">nsIAccessibleHyperText</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIAccessibleImage" title="ja/XPCOM_Interface_Reference/NsIAccessibleImage">nsIAccessibleImage</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleProvider" title="ja/XPCOM_Interface_Reference/nsIAccessibleProvider">nsIAccessibleProvider </a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleRetrieval" title="ja/XPCOM_Interface_Reference/nsIAccessibleRetrieval">nsIAccessibleRetrieval</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleRole" title="ja/XPCOM_Interface_Reference/nsIAccessibleRole">nsIAccessibleRole</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleScrollType" title="ja/XPCOM_Interface_Reference/nsIAccessibleScrollType">nsIAccessibleScrollType</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleSelectable" title="ja/XPCOM_Interface_Reference/nsIAccessibleSelectable">nsIAccessibleSelectable</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleStates" title="ja/XPCOM_Interface_Reference/nsIAccessibleStates">nsIAccessibleStates</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleTable" title="ja/XPCOM_Interface_Reference/nsIAccessibleTable">nsIAccessibleTable</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleText" title="ja/XPCOM_Interface_Reference/nsIAccessibleText">nsIAccessibleText</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleTreeCache" title="ja/XPCOM_Interface_Reference/nsIAccessibleTreeCache">nsIAccessibleTreeCache</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAccessibleValue" title="ja/XPCOM_Interface_Reference/nsIAccessibleValue">nsIAccessibleValue</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIAccessNode" title="ja/XPCOM_Interface_Reference/NsIAccessNode">nsIAccessNode</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISyncMessageSender" title="ja/XPCOM_Interface_Reference/nsISyncMessageSender">nsISyncMessageSender</a></li>
+ </ul>
+ </li>
+ <li class="tercerary Script" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Script">Script</h3>
+ <ul>
+ <li><a>nsIScriptableUnescapeHTML</a></li>
+ <li><a>nsIScriptableUnicodeConverter</a></li>
+ <li><a>nsIScriptError</a></li>
+ <li><a>nsIScriptError2</a></li>
+ </ul>
+ </li>
+ <li class="tercerary StyleSheet" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="StyleSheet">StyleSheet</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIStyleSheetService" title="ja/XPCOM_Interface_Reference/nsIStyleSheetService">nsIStyleSheetService</a></li>
+ </ul>
+ </li>
+ <li class="tercerary URL" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="URL">URL</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIURI" title="ja/XPCOM_Interface_Reference/nsIURI">nsIURI</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIURL" title="ja/XPCOM_Interface_Reference/nsIURL">nsIURL</a></li>
+ </ul>
+ </li>
+ <li class="tercerary Util" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Util">Util</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMSerializer" title="ja/XPCOM_Interface_Reference/nsIDOMSerializer">nsIDOMSerializer</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMXPathEvaluator" title="ja/XPCOM_Interface_Reference/nsIDOMXPathEvaluator">nsIDOMXPathEvaluator</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMXPathException" title="ja/XPCOM_Interface_Reference/nsIDOMXPathException">nsIDOMXPathException</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMXPathExpression" title="ja/XPCOM_Interface_Reference/nsIDOMXPathExpression">nsIDOMXPathExpression</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDOMXPathResult" title="ja/XPCOM_Interface_Reference/nsIDOMXPathResult">nsIDOMXPathResult</a></li>
+ </ul>
+ </li>
+ <li class="tercerary XSLT" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="XSLT">XSLT</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIXSLTException" title="ja/XPCOM_Interface_Reference/nsIXSLTException">nsIXSLTException</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIXSLTProcessor" title="ja/XPCOM_Interface_Reference/nsIXSLTProcessor">nsIXSLTProcessor</a></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="secondary Download" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Download">Download</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDownload" title="ja/XPCOM_Interface_Reference/nsIDownload">nsIDownload</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDownloadManager" title="ja/XPCOM_Interface_Reference/nsIDownloadManager">nsIDownloadManager</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDownloadProgressListener" title="ja/XPCOM_Interface_Reference/nsIDownloadProgressListener">nsIDownloadProgressListener</a></li>
+ </ul>
+ </li>
+ <li class="secondary Element" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Element_2">Element</h2>
+ <ul>
+ <li class="tercerary Internal" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Internal">Internal</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIWorker" title="ja/XPCOM_Interface_Reference/NsIWorker">nsIWorker</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIWorkerGlobalScope" title="ja/XPCOM_Interface_Reference/NsIWorkerGlobalScope">nsIWorkerGlobalScope</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIWorkerMessageEvent" title="ja/XPCOM_Interface_Reference/NsIWorkerMessageEvent">nsIWorkerMessageEvent</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIWorkerMessagePort" title="ja/XPCOM_Interface_Reference/NsIWorkerMessagePort">nsIWorkerMessagePort</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIWorkerScope" title="ja/XPCOM_Interface_Reference/NsIWorkerScope">nsIWorkerScope</a></li>
+ </ul>
+ </li>
+ <li class="tercerary Tree" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Tree">Tree</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsITreeBoxObject" title="ja/XPCOM_Interface_Reference/nsITreeBoxObject">nsITreeBoxObject</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsITreeColumn" title="ja/XPCOM_Interface_Reference/nsITreeColumn">nsITreeColumn</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsITreeColumns" title="ja/XPCOM_Interface_Reference/NsITreeColumns">nsITreeColumns</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsITreeContentView" title="ja/XPCOM_Interface_Reference/NsITreeContentView">nsITreeContentView</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsITreeSelection" title="ja/XPCOM_Interface_Reference/nsITreeSelection">nsITreeSelection</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsITreeView" title="ja/XPCOM_Interface_Reference/nsITreeView">nsITreeView</a></li>
+ </ul>
+ </li>
+ <li class="tercerary Xform" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Xform">Xform</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIXFormsModelElement" title="ja/XPCOM_Interface_Reference/nsIXFormsModelElement">nsIXFormsModelElement</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIXFormsNSInstanceElement" title="ja/XPCOM_Interface_Reference/nsIXFormsNSInstanceElement">nsIXFormsNSInstanceElement</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIXFormsNSModelElement" title="ja/XPCOM_Interface_Reference/nsIXFormsNSModelElement">nsIXFormsNSModelElement</a></li>
+ </ul>
+ </li>
+ <li class="tercerary XMLHttpRequest" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="XMLHttpRequest">XMLHttpRequest</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIXMLHttpRequestEventTarget" title="ja/XPCOM_Interface_Reference/NsIXMLHttpRequestEventTarget">nsIXMLHttpRequestEventTarget</a></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="secondary FavIcon" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="FavIcon">FavIcon</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFaviconDataCallback" title="ja/XPCOM_Interface_Reference/nsIFaviconDataCallback">nsIFaviconDataCallback</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFaviconService" title="ja/XPCOM_Interface_Reference/nsIFaviconService">nsIFaviconService</a></li>
+ </ul>
+ </li>
+ <li class="secondary Frame" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Frame">Frame</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIChromeFrameMessageManager" title="ja/XPCOM_Interface_Reference/nsIChromeFrameMessageManager">nsIChromeFrameMessageManager</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFrameLoader" title="ja/XPCOM_Interface_Reference/nsIFrameLoader">nsIFrameLoader</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFrameLoaderOwner" title="ja/XPCOM_Interface_Reference/nsIFrameLoaderOwner">nsIFrameLoaderOwner</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFrameMessageListener" title="ja/XPCOM_Interface_Reference/nsIFrameMessageListener">nsIFrameMessageListener</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFrameMessageManager" title="ja/XPCOM_Interface_Reference/nsIFrameMessageManager">nsIFrameMessageManager</a></li>
+ </ul>
+ </li>
+ <li class="secondary Interface" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Interface">Interface</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIJSXMLHttpRequest" title="ja/XPCOM_Interface_Reference/nsIJSXMLHttpRequest">nsIJSXMLHttpRequest</a></li>
+ </ul>
+ </li>
+ <li class="secondary Jetpack" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Jetpack">Jetpack</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIJetpack" title="ja/XPCOM_Interface_Reference/nsIJetpack">nsIJetpack</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIJetpackService" title="ja/XPCOM_Interface_Reference/nsIJetpackService">nsIJetpackService</a></li>
+ </ul>
+ </li>
+ <li class="secondary offlineStorage" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="offlineStorage">offlineStorage</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIApplicationCache" title="ja/XPCOM_Interface_Reference/NsIApplicationCache">nsIApplicationCache</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIApplicationCacheChannel" title="ja/XPCOM_Interface_Reference/NsIApplicationCacheChannel">nsIApplicationCacheChannel</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIApplicationCacheContainer" title="ja/XPCOM_Interface_Reference/NsIApplicationCacheContainer">nsIApplicationCacheContainer</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIApplicationCacheNamespace" title="ja/XPCOM_Interface_Reference/NsIApplicationCacheNamespace">nsIApplicationCacheNamespace</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIApplicationCacheService" title="ja/XPCOM_Interface_Reference/NsIApplicationCacheService">nsIApplicationCacheService</a></li>
+ </ul>
+ </li>
+ <li class="secondary Places" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Places">Places</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAnnotationObserver" title="ja/XPCOM_Interface_Reference/nsIAnnotationObserver">nsIAnnotationObserver</a></li>
+ </ul>
+ </li>
+ <li class="secondary RSS Feed" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="RSS_Feed">RSS Feed</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFeed" title="ja/XPCOM_Interface_Reference/nsIFeed">nsIFeed</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedContainer" title="ja/XPCOM_Interface_Reference/nsIFeedContainer">nsIFeedContainer</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedElementBase" title="ja/XPCOM_Interface_Reference/nsIFeedElementBase">nsIFeedElementBase</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedEntry" title="ja/XPCOM_Interface_Reference/nsIFeedEntry">nsIFeedEntry</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedGenerator" title="ja/XPCOM_Interface_Reference/nsIFeedGenerator">nsIFeedGenerator</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedPerson" title="ja/XPCOM_Interface_Reference/nsIFeedPerson">nsIFeedPerson</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedProcessor" title="ja/XPCOM_Interface_Reference/nsIFeedProcessor">nsIFeedProcessor</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedProgressListener" title="ja/XPCOM_Interface_Reference/nsIFeedProgressListener">nsIFeedProgressListener</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedResult" title="ja/XPCOM_Interface_Reference/nsIFeedResult">nsIFeedResult</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedResultListener" title="ja/XPCOM_Interface_Reference/nsIFeedResultListener">nsIFeedResultListener</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFeedTextConstruct" title="ja/XPCOM_Interface_Reference/nsIFeedTextConstruct">nsIFeedTextConstruct</a></li>
+ </ul>
+ </li>
+ <li class="secondary script" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="script">script</h2>
+ <ul>
+ <li><a>mozIJSSubScriptLoader</a></li>
+ </ul>
+ </li>
+ <li class="secondary storage" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="storage">storage</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/mozIStorageVacuumParticipant" title="ja/XPCOM_Interface_Reference/mozIStorageVacuumParticipant">mozIStorageVacuumParticipant</a></li>
+ </ul>
+ </li>
+ <li class="secondary Util" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Util_2">Util</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIEffectiveTLDService" title="ja/XPCOM_Interface_Reference/nsIEffectiveTLDService">nsIEffectiveTLDService</a></li>
+ </ul>
+ </li>
+ <li class="secondary Worker" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Worker">Worker</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIAbstractWorker" title="ja/XPCOM_Interface_Reference/NsIAbstractWorker">nsIAbstractWorker</a></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+ <div class="primary Data" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h1 id="Data">Data</h1>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIArray" title="ja/XPCOM_Interface_Reference/nsIArray">nsIArray</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICategoryManager" title="ja/XPCOM_Interface_Reference/nsICategoryManager">nsICategoryManager</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICollection" title="ja/XPCOM_Interface_Reference/nsICollection">nsICollection</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDictionary" title="ja/XPCOM_Interface_Reference/nsIDictionary">nsIDictionary</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMutableArray" title="ja/XPCOM_Interface_Reference/nsIMutableArray">nsIMutableArray</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISimpleEnumerator" title="ja/XPCOM_Interface_Reference/nsISimpleEnumerator">nsISimpleEnumerator</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsChar" title="ja/XPCOM_Interface_Reference/nsISupportsChar">nsISupportsChar</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsDouble" title="ja/XPCOM_Interface_Reference/nsISupportsDouble">nsISupportsDouble</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsFloat" title="ja/XPCOM_Interface_Reference/nsISupportsFloat">nsISupportsFloat</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsID" title="ja/XPCOM_Interface_Reference/nsISupportsID">nsISupportsID</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsInterfacePointer" title="ja/XPCOM_Interface_Reference/nsISupportsInterfacePointer">nsISupportsInterfacePointer</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRBool" title="ja/XPCOM_Interface_Reference/nsISupportsPRBool">nsISupportsPRBool</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPrimitive" title="ja/XPCOM_Interface_Reference/nsISupportsPrimitive">nsISupportsPrimitive</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRInt16" title="ja/XPCOM_Interface_Reference/nsISupportsPRInt16">nsISupportsPRInt16</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRInt32" title="ja/XPCOM_Interface_Reference/nsISupportsPRInt32">nsISupportsPRInt32</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRInt64" title="ja/XPCOM_Interface_Reference/nsISupportsPRInt64">nsISupportsPRInt64</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPriority" title="ja/XPCOM_Interface_Reference/nsISupportsPriority">nsISupportsPriority</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRTime" title="ja/XPCOM_Interface_Reference/nsISupportsPRTime">nsISupportsPRTime</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRUint16" title="ja/XPCOM_Interface_Reference/nsISupportsPRUint16">nsISupportsPRUint16</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRUint32" title="ja/XPCOM_Interface_Reference/nsISupportsPRUint32">nsISupportsPRUint32</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRUint64" title="ja/XPCOM_Interface_Reference/nsISupportsPRUint64">nsISupportsPRUint64</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsPRUint8" title="ja/XPCOM_Interface_Reference/nsISupportsPRUint8">nsISupportsPRUint8</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsString" title="ja/XPCOM_Interface_Reference/nsISupportsString">nsISupportsString</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsVoid" title="ja/XPCOM_Interface_Reference/nsISupportsVoid">nsISupportsVoid</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupportsWeakReference" title="ja/XPCOM_Interface_Reference/nsISupportsWeakReference">nsISupportsWeakReference</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIVariant" title="ja/XPCOM_Interface_Reference/NsIVariant">nsIVariant</a></li>
+ </ul>
+ </div>
+ <div class="primary ignore" style="background-color: #F6F6F1; color: #DDD; border: 1px solid #DDD;">
+ <h1 id="DO_NOT_USE">DO NOT USE</h1>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIEnumerator" title="ja/XPCOM_Interface_Reference/nsIEnumerator">nsIEnumerator</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIInProcessContentFrameMessageManager" title="ja/XPCOM_Interface_Reference/nsIInProcessContentFrameMessageManager">nsIInProcessContentFrameMessageManager</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIScriptableIO" title="ja/XPCOM_Interface_Reference/nsIScriptableIO">nsIScriptableIO</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIXPCScriptable" title="ja/XPCOM_Interface_Reference/nsIXPCScriptable">nsIXPCScriptable</a></li>
+ </ul>
+ </div>
+ <div class="primary ignore" style="background-color: #F6F6F1; color: #DDD; border: 1px solid #DDD;">
+ <h1 id="Future">Future</h1>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIXMLHttpRequestUpload" title="ja/XPCOM_Interface_Reference/NsIXMLHttpRequestUpload">nsIXMLHttpRequestUpload</a></li>
+ </ul>
+ </div>
+ <div class="primary ignore" style="background-color: #F6F6F1; color: #DDD; border: 1px solid #DDD;">
+ <h1 id="Obsolete">Obsolete</h1>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIXmlRpcClient" title="ja/XPCOM_Interface_Reference/nsIXmlRpcClient">nsIXmlRpcClient</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIXmlRpcFault" title="ja/XPCOM_Interface_Reference/nsIXmlRpcFault">nsIXmlRpcFault</a></li>
+ </ul>
+ </div>
+ <div class="primary Security" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h1 id="Security">Security</h1>
+ <ul>
+ <li class="secondary Auth" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Auth">Auth</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAuthModule" title="ja/XPCOM_Interface_Reference/nsIAuthModule">nsIAuthModule</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAuthPrompt" title="ja/XPCOM_Interface_Reference/nsIAuthPrompt">nsIAuthPrompt</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAuthPromptProvider" title="ja/XPCOM_Interface_Reference/nsIAuthPromptProvider">nsIAuthPromptProvider</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAuthPromptWrapper" title="ja/XPCOM_Interface_Reference/nsIAuthPromptWrapper">nsIAuthPromptWrapper</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAsyncVerifyRedirectCallback" title="ja/XPCOM_Interface_Reference/nsIAsyncVerifyRedirectCallback">nsIAsyncVerifyRedirectCallback</a></li>
+ </ul>
+ </li>
+ <li class="secondary Content" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Content">Content</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIContentPolicy" title="ja/XPCOM_Interface_Reference/nsIContentPolicy">nsIContentPolicy</a></li>
+ </ul>
+ </li>
+ <li class="secondary Credentials" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Credentials">Credentials</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsILoginInfo" title="ja/XPCOM_Interface_Reference/nsILoginInfo">nsILoginInfo</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsILoginManager" title="ja/XPCOM_Interface_Reference/nsILoginManager">nsILoginManager</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsILoginManager/Using_nsILoginManager" title="ja/XPCOM_Interface_Reference/nsILoginManager/Using_nsILoginManager">Using nsILoginManager</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsILoginManagerStorage" title="ja/XPCOM_Interface_Reference/nsILoginManagerStorage">nsILoginManagerStorage</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsILoginMetaInfo" title="ja/XPCOM_Interface_Reference/NsILoginMetaInfo">nsILoginMetaInfo</a></li>
+ </ul>
+ </li>
+ <li class="secondary History" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="History">History</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIGlobalHistory2" title="ja/XPCOM_Interface_Reference/nsIGlobalHistory2">nsIGlobalHistory2</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIGlobalHistory3" title="ja/XPCOM_Interface_Reference/nsIGlobalHistory3">nsIGlobalHistory3</a></li>
+ </ul>
+ </li>
+ <li class="secondary SSL" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="SSL">SSL</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIBadCertListener2" title="ja/XPCOM_Interface_Reference/nsIBadCertListener2">nsIBadCertListener2</a></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+ <div class="primary System" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h1 id="System">System</h1>
+ <ul>
+ <li class="secondary Action" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Action">Action</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICancelable" title="ja/XPCOM_Interface_Reference/nsICancelable">nsICancelable</a></li>
+ </ul>
+ </li>
+ <li class="secondary Application" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Application">Application</h2>
+ <ul>
+ <li class="tercerary Application" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Application_2">Application</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIApplicationUpdateService" title="ja/XPCOM_Interface_Reference/nsIApplicationUpdateService">nsIApplicationUpdateService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAppShell" title="ja/XPCOM_Interface_Reference/nsIAppShell">nsIAppShell</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAppShellService" title="ja/XPCOM_Interface_Reference/nsIAppShellService">nsIAppShellService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAppStartup" title="ja/XPCOM_Interface_Reference/nsIAppStartup">nsIAppStartup</a></li>
+ </ul>
+ </li>
+ <li class="tercerary XUL" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="XUL">XUL</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIXULAppInfo" title="ja/XPCOM_Interface_Reference/nsIXULAppInfo">nsIXULAppInfo</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIXULRuntime" title="ja/XPCOM_Interface_Reference/nsIXULRuntime">nsIXULRuntime</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIXULTemplateBuilder" title="ja/XPCOM_Interface_Reference/nsIXULTemplateBuilder">nsIXULTemplateBuilder</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIXULTemplateQueryProcessor" title="ja/XPCOM_Interface_Reference/nsIXULTemplateQueryProcessor">nsIXULTemplateQueryProcessor</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIXULTemplateResult" title="ja/XPCOM_Interface_Reference/nsIXULTemplateResult">nsIXULTemplateResult</a></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="secondary Bookmark" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Bookmark">Bookmark</h2>
+ <ul>
+ <li class="tercerary LiveMark" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="LiveMark">LiveMark</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsILivemarkService" title="ja/XPCOM_Interface_Reference/nsILivemarkService">nsILivemarkService</a></li>
+ </ul>
+ </li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsINavBookmarkObserver" title="ja/XPCOM_Interface_Reference/nsINavBookmarkObserver">nsINavBookmarkObserver</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsINavBookmarksService" title="ja/XPCOM_Interface_Reference/nsINavBookmarksService">nsINavBookmarksService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsINavHistoryService" title="ja/XPCOM_Interface_Reference/nsINavHistoryService">nsINavHistoryService</a></li>
+ </ul>
+ </li>
+ <li class="secondary Browser" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Browser_2">Browser</h2>
+ <ul>
+ <li class="tercerary DOM" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="DOM_2">DOM</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIWebBrowser" title="ja/XPCOM_Interface_Reference/nsIWebBrowser">nsIWebBrowser</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIWebBrowserPersist" title="ja/XPCOM_Interface_Reference/nsIWebBrowserPersist">nsIWebBrowserPersist</a></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="secondary Cache" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Cache">Cache</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICache" title="ja/XPCOM_Interface_Reference/nsICache">nsICache</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICacheDeviceInfo" title="ja/XPCOM_Interface_Reference/nsICacheDeviceInfo">nsICacheDeviceInfo</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICacheEntryDescriptor" title="ja/XPCOM_Interface_Reference/nsICacheEntryDescriptor">nsICacheEntryDescriptor</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICacheEntryInfo" title="ja/XPCOM_Interface_Reference/nsICacheEntryInfo">nsICacheEntryInfo</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICacheListener" title="ja/XPCOM_Interface_Reference/nsICacheListener">nsICacheListener</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICacheMetaDataVisitor" title="ja/XPCOM_Interface_Reference/nsICacheMetaDataVisitor">nsICacheMetaDataVisitor</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICacheService" title="ja/XPCOM_Interface_Reference/nsICacheService">nsICacheService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICacheSession" title="ja/XPCOM_Interface_Reference/nsICacheSession">nsICacheSession</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICacheVisitor" title="ja/XPCOM_Interface_Reference/nsICacheVisitor">nsICacheVisitor</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICachingChannel" title="ja/XPCOM_Interface_Reference/nsICachingChannel">nsICachingChannel</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISelectionImageService" title="ja/XPCOM_Interface_Reference/nsISelectionImageService">nsISelectionImageService</a></li>
+ </ul>
+ </li>
+ <li class="secondary Chrome" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Chrome">Chrome</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISearchEngine" title="ja/XPCOM_Interface_Reference/nsISearchEngine">nsISearchEngine</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISearchSubmission" title="ja/XPCOM_Interface_Reference/nsISearchSubmission">nsISearchSubmission</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIWebBrowserChrome" title="ja/XPCOM_Interface_Reference/nsIWebBrowserChrome">nsIWebBrowserChrome</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIWindowCreator" title="ja/XPCOM_Interface_Reference/nsIWindowCreator">nsIWindowCreator</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIWindowMediator" title="ja/XPCOM_Interface_Reference/nsIWindowMediator">nsIWindowMediator</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIWindowWatcher" title="ja/XPCOM_Interface_Reference/nsIWindowWatcher">nsIWindowWatcher</a></li>
+ </ul>
+ </li>
+ <li class="secondary Clipboard" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Clipboard">Clipboard</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIClipboard" title="ja/XPCOM_Interface_Reference/nsIClipboard">nsIClipboard</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIClipboardCommands" title="ja/XPCOM_Interface_Reference/nsIClipboardCommands">nsIClipboardCommands</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIClipboardDragDropHookList" title="ja/XPCOM_Interface_Reference/nsIClipboardDragDropHookList">nsIClipboardDragDropHookList</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIClipboardDragDropHooks" title="ja/XPCOM_Interface_Reference/nsIClipboardDragDropHooks">nsIClipboardDragDropHooks</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIClipboardHelper" title="ja/XPCOM_Interface_Reference/nsIClipboardHelper">nsIClipboardHelper</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIClipboardOwner" title="ja/XPCOM_Interface_Reference/nsIClipboardOwner">nsIClipboardOwner</a></li>
+ </ul>
+ </li>
+ <li class="secondary Core" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Core">Core</h2>
+ <ul>
+ <li class="tercerary Action" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Action_2">Action</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsITransactionManager" title="ja/XPCOM_Interface_Reference/nsITransactionManager">nsITransactionManager</a></li>
+ </ul>
+ </li>
+ <li class="tercerary Process" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h2 id="Process">Process</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIProcess" title="ja/XPCOM_Interface_Reference/nsIProcess">nsIProcess</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIProcess2" title="ja/XPCOM_Interface_Reference/NsIProcess2">nsIProcess2</a></li>
+ </ul>
+ </li>
+ <li class="tercerary Thread" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Thread">Thread</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIThread" title="ja/XPCOM_Interface_Reference/nsIThread">nsIThread</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIThreadEventFilter" title="ja/XPCOM_Interface_Reference/nsIThreadEventFilter">nsIThreadEventFilter</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIThreadInternal" title="ja/XPCOM_Interface_Reference/nsIThreadInternal">nsIThreadInternal</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIThreadManager" title="ja/XPCOM_Interface_Reference/nsIThreadManager">nsIThreadManager</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIThreadObserver" title="ja/XPCOM_Interface_Reference/nsIThreadObserver">nsIThreadObserver</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIThreadPool" title="ja/XPCOM_Interface_Reference/nsIThreadPool">nsIThreadPool</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIThreadPoolListener" title="ja/XPCOM_Interface_Reference/NsIThreadPoolListener">nsIThreadPoolListener</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIToolkit" title="ja/XPCOM_Interface_Reference/nsIToolkit">nsIToolkit</a></li>
+ </ul>
+ </li>
+ <li class="tercerary Util" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Util_3">Util</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIVersionComparator" title="ja/XPCOM_Interface_Reference/nsIVersionComparator">nsIVersionComparator</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIWeakReference" title="ja/XPCOM_Interface_Reference/nsIWeakReference">nsIWeakReference</a></li>
+ </ul>
+ </li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFactory" title="ja/XPCOM_Interface_Reference/nsIFactory">nsIFactory</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIInterfaceRequestor" title="ja/XPCOM_Interface_Reference/nsIInterfaceRequestor">nsIInterfaceRequestor</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIJSCID" title="ja/XPCOM_Interface_Reference/nsIJSCID">nsIJSCID</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIJSID" title="ja/XPCOM_Interface_Reference/nsIJSID">nsIJSID</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIJSIID" title="ja/XPCOM_Interface_Reference/nsIJSIID">nsIJSIID</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIModule" title="ja/XPCOM_Interface_Reference/nsIModule">nsIModule</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIObserver" title="ja/XPCOM_Interface_Reference/nsIObserver">nsIObserver</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIObserverService" title="ja/XPCOM_Interface_Reference/nsIObserverService">nsIObserverService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIProperties" title="ja/XPCOM_Interface_Reference/nsIProperties">nsIProperties</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIProperty" title="ja/XPCOM_Interface_Reference/nsIProperty">nsIProperty</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIPropertyBag" title="ja/XPCOM_Interface_Reference/NsIPropertyBag">nsIPropertyBag</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIPropertyBag2" title="ja/XPCOM_Interface_Reference/nsIPropertyBag2">nsIPropertyBag2</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIPropertyElement" title="ja/XPCOM_Interface_Reference/nsIPropertyElement">nsIPropertyElement</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIServerSocket" title="ja/XPCOM_Interface_Reference/nsIServerSocket">nsIServerSocket</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIServerSocketListener" title="ja/XPCOM_Interface_Reference/nsIServerSocketListener">nsIServerSocketListener</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIServiceManager" title="ja/XPCOM_Interface_Reference/nsIServiceManager">nsIServiceManager</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISocketProvider" title="ja/XPCOM_Interface_Reference/nsISocketProvider">nsISocketProvider</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISocketProviderService" title="ja/XPCOM_Interface_Reference/nsISocketProviderService">nsISocketProviderService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISocketTransport" title="ja/XPCOM_Interface_Reference/nsISocketTransport">nsISocketTransport</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISocketTransportService" title="ja/XPCOM_Interface_Reference/nsISocketTransportService">nsISocketTransportService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISupports" title="ja/XPCOM_Interface_Reference/nsISupports">nsISupports</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIUUIDGenerator" title="ja/XPCOM_Interface_Reference/nsIUUIDGenerator">nsIUUIDGenerator</a></li>
+ </ul>
+ </li>
+ <li class="secondary Debug" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Debug">Debug</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIStackFrame" title="ja/XPCOM_Interface_Reference/nsIStackFrame">nsIStackFrame</a></li>
+ </ul>
+ </li>
+ <li class="secondary Device" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Device_2">Device</h2>
+ <ul>
+ <li class="tercerary Display" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Display">Display</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIScreen" title="ja/XPCOM_Interface_Reference/nsIScreen">nsIScreen</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIScreenManager" title="ja/XPCOM_Interface_Reference/nsIScreenManager">nsIScreenManager</a></li>
+ </ul>
+ </li>
+ <li class="tercerary Geolocation" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Geolocation">Geolocation</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIGeolocationProvider" title="ja/XPCOM_Interface_Reference/NsIGeolocationProvider">nsIGeolocationProvider</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIGeolocationUpdate" title="ja/XPCOM_Interface_Reference/NsIGeolocationUpdate">nsIGeolocationUpdate</a></li>
+ </ul>
+ </li>
+ <li class="tercerary orientation" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="orientation">orientation</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDeviceMotionData" title="ja/XPCOM_Interface_Reference/nsIAcceleration">nsIAcceleration</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDeviceMotionListener" title="ja/XPCOM_Interface_Reference/nsIAccelerationListener">nsIAccelerationListener</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDeviceMotion" title="ja/XPCOM_Interface_Reference/nsIAccelerometer">nsIAccelerometer</a></li>
+ </ul>
+ </li>
+ <li class="tercerary Misc" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h2 id="Misc">Misc</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISound" title="ja/XPCOM_Interface_Reference/nsISound">nsISound</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIWifiMonitor" title="ja/XPCOM_Interface_Reference/nsIWifiMonitor">nsIWifiMonitor</a></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="secondary Document" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Document_2">Document</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIWebNavigation" title="ja/XPCOM_Interface_Reference/nsIWebNavigation">nsIWebNavigation</a></li>
+ </ul>
+ </li>
+ <li class="secondary Environment" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Environment">Environment</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIEnvironment" title="ja/XPCOM_Interface_Reference/nsIEnvironment">nsIEnvironment</a></li>
+ </ul>
+ </li>
+ <li class="secondary Event" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Event_2">Event</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIEventListenerInfo" title="ja/XPCOM_Interface_Reference/nsIEventListenerInfo">nsIEventListenerInfo</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIEventListenerService" title="ja/XPCOM_Interface_Reference/nsIEventListenerService">nsIEventListenerService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIEventTarget" title="ja/XPCOM_Interface_Reference/nsIEventTarget">nsIEventTarget</a></li>
+ </ul>
+ </li>
+ <li class="secondary Exception" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Exception">Exception</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIException" title="ja/XPCOM_Interface_Reference/nsIException">nsIException</a></li>
+ </ul>
+ </li>
+ <li class="secondary Extention" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Extention">Extention</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIExtensionManager" title="ja/XPCOM_Interface_Reference/nsIExtensionManager">nsIExtensionManager</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIInstallLocation" title="ja/XPCOM_Interface_Reference/nsIInstallLocation">nsIInstallLocation</a></li>
+ </ul>
+ </li>
+ <li class="secondary External" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="External">External</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIExternalProtocolService" title="ja/XPCOM_Interface_Reference/nsIExternalProtocolService">nsIExternalProtocolService</a></li>
+ </ul>
+ </li>
+ <li class="secondary Frame" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Frame_2">Frame</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIContentFrameMessageManager" title="ja/XPCOM_Interface_Reference/nsIContentFrameMessageManager">nsIContentFrameMessageManager</a></li>
+ </ul>
+ </li>
+ <li class="secondary History" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="History_2">History</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISHEntry" title="ja/XPCOM_Interface_Reference/nsISHEntry">nsISHEntry</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISHistory" title="ja/XPCOM_Interface_Reference/nsISHistory">nsISHistory</a></li>
+ </ul>
+ </li>
+ <li class="secondary Idle" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Idle">Idle</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIIdleService" title="ja/XPCOM_Interface_Reference/nsIIdleService">nsIIdleService</a></li>
+ </ul>
+ </li>
+ <li class="secondary Internal" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Internal_2">Internal</h2>
+ <ul>
+ <li class="tercerary Command" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Command">Command</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICommandLine" title="ja/XPCOM_Interface_Reference/nsICommandLine">nsICommandLine</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICommandLineHandler" title="ja/XPCOM_Interface_Reference/nsICommandLineHandler">nsICommandLineHandler</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICommandLineRunner" title="ja/XPCOM_Interface_Reference/nsICommandLineRunner">nsICommandLineRunner</a></li>
+ </ul>
+ </li>
+ <li class="tercerary Component" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Component">Component</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIComponentManager" title="ja/XPCOM_Interface_Reference/nsIComponentManager">nsIComponentManager</a></li>
+ </ul>
+ </li>
+ <li class="tercerary Preferences" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Preferences">Preferences</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIContentPrefObserver" title="ja/XPCOM_Interface_Reference/nsIContentPrefObserver">nsIContentPrefObserver</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIContentPrefService" title="ja/XPCOM_Interface_Reference/nsIContentPrefService">nsIContentPrefService</a></li>
+ </ul>
+ </li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIComponentRegistrar" title="ja/XPCOM_Interface_Reference/nsIComponentRegistrar">nsIComponentRegistrar</a></li>
+ </ul>
+ </li>
+ <li class="secondary Internationalization" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Internationalization">Internationalization</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIBidiKeyboard" title="ja/XPCOM_Interface_Reference/nsIBidiKeyboard">nsIBidiKeyboard</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsILocale" title="ja/XPCOM_Interface_Reference/nsILocale">nsILocale</a></li>
+ </ul>
+ </li>
+ <li class="secondary IO" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="IO">IO</h2>
+ <ul>
+ <li class="tercerary FileSystem" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="FileSystem">FileSystem</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDirectoryEnumerator" title="ja/XPCOM_Interface_Reference/nsIDirectoryEnumerator">nsIDirectoryEnumerator</a>li&gt;</li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDirectoryIterator" title="ja/XPCOM_Interface_Reference/nsIDirectoryIterator">nsIDirectoryIterator</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDirectoryService" title="ja/XPCOM_Interface_Reference/nsIDirectoryService">nsIDirectoryService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDirectoryServiceProvider" title="ja/XPCOM_Interface_Reference/nsIDirectoryServiceProvider">nsIDirectoryServiceProvider</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDirectoryServiceProvider2" title="ja/XPCOM_Interface_Reference/nsIDirectoryServiceProvider2">nsIDirectoryServiceProvider2</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDirIndex" title="ja/XPCOM_Interface_Reference/nsIDirIndex">nsIDirIndex</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDirIndexListener" title="ja/XPCOM_Interface_Reference/nsIDirIndexListener">nsIDirIndexListener</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDirIndexParser" title="ja/XPCOM_Interface_Reference/nsIDirIndexParser">nsIDirIndexParser</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFile" title="ja/XPCOM_Interface_Reference/nsIFile">nsIFile</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsILocalFile" title="ja/XPCOM_Interface_Reference/nsILocalFile">nsILocalFile</a></li>
+ </ul>
+ </li>
+ <li class="tercerary Stream" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Stream">Stream</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAsyncInputStream" title="ja/XPCOM_Interface_Reference/nsIAsyncInputStream">nsIAsyncInputStream</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAsyncOutputStream" title="ja/XPCOM_Interface_Reference/nsIAsyncOutputStream">nsIAsyncOutputStream</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAsyncStreamCopier" title="ja/XPCOM_Interface_Reference/nsIAsyncStreamCopier">nsIAsyncStreamCopier</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIBinaryInputStream" title="ja/XPCOM_Interface_Reference/nsIBinaryInputStream">nsIBinaryInputStream</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIBinaryOutputStream" title="ja/XPCOM_Interface_Reference/nsIBinaryOutputStream">nsIBinaryOutputStream</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIContentSniffer" title="ja/XPCOM_Interface_Reference/nsIContentSniffer">nsIContentSniffer</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIConverterInputStream" title="ja/XPCOM_Interface_Reference/nsIConverterInputStream">nsIConverterInputStream</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFileInputStream" title="ja/XPCOM_Interface_Reference/nsIFileInputStream">nsIFileInputStream</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFileOutputStream" title="ja/XPCOM_Interface_Reference/nsIFileOutputStream">nsIFileOutputStream</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIInputStream" title="ja/XPCOM_Interface_Reference/nsIInputStream">nsIInputStream</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIInputStreamCallback" title="ja/XPCOM_Interface_Reference/nsIInputStreamCallback">nsIInputStreamCallback</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIOutputStream" title="ja/XPCOM_Interface_Reference/nsIOutputStream">nsIOutputStream</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIOutputStreamCallback" title="ja/XPCOM_Interface_Reference/nsIOutputStreamCallback">nsIOutputStreamCallback</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIScriptableInputStream" title="ja/XPCOM_Interface_Reference/nsIScriptableInputStream">nsIScriptableInputStream</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIStreamListener" title="ja/XPCOM_Interface_Reference/NsIStreamListener">nsIStreamListener</a></li>
+ </ul>
+ </li>
+ <li class="tercerary URL" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="URL_2">URL</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIIOService" title="ja/XPCOM_Interface_Reference/nsIIOService">nsIIOService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIStandardURL" title="ja/XPCOM_Interface_Reference/nsIStandardURL">nsIStandardURL</a></li>
+ </ul>
+ </li>
+ <li class="tercerary User" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="User">User</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIPrompt" title="ja/XPCOM_Interface_Reference/nsIPrompt">nsIPrompt</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIPromptService" title="ja/XPCOM_Interface_Reference/nsIPromptService">nsIPromptService</a></li>
+ </ul>
+ </li>
+ <li class="tercerary Zipfile" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Zipfile">Zipfile</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIZipEntry" title="ja/XPCOM_Interface_Reference/nsIZipEntry">nsIZipEntry</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIZipReader" title="ja/XPCOM_Interface_Reference/nsIZipReader">nsIZipReader</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIZipReaderCache" title="ja/XPCOM_Interface_Reference/nsIZipReaderCache">nsIZipReaderCache</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIZipWriter" title="ja/XPCOM_Interface_Reference/nsIZipWriter">nsIZipWriter</a></li>
+ </ul>
+ </li>
+ <li class="tercerary File" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="File">File</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFilePicker" title="ja/XPCOM_Interface_Reference/nsIFilePicker">nsIFilePicker</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFileProtocolHandler" title="ja/XPCOM_Interface_Reference/nsIFileProtocolHandler">nsIFileProtocolHandler</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFileSpec" title="ja/XPCOM_Interface_Reference/nsIFileSpec">nsIFileSpec</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFileStreams" title="ja/XPCOM_Interface_Reference/nsIFileStreams">nsIFileStreams</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFileUtilities" title="ja/XPCOM_Interface_Reference/nsIFileUtilities">nsIFileUtilities</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFileView" title="ja/XPCOM_Interface_Reference/nsIFileView">nsIFileView</a></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="secondary Memory" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Memory">Memory</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMemory" title="ja/XPCOM_Interface_Reference/nsIMemory">nsIMemory</a></li>
+ </ul>
+ </li>
+ <li class="secondary Network" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Network">Network</h2>
+ <ul>
+ <li class="tercerary Channel" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Channel">Channel</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIChannel" title="ja/XPCOM_Interface_Reference/nsIChannel">nsIChannel</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIChannelEventSink" title="ja/XPCOM_Interface_Reference/nsIChannelEventSink">nsIChannelEventSink</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIRequest" title="ja/XPCOM_Interface_Reference/NsIRequest">nsIRequest</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIRequestObserver" title="ja/XPCOM_Interface_Reference/NsIRequestObserver">nsIRequestObserver</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIResumableChannel" title="ja/XPCOM_Interface_Reference/nsIResumableChannel">nsIResumableChannel</a></li>
+ </ul>
+ </li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDNSService" title="ja/XPCOM_Interface_Reference/nsIDNSService">nsIDNSService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFTPChannel" title="ja/XPCOM_Interface_Reference/nsIFTPChannel">nsIFTPChannel</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIFTPEventSink" title="ja/XPCOM_Interface_Reference/nsIFTPEventSink">nsIFTPEventSink</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIHttpChannel" title="ja/XPCOM_Interface_Reference/nsIHttpChannel">nsIHttpChannel</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIHttpChannelInternal" title="ja/XPCOM_Interface_Reference/nsIHttpChannelInternal">nsIHttpChannelInternal</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIHttpHeaderVisitor" title="ja/XPCOM_Interface_Reference/nsIHttpHeaderVisitor">nsIHttpHeaderVisitor</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIIDNService" title="ja/XPCOM_Interface_Reference/nsIIDNService">nsIIDNService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIProtocolHandler" title="ja/XPCOM_Interface_Reference/nsIProtocolHandler">nsIProtocolHandler</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIProtocolProxyCallback" title="ja/XPCOM_Interface_Reference/nsIProtocolProxyCallback">nsIProtocolProxyCallback</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIProtocolProxyFilter" title="ja/XPCOM_Interface_Reference/nsIProtocolProxyFilter">nsIProtocolProxyFilter</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIProtocolProxyService" title="ja/XPCOM_Interface_Reference/nsIProtocolProxyService">nsIProtocolProxyService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIProxyInfo" title="ja/XPCOM_Interface_Reference/nsIProxyInfo">nsIProxyInfo</a></li>
+ </ul>
+ </li>
+ <li class="secondary Preferences" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Preferences_2">Preferences</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIINIParser" title="ja/XPCOM_Interface_Reference/nsIINIParser">nsIINIParser</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIINIParserFactory" title="ja/XPCOM_Interface_Reference/nsIINIParserFactory">nsIINIParserFactory</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIPrefBranch" title="ja/XPCOM_Interface_Reference/nsIPrefBranch">nsIPrefBranch</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIPrefBranch2" title="ja/XPCOM_Interface_Reference/nsIPrefBranch2">nsIPrefBranch2</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIPrefLocalizedString" title="ja/XPCOM_Interface_Reference/nsIPrefLocalizedString">nsIPrefLocalizedString</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIPrefService" title="ja/XPCOM_Interface_Reference/nsIPrefService">nsIPrefService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIStringBundle" title="ja/XPCOM_Interface_Reference/nsIStringBundle">nsIStringBundle</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIStringBundleService" title="ja/XPCOM_Interface_Reference/nsIStringBundleService">nsIStringBundleService</a></li>
+ </ul>
+ </li>
+ <li class="secondary Security" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Security_2">Security</h2>
+ <ul>
+ <li class="tercerary Cookies" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Cookies">Cookies</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICookie" title="ja/XPCOM_Interface_Reference/nsICookie">nsICookie</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICookie2" title="ja/XPCOM_Interface_Reference/nsICookie2">nsICookie2</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICookieAcceptDialog" title="ja/XPCOM_Interface_Reference/nsICookieAcceptDialog">nsICookieAcceptDialog</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICookieConsent" title="ja/XPCOM_Interface_Reference/nsICookieConsent">nsICookieConsent</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICookieManager" title="ja/XPCOM_Interface_Reference/nsICookieManager">nsICookieManager</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICookieManager2" title="ja/XPCOM_Interface_Reference/nsICookieManager2">nsICookieManager2</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICookiePermission" title="ja/XPCOM_Interface_Reference/nsICookiePermission">nsICookiePermission</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICookiePromptService" title="ja/XPCOM_Interface_Reference/nsICookiePromptService">nsICookiePromptService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICookieService" title="ja/XPCOM_Interface_Reference/nsICookieService">nsICookieService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICookieStorage" title="ja/XPCOM_Interface_Reference/nsICookieStorage">nsICookieStorage</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISessionStore" title="ja/XPCOM_Interface_Reference/nsISessionStore">nsISessionStore</a></li>
+ </ul>
+ </li>
+ <li class="tercerary Crypto" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Crypto">Crypto</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsICryptoHash" title="ja/XPCOM_Interface_Reference/nsICryptoHash">nsICryptoHash</a></li>
+ </ul>
+ </li>
+ <li class="tercerary Filter" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Filter">Filter</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIParentalControlsService" title="ja/XPCOM_Interface_Reference/nsIParentalControlsService">nsIParentalControlsService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIPermission" title="ja/XPCOM_Interface_Reference/nsIPermission">nsIPermission</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIPermissionManager" title="ja/XPCOM_Interface_Reference/nsIPermissionManager">nsIPermissionManager</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISecurityCheckedComponent" title="ja/XPCOM_Interface_Reference/nsISecurityCheckedComponent">nsISecurityCheckedComponent</a></li>
+ </ul>
+ </li>
+ <li class="tercerary SSL" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="SSL_2">SSL</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsISSLErrorListener" title="ja/XPCOM_Interface_Reference/nsISSLErrorListener">nsISSLErrorListener</a></li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li class="secondary Stream" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Stream_2">Stream</h2>
+ <ul>
+ <li class="tercerary Stream" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Stream_3">Stream</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIPipe" title="ja/XPCOM_Interface_Reference/nsIPipe">nsIPipe</a></li>
+ </ul>
+ </li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsITraceableChannel" title="ja/XPCOM_Interface_Reference/NsITraceableChannel">nsITraceableChannel</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsITransport" title="ja/XPCOM_Interface_Reference/nsITransport">nsITransport</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsITransportEventSink" title="ja/XPCOM_Interface_Reference/nsITransportEventSink">nsITransportEventSink</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsITransportSecurityInfo" title="ja/XPCOM_Interface_Reference/NsITransportSecurityInfo">nsITransportSecurityInfo</a></li>
+ </ul>
+ </li>
+ <li class="secondary Timer" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Timer">Timer</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsITimer" title="ja/XPCOM_Interface_Reference/nsITimer">nsITimer</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsITimerCallback" title="ja/XPCOM_Interface_Reference/nsITimerCallback">nsITimerCallback</a></li>
+ </ul>
+ </li>
+ <li class="secondary UI" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="UI">UI</h2>
+ <ul>
+ <li class="tercerary Windows" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h3 id="Windows">Windows</h3>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsITaskbarPreview" title="ja/XPCOM_Interface_Reference/nsITaskbarPreview">nsITaskbarPreview</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsITaskbarPreviewButton" title="ja/XPCOM_Interface_Reference/nsITaskbarPreviewButton">nsITaskbarPreviewButton</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsITaskbarPreviewController" title="ja/XPCOM_Interface_Reference/nsITaskbarPreviewController">nsITaskbarPreviewController</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsITaskbarProgress" title="ja/XPCOM_Interface_Reference/nsITaskbarProgress">nsITaskbarProgress</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsITaskbarTabPreview" title="ja/XPCOM_Interface_Reference/nsITaskbarTabPreview">nsITaskbarTabPreview</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsITaskbarWindowPreview" title="ja/XPCOM_Interface_Reference/nsITaskbarWindowPreview">nsITaskbarWindowPreview</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIWinTaskbar" title="ja/XPCOM_Interface_Reference/nsIWinTaskbar">nsIWinTaskbar</a></li>
+ </ul>
+ </li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIAlertsService" title="ja/XPCOM_Interface_Reference/nsIAlertsService">nsIAlertsService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIWebProgress" title="ja/XPCOM_Interface_Reference/nsIWebProgress">nsIWebProgress</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIWebProgressListener" title="ja/XPCOM_Interface_Reference/nsIWebProgressListener">nsIWebProgressListener</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIWebProgressListener2" title="ja/XPCOM_Interface_Reference/NsIWebProgressListener2">nsIWebProgressListener2</a></li>
+ </ul>
+ </li>
+ <li class="secondary Update" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Update">Update</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIUpdate" title="ja/XPCOM_Interface_Reference/nsIUpdate">nsIUpdate</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIUpdateChecker" title="ja/XPCOM_Interface_Reference/nsIUpdateChecker">nsIUpdateChecker</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIUpdateCheckListener" title="ja/XPCOM_Interface_Reference/nsIUpdateCheckListener">nsIUpdateCheckListener</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIUpdateItem" title="ja/XPCOM_Interface_Reference/nsIUpdateItem">nsIUpdateItem</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIUpdateManager" title="ja/XPCOM_Interface_Reference/nsIUpdateManager">nsIUpdateManager</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIUpdatePatch" title="ja/XPCOM_Interface_Reference/nsIUpdatePatch">nsIUpdatePatch</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIUpdatePrompt" title="ja/XPCOM_Interface_Reference/nsIUpdatePrompt">nsIUpdatePrompt</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIUpdateTimerManager" title="ja/XPCOM_Interface_Reference/nsIUpdateTimerManager">nsIUpdateTimerManager</a></li>
+ </ul>
+ </li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIProgrammingLanguage" title="ja/XPCOM_Interface_Reference/nsIProgrammingLanguage">nsIProgrammingLanguage</a></li>
+ </ul>
+ </div>
+ <div class="primary Thunderbird" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h1 id="Thunderbird">Thunderbird</h1>
+ <ul>
+ <li class="secondary Credentials" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Credentials_2">Credentials</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIMsgAccountManagerExtension" title="ja/XPCOM_Interface_Reference/NsIMsgAccountManagerExtension">nsIMsgAccountManagerExtension</a></li>
+ </ul>
+ </li>
+ <li class="secondary Element" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Element_3">Element</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIEditorMailSupport" title="ja/XPCOM_Interface_Reference/nsIEditorMailSupport">nsIEditorMailSupport</a></li>
+ </ul>
+ </li>
+ <li class="secondary Message" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #F6F6F1;">
+ <h2 id="Message">Message</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIDBChangeAnnouncer" title="ja/XPCOM_Interface_Reference/NsIDBChangeAnnouncer">nsIDBChangeAnnouncer</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIDBChangeListener" title="ja/XPCOM_Interface_Reference/nsIDBChangeListener">nsIDBChangeListener</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMessenger" title="ja/XPCOM_Interface_Reference/nsIMessenger">nsIMessenger</a></li>
+ </ul>
+ </li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIMsgCompFields" title="ja/XPCOM_Interface_Reference/NsIMsgCompFields">nsIMsgCompFields</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgCustomColumnHandler" title="ja/XPCOM_Interface_Reference/nsIMsgCustomColumnHandler">nsIMsgCustomColumnHandler</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgDatabase" title="ja/XPCOM_Interface_Reference/nsIMsgDatabase">nsIMsgDatabase</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgDBHdr" title="ja/XPCOM_Interface_Reference/nsIMsgDBHdr">nsIMsgDBHdr</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgDBView" title="ja/XPCOM_Interface_Reference/nsIMsgDBView">nsIMsgDBView</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgDBViewCommandUpdater" title="ja/XPCOM_Interface_Reference/nsIMsgDBViewCommandUpdater">nsIMsgDBViewCommandUpdater</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgFolder" title="ja/XPCOM_Interface_Reference/nsIMsgFolder">nsIMsgFolder</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgIdentity" title="ja/XPCOM_Interface_Reference/nsIMsgIdentity">nsIMsgIdentity</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgMessageService" title="ja/XPCOM_Interface_Reference/nsIMsgMessageService">nsIMsgMessageService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/NsIMsgSendLater" title="ja/XPCOM_Interface_Reference/NsIMsgSendLater">nsIMsgSendLater</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgThread" title="ja/XPCOM_Interface_Reference/nsIMsgThread">nsIMsgThread</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgWindow" title="ja/XPCOM_Interface_Reference/nsIMsgWindow">nsIMsgWindow</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMsgWindowCommands" title="ja/XPCOM_Interface_Reference/nsIMsgWindowCommands">nsIMsgWindowCommands</a></li>
+ </ul>
+ </div>
+ <div class="primary User" style="margin: 5px; padding: 0 5px; border: 1px solid black; border-radius: 10px; background-color: #E0E0DC;">
+ <h1 id="User_2">User</h1>
+ <ul>
+ <li class="secondary History" style="background-color: #F6F6F1;">
+ <h2 id="History_3">History</h2>
+ <ul>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIBrowserHistory" title="ja/XPCOM_Interface_Reference/nsIBrowserHistory">nsIBrowserHistory</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIBrowserSearchService" title="ja/XPCOM_Interface_Reference/nsIBrowserSearchService">nsIBrowserSearchService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMicrosummary" title="ja/XPCOM_Interface_Reference/nsIMicrosummary">nsIMicrosummary</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMicrosummaryGenerator" title="ja/XPCOM_Interface_Reference/nsIMicrosummaryGenerator">nsIMicrosummaryGenerator</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMicrosummaryObserver" title="ja/XPCOM_Interface_Reference/nsIMicrosummaryObserver">nsIMicrosummaryObserver</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMicrosummaryService" title="ja/XPCOM_Interface_Reference/nsIMicrosummaryService">nsIMicrosummaryService</a></li>
+ <li><a href="/ja/XPCOM_Interface_Reference/nsIMicrosummarySet" title="ja/XPCOM_Interface_Reference/nsIMicrosummarySet">nsIMicrosummarySet</a></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+</div>
+<p>XPC</p>
diff --git a/files/ja/mozilla/tech/xpcom/setting_http_request_headers/index.html b/files/ja/mozilla/tech/xpcom/setting_http_request_headers/index.html
new file mode 100644
index 0000000000..394e0fc521
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/setting_http_request_headers/index.html
@@ -0,0 +1,273 @@
+---
+title: Setting HTTP request headers
+slug: Mozilla/Tech/XPCOM/Setting_HTTP_request_headers
+tags:
+ - Add-ons
+ - Extensions
+ - HTTP
+ - XUL
+ - XULRunner
+ - 要更新
+translation_of: Mozilla/Tech/XPCOM/Setting_HTTP_request_headers
+---
+<p>HTTP は Web の中核を成す技術の一つです。実際のコンテンツに加え、HTTP ヘッダによって<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html">いくつかの重要な情報</a>が HTTP リクエストとレスポンスの両方で渡されます。</p>
+
+<p>アプリケーションが作成するどんなリクエストに対しても、独自の HTTP ヘッダを加える事ができます。そのリクエストがあなたのコードで明示的に HTTP チャンネルを開くことによって開始されたリクエストであっても、また <a href="/ja/docs/XMLHttpRequest">XMLHttpRequest</a> の活動や、コンテンツ内の <a href="/ja/docs/Web/HTML/Element/img" title="HTML の &lt;img> 要素は、文書に画像を埋め込みます。これは置換要素です。"><code>&lt;img&gt;</code></a> タグ、さらに例え <a href="/ja/docs/Web/CSS">CSS</a> からのものであったとしても、それは可能です。</p>
+
+
+
+
+
+
+
+
+
+
+
+<h3 id="HTTP_Channels" name="HTTP_Channels">HTTP チャンネル</h3>
+<p>HTTP リクエストとレスポンスを扱う時には、大抵は <code><a href="/ja/docs/NsIHttpChannel">nsIHttpChannel</a></code> を扱います。<code>nsIHttpChannel</code> インタフェースにはたくさんのプロパティやメソッドがありますが、ここで重要なメソッドは <code>setRequestHeader</code> です。このメソッドを使って <em>HTTP リクエストヘッダを設定</em>する事ができます。</p>
+<p>下は HTTP ヘッダを設定するコードの例です。</p>
+<pre class="brush:js">// リクエストに "X-Hello: World" ヘッダを加える
+httpChannel.setRequestHeader("X-Hello", "World", false);
+</pre>
+
+
+<p>このコードの <code>httpChannel</code> という変数は、<code>nsIHttpChannel</code> を実装したオブジェクトを示しています。(変数名はどんなものでも結構です。)</p>
+<p><code>setRequestHeader</code> メソッドは 3 つのパラメータを取ります。1 つめは HTTP リクエストヘッダの<em>名前</em>で、2 つめは HTTP リクエストヘッダの<em>値</em>です。3 つめのパラメータに関しては今のところ無視して、常に <code>false</code> にしておきます。</p>
+<p>このサンプルコードでは <code>X-Hello</code> という<em>名前</em>の HTTP リクエストヘッダが追加され、この HTTP リクエストヘッダの<em>値</em>は <code>World</code> となっています。</p>
+<div class="note">
+ <p><strong>注</strong>: 独自の HTTP ヘッダを作成する場合には、名前の前に<code> X-</code> を付けなければなりません。(上のサンプルコードでもちゃんと名前の前に <code>X-</code> を追加しているため、作成した HTTP ヘッダは <code>Hello</code> ではなく <code>X-Hello</code> となっています。)</p>
+</div>
+
+
+
+
+
+
+<h3 id="Notifications" name="Notifications">通知</h3>
+<p>ここでおそらく、HTTP リクエストが開始された時にどうやって <code>nsIHttpChannel</code> を取得するのかという疑問が出てくるでしょう。</p>
+<p>あなたのコードによってリクエストが開始された場合には、おそらく既に取得できているでしょう。その他のリクエストを捕捉するには、<span style="border-bottom: 1px dashed green;" title="notifications">通知</span> を使います。これは他の言語やフレームワークでは<em><span style="border-bottom: 1px dashed green;" title="events">イベント</span></em> や<em><span style="border-bottom: 1px dashed green;" title="signals">シグナル</span></em> と呼ばれるものと同じようなものです。</p>
+<p>具体的に言えば、HTTP リクエストが作られる直前に <code>nsIHttpChannel</code> を取得するには <code>"http-on-modify-request"</code> トピックを<em>監視 (<span style="color: green;">observe</span>)</em> する必要があります。(<code>"http-on-modify-request"</code> は文字列です。)</p>
+<div class="note">
+ <p><strong>注</strong>: 通知を受けられるトピックは <code>"http-on-modify-request"</code> の他にもたくさんあります。例えば <code>"http-on-examine-response"</code> や <code>"xpcom-shutdown"</code> などです。また、独自のトピックを作り出したり、自分で通知を送る事も可能です。</p>
+ <p>通知のフレームワークや一般的な通知トピックのリストについてのより詳しい情報を得るには <a href="/ja/docs/Observer_Notifications">Observer Notifications</a> を参照して下さい。</p>
+</div>
+
+
+
+
+
+
+<h3 id="Observers" name="Observers">オブザーバ</h3>
+<p>あるトピック (<code>"http-on-modify-request"</code> など) についての通知を得るには、<strong>オブザーバ (<span style="color: green;">observer</span>)</strong> を作成しなければなりません。オブザーバは <a href="/ja/docs/nsIObserver">nsIObserver</a> インタフェースを実装したコンポーネントです。あるトピックに対してオブザーバが<em>登録</em>されると、オブザーバは <code>observe</code> メソッドが呼ばれる事によってそのトピックについての通知を受けます。</p>
+<p>下のコードは http-on-modify-request の通知によって渡されたチャンネルに "X-Hello" という独自のヘッダを追加するオブザーバの例です。</p>
+<pre class="brush:js">var httpRequestObserver =
+{
+ observe: function(subject, topic, data)
+ {
+ if (topic == "http-on-modify-request") {
+ var httpChannel = subject.QueryInterface(Components.interfaces.nsIHttpChannel);
+ httpChannel.setRequestHeader("X-Hello", "World", false);
+ }
+ }
+};
+</pre>
+<p><span class="comment">div class="note"&gt; Doesn't seem very suitable for this article; readers should are typically assumed to be familiar with JS. Nickolay '''NOTE''': Often people expect <a href="/ja/docs/JavaScript">JavaScript</a> to be just like <a href="/ja/docs/Java">Java</a>. And while superficially, they look very similar, there are some important differences between the two. For example, while Java is an &lt;em&gt;object-oriented programming language&lt;/em&gt;, JavaScript is not. JavaScript is &lt;em&gt;prototype-based programming language&lt;/em&gt; and as such while it has &lt;em&gt;objects&lt;/em&gt; it does not have &lt;em&gt;classes&lt;/em&gt;. (Which is why, if you are not well versed with JavaScript, the object creation in the sample code above may look strange.) &lt;/div</span></p>
+<p><code>observe</code> メソッドが取るパラメータの数が重要です。このメソッドは (上のサンプルコードにあるように) 3 つのパラメータを取ります。<code>"http-on-modify-request"</code> トピックに対しては、1 つめのパラメータ (上のコードでは <code>subject</code>) は <code>nsIHttpChannel</code> になります。ただしこれは <code><a href="/ja/docs/NsISupports">nsISupports</a></code> として渡されます。なので <code>nsISupports</code> から <code>nsIHttpChannel</code> に<em>変換</em>しなければならず、<code>QueryInterface</code> を呼び出すことによってこれを行っています。</p>
+<p><code>if</code> ブロックの 2 行目のコードは既にご存知でしょう。この記事の最初の方で HTTP リクエストヘッダを追加するのに使ったコードと同じものです。</p>
+<p>このオブジェクトの名前 (<code>httpRequestObserver</code>) は重要ではありません。好きな名前を付けて結構です。</p>
+
+
+
+
+
+<h3 id="Registering" name="Registering">登録する</h3>
+<p>オブザーバを作成したら、それを登録する必要があります。今回の場合は、オブザーバを <code>"http-on-modify-request"</code> トピックに対して登録しようとしています。これは以下のコードによって可能です。</p>
+<pre class="brush:js">var observerService = Components.classes["@mozilla.org/observer-service;1"]
+ .getService(Components.interfaces.<a href="/ja/docs/nsIObserverService">nsIObserverService</a>);
+observerService.addObserver(httpRequestObserver, "http-on-modify-request", false);
+</pre>
+<p>1 つめの文で、通知を受けたいトピックにオブザーバを登録するためのオブジェクトを取得しています。</p>
+<p>2 つめの文では実際に登録を行っています。 <code>"http-on-modify-request"</code> トピック (それぞれの HTTP リクエストの直前に起こる) が発生したときに、<code>httpRequestObserver</code> が (<code>observe</code> メソッドが呼び出されることによって) 通知を受けられるようにしています。</p>
+
+
+
+
+
+
+<h3 id="Unregistering" name="Unregistering">登録を解除する</h3>
+<p>アプリケーションの終了時にはオブザーバの登録を解除するべきです。これを怠るとメモリリークが引き起こされる可能性があります。オブザーバの登録を解除するには、次のように <code>nsIObserverService.removeObserver</code> を使ってください。</p>
+
+<pre class="brush:js">observerService.removeObserver(httpRequestObserver, "http-on-modify-request");
+</pre>
+
+
+
+
+
+
+<h3 id="XPCOM_components" name="XPCOM_components">XPCOM コンポーネント</h3>
+<p><code>http-on-modify-request</code> オブザーバは、アプリケーションごとに 1 つしか登録する必要はありません (ウィンドウごとに 1 つではありません)。つまり、オブザーバの実装は<a href="/ja/docs/XUL_Overlays">オーバーレイ</a>ではなく <a href="/ja/docs/How_to_Build_an_XPCOM_Component_in_Javascript">XPCOM コンポーネント</a>に置くべきです。</p>
+
+
+
+
+
+<h3 id=".E3.81.BE.E3.81.A8.E3.82.81" name=".E3.81.BE.E3.81.A8.E3.82.81">まとめ</h3>
+
+<p>基本的には大体こんな感じです。しかし、あなたに役立つように、<code>httpRequestObserver</code> オブジェクトの少し違ったバージョンも示しておきます。</p>
+
+<p>前に示したバージョンは学習のためには有効ですが、実際のアプリケーションでは次のようなコードにしたほうがいいでしょう。</p>
+
+
+<pre class="brush:js">var httpRequestObserver =
+{
+ observe: function(subject, topic, data)
+ {
+ if (topic == "http-on-modify-request") {
+ var httpChannel = subject.QueryInterface(Components.interfaces.nsIHttpChannel);
+ httpChannel.setRequestHeader("X-Hello", "World", false);
+ }
+ },
+
+ get observerService() {
+ return Components.classes["@mozilla.org/observer-service;1"]
+ .getService(Components.interfaces.nsIObserverService);
+ },
+
+ register: function()
+ {
+ this.observerService.addObserver(this, "http-on-modify-request", false);
+ },
+
+ unregister: function()
+ {
+ this.observerService.removeObserver(this, "http-on-modify-request");
+ }
+};
+</pre>
+
+<p>このオブジェクトには <code>register()</code> と <code>unregister()</code> という便利なメソッドがあり、下のように呼び出すだけでオブザーバを有効にする事が出来ます。</p>
+
+<pre class="brush:js">httpRequestObserver.register();
+</pre>
+
+<p>また、終了時にはオブザーバの登録を解除するのも忘れないでください。</p>
+
+<pre class="brush:js">httpRequestObserver.unregister();
+</pre>
+
+<p>以上です。</p>
+
+<p><span class="comment">We need downloadable XPCOM component for this</span></p>
+
+
+
+
+
+
+<h3 id="Example_Code" name="Example_Code">サンプルコード</h3>
+<pre class="brush:js">var headerName = "X-hello";
+var headerValue = "world";
+
+function LOG(text)
+{
+ // var consoleService = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
+ // consoleService.logStringMessage(text);
+}
+
+function myHTTPListener() { }
+
+myHTTPListener.prototype = {
+
+ observe: function(subject, topic, data)
+ {
+ if (topic == "http-on-modify-request") {
+
+ LOG("----------------------------&gt; (" + subject + ") mod request");
+
+ var httpChannel = subject.QueryInterface(Components.interfaces.nsIHttpChannel);
+ httpChannel.setRequestHeader(headerName, headerValue, false);
+ return;
+ }
+
+
+ if (topic == "app-startup") {
+
+ LOG("----------------------------&gt; app-startup");
+
+ var os = Components.classes["@mozilla.org/observer-service;1"]
+ .getService(Components.interfaces.nsIObserverService);
+
+ os.addObserver(this, "http-on-modify-request", false);
+ return;
+ }
+ },
+
+ QueryInterface: function (iid) {
+ if (iid.equals(Components.interfaces.nsIObserver) ||
+ iid.equals(Components.interfaces.nsISupports))
+ return this;
+
+ Components.returnCode = Components.results.NS_ERROR_NO_INTERFACE;
+ return null;
+ },
+};
+
+var myModule = {
+ registerSelf: function (compMgr, fileSpec, location, type) {
+
+ var compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
+ compMgr.registerFactoryLocation(this.myCID,
+ this.myName,
+ this.myProgID,
+ fileSpec,
+ location,
+ type);
+
+
+ LOG("----------------------------&gt; registerSelf");
+
+ var catMgr = Components.classes["@mozilla.org/categorymanager;1"].getService(Components.interfaces.nsICategoryManager);
+ catMgr.addCategoryEntry("app-startup", this.myName, this.myProgID, true, true);
+ },
+
+
+ getClassObject: function (compMgr, cid, iid) {
+
+ LOG("----------------------------&gt; getClassObject");
+
+ return this.myFactory;
+ },
+
+ myCID: Components.ID("{9cf5f3df-2505-42dd-9094-c1631bd1be1c}"),
+
+ myProgID: "@dougt/myHTTPListener;1",
+
+ myName: "Simple HTTP Listener",
+
+ myFactory: {
+ QueryInterface: function (aIID) {
+ if (!aIID.equals(Components.interfaces.nsISupports) &amp;&amp;
+  !aIID.equals(Components.interfaces.nsIFactory))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ },
+
+ createInstance: function (outer, iid) {
+
+ LOG("----------------------------&gt; createInstance");
+
+ return new myHTTPListener();
+ }
+ },
+
+ canUnload: function(compMgr) {
+ return true;
+ }
+};
+
+function NSGetModule(compMgr, fileSpec) {
+ return myModule;
+}
+</pre>
diff --git a/files/ja/mozilla/tech/xpcom/storage/index.html b/files/ja/mozilla/tech/xpcom/storage/index.html
new file mode 100644
index 0000000000..7abeb7a36e
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/storage/index.html
@@ -0,0 +1,378 @@
+---
+title: Storage
+slug: Mozilla/Tech/XPCOM/Storage
+tags:
+ - Interfaces
+ - Storage
+ - Toolkit API
+ - 要更新
+translation_of: Mozilla/Tech/XPCOM/Storage
+---
+<p><strong>Storage</strong> is a <a href="http://www.sqlite.org/">SQLite</a> database API. It is available to trusted callers, meaning extensions and Firefox components only.</p>
+
+<p>The API is currently "unfrozen", which means it is subject to change at any time; in fact, it has changed somewhat with each release of Firefox since it was introduced, and will likely continue to do so for a while.</p>
+
+<div class="note"><strong>注記:</strong> Storage is not the same as the <a href="/ja/docs/DOM/Storage" title="DOM/Storage">DOM:Storage</a> feature which can be used by web pages to store persistent data or the <a href="/ja/docs/Session_store_API" title="Session_store_API">Session store API</a> (an <a href="/ja/docs/XPCOM" title="XPCOM">XPCOM</a> storage utility for use by extensions).</div>
+
+<h2 id="Getting_started" name="Getting_started">Getting started</h2>
+
+<p>This document covers the Storage API and some peculiarities of SQLite. It does <em>not</em> cover SQL or "regular" SQLite. You can find some very useful links in the <a href="#See_also">See also section</a> however. For Storage API help, you can post to mozilla.dev.apps.platform on the news server news.mozilla.org. To report bugs, use <a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Toolkit&amp;component=Storage">Bugzilla</a>.</p>
+
+<p>The overall procedure for use is:</p>
+
+<ol>
+ <li>Get the Storage service - <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageService" title="">mozIStorageService</a></code>.</li>
+ <li>Open a connection to the database of your choice - <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageConnection" title="">mozIStorageConnection</a></code>.</li>
+ <li>Create statements to execute on the connection - <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatement" title="">mozIStorageStatement</a></code>.</li>
+ <li>Bind parameters to a statement as necessary.</li>
+ <li>Execute the statement.</li>
+ <li>Check for errors.</li>
+ <li>Reset the statement.</li>
+</ol>
+
+<h2 id="Opening_a_connection" name="Opening_a_connection">Opening a connection</h2>
+
+<p>JavaScript example of opening <code>my_db_file_name.sqlite</code> in the profile directory:</p>
+
+<pre class="brush: js">Components.utils.import("resource://gre/modules/Services.jsm");
+Components.utils.import("resource://gre/modules/FileUtils.jsm");
+
+let file = FileUtils.getFile("ProfD", ["my_db_file_name.sqlite"]);
+let mDBConn = Services.storage.openDatabase(file); // Will also create the file if it does not exist
+</pre>
+
+<p>Likewise, the C++ would look like this:</p>
+
+<pre class="brush: cpp">nsCOMPtr&lt;nsIFile&gt; dbFile;
+rv = NS_GetSpecialDirectory(NS_APP_USER_PROFILE_50_DIR,
+ getter_AddRefs(dbFile));
+NS_ENSURE_SUCCESS(rv, rv);
+rv = dbFile-&gt;Append(NS_LITERAL_STRING("my_db_file_name.sqlite"));
+NS_ENSURE_SUCCESS(rv, rv);
+nsCOMPtr&lt;mozIStorageService&gt; dbService =
+ do_GetService(MOZ_STORAGE_SERVICE_CONTRACTID, &amp;rv);
+NS_ENSURE_SUCCESS(rv, rv);
+
+nsCOMPtr&lt;mozIStorageConnection&gt; dbConn;
+rv = dbService-&gt;OpenDatabase(dbFile, getter_AddRefs(dbConn));
+NS_ENSURE_SUCCESS(rv, rv);
+</pre>
+
+<div class="note">Note: <code>MOZ_STORAGE_SERVICE_CONTRACTID</code> is defined in <code><a href="https://dxr.mozilla.org/mozilla-central/source/storage/build/mozStorageCID.h" rel="custom">storage/build/mozStorageCID.h</a></code>.</div>
+
+<div class="blockIndicator warning">
+ <p><strong>警告:</strong> It may be tempting to give your database a name ending in '.sdb' for <strong>s</strong>qlite <strong>d</strong>ata<strong>b</strong>ase, but this is <em>not recommended.</em> This extension is treated specially by Windows as a known extension for an 'Application Compatibility Database' and changes are backed up by the system automatically as part of system restore functionality. This can result in significantly higher overhead file operation.</p>
+</div>
+
+<h2 id="Statements" name="Statements">Closing a connection</h2>
+
+<p>To close a connection on which only synchronous transactions were performed, use the <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#close()">mozIStorageConnection.close()</a></code> method. If you performed any asynchronous transactions, you should instead use the <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#asyncClose()">mozIStorageConnection.asyncClose()</a></code> method. The latter will allow all ongoing transactions to complete before closing the connection, and will optionally notify you via callback when the connection is closed.</p>
+
+<h2 id="Statements" name="Statements">Statements</h2>
+
+<p>This section demonstrates how you can execute SQL statements on your database. For a complete reference see <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatement" title="">mozIStorageStatement</a></code>.</p>
+
+<h3 id="Creating_a_statement" name="Creating_a_statement">Creating a Statement</h3>
+
+<p>There are actually two ways to execute a statement. You should choose the right one based on your needs.</p>
+
+<h4 id="No_Results_to_be_Returned" name="No_Results_to_be_Returned">No Results to be Returned</h4>
+
+<p> </p>
+
+<p>If you do not need to get any results back, you can use <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#executeSimpleSQL()">mozIStorageConnection.executeSimpleSQL()</a></code> API like this in JavaScript:</p>
+
+<pre class="brush: js">dbConn.executeSimpleSQL("CREATE TEMP TABLE table_name (column_name INTEGER)");
+</pre>
+
+<p>Similarly, the C++ looks like this:</p>
+
+<pre class="brush: cpp">rv = mDBConn-&gt;ExecuteSimpleSQL(NS_LITERAL_CSTRING("CREATE TEMP TABLE table_name (column_name INTEGER)"));
+NS_ENSURE_SUCCESS(rv, rv);</pre>
+
+<h4 id="Results_to_be_Returned" name="Results_to_be_Returned">Results to be Returned</h4>
+
+<p>However, if you need to get results back, you should create the statement with the <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#createStatement()">mozIStorageConnection.createStatement()</a></code> API like this in JavaScript:</p>
+
+<pre class="brush: js">var statement = dbConn.createStatement("SELECT * FROM table_name WHERE column_name = :parameter");
+</pre>
+
+<p>This example uses a named placeholder called "parameter" to be bound later (described in <a href="#Binding_Parameters">Binding Parameters</a>). Similarly, the C++ looks like this:</p>
+
+<pre class="brush: cpp">nsCOMPtr&lt;mozIStorageStatement&gt; statement;
+rv = dbConn-&gt;CreateStatement(NS_LITERAL_CSTRING("SELECT * FROM table_name WHERE column_name = ?1"),
+ getter_AddRefs(statement));
+NS_ENSURE_SUCCESS(rv, rv);
+</pre>
+
+<p>This example uses the numbered placeholder indexed by zero for a parameter to be bound later (described in <a href="#Binding_Parameters">Binding Parameters</a>).</p>
+
+<div class="blockIndicator note"><strong>註:</strong> Numerical indexes for parameters are always one less than the number you write in the SQL. The use of numerical indexes for parameters is strongly discouraged in JavaScript where named parameters are much easier to use.</div>
+
+<div class="blockIndicator note"><strong>註:</strong> If you need to execute a statement multiple times, caching the result of createStatement will give you a noticeable performance improvement because the SQL query does not need to be parsed each time.</div>
+
+<h3 id="Binding_parameters" name="Binding_parameters">Binding Parameters</h3>
+
+<p>In order to effectively use the statements that you create, you have to bind values to the parameters you placed in the statement. A given placeholder can appear multiple times in the same statement, and all instances of it will be replaced with the bound value. If you neglect to bind a value to a parameter, it will be interpreted as <code>NULL</code>.</p>
+
+<div class="warning">You should never try to construct SQL statements on the fly with values inserted in them. By binding the parameters, you prevent possible SQL injection attacks since a bound parameter can never be executed as SQL.</div>
+
+<h4 id="Binding_One_Set_of_Parameters" name="Binding_One_Set_of_Parameters">Binding One Set of Parameters</h4>
+
+<p>If you only have one row to insert, or are using the synchronous API you'll need to use this method. In JavaScript, there is a useful helper object (<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatementParams" title="">mozIStorageStatementParams</a></code>) available () that makes binding parameters much easier:</p>
+
+<pre class="brush: js">var statement = dbConn.createStatement("SELECT * FROM table_name WHERE id = :row_id");
+statement.params.row_id = 1234;
+</pre>
+
+<p>You can still use this helper object by manually creating the statement wrapper, <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatementWrapper" title="">mozIStorageStatementWrapper</a></code>, which is provided in Gecko 1.9.1 and later.</p>
+
+<p>Using named parameters in C++ is a lot more difficult, so it's generally accepted to use numerical placeholders instead. The example below uses <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#bindInt32Parameter()">mozIStorageStatement.bindInt32Parameter()</a></code>.<code><span style="font-family: Verdana,Tahoma,sans-serif;"> The full list of </span></code>binding functions can be found with the <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatement" title="">mozIStorageStatement</a></code> documentation.</p>
+
+<p>C++ example:</p>
+
+<pre class="brush: cpp">nsCOMPtr&lt;mozIStorageStatement&gt; statement;
+rv = mDBConn-&gt;CreateStatement(NS_LITERAL_CSTRING("SELECT * FROM table_name WHERE id = ?1"),
+ getter_AddRefs(statement));
+NS_ENSURE_SUCCESS(rv, rv);
+
+rv = statement-&gt;BindInt32Parameter(0, 1234);
+NS_ENSURE_SUCCESS(rv, rv);
+</pre>
+
+<div class="blockIndicator note"><strong>註:</strong> Numerical indexes for parameters are always one less than the number you write in the SQL. The use of numerical indexes for parameters is strongly discouraged in JavaScript where named parameters are much easier to use.</div>
+
+<h4 id="Binding_Multiple_Sets_of_Parameters" name="Binding_Multiple_Sets_of_Parameters">Binding Multiple Sets of Parameters</h4>
+
+<div></div>
+
+<p>Starting in Gecko 1.9.2 (Firefox 3.6), there's a new, more convenient way to bind multiple sets of parameters at once prior to executing your statement asynchronously. This API is only available for asynchronous execution.</p>
+
+<pre class="brush: js">let stmt = dbConn.createStatement("INSERT INTO table_name (value) VALUES(:value)");
+let params = stmt.newBindingParamsArray();
+for (let i = 0; i &lt; 10; i++) {
+ let bp = params.newBindingParams();
+ bp.bindByName("value", i);
+ params.addParams(bp);
+}
+stmt.bindParameters(params);
+</pre>
+
+<p>You can attach multiple sets of bindings to a statement by adding multiple <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageBindingParams" title="">mozIStorageBindingParams</a></code> objects to the array of parameter lists, adding each one through calls to the <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageBindingParamsArray#addParams()">mozIStorageBindingParamsArray.addParams()</a></code>. Once all the parameters are set up, a single call to <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#bindParameters()">mozIStorageStatement.bindParameters()</a></code> will ensure that the parameters are bound before execution. You can then <a href="/ja/docs/Storage#Asynchronously" title="Storage#Asynchronously">execute the statement asynchronously</a>, and the statement will get each set of bindings bound to it before execution asynchronously.</p>
+
+<h3 id="Executing_a_statement" name="Executing_a_statement">Executing a Statement</h3>
+
+<p>You may execute statements either synchronously (which is supported in Firefox Gecko 1.8 and 1.9) or asynchronously (starting in Gecko 1.9.1). If your code needs to work with applications based on Gecko 1.8 or 1.9, you should the technique covered in the section <a href="#Synchronously">Synchronously</a> below. Otherwise, it's strongly recommended that you use asynchronous execution, for performance reasons.</p>
+
+<h4 id="Asynchronously" name="Asynchronously">Asynchronously</h4>
+
+<div></div>
+
+<p>Gecko 1.9.1 introduced support for asynchronous execution of a statement by calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#executeAsync()">mozIStorageStatement.executeAsync()</a></code> on the statement. Multiple statements can be executed in a transaction by calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#executeAsync()">mozIStorageConnection.executeAsync()</a></code> on the connection and passing in an array of statements. Both of these methods have similar signatures that accept an object as input that receives notifications the execution of the statement(s). A C++ example is omitted here because it would be verbose, but real-world code can be found in the Mozilla source tree (<a href="http://mxr.mozilla.org/mozilla-central/ident?i=mozIStorageStatementCallback">MXR ID で <code>mozIStorageStatementCallback</code> を</a>).</p>
+
+<p>After you create and bind a statement, your JavaScript should look something like this to execute a statement asynchronously:</p>
+
+<pre class="brush: js">statement.executeAsync({
+ handleResult: function(aResultSet) {
+ for (let row = aResultSet.getNextRow();
+ row;
+ row = aResultSet.getNextRow()) {
+
+ let value = row.getResultByName("column_name");
+ }
+ },
+
+ handleError: function(aError) {
+ print("Error: " + aError.message);
+ },
+
+ handleCompletion: function(aReason) {
+ if (aReason != Components.interfaces.mozIStorageStatementCallback.REASON_FINISHED)
+ print("Query canceled or aborted!");
+ }
+});
+</pre>
+
+<p>The call to <code>executeAsync</code> takes an object that implements <a href="/ja/docs/MozIStorageStatementCallback" title="MozIStorageStatementCallback">mozIStorageStatementCallback</a>. See its documentation for more details on each method. The callback is optional, however, so if you do not want to receive feedback, you can pass nothing.</p>
+
+<h4 id="Synchronously" name="Synchronously">Synchronously</h4>
+
+<p>If you are OK with the possibility of locking up your user interface, or if you are running on a background thread, you can use <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#executeStep()">mozIStorageStatement.executeStep()</a></code>. This function allows you to enumerate all the results produced by the statement.</p>
+
+<p>As you step through each row, you can obtain each parameter by name through a helper object (<code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatementRow" title="">mozIStorageStatementRow</a></code>) in JavaScript ( ) like so:</p>
+
+<pre class="brush: js">while (statement.executeStep()) {
+ let value = statement.row.column_name;
+}
+</pre>
+
+<p>You can create this helper object yourself if it's not available in your version of Gecko. See <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatementWrapper" title="">mozIStorageStatementWrapper</a></code> for details.</p>
+
+<p>In C++, the code would look something like this:</p>
+
+<pre class="brush: cpp">bool hasMoreData;
+while (NS_SUCCEEDED(statement-&gt;ExecuteStep(&amp;hasMoreData)) &amp;&amp; hasMoreData) {
+ PRInt32 value;
+ rv = statement-&gt;GetInt32(0, &amp;value);
+ NS_ENSURE_SUCCESS(rv, rv);
+}
+</pre>
+
+<p>You can obtain other types of data by using the various methods available on <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageValueArray" title="">mozIStorageValueArray</a></code>.</p>
+
+<p>Alternatively, if you do not expect any results but still need to execute a bound statement, you can simply call <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#execute()">mozIStorageStatement.execute()</a></code>. This is equivalent to calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#executeStep()">mozIStorageStatement.executeStep()</a></code> and then <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#reset()">mozIStorageStatement.reset()</a></code>.</p>
+
+<h3 id="Resetting_a_Statement" name="Resetting_a_Statement">Resetting a Statement</h3>
+
+<p>When you execute a statement synchronously, it is important to make sure you reset your statement. You can accomplish this by calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#reset()">mozIStorageStatement.reset()</a></code> on the statement. If you end up finalizing the statement (see <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#finalize()">mozIStorageStatement.finalize()</a></code>) you do not need to worry about calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageStatement#reset()">mozIStorageStatement.reset()</a></code>. You should do this before you reuse the statement.</p>
+
+<div class="blockIndicator warning">
+ <p><strong>警告:</strong> If you fail to reset a write statement, it will continue to hold a lock on the database preventing future writes or reads. Additionally, if you fail to reset a read statement, it will prevent any future writes to the database.</p>
+</div>
+
+<p>In JavaScript, the language makes it pretty easy to ensure that you always reset a statement. Be aware that you should always reset even if an exception is thrown, so your code should look something like this:</p>
+
+<pre class="brush: js">var statement = dbConn.createStatement("SELECT * FROM table_name");
+try {
+ while (statement.step()) {
+ // Use the results...
+ }
+}
+finally {
+ statement.reset();
+}
+</pre>
+
+<p>In C++, Storage provides a helper object in <code><a href="https://dxr.mozilla.org/mozilla-central/source/storage/public/mozStorageHelper.h" rel="custom">storage/public/mozStorageHelper.h</a></code>, <code>mozStorageStatementScoper</code>, which ensures that the statement object is reset when the object falls out of scope. Of course, if your statement is local only to the function, you do not have to worry about calling reset since the object will be destroyed.</p>
+
+<pre class="brush: cpp">nsresult
+myClass::myFunction()
+{
+ // mSpecialStatement is a member variable of the class that contains a statement.
+ mozStorageStatementScoper scoper(mSpecialStatement);
+ // You can use mSpecialStatement without concern now.
+
+ nsCOMPtr&lt;mozIStorageStatement&gt; statement;
+ // mDBConn is a database connection that is stored a member variable of the class.
+ nsresult rv = mDBConn-&gt;CreateStatement(NS_LITERAL_CSTRING("DELETE FROM table_name"),
+ getter_AddRefs(statement));
+ NS_ENSURE_SUCCESS(rv, rv);
+ return statement-&gt;Execute();
+ // Once this function returns, mSpecialStatement will be reset, and statement will
+ // be destroyed.
+}
+</pre>
+
+<div class="blockIndicator note"><strong>註:</strong> Calling reset is not an expensive operation, and nothing bad happens if you call reset more than once.</div>
+
+<h2 id="Transactions" name="Transactions">Transactions</h2>
+
+<p>Transactions can be used to either improve performance, or group statements together as an atomic operation. In both cases, you execute more than one statement inside of a transaction.</p>
+
+<p>In JavaScript, managing transactions can be difficult when you are using the same connection on different threads, or are using a combination of asynchronous and synchronous statement execution. The best way to deal with this is to only execute your statements asynchronously using <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#executeAsync()">mozIStorageConnection.executeAsync()</a></code>. This method will manage the transactions for you, so you don't have to worry about them.</p>
+
+<div class="blockIndicator note"><strong>註:</strong> The database engine does not support nested transactions, so attempting to start a transaction when one is already active will throw an exception.</div>
+
+<p>Transactions can be started with <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#beginTransaction()">mozIStorageConnection.beginTransaction()</a></code> or <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#beginTransactionAs()">mozIStorageConnection.beginTransactionAs()</a></code>. The latter takes one of three constants to describe the type of transaction:</p>
+
+<ul>
+ <li><code><a href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/mozIStorageConnection#TRANSACTION_DEFERRED">mozIStorageConnection.TRANSACTION_DEFERRED</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/mozIStorageConnection#TRANSACTION_IMMEDIATE">mozIStorageConnection.TRANSACTION_IMMEDIATE</a></code></li>
+ <li><code><a href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/mozIStorageConnection#TRANSACTION_EXCLUSIVE">mozIStorageConnection.TRANSACTION_EXCLUSIVE</a></code></li>
+</ul>
+
+<p><code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#beginTransaction()">mozIStorageConnection.beginTransaction()</a></code> is equivalent to calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#beginTransactionAs()">mozIStorageConnection.beginTransactionAs()</a></code> and passing <code><a href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/mozIStorageConnection#TRANSACTION_DEFERRED">mozIStorageConnection.TRANSACTION_DEFERRED</a></code>. In general, this is the method you want to use.</p>
+
+<p>Once you start a transaction, you can either commit the changes by calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#commitTransaction()">mozIStorageConnection.commitTransaction()</a></code>, or rollback the changes by calling <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageConnection#rollbackTransaction()">mozIStorageConnection.rollbackTransaction()</a></code>.</p>
+
+<p>In C++ code, there is a helper class defined in <code><a href="https://dxr.mozilla.org/mozilla-central/source/storage/public/mozStorageHelper.h" rel="custom">storage/public/mozStorageHelper.h</a></code>, <code>mozStorageTransaction</code>, that will attempt to get a transaction for you, and handle it appropriately when it falls out of scope. If a transaction is already in progress, no transaction is obtained. If your function returns without calling <code>Commit</code> on the helper object, the transaction will be rolled back.</p>
+
+<pre class="brush: cpp">nsresult
+myClass::myFunction()
+{
+ // mDBConn is a member variable of our mozIStorageConnection.
+ mozStorageTransaction transaction(mDBConn);
+
+ // Execute some statements. If we encounter an error, the transaction will
+ // be rolled back.
+
+ return transaction.Commit();
+}
+</pre>
+
+<h2 id="Collation_sorting" name="Collation_(sorting)">Collation (sorting)</h2>
+
+<p>SQLite provides several collation methods (<code>BINARY</code>, <code>NOCASE</code>, and <code>RTRIM</code>), but these are all very simple and have no support for various text encodings or the user's locale.</p>
+
+<div></div>
+
+<p><span title="(Firefox 3.6 / Thunderbird 3.1 / Fennec 1.0)">Gecko 1.9.2</span> added support for several new collation methods:</p>
+
+<dl>
+ <dt><code>locale</code></dt>
+ <dd>Case- and accent-insensitive collation.</dd>
+ <dt><code>locale_case_sensitive</code></dt>
+ <dd>Case-sensitive, accent-insensitive collation.</dd>
+ <dt><code>locale_accent_sensitive</code></dt>
+ <dd>Case-insensitive, accent-sensitive collation.</dd>
+ <dt><code>locale_case_accent_sensitive</code></dt>
+ <dd>Case- and accent-sensitive collation.</dd>
+</dl>
+
+<p>You can use them quite simply in your <code>SELECT</code> queries, like this:</p>
+
+<pre>var stmt = aConn.createStatement("SELECT * FROM foo ORDER BY name COLLATE locale ASC");
+var results = [];
+
+while (stmt.executeStep()) {
+ results.push(stmt.row.t);
+}
+stmt.finalize();
+</pre>
+
+<h2 id="How_to_corrupt_your_database" name="How_to_corrupt_your_database">How to Corrupt a Database</h2>
+
+<p>SQLite is very good about maintaining database integrity, but there are a few things you can do that can lead to database corruption. You can find out more by reading <a href="http://www.sqlite.org/lockingv3.html" title="http://www.sqlite.org/lockingv3.html">SQLite's documentation on this</a>. There are a few simple things you can do to help make sure this doesn't happen:</p>
+
+<ul>
+ <li>Open more than one connection to the same file with names that aren't exactly the same as determined by <code>strcmp</code>. This includes "my.db" and "../dir/my.db" or, on Windows (case-insensitive) "my.db" and "My.db". Sqlite tries to handle many of these cases, but you shouldn't count on it.</li>
+</ul>
+
+<ul>
+ <li>Access a database from a symbolic or hard link.</li>
+</ul>
+
+<ul>
+ <li>Access a statement from more than one thread (discussed in <a href="#Thread_safety">Thread safety</a>).</li>
+</ul>
+
+<ul>
+ <li>Call <code><a href="https://developer.mozilla.org/ja/docs/XPCOM_Interface_Reference/mozIStorageService#backupDatabaseFile()">mozIStorageService.backupDatabaseFile()</a></code> on a locked database, assuming this will leave your database locked. Due to <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=626193" title="mozIStorageService.backupDatabaseFile() releases database locks">バグ 626193</a>, locked databases get unlocked when you call this.</li>
+</ul>
+
+<h2 id="Thread_safety" name="Thread_safety">Thread Safety</h2>
+
+<p><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageService" title="">mozIStorageService</a></code> and <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageConnection" title="">mozIStorageConnection</a></code> are thread safe. However, no other interface or method is, so do not use them on different threads at the same time!</p>
+
+<p>If you want to use concurrency to work on your database, you should use the asynchronous APIs provided by Storage.</p>
+
+<h2 id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageConnection" title="">mozIStorageConnection</a></code> Database connection to a specific file or in-memory data storage</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatement" title="">mozIStorageStatement</a></code> Create and execute SQL statements on a SQLite database.</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageValueArray" title="">mozIStorageValueArray</a></code> Wraps an array of SQL values, such as a result row.</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageFunction" title="">mozIStorageFunction</a></code> Create a new SQLite function.</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageAggregateFunction" title="">mozIStorageAggregateFunction</a></code> Create a new SQLite aggregate function.</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageProgressHandler" title="">mozIStorageProgressHandler</a></code> Monitor progress during the execution of a statement.</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageStatementWrapper" title="">mozIStorageStatementWrapper</a></code> Storage statement wrapper</li>
+ <li><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIStorageService" title="">mozIStorageService</a></code> Storage Service</li>
+</ul>
+
+<ul>
+ <li><a href="/ja/docs/Storage/Performance" title="Storage/Performance">Storage:Performance</a> How to get your database connection performing well.</li>
+ <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/3072">Storage Inspector Extension</a> Makes it easy to view any sqlite database files in the current profile.</li>
+ <li><a href="http://www.sqlite.org/lang.html">SQLite Syntax</a> Query language understood by SQLite</li>
+ <li><a href="http://sqlitebrowser.sourceforge.net/">SQLite Database Browser</a> is a capable free tool available for many platforms. It can be handy for examining existing databases and testing SQL statements.</li>
+ <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/5817">SQLite Manager Extension</a> helps manage sqlite database files on your computer.</li>
+</ul>
diff --git a/files/ja/mozilla/tech/xpcom/the_thread_manager/index.html b/files/ja/mozilla/tech/xpcom/the_thread_manager/index.html
new file mode 100644
index 0000000000..76856f2327
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/the_thread_manager/index.html
@@ -0,0 +1,130 @@
+---
+title: The Thread Manager
+slug: Mozilla/Tech/XPCOM/The_Thread_Manager
+tags:
+ - Firefox 3
+ - Threads
+translation_of: Mozilla/Tech/XPCOM/The_Thread_Manager
+---
+<p>
+</p><p>Firefox 3 で導入されたスレッドマネージャは、スレッドを作成して、処理を行うイベントをそのスレッドに割り当てる便利な方法を提供します。
+</p><p><span id="Interfaces"></span>
+</p>
+<h3 id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9" name=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9">インタフェース</h3>
+<p>スレッドのサポートを提供するインタフェースは、以下のようにいくつか存在します。
+</p>
+<dl><dt><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadManager" title="">nsIThreadManager</a></code>
+</dt><dd>スレッドを作成できるようにするスレッドマネージャそのもの。
+</dd><dt><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code>
+</dt><dd>この <code>nsIThread</code> インタフェースは、オペレーティングシステムのスレッドをカプセル化したもので、コードからマルチスレッドに対する簡易なクロスプラットフォームアクセスを提供します。
+</dd><dt><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadPool" title="">nsIThreadPool</a></code>
+</dt><dd>スレッドプールは、限られた一連のワーカースレッドを提供します。イベントをプールに割り当てる際、プールは、そのイベントを処理するために利用可能なワーカースレッドを選択する役割を果たします。
+</dd><dt><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal" title="">nsIThreadInternal</a></code>
+</dt><dd><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code> のサブクラスで、XPCOM のスレッドオブジェクトによって実装されており、スレッドへのアクティビティ割り当て監視サポートを提供します。
+</dd><dt><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadObserver" title="">nsIThreadObserver</a></code>
+</dt><dd>スレッドを監視する機能を提供します。スレッドにイベントが割り当てられた際や、それらのイベントの処理が完了した際に、通知を受け取ることができます。
+</dd><dt><code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadEventFilter" title="">nsIThreadEventFilter</a></code>
+</dt><dd>このインタフェースは <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThreadInternal" title="">nsIThreadInternal</a></code> 内の <code><a href="ja/NsIThreadInternal#pushEventQueue.28.29">pushEventQueue()</a></code> メソッドで使われており、イベントのフィルタリングを可能にします。
+</dd></dl>
+<p><span id="Using_the_Thread_Manager"></span>
+</p>
+<h3 id=".E3.82.B9.E3.83.AC.E3.83.83.E3.83.89.E3.83.9E.E3.83.8D.E3.83.BC.E3.82.B8.E3.83.A3.E3.81.AE.E4.BD.BF.E3.81.84.E6.96.B9" name=".E3.82.B9.E3.83.AC.E3.83.83.E3.83.89.E3.83.9E.E3.83.8D.E3.83.BC.E3.82.B8.E3.83.A3.E3.81.AE.E4.BD.BF.E3.81.84.E6.96.B9">スレッドマネージャの使い方</h3>
+<p>スレッドマネージャを使用するには、各スレッドのワーキングコードを <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRunnable" title="">nsIRunnable</a></code> XPCOM オブジェクトにカプセル化しなければなりません。このオブジェクトは全体を JavaScript で書くことができ、それほど難しくありません。
+</p><div class="blockIndicator note"><strong>註:</strong> DOM はスレッドセーフではないので、バックグラウンドスレッドから DOM や ユーザーインタフェースにアクセスしてはいけません。クラッシュの原因となります。</div>
+<p>このセクションでは簡単な例を見ていきます。
+</p><p><span id="The_background_thread"></span>
+</p>
+<h4 id=".E3.83.90.E3.83.83.E3.82.AF.E3.82.B0.E3.83.A9.E3.82.A6.E3.83.B3.E3.83.89.E3.82.B9.E3.83.AC.E3.83.83.E3.83.89" name=".E3.83.90.E3.83.83.E3.82.AF.E3.82.B0.E3.83.A9.E3.82.A6.E3.83.B3.E3.83.89.E3.82.B9.E3.83.AC.E3.83.83.E3.83.89">バックグラウンドスレッド</h4>
+<p>まず、バックグラウンドスレッドで行われる処理を扱う XPCOM オブジェクトが必要になります。
+</p>
+<pre>var workingThread = function(threadID, number) {
+ this.threadID = threadID;
+ this.number = number;
+ this.result = 0;
+};
+
+workingThread.prototype = {
+ run: function() {
+ try {
+ // ここでワーキングスレッドが処理を行う
+
+ for (var i = 0; i&lt;= this.number; i++) {
+ this.result += i;
+ }
+
+ // 処理が終了したら、終了を知らせるためにメインスレッドにコールバックする
+
+ main.dispatch(new mainThread(this.threadID, this.result),
+ background.DISPATCH_NORMAL);
+ } catch(err) {
+ Components.utils.reportError(err);
+ }
+ },
+
+ QueryInterface: function(iid) {
+ if (iid.equals(Components.interfaces.nsIRunnable) ||
+ iid.equals(Components.interfaces.nsISupports)) {
+ return this;
+ }
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ }
+};
+</pre>
+<p>このスレッドのコンストラクタでは、スレッドの ID と 数値をローカル変数に保存し、result 変数を 0 に設定しています。 これらの変数はスレッドの実行時に使用されます。
+</p><p>このオブジェクトにはコンストラクタのほかに 2 つのメソッドがあります:
+</p>
+<dl><dt><code>run()</code>
+</dt><dd><code>run()</code> メソッドは <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code> インタフェースの <code>dispatch()</code> メソッドが呼び出されたときに呼び出されます。これはバックグラウンドスレッドで実際の作業を行うルーチンです。 この例では、0 から &lt;tt&gt;this.number&lt;/tt&gt; までのすべての数の合計を計算しています。 計算が終了すると、 <code>mainThread</code> オブジェクトを使ってメインスレッドにアクセスし、計算結果を共有するためにコールバックをメインスレッドにディスパッチします。
+</dd><dt><code>QueryInterface()</code>
+</dt><dd>スレッドの XPCOM オブジェクトは <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRunnable" title="">nsIRunnable</a></code> インタフェースを扱う必要があるため、オブジェクトが <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIRunnable" title="">nsIRunnable</a></code> インタフェースを扱っているかを尋ねるためにこのメソッドが呼び出されたときに、正しい反応を返さなければなりません。
+</dd></dl>
+<p><span id="The_main_thread"></span>
+</p>
+<h4 id=".E3.83.A1.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.AC.E3.83.83.E3.83.89" name=".E3.83.A1.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.AC.E3.83.83.E3.83.89">メインスレッド</h4>
+<p>メインスレッドを扱う XPCOM オブジェクトはバックグラウンドタスクからのコールバックとして使用されます。このオブジェクトの <code>run()</code> メソッドは、バックグラウンドスレッドが計算結果をユーザーに知らせようとしたときに呼び出されます。バックグラウンドスレッドはユーザーインタフェースに触れることができず、メインスレッドに依頼しなければならないため、このオブジェクトが必要になります。
+</p>
+<pre>var mainThread = function(threadID, result) {
+ this.threadID = threadID;
+ this.result = result;
+};
+
+mainThread.prototype = {
+ run: function() {
+ try {
+ // ここでワーキングスレッドの完了に対して反応を返す
+ alert('Thread ' + this.threadID + ' finished with result: ' + this.result);
+ } catch(err) {
+ Components.utils.reportError(err);
+ }
+ },
+
+ QueryInterface: function(iid) {
+ if (iid.equals(Components.interfaces.nsIRunnable) ||
+ iid.equals(Components.interfaces.nsISupports)) {
+ return this;
+ }
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ }
+};
+</pre>
+<p>この例では <code>run()</code> メソッドは単純に警告ボックスを使ってユーザーに出力を表示します。
+</p><p><span id="Putting_it_all_together"></span>
+</p>
+<h4 id=".E4.BB.95.E4.B8.8A.E3.81.92" name=".E4.BB.95.E4.B8.8A.E3.81.92">仕上げ</h4>
+<p>実際にスレッドマネージャを使ってバックグラウンドでこれらの計算を行うには、まず &lt;tt&gt;workingThread&lt;/tt&gt; のタスクを実行する <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code> オブジェクトを作成する必要があります:
+</p>
+<pre class="eval">var background = Components.classes["@mozilla.org/thread-manager;1"].getService().newThread(0);
+</pre>
+<p>それに加えて、メインスレッドの <code><a href="/ja/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIThread" title="">nsIThread</a></code> の参照を得る必要があります:
+</p>
+<pre class="eval">var main = Components.classes["@mozilla.org/thread-manager;1"].getService().mainThread;
+</pre>
+<p>この情報を得たら、タスクをバックグラウンドスレッドに割り当てることができます。
+</p>
+<pre class="eval">background.dispatch(new workingThread(1, 5000000), background.DISPATCH_NORMAL);
+</pre>
+<p>これによりバックグラウンドスレッドの実行が開始され、0 と 5,000,000 の間のすべての数の合計が計算されます。作業が終了すると、メインスレッドの <code>run()</code> メソッドが呼び出され、結果をユーザーと共有します。それまでの間、メインスレッドはユーザーの操作に反応するなどの自分の作業を続けることができます。
+</p><p><br>
+</p>
+<div class="noinclude">
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/using_nscomptr/frequently_asked_questions/index.html b/files/ja/mozilla/tech/xpcom/using_nscomptr/frequently_asked_questions/index.html
new file mode 100644
index 0000000000..1edb362717
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/using_nscomptr/frequently_asked_questions/index.html
@@ -0,0 +1,91 @@
+---
+title: Frequently Asked Questions
+slug: Mozilla/Tech/XPCOM/Using_nsCOMPtr/Frequently_Asked_Questions
+tags:
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/Using_nsCOMPtr/Frequently_Asked_Questions
+---
+<p>
+</p><p>このセクションは、もしあなたが壊れたビルドを直したり、即答できる明らかな疑問を持っていたり、あるいは <a href="ja/Using_nsCOMPtr/Reference_Manual">リファレンスマニュアル</a> を読む時間がない場合に役に立つでしょう。この FAQ は、通常は適切な答えへ直接的に参照するだけです。もしあなたが単に <code>nsCOMPtr</code> について学ぶことを期待しているのであれば、<a href="ja/Using_nsCOMPtr/Getting_Started_Guide">スタートガイド</a> にもっと良い紹介があります。
+</p><p>FAQ は、探しているものを早く見つけやすくするために複数のセクションに分かれています。 ほとんどの場合、答えは上記のリファレンスマニュアルを参照しているだけです。 同じことを 2 度説明する必要はありません <code><span class="nowiki">:-)</span></code>
+</p>
+<h3 id=".E3.83.93.E3.83.AB.E3.83.89.E6.99.82.E3.81.AE.E3.82.A8.E3.83.A9.E3.83.BC" name=".E3.83.93.E3.83.AB.E3.83.89.E6.99.82.E3.81.AE.E3.82.A8.E3.83.A9.E3.83.BC"> ビルド時のエラー </h3>
+<p>ビルドが壊れました。エラーがあなた自身のコードでもなく、あなたのプラットフォームのコードでもなく、<code>nsCOMPtr</code>の 中で起こっており、そしてあなたはそれを疑っています。あなたは正しい場所を見ています。
+</p>
+<h4 id="nsCOMPtr_.E3.81.A8.E7.94.9F.E3.81.AE_.5BXP.5DCOM_.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF.E3.82.92.E6.AF.94.E8.BC.83.E3.81.97.E3.81.A6.E3.81.84.E3.81.BE.E3.81.99" name="nsCOMPtr_.E3.81.A8.E7.94.9F.E3.81.AE_.5BXP.5DCOM_.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF.E3.82.92.E6.AF.94.E8.BC.83.E3.81.97.E3.81.A6.E3.81.84.E3.81.BE.E3.81.99"> <code>nsCOMPtr</code> と生の [XP]COM インタフェースポインタを比較しています </h4>
+<h4 id="nsCOMPtr_.E3.82.92.E5.BE.8C.E3.81.AB.E5.AE.A3.E8.A8.80.E3.81.97.E3.81.A6.E3.81.84.E3.82.8B.E3.82.AF.E3.83.A9.E3.82.B9.E3.81.AB.E5.AF.BE.E3.81.97.E3.81.A6.E5.AE.A3.E8.A8.80.E3.81.97.E3.81.A6.E3.81.84.E3.81.BE.E3.81.99" name="nsCOMPtr_.E3.82.92.E5.BE.8C.E3.81.AB.E5.AE.A3.E8.A8.80.E3.81.97.E3.81.A6.E3.81.84.E3.82.8B.E3.82.AF.E3.83.A9.E3.82.B9.E3.81.AB.E5.AF.BE.E3.81.97.E3.81.A6.E5.AE.A3.E8.A8.80.E3.81.97.E3.81.A6.E3.81.84.E3.81.BE.E3.81.99"> <code>nsCOMPtr</code> を後に宣言しているクラスに対して宣言しています </h4>
+<h4 id="XPCOM_.E3.81.A8.E3.83.AA.E3.83.B3.E3.82.AF.E3.81.97.E3.81.A6.E3.81.84.E3.81.BE.E3.81.9B.E3.82.93" name="XPCOM_.E3.81.A8.E3.83.AA.E3.83.B3.E3.82.AF.E3.81.97.E3.81.A6.E3.81.84.E3.81.BE.E3.81.9B.E3.82.93"> XPCOM とリンクしていません </h4>
+<h4 id="nsCOMPtr.h_.E3.82.92.E3.82.A4.E3.83.B3.E3.82.AF.E3.83.AB.E3.83.BC.E3.83.89.E3.81.97.E3.81.A6.E3.81.84.E3.81.BE.E3.81.9B.E3.82.93" name="nsCOMPtr.h_.E3.82.92.E3.82.A4.E3.83.B3.E3.82.AF.E3.83.AB.E3.83.BC.E3.83.89.E3.81.97.E3.81.A6.E3.81.84.E3.81.BE.E3.81.9B.E3.82.93"> nsCOMPtr.h をインクルードしていません </h4>
+<h4 id="NSCAP_FEATURE_DEBUG_PTR_TYPES_.E3.81.AE.E8.A8.AD.E5.AE.9A.E3.81.8C.E9.81.95.E3.81.84.E3.81.BE.E3.81.99" name="NSCAP_FEATURE_DEBUG_PTR_TYPES_.E3.81.AE.E8.A8.AD.E5.AE.9A.E3.81.8C.E9.81.95.E3.81.84.E3.81.BE.E3.81.99"> <code>NSCAP_FEATURE_DEBUG_PTR_TYPES</code> の設定が違います </h4>
+<h3 id=".E5.AE.9F.E8.A1.8C.E6.99.82.E3.81.AE.E3.82.A8.E3.83.A9.E3.83.BC" name=".E5.AE.9F.E8.A1.8C.E6.99.82.E3.81.AE.E3.82.A8.E3.83.A9.E3.83.BC"> 実行時のエラー </h3>
+<h4 id="NS_ASSERTION_.22QueryInterface_needed.22" name="NS_ASSERTION_.22QueryInterface_needed.22"> <code>NS_ASSERTION</code> "QueryInterface needed" </h4>
+<h4 id="NS_PRECONDITION_.22You_can.27t_dereference_a_NULL_nsCOMPtr_with_operator-.3E.28.29.22" name="NS_PRECONDITION_.22You_can.27t_dereference_a_NULL_nsCOMPtr_with_operator-.3E.28.29.22"> <code>NS_PRECONDITION</code> "You can't dereference a NULL nsCOMPtr with operator-&gt;()" </h4>
+<h4 id="NS_PRECONDITION_.22You_can.27t_dereference_a_NULL_nsCOMPtr_with_operator.2A.28.29.22" name="NS_PRECONDITION_.22You_can.27t_dereference_a_NULL_nsCOMPtr_with_operator.2A.28.29.22"> <code>NS_PRECONDITION</code> "You can't dereference a NULL nsCOMPtr with operator*()" </h4>
+<h3 id=".E3.81.A9.E3.81.86.E3.82.84.E3.81.A3.E3.81.A6..." name=".E3.81.A9.E3.81.86.E3.82.84.E3.81.A3.E3.81.A6..."> どうやって... </h3>
+<h4 id="nsCOMPtr_.E3.82.92.E5.88.9D.E6.9C.9F.E5.8C.96.E3.81.99.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="nsCOMPtr_.E3.82.92.E5.88.9D.E6.9C.9F.E5.8C.96.E3.81.99.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> <code>nsCOMPtr</code> を初期化するのですか? </h4>
+<h4 id="nsCOMPtr_.E3.81.8C.E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97.E3.82.92.E6.8A.9C.E3.81.91.E3.82.8B.E5.89.8D.E3.81.AB.E3.81.9D.E3.82.8C.E3.82.92_Release_.E3.81.99.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="nsCOMPtr_.E3.81.8C.E3.82.B9.E3.82.B3.E3.83.BC.E3.83.97.E3.82.92.E6.8A.9C.E3.81.91.E3.82.8B.E5.89.8D.E3.81.AB.E3.81.9D.E3.82.8C.E3.82.92_Release_.E3.81.99.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"> <code>nsCOMPtr</code> がスコープを抜ける前にそれを <code>Release</code> するのですか? </h4>
+<p>それに <code>0</code> を代入してください。<code>nsCOMPtr</code> が新しい値を取る時は、古い値があれば、いつもそれを <code>Release</code> します。値 <code>0</code> を割り当てるということは、<code>NULL</code> の生のポインタを割り当てるのと同じようなことです。古い対象は、<code>Release</code> されます。(より詳しくは、<a href="ja/Using_nsCOMPtr/Reference_Manual#.E5.88.9D.E6.9C.9F.E5.8C.96.E3.81.A8.E4.BB.A3.E5.85.A5">初期化と代入</a> を見てください。)
+</p><p>ただし、これには小さなパフォーマンス上のペナルティがあることに注意してください。<code>nsCOMPtr</code> は、デストラクタの処理の中で、その時持つ値を <code>Release</code> しようとします。最良の解決法は、<code>nsCOMPtr</code> の生存期間をその参照を保持したい期間だけに調整することです。例えば、この例ではブロックを使っています。
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval"><span class="comment">// 最も効率的な枠組は、|nsCOMPtr| がちょうどその参照を</span>
+<span class="comment">// 保持する必要のある期間だけのスコープを設定することです。</span>
+
+nsresult
+SomeLongFunction( nsIBar* aBar )
+ {
+ nsresult rv;
+ <span class="comment">// ...</span>
+
+ {
+ <span class="comment">// |nsIFoo| インタフェースは、短期間だけ必要です。</span>
+ <span class="comment">// そのため、その生存期間をブロック文の中で</span>
+ <span class="comment">// 宣言して、制御します。</span>
+
+ nsCOMPtr&lt;nsIFoo&gt; foo( do_QueryInterface(aBar, &amp;rv) );
+ if ( foo )
+ foo-&gt;DoSomeFooThing();
+
+ <span class="comment">// |foo| がスコープをはずれました。そのため、ここで |Release| が実行されます。</span>
+ }
+
+ <span class="comment">// ...ここには |nsIFoo| を必要としない多くの事柄があります。</span>
+
+ return rv;
+ }
+</pre>
+</td></tr></tbody></table>
+<p>編集者注: この議論を <a href="ja/Using_nsCOMPtr/Reference_Manual#.E5.8A.B9.E7.8E.87.E6.80.A7.E3.81.A8.E6.AD.A3.E7.A2.BA.E6.80.A7">効率性</a>のセクションへ移動し、ここからリンクを張ります。
+</p>
+<h4 id="nsCOMPtr_.E3.81.AE.E3.83.AA.E3.83.BC.E3.82.AF.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B_.28.E3.83.87.E3.83.90.E3.83.83.E3.82.B0.E3.83.86.E3.82.B9.E3.83.88.E3.81.AE.E3.81.9F.E3.82.81.29_.EF.BC.9F" name="nsCOMPtr_.E3.81.AE.E3.83.AA.E3.83.BC.E3.82.AF.E3.82.92.E4.BD.9C.E3.82.8B.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B_.28.E3.83.87.E3.83.90.E3.83.83.E3.82.B0.E3.83.86.E3.82.B9.E3.83.88.E3.81.AE.E3.81.9F.E3.82.81.29_.EF.BC.9F"> <code>nsCOMPtr</code> のリークを作るのでしょうか (デバッグテストのため) ? </h4>
+<h4 id=".E7.94.9F.E3.81.AE_.5BXP.5DCOM_.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF.E3.82.92.E3.80.8C.E5.85.A5.E5.87.BA.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF.E3.81.A8.E3.81.97.E3.81.A6.E4.BD.BF.E3.81.86_getter_.E3.82.92.E5.91.BC.E3.81.B9.E3.81.B0.E3.82.88.E3.81.84.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name=".E7.94.9F.E3.81.AE_.5BXP.5DCOM_.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF.E3.82.92.E3.80.8C.E5.85.A5.E5.87.BA.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF.E3.81.A8.E3.81.97.E3.81.A6.E4.BD.BF.E3.81.86_getter_.E3.82.92.E5.91.BC.E3.81.B9.E3.81.B0.E3.82.88.E3.81.84.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F"> 生の [XP]COM インタフェースポインタを「入出力」パラメタとして使う getter を呼べばよいのでしょうか? </h4>
+<h4 id="nsIFoo.2A_.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF.E3.81.A7.E8.A8.AD.E5.AE.9A.E3.81.99.E3.82.8B_getter_.E3.82.92.E5.91.BC.E3.81.B9.E3.81.B0.E3.82.88.E3.81.84.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name="nsIFoo.2A&amp;_.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF.E3.81.A7.E8.A8.AD.E5.AE.9A.E3.81.99.E3.82.8B_getter_.E3.82.92.E5.91.BC.E3.81.B9.E3.81.B0.E3.82.88.E3.81.84.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F"> <code>nsIFoo*&amp;</code> パラメタで設定する getter を呼べばよいのでしょうか? </h4>
+<h4 id=".E3.81.9D.E3.81.AE.E7.B5.90.E6.9E.9C.E3.82.92_AddRef_.E3.81.97.E3.81.AA.E3.81.84_getter_.E3.82.92.E5.91.BC.E3.81.B9.E3.81.B0.E3.82.88.E3.81.84.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.3F" name=".E3.81.9D.E3.81.AE.E7.B5.90.E6.9E.9C.E3.82.92_AddRef_.E3.81.97.E3.81.AA.E3.81.84_getter_.E3.82.92.E5.91.BC.E3.81.B9.E3.81.B0.E3.82.88.E3.81.84.E3.81.AE.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.3F"> その結果を <code>AddRef</code> しない getter を呼べばよいのでしょうか? </h4>
+<p>インタフェースポインタを返すどの {{ mediawiki.external('XP') }}COM 関数 (getter) も、そのポインタに対して <code>AddRef</code> をすでに呼び出していなければいけません。 もしそれが行われないのであれば、おそらくそれをバグとして報告すべきでしょう。 この問題を解決するのに使うどのコードパターンに対しても、このようにコメントすべきです。 例えば、<code><span class="comment">// 警告: この getter は 結果を AddRef() していません。</span></code> もし getter が新しいポインタを関数の復帰値として返すのであれば、心配いりません。
+</p>
+<h3 id=".E4.B8.80.E8.88.AC" name=".E4.B8.80.E8.88.AC"> 一般 </h3>
+<h4 id="nsCOMPtr_.E3.81.AF.E3.80.81.E3.82.B3.E3.83.BC.E3.83.89.E3.82.92.E8.86.A8.E5.BC.B5.E3.81.95.E3.81.9B.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="nsCOMPtr_.E3.81.AF.E3.80.81.E3.82.B3.E3.83.BC.E3.83.89.E3.82.92.E8.86.A8.E5.BC.B5.E3.81.95.E3.81.9B.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> <code>nsCOMPtr</code> は、コードを膨張させますか? </h4>
+<h4 id="nsCOMPtr_.E3.81.AF.E9.80.9F.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F_.E3.82.BF.E3.82.A4.E3.83.88.E3.81.AA.E3.83.AB.E3.83.BC.E3.83.97.E3.81.AE.E4.B8.AD.E3.81.A7.E3.82.82.E4.BD.BF.E3.81.88.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F" name="nsCOMPtr_.E3.81.AF.E9.80.9F.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F_.E3.82.BF.E3.82.A4.E3.83.88.E3.81.AA.E3.83.AB.E3.83.BC.E3.83.97.E3.81.AE.E4.B8.AD.E3.81.A7.E3.82.82.E4.BD.BF.E3.81.88.E3.81.BE.E3.81.99.E3.81.8B.EF.BC.9F"> <code>nsCOMPtr</code> は速いですか? タイトなループの中でも使えますか? </h4>
+<h3 id=".E5.8F.82.E8.80.83.E6.96.87.E7.8C.AE.E4.B8.80.E8.A6.A7" name=".E5.8F.82.E8.80.83.E6.96.87.E7.8C.AE.E4.B8.80.E8.A6.A7"> 参考文献一覧 </h3>
+<h4 id="Web_.E3.83.AA.E3.82.BD.E3.83.BC.E3.82.B9" name="Web_.E3.83.AA.E3.82.BD.E3.83.BC.E3.82.B9"> Web リソース </h4>
+<ul><li> {{ Source("xpcom/glue/nsCOMPtr.h", "nsCOMPtr.h") }} と {{ Source("xpcom/glue/nsCOMPtr.cpp", "nsCOMPtr.cpp") }} は、<code>nsCOMPtr</code>のソースです。<a class="external" href="http://lxr.mozilla.org/">LXR</a> を使って、<code>nsCOMPtr</code>のソースをオンラインで調べることができます。このコードを探検するのは、心臓が弱い人にとっても、冒険ではありません。
+</li><li> <a href="ja/XPCOM_ownership_guidelines">COM の所有のガイドライン</a>
+</li><li> <a class="external" href="http://www.develop.com/dbox/cxx/InterfacePtr.htm">Interface Pointers Considered Harmful</a> - Don Box 著 - "The C++ Report" 1995 年 9 月号初出記事
+</li><li> <a class="external" href="http://www.develop.com/dbox/cxx/SmartPtr.htm">COM Smart Pointers Even More Harmful</a> - Don Box 著 - "The C++ Report" 1996 年 2 月号初出記事のフォローアップ
+</li></ul>
+<h4 id=".E6.9B.B8.E7.B1.8D" name=".E6.9B.B8.E7.B1.8D"> 書籍 </h4>
+<ul><li> <a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201634465">Essential COM</a> - Don Box 著
+</li><li> <a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201379686">Effective COM</a> - Don Box 他著
+</li><li> <a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201889544">The C++ Programming Language (3rd Edition)</a> - Bjarne Stroustrup 著
+</li><li> <a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201924889">Effective C++ (2nd Edition): 50 Specific Ways to Improve Your Programs and Designs</a> - Scott Meyers 著
+</li><li> <a class="external" href="http://www.amazon.com/exec/obidos/ASIN/020163371X">More Effective C++ : 35 New Ways to Improve Your Programs and Designs</a> - Scott Meyers 著
+</li><li> <a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201310155">Effective C++ CD: 85 Specific Ways to Improve Your Programs and Designs</a> - Scott Meyers 著
+</li></ul>
+<h4 id=".E4.BA.BA.E3.80.85" name=".E4.BA.BA.E3.80.85"> 人々 </h4>
+<ul><li> <a class="external" href="http://www.develop.com/dbox/">Don Box</a> 長い間 COM プログラミングについて書いてきた頭のいい人です。
+</li></ul>
+<div class="noinclude">
+</div>
+{{ languages( { "en": "en/Using_nsCOMPtr/Frequently_Asked_Questions" } ) }}
diff --git a/files/ja/mozilla/tech/xpcom/using_nscomptr/getting_started_guide/index.html b/files/ja/mozilla/tech/xpcom/using_nscomptr/getting_started_guide/index.html
new file mode 100644
index 0000000000..826f85c35a
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/using_nscomptr/getting_started_guide/index.html
@@ -0,0 +1,294 @@
+---
+title: Getting Started Guide
+slug: Mozilla/Tech/XPCOM/Using_nsCOMPtr/Getting_Started_Guide
+tags:
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/Using_nsCOMPtr/Getting_Started_Guide
+---
+<p> </p>
+<p>もしあなたが <code>nsCOMPtr</code> を前に使ったことがないのであれば、このセクションは、あなたにピッタリです。もしあなたがすでに <code>nsCOMPtr</code> に慣れ親しんでいるのであれば、<a href="/ja/Using_nsCOMPtr/Reference_Manual" title="ja/Using_nsCOMPtr/Reference_Manual">リファレンスマニュアル</a> あるいは <a href="/ja/Using_nsCOMPtr/Frequently_Asked_Questions" title="ja/Using_nsCOMPtr/Frequently_Asked_Questions">FAQ</a> まで読み飛ばしたいかもしれません。心配しないでください。スタートガイドは短いです。</p>
+<h3 id=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB" name=".E3.81.AF.E3.81.98.E3.82.81.E3.81.AB">はじめに</h3>
+<h4 id="nsCOMPtr.E3.81.A8.E3.81.AF.E4.BD.95.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name="nsCOMPtr.E3.81.A8.E3.81.AF.E4.BD.95.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F"><code>nsCOMPtr</code>とは何ですか?</h4>
+<p><code>nsCOMPtr</code>はリークを防ぐのを助けるツールです。</p>
+<p><code>nsCOMPtr</code> は「スマートポインタ」です。これは、文法的には通常の C や C++ の通常のポインタのように振舞うテンプレートクラスです。つまり、<code>*</code> や <code>-&gt;</code> を使って、それが指すものを取り出すことができます。<code>nsCOMPtr</code> は、XPCOM オブジェクトを指す生の C++ ポインタとは違い、<code>AddRef</code>、<code>Release</code> と <code>QueryInterface</code> をあなたのために管理してくれるという点でスマートです。<code>nsCOMPtr</code> は、以下のソースファイルで定義されています。</p>
+<ul> <li><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsCOMPtr.h" rel="custom">xpcom/glue/nsCOMPtr.h</a></code></li> <li><code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsCOMPtr.cpp" rel="custom">xpcom/glue/nsCOMPtr.cpp</a></code></li>
+</ul>
+<p>...ただ、まだそこを見たくはないは思わないでしょうけど。</p>
+<p><code>nsCOMPtr</code> を使うことで、生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタを使うよりも、短く、きれいで、明確で、安全なコードを書くことができます。</p>
+<h4 id=".5BXP.5DCOM_.E3.81.AE.E5.9F.BA.E6.9C.AC_.E6.89.80.E6.9C.89.E6.A8.A9.E3.81.A8.E5.8F.82.E7.85.A7.E3.82.AB.E3.82.A6.E3.83.B3.E3.83.88" name=".5BXP.5DCOM_.E3.81.AE.E5.9F.BA.E6.9C.AC:_.E6.89.80.E6.9C.89.E6.A8.A9.E3.81.A8.E5.8F.82.E7.85.A7.E3.82.AB.E3.82.A6.E3.83.B3.E3.83.88">[XP]COM の基本: 所有権と参照カウント</h4>
+<p>これは、 <a href="/ja/XPCOM">XPCOM</a> の基本的な事項に関する軽い記事です。あなたはすでに(<a href="/ja/XPCOM">XPCOM</a> について)知っている必要がありますし、この短いセクションにざっと目を通せるようにすべきです。もしあまり馴染みのない事が書いてあるのであれば、あなたはまだ <code>nsCOMPtr</code> を読む準備ができていません。COM の背後の基本的ルールと論証については、以下の情報が有用です。<a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201634465">Essential COM</a> (<a class="external" href="http://www.develop.com/dbox/">Don Box</a> 著)。Don Box は、COM について、より詳細なこと、わな、落とし穴について、<a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201379686">Effective COM</a> で述べています。あなたは C++ についての適切な知識も持っているべきです。おそらくこのトピックについてとても助けになる 3 冊の本は、Bjarne Stroustrup の <a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201889544">The C Programming Language</a>、Scott Meyers の <a class="external" href="http://www.amazon.com/exec/obidos/ASIN/0201924889">Effective C</a>、<a class="external" href="http://www.amazon.com/exec/obidos/ASIN/020163371X">More Effective C</a> です。</p>
+<p>すべての <a href="/ja/XPCOM">XPCOM</a> オブジェクトは、ヒープに割り当てられます。クライアントは、そのようなオブジェクトの実装について多くを知ることはできません。クライアントは「インタフェース」へのポインタを通じてのみ、それを参照します。すなわち、ポインタの静的な型は抽象基底クラスへのポインタであり、指されている実際のオブジェクトは、抽象基底クラスから派生しているクラスです。その <a href="/ja/XPCOM">XPCOM</a> オブジェクトは、「インタフェースを実装する」と言われます。クライアントのオブジェクトへの参照は、一般的に「インタフェースポインタ」と呼ばれています。</p>
+<p>オブジェクトは、たくさんのインタフェースを実装するかもしれません。それぞれのインタフェースについて、(少なくとも概念的には) 別々に、「参照のカウント」が行われます。つまり、インタフェースはそれを参照しているクライアントの数を保持しているということです。カウントが 0 になった時、インタフェースは自分自身を<code>削除する</code>ことができます。クライアントには、この参照カウントの厳密さを保つことが求められています。そのため、インタフェースへの参照が獲得された時は参照カウントのインクリメントを行い、またそれを使わなくなった時は参照カウントのデクリメントを行わなければなりません。これを容易にするため、すべてのインタフェースは、メンバ関数 <code>AddRef</code>、<code>Release</code> を提供する抽象基底クラスから継承しています。</p>
+<p><a href="/ja/XPCOM">XPCOM</a> の一つの規則は、インタフェースポインタを作成するか、返すかするどの関数もそれに対して、すでに <code>AddRef</code> を実行していなければならないことです。呼び出し側は、参照をいつまでも保持することができ、いらなくなったら、<code>Release</code> を呼びます。インタフェースへの最後のポインタに対して、<code>Release</code> が呼ばれると、インタフェース (従って、通常は基となるオブジェクトも) は、自分自身を削除します。インタフェースに対する未解決の <code>AddRef</code> がある限り、オブジェクトは存在し続けます。<code>Release</code> を呼び忘れると、オブジェクトはリークし、すなわち、オブジェクトの記憶領域は決して取り戻されません。リークは、悪いことです。<code><span class="nowiki">:-)</span></code></p>
+<p><code>AddRef</code> と <code>Release</code> の呼び出しを通じた参照を<strong>所有する参照</strong>と呼びます。それは、基となるオブジェクトに権利を持ちます。そのオブジェクトは、所有する参照がその権利を放棄するまで無くなりません。全ての参照が所有する参照である必要はありません。実際、もし二つのオブジェクトが何らかの形で (一時的にでも) お互いを所有しあうことになった場合、所有の輪を断ち切るなんらかの`例外的'メカニズムなしで、それらのオブジェクトを取り戻すのは、難しくなります。ドキュメント <a href="/ja/XPCOM_ownership_guidelines" title="ja/XPCOM_ownership_guidelines">COM の所有のガイドライン</a> は、所有権が必要になった時に、いくつかヒントを与えてくれます。以下のリストは、開始地点としていいですが、しかし決して完全ではありません。</p>
+<p>所有する参照を使うのは、</p>
+<ul> <li>オブジェクトを生成した時。</li> <li>オブジェクトを生成した可能性のある関数からオブジェクトを受け取った場合。 例えば、<code>QueryInterface</code> や <code>CreateInstance</code> のような、任意の「getter」関数。 望ましい getter はすべて、それらがつくり出したインタフェースポインタに対して <code>AddRef</code> を実行し、所有する参照を提供します。</li> <li>その参照を、あなたがそれを取得した関数のスコープよりも長く保持する場合。 例えば、パラメタとして受け取り、それをメンバ変数として保持する場合。 [例えば、以下の <a href="#Comparison_1">比較 1</a> を見てください]。</li>
+</ul>
+<p>所有する参照を使わなくてもよいのは、</p>
+<ul> <li>オブジェクトがパラメタとして渡され、かつその関数のスコープよりも長くそれを保持する必要がない場合。</li> <li>上手く定義されていることによって、当該オブジェクトの生存期間があなたのオブジェクトの生存期間を含んでいると分かっている場合。 例えば、ツリーのノードにおいて、 親のノードは、それらの子どもに対する所有する参照を保持しており、 子は、その親を所有する参照で保持する必要はありません。</li>
+</ul>
+<p>これらにより、参照カウントをプログラマが手動で正しくするのは、大変であることが分かります。それは、簡単そうに見えますが、しかし実際には <code>Release</code> を適切な時に実行するのは忘れやすいのです。あるいは、 <code>AddRef</code> を多く呼びすぎたり、呼び出しが足りなかったりすることもあります。</p>
+<h4 id="nsCOMPtr_.E3.81.AF.E3.80.81.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AB.E5.BD.B9.E3.81.AB.E7.AB.8B.E3.81.A4.E3.81.AE.E3.81.8B.3F" name="nsCOMPtr_.E3.81.AF.E3.80.81.E3.81.A9.E3.81.AE.E3.82.88.E3.81.86.E3.81.AB.E5.BD.B9.E3.81.AB.E7.AB.8B.E3.81.A4.E3.81.AE.E3.81.8B.3F"><code>nsCOMPtr</code> は、どのように役に立つのか?</h4>
+<p><code>nsCOMPtr</code> は、<code>AddRef</code>、<code>Release</code>、その他の煩わしい仕事をあなたのために管理します。<code>nsCOMPtr</code>は、見掛けも振舞いも C が許している生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタのようです。しかし、<code>nsCOMPtr</code> は、自分が指しているオブジェクトを所有していることを知っています。少し慣れる必要はありますが、しかし結果的に、タイピングが少なくて済み、きれいで、安全なコードを書くことができ、そしてリークが少なくなります。</p>
+<p>例えば、ここに典型的な (とてもコンパクトな) コードの断片があります。これは、<a href="/ja/XPCOM">XPCOM</a> インタフェースポインタをメンバ変数に代入しています。つまり、「setter」関数の本体です。生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタと <code>nsCOMPtr</code> を並べて使用しています。</p>
+<p> </p>
+<table> <caption>比較 1. メンバ変数を設定する </caption> <tbody> <tr> <td> <pre class="eval"><span class="comment">// 生の [XP]COM インタフェースポインタ...</span>
+<span class="comment">// 仮定: |nsIFoo* mFooPtr;|</span>
+
+<span class="comment"><span class="nowiki">/* もし |NULL| でなく新しい値なら、|AddRef| し それを代入します。もし古い値があれば、 |Release| します (そうやってリークを防ぎます)。   この割り当て順序は特別で、特定の所有者バグを防ぐために   使われなくてはなりません。 */</span></span>
+
+<strong>NS_IF_ADDREF(aFooPtr); nsIFoo* temp = mFooPtr;</strong>
+mFooPtr = aFooPtr;
+<strong>NS_IF_RELEASE(temp);</strong>
+</pre> </td> <td> <pre class="eval"><span class="comment">// |nsCOMPtr|...</span>
+<span class="comment">// 仮定: |nsCOMPtr&lt;nsIFoo&gt; mFooPtr;|</span>
+
+<span class="comment"><span class="nowiki">/* この代入は、|mFooPtr| に古い値が あれば自動的にそれを |Release| し、 新しい値に対して、先ほど触れた所有者バグを 防ぐために適切な順序で |AddRef| を 呼び出します。 */</span></span>
+
+
+
+
+
+mFooPtr = aFooPtr;
+
+</pre> </td> </tr> </tbody>
+</table>
+<p>付け加えると、生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタを使うクラスは、<code>mFooPtr</code> を <code>Release</code> するためのデストラクタを必要とします。そして、<code>mFooPtr</code> が <code>NULL</code> (または何らかの正当な値) で初期化されることを保証するコンストラクタを必要とします。</p>
+<p><code>nsCOMPtr</code>は、あなたが生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタを使うよりリークへの耐性があり、例外に対して安全で、だらだらとしないコードを書くのに役立ちます。<code>nsCOMPtr</code> を使う時は、<code>AddRef</code>、<code>QueryInterface</code> を手動で呼ぶ必要はないでしょう。</p>
+<p>それでもなお、 <a href="/ja/XPCOM">XPCOM</a> を理解する必要があります。また、どの関数が<code>AddRef</code>されたインタフェースポインタを返し、どの関数がそうでないものを返すのかを知っていなければなりません。また、あなたのプログラムロジックが循環参照によるゴミを作り出さないことを保障しなければなりません。<code>nsCOMPtr</code> は、万能薬ではありません。しかしながら、それは、役に立ち、簡単に使え、よくテストされ、そして洗練されています。関数の作者があなたと協調することを必要としません。またあなたがそれを使うことにより、他人にそれを使うよう強制することもありません。</p>
+<h3 id="nsCOMPtr_.E3.82.92.E4.BD.BF.E3.81.86" name="nsCOMPtr_.E3.82.92.E4.BD.BF.E3.81.86"><code>nsCOMPtr</code> を使う</h3>
+<h4 id=".E5.9F.BA.E6.9C.AC" name=".E5.9F.BA.E6.9C.AC">基本</h4>
+<p>ほとんどの場合、あなたは<code>nsCOMPtr</code>を生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタと全く同じように使うでしょう。宣言時のわずかな違いに注意してください。</p>
+<p> </p>
+<table> <caption>比較 2. 類似性: <code>nsCOMPtr</code>は、文法的に生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタに似ている。 </caption> <tbody> <tr> <td> <pre class="eval"><span class="comment">// 生の [XP]COM インタフェースポインタ...</span>
+
+nsIFoo<strong><span class="nowiki">*</span></strong> fooPtr <strong><span class="nowiki">= 0</span></strong><span class="nowiki">; </span><span class="comment">// ...</span>
+fooPtr-&gt;SomeFunction(x, y, z);
+AnotherFunction(fooPtr);
+
+if ( fooPtr )
+ <span class="comment">// ...</span>
+
+if ( fooPtr == foo2Ptr )
+ <span class="comment">// ...</span>
+</pre> </td> <td> <pre class="eval"><span class="comment">// |nsCOMPtr|...</span>
+
+<strong>nsCOMPtr&lt;</strong>nsIFoo<strong>&gt;</strong> fooPtr;
+<span class="comment">// ...</span>
+fooPtr-&gt;SomeFunction(x, y, z);
+AnotherFunction(fooPtr);
+
+if ( fooPtr )
+ <span class="comment">// ...</span>
+
+if ( fooPtr == foo2Ptr )
+ <span class="comment">// ...</span>
+</pre> </td> </tr> </tbody>
+</table>
+<p>二つの主な違いがあります。最初の違い: あなたはもはや <code>AddRef</code> や <code>Release</code> を呼ぶ必要がありません。また呼んでもいけません。</p>
+<p> </p>
+<table> <caption>Comparison 3. Differences: <code>AddRef</code> and <code>Release</code> are illegal for <code>nsCOMPtr</code>s. </caption> <tbody> <tr> <td> <pre class="eval"><span class="comment">// 生の [XP] COMインタフェースポインタ...</span>
+<span class="comment">// 仮定: |nsIFoo* mFooPtr;|</span>
+
+ <span class="comment">/* 注意: この順序はどっちみち生のポインタが 代入された正しい順序ではありません (<a href="#Comparison_1">比較 1</a> を参照してください) しかし、 ここでは、この比較が必要です。 */</span>
+
+NS_IF_RELEASE(mFooPtr);
+
+mFooPtr = aFooPtr;
+NS_IF_ADDREF(mFooPtr);
+
+</pre> </td> <td> <pre class="eval"><span class="comment">// |nsCOMPtr|...</span>
+<span class="comment">// 仮定: |nsCOMPtr&lt;nsIFoo&gt; mFooPtr;|</span>
+
+ <span class="comment">/* もはや |AddRef| や |Release| を呼ぶ 必要もありませんし、コンパイラはそれを エラーにします。 */</span>
+
+
+
+<span class="warning">NS_IF_RELEASE(mFooPtr);</span>
+ <span class="comment">// エラー: |Release| はプライベートです。</span>
+mFooPtr = aFooPtr;
+<span class="warning">NS_IF_ADDREF(mFooPtr);</span>
+ <span class="comment">// エラー: |AddRef| はプライベートです。</span>
+</pre> </td> </tr> </tbody>
+</table>
+<p>二番目の違い: あなたは、生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタのパラメタを通じて、結果を返すことを期待して、<code>nsCOMPtr</code> のアドレスを getter に渡すことができません。あなたは、<a href="/ja/Using_nsCOMPtr/Reference_Manual#.E3.80.8C.E5.87.BA.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF:_getter_AddRefs" title="ja/Using_nsCOMPtr/Reference_Manual#.E3.80.8C.E5.87.BA.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF:_getter_AddRefs"><code>getter_AddRefs</code></a> 指示子で、<code>nsCOMPtr</code> を注釈する必要があります。</p>
+<p> </p>
+<table> <caption>比較 4.違い: <code>nsCOMPtr</code>を`出力パラメタ'として使う時に、<code>getter_AddRefs</code>を適用する。 </caption> <tbody> <tr> <td> <pre class="eval"><span class="comment">// 生の [XP]COM インタフェースポインタ...</span>
+
+nsIFoo* foo;
+
+GetFoo(<strong>&amp;</strong>foo);
+</pre> </td> <td> <pre class="eval"><span class="comment">// |nsCOMPtr|s...</span>
+
+nsCOMPtr&lt;nsIFoo&gt; foo;
+
+GetFoo(<strong>getter_AddRefs(</strong>foo<strong>)</strong>);
+</pre> </td> </tr> </tbody>
+</table>
+<p>これで終りです。あなたは、もう<code>nsCOMPtr</code>を使い始めるのに十分な知識を持っています。この他に<code>nsCOMPtr</code>をもっと複雑な状況で使う時にあなたが知りたいであろう、いくつかの詳細な事柄があります。でもあなたが学んだことは、あなたが使う状況の 90% をカバーしています。</p>
+<h4 id=".E3.81.84.E3.81.8F.E3.81.A4.E3.81.8B.E3.81.AE.E8.A9.B3.E7.B4.B0" name=".E3.81.84.E3.81.8F.E3.81.A4.E3.81.8B.E3.81.AE.E8.A9.B3.E7.B4.B0">いくつかの詳細</h4>
+<p>あなたが <code>nsCOMPtr</code> から最大限のことを引き出すのを手伝ういくつかの事があります。</p>
+<p>しばしば、まず <code>QueryInterface</code> を呼ぶことで、あなたはインタフェースポインタを得ます。 <code>QueryInterface</code> は、他と同様に getter です。そして、上述したように <code>getter_AddRefs</code> ルールを適用して、それを呼び出す一つの方法をすでに知っています。</p>
+<table> <caption><code>nsCOMPtr</code> に <code>QueryInterface</code> する難しい方法 </caption> <tbody> <tr> <td> <pre class="eval"><span class="comment">// |nsCOMPtr| に |QuertyInterface| するやり方 (最良のやり方ではないですが)...</span>
+
+nsCOMPtr&lt;nsIFoo&gt; foo;
+
+nsresult rv = bar-&gt;QueryInterface(NS_GET_IID(nsIFoo), getter_AddRefs(foo));
+
+ <span class="comment">// または、あなたが [XP]COM をよく知っているプログラマ</span>
+ <span class="comment">// ならば、タイプセーフ版を使ってください...</span>
+nsresult rv = CallQueryInterface(bar, getter_AddRefs(foo));
+</pre> </td> </tr> </tbody>
+</table>
+<p><code>QueryInterface</code> はしばしば使われるので、<code>nsCOMPtr</code> には、それを呼び出すための特別に便利なものがあります。この便利なものは、タイプセーフで、これにより、<code>nsCOMPtr</code> が <code>QueryInterface</code> の結果から直接構築されます。正しい値からの構築は、構築後に代入するよりも効率的です。 この便利なものは、<a href="/ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A.2C_nsresult.2A_.29" title="ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A.2C_nsresult.2A_.29"><code>do_QueryInterface</code></a> 指示子です。<code>do_QueryInterface</code> を使うと、上記のサンプルはこのようになります。</p>
+<table> <caption><code>nsCOMPtr</code> への <code>QueryInterface</code> の仕方 </caption> <tbody> <tr> <td> <pre class="eval"><span class="comment">// |nsCOMPtr| へ |QueryInterface| するベストな方法...</span>
+
+nsresult rv;
+nsCOMPtr&lt;nsIFoo&gt; foo( <strong>do_QueryInterface(</strong>bar, &amp;rv<strong>)</strong> );
+
+ <span class="comment">// または、もし |nsResult| について気にしないのであれば</span>
+nsCOMPtr&lt;nsIFoo&gt; foo( <strong>do_QueryInterface(</strong>bar<strong>)</strong> );
+</pre> </td> </tr> </tbody>
+</table>
+<p><code>nsCOMPtr</code> は、嬉しいことに <code>AddRef</code> と <code>Release</code> を暗黙的に呼び出します。同じような方法は、<code>QueryInterface</code> には、拡張され<em>ません</em>。<code>nsCOMPtr</code> は、代入において、<code>do_QueryInterface</code> 指示子を使った明示的な許可がなければ、<code>QueryInterface</code> を実行しません。あなたは、もう隠れた問い合わせについて心配する必要はありません。しかしながら、もしあなたが問い合わせをする<em>べき</em>なのに、しなかった場合に注意してください。例えば、生のポインタを代入する場合で、C が代入を許可しているが <a href="/ja/XPCOM">XPCOM</a> は許可していない場合。<code>nsCOMPtr</code> は、<a href="/ja/Using_nsCOMPtr/Reference_Manual#Type_Safeguards" title="ja/Using_nsCOMPtr/Reference_Manual#Type_Safeguards">実行時にアサートする</a> でしょう。異なった型の <a href="/ja/XPCOM">XPCOM</a> インタフェースに代入する時にはいつでも、<code>do_QueryInterface</code> を使ってください。たとえ、その型がたまたま <code>nsCOMPtr</code> の基底型から派生していてもです。</p>
+<p> </p>
+<table> <caption>比較 6. <code>do_QueryInterface</code> が <a href="/ja/XPCOM">XPCOM</a> の型のエラーを防ぐ。 </caption> <tbody> <tr> <td> <pre class="eval">
+class nsIBar
+  : public nsIFoo ... { ... };
+
+nsIBar* p = ...;
+
+ <span class="comment">// C は、すべての |nsIBar*| が</span>
+ <span class="comment">// |nsIFoo*| であるとみなします。そのため、C は</span>
+ <span class="comment">// これを許可します...</span>
+nsCOMPtr&lt;nsIFoo&gt; <span class="warning">foo = p;</span>
+ <span class="comment">// ...たとえそれが [XP]COM の型の</span>
+ <span class="comment">// エラーだとしてもそうです。</span>
+</pre> </td> <td> <pre class="eval">
+class nsIBar
+  : public nsIFoo ... { ... };
+
+nsIBar* p = ...;
+
+
+
+ <span class="comment">// ここでは、型のエラーはありません...</span>
+nsCOMPtr&lt;nsIFoo&gt; foo( <strong>do_QueryInterface(</strong>p<strong>)</strong> );
+
+
+</pre> </td> </tr> </tbody>
+</table>
+<p>覚えておいてください。C の型のシステムと <a href="/ja/XPCOM">XPCOM</a> の型のシステムは、互いに独立しているものです。<a href="/ja/XPCOM">XPCOM</a> インタフェースは、C の抽象基底クラスとして表現されているため、C に違いを処理させたり、あるいはインタフェースの型の間を取り持つために C のキャストを使ったりしたくなるかもしれません。これは、間違いです。<a href="/ja/XPCOM">XPCOM</a> の型の間で許されているのは、<code>QueryInterface</code> を使うことだけです。上記の例では、C が <code>p</code> から引き出す <code>nsIFoo*</code> が <code>p-&gt;QueryInterface()</code> が返すものと同一のものであると仮定する理由はありません。</p>
+<p><a href="/ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_dont_AddRef.28_T.2A_.29.2CnsCOMPtr.3CT.3E_.3D_getter_AddRefs.28_T.2A_.29" title="ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_dont_AddRef.28_T.2A_.29.2CnsCOMPtr.3CT.3E_.3D_getter_AddRefs.28_T.2A_.29"><code>dont_AddRef</code></a> は、同じような指示子で、例えば、その関数の結果としてポインタを返す getter を呼んだなどの理由で、すでに <code>AddRef</code> を実行したポインタを代入する時に役に立ちます。</p>
+<table> <caption><code>dont_AddRef</code> の使用 </caption> <tbody> <tr> <td> <pre class="eval">
+nsCOMPtr&lt;nsIFoo&gt; foo( <strong>dont_AddRef(</strong>CreateFoo()<strong>)</strong> );
+ <span class="comment">// |CreateFoo| は、すべての望ましい getter が行うように、その結果を |AddRef| します。 </span></pre> </td> </tr> </tbody>
+</table>
+<h4 id="nsCOMPtr_.E3.81.8C.E3.81.97.E3.81.AA.E3.81.84.E3.81.93.E3.81.A8" name="nsCOMPtr_.E3.81.8C.E3.81.97.E3.81.AA.E3.81.84.E3.81.93.E3.81.A8"><code>nsCOMPtr</code> が<em>しない</em>こと</h4>
+<p><code>nsCOMPtr</code> は、所有する参照として振舞うために必要なすべてのことを行います。しかしながら、与えられた <code>nsCOMPtr</code> は、<em>他の</em>所有ポインタを作ることには協力しません。どうやって <code>nsCOMPtr</code> が<em>代入</em>される時に自動的にポインタを <code>AddRef</code> するかを学習した後、それが<em>参照</em>される時にも同じことをすると仮定するのは、自然です。この誤解を示すコード断片を載せます。</p>
+<table> <tbody> <tr> <td> <pre class="eval"><span class="comment">// |nsCOMPtr| に関する間違った仮定...</span>
+
+nsresult
+nsCacheRecord::GetFileSpec( nsIFileSpec** aFileSpecResult )
+ <span class="comment">/* ...呼び出し側の |nsFileSpec*| (呼び出し側がアドレスを設定します) に 私のメンバ変数の |mFileSpec| (|nsCOMPtr型|) のコピーが代入されます。 つまり、この関数は「getter」です。 覚えてください: 望ましい [XP]COM getter は、いつも結果に対して |AddRef| を実行します。 */</span>
+ {
+ <span class="comment">// ...</span>
+ *aFileSpec = mFileSpec;
+ <span class="warning"><span class="comment">// |nsCOMPtr| は、参照カウントに気をつけるべきです。いいですか?</span></span>
+ return NS_OK;
+ }
+</pre> </td> </tr> </tbody>
+</table>
+<p>明らかに、作者は (いくつかの疑問を持ちながらかもしれませんが)、<code>nsCOMPtr</code> つまり <code>mFileSpec</code> は、<code>*aFileSpec</code> への代入される時、自動的に <code>AddRef</code> を呼ぶと信じています。この場合は<em>違います</em>。<code>nsCOMPtr</code> は、<em>自分の</em>ため (だけ) に、自動的に <code>AddRef</code> と <code>Release</code> を呼び出します。その他のすべての状況において、それは、生の <a href="/ja/XPCOM">XPCOM</a> ポインタを置き換えるスロットとして設計されています。<code>nsCOMPtr</code> が生のポインタが必要とされているところで使われていたら、<code>nsCOMPtr</code> は自動的にそれを提供します。</p>
+<table> <tbody> <tr> <td> <pre class="eval"><span class="comment">// |nsCOMPtr| は、生のポインタが必要とされている場合は、それを提供します...</span>
+
+nsCOMPtr&lt;nsIFoo&gt; foo = ...;
+
+ <span class="comment">// 1. 生のポインタに代入</span>
+nsIFoo* raw_foo = foo;
+
+ <span class="comment">// 2. 別の |nsCOMPtr| に代入</span>
+nsCOMPtr&lt;nsIFoo&gt; foo2 = foo;
+
+ <span class="comment">// 3. パラメタとして</span>
+SetFoo(foo);
+
+ <span class="comment">// 4. |if| 式の中で値をテスト</span>
+ <span class="comment">// 5. メンバ関数の呼び出し</span>
+if ( foo )
+ foo-&gt;DoSomething();
+</pre> </td> </tr> </tbody>
+</table>
+<p>これらすべての場合において、かなり正確に同じコードが実行されます (2 番目のケースは、少し違いますが、意図は同じです)。それぞれの場合において、あなたは本質的に自分の目的のために生のポインタの値を取り出しています。もし <code>nsCOMPtr</code> が値に対して、その都度 <code>AddRef</code> を実行すると、4 番目のケースと 5 番目のケースではあきらかにいつもリークを作り出してしまいます。ケース 3 の <code>SetFoo</code> は、場合によって、二つの異なった書き方で書かれる必要があります。それは、<code>nsCOMPtr</code> が与えられた場合は、値に対してすでに <code>AddRef</code> が実行されていることが分かり、そして生のポインタが与えられた場合、値に対して <code>AddRef</code> は実行されていないことがわかるためです。実際、矛盾はこれらよりもっと深くまで広がります。これらすべてのケースは、「出力」に対して自動的に <code>AddRef</code> を実行すると、<code>nsCOMPtr</code> と生のポインタがクライアントの視点から見て異なる振舞いをすることになるということを示しています。同じように振舞うようにさせるのが目的であり、そのため <code>nsCOMPtr</code> は、置き換えのスロットになりうるのです(自分の「所有権」について管理することを守らせることにより)。</p>
+<p>あなたが今知ったことから、ルールは明らかです。上述したように、そうしないように指示しない限り、<code>nsCOMPtr</code> は、<em>代入</em>される時に <code>AddRef</code> を実行します。<code>nsCOMPtr</code> は、<em>参照</em>される時は何もしません。</p>
+<h4 id=".E3.81.A9.E3.81.93.E3.81.A7nsCOMPtr.E3.82.92.E4.BD.BF.E3.81.86.E3.81.B9.E3.81.8D.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F" name=".E3.81.A9.E3.81.93.E3.81.A7nsCOMPtr.E3.82.92.E4.BD.BF.E3.81.86.E3.81.B9.E3.81.8D.E3.81.A7.E3.81.97.E3.82.87.E3.81.86.E3.81.8B.EF.BC.9F">どこで<code>nsCOMPtr</code>を使うべきでしょうか?</h4>
+<p>インタフェースポインタを所有する参照として使うところでは、どこでも <code>nsCOMPtr</code> を使うべきです。つまり、あなたがそれに対して <code>AddRef</code> と <code>Release</code> を呼び出す所です。setter を単純にする場合、そしてコンストラクタ、デストラクタ、代入演算子を除去する場合、<code>nsCOMPtr</code> をメンバ変数として使うべきです。<code>QueryInterface</code> の呼び出しをおおむね快適にし、エラー処理を避けるための複雑なロジックを除去する場合、<code>nsCOMPtr</code> をスタック上で使うべきです。</p>
+<h4 id=".E3.81.A9.E3.81.93.E3.81.A7nsCOMPtr.E3.82.92.E4.BD.BF.E3.81.86.E3.81.B9.E3.81.8D.E3.81.A7.E3.81.AF.E3.81.AA.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F" name=".E3.81.A9.E3.81.93.E3.81.A7nsCOMPtr.E3.82.92.E4.BD.BF.E3.81.86.E3.81.B9.E3.81.8D.E3.81.A7.E3.81.AF.E3.81.AA.E3.81.84.E3.81.A7.E3.81.99.E3.81.8B.EF.BC.9F">どこで<code>nsCOMPtr</code>を使うべきではないですか?</h4>
+<p>所有する参照を必要としないところでは、<code>nsCOMPtr</code>を使わないでください。<a href="/ja/XPCOM_ownership_guidelines" title="ja/XPCOM_ownership_guidelines">COM の所有のガイドライン</a> を見てください。<code>nsCOMPtr</code> は <a href="/ja/XPCOM">XPCOM</a> インタフェースとともに使われるように設計されています。そのため、<a href="/ja/Using_nsCOMPtr/Getting_Started_Guide#.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.81.A7.E3.81.AA.E3.81.84.E3.82.AF.E3.83.A9.E3.82.B9.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE_nsCOMPtr" title="ja/Using_nsCOMPtr/Getting_Started_Guide#.E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.81.A7.E3.81.AA.E3.81.84.E3.82.AF.E3.83.A9.E3.82.B9.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE_nsCOMPtr">以下</a> に示すように特定の例外を伴うインタフェースでないものと一緒には使わないでください。<a href="/ja/XPCOM">XPCOM</a> の中で <code>nsCOMPtr</code> を使わないでください。それらをプレーンな古い C コード上で使わないでください。もちろん、<code>nsCOMPtr</code>は C だけの構築物です。<code>nsCOMPtr</code> を決して <a href="/ja/Using_nsCOMPtr/Reference_Manual#.E3.82.AD.E3.83.A3.E3.82.B9.E3.83.88" title="ja/Using_nsCOMPtr/Reference_Manual#.E3.82.AD.E3.83.A3.E3.82.B9.E3.83.88">キャストしないで</a> ください。それをすると、ほとんどリークが保証されたようなものです。</p>
+<h4 id=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.81.A7.E3.81.AA.E3.81.84.E3.82.AF.E3.83.A9.E3.82.B9.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE_nsCOMPtr" name=".E3.82.A4.E3.83.B3.E3.82.BF.E3.83.95.E3.82.A7.E3.83.BC.E3.82.B9.E3.81.A7.E3.81.AA.E3.81.84.E3.82.AF.E3.83.A9.E3.82.B9.E3.81.AE.E3.81.9F.E3.82.81.E3.81.AE_nsCOMPtr">インタフェースでないクラスのための <code>nsCOMPtr</code></h4>
+<p>適切にフォーマットした解答を追加する予定です。当面の間、詳細全体は <a class="link-news" href="news://news.mozilla.org/scc-3E1526.12182423042001@h-204-29-187-152.netscape.com">この news 投稿</a> で利用可能です。</p>
+<h4 id=".E9.96.A2.E6.95.B0.E8.AD.98.E5.88.A5.E5.AD.90.E5.86.85.E3.81.AE_nsCOMPtr" name=".E9.96.A2.E6.95.B0.E8.AD.98.E5.88.A5.E5.AD.90.E5.86.85.E3.81.AE_nsCOMPtr">関数識別子内の <code>nsCOMPtr</code></h4>
+<p>一般的に、XPCOM (つまり、「スクリプタブル」) 関数の識別子内で、<code>nsCOMPtr</code> を使いたいとは思わないでしょう。<code>nsCOMPtr</code> は現在 IDL により直接サポートはされていません。しかし、あなたは時々スクリプタブルでない関数内で <code>nsCOMPtr</code> を使いたくなるかもしれません。</p>
+<h5 id="nsCOMPtr.3CT.3E_f.28.29_nsCOMPtr_.E3.82.92.E3.83.AA.E3.82.BF.E3.83.BC.E3.83.B3.E5.80.A4.E3.81.A8.E3.81.97.E3.81.A6.E8.BF.94.E3.81.95.E3.81.AA.E3.81.84" name="nsCOMPtr.3CT.3E_f.28.29_nsCOMPtr_.E3.82.92.E3.83.AA.E3.82.BF.E3.83.BC.E3.83.B3.E5.80.A4.E3.81.A8.E3.81.97.E3.81.A6.E8.BF.94.E3.81.95.E3.81.AA.E3.81.84"><code>nsCOMPtr&lt;T&gt; f()</code> <code>nsCOMPtr</code> をリターン値として返さない</h5>
+<p>この方法は危険です。<code>AddRef</code> されたポインタを関数のリターン値として返すことは、ほとんどどの様な形で行なっても、リークや無効なポインタなどの、かなりひどい潜在的エラーに行きつきます。 <code>nsCOMPtr</code> をリターンすることは (クライアントがそれに所有権を与えたことをクライアントに教えるので) よい考えのように見えますが、これは無効なポインタを引き起こします。以下のコードを考えてみてください。</p>
+<table> <tbody> <tr> <td> <pre class="eval"><span class="comment">// |nsCOMPtr|を返してはいけません...</span>
+nsCOMPtr&lt;nsIFoo&gt; CreateFoo();
+<span class="comment">// ...</span>
+
+<span class="warning">nsIFoo* myFoo = CreateFoo();</span> <span class="comment">// おっと: |myFoo| はもう無効!</span>
+ <span class="comment">// |CreateFoo| は |nsCOMPtr| を返すけれど、</span>
+ <span class="comment">// |nsCOMPtr| はこの代入のあと正しく自動的に |Release| する</span>
+ <span class="comment">// 今 |myFoo| は削除されたオブジェクト</span>
+ <span class="comment">// を参照している。</span>
+</pre> </td> </tr> </tbody>
+</table>
+<p><code>already_AddRefed&lt;T&gt;</code> をリターンすることにより、呼び出し側に、この危険なしにそれらに所有権を与えたことを通知できます (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=59212" title="FIXED: leaks with nsCOMPtr&lt;nsIAtom> foo = NS_NewAtom(...)">バグ 59212</a>参照)。<code>nsCOMPtr</code> は、<code>already_AddRefed</code> された値は、<code>AddRef</code> すべきではない事を知るようになります。</p>
+<table> <tbody> <tr> <td> <pre class="eval"><span class="comment">// 好ましい方法: もし、ポインタを返す必要があるなら、|already_AddRefed| を使うこと...</span>
+already_AddRefed&lt;nsIFoo&gt; CreateFoo();
+<span class="comment">// ...</span>
+
+nsIFoo* myFoo1 = CreateFoo(); <span class="comment">// 無効にならない</span>
+nsCOMPtr&lt;nsIFoo&gt; myFoo2( CreateFoo() ); <span class="comment">// リークしない</span>
+nsCOMPtr&lt;nsIFoo&gt; myFoo3( dont_AddRef(CreateFoo()) ); <span class="comment">// 冗長だが認められており正しい</span>
+</pre> </td> </tr> </tbody>
+</table>
+<p>これを、既に <code>AddRef</code> した生ポインタをリターンすることを原因とする、最も頻繁に起こりうるリークと比べてみてください。</p>
+<table> <tbody> <tr> <td> <pre class="eval"><span class="comment">// 生のポインタを返さないでください、リークを誘発します...</span>
+nsIFoo* CreateFoo(); <span class="comment">// |AddRef| されたポインタを返してください</span>
+<span class="comment">// ...</span>
+
+<span class="warning">nsCOMPtr&lt;nsIFoo&gt; myFoo = CreateFoo();</span> <span class="comment">// おっと: リークだ</span>
+nsCOMPtr&lt;nsIFoo&gt; myFoo( <span class="notice">dont_AddRef(</span>CreateFoo()<span class="notice">)</span> );
+ <span class="comment">// |CreateFoo| その結果を既に |AddRef| しているため、私たちは |nsCOMPtr|</span>
+ <span class="comment">// をそうしないように覚えておかなくてはなりません。それは忘れやすいことです。</span>
+ <span class="comment">// 関数の戻り値としてポインタを返さないか、さもなければ上記のように</span>
+ <span class="comment">// |already_AddRefed&lt;T&gt;| を返すかしてあらかじめ防いでください。</span>
+</pre> </td> </tr> </tbody>
+</table>
+<p> </p>
+<h5 id="void_f.28_nsCOMPtr.3CT.3E_.29_nsCOMPtr.E3.82.92.E5.80.A4.E6.B8.A1.E3.81.97.E3.81.97.E3.81.AA.E3.81.84" name="void_f.28_nsCOMPtr.3CT.3E_.29_nsCOMPtr.E3.82.92.E5.80.A4.E6.B8.A1.E3.81.97.E3.81.97.E3.81.AA.E3.81.84"><code>void f( nsCOMPtr&lt;T&gt; )</code> <code>nsCOMPtr</code>を値渡ししない</h5>
+<p>この方法は役に立たないどころか、実害があります。引き数は関数コールと同じ生存期間を保証されるので、引き数を <code>AddRef</code> する必要はありません。関数コールを超えて生き残る構造体のメンバに値を格納する時のみ、<code>AddRef</code> が必要になります。これは、関数の引き数ではなく、構造体の適切なメンバが <code>nsCOMPtr</code> であるべきことを意味します。更にこの書き方は、呼び出し側に、単に関数をコールするために <code>nsCOMPtr</code> が必要なのではないかと思わせ、混乱させます。</p>
+<h5 id="void_f.28_const_nsCOMPtr.3CT.3E_.29_nsCOMPtr_.E3.82.92const_.E5.8F.82.E7.85.A7.E6.B8.A1.E3.81.97.E3.81.97.E3.81.AA.E3.81.84" name="void_f.28_const_nsCOMPtr.3CT.3E&amp;_.29_nsCOMPtr_.E3.82.92const_.E5.8F.82.E7.85.A7.E6.B8.A1.E3.81.97.E3.81.97.E3.81.AA.E3.81.84"><code>void f( const nsCOMPtr&lt;T&gt;&amp; )</code> <code>nsCOMPtr</code> を<code>const</code> 参照渡ししない</h5>
+<p>上の書き方と全く同じで、この方法は役に立たないどころか、実害があります。もし呼び出し側が生ポインタを渡した場合には、<code>nsCOMPtr</code> を値渡しするのと同じ良く無いことが起こります。</p>
+<h5 id="void_f.28_nsCOMPtr.3CT.3E.2A_.29_.E3.81.A7.E3.81.8D.E3.82.8C.E3.81.B0_nsCOMPtr_.E3.81.AE.E3.82.A2.E3.83.89.E3.83.AC.E3.82.B9.E6.B8.A1.E3.81.97.E3.81.AF.E9.81.BF.E3.81.91.E3.82.8B" name="void_f.28_nsCOMPtr.3CT.3E.2A_.29_.E3.81.A7.E3.81.8D.E3.82.8C.E3.81.B0_nsCOMPtr_.E3.81.AE.E3.82.A2.E3.83.89.E3.83.AC.E3.82.B9.E6.B8.A1.E3.81.97.E3.81.AF.E9.81.BF.E3.81.91.E3.82.8B"><code>void f( nsCOMPtr&lt;T&gt;* )</code> できれば <code>nsCOMPtr</code> のアドレス渡しは避ける</h5>
+<p>この方法は、呼び出し側に、それが <code>nsCOMPtr</code> を使用することと、ちょっとした余分な仕事を要求します。と言うのは、<code>nsCOMPtr</code> の <code>operator&amp;</code> は (<a href="/ja/Using_nsCOMPtr/Reference_Manual#.E3.82.AD.E3.83.A3.E3.82.B9.E3.83.88" title="ja/Using_nsCOMPtr/Reference_Manual#.E3.82.AD.E3.83.A3.E3.82.B9.E3.83.88">キャストによるリーク</a> を防ぐために: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=59414" title="FIXED: misuse of nsCOMPtr::operator&amp;">バグ 59414</a> 参照) <code>private</code> だからです。この方法は、「入出力」引き数として宣言する事により、以下のように可能ですが、<code>nsCOMPtr</code> を参照渡しする方が好ましいでしょう。</p>
+<table> <tbody> <tr> <td> <pre class="eval"><span class="comment">// |nsCOMPtr| のポインタ渡しは余計な仕事を増やすk...</span>
+void f( nsCOMPtr&lt;nsIFoo&gt;* );
+<span class="comment">// ...</span>
+
+nsCOMPtr&lt;nsIFoo&gt; myFoo = ...;
+
+f( <span class="notice">address_of(</span>myFoo<span class="notice">)</span> );
+</pre> </td> </tr> </tbody>
+</table>
+<h5 id="void_f.28_nsCOMPtr.3CT.3E_.29_.E3.81.A1.E3.82.83.E3.82.93.E3.81.A8nsCOMPtr.E3.82.92.E3.80.8C.E5.85.A5.E5.87.BA.E5.8A.9B.E3.80.8D.E5.BC.95.E3.81.8D.E6.95.B0.E3.81.A8.E3.81.97.E3.81.A6.E5.8F.82.E7.85.A7.E6.B8.A1.E3.81.97.E3.81.99.E3.82.8B" name="void_f.28_nsCOMPtr.3CT.3E&amp;_.29_.E3.81.A1.E3.82.83.E3.82.93.E3.81.A8nsCOMPtr.E3.82.92.E3.80.8C.E5.85.A5.E5.87.BA.E5.8A.9B.E3.80.8D.E5.BC.95.E3.81.8D.E6.95.B0.E3.81.A8.E3.81.97.E3.81.A6.E5.8F.82.E7.85.A7.E6.B8.A1.E3.81.97.E3.81.99.E3.82.8B"><code>void f( nsCOMPtr&lt;T&gt;&amp; )</code> ちゃんと<code>nsCOMPtr</code>を「入出力」引き数として参照渡しする</h5>
+<p>これは「入出力」引き数を提供するために好ましい方法です。もし代りに生ポインタを使った場合、関数内部では、入力値として呼び出し側がどの所有する関係を持っているかが、分らなくなります。結果として、新しい値を代入する前に <code>Release</code> すべきかどうかが分らなくなります。引き数を <code>nsCOMPtr&amp;</code>、として宣言する事により、関係が明確になります。</p>
+<h3 id=".E8.A6.81.E7.B4.84" name=".E8.A6.81.E7.B4.84">要約</h3>
+<p><code>nsCOMPtr</code> は、所有する参照です。それが指すものはなんであれ <code>AddRef</code> され、<code>nsCOMPtr</code> をその「所有者」の一つとしてカウントします。<code>nsCOMPtr</code> は、<code>nsCOMPtr</code> が違うオブジェクトを指すために解放されるか、<code>nsCOMPtr</code> がスコープを抜けようとしているためかいずれにしろ、解放される前に必ず <code>Release</code> を呼び出します。新しい値が <code>nsCOMPtr</code> に割り当てられる時は、<code>nsCOMPtr</code> は、いつも自動的に、もし古い参照があれば、それを <code>Release</code> し、(そしてあなたがすでに実行済であると明示しなければ) 新しい方を <code>AddRef</code> します。</p>
+<p>あなたは<code>nsCOMPtr</code>を厳密にほとんどすべての場合で生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタとして使うことができます [<a href="#Comparison_5">|比較 5</a> で示すようなコンパイラの問題にも、注意しなければいけないですが]。あなたは、それを通じて明示的に <code>AddRef</code> や <code>Release</code> を呼ばなくてよいです。また、コンパイラもそれを許しません。あなたが <code>nsCOMPtr</code> を変更しなければ使うところのできない唯一の場所は、生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタが`出力'引数である場所です。この場合、あなたは <code>nsCOMPtr</code> を <a href="/ja/Using_nsCOMPtr/Reference_Manual#.60Out.27_Parameters:_getter_AddRefs" title="ja/Using_nsCOMPtr/Reference_Manual#.60Out.27_Parameters:_getter_AddRefs"><code>getter_AddRefs</code></a> でラップします [<a href="#Comparison 4">比較 4</a>を見てください]。</p>
+<p><code>nsCOMPtr</code> に代入した時に、(生の <a href="/ja/XPCOM">XPCOM</a> インタフェースポインタであっても <code>nsCOMPtr</code> であっても、) 通常は、追加の指示子なしに単にもう一つのポインタを渡すだけです [例えば、<a href="#Comparison_1">比較 1</a> の <code>nsCOMPtr</code> の方を見てください]。上述したように、指示子なしに、<code>nsCOMPtr</code> は、もし古い対象があれば、それに対して、<code>Release</code> を呼び出し、そして新しい方に対して、<code>AddRef</code> を呼び出します。このようにするのが適切なのは、新しい参照に対して責任をとるために、あなたが代入したものに対してまだ <code>AddRef</code> を実行していない時です。これは、あなたが取得する関数を呼び出したのでは<em>ない</em>ポインタを代入する時によくある場合です。例えば、引き数として渡されたものや、構造体から抜きだしたものなどです。</p>
+<p>あなたは、<code>nsCOMPtr</code> に、新しい値を <a href="/ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_dont_AddRef.28_T.2A_.29.2CnsCOMPtr.3CT.3E_.3D_getter_AddRefs.28_T.2A_.29" title="ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_dont_AddRef.28_T.2A_.29.2CnsCOMPtr.3CT.3E_.3D_getter_AddRefs.28_T.2A_.29"><code>dont_AddRef</code></a> でラップすることにより、代入において新しい値を <code>AddRef</code> する必要がないことを伝えることができます。例えば、すべての望ましい <a href="/ja/XPCOM">XPCOM</a> getter のように、あなたのためにすでに <code>AddRef</code> を呼び出している関数から新しい値を得た場合に、これを行ってください。</p>
+<p>あなたは、ポインタを異なったインタフェース型に代入してはいけません。あなたは、まず正しい型に問い合わせる必要があります [例えば、<a href="#Comparison_6">比較 6</a> と周辺の議論を見てください]。<code>nsCOMPtr</code> は、決して <code>QueryInterface</code> を暗黙的に呼び出し<em>ません</em>。つまり、あなたは自分でそれを呼ばなければいけません。あるいは、明示的に <a href="/ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A.2C_nsresult.2A_.29" title="ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A.2C_nsresult.2A_.29"><code>do_QueryInterface</code></a> を使って、<code>nsCOMPtr</code> にそれを呼ぶように依頼しなければいけません。<code>do_QueryInterface</code> 指示子は、あなたが代入の一部として問い合わせをするのを許します。このよりよい便利な機構により、構築してから正しい値を後で代入するのではなく、(代入での) 右の値から <code>nsCOMPtr</code> を直接構築されます。構築に続いて代入するより、構築だけで済ませる方が効率的です。合理的である限り、代入と同時に構築する方を選んでください。<code>AddRef</code> したポインタを返す関数に対して、<code>do_QueryInterface</code> を適用しないように注意してください。[説明のために <a href="/ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_.2F.2A_call_QueryInterface_but_don.27t_AddRef_.2A.2F" title="ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_.2F.2A_call_QueryInterface_but_don.27t_AddRef_.2A.2F">この短いセクション</a> を見てください。]</p>
+<p>より詳しいことについては、<a href="/ja/Using_nsCOMPtr/Reference_Manual" title="ja/Using_nsCOMPtr/Reference_Manual">リファレンスマニュアル</a> に続きます。</p>
+
+<p> </p>
diff --git a/files/ja/mozilla/tech/xpcom/using_nscomptr/index.html b/files/ja/mozilla/tech/xpcom/using_nscomptr/index.html
new file mode 100644
index 0000000000..5d821dfeca
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/using_nscomptr/index.html
@@ -0,0 +1,24 @@
+---
+title: Using nsCOMPtr
+slug: Mozilla/Tech/XPCOM/Using_nsCOMPtr
+tags:
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/Using_nsCOMPtr
+---
+<p>このドキュメントは、<code>nsCOMPtr</code> について書かれたすべてを集めたものです。もしあなたが <code>nsCOMPtr</code> について疑問があり、このドキュメントでは分からないのであれば、 おそらくそれに答えられるドキュメントはないでしょう。<a class="external" href="news:mozilla.dev.tech.xpcom">XPCOM ニュースグループ</a>、または他のベテランの <code>nsCOMPtr</code> ユーザに尋ねる、あるいは実験して答えを見つける、などの別の手段で答えを得るしかありません。 </p><p>もしあなたがまだ <code>nsCOMPtr</code> 使ったことがないのであれば、ここは始めるのに適した場所です。そのまま読み進んでください。いつ止めるかは、あなた次第です。<code>nsCOMPtr</code> をしばらく使った後で、未知の領域に到達したり、コンパイルエラーになったりしたら、このドキュメントに戻ってきて、<a href="ja/Using_nsCOMPtr/Reference_Manual">リファレンスマニュアル</a>、あるいは <a href="ja/Using_nsCOMPtr/Frequently_Asked_Questions">FAQ</a> から助けを得たいと思うでしょう。
+</p>
+<h2 id="目次"> 目次 </h2>
+<ol><li> <a href="ja/Using_nsCOMPtr/Status%2c_Recent_Changes%2c_and_Plans">状況、最近の更新と計画</a>
+</li><li> <a href="ja/Using_nsCOMPtr/Getting_Started_Guide">スタートガイド</a>
+</li><li> <a href="ja/Using_nsCOMPtr/Reference_Manual">リファレンスマニュアル</a>
+</li><li> <a href="ja/Using_nsCOMPtr/Frequently_Asked_Questions">よく聞かれる質問</a>
+</li></ol>
+<div class="originaldocinfo">
+<h2 id="原文書の情報"> 原文書の情報 </h2>
+<ul><li> 著者: <a class="link-mailto" href="mailto:scc@mozilla.org">Scott Collins</a>
+</li><li> 最終更新日: December 11, 2001
+</li><li> 著作権: Copyright © 1999, 2000 by the Mozilla organization; use is subject to the <a class="external" href="http://www.mozilla.org/MPL/">MPL</a>. Portions of this content are © 1998–2007 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">詳細</a>
+</li></ul>
+</div>
+<div class="noinclude">
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/using_nscomptr/reference_manual/index.html b/files/ja/mozilla/tech/xpcom/using_nscomptr/reference_manual/index.html
new file mode 100644
index 0000000000..c5c82f9fdd
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/using_nscomptr/reference_manual/index.html
@@ -0,0 +1,523 @@
+---
+title: Reference Manual
+slug: Mozilla/Tech/XPCOM/Using_nsCOMPtr/Reference_Manual
+tags:
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/Using_nsCOMPtr/Reference_Manual
+---
+<p>
+</p><p>このセクションは、あなたが、すでに <code>nsCOMPtr</code> に慣れ親しんでいるけれども、もっと詳細な事柄を知りたい場合に役立つでしょう。もし、まだ <code>nsCOMPtr</code> を前に使っていないのであれば、まず <a href="ja/Using_nsCOMPtr/Getting_Started_Guide">スタートガイド</a> を読みたいかもしれません。もし、壊れたビルドを直そうとしているのであれば、<a href="ja/Using_nsCOMPtr/Frequently_Asked_Questions">FAQ</a> によって、もっと素早く答えを得られるかもしれません。
+</p>
+<h3 id=".E5.9F.BA.E6.9C.AC" name=".E5.9F.BA.E6.9C.AC"> 基本 </h3>
+<h4 id=".E8.A8.AD.E8.A8.88" name=".E8.A8.AD.E8.A8.88"> 設計 </h4>
+<p><code>nsCOMPtr</code> は、所有する参照として使われる所で、生の [XP]COM インタフェースポインタを完全に置き換えるように設計されました。生の [XP]COM インタフェースポインタを使うことができるところであれば、ほとんどの場合、<code>nsCOMPtr</code> を使うことができるはずです。<code>nsCOMPtr</code>は、生の [XP]COM インタフェースポインタと正確な同じ大きさと形です。それは、容量を食いすぎることもなく、メンバ変数として使うことができます。
+</p><p>所有する参照のほとんどの作業は、<code>nsCOMPtr</code> のコンストラクタ、デストラクタと代入演算子で行われます。あなたが(代入や初期化により) <code>nsCOMPtr</code> を異なる [XP]COM オブジェクトで「指す」場合、もし古い値があれば、それを <code>Release</code> しなければなりません。そして、新しい値を <code>AddRef</code> しなければなりません。自分のデストラクタ実行時には、同様に <code>Release</code> しなければなりません。<code>nsCOMPtr</code> は、もしあなたがいつも正しいことを覚えているのであれば、ちょうどあなたがしていた作業しかしません。
+</p>
+<h4 id=".E5.AE.89.E5.85.A8.E6.80.A7.E3.81.AE.E7.89.B9.E5.BE.B4" name=".E5.AE.89.E5.85.A8.E6.80.A7.E3.81.AE.E7.89.B9.E5.BE.B4"> 安全性の特徴 </h4>
+<h5 id=".E5.9E.8B.E3.81.AE.E4.BF.9D.E8.AD.B7.E6.89.8B.E6.AE.B5" name=".E5.9E.8B.E3.81.AE.E4.BF.9D.E8.AD.B7.E6.89.8B.E6.AE.B5"> 型の保護手段 </h5>
+<p>元の型のための正しい [XP]COM インタフェースポインタを保持しているのは、<code>nsCOMPtr</code> の不変性です。例えば、<code>nsCOMPtr&lt;nsIFoo&gt;</code> は、[XP]COM オブジェクトに <code>nsIFoo</code> インタフェースを問い合わせる時に、code&gt;QueryInterface&lt;/code&gt; によって返されるポインタを常に保持しています。デバッグビルドでは、もし代入時に <code>QueryInterface</code> を呼ばずに、この不変性を覆すと、<code>nsCOMPtr</code> は、間違った代入として実行時にアサートするでしょう。
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval"><span class="comment">// 二つの無関係なインタフェース |nsIFoo| と |nsIBar| があるものとします...</span>
+nsIBar* bar = ...;
+<span class="comment">// ...</span>
+
+<span class="warning">nsCOMPtr&lt;nsIFoo&gt; foo = bar;</span>
+ <span class="comment">// NS_ASSERTION: "QueryInterface needed"</span>
+
+ <span class="comment">// ...あなたは、この行をコンパイルできるとみなすかもしれませんが</span>
+ <span class="comment">// (キャストでもそうです。なぜなら型が C に関係づけられているからです)</span>
+</pre>
+</td></tr></tbody></table>
+<p>この不変性は、<code>nsCOMPtr&lt;nsISupports&gt;</code> では、緩められます。<code>nsISupports*</code>(あるいは<code>void*</code>)のように、人々は一般的に<code>nsCOMPtr&lt;nsISupports&gt;</code> を「任意の [XP]COM インタフェース」とみなして使います。もし実際の型を気にしないようなオブジェクトに対して、<code>nsCOMPtr</code> が [XP]COM として正しい <code>nsISupports</code> に <code>QueryInterface</code> することを強制するのであれば、煩わしいかもしれません。
+</p>
+<h5 id="NULL_.E9.96.93.E6.8E.A5.E5.8F.82.E7.85.A7.E3.81.AE.E4.BF.9D.E8.AD.B7.E6.89.8B.E6.AE.B5" name="NULL_.E9.96.93.E6.8E.A5.E5.8F.82.E7.85.A7.E3.81.AE.E4.BF.9D.E8.AD.B7.E6.89.8B.E6.AE.B5"> <code>NULL</code> 間接参照の保護手段 </h5>
+<p>もし中が空の時に間接参照しようとすると、<code>nsCOMPtr</code> は、実行時にアサートします。例えば、
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval">nsCOMPtr&lt;nsIFoo&gt; foo;
+ <span class="comment">// 注: デフォルトでは、|0| に初期化されます。</span>
+
+<span class="warning">foo-&gt;DoSomething();</span>
+ <span class="comment">// NS_PRECONDITION: "You can't dereference a NULL nsCOMPtr with operator-&gt;()"</span>
+</pre>
+</td></tr></tbody></table>
+<p>同様の事前条件が <code>operator*</code> のために、介在します。
+</p>
+<h5 id=".E5.8F.82.E7.85.A7.E3.82.AB.E3.82.A6.E3.83.B3.E3.83.88.E3.81.AE.E4.BF.9D.E8.AD.B7.E6.89.8B.E6.AE.B5" name=".E5.8F.82.E7.85.A7.E3.82.AB.E3.82.A6.E3.83.B3.E3.83.88.E3.81.AE.E4.BF.9D.E8.AD.B7.E6.89.8B.E6.AE.B5"> 参照カウントの保護手段 </h5>
+<p><code>nsCOMPtr</code> から元の生のポインタを取り出すすべての操作に対して、安全な特徴を実装するための C の別のトリックを使います。返ってきたポインタに対して、<code>AddRef</code>、<code>Release</code>、<code>delete</code>を実行することができません。
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval">nsCOMPtr&lt;nsIFoo&gt; foo = ...;
+
+<span class="warning">foo-&gt;AddRef();</span> <span class="comment">// エラー: |AddRef| はプライベートです。</span>
+<span class="warning">delete foo.get();</span> <span class="comment">// エラー: |operator delete| はプライベートです。</span>
+<span class="warning">NS_RELEASE(foo);</span> <span class="comment">// エラー: |Release| はプライベートです。</span>
+</pre>
+</td></tr></tbody></table>
+<p>もちろん、<code>nsCOMPtr</code> によって提供される安全性に関する最も重要な特徴は、それが適切な時期に自動的に <code>AddRef</code> と <code>Release</code> を実行することです。
+</p>
+<h4 id=".E3.82.AD.E3.83.A3.E3.82.B9.E3.83.88" name=".E3.82.AD.E3.83.A3.E3.82.B9.E3.83.88"> キャスト </h4>
+<p><code>nsCOMPtr</code> では、旧式の C のキャストを使わないでください。旧式のキャストは、たとえそれが正しくないとしても、コンパイルできることが保障されています。旧式のキャストは、もし変換が定義されていないのであれば、<code>reinterpret_cast</code> と同じものにしてしまいます。そのようなキャストは、<code>nsCOMPtr</code> の機構を容易にバイパスしてしまい、リークの発生、型の不一致、その他の不幸な出来事を招きます。
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval"><span class="comment">// 旧式の C のキャストが |nsCOMPtr| 機構をバイパスし、リークを発生させる...</span>
+
+nsresult rv;
+nsCOMPtr&lt;nsIFoo&gt; foo = ...;
+
+<span class="comment">// ...</span>
+rv = GetFoo( <span class="warning">(nsIFoo**)&amp;foo</span> );
+rv = GetFoo( <span class="warning">&amp;(nsIFoo*)foo</span> );
+ <span class="comment">// もちろん、これらはコンパイルできます。でもリークしてしまいます。</span>
+</pre>
+</td></tr></tbody></table>
+<p>これを防ぐのを助けるために、上記のように <code>operator&amp;</code> を <code>private</code> にすることにより、最初の形を不法とすることを試みます。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=59414" title="FIXED: misuse of nsCOMPtr::operator&amp;">バグ 59414</a> を参照してまださい。
+</p>
+<h4 id=".E5.AE.9F.E8.A3.85.E3.81.AE.E8.A9.B3.E7.B4.B0.E3.81.A8.E3.83.87.E3.83.90.E3.83.83.E3.82.B0.E6.A9.9F.E6.A7.8B" name=".E5.AE.9F.E8.A3.85.E3.81.AE.E8.A9.B3.E7.B4.B0.E3.81.A8.E3.83.87.E3.83.90.E3.83.83.E3.82.B0.E6.A9.9F.E6.A7.8B"> 実装の詳細とデバッグ機構 </h4>
+<p><code>nsCOMPtr</code> はクラスですが、virtual なメソッドを持っていません。つまり、vtable または vptr を持っていません。キーとなるいくつかのルーチンが共通の非テンプレートの基底クラスに分解されるので、実際の元のポインタは、<code>nsISupports*</code> として保存されます (ただしデバッグビルドで <code>NSCAP_FEATURE_DEBUG_PTR_TYPES</code> がオンになっている場合は除きます)。それは、これらの分解されたルーチンのために、<code>nsCOMPtr</code> のユーザが XPCOM ライブラリとリンクしなければいけないからです。
+</p><p><code>NSCAP_FEATURE_DEBUG_PTR_TYPES</code> がオンになっている時、<code>nsISupports*</code> 型の変数に元のポインタを保持する代わりに、<code>nsCOMPtr</code> は、元の型に適合するポインタに保持します。これにより、ソースレベルのデバッガがより簡単にポインタを「追跡」できるようになります。しかしながら、基底クラスに分解されるルーチンは、今やテンプレート特有のインラインコードとなります。分解される基底クラスはありません。これは、すべてのアプリケーションが <code>NSCAP_FEATURE_DEBUG_PTR_TYPES</code> について同じ設定でコンパイルされなければならないことを意味します。そうでないと、いくつかの部分では基底クラスを期待し、他の部分ではそうでないことを期待することになります。アプリケーションは、リンクできないでしょう。
+</p>
+<h4 id=".E3.83.A6.E3.83.8B.E3.83.83.E3.83.88.E3.83.86.E3.82.B9.E3.83.88" name=".E3.83.A6.E3.83.8B.E3.83.83.E3.83.88.E3.83.86.E3.82.B9.E3.83.88"> ユニットテスト </h4>
+<p><code>nsCOMPtr</code>のためのユニットテストは、このファイルにあります。
+</p>
+<ul><li> <code><a href="https://dxr.mozilla.org/mozilla-central/source//xpcom/tests/TestCOMPtr.cpp" rel="custom">/xpcom/tests/TestCOMPtr.cpp</a></code>
+</li></ul>
+<h3 id=".E5.88.9D.E6.9C.9F.E5.8C.96.E3.81.A8.E4.BB.A3.E5.85.A5" name=".E5.88.9D.E6.9C.9F.E5.8C.96.E3.81.A8.E4.BB.A3.E5.85.A5"> 初期化と代入 </h3>
+<h4 id=".E7.B5.84.E3.81.BF.E8.BE.BC.E3.81.BF.E5.BD.A2.E5.BC.8F" name=".E7.B5.84.E3.81.BF.E8.BE.BC.E3.81.BF.E5.BD.A2.E5.BC.8F"> 組み込み形式 </h4>
+<p><code>nsCOMPtr</code> への代入や初期化は、簡単に理解できます。<code>nsCOMPtr</code> は、その古い値がもしあれば <code>Release</code> し、そして新しい値を代入し、<code>AddRef</code> を呼び出し、および/または、あなたが直接「注釈」することによって <code>dont_AddRef</code> のような指示子で代入する <code>QueryInterface</code> を呼び出します。このセクションでは、それぞれ起こりうる場合を記述します。ただし、指示子については、より簡潔に以下の表で記述しています。
+</p><p>あなたは、<code>nsCOMPtr</code> を以下のものから構築するか、以下のものから代入することができます。
+</p>
+<ul><li> 値 <code>0</code>
+</li><li> 同じ型の他の <code>nsCOMPtr</code>
+</li><li> 同じ型の生の [XP]COM インタフェースポインタ
+</li><li> 同じ型の生の [XP]COM インタフェースポインタで、かつ <a href="#nsCOMPtr.3CT.3E_.3D_T.2A.2CnsCOMPtr.3CT.3E_.3D_dont_QueryInterface.28_T.2A_.29"><code>dont_QueryInterface</code></a> 指示子により注釈されたもの。
+</li><li> 同じ型の生の [XP]COM インタフェースポインタで、かつ <a href="#nsCOMPtr.3CT.3E_.3D_dont_AddRef.28_T.2A_.29.2CnsCOMPtr.3CT.3E_.3D_getter_AddRefs.28_T.2A_.29"><code>dont_AddRef</code></a> 指示子や同様のものにより注釈されたもの。
+</li><li> 任意の型の任意のインタフェースポインタ (<code>nsCOMPtr</code> でも、生の [XP]COM インタフェースポインタでも) で、かつ <a href="#nsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A.2C_nsresult.2A_.29"><code>do_QueryInterface</code></a> 指示子により注釈されたもの。
+</li><li> <a href="#nsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A.2C_nsresult.2A_.29"><code>do_QueryReferent</code></a> 指示子
+</li></ul>
+<p>最初の三つは、単純で明らかです。4 番目のもの (<code>dont_QueryInterface</code> 指示子の適用) は、同じ型の生の [XP]COM インタフェースポインタの代入と同じことです。残りの指示子は、特殊な状況において、いくつかの付加的な制御を提供するものです。さらに、<code>nsCOMPtr</code> を初期値なしで構築することができ、その場合は、<code>0</code> で初期化されます。ちょうどプリミティブなポインタのように、値が<code>0</code>の<code>nsCOMPtr</code> は、どのオブジェクトも指しません。そして、<code>if (foo)</code> や <code>if (!foo)</code> のように式をテストすることができます。
+</p><p>上述した指示は、この表によりもっとはっきりするでしょう。
+</p>
+<table>
+<caption> 表 1. <code>nsCOMPtr</code>に代入するオプション
+</caption>
+<tbody><tr>
+<td>
+</td><td> QueryInterface しない
+</td><td> QueryInterface する
+</td></tr>
+<tr>
+<td> <code>AddRef</code> する
+</td><td>
+<p><a href="#nsCOMPtr.3CT.3E_.3D_T.2A.2CnsCOMPtr.3CT.3E_.3D_dont_QueryInterface.28_T.2A_.29">T*,<br><code>dont_QueryInterface(T*)</code></a>
+</p>
+</td><td>
+<p><a href="#nsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A.2C_nsresult.2A_.29"><code>do_QueryInterface(nsISupports*)</code>, <br><code>do_QueryInterface(nsISupports*, nsresult*)</code></a> <a href="#nsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A.2C_nsresult.2A_.29"><code>do_QueryReferent(nsIWeakReference*)</code>, <br><code>do_QueryReferent(nsIWeakReference*, nsresult*)</code></a>
+</p>
+</td></tr>
+<tr>
+<td> <code>AddRef</code> しない
+</td><td>
+<p><a href="#nsCOMPtr.3CT.3E_.3D_dont_AddRef.28_T.2A_.29.2CnsCOMPtr.3CT.3E_.3D_getter_AddRefs.28_T.2A_.29"><code>dont_AddRef(T*)</code>,<br><code>getter_AddRefs(T*)</code></a>
+</p>
+</td><td>
+<p><a href="#nsCOMPtr.3CT.3E_.3D_.2F.2A_call_QueryInterface_but_don.27t_AddRef_.2A.2F">n/a</a>
+</p>
+</td></tr></tbody></table>
+<p>例えば、<code>nsCOMPtr</code> への代入において、(なんらかの理由ですでに <code>AddRef</code> を実行したために)代入するポインタに対して <code>AddRef</code> を実行したくない場合、「<code>AddRefしない</code>」と「QueryInterface しない」の交差する所にある <code>dont_AddRef(T*)</code> を使うのは一つの可能性です。以下に、<code>dont_AddRef</code>を使い、様々な位置にそれらの「注釈」が表れるサンプルを示します。
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval"><span class="comment">// |nsCOMPtr| への代入を管理する...</span>
+
+ <span class="comment">// コンストラクタにおいて...</span>
+nsCOMPtr&lt;nsIFoo&gt; foo1( <span class="notice">dont_AddRef(</span>rawFoo1Ptr<span class="notice">)</span> );
+nsCOMPtr&lt;nsIFoo&gt; foo2 = <span class="notice">dont_AddRef(</span>rawFoo2Ptr<span class="notice">)</span><span class="nowiki">;
+ </span><span class="comment">// (直接の初期化と呼ばれる) 関数の形式と (コピーの初期化と呼ばれる)</span>
+ <span class="comment">// コンストラクタの代入の形式は、微妙に異なる意味を</span>
+ <span class="comment">// 持つことに注意してください。直接の初期化の方が好ましい。</span>
+
+nsCOMPtr&lt;nsIFoo&gt; foo3;
+
+ <span class="comment">// 通常の代入において...</span>
+foo3 = <span class="notice">dont_AddRef(</span>rawFoo3Ptr<span class="notice">)</span><span class="nowiki">;
+
+ </span><span class="comment">// 表で記述されている注釈をコンストラクタと</span>
+ <span class="comment">// 単純で古いタイプの代入に適用しています。</span>
+</pre>
+</td></tr></tbody></table>
+<p>表に示されたどの注釈も <code>dont_AddRef()</code> を使って示されたすべての場所に出現可能です。続くセクションでそれぞれの可能性を記述します。
+</p>
+<h5 id="nsCOMPtr.3CT.3E_.3D_T.2A.2CnsCOMPtr.3CT.3E_.3D_dont_QueryInterface.28_T.2A_.29" name="nsCOMPtr.3CT.3E_.3D_T.2A.2CnsCOMPtr.3CT.3E_.3D_dont_QueryInterface.28_T.2A_.29"> <code>nsCOMPtr&lt;T&gt; = T*</code>,<br><code>nsCOMPtr&lt;T&gt; = dont_QueryInterface( T* )</code> </h5>
+<p>表で <code>T*</code> として示されるデフォルトの振舞いでは、新しい値に対して、<code>AddRef</code> を実行します。しかし、それに対して、<code>QueryInterface</code> は実行しません。「注釈」がない時に何が起きるかという例を示します。例えば、
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval">nsCOMPtr&lt;nsIFoo&gt; foo( aFooPtr ); <span class="comment">// もしくは</span>
+foo = aFooPtr;
+ <span class="comment">// ...|AddRef| は呼び出しますが、|QueryInterface| は呼び出しません。|</span>
+
+ <span class="comment">// 同じものをより明示的に表すと...</span>
+nsCOMPtr&lt;nsIFoo&gt; foo( <span class="notice">dont_QueryInterface(</span>aFooPtr<span class="notice">)</span> ); <span class="comment">// もしくは</span>
+foo = <span class="notice">dont_QueryInterface(</span>aFooPtr<span class="notice">)</span><span class="nowiki">;
+ </span>
+</pre>
+</td></tr></tbody></table>
+<p>この形式を使うことにより、あなたが代入しているポインタがすでに、<code>nsCOMPtr</code> の元の型、この場合は、<code>nsIFoo</code> に適合している、[XP]COMとして正しいインタフェースへのポインタであることを約束していることになります。
+</p>
+<h5 id="nsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A.2C_nsresult.2A_.29" name="nsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryInterface.28_nsISupports.2A.2C_nsresult.2A_.29"> <code>nsCOMPtr&lt;T&gt; = do_QueryInterface( nsISupports* )</code>,<br><code>nsCOMPtr&lt;T&gt; = do_QueryInterface( nsISupports*, nsresult* )</code> </h5>
+<p>もし、上記の約束を果たせない時は、<code>nsCOMPtr</code> に対して、代入において <code>QueryInterface</code> を呼び出す必要があると、「注釈」をすることができます。例えば、
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval">nsCOMPtr&lt;nsIFoo&gt; foo( <span class="notice">do_QueryInterface(</span>aBarPtr<span class="notice">)</span> ); <span class="comment">// もしくは</span>
+foo = <span class="notice">do_QueryInterface(</span>aBarPtr<span class="notice">)</span><span class="nowiki">;
+ </span><span class="comment">// ...|QueryInterface| が呼ばれる _でしょう_。(その結果 |AddRef| も呼ばれます)</span>
+
+ <span class="comment">// もちろん、|QueryInterface| を呼んでいるので、</span>
+ <span class="comment">// エラー結果も必要になるでしょう...</span>
+nsresult rv;
+nsCOMPtr&lt;nsIFoo&gt; foo( <span class="notice">do_QueryInterface(</span>aBarPtr<span class="notice">, &amp;rv)</span> ); <span class="comment">// もしくは</span>
+foo = <span class="notice">do_QueryInterface(</span>aBarPtr<span class="notice">, &amp;rv)</span><span class="nowiki">;
+ </span>
+</pre>
+</td></tr></tbody></table>
+<h5 id="nsCOMPtr.3CT.3E_.3D_dont_AddRef.28_T.2A_.29.2CnsCOMPtr.3CT.3E_.3D_getter_AddRefs.28_T.2A_.29" name="nsCOMPtr.3CT.3E_.3D_dont_AddRef.28_T.2A_.29.2CnsCOMPtr.3CT.3E_.3D_getter_AddRefs.28_T.2A_.29"> <code>nsCOMPtr&lt;T&gt; = dont_AddRef( T* )</code>,<br><code>nsCOMPtr&lt;T&gt; = getter_AddRefs( T* )</code> </h5>
+<p>時々、すでに <code>AddRef</code> が実行されたポインタをたまたま持っていて、それを <code>nsCOMPtr</code> に代入したい場合があるでしょう。これは、しばしば、(<code>nsresult</code> を結果とするのではなく) <code>AddRef</code> が実行されたポインタを結果として返す getter を使った時に起きます。あるいは、効率性のための変形により起きる場合もあります。<code>dont_AddRef</code> は、このような場合の完璧な治療法です。
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval">nsIFoo* temp;
+nsresult rv = GetFoo(&amp;temp);
+nsCOMPtr&lt;nsIFoo&gt; foo( <span class="notice">dont_AddRef(</span>temp<span class="notice">)</span> );
+ <span class="comment">// |temp| はすでに |AddRef| を実行済ですが、我々はこれを</span>
+ <span class="comment">// |nsCOMPtr| で管理しようとしています。.</span>
+
+nsCOMPtr&lt;nsIFoo&gt; foo( <span class="notice">getter_AddRefs(</span>CreateAFoo()<span class="notice">)</span> );
+ <span class="comment">// |getter_AddRefs| は |dont_AddRef| の同意語です。</span>
+ <span class="comment">// これは、|AddRef| が実行されたポインタを返す関数に適用する時に分かりやすくするものです。</span>
+
+nsCOMPtr&lt;nsIFoo&gt; foo( <span class="notice">dont_AddRef(</span>CreateAFoo()<span class="notice">)</span> );
+ <span class="comment">// あるいは、あなたはそれが好きではないかもしれません...</span>
+</pre>
+</td></tr></tbody></table>
+<h5 id="nsCOMPtr.3CT.3E_.3D_.2F.2A_QueryInterface_.E3.82.92.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.97.E3.81.BE.E3.81.99.E3.81.8C.E3.80.81AddRef_.E3.81.AF.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.97.E3.81.BE.E3.81.9B.E3.82.93.E3.80.82_.2A.2F" name="nsCOMPtr.3CT.3E_.3D_.2F.2A_QueryInterface_.E3.82.92.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.97.E3.81.BE.E3.81.99.E3.81.8C.E3.80.81AddRef_.E3.81.AF.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.97.E3.81.BE.E3.81.9B.E3.82.93.E3.80.82_.2A.2F"> <code>nsCOMPtr&lt;T&gt; = </code>/* <code>QueryInterface</code> を呼び出しますが、<code>AddRef</code> は呼び出しません。 */ </h5>
+<p>表のこの象限が「n/a (not applicable)」とマークされているのに気づくでしょう。「<code>QueryInterface</code> を呼び出すが、<code>AddRef</code> を行わないこと」を意味する明示的な指令はありません。このオプションは、間違った型のオブジェクトを返す getter を呼び出す状況に対応します。すでに <code>AddRef</code> を実行したオブジェクトを持っているので、もう AddRef を実行したくないが、違うインタフェースを得る必要がある場合です。それはできません。<code>QueryInterface</code> は、常に <code>AddRef</code> をその結果に対して実行します。そして、正しい型を得るための <code>QueryInterface</code> の呼び出しの代用品は存在しません。解決するには、2 段階のプロセスを実行します。
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval"><span class="comment">// ...</span>
+
+ <span class="comment">// getter は (間違った型の) すでに |AddRef| を実行したオブジェクトを返します...</span>
+nsCOMPtr&lt;nsIBar&gt; bar( <span class="notice">getter_AddRefs(</span>CreateBar()<span class="notice">)</span> );
+ <span class="comment">// ...(このオブジェクトに対して) 正しい型を問い合わせる必要があります。</span>
+nsCOMPtr&lt;nsIFoo&gt; foo( <span class="notice">do_QueryInterface(</span>bar<span class="notice">)</span> );
+</pre>
+</td></tr></tbody></table>
+<p>この場合において、人々が陥る不運なワナは、getter 関数が結果を <code>AddRef</code> していることを忘れることです。こんな感じのコードをタイプしてしまいます:
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval">nsCOMPtr&lt;nsIFoo&gt; foo( <span class="warning">do_QueryInterface(CreateBar())</span> );
+ <span class="comment">// おっと! |CreateBar| によって返ってくるインタフェースがリークしてしまいます。</span>
+ <span class="comment">// この場合、あなたは上に示した二つのステップの解決法で処理する_必要_があります。</span>
+
+ <span class="comment">// ありそうもないですか? こんな感じの形で見ることはあるでしょう。</span>
+nsCOMPtr&lt;nsIFoo&gt; foo( <span class="warning">do_QueryInterface(aList-&gt;ElementAt(i))</span> );
+ <span class="comment">// すべての良い getter のように、|ElementAt| は、</span>
+ <span class="comment">// インタフェースからの必要性に応じて問い合わせを行なった後、</span>
+ <span class="comment">// 破棄されるかも知れない結果を |AddRef| します。</span>
+</pre>
+</td></tr></tbody></table>
+<p>Bugzilla <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=8221" title="FIXED: MLK - Mem Leak's found with the scc wonder query - nsCOMPtr = do_QueryInterface..">バグ 8221</a> は、この特定のリークの発見と修正に限定されたものです。
+</p>
+<h4 id="nsCOMPtr_.E3.83.98.E3.83.AB.E3.83.91.E3.83.BC" name="nsCOMPtr_.E3.83.98.E3.83.AB.E3.83.91.E3.83.BC"> <code>nsCOMPtr</code> ヘルパー </h4>
+<h5 id="nsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A.2C_nsresult.2A_.29" name="nsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A.2C_nsresult.2A_.29"> <code>nsCOMPtr&lt;T&gt; = do_QueryReferent( nsIWeakReference* )</code>,<br><code>nsCOMPtr&lt;T&gt; = do_QueryReferent( nsIWeakReference*, nsresult* )</code> </h5>
+<p><a href="ja/Weak_reference"><code>nsIWeakReference</code></a> に基づく弱い参照を容易にする <code>do_QueryReferent</code> というのがあります。<code>nsIWeakReference</code> は、他のオブジェクトのプロキシとして振舞う [XP]COM オブジェクトです。<code>nsIWeakReference</code> と (上記の) 他のオブジェクトは、特別な関係にあります。それらは、お互いのことを知っています。しかし、どちらももう一方への所有する参照を保持していません。二つのオブジェクトは、もう一方へのダングリングポインタを持たないことを保障するように協調しています。<code>nsIWeakReference</code> オブジェクトにおいて所有する参照を保持することにより、この他のオブジェクトを必要な時に得ることができ、しかし、それ (他のオブジェクト) が生きていなくてもよいのです。そのオブジェクトを得るためには、<code>nsIWeakReference</code> オブジェクトに、あなたの代わりに <code>QueryInterface</code> するように依頼します。もしオブジェクトがまだ存在しており、要求されたインタフェースをサポートしているのであれば、あなたは (できれば、一時的に) それに対する所有する参照を持つことができます。
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval">nsIWeakReference* weakPtr = ...;
+
+weakPtr-&gt;QueryReferent(
+</pre>
+</td></tr></tbody></table>
+<h3 id="T.2A_.E3.81.A8.E3.81.97.E3.81.A6_nsCOMPtr.3CT.3E_.E3.82.92.E4.BD.BF.E3.81.86" name="T.2A_.E3.81.A8.E3.81.97.E3.81.A6_nsCOMPtr.3CT.3E_.E3.82.92.E4.BD.BF.E3.81.86"> <code>T*</code> として <code>nsCOMPtr&lt;T&gt;</code> を使う</h3>
+<h4 id="nsCOMPtr.E3.82.92.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF.E3.81.A8.E3.81.97.E3.81.A6.E4.BD.BF.E3.81.86" name="nsCOMPtr.E3.82.92.E3.83.9D.E3.82.A4.E3.83.B3.E3.82.BF.E3.81.A8.E3.81.97.E3.81.A6.E4.BD.BF.E3.81.86"> <code>nsCOMPtr</code>をポインタとして使う </h4>
+<h4 id=".E3.80.8C.E5.85.A5.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF" name=".E3.80.8C.E5.85.A5.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF"> 「入力」パラメタ </h4>
+<h4 id=".E3.80.8C.E5.87.BA.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF_getter_AddRefs" name=".E3.80.8C.E5.87.BA.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF:_getter_AddRefs"> 「出力」パラメタ: <code>getter_AddRefs</code> </h4>
+<p><code>nsCOMPtr</code> への代入は、とても理解しやすいです。<code>nsCOMPtr</code> は、古い値がもしあれば、それを <code>Release</code> します。そして、代入した新しい値を <code>AddRef</code> し、および/または上述した指令に示された<code>QueryInterface</code> を呼び出します。これらの規則は、<code>nsCOMPtr</code> として宣言されたパラメタや関数の復帰値のコピーにおいて起こる「代入」でも同じく適用されます。もし <code>nsCOMPtr</code> を生の [XP]COM インタフェースポインタの実用的な代用品としたいのであれば、しかしながら、「出力」パラメタの問題に対処する必要があります。多くの [XP]COM 関数は、結果のインタフェースポインタをパラメタを通じて返します。例えば、
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval"><span class="comment">// Getter は、インタフェースポインタを「出力」パラメタを通じて返すことができます。...</span>
+
+nsresult GetFoo( nsIFoo** ); <span class="comment">// 標準的 getter</span>
+nsresult GetFoo2( nsIFoo*&amp; ); <span class="comment">// 非標準的 getter</span>
+nsresult GetSomething( void** ); <span class="comment">// 「型無し」の getter</span>
+ <span class="comment">// 注: |QueryInterface| は、「型無し」の getter の例です。</span>
+</pre>
+</td></tr></tbody></table>
+<p>我々は、「出力」パラメタを使うルーチンへポインタや参照によって <code>nsCOMPtr</code> を渡せなければいけません。問題は、getter 内部には、<code>nsCOMPtr</code> に対する情報がないことです。それは、生の [XP]COM インタフェースポインタへのポインタ (または参照) を得ていると考えます。<code>nsCOMPtr</code> のスマートな代入演算子は、呼ばれません。古い値があれば、リークしてしまいます。
+</p><p>ここで、<code>getter_AddRefs( nsCOMPtr&amp; )</code>が役に立ちます。<code>getter_AddRefs</code> は、古い値があれば <code>Release</code> し、それをクリアします。そして、それに対するポインタを返し、getter は <code>nsCOMPtr</code>に<code>AddRef</code> を実行した新しい値を設定します。我々は、これらの状況で、生の [XP]COM インタフェースポインタに適用していた <code>&amp;</code> を置き換えるものとして、<code>getter_AddRef</code> を使用します。<code>getter_AddRefs</code> は、通常 <code>nsCOMPtr</code> のコンストラクタと代入演算子から得ていた魔法を詰めこんだものです。
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval"><span class="comment">// 生の [XP]COM インタフェースポインタ...</span>
+
+nsIFoo<span class="notice"><span class="nowiki">*</span></span> foo;
+
+GetFoo(<span class="notice">&amp;</span>foo);
+GetFoo2(foo);
+GetSomething(<span class="notice">(void**)&amp;</span>foo);
+</pre>
+</td><td>
+<pre class="eval"><span class="comment">// |nsCOMPtr|...</span>
+
+<span class="notice">nsCOMPtr&lt;</span>nsIFoo<span class="notice">&gt;</span> foo;
+
+GetFoo(<span class="notice">getter_AddRefs(</span>foo<span class="notice">)</span>);
+GetFoo2(<span class="notice"><span class="nowiki">*getter_AddRefs(</span></span>foo<span class="notice">)</span>);
+GetSomething(<span class="notice">getter_AddRefs(</span>foo<span class="notice">)</span>);
+</pre>
+</td></tr></tbody></table>
+<p>これを実現するのに、なぜ単に <code>operator&amp;</code> をオーバーロードしないのでしょうか? いくつかの理由: 他の状況では、<code>nsCOMPtr</code> のアドレスを取るのは、不便なことになります。「<code>getter_AddRefs</code>」という名前は、getter としてある一定の振舞いを強制します。そして、かつては、他の可能性がありました (あなたがまさに学ぼうとしているように)。
+</p><p>パラメタを通じて復帰値を返しますが、<code>AddRef</code> を実行していない getter のために、<code>getter_doesnt_AddRef( nsCOMPtr&amp; )</code> というのは、ありますか? いいえ、ありません。かつてありましたが、それは 3 つの理由でなくなりました:
+</p>
+<ul><li> getter がパラメタを通じて <code>AddRef</code> を実行していないインタフェースポインタを返すのは、[XP]COM の規則に反しています。(もしそれを見つけたら、バグ報告をしてください。)
+</li><li> <code>getter_doesnt_AddRef</code> は、<code>nsCOMPtr</code> を生の [XP]COM インタフェースポインタよりも大きく、または遅くしてしまう複雑な波及効果があります。
+</li><li> とりあえず、そのような getter を呼んで、一時的に<code>nsCOMPtr</code>に結果を入れることもできます。例えば、
+</li></ul>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval"><span class="comment">// その結果に対して、|AddRef| を (違法に) 呼び出さない getter を呼び出します...</span>
+
+nsIFoo* temp;
+nsresult rv = <span class="warning">GetFoo_WithoutAddRef(</span>&amp;temp<span class="warning">)</span><span class="nowiki">;
+ </span><span class="comment">// 自分への注: |GetFoo_WithoutAddRef| をバグとして報告しなければならない。</span>
+ <span class="comment">// すべての getter は、 |AddRef| しなければならない。</span>
+nsCOMPtr&lt;nsIFoo&gt; foo = temp;
+</pre>
+</td></tr></tbody></table>
+<h4 id=".E3.80.8C.E5.85.A5.E5.87.BA.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF" name=".E3.80.8C.E5.85.A5.E5.87.BA.E5.8A.9B.E3.80.8D.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF"> 「入出力」パラメタ </h4>
+<p>「入力/出力」パラメタについては、どうなんでしょう?
+</p>
+<h3 id=".E5.8A.B9.E7.8E.87.E6.80.A7.E3.81.A8.E6.AD.A3.E7.A2.BA.E6.80.A7" name=".E5.8A.B9.E7.8E.87.E6.80.A7.E3.81.A8.E6.AD.A3.E7.A2.BA.E6.80.A7"> 効率性と正確性 </h3>
+<h4 id="nsCOMPtr.E3.81.AE.E3.82.B3.E3.82.B9.E3.83.88" name="nsCOMPtr.E3.81.AE.E3.82.B3.E3.82.B9.E3.83.88"> <code>nsCOMPtr</code>のコスト </h4>
+<p><code>nsCOMPtr</code> は、生の [XP]COM インタフェースポインタに対する実用的な置き換えとなるべく調整されています。所有する参照として使うのであれば、どの場所においてもです。<code>nsCOMPtr</code>s のパフォーマンスについては一般的に、スペース的には少し効率が<em>よく</em>、時間的には、ごくわずかに効率が悪いです。パフォーマンスに関することにより、<code>nsCOMPtr</code> を使わないのは良くありません。このセクションを通じて提示するパターンが<code>nsCOMPtr</code> からより多くのものを引き出すのを手伝ってくれるでしょう。
+</p>
+<h5 id=".E3.82.B9.E3.83.9A.E3.83.BC.E3.82.B9" name=".E3.82.B9.E3.83.9A.E3.83.BC.E3.82.B9"> スペース </h5>
+<p>一般的に、<code>nsCOMPtr</code>は、生の [XP]COM ポインタを使うよりもスペース的には、効率がよくなる<i>可能性</i>があります。これは主にそのデストラクタの分解とより複雑なコンストラクタと代入演算子のためです。このセクションの最適化の tips に従うことで、生のポインタで使用するのよりもオブジェクトの生成するバイトがより少ないコードを書くことができるでしょう。これらの忠告に従わないとしても、<code>nsCOMPtr</code> のコードは、依然として、より小さくなり、あるいは最悪でも生のポインタ版よりもごくわずか増えるだけです。詳細については、<a class="external" href="http://www.mozilla.org/projects/xpcom/nsCOMPtr/bloat.html">Code Bloat [長文、要約が最初にあります</a>] を見てください。もっとも、ここでは、そのドキュメントからの推奨事項を繰り返しています。
+</p>
+<h5 id=".E6.99.82.E9.96.93" name=".E6.99.82.E9.96.93"> 時間 </h5>
+<p><span class="editor-note"><span class="nowiki">[[もっと時間パフォーマンスの測定が必要です。]]</span></span>
+</p><p>二つ以上のサブルーチン、すなわち <code>AddRef</code>、<code>Release</code>、<code>QueryInterface</code> が必要な場所では、いくつかの <code>nsCOMPtr</code>ル ーチンが分解され、そのためサブルーチンを呼び出しと対応する付加的な時間を必要とします。この時間は、特に <code>QueryInterface</code> により行われる作業や <code>Release</code> により行われるかもしれない作業にもかかわらず、極わずかです。
+</p><p>その他のすべての場合、<code>nsCOMPtr</code> は手で行われる作業をするだけです。<code>nsCOMPtr</code> が使用される作業の大部分は、<code>operator-&gt;</code> での間接参照であり、原始的なポインタが行うものと同じです。この操作は、すべてのプラットフォームで、生の [XP]COM インタフェースポインタでの操作とちょうど同じコードを作り出し、そして同じ時間を消費します。デストラクタは、クライアントコードが生の [XP]COM インタフェースポインタに対して、<code>Release</code> を呼び出すのに対応しますが、処理が分解されているため、サブルーチンを呼び出すための余分な時間が必要となります。もっとも、これは、<code>delete</code> を実行するかもしれない <code>Release</code> の呼び出しと参照する方のデストラクタの両方の場合においてすでに存在するコストに対して、バランスが取れています。すべての <code>nsCOMPtr</code> のコンストラクタと代入演算子は、インラインです。単純なコンストラクタ、すなわち問い合わせをしないもの、は、あなたが手で書いたものと同じ作業だけを行います。<code>AddRef</code>、<code>Release</code>、<code>QueryInterface</code> の中の一つ以上の呼び出しを行うすべてのルーチンは、分解されており、そのため、サブルーチン呼び出しの余分なコストを含んでいます。
+</p><p>いくつかのルーチンが分解されているという事実により、余分なサブルーチン呼び出しのオーバーヘッドが生じます。そして、その事実および初期化がバイパスできないという事実によって、生の [XP]COM インタフェースポインタに対して、<code>nsCOMPtr</code> が余分な実行時間のコストを生じるのです。スペースと時間のトレードオフは、<code>nsCOMPtr</code> において見事にバランスが取れています。分解されたルーチンは、膨張に関する測定の直接的な結果です。
+</p>
+<h4 id=".E4.BB.A3.E5.85.A5.E3.81.AE.E5.A5.BD.E3.81.BE.E3.81.97.E3.81.84.E6.A7.8B.E7.AF.89" name=".E4.BB.A3.E5.85.A5.E3.81.AE.E5.A5.BD.E3.81.BE.E3.81.97.E3.81.84.E6.A7.8B.E7.AF.89"> 代入の好ましい構築 </h4>
+<p>時間においてもスペースにおいても、<code>nsCOMPtr</code> への値の代入の最も効率的な方法は、構築時におけるものです。合理的である限り、代入しながら構築する方が好ましいです。<code>nsCOMPtr</code> のメンバをコンストラクタのメンバ初期化節で初期化すべきです。
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval"><span class="comment">// |nsCOMPtr| のメンバをコンストラクタの</span>
+<span class="comment">// メンバ初期化節で初期化する...</span>
+
+class Bar
+ {
+ public:
+ Bar( nsIFoo* initial_fooPtr );
+ <span class="comment">// ...</span>
+ private:
+ nsCOMPtr&lt;nsIFoo&gt; mFooPtr;
+ };
+
+Bar::Bar( nsIFoo* initial_fooPtr )
+  : <span class="notice">mFooPtr(initial_fooPtr)</span> <span class="comment">// _ここで_ 初期化します</span>
+ {
+ <span class="comment">// ここではありません。</span>
+ }
+</pre>
+</td></tr></tbody></table>
+<p>付け加えておくと、代入の形式を構築の形式に変換する一時的オブジェクトを使う、最適化のパターンがあります。
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval"><span class="comment">// 後に代入が続くデフォルトの</span>
+<span class="comment">// 構築は非効率的です...</span>
+
+nsCOMPtr&lt;nsIFoo&gt; foo;
+nsresult rv=GetFoo(getter_AddRefs(foo));
+
+
+
+
+
+</pre>
+</td><td>
+<pre class="eval"><span class="comment">// ...構築だけをします。</span>
+
+<span class="notice">nsIFoo* temp;</span>
+nsresult rv=GetFoo(<span class="notice">&amp;temp</span>);
+nsCOMPtr&lt;nsIFoo&gt; foo<span class="notice"><span class="nowiki">=dont_AddRef(temp);</span></span>
+
+ <span class="comment">// この「生のポインタ、getter の呼び出し、</span>
+ <span class="comment">// |dont_AddRef| の代入」パターンを覚えて</span>
+ <span class="comment">// ください。それは、多くの効率に関する</span>
+ <span class="comment">// 議論で出てきたものです。</span>
+</pre>
+</td></tr></tbody></table>
+<p>どちらの場合も、あなたは、正当な <code>nsCOMPtr</code> で、その値として <code>GetFoo</code> の結果が設定された <code>foo</code> というオブジェクト、および <code>GetFoo</code> により返された <code>rv</code> という状態を得ます。しかしながら、一時的変数を使う場合は、<code>nsCOMPtr</code> への値の設定をする構築を使っており、(ソース上では、少し複雑になっていますが)、代入に続くデフォルトの構築よりは、効率的になっています。そして、より簡単な例によって、このイベントの過程は理解されるでしょう。
+</p>
+<h4 id=".E4.BB.A3.E5.85.A5.E3.81.AB.E3.81.8A.E3.81.91.E3.82.8B.E5.A5.BD.E3.81.BE.E3.81.97.E3.81.84.E7.A0.B4.E5.A3.8A" name=".E4.BB.A3.E5.85.A5.E3.81.AB.E3.81.8A.E3.81.91.E3.82.8B.E5.A5.BD.E3.81.BE.E3.81.97.E3.81.84.E7.A0.B4.E5.A3.8A"> 代入における好ましい破壊 </h4>
+<h4 id="QueryInterface_.E3.81.AE.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.97.E3.82.88.E3.82.8A.E3.82.82_do_QueryInterface_.E3.81.AE.E6.96.B9.E3.81.8C.E6.9C.9B.E3.81.BE.E3.81.97.E3.81.84.E3.81.A7.E3.81.99.E3.80.82" name="QueryInterface_.E3.81.AE.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.97.E3.82.88.E3.82.8A.E3.82.82_do_QueryInterface_.E3.81.AE.E6.96.B9.E3.81.8C.E6.9C.9B.E3.81.BE.E3.81.97.E3.81.84.E3.81.A7.E3.81.99.E3.80.82"> <code>QueryInterface</code> の呼び出しよりも <code>do_QueryInterface</code> の方が望ましいです。 </h4>
+<h4 id=".E7.B9.B0.E3.82.8A.E8.BF.94.E3.81.97" name=".E7.B9.B0.E3.82.8A.E8.BF.94.E3.81.97"> 繰り返し </h4>
+<p>これは、普通のポインタでデータ構造の繰り返しをする時の共通のイディオムです。例えば、
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval"><span class="comment">// [XP]COM オブジェクトでないものに対してポインタで繰り返しを行う...</span>
+
+Node* p = ...;
+while ( p )
+ {
+ <span class="comment">// ...</span>
+ p = p-&gt;next;
+ }
+</pre>
+</td></tr></tbody></table>
+<p>同様に、このパターンが <code>for</code> ループとしても表現されるのをしばしば見かけます。しかしながら、これを生の [XP]COM インタフェースポインタに対して行うとどうなるか、考えてみてください。
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval"><span class="comment">// 生の [XP]COM インタフェースポインタで繰り返しを行います...</span>
+
+nsIDOMNode* p = ...;
+while ( p )
+ {
+ <span class="comment">// ...</span>
+ <span class="warning">p-&gt;GetNext(&amp;p);</span>
+ <span class="comment">// 問題です! |p| を |Release| せずに上書きしてしまいました。</span>
+ }
+</pre>
+</td></tr></tbody></table>
+<p>おっと! <code>p</code> に対して、新しいポインタを設定する前に、<code>Release</code> し損ねてしまいました。みんながこれを多く行うため、これが通常の [XP]COM コードのリークの大きな原因となってしまいました。では、代わりにこうすることはできるのでしょうか ?
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval"><span class="comment">// 生の [XP]COM インタフェースポインタで繰り返しを行います...</span>
+
+nsIDOMNode* p = ...;
+while ( p )
+ {
+ <span class="comment">// ...</span>
+ <span class="warning">NS_RELEASE(p);
+ p-&gt;GetNext(&amp;p);</span>
+ <span class="comment">// 問題です! ダングリングしているか |NULL| であるポインタの</span>
+ <span class="comment">// メンバ関数を呼ぼうとしています。</span>
+ }
+</pre>
+</td></tr></tbody></table>
+<p>残念ながらダメです。<code>Release</code> した後、<code>nsCOMPtr</code> は、ダングリングしている状態になるかもしれません。実は、<code>NS_RELEASE</code> マクロを使うと、<code>p</code> は、<code>GetNext</code> を呼び出すまでは、<code>NULL</code> になるでしょう。
+</p><p>では、同じことを <code>nsCOMPtr</code> で書いてあると想像してみてください。
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval"><span class="comment">// |nsCOMPtr| で繰り返しを行います...</span>
+
+nsCOMPtr&lt;nsIDOMNode&gt; p = ...;
+while ( p )
+ {
+ <span class="comment">// ...</span>
+ <span class="warning">p-&gt;GetNext( getter_AddRefs(p) );</span>
+ <span class="comment">// 問題です! |NULL| ポインタを通じてメンバ関数を呼び出そうとしました。</span>
+ }
+</pre>
+</td></tr></tbody></table>
+<p>ここでは、<code>nsCOMPtr</code> の使用は、生の [XP]COM インタフェースポインタの使用とほとんど同じです。<code>getter_AddRefs</code> は、 <code>Release</code> し、そしてそれに代入する前に <code>p</code> をクリアします。すなわち、<code>GetNext</code> が呼ばれる前にそれを行います。これは、<code>GetNext</code> の呼び出しを行う前に、<code>NULL</code> ポインタを通じて、呼び出そうとしてしまうことを意味します。生の [XP]COM インタフェースポインタと違い、<code>nsCOMPtr</code> は、盲目的に <code>NULL</code> ポインタを通じて <code>GetNext</code> を呼び出そうとする代わりに、<code>assert</code> を実行します。
+</p><p>これは問題です。では、解決法は、なんでしょうか。もしこれが生の [XP]COM インタフェースであれば、おそらく一時的変数を導入するでしょう。我々は、<code>nsCOMPtr</code>で同じことをすることができます。
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval"><span class="comment">// 生の [XP]COM インタフェースポインタ</span>
+<span class="comment">// での安全な繰り返し...</span>
+
+nsIDOMNode<span class="notice"><span class="nowiki">*</span></span> p = ...;
+while ( p )
+ {
+ <span class="comment">// ...</span>
+
+ <span class="comment">// 一時的変数を導入することで、</span>
+ <span class="comment">// |p| で足踏みをすることもありません。</span>
+ nsIDOMNode<span class="notice"><span class="nowiki">*</span></span> temp = p;
+ temp-&gt;GetNext(<span class="notice">&amp;</span>p);
+ <span class="notice">NS_RELEASE(temp);</span>
+ }
+</pre>
+</td><td>
+<pre class="eval"><span class="comment">// |nsCOMPtr| での安全な繰り返し...</span>
+
+
+<span class="notice">nsCOMPtr&lt;</span>nsIDOMNode<span class="notice">&gt;</span> p = ...;
+while ( p )
+ {
+ <span class="comment">// ...</span>
+
+ <span class="comment">// 一時的変数を導入することで、</span>
+ <span class="comment">// |p| で足踏みをすることもありません。</span>
+ <span class="notice">nsCOMPtr&lt;</span>nsIDOMNode<span class="notice">&gt;</span> temp = p;
+ temp-&gt;GetNext(<span class="notice">getter_AddRefs(</span>p<span class="notice">)</span>);
+ }
+
+</pre>
+</td></tr></tbody></table>
+<p><code>nsCOMPtr</code> をパラレルにするのは、容易に理解できますが、生のポインタの枠組に比べて、余分な <code>AddRef</code> と <code>Release</code> を一回ずつしなければなりません。少し変形することで、コードは見づらくなりますが、(おそらく、ごくわずかですが) より効率的になります。
+</p>
+<table>
+<tbody><tr>
+<td>
+<pre class="eval"><span class="comment">// 安全で、効率的な、|nsCOMPtr| での繰り返し...</span>
+
+nsCOMPtr&lt;nsIDOMNode&gt; p = ...;
+while ( p )
+ {
+ <span class="comment">// ...</span>
+ nsIDOMNode* next;
+ p-&gt;GetNext(&amp;next);
+ p = dont_AddRef(next);
+ }
+
+ <span class="comment">// 見てください! これはおなじみの「生のポインタ、getterの呼び出し、</span>
+ <span class="comment">// |dont_AddRef| の代入」パターンです。</span>
+</pre>
+</td></tr></tbody></table>
+<h4 id="getter_.E3.82.92.E6.9B.B8.E3.81.8F" name="getter_.E3.82.92.E6.9B.B8.E3.81.8F"> getter を書く </h4>
+<h3 id=".E3.82.B3.E3.83.B3.E3.83.91.E3.82.A4.E3.83.A9.E3.81.AE.E6.82.A9.E3.81.BF.E3.81.AE.E7.A8.AE" name=".E3.82.B3.E3.83.B3.E3.83.91.E3.82.A4.E3.83.A9.E3.81.AE.E6.82.A9.E3.81.BF.E3.81.AE.E7.A8.AE"> コンパイラの悩みの種 </h3>
+<div class="noinclude">
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/using_nscomptr/status,_recent_changes,_and_plans/index.html b/files/ja/mozilla/tech/xpcom/using_nscomptr/status,_recent_changes,_and_plans/index.html
new file mode 100644
index 0000000000..590fcab98c
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/using_nscomptr/status,_recent_changes,_and_plans/index.html
@@ -0,0 +1,36 @@
+---
+title: 'Status, Recent Changes, and Plans'
+slug: 'Mozilla/Tech/XPCOM/Using_nsCOMPtr/Status,_Recent_Changes,_and_Plans'
+tags:
+ - XPCOM
+translation_of: 'Mozilla/Tech/XPCOM/Using_nsCOMPtr/Status,_Recent_Changes,_and_Plans'
+---
+<p>
+</p><p>このセクションが、初めて読む人に邪魔になって申し訳ありません。 目次にとばしたり、直接 <a href="ja/Using_nsCOMPtr/Getting_Started_Guide">スタートガイド</a> や <a href="ja/Using_nsCOMPtr/Reference_Manual">リファレンスマニュアル</a>、 <a href="ja/Using_nsCOMPtr/Frequently_Asked_Questions">FAQ</a> に行きたいかもしれません。 このセクションは、最近の更新をチェックするのが簡単になるようにトップに設けています。
+</p><p><br>
+</p>
+<h3 id="nsCOMPtr_.E3.81.AB.E5.AF.BE.E3.81.99.E3.82.8B.E6.9C.80.E8.BF.91.E3.81.AE.E6.9B.B4.E6.96.B0" name="nsCOMPtr_.E3.81.AB.E5.AF.BE.E3.81.99.E3.82.8B.E6.9C.80.E8.BF.91.E3.81.AE.E6.9B.B4.E6.96.B0"> <code>nsCOMPtr</code> に対する最近の更新 </h3>
+<p>新しいものから順に
+</p>
+<ul><li> <code>nsCOMPtr</code> と生のポインタ(もしくはリテラル 0 や nsnull)の間の <code>==</code> と <code>!=</code> がすべてのコンパイラで正しく働くようにしました。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=65664" title="FIXED: nsCOMPtr: make operator== always work with gcc">バグ 65664</a> を参照してください
+</li><li> <a href="ja/Using_nsCOMPtr/Reference_Manual#.60.E5.87.BA.E5.8A.9B.27.E3.83.91.E3.83.A9.E3.83.A1.E3.82.BF:_getter_AddRefs"><code>getter_AddRefs( nsCOMPtr&amp; )</code></a> に対して、簡単な代入式が行うのと同じ [[Using_nsCOMPtr:Reference_Manual#型の保護手段|type-safety check] を適用します。
+</li><li> <code>do_CreateInstance</code> を追加しました。
+</li><li> <code>do_GetService</code> を追加しました。
+</li><li> <code>nsISupports**</code> が必要な時に <code>getter_AddRefs</code> をキャストする必要性がなくなりました。
+</li><li> <code>nsCOMPtr&lt;nsISupports&gt;</code> の不変性を緩和したので、 任意の [XP]COMインタフェースへのポインタを使うことができるようなりました。
+</li><li> <a href="ja/Weak_reference"><code>nsIWeakReference</code></a> を簡単に使えるように、<a href="ja/Using_nsCOMPtr/Reference_Manual#nsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A_.29.2CnsCOMPtr.3CT.3E_.3D_do_QueryReferent.28_nsIWeakReference.2A.2C_nsresult.2A_.29"><code>do_QueryReferent</code></a> を追加しました。
+</li></ul>
+<h4 id="nsCOMPtr_.E3.81.AE.E8.A8.88.E7.94.BB" name="nsCOMPtr_.E3.81.AE.E8.A8.88.E7.94.BB"> <code>nsCOMPtr</code> の計画 </h4>
+<ul><li> <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=59212" title="FIXED: leaks with nsCOMPtr&lt;nsIAtom> foo = NS_NewAtom(...)">バグ 59212</a>: 私たちがより多くのコンパイラでテストできるようになり次第、 <code>already_AddRefed</code> を関数の戻り値として推奨する事を始めます。
+</li><li> <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=59414" title="FIXED: misuse of nsCOMPtr::operator&amp;">バグ 59414</a>: <code>operator&amp;</code> を <code>private</code> とすることで、<a href="ja/Using_nsCOMPtr/Reference_Manual#.E3.82.AD.E3.83.A3.E3.82.B9.E3.83.88">キャストによるリーク</a> のいくつかを防ぐのを助けるでしょう
+</li><li> nsCOMPtr&lt;/code&gt;を複数のルーチンに分解してライブラリに入れます。それにより、<code>nsCOMPtr</code>のクライアントの XPCOM ライブラリへの依存性を減らします。
+</li></ul>
+<h4 id=".E6.9C.80.E8.BF.91.E3.81.AE.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.81.AE.E6.9B.B4.E6.96.B0" name=".E6.9C.80.E8.BF.91.E3.81.AE.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.81.AE.E6.9B.B4.E6.96.B0"> 最近のドキュメントの更新 </h4>
+<ul><li> <code>nsCOMPtr</code> と生のポインタ、リテラル <code>0</code> との間にある <code><span class="nowiki">==</span></code> と <code><span class="nowiki">!=</span></code> が一部のコンパイラで正しく働かないという記述は、既に問題が解決されたので削除しました。
+</li><li> スタートガイドに <a href="ja/Using_nsCOMPtr/Getting_Started_Guide#.E9.96.A2.E6.95.B0.E8.AD.98.E5.88.A5.E5.AD.90.E5.86.85.E3.81.AE_nsCOMPtr">関数識別子内の <code>nsCOMPtr</code></a> セクション全体を追加しました。
+</li><li> <code>nsCOMPtr</code> 機構を使うことに影響を及ぼす現在のバグへの言及を加えました。<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=59212" title="FIXED: leaks with nsCOMPtr&lt;nsIAtom> foo = NS_NewAtom(...)">バグ 59212</a> と <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=59414" title="FIXED: misuse of nsCOMPtr::operator&amp;">バグ 59414</a>
+</li><li> Morten Welinder のコメントのように、<a href="ja/Using_nsCOMPtr/Getting_Started_Guide#Comparison1">1</a> と<a href="ja/Using_nsCOMPtr/Getting_Started_Guide#Comparison3">3</a> の比較を修正しました。
+</li><li> コピー初期化よりも直接の初期化の方が好ましい例を更新しました。
+</li></ul>
+<div class="noinclude">
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/weak_reference/index.html b/files/ja/mozilla/tech/xpcom/weak_reference/index.html
new file mode 100644
index 0000000000..4a64488deb
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/weak_reference/index.html
@@ -0,0 +1,153 @@
+---
+title: Weak reference
+slug: Mozilla/Tech/XPCOM/Weak_reference
+tags:
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/Weak_reference
+---
+<p>In <a href="ja/XPCOM">XPCOM</a>, a <b>weak reference</b> is a special object that contains a pointer to an XPCOM object, but does <i>not</i> keep that object alive. If the referent object is destroyed before the weak reference, the pointer inside the weak reference is set to <code>nsnull</code>.
+</p>
+<h3 id="なぜこれを使う必要があるのでしょうか?"> なぜこれを使う必要があるのでしょうか? </h3>
+<p>When you hold an owning reference on an object (i.e., you have <code>AddRef</code>ed it), you are holding that object in existence for the duration of your reference. This isn't always appropriate, and can lead to trouble. If, for instance, this owning reference is part of a cycle of owning references (e.g., if the referenced object also holds a owning reference back to you), then none of the objects in the cycle can be reclaimed without taking special measures.
+</p><p>There are less severe situations. A naive design for an observer/observable relationship would require the observable to hold a owning reference to the observer. After all, the observable must send messages to each observer, notifying it of the appropriate state changes. To do that, it will call a method on the observer, so it needs a pointer. And the call would fail if the pointer were allowed to dangle, therefore, the pointer should be a owning reference. This design, however, is flawed, as it holds the observer in existence longer than would otherwise be necessary. The observer may only need a short life compared to the thing being observed. It might go away after the first interesting event, even. But in this design, by hitching its life to the observable, it is kept on life-support long past any need or use.
+</p><p>What is actually needed in this case, is either out-of-band signaling, where when the observer wants to go away, it unregisters itself from the observable, which then releases its owning reference, allowing the observer to die, or else a new kind of reference. This document describes an implementation of <i>weak references</i>. A weak reference does not hold its referent in existence, but also will not dangle. When the referent is destroyed, the weak reference automatically becomes <code>nsnull</code>. This technique can significantly simplify certain relationships, and you should consider it when an owning reference is inappropriate, but where a raw pointer might end up dangling.
+</p>
+<h3 id="どのように使うのでしょうか?"> どのように使うのでしょうか? </h3>
+<p>サンプルをここに挙げます。新しい所と興味を引きそうな所は、強調して表現します。
+</p>
+<pre class="eval"><strong>#include "nsWeakPtr.h"</strong>
+
+// ...
+
+// 弱い参照を得るのは、簡単です...
+<strong>nsWeakPtr</strong> weakPtr = getter_AddRefs( <strong>NS_GetWeakReference(</strong>aFooPtr<strong>)</strong> );
+
+// ...
+
+{ // ...しかし、弱い参照を使うには、(短命の) 所有する参照を必要とします。
+ nsCOMPtr&lt;nsIFoo&gt; tempFooPtr = <strong>do_QueryReferent</strong>(weakPtr);
+ if ( tempFooPtr )
+ tempFooPtr-&gt;SomeFooMethod(...);
+ // そうでないと、「本当の」オブジェクトが無くなってしまいます。
+}
+</pre>
+<p>しかし、実際の例では、弱い参照はメンバー変数として保持される場合が多いでしょう。以下の例では、<code>nsObservable</code> は、イベントを報告するために、それぞれのオブザーバーへの参照を保持する必要があります。しかし、<code>nsObservable</code> は、ダングリングポインターを防ぐためだけにオブザーバーを保持するのは、望ましくありません。そのため、<code><a href="ja/NsIObserver">nsIObserver</a></code> への所有する参照を保持する代わりに、弱い参照を保持します。弱い参照は、人為的にオブザーバーの生存期間を伸ばしたりしません。その上、ダングリングすることもしないのです。
+</p><p>以下では、渡されてくる <code>nsIObserver</code> が <code>nsISupportsWeakReference</code> も実装していると仮定しています。一つのオブザーバーの管理の仕方を参考にすれば、オブザーバーのリストの管理の仕方について推測することはできるでしょう。
+</p>
+<pre class="eval">class nsObservable
+ {
+ public:
+ // ...
+ nsresult AddObserver( nsIObserver* );
+ nsresult NotifyObservers( nsIMessage* );
+ // ...
+ private:
+ nsWeakPtr mObserver;
+ // ...あるいはここにオブザーバーのリストがあると想像してください
+ };
+
+// ...
+
+nsresult
+nsObservable::AddObserver( nsIObserver* aObserver )
+ {
+ mObserver = getter_AddRefs( NS_GetWeakReference(aObserver) );
+ // ...あるいはこれをオブザーバーのリストに追加してください
+ return NS_OK;
+ }
+
+nsresult
+nsObservable::NotifyObservers( nsIMessage* aMessage )
+ {
+ nsCOMPtr&lt;nsIObserver&gt; observer = do_QueryReferent(mObserver);
+ if ( observer )
+ observer-&gt;NoticeMessage(aMessage);
+ else
+ mObserver = 0;
+ // あるいはこのオブザーバーをリストから取り除くことで、それはなくなってしまうでしょう
+ return NS_OK;
+ }
+
+// ...
+</pre>
+<p><code>nsWeakPtr</code> が <code>nsCOMPtr</code> とちょうど同じインタフェースを持つことがキーになります。実は、<code>nsWeakPtr</code> はこのように定義されています。
+</p>
+<pre class="eval">typedef nsCOMPtr&lt;nsIWeakReference&gt; nsWeakPtr;
+</pre>
+<h3 id="こりゃ最低だ!"> こりゃ最低だ! </h3>
+<p>この弱い参照の実装があなたが望むインタフェースを提供しないことに、おそらく今までに気づいたでしょう。
+</p>
+<h4 id="なぜ、弱い参照の上の私のインタフェースメソッドを直接呼べないのでしょうか?"> なぜ、弱い参照の上の私のインタフェースメソッドを直接呼べないのでしょうか? </h4>
+<p>あなたは、この弱い参照の仕組みを使って、あなたが実際に使いたいインタフェースを実装するポインターを得られることを望んでいるでしょう。例えば、
+</p>
+<pre class="eval">// 注: 実際にはこのような実装ではありません
+nsWeakPtr&lt;nsIFoo&gt; weakFooPtr = fooPtr;
+// ...
+if ( weakFooPtr )
+ status = weakFooPtr-&gt;SomeFooMethod(...);
+</pre>
+<p>これは、合理的な要求です。しかし、自動的に実装するのは、とても高くつくのです。継承でも、テンプレートでも、マクロでも自動的にすべてのメソッド呼び出しを実際のオブジェクトへ転送するのを支援してくれません。XPIDL は、(もし修正すれば) そのような実装を作成できるかもしれません。そうでなければ、上で議論したようなことを手で書くことができます。極わずかですが、その他のコストもあります。それは、間接呼び出しにより、呼び出しごとにかかる余分なコストです。そして単純な実装では、対象実装へのインタフェースごとに余分なポインターを追加します。
+</p>
+<h4 id="なぜペアの間で単に_QueryInterface_できないのでしょうか?"> なぜペアの間で単に <code>QueryInterface</code> できないのでしょうか? </h4>
+<p>あなたが保持している <code><a href="ja/NsIWeakReference">nsIWeakReference</a></code> は、本当に単に対象のオブジェクト上のインタフェースのように感じられるでしょう。二つの間で単に <code>QueryInterface</code> を実行したいのは、合理的なことです。なぜ余分な呼び出し <code>GetWeakReference</code> と <code>QueryReferent</code> が必要なのでしょうか ? 弱い参照が実際に対象のオブジェクトに集約されていれば可能なように思えます。
+</p><p>ここでの問題は、<code>QueryInterface</code> です。<code>QueryInterface</code> は、COM が動作するのに必要な多くのことを満たす必要があります。これらの要求の元では、同じ (集約する) オブジェクトに対して同じインタフェースの QueryInterface を呼び出した場合は、同じ結果にならなければなりません。これは、どのインタフェースポインターを通じて呼び出そうとも、いつ呼び出そうとも要求されることです。我々の状況では、これは不可能です。なぜなら、それは、明らかに集約の部分を破壊可能であるという事実があるためです。後続の処理で、その部分へ到着しようとしても <code>nsnull</code> が返ります。時々、弱いポインターを通じた <code>QueryInterface</code> が「本当の」インタフェースを返すでしょう。そして時々 <code>nsnull</code> を返すのです。それは、単に COM を壊すことになります。
+</p><p>このように、弱い参照が対象オブジェクトへと集約されないのは明らかです。それため、それらの間を動くのに <code>QueryInterface</code> を使うことはできません。これは、より便利に感じられると思いますが、グローバルルーチンの <code>NS_GetWeakReference</code> を使うと、対象のオブジェクトから弱い参照を得ることができます。そして、<code>nsIWeakReference::QueryReferent</code> が、逆の方向に対して <code>QueryInterface</code> と同じ機能を提供します。付け加えると、現在、<code>nsCOMPtr</code> は、新しいキーの <code>do_QueryReferent</code> をサポートするようになり、人生をいくぶんシンプルにしてくれています。
+</p>
+<h3 id="クラスが弱い参照をサポートするようにするにはどうすればよいでしょうか?"> クラスが弱い参照をサポートするようにするにはどうすればよいでしょうか? </h3>
+<p>単に <code><a href="ja/NsSupportsWeakReference">nsSupportsWeakReference</a></code> を継承するだけです。ミックスインクラスがすべての作業を行ってくれます。そして、あなたの <code>QueryInterface</code> を適宜変えてください。例えば、
+</p>
+<pre class="eval">//...
+<strong>#include "nsWeakReference.h"</strong>
+
+class nsFoo : public nsIFoo, ...<strong>, public nsSupportsWeakReference</strong> { ... };
+
+
+// ...if you used the table macros to implement |QueryInterface|, add an entry
+
+NS_INTERFACE_MAP_BEGIN(nsFoo)
+ // ...
+ <strong>NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)</strong>
+ // ...
+NS_INTERFACE_MAP_END
+
+
+// ...if you used a |NS_IMPLE_QUERYINTERFACEn| macro, move up to the next higher one and add a term
+
+NS_IMPL_QUERYINTERFACE<strong>n+1</strong>( ...<strong>,nsISupportsWeakReference</strong>)
+
+
+// ...if you implemented |QueryInterface| by hand, add a clause
+
+NS_IMETHODIMP
+nsFoo::QueryInterface( REFNSIID aIID, void** aInstancePtr )
+ {
+ // ...
+ <strong>else if ( aIID.Equals(nsCOMTypeInfo&lt;nsISupportsWeakReference&gt;::GetIID()) )
+ *aInstancePr = NS_STATIC_CAST(nsISupportsWeakReference*, this);</strong>
+ // ...
+ }
+</pre>
+<h3 id="代替手段"> 代替手段 </h3>
+<p>This technique is useful, but in situations where you need this, there are two alternatives which you may want to consider:
+</p>
+<ul><li> You might hold an owning reference, but arrange to <code>Release</code> it out-of-band; this must be before the destructor, which would otherwise never be called.
+</li><li> You might hold a raw pointer (without <code>AddRef</code>ing and <code>Release</code>ing it), and avoid using it in cases where it might dangle.
+</li></ul>
+<h3 id="参考資料"> 参考資料 </h3>
+<ul><li> The source
+<ul><li> <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/base/nsIWeakReference.idl" rel="custom">xpcom/base/nsIWeakReference.idl</a></code>
+</li><li> <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsWeakReference.h" rel="custom">xpcom/glue/nsWeakReference.h</a></code>
+</li><li> <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsWeakReference.cpp" rel="custom">xpcom/glue/nsWeakReference.cpp</a></code>
+</li></ul>
+</li><li> <a href="ja/XPCOM_ownership_guidelines">XPCOM ownership guidelines</a>
+</li><li> <a href="ja/Using_nsCOMPtr">Using nsCOMPtr</a>
+</li></ul>
+<div class="originaldocinfo">
+<h2 id="原文書の情報"> 原文書の情報 </h2>
+<ul><li> 著者: <a class="external" href="http://ScottCollins.net/">Scott Collins</a>
+</li><li> 最終更新日: September 23, 2000
+</li><li> 著作権: Portions of this content are © 1998–2007 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">詳細</a>
+</li></ul>
+</div>
+<div class="noinclude">
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/wrappedjsobject/index.html b/files/ja/mozilla/tech/xpcom/wrappedjsobject/index.html
new file mode 100644
index 0000000000..a51dd2a630
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/wrappedjsobject/index.html
@@ -0,0 +1,104 @@
+---
+title: wrappedJSObject
+slug: Mozilla/Tech/XPCOM/wrappedJSObject
+tags:
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/wrappedJSObject
+---
+<p><code>wrappedJSObject</code>は<a href="ja/XPConnect">XPConnect</a>ラッパで利用できることがあるプロパティです。利用できる場合、それはあなたに、ラッパによって隠蔽されたJavaScriptオブジェクトへのアクセスを可能にします。
+</p><p><code>wrappedJSObject</code>プロパティをサポートするXPConnectラッパには2つの種類があります:
+</p>
+<ul><li> 内容領域のオブジェクトを操作する際にクロムのコードを保護するために使われる<a href="ja/XPCNativeWrapper">XPCNativeWrapper</a>。詳細な情報は<a href="ja/XPCNativeWrapper">XPCNativeWrapper</a>のページを参照してください。
+</li><li> 例えばJavaScriptによって実装されたXPCOMコンポーネントを使う時などに遭遇する、一般的なXPConnectラッパ。
+</li></ul>
+<p>この項では後者、つまり、コンポーネントが持つプロパティやメソッドのうちxpidlによってサポート済みと宣言されたインターフェースには含まれていない物を隠蔽する種類のラッパについて解説しています。
+</p><p>以下、XPConnectラッパが何をするものなのかという事と、<code>wrappedJSObject</code>がそれを迂回するためにどのように使われるのかについて紹介しましょう。
+</p><p><span id="Example_component"></span>
+</p>
+<h3 id="例となるコンポーネント"> 例となるコンポーネント </h3>
+<p><code>wrappedJSObject</code>プロパティがどのように働くのかを見るためには、JavaScriptによって実装されたXPCOMコンポーネントの例が必要です。コンポーネントの作成方法の詳細については<a href="ja/How_to_Build_an_XPCOM_Component_in_Javascript">JavaScriptでのXPCOMコンポーネントの作成方法</a>を参照してください。
+</p><p>簡単のため、コンポーネントを登録するためのコードは省略します。以下のコンポーネントが<code>@myself.com/my-component;1</code>というコントラクトIDで登録されているものと仮定してください。
+</p>
+<pre class="eval">// コンストラクタ
+function HelloWorld() {
+};
+
+HelloWorld.prototype = {
+ hello: function() {
+ return "Hello World!";
+ },
+
+ QueryInterface: function(aIID)
+ {
+ if (!aIID.equals(Components.interfaces.nsISupports) &amp;&amp;
+  !aIID.equals(Components.interfaces.nsIHelloWorld))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ }
+};
+</pre>
+<p><span id="XPConnect_wrapping"></span>
+</p>
+<h3 id="XPConnectによるラッピング"> XPConnectによるラッピング </h3>
+<p>それでは上記のコンポーネントへの参照を取得してみましょう。この例では <code>getService</code>を使用していますが、XPCOMから参照を取得する限りにおいては、コンポーネントは常に、XPConnectによってこれと同様にラップされます:
+</p>
+<pre class="eval">var comp = Components.classes["@myself.com/my-component;1"].getService();
+</pre>
+<p>コンポーネントの実装において定義した<code>hello()</code>メソッドを呼び出そうとした場合、このような結果が得られます:
+</p>
+<pre class="eval">&gt; comp.hello();
+TypeError on line 1: comp.hello is not a function
+</pre>
+<p>これは、前述した説明のとおり、<code>comp</code>が<code>HelloWorld</code>のインスタンスのJavaScriptオブジェクトそのものではなく、XPConnectラッパによって包まれた物であるために起こります:
+</p>
+<pre class="eval">&gt; dump(comp);
+[xpconnect wrapped nsISupports]
+</pre>
+<p>これらのラッパは、JavaScriptによって実装されたXPCOMコンポーネントを他のXPCOMコンポーネントと全く同じようにユーザに対して見せるようにするという発想に基づいています。これはそのコンポーネントの公開されたインターフェースを明確にし、コンポーネントの内部データを保護する役割も提供します。
+</p><p>このラッパに対しては<code>QueryInterface</code>メソッドの呼び出しが利用できますが、それはこのメソッドが<code>nsISupports</code>インターフェースにおいて定義されており、ラッパ自身が、自分がラップしているオブジェクトが<code>nsISupports</code>インターフェースを実装している事を知っているからです:
+</p>
+<pre class="eval">&gt; comp.QueryInterface(Components.interfaces.nsIHelloWorld);
+[xpconnect wrapped (nsISupports, nsIHelloWorld)]
+</pre>
+<p>この例に見られるように、<code>QueryInterface</code>の呼び出しは、そのラッパに対して、そのコンポーネントが他のインターフェースを実装している事を教えます。<code>nsIHelloWorld</code>インターフェースにおいて<code>hello</code>メソッドが定義されていると仮定すると、それは以下のように呼び出せます:
+</p>
+<pre class="eval">&gt; comp.hello()
+Hello World!
+</pre>
+<p>この挙動は、そのコンポーネントに対してアクセスするために使われるべきインターフェースを明示的に定義し、コードの開発においてそれを使うよう強制する上で、良い仕組みと言えます。しかし、コンポーネントを試作する場合においてまでインターフェースの定義をいちいち書かなくてはならない(そしてそれを変更する度に再コンパイルしないといけない)のは不便です。
+</p><p><span id="Meet_&lt;code>wrappedJSObject&lt;/code>"></span>
+</p>
+<h3 id="wrappedJSObjectの利用"> <code>wrappedJSObject</code>の利用 </h3>
+<p>XPConnectは、それによってラップされたオブジェクト自身が許可している場合、<code>wrapper.wrappedJSObject</code>プロパティを用いて、ラッパを迂回してその中にあるJavaScriptオブジェクトに直接アクセスすることを許容します。
+</p><p>より具体的に言うと、<a href="https://dxr.mozilla.org/mozilla-central/source/js/src/xpconnect/idl/nsIXPConnect.idl" rel="custom">XPConnectのソース中のコメント</a>にあるとおり、<code>comp.wrappedJSObject</code>は以下の3つの条件が満たされている場合に利用できます:
+</p>
+<ul><li> <code>comp</code>が本当にJavaScriptオブジェクトをラップしたXPConnectラッパであること。JavaScriptオブジェクト以外に対するラッパはこのプロパティを持ちません。
+</li><li> ラップされたオブジェクトが<code>wrappedJSObject</code>プロパティを持っており、そのプロパティが値としてJavaScriptオブジェクトを返すこと。
+</li><li> <code>nsIXPCSecurityManager</code>がアクセスを許可していること。(詳細はソース中のコメントを参照してください。Mozilla拡張機能やアプリケーションにおいては大抵の場合は問題ありません。)
+</li></ul>
+<p>これは、コンポーネントを実装しているJavaScriptオブジェクトに直接アクセスできるようにするためにコンポーネントを修正する必要があるということです。例えば以下のようにします:
+</p>
+<pre class="eval">function HelloWorld() {
+ <b>this.wrappedJSObject = this;</b>
+};
+</pre>
+<p>これで、コンポーネントを直接取得できるようになりました:
+</p>
+<pre class="eval">var comp = Components.classes["@myself.com/my-component;1"]
+ .getService()<b>.wrappedJSObject</b>;
+</pre>
+<p>これは本物のJavaScriptオブジェクトです:
+</p>
+<pre class="eval">&gt; comp
+[object Object]
+</pre>
+<p>なので、あらゆるプロパティにアクセスすることができます:
+</p>
+<pre class="eval">&gt; comp.hello();
+Hello World!
+</pre>
+<p>この機能は、試作を手軽に行うために利用できるほか、型が不定なJavaScriptの値をコンポーネントに簡単に渡すためにも利用できます。(具体的には、<a href="ja/Working_with_windows_in_chrome_code#Using_an_XPCOM_singleton_component">完全なJavaScriptのデータを共有する</a>など。)
+</p>
+<div class="noinclude">
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/xpcom_abi/index.html b/files/ja/mozilla/tech/xpcom/xpcom_abi/index.html
new file mode 100644
index 0000000000..fe6136238f
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/xpcom_abi/index.html
@@ -0,0 +1,54 @@
+---
+title: XPCOM ABI
+slug: Mozilla/Tech/XPCOM/XPCOM_ABI
+tags:
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/XPCOM_ABI
+---
+<p><a href="ja/XPCOM">XPCOM</a> <abbr title="Application Binary Interface">ABI</abbr>は、XPCOMコンポーネントのバイナリインターフェースです。スクリプト言語(<a href="ja/JavaScript">JavaScript</a>など)によって書かれたXPCOMコンポーネントは、特に改変をしなくてもプラットフォーム(WindowsやOS Xなど)を越えて動作させられますが、コンパイルが必要な言語(C++など)で書かれたコンポーネントの場合、異なるプラットフォームで動かすためには再コンパイルが必要です。コンパイルされたXPCOMコンポーネントは多くの場合、「バイナリ」や「ネイティブ」などと呼ばれます。
+</p><p>一つのバイナリXPCOMコンポーネントは、すべてのプラットフォームで利用できる<code>.xpt</code>ファイルと、特定のプラットフォーム用で且つ特定のABIを持った<abbr title="Dynamic Link Library">DLL</abbr>(Windowsでは<code>.dll</code>、Linuxでは<code>.so</code>)から成ります。このABIを利用するアプリケーションだけが、このXPCOMコンポーネントを利用することができます。簡単に言えば、特定のABI用にビルドされたXPCOMコンポーネントは、同じABI用にビルドされたFirefox、Thunderbird、その他のXULRunnerアプリケーションに対してのみ互換性があります。
+</p><p><span id="ABI_Naming"></span>
+</p>
+<h2 id="ABIのネーミング">ABIのネーミング</h2>
+<p>各々のABIは、以下の形式の<sup><a href="https://developer.mozilla.org/ja/docs/XPCOM_ABI#endnote_TARGET_XPCOM_ABI">[TARGET_XPCOM_ABI]</a></sup>文字列によって名付けられています。:
+</p>
+<pre class="eval"><i>{CPU_ARCH}</i>-<i>{TARGET_COMPILER_ABI}</i>
+</pre>
+<p><i>{CPU_ARCH}</i><sup><a href="https://developer.mozilla.org/ja/docs/XPCOM_ABI#endnote_Platforms">[Platforms]</a></sup>は、以下のいずれかのCPUのアーキテクチャを意味します:
+</p>
+<ul><li> <code>x86</code> - i386およびそれ以降のシリーズ(x86-64 CPUの32bitモードも含みます)
+</li><li> <code>ppc</code> - PowerPCシリーズ
+</li><li> <code>Alpha</code> - Alphaシリーズ
+</li><li> <code>x86_64</code> - 64bitモードのAMD64/EMT64シリーズ(32bitモードの場合は<code>x86</code>と見なされます)
+</li><li> <code>sparc</code> - SPARCシリーズ
+</li><li> <code>ia64</code> - Itaniumシリーズ
+</li></ul>
+<p><i>{TARGET_COMPILER_ABI}</i><sup><a href="https://developer.mozilla.org/ja/docs/XPCOM_ABI#endnote_Platforms">[Platforms]</a></sup>は、以下のいずれかのコンパイラのABIを意味します:
+</p>
+<ul><li> <code>msvc</code> - Microsoft Visual C++
+</li><li> <code>n32</code> - IRIX 6 C++ Compiler
+</li><li> <code>gcc2</code> - GNU C++ Compiler 2.x
+</li><li> <code>gcc3</code> - GNU C++ Compiler 3.x or 4.x
+</li><li> <code>sunc</code> - Sun C++ Compiler
+</li><li> <code>ibmc</code> - IBM C++ Compiler
+</li></ul>
+<p>例:
+</p>
+<ul><li> Intel Pentiumプロセッサ用のGNU C++ Compiler 4.0.0によってビルドされたFirefoxは、<code>x86-gcc3</code>というXPCOM ABIを持ちます。
+</li></ul>
+<p>XPCOM ABI文字列は、<a href="ja/NsIXULRuntime">nsIXULRuntime</a>を使うことによってプログラムから取得できます。あなたのFirefoxあるいはThunderbirdのABIを取得するには、エラーコンソールを開いて(<code>ツール | エラーコンソール</code>から開けます)以下のJavaScriptコードを実行してください:
+</p>
+<pre class="eval">Components.classes["@mozilla.org/xre/app-info;1"]
+ .getService(Components.interfaces.nsIXULRuntime)
+ .XPCOMABI
+</pre>
+<p>もしCPUのアーキテクチャもしくはC++コンパイラのいずれかが未知の場合は、アプリケーションはXPCOM ABI文字列を持たず、それを取得しようと試みた際にはNS_ERROR_NOT_AVAILABLEというエラーを起こすでしょう。それは特徴的なABIだと思われますが、しかし私たちはそれに対して付ける名前を持っていません。
+</p><div class="blockIndicator note"><strong>註:</strong> Platforms</div> これは利用可能なCPUアーキテクチャやコンパイラのABIの完全なリストではありません。最新の情報は常に、ビルドシステムの中を探索することで見つけられるでしょう。
+<div class="blockIndicator note"><strong>註:</strong> TARGET_XPCOM_ABI</div> Mozillaのビルドシステムでは、XPCOM ABIを保持している変数は<code>TARGET_XPCOM_ABI</code>です。(これは内部の詳細情報で、拡張機能の開発者にとっては無関係です。)
+<p><span id="Extension_Installation"></span>
+</p>
+<h2 id="Extension_Installation_2">Extension Installation</h2>
+<p>アプリケーション(例:Firefox)がサポートするABIの名前は、ビルド時に埋め込まれます。その後、アプリケーションはサードパーティ製のバイナリXPCOMコンポーネントの互換性を調べるためにその値を使います。
+</p><p>互換性チェックとの共通点は、拡張機能のインストールの間にあります。もし、ある拡張機能がバイナリXPCOMを提供する場合、<a href="ja/Install_Manifests#targetPlatform">インストール定義</a>においてそれらのXPCOM ABIが宣言されているべきです。拡張機能の作者は、XPCOMコンポーネントをサポートしているマシンすべてのためにそれぞれビルド(コンパイル)して、<a href="ja/Bundles#Platform-specific_Subdirectories">プラットフォームごとのサブディレクトリ</a>に入れ、すべてのビルドを一つのXPIの中にパッケージングすることができます。拡張機能がインストールされる時、アプリケーションはそれ自身のABIに最も適したコンポーネントのビルドを選択します。もし適合するビルドが見つからなければ、その拡張機能は互換性がないと見なされ、アプリケーションはインストールを中断するでしょう。
+</p><p>もし、(<a href="#ABI_Naming">ABIのネーミング</a>で説明しているとおり、CPUアーキテクチャかC++コンパイラのいずれかが不明であった結果として)そのアプリケーションがXPCOM ABI文字列を持っていない場合、あなたはインストール定義などに記述するプラットフォーム名としてOSの名前を(XPCOM ABIを付けずに)使うべきです。
+</p>
diff --git a/files/ja/mozilla/tech/xpcom/xpcom_ownership_guidelines/index.html b/files/ja/mozilla/tech/xpcom/xpcom_ownership_guidelines/index.html
new file mode 100644
index 0000000000..a1f4a717dc
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/xpcom_ownership_guidelines/index.html
@@ -0,0 +1,37 @@
+---
+title: XPCOM ownership guidelines
+slug: Mozilla/Tech/XPCOM/XPCOM_ownership_guidelines
+tags:
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/XPCOM_ownership_guidelines
+---
+<h3 id="もしあなたがそれを作ったのであれば、それを所有している"> もしあなたがそれを作ったのであれば、それを所有している </h3>
+<p>...自然なことです。もしあなたが一時的なオブジェクトを作ったのであれば、明らかにそれを破壊するのはあなたの責任です。それは確かに所有の徴候です。もしあなたがより長い生存期間を持つオブジェクトを作ったのであれば、あなたは所有権を失うまでそれを所有することになるでしょう。
+</p><p>すべての「factory」と「getter」関数は所有するポインターを作り出す。
+</p><p>そのような関数は、より長い生存期間を持つオブジェクトを作る絶好の例です。そして、(すでに <code>AddRef</code> を実行したポインターをつくり出すことで) 所有権を (この場合は呼び出し元に) 与えます。これはファクトリ関数にとってすばらしいことです。しかし単なる「getter」にとっては問題となりうるかもしれません。しばらくの間しかアクセスが必要ないのであれば、運が悪いということになります。後者の場合、ポインタをキャッシュした場合、あなたはデフォルトの所有者になります。これは、適切でないかも知れません。そして、問題のオブジェクトがあなたのクエリに対して作られのかどうかを知らずに修正するのは大変かもしれません。
+</p>
+<h3 id="それを必要としているかどうかは、それを所有していることの正当な理由にはならない"> それを必要としているかどうかは、それを所有していることの正当な理由にはならない </h3>
+<p><b>あなた</b>が<b>オブジェクト</b>を必要としているからと言って、そのオブジェクトを所有しているわけではありません。実際、しばしば<b>オブジェクト</b>が<b>あなた</b>を必要としているために、そのオブジェクトを所有していることがあります。
+</p>
+<h3 id="もしあなたがオブジェクトを所有しているのならば、それはあなたを所有すべきではない。"> もし<b>あなた</b>が<b>オブジェクト</b>を所有しているのならば、それはあなたを所有すべきではない。</h3>
+<p>推移的な意味でもそのことが言えます。<span style="color: darkgreen; background: #ef9;">【訳注: A が B を所有し、B が C を所有する場合、C が A を所有してはいけない】</span> 違う表現をすると: どんなシステムにおいても所有権のグラフは非循環的でなければなりません。所有権の循環が存在する場合、デストラクターによって自動的に処理されない場合があります。循環を断ち切るには、参加者が個別に解放する前に、特別なコードが提供されて呼ばれなければなりません。
+</p>
+<h3 id="オブジェクトの生存期間があなたより長いことが保証されているのであれば、そのオブジェクトを所有する必要はない"> オブジェクトの生存期間があなたより長いことが保証されているのであれば、そのオブジェクトを所有する必要はない </h3>
+<p>例えば、それがあなたを所有している時です。
+</p>
+<h3 id="親は自分の子を所有する_そして逆ではない"> 親は自分の子を所有する (そして逆ではない) </h3>
+<p>親は自分の子を所有する<b>必要</b>はないかもしれませんが。例えば、ツリーはその中にあるすべてのノードを所有するかもしれません。ツリーのすべてのノードが、お互いを非所有的なポインターでポイントしているかもしれません。しかしながら、最も単純な枠組では、親は自分の子を所有的なポインターでポイントし、子は自分の親を非所有的なポインターで指し返します。
+</p>
+<h3 id="コンテナは、自分が含むものを所有する_そして逆ではない"> コンテナは、自分が含むものを所有する (そして逆ではない) </h3>
+<h3 id="所有するポインターを実装するために、nsCOMPtr_を使いなさい"> 所有するポインターを実装するために、<code>nsCOMPtr</code> を使いなさい </h3>
+<p>それは、明示的で効果的、かつとても頑丈です。「getter」と「setter」を書くのは簡単です。そしてあなたはデストラクターに何も書く必要がありません。
+</p>
+<div class="originaldocinfo">
+<h2 id="原文書の情報"> 原文書の情報 </h2>
+<ul><li> 著者: <a class="external" href="http://www.meer.net/ScottCollins/">Scott Collins</a>
+</li><li> 最終更新日: May 8, 2003
+</li><li> 著作権: Copyright© 1999 by Netscape; use is subject to the <a class="external" href="http://www.mozilla.org/NPL/">NPL</a>. Portions of this content are © 1998–2007 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">詳細</a>
+</li></ul>
+</div>
+<div class="noinclude">
+</div>
diff --git a/files/ja/mozilla/tech/xpcom/xptcall_faq/index.html b/files/ja/mozilla/tech/xpcom/xptcall_faq/index.html
new file mode 100644
index 0000000000..340d8c6940
--- /dev/null
+++ b/files/ja/mozilla/tech/xpcom/xptcall_faq/index.html
@@ -0,0 +1,76 @@
+---
+title: xptcall FAQ
+slug: Mozilla/Tech/XPCOM/xptcall_FAQ
+tags:
+ - XPCOM
+ - 'XPCOM:Language Bindings'
+ - XPConnect
+translation_of: Mozilla/Tech/XPCOM/xptcall_FAQ
+---
+<h2 id="_What_is_xptcall.3F_" name="_What_is_xptcall.3F_"><code>xptcall</code> とは何ですか?</h2>
+<p><code>xptcall</code> は、低レベルの XPCOM メソッド呼び出しのための小さなライブラリです。プラットフォーム固有の C/C++ とアセンブラ言語のコードを使って実装されています。異なる言語間の呼び出しと異なるスレッドへのメソッド呼び出しを容易にするためのものです。 Mozillaをあらゆるプラットフォーム上で動作させるためには、このコードを移植する必要があります。</p>
+
+
+
+<h2 id="_Why_does_xptcall_exist.3F_" name="_Why_does_xptcall_exist.3F_">なぜ <code>xptcall</code> があるのですか?</h2>
+<p><code>xptcall</code> があるのは、以下の二つの理由によります:</p>
+<ol>
+ <li>XPCOM インタフェースの任意のメソッドを実行できるようにするため。</li>
+ <li>任意の XPCOM インタフェースを実装しているかのように、動的に振舞いを変えられるようにするため。</li>
+</ol>
+<p>どちらの仕組みも <a href="/ja/docs/XPConnect">XPConnect</a> にとって必要なものです。また、<code><a href="/ja/docs/NsISupports_proxies">xpcom/proxy</a></code> もこれらの仕組みを利用しています。将来的には、他のサブシステムでも使われるかもしれません。</p>
+<p><code>xptcall</code> のアプローチの方が、スタブコードの生成により、すべてのインタフェースの呼び出しと実装をサポートするアプローチよりも良いということで、選択されました。この <code>xptcall</code> のアプローチは、コアなプラットフォーム固有のコードを必要とします。しかし、メモリ使用量が最小で済み、そして任意の正当な XPCOM インタフェースとともに動作できるように拡張できます。しかも各プラットフォームごとに追加のコンパイル済みコードを付加する必要がないのです。</p>
+
+
+
+<h2 id="_What_does_xptcall_really_do.3F_" name="_What_does_xptcall_really_do.3F_"><code>xptcall</code> は、実際には何をするのでしょうか?</h2>
+<p>これが、コアとなる <i>invoke</i> 関数の宣言です:</p>
+
+<pre class="brush:text">XPTC_PUBLIC_API(nsresult)
+XPTC_InvokeByIndex(nsISupports* that,
+ PRUint32 methodIndex,
+ PRUint32 paramCount,
+ nsXPTCVariant* params);
+</pre>
+
+<p><code>nsXPTCVariant</code> は、共用体のデータです。これは、目的の関数にパラメータとして渡される型で区別されます (型として <code>void*</code> も使えるので、任意のポインター型を表現することができます)。</p>
+<p>正しいパラメータセットを与えることで、この関数を使って任意の XPCOM インタフェースの任意のメソッドを呼び出すことができます。 XPConnect は、<a href="http://www.mozilla.org/scriptable/typelib_file.html">タイプライブラリ</a> ファイルの情報を使用して、任意の XPCOM インタフェースを JavaScript にマッピングし、<code>XPTC_InvokeByIndex</code> を使って JavaScript から XPCOM を呼び出すことができるようになります。タイプライブラリの情報を使うことで、 XPConnect は、関数のパラメータを変換でき、そしてこの呼び出しをするのに必要な <code>nsXPTCVariant</code> 型の配列を組み立てることができます。</p>
+<p><code>xptcall</code> の <i>スタブ</i> (あるいは偽装) の仕組みにより、実行時に、任意の XPCOM インタフェースのふりをすることができるクラスを実装できるようになります。これは、<code>xptcall</code> が、関数の汎用的なスタブへのポインタが並べられた vtbl を提供することで実現されます。これらのスタブは、呼び出しを共通の関数に転送します。この共通の関数は、タイプライブラリの情報を使って、パラメータを取り出します。そして、プラットフォーム固有の呼び出し規約に従って、パラメータを保持するバリアント型の配列を組み立てます。その後、継承したメソッドを呼び出すことで、任意の処理を実行することができます。このコードは、呼び出しから戻る時に、プラットフォーム固有の後始末も行います。</p>
+<p>これらはすべて動作しており、現在、<a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/reflect/xptcall/status.html" rel="custom">様々なプラットフォーム</a> 上の Mozilla で使われています。</p>
+
+
+
+<h2 id="_Why_cant_xptcall_just_be_implemented_in_C_or_C.2B.2B.3F_" name="_Why_can't_xptcall_just_be_implemented_in_C_or_C.2B.2B.3F_">なぜ <code>xptcall</code> を、単に C や C++ で実装することができないのですか?</h2>
+<p>これらの二つの仕組みでは、完全にクロスプラットフォームにできないからです。あるいは、汎用的にすべて C や C++ で行うこともできないからです。それがどうしてなのかを、ひとつずつ見てみましょう。</p>
+<p><i>invoke</i> では、任意の呼び出しのフレームを組み立てて、それを実行できるコードが必要になります。C++ のコンパイラは、そのような呼び出しのフレームをいつも組み立てています。しかし、コンパイラは、呼び出し先の固有のシグネチャーのためにカスタマイズしたフレームを <i>コンパイル時に</i> 組み立てます。 <code>xptcall</code> は、任意の正当な XPCOM メソッドシグネチャーを呼び出せなければなりません。そしてシグネチャーは実行時に特定する必要があるのです。</p>
+<p><i>stubs</i> は、任意の XPCOM インタフェースのすべてのメソッド (祖先のメソッドも含む) の全ての vtbl を実装しているかのように振舞わなければなりません。これを行ういくつかの方法があります。実行時にコンパイラを動かして、スタブの動的に組み立てとロードを行うことができます。あるいは、プラットフォーム固有のコードを書いて、インタフェース固有の vtbl とメソッドのスタブを組み立てる方法もあります。私は、ひとつの巨大な vtbl と多くの小さな汎用のスタブを使う方法を選びました。これにより、プラットフォーム固有のコードは可能な限り小さくなるのです。もう一度言うと、これをすべて行うコードを C で書くことはできません。 varargs を使って一部実現することはできますが、それでは十分ではありません。</p>
+<p>もし、何か確実な方法があって、クロスプラットフォームな方法で、かつ/またはアセンブラ言語のコードを使わずに必要な機能を実現することができるのであれば、教えてください。</p>
+
+
+
+<h2 id="_Is_xptcall_a_platform_requirement_for_Mozilla.3F_" name="_Is_xptcall_a_platform_requirement_for_Mozilla.3F_"><code>xptcall</code> は、Mozilla のプラットフォームとして必要なものですか?</h2>
+<p>はい。Mozilla は、<code>xptcall</code> がきちんと移植されていないと、正しく動作しないでしょう。無機能のスタブコードがあるので、サポートされていないプラットフォーム上でも <code>xptcall</code> をビルドできるようになっています。しかし XPConnect に依存しているブラウザ機能は、すべて実行に失敗するでしょう。プラットフォーム上で <code>xptcall</code> が機能しないと、問題が起きるでしょう。 <code>xptcall</code> が、どこででも動作するように取り組んでいく必要があります!</p>
+
+
+
+<h2 id="_What_platforms_are_supported.3F_" name="_What_platforms_are_supported.3F_">どのプラットフォームがサポートされていますか?</h2>
+<p>増加中のリストです:</p>
+<ul>
+ <li><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/reflect/xptcall/status.html" rel="custom">移植状況</a></li>
+</ul>
+
+
+
+<h2 id="Where_can_I_find_other_resources.3F" name="Where_can_I_find_other_resources.3F">他のリソースは、どこにあるでしょう?</h2>
+<p>コードは <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/reflect/xptcall" rel="custom">xpcom/reflect/xptcall</a></code> にあります。</p>
+<p>新しい移植のためのガイドは <code><a href="https://dxr.mozilla.org/mozilla-central/source/xpcom/reflect/xptcall/porting.html" rel="custom">xpcom/reflect/xptcall/porting.html</a></code> にあります。</p>
+<p>実装前の提案が <a href="http://www.mozilla.org/scriptable/zero-generated-code-proposal.html">ここ</a> と <a href="http://www.mozilla.org/scriptable/zero-ASM-proposal.html">ここ</a> にあります。</p>
+
+
+<div class="originaldocinfo">
+<h2 id="Original_Document_Information" name="Original_Document_Information">原文書の情報</h2>
+ <ul>
+ <li>著者: <a class="link-mailto" href="mailto:jband@netscape.com">John Bandhauer &lt;jband@netscape.com&gt;</a></li>
+ <li>初出: 1999 年 09 月 02 日</li>
+ </ul>
+</div>
diff --git a/files/ja/mozilla/tech/xpidl/generating_xpt_on_windows/index.html b/files/ja/mozilla/tech/xpidl/generating_xpt_on_windows/index.html
new file mode 100644
index 0000000000..e89dc3bf46
--- /dev/null
+++ b/files/ja/mozilla/tech/xpidl/generating_xpt_on_windows/index.html
@@ -0,0 +1,13 @@
+---
+title: Generating xpt on Windows
+slug: Mozilla/Tech/XPIDL/Generating_xpt_on_Windows
+tags:
+ - Embedding Mozilla
+ - Guide
+ - XULRunner
+translation_of: Mozilla/Tech/XPIDL/Generating_xpt_on_Windows
+---
+<p>Windows の <a href="/en-US/docs/Gecko_SDK">Gecko \ XUL Runner SDK</a> の最近のバージョンで <code>.idl</code> ファイルから <code>.xpt</code> ファイルを生成するには、 <code>typelib.py</code> スクリプトを使用する必要があります。 XULRunner SDK を <code>&lt;MOZSDKDIR&gt;</code> にインストールしたとすると、次の様なコマンドを実行する必要があります</p>
+
+<pre class="notranslate">C:\working-dir&gt; &lt;MOZSDKDIR&gt;\sdk\bin\typelib.py &lt;InputFile.idl&gt; -o &lt;OutputFile.xpt&gt; -I &lt;MOZSDKDIR&gt;\idl
+</pre>
diff --git a/files/ja/mozilla/tech/xpidl/index.html b/files/ja/mozilla/tech/xpidl/index.html
new file mode 100644
index 0000000000..475f27e8b3
--- /dev/null
+++ b/files/ja/mozilla/tech/xpidl/index.html
@@ -0,0 +1,560 @@
+---
+title: XPIDL
+slug: Mozilla/Tech/XPIDL
+tags:
+ - Developing Mozilla
+ - Guide
+ - NeedsContent
+ - XPCOM
+ - xpidl
+translation_of: Mozilla/Tech/XPIDL
+---
+<p><strong>XPIDL</strong> は <a href="ja/XPCOM">XPCOM</a> インターフェースクラスを指定するためのインターフェース記述言語 (Interface Description Language) です。</p>
+
+<div class="boxed translate-rendered">
+<p>インターフェース記述言語 (IDL) は言語やマシンから独立したインターフェースの記述に使われます。IDL は言語に依存しないインターフェース定義をツールで自動生成するために利用されるような、インターフェースの記述を可能にします。 XPIDL は、将来的に WebIDL に収束する予定です。</p>
+
+<div class="note">
+<p><strong>Note:</strong> Starting in {{Gecko("9.0")}}, the older <a href="https://developer.mozilla.org/en-US/docs/XPIDL/xpidl" title="XPIDL/xpidl">xpidl</a> utility, which was previously used to generate C++ header files, typelib information, and so forth has been replaced with <a href="https://developer.mozilla.org/en-US/docs/XPIDL/pyxpidl" title="XPIDL/pyxpidl">pyxpidl</a> in the <a href="https://developer.mozilla.org/en-US/docs/Gecko_SDK" title="Gecko SDK">Gecko SDK</a>. <a href="https://developer.mozilla.org/en-US/docs/XPIDL/pyxpidl" title="XPIDL/pyxpidl">pyxpidl</a> has been used for some time now, but now the older tool has been fully retired.</p>
+</div>
+
+<h2 id="Writing_XPIDL_interface_files" name="Writing_XPIDL_interface_files">Writing XPIDL interface files</h2>
+
+<p>XPIDL は <a class="external external-icon" href="http://www.omg.org/gettingstarted/omg_idl.htm">OMG IDL</a> によく似ており、 IID と追加の型を処理する拡張構文があります。いくつかの例は Mozilla tree の {{Source("xpcom/base")}} と {{Source("xpcom/ds")}} ディレクトリにあります。</p>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/en-US/docs/XPIDL/Syntax" title="XPIDL/Syntax">XPIDL:Syntax</a> (Now up to date again)</li>
+ <li><a class="external external-icon" href="http://www.mozilla.org/scriptable/xpidl/syntax.html">XPIDL syntax</a> (Out of date)</li>
+ <li><a class="external external-icon" href="http://www.mozilla.org/scriptable/xpidl/idl-authors-guide/index.html">XPIDL Author's Guide</a> (Not as out of date)</li>
+</ul>
+
+<h2 id="Explanation_of_IDL_semantics" name="Explanation_of_IDL_semantics">Explanation of IDL semantics</h2>
+
+<p>A full guide to the syntax can be found at <a href="https://developer.mozilla.org/en-US/docs/XPIDL/Syntax" title="XPIDL/Syntax">XPIDL:Syntax</a>, which is written in an ABNF form.</p>
+
+<p>An xpidl file is essentially just a series of declarations. At the top level, we can define typedefs, native types, or interfaces. Interfaces may furthermore contain typedefs, natives, methods, constants, or attributes. Most declarations can have properties applied to them.</p>
+
+<h3 id="Types">Types</h3>
+
+<p>There are three ways to make types: a typedef, a native, or an interface. In addition, there are a few built-in native types. The built-in native types are those listed under the type_spec production above. The following is the correspondence table:</p>
+
+<table class="standard-table">
+ <caption>Table 1: Standard IDL types</caption>
+ <thead>
+ <tr>
+ <th scope="col">IDL</th>
+ <th scope="col">C++ in parameter</th>
+ <th scope="col">C++ out parameter</th>
+ <th scope="col">JS type</th>
+ <th scope="col">Notes</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>boolean</code></td>
+ <td><code>bool</code></td>
+ <td><code>bool *</code></td>
+ <td>boolean</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>char</code></td>
+ <td><code>char</code></td>
+ <td><code>char *</code></td>
+ <td>string</td>
+ <td>Only chars in range \u0000-\u00ff permitted</td>
+ </tr>
+ <tr>
+ <td><code>double</code></td>
+ <td><code>double</code></td>
+ <td><code>double *</code></td>
+ <td>number</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>float</code></td>
+ <td><code>float</code></td>
+ <td><code>float *</code></td>
+ <td>number</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>long</code></td>
+ <td><code>int32_t</code></td>
+ <td><code>int32_t *</code></td>
+ <td>number</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>long long</code></td>
+ <td><code>int64_t</code></td>
+ <td><code>int64_t *</code></td>
+ <td>number</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>octet</code></td>
+ <td><code>uint8_t</code></td>
+ <td><code>uint8_t *</code></td>
+ <td>number</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>short</code></td>
+ <td><code>int16_t</code></td>
+ <td><code>int16_t *</code></td>
+ <td>number</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>string</code></td>
+ <td><code>const char *</code></td>
+ <td><code>char **</code></td>
+ <td>string</td>
+ <td>
+ <p>Only chars in range \u0000-\u00ff permitted</p>
+
+ <p>Most of the time you don't want to use this type but AUTF8String or ACString</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>unsigned long</code></td>
+ <td><code>uint32_t</code></td>
+ <td><code>uint32_t *</code></td>
+ <td>number</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>unsigned long long</code></td>
+ <td><code>uint64_t</code></td>
+ <td><code>uint64_t *</code></td>
+ <td>number</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>unsigned short</code></td>
+ <td><code>uint16_t</code></td>
+ <td><code>uint16_t *</code></td>
+ <td>number</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>wchar</code></td>
+ <td><code>PRUnichar</code></td>
+ <td><code>PRUnichar *</code></td>
+ <td>string</td>
+ <td>Full Unicode set permitted</td>
+ </tr>
+ <tr>
+ <td><code>wstring</code></td>
+ <td><code>const PRUnichar *</code></td>
+ <td><code>PRUnichar **</code></td>
+ <td>string</td>
+ <td>
+ <p>Full Unicode set permitted</p>
+
+ <p>Most of the time you don't want to use this type but AString.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>In addition to this list, nearly every IDL file includes <code>nsrootidl.idl</code> in some fashion, which also defines the following types:</p>
+
+<table class="standard-table">
+ <caption>Table 2: Types provided by nsrootidl.idl</caption>
+ <thead>
+ <tr>
+ <th scope="col">IDL typedef</th>
+ <th scope="col">C++ in parameter</th>
+ <th scope="col">C++ out parameter</th>
+ <th scope="col">JS type</th>
+ <th scope="col">Notes</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>PRTime</code></td>
+ <td colspan="2" rowspan="1">(XPIDL <code>unsigned long long</code> typedef, 64 bits)</td>
+ <td rowspan="1">number</td>
+ <td rowspan="1">PRTime is in microseconds, while JS date assumes time in milliseconds</td>
+ </tr>
+ <tr>
+ <td><code>nsresult</code></td>
+ <td colspan="2" rowspan="1">(XPIDL <code>unsigned long</code> typedef, 32 bits)</td>
+ <td rowspan="1">number</td>
+ <td rowspan="1"></td>
+ </tr>
+ <tr>
+ <td><code>nsrefcnt</code></td>
+ <td colspan="2" rowspan="1">(XPIDL <code>unsigned long</code> typedef, 32 bits)</td>
+ <td rowspan="1">number</td>
+ <td rowspan="1"></td>
+ </tr>
+ <tr>
+ <td><code>size_t</code></td>
+ <td colspan="2" rowspan="1">(XPIDL <code>unsigned long</code> typedef, 32 bits)</td>
+ <td rowspan="1">number</td>
+ <td rowspan="1"></td>
+ </tr>
+ <tr>
+ <td><code>voidPtr</code></td>
+ <td><code>void *</code></td>
+ <td><code>void *</code></td>
+ <td>not allowed</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>charPtr</code></td>
+ <td><code>char *</code></td>
+ <td><code>char **</code></td>
+ <td>not allowed</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>unicharPtr</code></td>
+ <td><code>PRUnichar *</code></td>
+ <td><code>PRUnichar **</code></td>
+ <td>not allowed</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>nsIDRef</code></td>
+ <td><code>const nsID &amp;</code></td>
+ <td><code>nsID *</code></td>
+ <td>?</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>nsIIDRef</code></td>
+ <td><code>const nsIID &amp;</code></td>
+ <td><code>nsIID *</code></td>
+ <td>?</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>nsCIDRef</code></td>
+ <td><code>const nsCID &amp;</code></td>
+ <td><code>nsCID *</code></td>
+ <td>?</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>nsIDPtr</code></td>
+ <td><code>const nsID *</code></td>
+ <td><code>nsID **</code></td>
+ <td>?</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>nsIIDPtr</code></td>
+ <td><code>const nsIID *</code></td>
+ <td><code>nsIID **</code></td>
+ <td>?</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>nsCIDPtr</code></td>
+ <td><code>const nsCID *</code></td>
+ <td><code>nsCID **</code></td>
+ <td>?</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>nsIID</code></td>
+ <td><code>const nsIID</code></td>
+ <td><code>nsIID *</code></td>
+ <td>?</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>nsID</code></td>
+ <td><code>const nsID</code></td>
+ <td><code>nsID *</code></td>
+ <td>?</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>nsCID</code></td>
+ <td><code>const nsCID</code></td>
+ <td><code>nsCID *</code></td>
+ <td>?</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>nsQIResult</code></td>
+ <td><code>void *</code></td>
+ <td><code>void **</code></td>
+ <td>object</td>
+ <td>Should only be used with methods that act like QueryInterface</td>
+ </tr>
+ <tr>
+ <td><code>DOMString</code></td>
+ <td><code>const nsAString &amp;</code></td>
+ <td><code>nsAString &amp;</code></td>
+ <td>string</td>
+ <td>Full Unicode set permitted</td>
+ </tr>
+ <tr>
+ <td><code>AUTF8String</code></td>
+ <td><code>const nsACString &amp;</code></td>
+ <td><code>nsACString &amp;</code></td>
+ <td>string</td>
+ <td>Full Unicode set permitted (translated to UTF-8)</td>
+ </tr>
+ <tr>
+ <td><code>ACString</code></td>
+ <td><code>const nsACString &amp;</code></td>
+ <td><code>nsACString &amp;</code></td>
+ <td>string</td>
+ <td>Only chars in range \u0000-\u00ff permitted</td>
+ </tr>
+ <tr>
+ <td><code>AString</code></td>
+ <td><code>const nsAString &amp;</code></td>
+ <td><code>nsAString &amp;</code></td>
+ <td>string</td>
+ <td>Full Unicode set permitted</td>
+ </tr>
+ <tr>
+ <td><code>jsval</code></td>
+ <td><code>const jsval &amp;</code></td>
+ <td><code>jsval *</code></td>
+ <td>anything</td>
+ <td></td>
+ </tr>
+ <tr>
+ <td><code>jsid</code></td>
+ <td><code>jsid</code></td>
+ <td><code>jsid *</code></td>
+ <td>not allowed</td>
+ <td></td>
+ </tr>
+ </tbody>
+</table>
+
+<p>Typedefs in IDL are basically as they are in C or C++: you define first the type that you want to refer to and then the name of the type. Types can of course be one of the fundamental types, or any other type declared via a typedef, interface, or a native type.</p>
+
+<p>Native types are types which correspond to a given C++ type. Most native types are not scriptable: if it is not present in the list above, then it is certainly not scriptable (some of the above, particularly jsid, are not scriptable).</p>
+
+<p>The contents of the parentheses of a native type declaration (although native declarations without parentheses are parsable, I do not trust that they are properly handled by the xpidl handlers) is a string equivalent to the C++ type. XPIDL itself does not interpret this string, it just literally pastes it anywhere the native type is used. The interpretation of the type can be modified by having properties on the native declaration:</p>
+
+<table class="standard-table">
+ <caption>Table 3: Native type definitions</caption>
+ <tbody>
+ <tr>
+ <td>astring</td>
+ <td>This is an nsAString declaration. Overrides native string.</td>
+ </tr>
+ <tr>
+ <td>cstring</td>
+ <td>This is an nsACString declaration. Overrides native string.</td>
+ </tr>
+ <tr>
+ <td>domstring</td>
+ <td>This is an nsAString declaration. Overrides native string.</td>
+ </tr>
+ <tr>
+ <td>jsval</td>
+ <td>This type gets const when an in type. Special in typelib.</td>
+ </tr>
+ <tr>
+ <td>nsid</td>
+ <td>This type gets const when an in type. Special in typelib.</td>
+ </tr>
+ <tr>
+ <td>ptr</td>
+ <td>The type is really (native str)*</td>
+ </tr>
+ <tr>
+ <td>ref</td>
+ <td>The type is really (native str)&amp;</td>
+ </tr>
+ <tr>
+ <td>utf8string</td>
+ <td>This is an nsACString declaration whose text is UTF-8.</td>
+ </tr>
+ </tbody>
+</table>
+
+<p class="warning">As far as I can tell, these properties also apply to typedefs. Need to verify.</p>
+
+<h3 id="Constants">Constants</h3>
+
+<p>Constants are technically legal at the top level, but xpidl I forbids them from being placed there; instead, they must be in an interface. The only constants supported are those which become integer types when compiled to source code; string constants and floating point constants, though parseable, cannot be made into a header or xpt file.</p>
+
+<p>Constants are emitted in header files using anonymous enums, although there is an outstanding patch that combines adjacent constants into the same anonymous enums to quiet enum mismatch warnings.</p>
+
+<h3 id="Interfaces">Interfaces</h3>
+
+<p>Specifying interfaces is the primary purpose of using xpidl. Interfaces are basically a collection of constants, methods, and attributes; in Mozilla, these are the primary ways in which JavaScript code can interact with native C++ code. Furthermore, interfaces can also inherit from another interface. Every interface should inherit <a href="https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsISupports" title="nsISupports">nsISupports</a> in some fashion. However, it is generally not recommended to have a chain of interfaces inheriting from each other if you intend to have a chain of implementations for each interface, as it can cause problems in C++ code.</p>
+
+<table class="standard-table">
+ <caption>Table 4: Basic interface attributes</caption>
+ <thead>
+ <tr>
+ <th scope="col">Attribute</th>
+ <th scope="col">Interpretation</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>uuid(12345678-fedc-ba98-7654-0123456789ab)</code></td>
+ <td>This is the internal way this interface is accessed; it must be unique, and the uuid must be generated when creating the interface. After that, it doesn't need to be changed any more. For instructions on how to generate an UUID see <a href="https://developer.mozilla.org/en-US/docs/Generating_GUIDs" title="Generating GUIDs">Generating GUIDs</a>.</td>
+ </tr>
+ <tr>
+ <td><code>builtinclass</code></td>
+ <td>JavaScript classes are forbidden from implementing this interface. All children must also be marked with this property.</td>
+ </tr>
+ <tr>
+ <td><code>function</code></td>
+ <td>The JavaScript implementation of this interface may be a function that is invoked on property calls instead of an object with the given property</td>
+ </tr>
+ <tr>
+ <td><code>scriptable</code></td>
+ <td>This interface is usable by JavaScript classes. Must inherit from a <code>scriptable</code> interface.</td>
+ </tr>
+ <tr>
+ <td><code>deprecated</code></td>
+ <td>This interface should no longer be used. The compiler will emit warnings if you attempt to use this.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Methods_and_attributes">Methods and attributes</h3>
+
+<p>Interfaces declare a series of attributes and methods. Attributes in IDL are akin to JavaScript properties, in that they are a getter and (optionally) a setter pair. In JavaScript contexts, attributes are exposed as a regular property access, while native code sees attributes as a Get and possibly a Set method.</p>
+
+<p>Attributes can be declared readonly, in which case setting causes an error to be thrown in script contexts and native contexts lack the Set method, by using the "readonly" keyword.</p>
+
+<p>To native code, on attribute declared 'attribute type foo;' is syntactic sugar for the declaration of two methods 'type getFoo();' and 'void setFoo(in type foo);'. If foo were declared readonly, the latter method would not be present. Attributes support all of the properties of methods with the exception of <code>optional_argc</code>, as this does not make sense for attributes.</p>
+
+<p>There are some special rules for attribute naming. As a result of vtable munging by the MSVC++ compiler, an attribute with the name `IID' is forbidden. In addition, any attribute whose name matches the regex /^[a-z]{2,3}I[A-Z][a-z]/ is emitted with a warning, as its name looks like an nsIInterface or a mozIInterface declaration. Also like methods, if the first character of an attribute is lowercase in IDL, it is made uppercase in native code only.</p>
+
+<p>Methods define a return type and a series of in and out parameters. When called from a JavaScript context, they invocation looks as it is declared for the most part; some parameter properties can adjust what the code looks like. The calls are more mangled in native contexts.</p>
+
+<p>An important attribute for methods and attributes is scriptability. A method or attribute is scriptable if it is declared in a <code>scriptable</code> interface and it lacks a <code>noscript</code> or <code>notxpcom</code> property. Any method that is not scriptable can only be accessed by native code. However, scriptable methods must contain parameters and a return type that can be translated to script: any native type, save those declared with an <code>nsid</code>, <code>domstring</code>, <code>utf8string</code>, <code>cstring</code>, <code>astring</code>, or <code>jsval</code> property, may not be used in a scriptable method or attribute. An exception to the above rule is if the parameter has the <code>iid_is</code> property (a special case for some QueryInterface-like operations). In general, this means that the only usable native types are those declared in nsrootidl.idl (see above).</p>
+
+<p>Methods and attributes are mangled on conversion to native code. If a method is declared <code>notxpcom</code>, the mangling of the return type is prevented, so it is called mostly as it looks. Otherwise, the return type of the native method is nsresult, and the return type acts as a final outparameter if it is not void. The name is translated so that the first character is unconditionally uppercase; subsequent characters are unaffected. However, the presence of the <code>binaryname</code> property allows the user to select another name to use in native code (to avoid conflicts with other functions). For example, the method '[binaryname(foo)] void bar();' becomes 'nsresult Foo()' in native code (note that capitalization is still applied). However, the capitalization is not applied when using <code>binaryname</code> with attributes; i.e., <code>[binaryname(foo)] readonly attribute Quux bar;</code> becomes <code>Getfoo(Quux**)</code> in native code. Attributes named 'IID' and methods named 'GetIID' are forbidden, although this is checked before binaryname conversion.</p>
+
+<p>The <code>implicit_jscontext</code> and <code>optional_argc</code> parameters are properties which help native code implementations determine how the call was made from script. If <code>implicit_jscontext</code> is present on a method, then an additional JSContext *cx parameter is added just after the regular list which receives the context of the caller. If <code>optional_argc</code> is present, then an additional uint8_t _argc method is added at the end which receives the number of optional arguments that were actually used (obviously, you need to have an optional argument in the first place). Note that if both properties are set, the JSContext *cx is added first, followed by the uint8_t _argc, and then ending with return value parameter. Finally, as an exception to everything already mentioned, for attribute getters and setters the JSContext *cx comes before any other arguments.</p>
+
+<p>In addition, methods and attributes can be both marked as deprecated with the <code>deprecated</code> property, which causes compilers to emit deprecation usage warnings. Note that this is only verified in native code and not script code.</p>
+
+<p>The final native-only property is <code>nostdcall</code>. Normally, declarations are made in the stdcall ABI on Windows to be ABI-compatible with COM interfaces. Any non-scriptable method or attribute with <code>nostdcall</code> instead uses the thiscall ABI convention. Methods without this property generally use NS_IMETHOD in their declarations and NS_IMETHODIMP in their definitions to automatically add in the stdcall declaration specifier on requisite compilers; those that use this method may use a plain `nsresult' instead.</p>
+
+<h4 id="Source_and_Binary_Compatibility">Source and Binary Compatibility</h4>
+
+<p>Some consumers of IDL interfaces create binary plugins that expect the interfaces to be stored in a specific way in memory. In other words, some changes made to IDL interfaces require the author to modify the unique identifier (IID) in order to make it clear to plugins that utilize these interfaces that they have changed, and thus their plugin must be recompiled.</p>
+
+<p>Common changes to an interface, such as changes to a method signature, number of arguments, and number or type of attributes, automatically require an IID change. In addition, some changes to interface attributes require that an IID be changed, as well. When a change to an interface made by an XPIDL developer requires that third-party binary addons be recompiled, we say that it affects <em>binary compatibility</em>. When a change to an interface made by an XPIDL developer requires that third-party binary addons change their source code, we say that it affects <em>source compatibility. </em>In table 5, the columns on the far right indicate whether changes to a specific attribute affect source compatibility, binary compatibility, or both.</p>
+
+<table>
+ <caption>Table 5: Optional interface attributes</caption>
+ <thead>
+ <tr>
+ <th scope="row">Attribute</th>
+ <th scope="col">Valid for methods</th>
+ <th scope="col">Valid for attributes</th>
+ <th scope="col">Effect</th>
+ <th scope="col">Changes Source Compatibility?</th>
+ <th scope="col">Changes Binary Compatibility?</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>binaryname(foo)</code></td>
+ <td>Y</td>
+ <td>Y</td>
+ <td>Results in the C++ method being called "<code>Foo</code>"</td>
+ <td>Y</td>
+ <td>N</td>
+ </tr>
+ <tr>
+ <td><code>deprecated</code></td>
+ <td>Y</td>
+ <td>Y</td>
+ <td>Emits a compiler warning if used in C++ code</td>
+ <td>N</td>
+ <td>N</td>
+ </tr>
+ <tr>
+ <td><code>implicit_jscontext</code></td>
+ <td>Y</td>
+ <td>Y</td>
+ <td>Adds an additional <code>JSContext *cx</code> parameter to the C++ implementation</td>
+ <td>Y</td>
+ <td>Y</td>
+ </tr>
+ <tr>
+ <td><code>noscript</code></td>
+ <td>Y</td>
+ <td>Y</td>
+ <td>Prohibits the method/attribute from being accessible in JS code</td>
+ <td>N</td>
+ <td>N</td>
+ </tr>
+ <tr>
+ <td><code>nostdcall</code></td>
+ <td>Y</td>
+ <td>Y</td>
+ <td>The C++ implementation uses <code>virtual nsresult</code> instead of <code>NS_IMETHOD</code>/<code>NS_IMETHODIMP</code></td>
+ <td>Y</td>
+ <td>Y</td>
+ </tr>
+ <tr>
+ <td><code>notxpcom</code></td>
+ <td>Y</td>
+ <td>Y</td>
+ <td>The C++ implementation does not return <code>nsresult</code> (implies <code>noscript</code>)</td>
+ <td>Y</td>
+ <td>Y</td>
+ </tr>
+ <tr>
+ <td><code>optional_argc</code></td>
+ <td>Y</td>
+ <td>N</td>
+ <td>Adds an additional <code>uint8_t _argc</code> parameter to the C++ implementation</td>
+ <td>Y</td>
+ <td>Y</td>
+ </tr>
+ </tbody>
+</table>
+
+<h4 id="Method_parameters">Method parameters</h4>
+
+<p>Each method parameter can be specified in one of three modes: <code>in</code>, <code>out</code>, or <code>inout</code>. An out parameter is essentially an auxiliary return value, although these are moderately cumbersome to use from script contexts and should therefore be avoided if reasonable. An inout parameter is an in parameter whose value may be changed as a result of the method; these parameters are rather annoying to use and should generally be avoided if at all possible.</p>
+
+<p>Out and inout parameters are reflected as objects having the .value property which contains the real value of the parameter; it is not initialized in the case of out parameters and is initialized to the passed-in-value for inout parameters. The script code would need to set this property to assign a value to the parameter. Regular in parameters are reflected more or less normally, with numeric types all representing numbers, booleans as true or false, the various strings (including AString et al) as a JavaScript string, and nsid types as a Components.ID instance. In addition, the jsval type is translated as the appropriate JavaScript value (since a jsval is the internal representation of all JavaScript values), and objects that are marked nsIVariant have their<br>
+ types automatically boxed and unboxed as appropriate.</p>
+
+<p>The equivalent representations of all IDL types in native code is given in the earlier tables; parameters of type inout follow their out form. Native code should pay particular attention to not passing in null values for out parameters (although some parts of the codebase are known to violate this, it is strictly enforced at the JS&lt;-&gt;native barrier), and also ensuring that boolean types only receive values of 0 (false) or 1 (true).</p>
+
+<p>Representations of types additionally depend on some of the many types of properties they may have. The <code>array</code> property turns the parameter into an array; the parameter must also have a corresponding <code>size_is</code> property whose argument is the parameter that has the size of the array. In native code, the type gains another pointer indirection, and JavaScript arrays are used in script code. Script code callers can ignore the value of array parameter, but implementors must still set the values appropriately.</p>
+
+<p>The <code>const</code> and <code>shared</code> properties are special to native code. As its name implies, the const property makes its corresponding argument const. The shared property is only meaningful for out or inout parameters and it means that the pointer value should not be freed by the caller. Only the string, wstring, and native types having the nsid, domstring, utf8string, cstirng, astring, or jsval properties may be declared shared, and, even then, only if the parameter is not an array parameter. The shared property also makes its corresponding argument const.<br>
+ <br>
+ The <code>retval</code> property indicates that the parameter is actually acting as the return value, and it is only the need to assign properties to the parameter that is causing it to be specified as a parameter. It has no effect on native code, but script code uses it like a regular return value. Naturally, a method which contains a retval parameter must be declared void, and the parameter itself must be an out parameter and the last parameter.</p>
+
+<p>Other properties are the <code>optional</code> and <code>iid_is</code> property. The optional property indicates that script code may omit the property without problems; all subsequent parameters must either by optional themselves or the retval parameter. Note that optional out parameters still pass in a variable for the parameter, but its value will be ignored. The iid_is parameter indicates that the real IID of an nsQIResult parameter may be found in the corresponding parameter, to allow script code to automatically unbox the type.</p>
+
+<p>Not all type combinations are possible. Native types with the various string properties are all forbidden from being used as an inout parameter or as an array parameter. In addition, native types with the nsid property but lacking either a ptr or ref property are forbidden unless the method is notxpcom and it is used as an inparameter.</p>
+
+<p>For types that reference heap-allocated data (strings, arrays, interface pointers, etc), you must follow the XPIDL data ownership conventions in order to avoid memory corruption and security vulnerabilities:</p>
+
+<ul>
+ <li>For <code>in</code> parameters, the caller allocates and deallocates all data. If the callee needs to use the data after the call completes, it must make a private copy of the data, or, in the case of interface pointers, AddRef it.</li>
+ <li>For <code>out</code> parameters, the callee creates the data, and transfers ownership to the caller. For buffers, the callee allocates the buffer with NS_Alloc, and the caller frees the buffer with NS_Free. For interface pointers, the callee does the AddRef on behalf of the caller, and the caller must call Release.</li>
+ <li>For <code>inout</code> parameters, the callee must clean up the old data if it chooses to replace it. Buffers must be deallocated with NS_Free, and interface pointers must be Release'd. Afterwards, the above rules for <code>out</code> apply.</li>
+ <li>Shared out-parameters should not be freed, as they are intended to refer to constant string literals.</li>
+</ul>
+
+<h2 id="Resources" name="Resources">Resources (mostly outdated)</h2>
+
+<ul>
+ <li><a class="external external-icon" href="http://www.mozilla.org/scriptable/xpidl/notes/">Some unsorted notes</a> including a <a class="external external-icon" href="http://www.mozilla.org/scriptable/xpidl/notes/keywords.txt">keyword list</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/XPIDL/xpidl" title="XPIDL/xpidl">xpidl</a> is a tool for generating C++ headers, Java interfaces, <a href="https://developer.mozilla.org/en-US/docs/XPConnect" title="XPConnect">XPConnect</a> typelibs, and HTML documentation from XPIDL files</li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/XPIDL/Generating_xpt_on_Windows" title="XPIDL/Generating_xpt_on_Windows">Generating xpt files on Windows</a></li>
+ <li><a class="external external-icon" href="http://groups.google.com/group/mozilla.dev.extensions/browse_thread/thread/371b5f04e4ecdcfb/a9d48a45c9453d16?q=idl+OR+xpidl+variable+argument+group:mozilla.dev.*#a9d48a45c9453d16" title="http://groups.google.com/group/mozilla.dev.extensions/browse_thread/thread/371b5f04e4ecdcfb/a9d48a45c9453d16?q=idl+OR+xpidl+variable+argument+group:mozilla.dev.*#a9d48a45c9453d16">A Google groups post</a> with instructions on how to use variable-length argument lists using XPIDL.</li>
+</ul>
+</div>
diff --git a/files/ja/mozilla/tech/xpidl/xpidl/index.html b/files/ja/mozilla/tech/xpidl/xpidl/index.html
new file mode 100644
index 0000000000..41f94f5e71
--- /dev/null
+++ b/files/ja/mozilla/tech/xpidl/xpidl/index.html
@@ -0,0 +1,57 @@
+---
+title: xpidl
+slug: Mozilla/Tech/XPIDL/xpidl
+tags:
+ - Developing Mozilla
+ - 'Developing_Mozilla:Tools'
+ - Tools
+ - XPCOM
+ - xpidl
+translation_of: Mozilla/Tech/XPIDL/xpidl
+---
+<p><b>xpidl</b> は XPIDL インタフェース記述ファイルに基づいた XPCOM インタフェース情報を生成するためのツールです。</p>
+<ul>
+ <li>インタフェースの完全な C++ 実装のためのコメントアウトされたテンプレートを含む C++ ヘッダファイル (&lt;tt&gt;.h&lt;/tt&gt;)</li>
+ <li>Java インタフェースファイル (&lt;tt&gt;.java&lt;/tt&gt;)</li>
+ <li><a href="ja/XPConnect">XPConnect</a> を通して動的に XPCOM オブジェクトを呼び出すランタイム種類の情報を含む <a href="ja/XPConnect">XPConnect</a> typelib ファイル(&lt;tt&gt;.xpt&lt;/tt&gt;)</li>
+ <li>HTML 形式の文書 (&lt;tt&gt;.html&lt;/tt&gt;)</li>
+</ul>
+<h3 id="xpidl_.E3.81.AE.E3.83.93.E3.83.AB.E3.83.89" name="xpidl_.E3.81.AE.E3.83.93.E3.83.AB.E3.83.89">xpidl のビルド</h3>
+<p>xpidl は <a class="external" href="http://www.gnome.org/">Gnome</a> プロジェクト由来の idl コンパイラである <a class="external" href="http://andrewtv.org/libIDL/">libIDL idl コンパイラ</a> をベースにしています。libIDL コンパイラは、やはり Gnome プロジェクト由来の glib をベースにしています。XPCOM コンポーネントに使われるヘッダを生成するために xpidl コンパイラを使うことができるため、現在 xpidl コンパイラはビルドプロセスの一部になっています。libIDL と glib の情報を<a href="ja/Build_Documentation">ビルド文書</a>で確認してください。</p>
+<p>UNIX: もし、あなたが xpidl をビルドしたい<b>だけ</b>なら、ビルドするのにはわずかなディレクトリだけが必要です。Mozilla のソースを取得して、'configure'を実行したのち、以下のようにして dist/bin ディレクトリに xpidl をビルドすることができるでしょう。</p>
+<pre class="eval">make -C config
+make -C nsprpub
+make -C xpcom/typelib
+</pre>
+<p>Windows: 静的リンクされた xpidl.exe のビルドか VC 2005 Express でビルドをしたいなら、<a>Windows で静的 xpidl をビルドする</a>を参照してください。</p>
+<h3 id="xpidl_.E3.82.92.E4.BD.BF.E3.81.86" name="xpidl_.E3.82.92.E4.BD.BF.E3.81.86">xpidl を使う</h3>
+<p>Mozilla をビルドする手順に XPIDL ファイルをどのように加えるかについての説明のために <a class="external" href="http://www.mozilla.org/scriptable/xpidl/xpidl-in-the-build.html">xpidl ビルドページ</a> を参照してください。xpidl は UNIX と Windows のコマンドラインからも利用可能です。</p>
+<pre class="eval">Usage: ./xpidl -m mode [-w] [-v] [-t version number]
+ [-I path] [-o basename | -e filename.ext] filename.idl
+ -a emit annotations to typelib
+ -w turn on warnings (recommended)
+ -v verbose mode (NYI)
+ -t create a typelib of a specific version number
+ -I add entry to start of include path for ``#include "nsIThing.idl"
+ -o use basename (e.g. ``/tmp/nsIThing<i>) for output</i>
+ -e use explicit output filename
+ -m specify output mode:
+ header Generate C++ header (.h)
+ typelib Generate XPConnect typelib (.xpt)
+ doc Generate HTML documentation (.html)
+ java Generate Java interface (.java)
+</pre>
+<h3 id=".E3.83.AA.E3.82.BD.E3.83.BC.E3.82.B9" name=".E3.83.AA.E3.82.BD.E3.83.BC.E3.82.B9">リソース</h3>
+<ul>
+ <li>xpidl に対する <a class="external" href="http://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;component=xpidl">開かれたバグ</a></li>
+</ul>
+<p>苦情は <a class="link-mailto" href="mailto:mike+mozilla@meer.net,mang@subcarrier.org?Subject=xpidl">docs mike+mozilla@meer.net &amp; mang@subcarrier.org</a> まで (英語で)</p>
+<div class="originaldocinfo">
+ <h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2>
+ <ul>
+ <li>Author(s): <a class="link-mailto" href="mailto:mike+mozilla@meer.net">mike+mozilla@meer.net</a>, <a class="link-mailto" href="mailto:mang@subcarrier.org">mang@subcarrier.org</a></li>
+ <li>Last Updated Date: May 29, 2002</li>
+ <li>Copyright Information: Copyright (C) <a class="link-mailto" href="mailto:mike+mozilla@meer.net">mike+mozilla@meer.net</a>, <a class="link-mailto" href="mailto:mang@subcarrier.org">mang@subcarrier.org</a></li>
+ </ul>
+</div>
+<p>{{ languages( { "en": "en/XPIDL/xpidl" } ) }}</p>
diff --git a/files/ja/mozilla/tech/xslt_2.0/index.html b/files/ja/mozilla/tech/xslt_2.0/index.html
new file mode 100644
index 0000000000..ad3898b988
--- /dev/null
+++ b/files/ja/mozilla/tech/xslt_2.0/index.html
@@ -0,0 +1,35 @@
+---
+title: XSLT 2.0
+slug: Mozilla/Tech/XSLT_2.0
+tags:
+ - Java
+ - JavaScript
+ - XML
+ - XSLT
+ - XSLT 2.0
+ - 拡張
+translation_of: Mozilla/Tech/XSLT_2.0
+---
+<p>Firefox では XSLT 2.0 がネイティブにサポートされていませんが、<a href="http://saxonica.com/">Saxon-B</a> (Java) や最近では <a href="http://www.saxonica.com/documentation/index.html#!about/whatis">Saxon-CE</a> (JavaScript) を使用して XSLT 2.0 を実行することは可能です。</p>
+
+<h3 id="For_users" name="For_users">ユーザー向け</h3>
+
+<p>Saxon-CE</p>
+
+<p>拡張は必要ありませんが、Saxon-CE JavaScript ライブラリにリンクする HTML ページがロードされると Saxon-CE が実行されます。</p>
+
+<p>Saxon-B</p>
+
+<p><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/5023">XSL Results</a> 拡張機能は、Java ベースの Saxon-B ライブラリに接続し、(Firefox 自身の XSLT 1.0 プロセッサでは処理されない) XSLT 処理命令 で適切なページを訪問したときに XSLT が自動的に実行されるようサポートするために (Mozilla 固有のコードの代わりにJava 1.6v12+によって処理される) LiveConnect の新バージョンを使用します。</p>
+
+<h3 id="For_developers" name="For_developers">開発者向け</h3>
+
+<p>Saxon-CE</p>
+
+<p>Web ページから XSLT 2.0 変換を開始するための JavaScript API が用意されています。Saxon-CE からのエラーと診断出力は、Firefox 開発者コンソールまたは Firebug で確認できます。</p>
+
+<p>Saxon-B</p>
+
+<p>この拡張機能は LiveConnect コードを使って Saxon-B ライブラリと通信する方法を示していますが、JavaScript コードモジュールのアプローチが拡張機能 <a href="https://addons.mozilla.org/ja/firefox/addon/xquery-use-me-xquseme/">XqUSEme</a> の中でより再利用可能なアプローチとして使用されることがあります。</p>
+
+<p>このコードは Java のサポート (および LiveConnect のサポート) が遅れているため、Mac (Java 1.6 をサポートするサーバー版を除く) では現在動作しません。</p>
diff --git a/files/ja/mozilla/thunderbird/autoconfiguration/index.html b/files/ja/mozilla/thunderbird/autoconfiguration/index.html
new file mode 100644
index 0000000000..68a7839afc
--- /dev/null
+++ b/files/ja/mozilla/thunderbird/autoconfiguration/index.html
@@ -0,0 +1,37 @@
+---
+title: Thunderbird のアカウント情報自動設定機能
+slug: Mozilla/Thunderbird/Autoconfiguration
+tags:
+ - Administration
+ - enterprise
+translation_of: Mozilla/Thunderbird/Autoconfiguration
+---
+<p>著者: Ben Bucksch<br>著者へ相談せずに文書の内容を変更しないで下さい</p> <p>Thunderbird 3.1 以降から追加された自動設定機能の一つに,アカウントの情報を自動で設定する機能があります(一部の機能は 3.0 から利用できます).この機能は,ユーザがメールサーバの通信設定をとても簡単に設定できるようにする,という目的のもと開発されました.これにより,Thunderbird をダウンロードしてインストールを行ない,アカウントのセットアップウィザードから本名と Email アドレス,そしてパスワードを入力するだけで,できる限り安全にメールを送受信することができるようになります.</p> <p>参考:</p> <ul> <li><a class=" link-https" href="https://wiki.mozilla.org/Thunderbird:Autoconfiguration" title="https://wiki.mozilla.org/Thunderbird:Autoconfiguration">Mozilla wiki におけるプロジェクトのページ</a> には背景,デザイン,実装をはじめとした自動設定機能の詳しい説明が存在します.</li> <li>ユーザ向けの利用方法については Thunderbird Knowledge Base の<a class=" external" href="http://support.mozillamessaging.com/en-US/kb/Automatic+Account+Configuration" title="http://support.mozillamessaging.com/en-US/kb/Automatic+Account+Configuration">Automatic Account Configuration</a> を参照して下さい.</li> <li>設定ファイルの <a href="/en/Thunderbird/Autoconfiguration/FileFormat/HowTo" title="en/Thunderbird/Autoconfiguration/FileFormat/HowTo">説明</a> と <a href="/en/Thunderbird/Autoconfiguration/FileFormat/Definition" title="en/Thunderbird/Autoconfiguration/FileFormat/Definition">定義</a> に関するページも存在します.</li>
+</ul> <p>この文書は,いかにして自動設定機能が動作するか,そして何を行えばメールサーバが自動で設定機能されるか,について説明を行ないます.</p> <h1 id="メカニズム">メカニズム</h1> <p>Thunderbird は様々なユースケースにあわせ,色々な方法でサーバの情報を取得します:</p> <ul> <li>ISPDB<br> IPSDB は Mozilla Messaging によって管理されているデータベースで,誰でもその中にある情報を利用することができます.現在は非常に大規模な ISP 向けの設定を中心に保持していますが,早く全ユーザの 50 % 程度をカバーできるぐらいの情報を提供したいと考えています.<br> この ISPDB は,マイクロソフトなどの巨大な ISP が,後述する Mozilla 用の情報をすぐに提供してくれるとは考えられなかったために用意されました.</li> <li>ISP での設定ファイルサーバ<br> ISP は autoconfig.&lt;domain&gt; というドメインで設定情報提供サーバを用意することができます.このサーバは,ユーザからのリクエストを受け付けると,静的な XML 形式(詳細は後述します)で設定ファイルを返却します.ユーザのメールアドレスにサーバへのログイン名が含まれないなど複雑な場合には,(内部でメールアドレスからのログイン名ルックアップなどを行ない)XML ファイルを動的に生成する必要があります.このような場合には,この設定ファイルサーバを用意する方式が,自動設定機能用の情報を提供するための唯一の方法となります.</li> <li>ディスク上の設定ファイル<br> 管理者が Thunderbird のインストールディレクトリに設定ファイルを配置するという方法も存在します. この方法は,企業が社員の PC へ Thunderbird を導入する際,設定ファイル用のサーバを用意せずに自動設定を行えるようにする,というユースケースを想定して用意されました.そのため,それ以外の場面ではこの方法はあまり実用的ではありません.というのも,設定ファイルを一度配置してしまうと,その後で更新を行なうことが難しいためです.よって,公共の ISP は設定ファイルサーバを準備する必要があるでしょう.</li> <li>推測<br> 上で述べた方式が全て失敗した場合,Thunderbird はサーバの設定を推測します.imap.&lt;domain&gt;, smtp.&lt;domain&gt;, mail.&lt;domain&gt; のように,一般的なサーバの名前を試し,サーバから応答があったら,そのサーバが SSL や STARTTLS, そして暗号化パスワード (CRAM-MD5) をサポートするかをチェックします.</li> <li>手動設定<br> 推測にも失敗してしまった場合は,ユーザに手動で設定を行なってもらう必要があります.また,上記の自動取得によってうまく情報が設定された場合にも,ユーザはあとからその情報を修正することができます.</li>
+</ul> <p>全てのルックアップ (lookup) メカニズムは「Email アドレスのドメイン部分」をベースとして使います.例えばメールアドレスが <a class="moz-txt-link-abbreviated link-mailto" href="mailto:fred@example.com">fred@example.com</a> であったときルックアップは次のような順番で行われます:</p> <ol> <li>PC 内から <em>Thunderbird のインストール先</em>/isp/example.com.xml を探す</li> <li>autoconfig.example.com をチェック</li> <li>"example.com" を ISPDB 中から探す</li> <li>DNS から"MX example.com" を探し, mx1.mail.hoster.com 向けに ISPDB 中から "hoster.com" を探す</li> <li>それでも駄目なら imap.example.com, smtp.example.com などを試す(推測)</li>
+</ol> <p>将来的には DNS SRV もサポートする予定です.</p> <h1 id="自動設定機能をサポートする方法">自動設定機能をサポートする方法</h1> <h2 id="分類">分類</h2> <p> ユーザ数が 100,000 人を超えるような大きな ISP で,"example.com" や "example.de" など数種類のドメインしか提供しない場合は,ISPDB へ設定を登録しても良いですし,設定ファイルサーバを立てても良いでしょう. しかし,サーバが Email アドレスのエイリアスをサポートしていたり,ログイン名がメールアドレスに含まれてないような場合(例えば,メールアドレスは <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:hero@example.com">"hero@example.com"</a> なのに IMAP/POP/SMTP のログイン名が "hero" でも <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:hero@example.com">"hero@example.com"</a> でもなく, "u67578" であるような場合など)は Email アドレスからログイン名をルックアップしてくれるような設定サーバを用意する必要があります.
+</p> <p>サーバがカスタマードメインをサポートしている場合(例えば ISP としては"hoster.com" を提供しているのに,ユーザが "<a class=" link-mailto" href="mailto:fred@flintstone.com" rel="freelink">fred@flintstone.com</a>" と"<a class=" link-mailto" href="mailto:louis@kent.com" rel="freelink">louis@kent.com</a>" を利用する場合)は,設定ファイルサーバを用意する必要があります.この場合,DNS MX に頼っても良いでしょう.</p> <p>比較的小さな企業が社員の PC へ Thunderbird をインストールしようとしている場合は,設定ファイルを Thunderbird のインストール先に配置しておくのが良いでしょう.</p> <h2 id="ISPDB">ISPDB</h2> <p>データベースの URL は <a class="moz-txt-link-rfc2396E link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/" title="https://live.mozillamessaging.com/autoconfig/v1.1/">&lt;https://live.mozillamessaging.com/autoconfig/v1.1/&gt;</a> にドメイン名を付け加えたものとなります(例: <a class="moz-txt-link-rfc2396E link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de" title="https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de">&lt;https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de&gt;</a>).</p> <p>現段階での登録方法は,次のとおりです: まず Bugzilla にバグを立てて下さい.このとき Product に "Mozilla Messaging", Component に "ispdb" を指定します.そして,以下で説明する要件を満たした設定ファイルを添付します.その後 bwinton, gozer, ben.bucksch の内の誰かへレビューを依頼して下さい.</p> <p>将来的には,単純に設定ファイルを <a class=" link-https" href="https://ispdb.mozillamessaging.com">ISPDB サーバ</a>へアップロードして登録するだけで良いようにしたいと考えています.</p> <h2 id="ISP_サーバにおける設定ファイル">ISP サーバにおける設定ファイル</h2> <p>Email アドレスが <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:fred@example.com">"fred@example.com"</a> のとき,Thunderbird はまず &lt;<span class="external free"><a class="moz-txt-link-freetext external" href="http://autoconfig.example.com/mail/config-v1.xml?emailaddress=fred@example.com">http://autoconfig.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com</a></span>&gt; をチェックし,次に <a class="moz-txt-link-rfc2396E external" href="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml" title="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml">&lt;http://example.com/.well-known/autoconfig/mail/config-v1.1.xml&gt;</a> をチェックします.</p> <h3 id="小さな企業">小さな企業</h3> <p>小さな企業では,<a class="moz-txt-link-rfc2396E external" href="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml">&lt;http://example.com/.well-known/autoconfig/mail/config-v1.1.xml&gt;</a> といったアドレスで XML 形式の設定ファイルを単にサーバへ配置するだけで OK です.</p> <h3 id="ドメイン保有者_(ISP)">ドメイン保有者 (ISP)</h3> <p>ISP 自体は hoster.com というアドレスを提供しているが,ISP のユーザは fancy.com や example.com といったアドレスを登録しており,そういったアドレス向けにメールを扱う必要がある,といった場合には自動設定サーバを用意する必要があります.</p> <h4 id="DNS">DNS</h4> <p>ISP ユーザのドメイン毎に DNS レコードを追加します(MX, A www など,既存のものに加えてください):<br> <code>autoconfig IN A 10.2.3.4</code><br> や<br> <code>autoconfig IN CNAME autoconfig.hoster.com</code>.<br> 10.2.3.4 や autoconfig.hoster.com は自分の IP アドレス / ホスト名へ変更してください.<br> こうすることにより Thunderbird へ自分が hoster であることを伝えることができます.</p> <h4 id="Web_サーバ">Web サーバ</h4> <p>物理的な IP アドレスへ割り当てられた Web サーバを準備する必要があります.他の Web サーバと同じマシンで稼働させることも可能ですが,<br> <br> Web サーバは,独自ドメインを利用している全ての IPS ユーザのドメイン(autoconfig.*)へマッチするバーチャルホストを使用する必要があります.このとき Apache 用語で言うところの "IP ベースなバーチャルホスト" を利用することができます.これは Apache の設定ファイルにおける「Listen 10.2.3.4:80」を意味します(もちろん,自分の持っている IP アドレスを使うようにしてください)</p> <pre> &lt;VirtualHost 10.2.3.4:80&gt; # バーチャルホスト設定は,一つの IP に対して必ず一つだけ用意してください!
+     DocumentRoot /var/www/autoconfig/
+     ServerName autoconfig.hoster.com
+ &lt;Directory /var/www/autoconfig&gt;
+ Order allow,deny
+ allow from all
+     &lt;/Directory&gt;
+ &lt;/VirtualHost&gt;</pre> <p>設定ファイルを,サーバの /mail/config-v1.1.xml といった URL に配置します.</p> <p>設定ファイルは <code>Content-Type: text/xml</code> (もしくは <code>application/xml</code>)で送信するようにして下さい.それ以外の Content Type で提供されたファイルは無視されます.また,設定ファイルが非 ASCII 文字を含む場合は UTF-8 をエンコーディングとして利用してください.</p> <p>ネームベースのバーチャルホストを使用する場合,全ユーザのドメイン向けに autoconfig サブドメインを用意するのは面倒です.このような場合は,autoconfig.* subdomains にマッチする Rewriterule をデフォルトのバーチャルホスト(Debian では /etc/apache2/sites-enabled/000-default)に用意しておけば良いでしょう:</p> <pre> &lt;VirtualHost *:80&gt; # バーチャルホスト
+ ServerAdmin webmaster@hoster.com
+ ServerName www
+ DocumentRoot /var/www
+ RewriteEngine On
+ RewriteCond %{HTTP_HOST} ^autoconfig\. [NC]
+ RewriteRule ^/(.*) http://autoconfig.hoster.com/$1 [L,R=301]
+ #...
+ &lt;/VirtualHost&gt;
+ &lt;VirtualHost *:80&gt;
+     DocumentRoot /var/www/autoconfig/
+     ServerName autoconfig.hoster.com
+ &lt;Directory /var/www/autoconfig&gt;
+   Order allow,deny
+ allow from all
+     &lt;/Directory&gt;
+ &lt;/VirtualHost&gt;
+</pre> <h2 id="設定ファイル">設定ファイル</h2> <p><a href="/en/Thunderbird/Autoconfiguration/FileFormat/HowTo" title="en/Thunderbird/Autoconfiguration/FileFormat/HowTo">設定ファイルの作成方法</a> と <a href="/en/Thunderbird/Autoconfiguration/FileFormat/Definition" title="en/Thunderbird/Autoconfiguration/FileFormat/Definition">設定ファイルの定義</a> に詳しい情報があります.</p> <p>{{ languages( { "en": "en/Thunderbird/Autoconfiguration" } ) }}</p>
diff --git a/files/ja/mozilla/thunderbird/content_tabs/index.html b/files/ja/mozilla/thunderbird/content_tabs/index.html
new file mode 100644
index 0000000000..17005908dc
--- /dev/null
+++ b/files/ja/mozilla/thunderbird/content_tabs/index.html
@@ -0,0 +1,81 @@
+---
+title: Content Tabs
+slug: Mozilla/Thunderbird/Content_Tabs
+translation_of: Mozilla/Thunderbird/Content_Tabs
+---
+<div class="blockIndicator standardNote">
+<p>この記事は <a href="https://developer.mozilla.org/ja/docs/Mozilla/Thunderbird/Releases/3">Thunderbird 3</a> の新機能について述べています</p>
+</div>
+<p>Content Tab を使うと Thunderbird でタブの中に、ユーザがブラウザと(ほとんど)同じように閲覧可能なリモートコンテンツを表示できるようになります。例えば、Thunderbird の <strong>ヘルプ | 新着情報</strong> メニューオプションはウェブコンテンツを表示するタブを開きます。Thunderbird チームはウェブサイトを経由してこのコンテンツをいつでも更新することができます。</p>
+<p>Content Tabs はフォーム、自動補完、パスワードマネージャ、Cookie、クイック検索、その他のブラウザの機能を活用することができます。</p>
+<h2 id="Content_Tab_を開く">Content Tab を開く</h2>
+<p>Content Tab は <a href="http://mxr.mozilla.org/comm-central/source/mail/base/content/tabmail.xml">tabmail</a> インタフェースを経由して開かれます。以下の例では、新着メッセージをタブに開くかメッセージウィンドウに開くかのユーザ設定を調べ、Thunderbird のナイトリービルドのための「新着情報」ページを(ユーザの設定に応じて、Content Tab または新規メッセージウィンドウに)表示します。</p>
+<pre class="brush: js">let url = "http://www.mozillamessaging.com/en-US/thunderbird/nightly/whatsnew/";
+let tabmail = document.getElementById("tabmail");
+if (!tabmail) {
+ // Try opening new tabs in an existing 3pane window
+ let mail3PaneWindow = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator)
+ .getMostRecentWindow("mail:3pane");
+ if (mail3PaneWindow) {
+ tabmail = mail3PaneWindow.document.getElementById("tabmail");
+ mail3PaneWindow.focus();
+ }
+}
+
+if (tabmail)
+ tabmail.openTab("contentTab", {contentPage: url});
+else
+ window.openDialog("chrome://messenger/content/", "_blank",
+ "chrome,dialog=no,all", null,
+ { tabType: "contentTab",
+ tabParams: {contentPage: url} });
+</pre>
+<p>Content Tab に何かを開くのをテストするには、以下の内容をエラーコンソールに入力して <strong>コードを評価</strong> をクリックします:</p>
+<pre class="brush: js">Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow("mail:3pane").document.getElementById("tabmail").openTab("contentTab", {contentPage: "http://www.mozillamessaging.com/en-US/thunderbird/nightly/whatsnew/"});
+</pre>
+<p>上の例はいずれもデフォルトのクリックハンドラで Content Tab を開きます。</p>
+<h2 id="クリックのハンドリング">クリックのハンドリング</h2>
+<p>Content Tab を指定されたクリックハンドラを用いずに開くには <code><a class=" external" href="http://mxr.mozilla.org/comm-central/search?string=defaultClickHandler&amp;find=/mail" title="http://mxr.mozilla.org/comm-central/search?string=defaultClickHandler&amp;find=/mail">defaultClickHandler</a></code> を使用します。デフォルトのクリックハンドラはすべての <code>about:、</code><code>http:、</code><code>https:</code> リンクを外部のブラウザに送り、それ以外は <code>network.protocol-handler.expose.*</code> の設定に応じて内部なたは外部にロードします。</p>
+<p>Contents Tab を開くときに <code>clickHandler</code> 引数を与えることによって明示的に <code>defaultClickHandler</code> を定義することができます。これは <code>clickHandler を定義しない場合と等価であることに注意してください</code>:</p>
+<pre class="brush: js">tabmail.openTab("contentTab", {contentPage: url,
+ clickHandler: "specialTabs.defaultClickHandler(event);" });
+</pre>
+<p><code>clickHandler</code> は <code>contentTab</code> のために生成されたブラウザ要素の <code>onclick</code> 属性に挿入される値です。</p>
+<h3 id="閲覧するサイトを制限する">閲覧するサイトを制限する</h3>
+<p>Thunderbird は <a href="/ja/Core_JavaScript_1.5_Guide/Regular_Expressions" title="ja/Core JavaScript 1.5 Guide/Regular Expressions">正規表現</a> を引数に持つ <a class=" external" href="http://mxr.mozilla.org/comm-central/search?string=siteClickHandler&amp;find=/mail" title="http://mxr.mozilla.org/comm-central/search?string=siteClickHandler&amp;find=/mail">siteClickHandler</a> を提供します。これにより以下の機能が実現されます:</p>
+<ul> <li>クリックされたリンクが <code>http</code> または <code>https</code> スキームを持っており、正規表現がそのリンクにマッチしない場合、リンクは外部ブラウザで開かれます。</li> <li>それ以外は、リンクはブラウザ要素の内部に開かれます(そして <code>network.protocol-handler.expose.*</code> 設定にしたがって)。</li>
+</ul>
+<div class="blockIndicator note"><strong>註:</strong> <code>http</code> の制限とリダイレクトの可能性により、サイトが変わったり JavaScript を使用したりすると、<code>onclick</code> ハンドラは <code>contentTab</code> がひとつのサイトにとどまることを保証することができなくなるかもしれません。この機能を使用する拡張機能はハンドラを実装するときにこのことを考慮すべきです。</div>
+<p>サイト制限の良い例が <a class=" link-https" href="https://addons.mozilla.org/en-US/thunderbird/addon/10900" title="https://addons.mozilla.org/en-US/thunderbird/addon/10900">Personas</a> 拡張機能です。これはギャラリーを閲覧するための Content Tab を開きますが、ユーザがサイトの外に出ようとするとそれは外部ブラウザに飛ばされ、一般的な閲覧のためにより良いサポートを提供します。これを実現するコードは比較的単純であり、簡単に書くと以下のようになります:</p>
+<pre class="brush: js">let PersonasController = {
+ get _thunderbirdRegExp() {
+ delete this._thunderbirdRegExp;
+ return this._thunderbirdRegExp = new RegExp("^http://www.getpersonas.com/");
+ },
+
+
+ openURLInTab: function (url) {
+ ...
+ openTab("contentTab", { contentPage: url,
+ clickHandler: "specialTabs.siteClickHandler(event, PersonaController._thunderbirdRegExp);" });
+ ...
+ }
+};
+</pre>
+<h3 id="その他のクリックハンドラ">その他のクリックハンドラ</h3>
+<p>拡張機能は自分自身のクリックハンドラを提供できますが、それは <a class=" external" href="http://mxr.mozilla.org/comm-central/search?string=siteClickHandler&amp;find=/mail" title="http://mxr.mozilla.org/comm-central/search?string=siteClickHandler&amp;find=/mail">siteClickHandler</a> を元にすべきであり、バグを修正する更新を定期的にチェックするべきです。</p>
+<h3 id="クリックハンドラを保存する">クリックハンドラを保存する</h3>
+<p>Content Tabs は <a href="http://mxr.mozilla.org/comm-central/source/mail/base/content/tabmail.xml">tabmail</a> が提供するセッション保存コードによってフックアップされます。クリックハンドラは Content Tab の URL と一緒に保存され、アプリケーションが再起動したときに復元されます。</p>
+<h2 id="Content_Tab_を拡張する">Content Tab を拡張する</h2>
+<p>拡張機能は Content Tab を二つの方法で拡張できます: 現在の Content Tab コードを拡張する事によって(これはすべての拡張機能に影響します)または、自信のテンプレートとサポートコードによって。</p>
+<p>専用タイプを実装するには、以下を参照してください:</p>
+<ul> <li><a href="http://mxr.mozilla.org/comm-central/source/mail/base/content/specialTabs.xul">specialTabs.xul</a> - Content Tab の XUL テンプレート</li> <li><a href="http://mxr.mozilla.org/comm-central/source/mail/base/content/specialTabs.js">specialTabs.js</a> - Content Tab の JavaScript 実装(<code>contentTabType</code> を参照)</li>
+</ul>
+<h2 id="セキュリティ">セキュリティ</h2>
+<p>拡張機能はセキュリティに注意すべきです。Thunderbird はデフォルトではブラウジングをサポートしていないので、今のところは最小限のセキュリティ UI しか提供していません。考慮すべきセキュリティ課題には以下が含まれます:</p>
+<ul> <li>URL バーを提供する</li> <li>セキュリティレベルを表示する</li> <li>このページ(<a href="/En/Displaying_web_content_in_an_extension_without_security_issues" title="En/Displaying web
+ content in an extension without security issues">displaying web content in an extension</a>)には関連情報が含まれています。</li>
+</ul>
+<h2 id="参照">参照</h2>
+<p>Thunderbird の Content Tab 実装に関するバグは <a class=" link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Thunderbird" title="https://bugzilla.mozilla.org/enter_bug.cgi?product=Thunderbird">Bugzilla</a> に登録してください。最初に <a class=" link-https" href="https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&amp;product=Thunderbird&amp;component=Toolbars+and+Tabs&amp;resolution=---" title="https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&amp;product=Thunderbird&amp;component=Toolbars+and+Tabs&amp;resolution=---">existing known bugs</a> をチェックしてください。あなたのバグが新しいものであれば、バグを作成するときに "Thunderbird" プロダクトと "Toolbars and Tabs" コンポーネントを指定してください。</p>
diff --git a/files/ja/mozilla/thunderbird/cookies_in_thunderbird/index.html b/files/ja/mozilla/thunderbird/cookies_in_thunderbird/index.html
new file mode 100644
index 0000000000..04b0da043f
--- /dev/null
+++ b/files/ja/mozilla/thunderbird/cookies_in_thunderbird/index.html
@@ -0,0 +1,25 @@
+---
+title: Cookies In Thunderbird
+slug: Mozilla/Thunderbird/Cookies_In_Thunderbird
+tags:
+ - Cookies
+ - thunderbird
+translation_of: Mozilla/Thunderbird/Cookies_In_Thunderbird
+---
+<div class="blockIndicator standardNote">
+<p>この記事は <a href="https://developer.mozilla.org/ja/docs/Mozilla/Thunderbird/Releases/3">Thunderbird 3</a> の新機能について述べています</p>
+</div>
+<p>Thunderbird 3 より前のバージョンの Cookie ポリシーは、(RSS に対するものだけで) とても限定的でした。Thunderbird 3 では、<a class="internal" href="/ja/Gecko" title="ja/Gecko">Gecko</a> の Cookie ポリシーをいくつかの変更を加えて利用します。</p>
+<ul> <li>mailnews でない URL または場所 (リモートコンテンツ) の Cookie は有効になります。</li> <li>メール内のリモートコンテンツは Cookie を使用できますが、ユーザがメール内のリモートコンテンツの表示を許可した場合に限ります。</li> <li>RSS フィードアイテムの表示は、Web ページと同様に Cookie が許可されます。</li>
+</ul>
+<p>これらはすべて、Gecko の Cookie ポリシーが、その内部のポリシーとユーザ設定を基に Cookie を許可していることを条件とします。</p>
+<h2 id="危険性">危険性</h2>
+<p>新しい Cookie ポリシーは、次の領域や方法において、危険性やリスクを引き起こすかもしれません:</p>
+<ul> <li>メールに、メールアドレスと関連付けられた Cookie を許可する <ul> <li>&lt;img src="<a class=" external" href="http://tracker.net/?email=you@example.com" rel="freelink">http://tracker.net/?email=you@example.com</a>"&gt; は、tracker.net が Cookie をセットし、後でページを表示することで Cookie とメールアドレスまたはプロファイルを読む。</li> <li>シナリオ: nytimes.com がメールに Web バグを埋め込んで日刊ニュースを送信し、そこから RSS を読んだすべてのメールアドレスまたは識別子を追跡する。</li> </ul> </li>
+</ul>
+<h3 id="リファレンス">リファレンス</h3>
+<ul> <li><a class="internal" href="/ja/Gecko" title="ja/Gecko">Gecko</a> における Cookie の詳しい情報は、<a class="internal" href="/Special:Tags?tag=Cookies" title="Special:Tags?tag=Cookies">Cookies</a> タグの付いたページを参照してください。</li>
+</ul>
+<div class="noinclude">
+
+</div>
diff --git a/files/ja/mozilla/thunderbird/deploying_thunderbird_in_the_enterprise/index.html b/files/ja/mozilla/thunderbird/deploying_thunderbird_in_the_enterprise/index.html
new file mode 100644
index 0000000000..04aef45824
--- /dev/null
+++ b/files/ja/mozilla/thunderbird/deploying_thunderbird_in_the_enterprise/index.html
@@ -0,0 +1,15 @@
+---
+title: Thunderbird の法人導入
+slug: Mozilla/Thunderbird/Deploying_Thunderbird_in_the_Enterprise
+tags:
+ - Thunderbird 3
+ - enterprise
+ - thunderbird
+translation_of: Mozilla/Thunderbird/Deploying_Thunderbird_in_the_Enterprise
+---
+<h2 id="ドキュメント">ドキュメント</h2>
+<ul> <li><a href="/en/Thunderbird/Deploying_Thunderbird_in_the_Enterprise/Upgrading_Thunderbird_in_the_Enterprise" title="ja/Thunderbird/Deploying_Thunderbird_in_the_Enterprise/Upgrading_Thunderbird_in_the_Enterprise">企業における Thunderbird のアップグレード</a> (英語)</li> <li><a href="/en/Thunderbird/Deploying_Thunderbird_in_the_Enterprise/Thunderbird_Preferences_Relevant_to_Enterprises" title="ja/Thunderbird/Deploying_Thunderbird_in_the_Enterprise/Thunderbird_Preferences_Relevant_to_Enterprises">企業での利用を想定した Thunderbird の設定項目</a> (英語)</li> <li><a href="/ja/Thunderbird/LDAP_Support" title="ja/Thunderbird/LDAP_Support">Thunderbird の LDAP 対応を利用したカスタマイズ</a></li> <li><a href="/ja/Thunderbird/Autoconfiguration" title="ja/Thunderbird/Autoconfiguration">Thunderbird のアカウント情報自動設定機能</a></li> <li><a href="/ja/Thunderbird/Mail_Account_Setup_Wizard" title="ja/Thunderbird/Mail_Account_Setup_Wizard">メールアカウント設定ウィザードの概要とカスタマイズ</a></li> <li><a href="/ja/MCD/Getting_Started" title="ja/MCD/Getting_Started">Firefox や Thunderbird の設定項目を管理者が一括指定する方法</a></li> <li><a href="/ja/Setting_up_an_update_server" title="ja/Setting_up_an_update_server">企業内で独自にソフトウェアの更新管理を行うサーバを構築する方法</a></li>
+</ul><h2 id="関連情報">関連情報</h2>
+<ul> <li><a class=" external" href="http://mozilla.jp/business/">Mozilla Japan の法人向け情報 - 導入事例、よくある質問など</a></li> <li><a class="link-https" href="https://wiki.mozilla.org/Thunderbird/Enterprise">企業導入を推進するコミュニティ、資料、ニュースを掲載した Wiki</a></li>
+</ul>
+<p>{{ languages( { "en": "en/Thunderbird/Deploying_Thunderbird_in_the_Enterprise" } ) }}</p>
diff --git a/files/ja/mozilla/thunderbird/index.html b/files/ja/mozilla/thunderbird/index.html
new file mode 100644
index 0000000000..90d72cc02b
--- /dev/null
+++ b/files/ja/mozilla/thunderbird/index.html
@@ -0,0 +1,67 @@
+---
+title: Thunderbird
+slug: Mozilla/Thunderbird
+tags:
+ - thunderbird
+translation_of: Mozilla/Thunderbird
+---
+<p><span class="seoSummary"><a href="https://www.thunderbird.net/">Thunderbird</a> は、<a href="https://wiki.mozilla.org/Thunderbird:Home">Thunderbird コミュニティ</a>によって管理され、開発されたメール/メッセージングアプリケーションです。これらのページには、<a href="http://www.seamonkey-project.org/">Seamonkey</a> や <a href="http://postbox-inc.com/">Postbox</a> などの他のプロジェクトでも使用されている Thunderbird と<a href="https://developer.mozilla.org/en-US/docs/tag/MailNews" title="tag/MailNews">MailNews</a> バックエンドが記載されています。</span></p>
+
+<p>Thunderbird is built on the same technical platform as the Firefox web browser. Currently one of the most popular open source email clients, it is used by tens of millions of people around the world to bring together all their email accounts, chat, newsgroup and feed reading in a familiar high-productivity environment. (From early 2007 to early 2011 Thunderbird was developed by <a class="link-https" href="https://en.wikipedia.org/wiki/Mozilla_Messaging" title="https://en.wikipedia.org/wiki/Mozilla_Messaging">Mozilla Messaging</a>, a subsidiary owned by Mozilla.)</p>
+
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2>
+
+ <dl>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Simple_Thunderbird_build" title="Simple Thunderbird build">Building Thunderbird</a></dt>
+ <dd>Information about building Thunderbird with the <a href="/en-US/docs/comm-central" title="comm-central">comm-central</a> repository. There's also information about <a href="/en-US/docs/How_comm-central%27s_build_system_works" title="How_comm-central's_build_system_works">how comm-central works</a>, how the <a href="/en-US/docs/Mailnews_and_Mail_code_review_requirements" title="Mailnews and Mail code review requirements">review process works</a> and how to use the <a href="/en-US/docs/Using_the_Mozilla_symbol_server" title="Using the Mozilla symbol server">Mozilla symbol server</a> to help with debugging.</dd>
+ <dt><a href="/en-US/docs/MailNews_Protocols" title="MailNews_Protocols">MailNews Protocols</a></dt>
+ <dd>Rough documentation about mail protocols..</dd>
+ <dt><a href="/en-US/docs/DB_Views_%28message_lists%29" title="DB_Views_(message_lists)">Database views</a></dt>
+ <dd>Backend information about {{ Interface("nsIMsgDBView") }} and related interfaces..</dd>
+ <dt><a href="/en-US/docs/Thunderbird/Thunderbird_API_documentation" title="Thunderbird API documentation">Thunderbird API documentation</a></dt>
+ <dd>Thunderbird API documentation</dd>
+ <dt><a href="/en-US/docs/Extensions/Thunderbird" title="Extensions/Thunderbird/">Extension documentation</a></dt>
+ <dd>Tutorials and tips for building Thunderbird extensions</dd>
+ <dt><a href="/en-US/docs/Thunderbird/Thunderbird_Automated_Testing" title="Thunderbird Automated Testing">Automated Testing</a></dt>
+ <dd>Details of Thunderbird's automated testing facilities</dd>
+ <dt><a href="/en-US/docs/Thunderbird/Thunderbird_in_the_Enterprise" title="Thunderbird in the Enterprise">Thunderbird in the Enterprise</a></dt>
+ <dd>Help with deploying Thunderbird in large organizations</dd>
+ </dl>
+
+ <p><span class="alllinks"><a href="/en-US/docs/tag/Thunderbird" title="tag/Thunderbird">View All...</a></span></p>
+ </td>
+ <td>
+ <h2 class="Community" id="Community" name="Community">Community</h2>
+
+ <ul>
+ <li><a href="https://www.thunderbird.net/">Thunderbird product home page</a></li>
+ <li><a href="https://wiki.mozilla.org/Thunderbird:Home">Thunderbird project community pages</a></li>
+ <li>User support is handled at <a href="https://support.mozilla.org/en-US/products/thunderbird">Mozilla Support</a></li>
+ <li>Extensions questions are frequently discussed on the dev-apps-thunderbird group: {{ DiscussionList("dev-apps-thunderbird", "mozilla.dev.apps.thunderbird") }}</li>
+ <li>Development discussion happens on the tb-planning mailing list:
+ <ul>
+ <li><a class="link-https" href="https://mail.mozilla.org/listinfo/tb-planning" title="https://mail.mozilla.org/listinfo/tb-planning">subscribe</a></li>
+ <li><a class="link-https" href="https://mail.mozilla.org/pipermail/tb-planning/" title="https://mail.mozilla.org/pipermail/tb-planning/">archives</a></li>
+ </ul>
+ </li>
+ <li><a href="http://forums.mozillazine.org/viewforum.php?f=50">Mozillazine forums</a></li>
+ <li><a href="http://www.mozillamessaging.com/">Mozilla Messaging web page</a></li>
+ <li><a class="link-irc" href="irc://irc.mozilla.org/thunderbird">#thunderbird on irc.mozilla.org</a> (for Users)</li>
+ <li><a class="link-irc" href="irc://irc.mozilla.org/maildev">#maildev on irc.mozilla.org</a> (for Developers)</li>
+ <li>a list of all <a href="http://wiki.mozilla.org/Thunderbird/CommunicationChannels" title="Thunderbird communication channels">Thunderbird communication channels</a></li>
+ </ul>
+
+ <h2 class="Tools" id="Tools" name="Tools">Tools</h2>
+
+ <ul>
+ <li><a href="http://ted.mielczarek.org/code/mozilla/extensiondev/">Extension developer's extension</a></li>
+ <li><a href="/en-US/docs/DOM_Inspector" title="DOM_Inspector">DOM Inspector</a></li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/ja/mozilla/thunderbird/ldap_support/index.html b/files/ja/mozilla/thunderbird/ldap_support/index.html
new file mode 100644
index 0000000000..b34d723e56
--- /dev/null
+++ b/files/ja/mozilla/thunderbird/ldap_support/index.html
@@ -0,0 +1,32 @@
+---
+title: Thunderbird の LDAP 対応を利用したカスタマイズ
+slug: Mozilla/Thunderbird/LDAP_Support
+tags:
+ - Administration
+ - enterprise
+ - thunderbird
+---
+<p>このドキュメントは、ビジネスユーザが Mozilla Thunderbird の LDAP 対応を活用しカスタマイズする方法を補足するために書かれました。LDAP や Mozilla 製品そのものの解説ではありません。読者が、Thunderbird で LDAP ディレクトリを使用する設定に加えて、社内に展開している製品の設定項目を変更する方法について既に知っていることを前提としています。なお、このドキュメントに書かれているすべての情報は、Thunderbird と SeaMonkey アプリケーションスイートの両方で有効です。</p>
+<h2 id="メール編集画面での自動補完">メール編集画面での自動補完</h2>
+<p>メール編集画面では、メールアドレスの一部を入力するだけで、アドレス帳や LDAP ディレクトリに登録されている項目に一致するアドレスの候補がドロップダウンリストで表示されます。大企業では、同じ姓のユーザが多数ディレクトリに登録されている場合もあるでしょう。そうした場合、どの人物が実際にメッセージを送りたい相手なのかを見分けることが難しくなります。Thunderbird では、このドロップダウンリストをカスタマイズして、任意の LDAP 属性を表示させることができます。これは以下のような設定を行うことで実現可能です。</p>
+<pre> user_pref("mail.autoComplete.commentColumn", 2);
+ user_pref("ldap_2.servers.<em>ディレクトリ名</em>.autoComplete.commentFormat", "[ou]");
+</pre>
+<p>最初の設定項目は、ドロップダウンリストにコメント欄を表示させるという意味で (初期値は 0 でコメントは表示されません)、コメントの値は各ディレクト固有のカスタム文字列です。次の commentFormat という設定は、必ず各ディレクトリごとに設定する必要があります。この設定はテンプレートの働きをして、コメント欄に追加させたい追加の LDAP 属性と、その属性をどのような形式で表示するかを指定します。これは以下のような書式で記述します。</p>
+<ul> <li>目的の LDAP 属性は角括弧で囲みます。上の例では、LDAP 属性の部署名を設定しています。</li> <li>また、任意の文字列を挿入して、LDAP 属性を明示することもできます。例えば「所属: [ou]」と記述した場合、ドロップダウンリストには「山田太郎       所属: 営業部」のように表示されます。</li>
+</ul><h2 id="LDAP_スキーマ">LDAP スキーマ</h2>
+<p>次の表は、Thunderbird が LDAP 属性とアドレス帳内の属性をマッピングするのに使用しているスキーマを要約したものです。この関係には以下のような注意点があります。</p>
+<ul> <li>LDAP 属性とそれに相当するアドレス帳属性には、多対一の関係が存在します。</li> <li>アドレス帳属性とそれに相当する LDAP 属性には、一対一の関係が存在します。ひとつのアドレス帳属性に複数の項目があった場合、最初の項目が優先します。</li>
+</ul>
+<p>これらの関係は、LDAP 属性をアドレス帳属性にマッピングする際に普遍性が維持され、LDAP サーバに保存されているアドレス帳属性を編集する際にも逆の一貫性が保たれるように配慮されています。</p>
+<table> <tbody> <tr> <th>アドレス帳の属性</th> <th>LDAP 属性</th> </tr> <tr> <td>FirstName</td> <td>givenname</td> </tr> <tr> <td>LastName</td> <td>sn</td> </tr> <tr> <td>LastName</td> <td>surname</td> </tr> <tr> <td>DisplayName</td> <td>cn</td> </tr> <tr> <td>DisplayName</td> <td>commonname</td> </tr> <tr> <td>DisplayName</td> <td>displayname</td> </tr> <tr> <td>NickName</td> <td>xmozillanickname</td> </tr> <tr> <td>PrimaryEmail</td> <td>mail</td> </tr> <tr> <td>SecondEmail</td> <td>xmozillasecondemail</td> </tr> <tr> <td>WorkPhone</td> <td>telephonenumber</td> </tr> <tr> <td>HomePhone</td> <td>homephone</td> </tr> <tr> <td>FaxNumber</td> <td>fax</td> </tr> <tr> <td>FaxNumber</td> <td>facsimiletelephonenumber</td> </tr> <tr> <td>PagerNumber</td> <td>pager</td> </tr> <tr> <td>PagerNumber</td> <td>pagerphone</td> </tr> <tr> <td>CellularNumber</td> <td>mobile</td> </tr> <tr> <td>CellularNumber</td> <td>cellphone</td> </tr> <tr> <td>CellularNumber</td> <td>carphone</td> </tr> <tr> <td>WorkAddress</td> <td>postofficebox</td> </tr> <tr> <td>WorkAddress</td> <td>streetaddress</td> </tr> <tr> <td>WorkCity</td> <td>l</td> </tr> <tr> <td>WorkCity</td> <td>locality</td> </tr> <tr> <td>WorkState</td> <td>st</td> </tr> <tr> <td>WorkState</td> <td>region</td> </tr> <tr> <td>WorkZipCode</td> <td>postalcode</td> </tr> <tr> <td>WorkZipCode</td> <td>zip</td> </tr> <tr> <td>WorkCountry</td> <td>countryname</td> </tr> <tr> <td>JobTitle</td> <td>title</td> </tr> <tr> <td>Department</td> <td>ou</td> </tr> <tr> <td>Department</td> <td>orgunit</td> </tr> <tr> <td>Department</td> <td>department</td> </tr> <tr> <td>Department</td> <td>departmentnumber</td> </tr> <tr> <td>Company</td> <td>o</td> </tr> <tr> <td>Company</td> <td>company</td> </tr> <tr> <td>WorkCountry</td> <td>countryname</td> </tr> <tr> <td>_AimScreenName</td> <td>nscpaimscreenname</td> </tr> <tr> <td>WebPage1</td> <td>workurl</td> </tr> <tr> <td>WebPage2</td> <td>homeurl</td> </tr> <tr> <td>BirthYear</td> <td>birthyear</td> </tr> <tr> <td>Custom1</td> <td>custom1</td> </tr> <tr> <td>Custom2</td> <td>custom2</td> </tr> <tr> <td>Custom3</td> <td>custom3</td> </tr> <tr> <td>Custom4</td> <td>custom4</td> </tr> <tr> <td>Notes</td> <td>notes</td> </tr> <tr> <td>Notes</td> <td>description</td> </tr> <tr> <td>PreferMailFormat</td> <td>xmozillausehtmlmail</td> </tr> <tr> <td>LastModifiedDate</td> <td>modifytimestamp</td> </tr> </tbody>
+</table>
+<h2 id="独自の_LDAP_属性">独自の LDAP 属性</h2>
+<p>Thunderbird は様々なアドレス帳属性に対する独自の LDAP 属性に対応しています。詳しくは <a class=" external" href="http://bugzilla.mozilla.org/show_bug.cgi?id=119291">Bug 119291</a> をご覧ください。</p>
+<div class="originaldocinfo">
+<h2 id="Original_Document_Information" name="Original_Document_Information">原文書の情報</h2>
+
+<ul> <li>著者: Scott MacGregor</li> <li>著作権情報: Portions of this content are © 1998–2010 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">Details</a>.</li>
+</ul>
+</div>
+<p>{{ languages( { "en": "en/LDAP_Support_in_Thunderbird" } ) }}</p>
diff --git a/files/ja/mozilla/thunderbird/mail_account_setup_wizard/index.html b/files/ja/mozilla/thunderbird/mail_account_setup_wizard/index.html
new file mode 100644
index 0000000000..94ab2aae4c
--- /dev/null
+++ b/files/ja/mozilla/thunderbird/mail_account_setup_wizard/index.html
@@ -0,0 +1,41 @@
+---
+title: メールアカウント設定ウィザードの概要とカスタマイズ
+slug: Mozilla/Thunderbird/Mail_Account_Setup_Wizard
+tags:
+ - Administration
+ - enterprise
+ - thunderbird
+---
+<p><strong>このドキュメントはドラフトです。</strong></p>
+<p>Thunderbird 3 には、新しい「メールアカウント設定ウィザード」が備わっています。ここでは、名前とメールアドレス、パスワードさえ入力すれば、ISP データベースなどが参照され、サーバ設定情報が見つかった場合は自動的に設定が完了します。</p>
+<p>注: ISP には、フリーメールサービス事業者も含まれます。</p>
+<h2 id="アカウント設定の流れ">アカウント設定の流れ</h2>
+<p>Thunderbird は以下の順番で XML 形式のサーバ設定情報を確認します。実際の処理は <a class=" external" href="http://mxr.mozilla.org/comm-central/source/mailnews/base/prefs/content/accountcreation/emailWizard.js">emailWizard.js</a> と <a class=" external" href="http://mxr.mozilla.org/comm-central/source/mailnews/base/prefs/content/accountcreation/fetchConfig.js">fetchConfig.js</a> で確認できます。</p>
+<ol> <li>ローカルディスク内の設定ファイルを参照</li> <li>ISP が公開しているのデータベースを参照 (Thunderbird 3.1 以上)</li> <li>Mozilla のデータベースを参照</li> <li>ポートスキャンを行ってサーバを特定</li>
+</ol>
+<h3 id="ローカルディスク内の設定ファイルを参照">ローカルディスク内の設定ファイルを参照</h3>
+<p>Thunderbird はまず、インストールディレクトリの isp フォルダにある XML ファイルを探します。例えばあなたの会社 (メールアドレス) のドメイン名が <code>example.com</code> だった場合、これは Windows では</p>
+<ul> <li><code>C:¥Program Files¥Mozilla Thunderbird¥isp¥example.com.xml</code></li>
+</ul>
+<p>になります。このファイルは通常存在しません。ファイルが見つかって設定が確認できた場合、Thunderbird はアカウント設定を完了します。</p>
+<p>企業の情報システム部門では、この仕組みを利用してあらかじめ設定ファイルを組み込んだ Thunderbird 配布することで、社員や学生がすばやく確実にアカウント設定を行えるようにすることができます。</p>
+<h3 id="ISP_が公開しているのデータベースを参照_(Thunderbird_3.1_以上)">ISP が公開しているのデータベースを参照 (Thunderbird 3.1 以上)</h3>
+<p>次に Thunderbird は、あなたの ISP に設定を問い合わせます。例えばあなたの ISP (メールアドレス) のドメイン名が <code>example.net</code> だった場合、</p>
+<ul> <li><code><a class=" external" href="http://autoconfig.example.net/mail/config-v1.1.xml" rel="freelink">http://autoconfig.example.net/mail/config-v1.1.xml</a></code></li> <li><code><a class=" external" href="http://autoconfig.example.net/.well-known/autoconfig/mail/config-v1.1.xml" rel="freelink">http://autoconfig.example.net/.well-...onfig-v1.1.xml</a></code></li>
+</ul>
+<p>が順に参照されます。Thunderbird はアカウント設定を完了します。</p>
+<p>特に規模の大きい ISP では、最新の設定を効率良く提供したいと思う場合もあるでしょう。この URL の形式に合わせて設定ファイルを設置することで、会員がすばやく確実にアカウント設定を行えるようにすることができます。</p>
+<h3 id="Mozilla_のデータベースを参照">Mozilla のデータベースを参照</h3>
+<p>次に Thunderbird は、Mozilla Messaging のサーバにある ISP データベースを参照します。例えばあなたの ISP (メールアドレス) のドメイン名が <code>example.net</code> だった場合、</p>
+<ul> <li><code><a class=" link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/example.net" rel="freelink">https://live.mozillamessaging.com/au....1/example.net</a></code></li>
+</ul>
+<p>が参照されます。</p>
+<p>データベースには、既に <a class=" external" href="http://ispdb.mozillamessaging.com/list">様々な ISP の設定</a> が登録されています。あなたが ISP の管理者で設定を登録したい場合、あるいはあなたがお使いの ISP の設定がまだ登録されていない場合は、<a class=" external" href="http://ispdb.mozillamessaging.com/add/">ISP データベース</a> もしくは <a class=" link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Mozilla%20Messaging&amp;component=ispdb">Bugzilla</a> で追加を依頼することもできます。</p>
+<h3 id="ポートスキャンを行ってサーバを特定">ポートスキャンを行ってサーバを特定</h3>
+<p>それでもなお設定が見つからない場合、Thunderbird は可能性のあるサーバを自動検出しようとします。例えばあなたの ISP (メールアドレス) のドメイン名が <code>example.net</code> だった場合、<code>pop.example.net</code>、<code>imap.example.net</code>、<code>mail.example.net</code>、<code>smtp.example.net</code> などに対し、ポートスキャンを試みます。送受信が可能なポートが見つかった場合はその設定を使用し、見つからなかった場合はユーザに手作業での設定入力を求めます。</p>
+<h2 id="設定ファイルの形式">設定ファイルの形式</h2>
+<p>上記の通り、サーバ設定情報ファイルは XML 形式となっています。詳しくは <a class=" link-https" href="https://wiki.mozilla.org/Thunderbird:Autoconfiguration:ConfigFileFormat">Config File Format</a> をご覧ください。また、<a class=" link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/gmail.com">Gmail</a>、<a class=" link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/yahoo.com">Yahoo! Mail</a>、<a class=" link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/aol.com">AOL</a> といった実際の設定ファイルも参考にしてください。</p>
+<p>Thunderbird 2 以前も、ローカルディスク内の設定ファイルを参照する仕組みはあり、Gmail と .Mac (現 MobileMe) の設定ファイルがあらかじめ組み込まれていました。詳しい情報は <a href="/ja/Thunderbird_ISP_hooks" title="ja/Thunderbird_ISP_hooks">Thunderbird ISP hooks</a> にあります。</p>
+<h2 id="参考資料">参考資料</h2>
+<ul> <li><a class=" link-https" href="https://wiki.mozilla.org/Thunderbird:Autoconfiguration">https://wiki.mozilla.org/Thunderbird:Autoconfiguration</a></li>
+</ul>
diff --git a/files/ja/mozilla/thunderbird/releases/24/index.html b/files/ja/mozilla/thunderbird/releases/24/index.html
new file mode 100644
index 0000000000..7a25c3d534
--- /dev/null
+++ b/files/ja/mozilla/thunderbird/releases/24/index.html
@@ -0,0 +1,411 @@
+---
+title: Thunderbird 24 for developers
+slug: Mozilla/Thunderbird/Releases/24
+tags:
+ - Release
+ - thunderbird
+translation_of: Mozilla/Thunderbird/Releases/24
+---
+<h2 id="Interfaces">Interfaces</h2>
+
+<h4 id="nsIImportService">nsIImportService</h4>
+
+<p>CreateRFC822Message: removed argument aBodyLength</p>
+
+<h4 id="nsIMimeConverter">nsIMimeConverter</h4>
+
+<p>encodeMimePartIIStr: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=834757" title="https://bugzilla.mozilla.org/show_bug.cgi?id=834757">removed</a></p>
+
+<h4 id="nsIMimeHeaders">nsIMimeHeaders</h4>
+
+<p>initialize: removed function argument allHeadersSize</p>
+
+<h4 id="nsIMsgAccount">nsIMsgAccount</h4>
+
+<ul>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=820377" title="https://bugzilla.mozilla.org/show_bug.cgi?id=820377">identities: type changed from nsISupportsArray to nsIArray</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=314806" title="https://bugzilla.mozilla.org/show_bug.cgi?id=314806">setDefaultIdentity: method  now changes identity order permanently</a></li>
+</ul>
+
+<h4 id="nsIMsgAccountManager">nsIMsgAccountManager</h4>
+
+<ul>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=820377" title="https://bugzilla.mozilla.org/show_bug.cgi?id=820377">accounts: type changed from nsISupportsArray to nsIArray</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=820377" title="https://bugzilla.mozilla.org/show_bug.cgi?id=820377">allIdentities: type changed from nsISupportsArray to nsIArray</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=820377" title="https://bugzilla.mozilla.org/show_bug.cgi?id=820377">allServers: type changed from nsISupportsArray to nsIArray</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=820377" title="https://bugzilla.mozilla.org/show_bug.cgi?id=820377">GetIdentitiesForServer: renamed to getIdentitiesForServer and type changed from nsISupportsArray to nsIArray</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=820377" title="https://bugzilla.mozilla.org/show_bug.cgi?id=820377">GetServersForIdentity: renamed to getServersForIdentity and type changed from nsISupportsArray to nsIArray</a></li>
+</ul>
+
+<h4 id="nsIMsgCompFields">nsIMsgCompFields</h4>
+
+<ul>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=68784" title="https://bugzilla.mozilla.org/show_bug.cgi?id=68784">The boolean attribute hasRecipients has been added.</a></li>
+ <li>newshost: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=133605" title="https://bugzilla.mozilla.org/show_bug.cgi?id=133605">removed</a></li>
+</ul>
+
+<h4 id="nsIMsgFilter">nsIMsgFilter</h4>
+
+<ul>
+ <li>actionList: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=821743" title="https://bugzilla.mozilla.org/show_bug.cgi?id=821743">removed</a></li>
+ <li>getSortedActionList: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=821253" title="https://bugzilla.mozilla.org/show_bug.cgi?id=821253">changed type</a></li>
+</ul>
+
+<h4 id="nsIMsgFilterService">nsIMsgFilterService</h4>
+
+<p>applyFiltersToFolders: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=822131" title="https://bugzilla.mozilla.org/show_bug.cgi?id=822131">changed function argument type</a></p>
+
+<h4 id="nsIMsgFolder">nsIMsgFolder</h4>
+
+<ul>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=882502" title="https://bugzilla.mozilla.org/show_bug.cgi?id=882502">allowsPosting: removed</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=882502" title="https://bugzilla.mozilla.org/show_bug.cgi?id=882502">knowsSearchNntpExtension: removed</a></li>
+ <li>getExpansionArray: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=821236" title="https://bugzilla.mozilla.org/show_bug.cgi?id=821236">removed</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=544621" title="https://bugzilla.mozilla.org/show_bug.cgi?id=544621">clearRequiresCleanup: removed</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=544621" title="https://bugzilla.mozilla.org/show_bug.cgi?id=544621">requiresCleanup: removed</a></li>
+ <li>ListDescendants: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=436089" title="https://bugzilla.mozilla.org/show_bug.cgi?id=436089">function argument type changed from nsISupportsArray to nsIMutableArray</a></li>
+</ul>
+
+<h4 id="nsIMsgProtocolInfo">nsIMsgProtocolInfo</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=832034" title="https://bugzilla.mozilla.org/show_bug.cgi?id=832034">The boolean attribute foldersCreateAsync has been added.</a></p>
+
+<h4 id="nsIMsgSearchAdapter">nsIMsgSearchAdapter</h4>
+
+<p>CurrentUrlDone: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=801383" title="https://bugzilla.mozilla.org/show_bug.cgi?id=801383">Type of function argument changed</a></p>
+
+<h4 id="nsIMsgSend">nsIMsgSend</h4>
+
+<ul>
+ <li>createAndSendMessage: removed argument aBodyLength</li>
+ <li>createRFC822Message: removed argument aBodyLength</li>
+</ul>
+
+<h4 id="nsISmtpService">nsISmtpService</h4>
+
+<ul>
+ <li>createSmtpServer:  renamed to createServer</li>
+ <li>deleteSmtpServer: renamed to deleteServer</li>
+ <li>GetSmtpServerByIdentity: renamed to getServerByIdentity</li>
+ <li>smtpServers: renamed to servers</li>
+</ul>
+
+<h4 id="nsISupportsArray">nsISupportsArray</h4>
+
+<ul>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=820377" title="https://bugzilla.mozilla.org/show_bug.cgi?id=820377">EnumerateForwards and EnumerateBackwards: removed</a></li>
+</ul>
+
+<h4 id="prplIAccount">prplIAccount</h4>
+
+<p>noNewlines: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=799068" title="https://bugzilla.mozilla.org/show_bug.cgi?id=799068">removed</a></p>
+
+<h2 id="Global_Functions_and_Objects">Global Functions and Objects</h2>
+
+<ul>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=776705" title="https://bugzilla.mozilla.org/show_bug.cgi?id=776705">accountManagerContractID: Removed from accountUtils.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=827017" title="https://bugzilla.mozilla.org/show_bug.cgi?id=827017">addEditorClickEventListener: removed from /editor/ui/composer/content/editor.js</a></li>
+ <li>AlertWithTitle: removed from /editor/ui/composer/content/editorUtilities.js, use Services.prompt instead</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=861767" title="https://bugzilla.mozilla.org/show_bug.cgi?id=861767">ArrangeAccountCentralItems: changed in /mailnews/base/prefs/content/AccountWizard.js</a></li>
+ <li>cleanUpHostname|removed from aw-incoming.js</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=839279" title="https://bugzilla.mozilla.org/show_bug.cgi?id=839279">CreateHTTPEquivElement: removed from /editor/ui/dialogs/content/EdDialogCommon.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=839279" title="https://bugzilla.mozilla.org/show_bug.cgi?id=839279">CreateHTTPEquivMetaElement: removed from /editor/ui/dialogs/content/EdDialogCommon.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=775665" title="https://bugzilla.mozilla.org/show_bug.cgi?id=775665">determineFilterType: removed from FilterEditor.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=271730" title="https://bugzilla.mozilla.org/show_bug.cgi?id=271730">disableEditableFields: removed from MsgComposeCommands.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=271730" title="https://bugzilla.mozilla.org/show_bug.cgi?id=271730">enableEditableFields: removed from MsgComposeCommands.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=807101" title="https://bugzilla.mozilla.org/show_bug.cgi?id=807101">enabling: renamed to LDAPenabling in am-addressing.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=252423" title="https://bugzilla.mozilla.org/show_bug.cgi?id=252423">FinishHTMLSource: removed from /editor/ui/composer/content/editor.js</a></li>
+ <li>FocusManager: removed from quickFilterManager.js, use Services.focus instead</li>
+ <li>gAccountManager: removed from /mail/components/compose/content/MsgComposeCommands.js, use MailServices.accounts instead</li>
+ <li>gAccountManager: removed from am-server-advanced.js, use MailServices.accounts instead</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=792979" title="https://bugzilla.mozilla.org/show_bug.cgi?id=792979">gAttachmentNotifier.EditAction(): Removed from MsgComposeCommands.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=823009" title="https://bugzilla.mozilla.org/show_bug.cgi?id=823009">gAttachmentNotifier.handleMutations: removed from MsgComposeCommands.js</a></li>
+ <li>GetHTTPEquivMetaElement: removed /editor/ui/dialogs/content/EdDialogCommon.js, use <a href="/en-US/docs/Web/API/document.querySelector" title="/en-US/docs/Web/API/document.querySelector">document.querySelector </a>instead</li>
+ <li>GetWindowByWindowType: removed form mailWindowOverlay.js, use Services.wm.getMostRecentWindow instead</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=861767" title="https://bugzilla.mozilla.org/show_bug.cgi?id=861767">getInterfaceForType: removed from /mailnews/base/prefs/content/AccountWizard.js</a></li>
+ <li>GetIOService: removed from /editor/ui/composer/content/editorUtilities.js, use Services.io instead</li>
+ <li>GetPromptService: removed from /editor/ui/composer/content/ComposerCommands.js, use Services.prompt instead</li>
+ <li>GetLoginManager: removed from /editor/ui/composer/content/publishprefs.js, use Services.logins instead</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=775665" title="https://bugzilla.mozilla.org/show_bug.cgi?id=775665">gFilterContext: removed from FilterEditor.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=807101" title="https://bugzilla.mozilla.org/show_bug.cgi?id=807101">gIdentity: removed from am-addressing.js</a></li>
+ <li>gIOService: removed from MsgComposeCommands.js, use Services.io instead</li>
+ <li>gIsOffline: removed from MsgComposeCommands.js, use Services.io.offline instead</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=812921" title="https://bugzilla.mozilla.org/show_bug.cgi?id=812921">gLastPurpleConvId: renamed to gLastPrplConvId in imConversations.js</a></li>
+ <li>gMailSession: removed from /mail/components/compose/content/MsgComposeCommands.js, use MailServices.mailSession instead</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=852690" title="https://bugzilla.mozilla.org/show_bug.cgi?id=852690">gMimeHeaderParser: removed from /mail/components/compose/content/addressingWidgetOverlay.js</a></li>
+ <li>gObserver: removed from am-server.js, use Services.obs instead</li>
+ <li>gPrefBranch: removed from am-junk.js, use Services.prefs instead</li>
+ <li>gPrefBranch: removed form mailWindowOverlay.js, use Services.prefs instead</li>
+ <li>gPrefBranch: removed from am-copies.js, use Services.prefs instead</li>
+ <li>gPrefInt: removed from am-addressing.js, use Services.prefs.getIntPref instead</li>
+ <li>gPrefs: removed from mailnewsMigrator.js, , use Services.prefs instead</li>
+ <li>gPromptService: removed from MsgComposeCommands.js, use Services.prompt instead</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=179033" title="https://bugzilla.mozilla.org/show_bug.cgi?id=179033">gSelectionSummaryStrings.Nmessages: removed from /mailnews/base/public/nsIMsgFolder.idl</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=577775" title="https://bugzilla.mozilla.org/show_bug.cgi?id=577775">gServer: Removed from am-serverwithnoidentities.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=80855" title="https://bugzilla.mozilla.org/show_bug.cgi?id=80855">gSmtpHostNameIsIllegal: removed from AccountManager.js</a></li>
+ <li>hasOnlyWhitespaces: removed from /mailnews/addrbook/prefs/content/pref-directory-add.js, use (&lt;string&gt;.trim() == "") instead</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=80855" title="https://bugzilla.mozilla.org/show_bug.cgi?id=80855">hostnameIsIllegal: removed from amUtils.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=80855" title="https://bugzilla.mozilla.org/show_bug.cgi?id=80855">hostnameIsIllegal: removed from aw-incoming.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=814956" title="https://bugzilla.mozilla.org/show_bug.cgi?id=814956">InitAppEditMessagesMenu: renamed to InitAppFolderViewsMenu in /mail/base/content/mailWindowOverlay.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=775105" title="https://bugzilla.mozilla.org/show_bug.cgi?id=775105">initContactList: Removed from chat-messenger-overlay.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=799068" title="https://bugzilla.mozilla.org/show_bug.cgi?id=799068">ircChannel.prototype.setMode: Non backwards compatible change to parameters (second parameter changed)</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=839279" title="https://bugzilla.mozilla.org/show_bug.cgi?id=839279">IsEventHandler: removed from /editor/ui/dialogs/content/EdAEJSEAttributes.js</a></li>
+ <li>IsWhitespace: removed from /editor/ui/composer/content/editorUtilities.js, use &lt;string&gt;.trim() == "" instead</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=793599" title="https://bugzilla.mozilla.org/show_bug.cgi?id=793599">KEY_ISP_DIRECTORY_LIST: removed from am-junk.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=810680" title="https://bugzilla.mozilla.org/show_bug.cgi?id=810680">kHighestPort: removed from /mailnews/base/prefs/content/accountcreation/emailWizard.js</a></li>
+ <li>nsIWindowMediator: removed from nsMailDefaultHandler.js, use Services.wm instead</li>
+ <li>nsIWindowWatcher: removed from nsMailDefaultHandler.js, use Services.ww instead</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=878604" title="https://bugzilla.mozilla.org/show_bug.cgi?id=878604">onChooseFolder: removed from /mail/base/content/SearchDialog.js</a></li>
+ <li>pref: removed from mailWindow.js, use Services.prefs instead</li>
+ <li>prefs: removed from nsMsgTraitService.js, use Services.prefs instead</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=679696" title="https://bugzilla.mozilla.org/show_bug.cgi?id=679696">queryISupportsArray(supportsArray, iid): Removed from MsgComposeCommands.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=878604" title="https://bugzilla.mozilla.org/show_bug.cgi?id=878604">selectFolder: removed from /mail/base/content/SearchDialog.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=785980" title="https://bugzilla.mozilla.org/show_bug.cgi?id=785980">SetUpToolbarButtons(uri): Removed from mailWindowOverlay.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=795152" title="https://bugzilla.mozilla.org/show_bug.cgi?id=795152">specialTabs.getApplicationUpgradeVersions: removed function argument in specialTabs.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=795152" title="https://bugzilla.mozilla.org/show_bug.cgi?id=795152">specialTabs.shouldShowTelemetryNotification: removed function argument in specialTabs.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=795152" title="https://bugzilla.mozilla.org/show_bug.cgi?id=795152">specialTabs.showTelemetryNotification: removed function argument in specialTabs.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=795152" title="https://bugzilla.mozilla.org/show_bug.cgi?id=795152">specialTabs.shouldShowAboutRightsNotification: removed function argument in specialTabs.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=795152" title="https://bugzilla.mozilla.org/show_bug.cgi?id=795152">specialTabs.showAboutRightsNotification: removed function argument in specialTabs.js</a></li>
+ <li>toggleFilter: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=783491" title="https://bugzilla.mozilla.org/show_bug.cgi?id=783491">Removed second function argument</a></li>
+ <li>trim: removed from amUtils.js, use &lt;string&gt;.trim() instead</li>
+ <li>updateInboxAccount: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=389139" title="https://bugzilla.mozilla.org/show_bug.cgi?id=389139">changed</a> in /mailnews/base/prefs/content/am-server-advanced.js</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=725488" title="https://bugzilla.mozilla.org/show_bug.cgi?id=725488">updateMoveTargetMode(aEnable): Removed from am-junk.js</a></li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=725488" title="https://bugzilla.mozilla.org/show_bug.cgi?id=725488">updatePurgeSpam(aEnable): Removed from am-junk.js</a></li>
+ <li>updateSearchFolderPicker: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=878604" title="https://bugzilla.mozilla.org/show_bug.cgi?id=878604">changed</a> in /mail/base/content/SearchDialog.js</li>
+</ul>
+
+<h2 id="Further_changes">Further changes</h2>
+
+<ul>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=327812" title="https://bugzilla.mozilla.org/show_bug.cgi?id=327812">Server name validation for incoming servers has been added</a>: If an add-on created a fake account with an incoming server which does not validate, this can cause issues on re-validation.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=749200" title="https://bugzilla.mozilla.org/show_bug.cgi?id=749200">The sort order of accounts has been defined for new account types changed</a> and centralized. Extensions can also use the allAccountsSorted() function to retrieve this common sort order of the accounts in the profile. In all list widgets the accounts should be shown in this order:
+ <ul>
+ <li><span class="quote">default account</span></li>
+ <li><span class="quote">other mail accounts</span></li>
+ <li><span class="quote">Local Folders</span></li>
+ <li><span class="quote">chat accounts</span></li>
+ <li><span class="quote">feeds</span></li>
+ <li><span class="quote">newsgroups</span></li>
+ </ul>
+ </li>
+ <li>The Local directory used for mail storage <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=750781" title="https://bugzilla.mozilla.org/show_bug.cgi?id=750781">is now checked for validity and safeness</a>. Filesystem directories deemed inappropriate are rejected by the account manager. Extensions can <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=848477" title="https://bugzilla.mozilla.org/show_bug.cgi?id=848477">add theirs own lists of file directories which can (or should not) be used for mail</a> storage by extending the global <span class="difflineplus">gDangerousLocalStorageDirs</span> array in <span class="difflineplus">/mailnews/base/prefs/content/AccountManager.js</span>.</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=834911" title="https://bugzilla.mozilla.org/show_bug.cgi?id=834911">Support for nsIEnumerator has been removed /from mailnews/base/util/iteratorUtils.jsm</a></li>
+</ul>
+
+<h2 id="Platform_changes_and_web_standards_support">Platform changes and web standards support</h2>
+
+<p>For information about changes to the underlying Gecko platform and changes to the support of web technologies, please read the following information for developers:</p>
+
+<ul>
+ <li><a href="/en-US/docs/Mozilla/Firefox/Releases/18" title="/en-US/docs/Mozilla/Firefox/Releases/18">Firefox 18 for developers</a></li>
+ <li><a href="/en-US/docs/Mozilla/Firefox/Releases/19" title="/en-US/docs/Mozilla/Firefox/Releases/19">Firefox 19 for developers</a></li>
+ <li><a href="/en-US/docs/Mozilla/Firefox/Releases/20" title="/en-US/docs/Mozilla/Firefox/Releases/20">Firefox 20 for developers</a></li>
+ <li><a href="/en-US/docs/Mozilla/Firefox/Releases/21" title="/en-US/docs/Mozilla/Firefox/Releases/21">Firefox 21 for developers</a></li>
+ <li><a href="/en-US/docs/Mozilla/Firefox/Releases/22" title="/en-US/docs/Mozilla/Firefox/Releases/22">Firefox 22 for developers</a></li>
+ <li><a href="/en-US/docs/Mozilla/Firefox/Releases/23" title="/en-US/docs/Mozilla/Firefox/Releases/23">Firefox 23 for developers</a></li>
+ <li><a href="/en-US/docs/Mozilla/Firefox/Releases/24" title="/en-US/docs/Mozilla/Firefox/Releases/24">Firefox 24 for developers</a></li>
+</ul>
+
+<h2 id="Strings">Strings</h2>
+
+<h4 id="advanced.dtd">advanced.dtd</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=804001" title="https://bugzilla.mozilla.org/show_bug.cgi?id=804001">checkNow.acesskey renamed to checkDefaultsNow.accesskey<br>
+ checkNow.label renamed to checkDefaultsNow.label</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=892255" title="https://bugzilla.mozilla.org/show_bug.cgi?id=892255">viewCRLs.label removed<br>
+ viewCRLs.accesskey removed</a></p>
+
+<h4 id="am-identities-list.dtd">am-identities-list.dtd</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=314806" title="https://bugzilla.mozilla.org/show_bug.cgi?id=314806">identitiesListDesc.label removed</a></p>
+
+<h4 id="am-server-advanced.dtd">am-server-advanced.dtd</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=389139" title="https://bugzilla.mozilla.org/show_bug.cgi?id=389139">globalInbox.label removed<br>
+ globalInbox.accesskey removed</a></p>
+
+<h4 id="am-smime.properties">am-smime.properties</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=465351" title="https://bugzilla.mozilla.org/show_bug.cgi?id=465351">ErrorCanNotEncrypt renamed to ErrorEncryptMail</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=465351" title="https://bugzilla.mozilla.org/show_bug.cgi?id=465351">ErrorCanNotSign renamed to ErrorCanNotSignMail</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=800877" title="https://bugzilla.mozilla.org/show_bug.cgi?id=800877">mime_multipartSignedBlurb removed</a></p>
+
+<h4 id="composeMsgs.properties">composeMsgs.properties</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=801383" title="https://bugzilla.mozilla.org/show_bug.cgi?id=801383">12564 removed</a></p>
+
+<h4 id="display.dtd">display.dtd</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=845807" title="https://bugzilla.mozilla.org/show_bug.cgi?id=845807">color.label removed<br>
+ color.accesskey removed<br>
+ colors.label removed<br>
+ overrideColors.label removed<br>
+ fontsAndColors.label removed</a></p>
+
+<h4 id="editorOverlay.dtd">editorOverlay.dtd</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=813295" title="https://bugzilla.mozilla.org/show_bug.cgi?id=813295">decreaseFontSize.key renamed to decrementFontSize.key<br>
+ decreaseFontSize.key2 renamed to decrementFontSize.key2<br>
+ increaseFontSize.key renamed to incrementFontSize.key<br>
+ increaseFontSize.key2 renamed to incrementFontSize.key2</a></p>
+
+<h4 id="filter.properties">filter.properties</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=561762" title="https://bugzilla.mozilla.org/show_bug.cgi?id=561762">searchTermsInvalidMessage renamed to searchTermsInvalidRule</a></p>
+
+<h4 id="FilterEditor.dtd">FilterEditor.dtd</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=775665" title="https://bugzilla.mozilla.org/show_bug.cgi?id=775665">contextDesc.accesskey renamed to contextIncomingMail.accesskey<br>
+ contextIncoming.label renamed to contextIncomingMail.label</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=775665" title="https://bugzilla.mozilla.org/show_bug.cgi?id=775665">contextBoth.label removed<br>
+ contextPostPlugin.label removed<br>
+ contextPostPluginBoth.label removed</a></p>
+
+<h4 id="imapMsgs.properites">imapMsgs.properites</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=448624" title="https://bugzilla.mozilla.org/show_bug.cgi?id=448624">5061 removed</a></p>
+
+<h4 id="irc.properties">irc.properties</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=812921" title="https://bugzilla.mozilla.org/show_bug.cgi?id=812921">command.mode removed<br>
+ message.mode removed</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=799068" title="https://bugzilla.mozilla.org/show_bug.cgi?id=799068">command.wallops removed</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=842183" title="https://bugzilla.mozilla.org/show_bug.cgi?id=842183">command.whois removed</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=792046" title="https://bugzilla.mozilla.org/show_bug.cgi?id=792046">connection.error.certError removed</a></p>
+
+<h4 id="localMsgs.properties">localMsgs.properties</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=858238" title="https://bugzilla.mozilla.org/show_bug.cgi?id=858238">321 renamed to pop3OutOfDiskSpace<br>
+ 4000 renamed to buildingSummary<br>
+ 4001 renamed to localStatusDocumentDone<br>
+ 4003 renamed to pop3ServerError<br>
+ 4004 renamed to pop3UsernameFailure<br>
+ 4005 renamed to pop3PasswordFailure<br>
+ 4006 renamed to pop3MessageWriteError<br>
+ 4012 renamed to pop3RetrFailure<br>
+ 4013 renamed to pop3PasswordUndefined<br>
+ 4014 renamed to pop3UsernameUndefined<br>
+ 4015 renamed to pop3ListFailure<br>
+ 4016 renamed to pop3DeleFailure<br>
+ 4024 renamed to pop3StatFail<br>
+ 4025 renamed to pop3ServerSaid<br>
+ 4027 renamed to copyingMessagesStatus<br>
+ 4028 renamed to movingMessagesStatus<br>
+ 4029 renamed to pop3MessageFolderBusy<br>
+ 4033 renamed to movemailCantOpenSpoolFile<br>
+ 4034 renamed to movemailCantCreateLock<br>
+ 4035 renamed to movemailCantDeleteLock<br>
+ 4036 renamed to movemailCantTruncateSpoolFile<br>
+ 4037 renamed to movemailSpoolFileNotFound<br>
+ 4038 renamed to pop3TmpDownloadError<br>
+ 4040 renamed to pop3ServerDoesNotSupportUidlEtc<br>
+ 4041 renamed to pop3ServerDoesNotSupportTopCommand<br>
+ 4043 renamed to nsErrorCouldNotConnectViaTls<br>
+ 4044 renamed to pop3MoveFolderToTrash<br>
+ 4045 renamed to pop3DeleteFolderDialogTitle<br>
+ 4046 renamed to pop3DeleteFolderButtonLabel<br>
+ 4047 renamed to pop3AuthInternalError<br>
+ 4048 renamed to pop3AuthChangeEncryptToPlainNoSSL<br>
+ 4049 renamed to pop3AuthChangeEncryptToPlainSSL<br>
+ 4050 renamed to pop3AuthChangePlainToEncrypt<br>
+ 4051 renamed to pop3AuthMechNotSupported<br>
+ 4052 renamed to pop3GssapiFailure</a></p>
+
+<h4 id="main.properties">main.properties</h4>
+
+<p>source: /mail/locales/en-US/feedback/main.properties<br>
+ File removed</p>
+
+<h4 id="messenger.dtd">messenger.dtd</h4>
+
+<p>moved to viewZoomOverlay.dtd:<br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=738194" title="https://bugzilla.mozilla.org/show_bug.cgi?id=738194">fullZoomEnlargeCmd.label<br>
+ fullZoomReduceCmd.label<br>
+ fullZoomResetCmd.label<br>
+ fullZoomToggleCmd.label</a><br>
+ <br>
+ internal:<br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=812630" title="https://bugzilla.mozilla.org/show_bug.cgi?id=812630">appmenuButton.tooltip renamed to appmenuButton1.tooltip</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=508250" title="https://bugzilla.mozilla.org/show_bug.cgi?id=508250">contextForwardAsAttachment.label renamed to contextMultiForwardAsAttachment.label<br>
+ contextForwardAsAttachment.accesskey renamed to contextMultiForwardAsAttachment.accesskey</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=179033" title="https://bugzilla.mozilla.org/show_bug.cgi?id=179033">contextKillSubthreadMenu.accesskey<br>
+ contextWatchThreadMenu.accesskey</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=878933" title="https://bugzilla.mozilla.org/show_bug.cgi?id=878933">folderContextOpenNewWindow.label renamed to folderContextOpenInNewWindow.label<br>
+ folderContextOpenNewWindow.accesskey renamed to folderContextOpenInNewWindow.accesskey</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=599036" title="https://bugzilla.mozilla.org/show_bug.cgi?id=599036">openFeedMessage.label renamed to openFeedMessage1.label<br>
+ openFeedMessage.accesskey renamed to openFeedMessage1.accesskey</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=853135" title="https://bugzilla.mozilla.org/show_bug.cgi?id=853135">openAttachmentCmd.label renamed to openAttachmentListCmd.label<br>
+ openAttachmentCmd.accesskey renamed to openAttachmentListCmd.accesskey</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=599036" title="https://bugzilla.mozilla.org/show_bug.cgi?id=599036">openFeedWebPageInWindow.label removed<br>
+ openFeedWebPageInWindow.accesskey removed<br>
+ openFeedSummaryInWindow.label removed<br>
+ openFeedSummaryInWindow.accesskey removed</a></p>
+
+<h4 id="messenger.properties">messenger.properties</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=308690" title="https://bugzilla.mozilla.org/show_bug.cgi?id=308690">applyNowButton removed<br>
+ applyToCollapsedAlwaysAskCheckbox removed<br>
+ applyToCollapsedMsgsTitle removed<br>
+ applyToCollapsedMsgs removed</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=883485" title="https://bugzilla.mozilla.org/show_bug.cgi?id=883485">confirmMsgDelete.shiftDel.desc renamed to confirmMsgDelete.deleteNoTrash.desc</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=595104" title="https://bugzilla.mozilla.org/show_bug.cgi?id=595104">getNextNMessages renamed to getNextNewsMessages</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=852461" title="https://bugzilla.mozilla.org/show_bug.cgi?id=852461">growlNotification removed</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=595104" title="https://bugzilla.mozilla.org/show_bug.cgi?id=595104">openWindowWarningText renamed to openWindowWarningConfirmation</a></p>
+
+<h4 id="messengercompose.dtd">messengercompose.dtd</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=339887" title="https://bugzilla.mozilla.org/show_bug.cgi?id=339887">outputFormatMenu.label renamed to deliveryFormatMenu.label<br>
+ deliveryFormatMenu.accesskey renamed to deliveryFormatMenu.acesskey</a></p>
+
+<h4 id="msgHdrViewOverlay.dtd">msgHdrViewOverlay.dtd</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=686427" title="https://bugzilla.mozilla.org/show_bug.cgi?id=686427">bccField3.label renamed to bccField4.label<br>
+ ccField3.label renamed to ccField4.label<br>
+ dateField3.label renamed to dateField4.label<br>
+ followupToField3.label renamed to followupToField4.label<br>
+ fromField3.label renamed to fromField4.label<br>
+ inReplyToField3.label renamed to inReplyToField4.label<br>
+ messageIdField3.label renamed to messageIdField4.label<br>
+ newsgroupsField3.label renamed to newsgroupsField4.label<br>
+ organizationField3.label renamed to organizationField4.label<br>
+ originalWebsite3.label renamed to originalWebsite4.label<br>
+ referencesField3.label renamed to referencesField4.label<br>
+ replyToField3.label renamed to replyToField4.label<br>
+ senderField3.label renamed to senderField4.label<br>
+ subjectField3.label renamed to subjectField4.label<br>
+ tagsHdr3.label renamed to tagsHdr4.label<br>
+ toField3.label renamed to toField4.label<br>
+ userAgentField3.label renamed to userAgentField4.label</a></p>
+
+<h4 id="multimessageview.properties">multimessageview.properties</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=179033" title="https://bugzilla.mozilla.org/show_bug.cgi?id=179033">Nmessages removed</a></p>
+
+<h4 id="preferences.properties">preferences.properties</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=595723" title="https://bugzilla.mozilla.org/show_bug.cgi?id=595723">alreadyDefaultClientTitle removed<br>
+ alreadyDefault removed</a></p>
+
+<h4 id="prefs.properties">prefs.properties</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=734034" title="https://bugzilla.mozilla.org/show_bug.cgi?id=734034">confirmDeferAccount renamed to confirmDeferAccountWarning</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=577775" title="https://bugzilla.mozilla.org/show_bug.cgi?id=577775">directoryUsedByOtherAccount renamed to directoryAlreadyUsedByOtherAccount</a><br>
+ <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=327812" title="https://bugzilla.mozilla.org/show_bug.cgi?id=327812">serverNameEmpty removed</a></p>
+
+<h4 id="sanitize.dtd">sanitize.dtd</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=807699" title="https://bugzilla.mozilla.org/show_bug.cgi?id=807699">clearDataSettings2.label removed<br>
+ clearTimeDuration.dateColumn removed<br>
+ clearTimeDuration.nameColumn removed<br>
+ column.width removed<br>
+ dataSection.label removed<br>
+ historySection.label removed<br>
+ sanitizePrefs2.title removed<br>
+ sanitizeItems.label removed</a></p>
+
+<h4 id="SearchDialog.dtd">SearchDialog.dtd</h4>
+
+<p><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=325777" title="https://bugzilla.mozilla.org/show_bug.cgi?id=325777">fileHereMenu.label renamed to moveHereMenu.label<br>
+ fileHereMenu.accesskey renamed to moveHereMenu.accesskey<br>
+ fileButton.label renamed to moveButton.label<br>
+ fileButton.accesskey renamed to moveButton.accesskey</a></p>
diff --git a/files/ja/mozilla/thunderbird/releases/3/index.html b/files/ja/mozilla/thunderbird/releases/3/index.html
new file mode 100644
index 0000000000..15794f1fbb
--- /dev/null
+++ b/files/ja/mozilla/thunderbird/releases/3/index.html
@@ -0,0 +1,51 @@
+---
+title: Thunderbird 3 for developers
+slug: Mozilla/Thunderbird/Releases/3
+tags:
+ - Thunderbird 3
+ - thunderbird
+translation_of: Mozilla/Thunderbird/Releases/3
+---
+<p>このページでは、Thunderbird 3 の開発者のための関連する変更点を列挙しています。ユーザに関連する変更点については、<a class="internal" href="/ja/Thunderbird_3_for_users" title="ja/Thunderbird 3 for users">Thunderbird 3 for users</a> を参照してください。</p>
+<h2 id="アクティビティ・マネージャ">アクティビティ・マネージャ</h2>
+<p>アクティビティ・マネージャは Thunderbird が行っている処理の進捗具合を表示する新しい機能です。 これはステータスバーに埋め込まれており、処理を行っている最中にユーザへ処理の状況を通知します。<a class="link-https" href="https://wiki.mozilla.org/Thunderbird:Activity_Manager" title="https://wiki.mozilla.org/Thunderbird:Activity_Manager">ドキュメント</a> (関連性がありますが、情報が古い可能性があります。)</p>
+<h2 id="アドレス帳">アドレス帳</h2>
+<h3 id="インタフェースの改善">インタフェースの改善</h3>
+<p style="text-align: left;"><a class="internal" href="/Ja/Address_Book_Interfaces" title="Ja/Address Book Interfaces">様々なインタフェース</a>が追加、削除、更新されました。これらの変更の主な目的は、個々のアドレス帳の種類について専門性を低減することと、インタフェースをより一般的で汎用性なものにするということです。使い方については、<a class="internal" href="/ja/Address_Book_Examples" title="ja/Address Book Examples">使用例</a>を参照してください。</p>
+<h3 id="メニューポップアップ・ウィジェット">メニューポップアップ・ウィジェット</h3>
+<p>いつかのパラメータを基にしてアドレス帳のリストを提供する、新しい <a class="external" href="http://mxr.mozilla.org/comm-1.9.1/source/mailnews/addrbook/content/addrbookWidgets.xml" title="http://mxr.mozilla.org/comm-1.9.1/source/mailnews/addrbook/content/addrbookWidgets.xml">menupopup バインディング</a>が追加されました。</p>
+<h2 id="自動補完">自動補完</h2>
+<p><a class="internal" href="/ja/XUL/textbox_(Mozilla_autocomplete)" title="Ja/XUL/Textbox (XPFE autocomplete)">xpfe 自動補完要素</a>は、属性や機能をすべて実装するために、<a class="internal" href="/ja/XUL/textbox_(Firefox_autocomplete)" title="Ja/XUL/Textbox (Toolkit autocomplete)">toolkit 自動補完要素</a>へ更新されました。これにより、拡張機能は <a class="internal" href="/ja/XUL/textbox_(Firefox_autocomplete)" title="Ja/XUL/Textbox (Toolkit autocomplete)">toolkit 自動補完要素</a>と同様の属性を使えるようになり、<a class="internal" href="/ja/How_to_implement_custom_autocomplete_search_component" title="ja/How to implement custom autocomplete search component">toolkit 自動補完インタフェース</a> を実装して独自の自動補完機構をつくることが可能になります。</p>
+<h3 id="アドレス帳自動補完">アドレス帳自動補完</h3>
+<p>いくつかのアドレス帳の自動補完機能が同様に更新されました。インタフェースの使い方については、<a class="internal" href="/Ja/Address_Book_Examples#How_do_I.c2.a0set_up_autocomplete_to_use_the_address_book.3f" title="Ja/Address Book Examples#How do I.c2.a0set up autocomplete to use the address book.3f">例</a>を参照してください。</p><h2 id="コンテンツブラウジング">コンテンツブラウジング</h2>
+<p>Thunderbird 3 では、(メッセージパネルと並んでいる) メールウインドウでのブラウザ要素のコンテンツ表示を改善しました。詳細な背景については、<a href="/ja/Thunderbird/Content_Tabs" title="ja/Thunderbird/Content Tabs">コンテンツタブ</a>ページを参照してください。Thunderbird 3 でのもっとも大きな変更点は以下になります。</p>
+<ul> <li><code>network.protocol-handler.expose.{about,http,https} 設定が true に設定されました。</code><br> <ul> <li> <div class="warning">これにより、コンテンツポリシーが許可されていれば、 &lt;browser&gt; または &lt;iframe&gt; 要素は初期設定で http:/ または https:/ リンクとして動作します (以前は、リンクをクリックするとデフォルトに設定されているブラウザが起動しました)。</div> </li> </ul> </li> <li> <p>拡張機能としては &lt;browser&gt; と &lt;iframe&gt; 要素に onclick ハンドラを実装するべきです。<a href="/ja/Thunderbird/Content_Tabs" title="ja/Thunderbird/Content Tabs">コンテンツタブ</a>ページにいくつかの例があります。</p> </li>
+</ul>
+<h2 id="Cookie">Cookie</h2>
+<p>Thunderbird 3 は緩やかな Cookie ポリシーを採用しています。詳細な情報は、<a class="internal" href="/ja/Thunderbird/Cookies_In_Thunderbird" title="ja/Thunderbird/Cookies In Thunderbird">Thunderbird の Cookie</a> を参照してください。</p>
+<h2 id="エラー報告ツール">エラー報告ツール</h2>
+<p>Thunderbird 3 は別の<a href="/ja/Extensions/Thunderbird/Error_reporting_tools" title="ja/Extensions/Thunderbird/Error reporting tools">エラー報告ツール</a>を内部用と拡張機能用に用意しています。</p><h2 id="フォームの自動補完">フォームの自動補完</h2>
+<p>Gecko は (satchel として知られている) フォームの自動補完をサポートしており、Thunderbird 3 ではこの機能が有効にされています。これにより、以前訪れたページのフォームに入力した内容が保存され、自動補完されます。Thunderbird のコンテンツタブは、<a href="http://mxr.mozilla.org/comm-central/source/mail/base/content/specialTabs.xul">browser 要素上でフォームの自動補完を有効にする例</a> の<a class="internal" href="/ja/Code_snippets/Autocomplete" title="ja/Code snippets/Autocomplete">コードスペニット</a>を持っています。</p>
+<p>注意: この機能は、複数の情報が入力される可能性のあるユーザ名およびパスワードのフォームに対しても有効に働きます。</p><h2 id="JavaScript">JavaScript</h2>
+<p>様々なセキュリティ上の観点から、メッセージコンテンツでは JavaScript が完全に無効にされています (<code>javascript.allow.mailnews を変更しても設定は変わりません)。JavaScript は、RSS フィードを含んだリモートコンテンツに対して有効にされます。</code></p>
+<h2 id="パスワード">パスワード</h2>
+<p>Thunderbird 3 は、<a class="internal" href="/ja/XPCOM_Interface_Reference/nsILoginManager" title="ja/XPCOM Interface Reference/nsILoginManager">パスワードマネージャ</a>を使うようになりました。</p>
+<h2 id="検索">検索</h2>
+<p>Thunderbird には新しいメッセージ検索データベース (Gloda) が搭載されています。Gloda により、検索速度が向上し、洗練された全文検索機能や絞り込み機能つきの検索結果表示が実装されました。"Gloda" は Thunderbird "global database" の略称です。Gloda コンセプトの概要と実装についての情報は、<a href="/ja/Thunderbird/gloda" title="ja/Thunderbird/gloda">Gloda</a> のページを参照してください。拡張機能で Gloda を使う場合の情報は、<a href="/ja/Thunderbird/Creating_a_Gloda_message_query" rel="internal" title="ja/Thunderbird/Creating a Gloda message query">Gloda メッセージクエリを作成する</a>を参照してください。Gloda のユースケースについては、<a href="/ja/Thunderbird/Gloda_examples" rel="internal" title="ja/Thunderbird/Gloda examples">Gloda の例</a>を参照してください。</p>
+<h2 id="STEEL">STEEL</h2>
+<p><a class="internal" href="/ja/Toolkit_API/STEEL" title="ja/STEEL">STEEL</a> とは、<strong>S</strong>criptable <strong>T</strong>hunderbird <strong>E</strong>asy <strong>E</strong>xtension <strong>L</strong>ibrary の略称です。これは、Thunderbird の拡張機能開発を容易にする、<a class="internal" href="/ja/Toolkit_API/FUEL" title="ja/Toolkit API/FUEL">FUEL</a> の様なインタフェースセットです。</p>
+<h2 id="タブ">タブ</h2>
+<p>Thunderbird 3 ではメインビューでタブをサポートしました。拡張機能は新しいタブの種類を作成できます。現在のドキュメントが、<a href="http://mxr.mozilla.org/comm-central/source/mail/base/content/tabmail.xml">tabmail.xml</a> だった場合に、小さな例としては、<a href="http://mxr.mozilla.org/comm-central/source/mail/base/content/specialTabs.js">specialTabs.js</a> をコンテンツタブタイプとして呼び出すというものがあります。</p>
+<h2 id="その他の改善">その他の改善</h2>
+<ul> <li>Thunderbird 3 では多くのインタフェースにおいて様々な変更点が存在します。Thunderbird 2 で使用されていたいくつかの機能は、パラメータを渡す新しいメソッドを使用するようにインタフェースが置き換えられたため、これらの古い機能が使用された場合は例外が投げられるようになりました。<a class="external" href="http://mxr.mozilla.org/comm-1.9.1/" title="http://mxr.mozilla.org/comm-1.9.1/">mxr</a> をチェックしてみてください。コードを向上させるために行われた、典型的な置換は以下のようなものです。<br> <ul> <li>nsISupportsArray は <a class="internal" href="/ja/XPCOM_Interface_Reference/nsIArray" title="ja/XPCOM Interface Reference/nsIArray">nsIArray</a> と <a class="internal" href="/ja/XPCOM_Interface_Reference/nsIMutableArray" title="ja/XPCOM Interface Reference/nsIMutableArray">nsIMutableArray</a> になりました。</li> <li><a class="internal" href="/ja/XPCOM_Interface_Reference/nsIFileSpec" title="ja/XPCOM Interface Reference/nsIFileSpec">nsIFileSpec</a> は <a class="internal" href="/ja/XPCOM_Interface_Reference/nsIFile" title="ja/XPCOM Interface Reference/nsIFile">nsIFile</a> (および <a class="internal" href="/ja/nsILocalFile" title="ja/nsILocalFile">nsILocalFile</a>) になりました。</li> <li>wstring は AString になりました。</li> <li>string は ACString または AUTF8String になりました。</li> </ul> </li> <li>様々なフラグセットは、C++ の #define から idl ファイルでの設定に転向し、JavaScript からアクセスできるようにします。変更されたファイルは以下を含みます。<br> <ul> <li><a class="external" href="http://mxr.mozilla.org/comm-1.9.1/source/mailnews/base/public/nsMsgMessageFlags.idl" title="http://mxr.mozilla.org/comm-1.9.1/source/mailnews/base/public/nsMsgMessageFlags.idl">nsMsgMessageFlags.idl</a> (メッセージの中の <code>X-Mozilla-Status ヘッダフィールドで使われてるフラグ</code>)</li> <li><a class="external" href="http://mxr.mozilla.org/comm-1.9.1/source/mailnews/base/public/nsMsgFolderFlags.idl" title="http://mxr.mozilla.org/comm-1.9.1/source/mailnews/base/public/nsMsgFolderFlags.idl">nsMsgFolderFlags.idl</a> (フォルダやニュースグループに関するフラグ)</li> </ul> </li> <li>メッセージペインのコンテキストオプションに追加した popup の id は、<code>messagePaneContext</code> から <code>mailContext</code> に変更されました。<a href="/ja/Extensions/Thunderbird/HowTos/Common_Thunderbird_Extension_Techniques/Add_Option_to_Context_Menu" title="ja/Extensions/Thunderbird/HowTos/Common Thunderbird Extension Techniques/Add Option to Context Menu">Add Option to Context Menu</a> を参照してください。</li> <li>gContextMenu.isTextSelected は Thunderbird 3 から削除されました - 代替となるコードは、<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=463003" title="FIXED: Context menu for selected text in content shows all items">バグ 463003</a> を参照してください。</li>
+</ul>
+<h3 id="ビデオ">ビデオ</h3>
+<p><a class="internal" href="/Ja/HTML/Element/Video" title="ja/HTML/Element/Video">&lt;video&gt;</a> 要素が Gecko で有効になりました。メール中では JavaScript が無効化されたためコントロールが表示されませんが、右クリックメニューからビデオの操作が可能です。リモートコンテンツの <a class="internal" href="/Ja/HTML/Element/Video" title="ja/HTML/Element/Video">&lt;video&gt;</a> 要素 (たとえば、ウェブページで見かけられる RSS フィード) では、コントロールは標準で表示されます。</p>
+<p>メール中の <a class="internal" href="/Ja/HTML/Element/Audio" title="Ja/HTML/Element/Audio">&lt;audio&gt;</a> 要素は、コントロールが JavaScript を要求する (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=449358" title="FIXED: Add test to confirm that video/audio UI controls function when JavaScript is disabled">バグ 449358</a>) ため、動作しません (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=515082" title="Investigate enabling UI to control audio elements in email messages">バグ 515082</a>)。media.autoplay.enabled 設定は、混乱を避けるため初期設定で off に設定されます。<a class="internal" href="/Ja/HTML/Element/Audio" title="Ja/HTML/Element/Audio"><br>
+</a></p><h2 id="他のリソース">他のリソース</h2>
+<h3 id="リリースノートとアナウンスメント">リリースノートとアナウンスメント</h3>
+<p>リリースノートには、それぞれのベータリリース時の変更点に関する詳細な情報が記載されています。</p>
+<ul> <li><a class=" external" href="http://www.mozillamessaging.com/en-US/thunderbird/3.0rc1/releasenotes/" title="http://www.mozillamessaging.com/en-US/thunderbird/3.0rc1/releasenotes/">Thunderbird 3.0 RC 1 release notes</a></li> <li><a class=" external" href="http://www.mozillamessaging.com/en-US/thunderbird/3.0b4/releasenotes/" title="http://www.mozillamessaging.com/en-US/thunderbird/3.0b4/releasenotes/">Thunderbird 3.0 beta 4 release notes</a></li> <li><a class="external" href="http://www.mozillamessaging.com/en-US/thunderbird/3.0b3/releasenotes/" title="http://www.mozillamessaging.com/en-US/thunderbird/3.0b3/releasenotes/">Thunderbird 3.0 beta 3 release notes</a></li> <li><a class="external" href="http://www.mozillamessaging.com/en-US/thunderbird/3.0b2/releasenotes/" title="http://www.mozillamessaging.com/en-US/thunderbird/3.0b2/releasenotes/">Thunderbird 3.0 beta 2 release notes</a></li> <li><a class="external" href="http://www.mozillamessaging.com/en-US/thunderbird/3.0b1/releasenotes/" title="http://www.mozillamessaging.com/en-US/thunderbird/3.0b1/releasenotes/">Thunderbird 3.0 beta 1 release notes</a></li>
+</ul>
+<h3 id="MozillaZine">MozillaZine</h3>
+<p>詳細な記事は MozillaZine ナレッジベースを参照してください。ナレッジベースには Thunderbird 3 の変更点の要約や議論、仕様と (Bugzilla、Mozilla wiki や様々なブログ上の) 文書へのリンクがあります。詳しくは、<a class="external" href="http://kb.mozillazine.org/Thunderbird_3.0_-_New_Features_and_Changes" rel="external nofollow" title="http://kb.mozillazine.org/Thunderbird_3.0_-_New_Features_and_Changes">Thunderbird 3.0 - New Features and Changes</a> を見てください。</p>
diff --git a/files/ja/mozilla/thunderbird/releases/5/index.html b/files/ja/mozilla/thunderbird/releases/5/index.html
new file mode 100644
index 0000000000..56cc79dfd8
--- /dev/null
+++ b/files/ja/mozilla/thunderbird/releases/5/index.html
@@ -0,0 +1,54 @@
+---
+title: Thunderbird 5 for developers
+slug: Mozilla/Thunderbird/Releases/5
+tags:
+ - Thunderbird 5
+translation_of: Mozilla/Thunderbird/Releases/5
+---
+<div class="blockIndicator draft">
+ <p><strong>草案</strong><br>
+ このページは完成していません。</p>
+
+</div><span><br>
+</span>
+<div class="blockIndicator standardNote">
+<p>この記事は <a href="https://developer.mozilla.org/ja/docs/Mozilla/Thunderbird/Releases/5">Thunderbird 5</a> の新機能について述べています</p>
+</div>
+<p><span>このページは、Thunderbird 5 における開発者向けの変更点のリストです。エンドユーザ向けの変更点は、<a class=" external" href="http://support.mozillamessaging.com/kb/new-thunderbird-5/" title="http://support.mozillamessaging.com/kb/new-thunderbird-5/">Thunderbird サポートの記事</a>をご覧ください。<br>
+</span></p>
+<h2 id="Gecko_5.0">Gecko 5.0</h2>
+<p>Thunderbird 5 は、Gecko 5.0 をベースにしています。<a href="/ja/Firefox_4_for_developers" title="ja/Firefox 4 for developers">Firefox 4</a> および <a href="/ja/Firefox_5_for_developers" title="ja/Firefox 5 for developers">Firefox 5</a> のページに、Gecko に対する重要な変更の詳細があります。</p>
+<h2 id="Mozilla_とアドオン開発者向けの変更">Mozilla とアドオン開発者向けの変更</h2>
+<p>既存の拡張機能を Thunderbird 5 向けに更新するための役立つヒントについては、<a href="/ja/Extensions/Updating_extensions_for_Firefox_4" title="ja/Extensions/Updating extensions for Firefox 4">Updating extensions for Firefox 4</a> を参照してください。既存の拡張機能の互換性を損なういくつかの鍵となる変更点があるため、この記事を必ずお読みください。</p>
+<h2 id="STEEL">STEEL</h2>
+<ul> <li>Thunderbird 5 には新しいアドオンマネージャが搭載されています。その副作用として、グローバルな <a href="/ja/Toolkit_API/extIApplication" title="ja/Toolkit API/extIApplication">Application</a> オブジェクトは、もはや拡張機能のプロパティを持ちません。詳細は、<a class=" external" href="http://www.oxymoronical.com/blog/2010/03/How-were-breaking-some-extensions-in-the-near-future" title="http://www.oxymoronical.com/blog/2010/03/How-were-breaking-some-extensions-in-the-near-future">このブログ記事</a>を参照してください。</li>
+</ul>
+<h3 id="JavaScript_コードモジュール">JavaScript コードモジュール</h3>
+<dl> <dt><a href="/ja/JavaScript_code_modules/Services.jsm" title="ja/JavaScript code modules/Services.jsm">Services.jsm</a></dt> <dd><code>Services.jsm</code> コードモジュールは、preferences サービスや window mediator、その他多くの一般的に使用されるサービスへの参照を簡単に取得できる getter を提供します。</dd> <dt><a href="http://mxr.mozilla.org/comm-central/source/mailnews/base/util/mailServices.js">mailServices.js</a></dt> <dd>mailServices.js コードは Services.jsm と似ていますが、メール機能固有のサービスのためのものです。</dd> <dt><a href="/ja/JavaScript_code_modules/ctypes.jsm" title="ja/JavaScript code modules/ctypes.jsm">JS-ctypes API</a></dt> <dd>JS-ctypes API は、XPCOM を使用せずに C 互換の外部ライブラリ関数を呼び出すことを可能にします。</dd> <dt><a href="/ja/Addons/Add-on_Manager" title="ja/Addons/Add-on Manager">アドオンマネージャ</a></dt> <dd>新しいアドオンマネージャは、インストールされたアドオンについての情報、それらを管理するためのサポート、アドオンのインストールと削除を行う機能を提供します。</dd> <dt><a href="/ja/JavaScript_code_modules/Using#Locating_the_code_module" title="ja/JavaScript code modules/Using JavaScript code modules#Locating the code module">chrome: URL からのコードモジュールの読み込み</a></dt> <dd>JAR ファイル内であっても、<strong>chrome:</strong> URL を使用して JavaScript コードモジュールを読み込めるようになりました。</dd> <dt>DownloadLastDir.jsm</dt> <dd><a href="/ja/JavaScript_code_modules/DownloadLastDir.jsm" title="ja/JavaScript/Code modules/DownloadLastDir.jsm"><code>DownloadLastDir.jsm</code></a> コードモジュールは、<code>gDownloadLastDir</code> グローバル変数を提供します。これは、最後にダウンロードされたファイルの保存先ディレクトリのパスを取得できる文字列を含みます。このモジュールは、プライベートブラウジングに関連する問題を扱います。</dd>
+</dl>
+<h4 id="コードモジュールに対する変更">コードモジュールに対する変更</h4>
+<p><code>NetUtil.jsm</code> コードモジュールに <a href="/ja/JavaScript_code_modules/NetUtil.jsm#readInputStreamToString()" title="ja/JavaScript/Code modules/NetUtil.jsm#readInputStreamToString()"><code>readInputStreamToString()</code></a> メソッドが追加されました。これは、ストリームから任意のバイト数だけ文字列に読み込みます。ストリームに 0 (ゼロ) が含まれていても可能です。</p>
+<h3 id="MimeMessage_API">MimeMessage API</h3>
+<p><code>Cu.import("<a class=" external" rel="freelink">resource:///modules/gloda/mimemsg.js</a>");</code> からの <a class=" external" href="http://mxr.mozilla.org/comm-central/source/mailnews/db/gloda/modules/mimemsg.js#171" title="http://mxr.mozilla.org/comm-central/source/mailnews/db/gloda/modules/mimemsg.js#171"><code>MsgHdrToMimeMessage</code></a> 関数が、追加のプロパティを持つ <a class=" external" href="http://mxr.mozilla.org/comm-central/source/mailnews/db/gloda/modules/mimemsg.js#322" title="http://mxr.mozilla.org/comm-central/source/mailnews/db/gloda/modules/mimemsg.js#322"><code>MimeMessage</code></a> を返すようになりました。これは、メッセージを簡単に解析して構造的な MIME ツリーにし、検査するための推奨された方法です。API に制限が多いと思ったら、ぜひ<a class=" link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=MailNews%20Core&amp;component=Database" title="https://bugzilla.mozilla.org/enter_bug.cgi?product=MailNews Core&amp;component=Database">バグ報告してお知らせください</a>!</p>
+<ol> <li> <p><code>MimeMessageAttachment</code> インスタンスに、メッセージの添付ファイルのサイズへアクセスできるようにする <code>size</code> プロパティが追加されました。</p> </li> <li> <p><code>MimeMessage</code> インスタンスに、新機能の <code>allUserAttachments</code> プロパティが追加されました。これは、メッセージ画面に表示される添付ファイルの情報を提供します。このプロパティは、"添付ファイル" を扱う場合に覚えておくべきものです。<code>allAttachments</code> プロパティは、添付されたメールなどの MIME パートは含みません。</p> </li> <li> <p>動作を高速化するため、メッセージがリモートの IMAP サーバにだけある場合は、<code>MsgHdrToMimeMessage</code> へ渡す <code>options</code> オブジェクトに <code>partsOnDemand: true</code> メンバを追加してください。画像ファイルなどの添付ファイルがバックエンドでダウンロードされなくなります。</p> </li>
+</ol>
+<h3 id="Gloda_API">Gloda API</h3>
+<p>Gloda に索引が付けられたメッセージは、<code>attachmentInfos</code> と呼ばれる追加のプロパティが使用できるようになりました。これは、与えられたメッセージの添付ファイルを、<code>MsgHdrToMimeMessage</code> に再び流すことなく手軽に操作できるようにします。<code>attachmentInfos</code> は、オブジェクトのリストであり、各オブジェクトは <code>url, size, contentType, name</code> のプロパティを持っています。バージョン 5a1 の時点では、データベーススキーマを変更する計画はありません。これは、バージョン 5 がインストールされた後に索引が付けられたメッセージだけが、このプロパティを持つことを意味します。しかしながら、Gloda の索引を再作成することで、すべてのメッセージに <code>attachmentTypes</code> プロパティを持たせることができます。<code>Cu.import("<a class=" external" rel="freelink">resource:///modules/gloda/index_msg.js</a>")</code> の <code>GlodaMsgIndexer</code> が、この操作のために必要になるでしょう。</p>
+<h3 id="バックエンドの変更">バックエンドの変更</h3>
+<ul> <li><code>DisplayMessage</code> を通してメッセージをストリーミングする場合、<code>&amp;markRead=false</code> パラメータを URI に追加することにより、(IMAP 上の) メッセージを表示した時、バックエンドでメッセージが既読になることを防げるようになりました。</li> <li>Thunderbird のタブメールが、onbeforeunload イベントハンドラを尊重するようになりました。content または chrome タブ内の何かを開発する場合に、タブが閉じられることを防げるようになります。</li> <li>chrome タブが favicon を持てるようになりました。</li> <li>content タブを開いた時、追加の onload 引数で、タブが読み込み中であることを知ることができるようになりました。</li> <li>新しい "偽ヘッダ (fake header)" 機構が導入されました。偽ヘッダは、メッセージが送信された後に挿入され、autosync が実際のヘッダをリモート IMAP サーバから取得している間の placeholder として使用されます。これらのメッセージキーは、2**32 - 128 から 2**32 -1 の範囲内になります。偽ヘッダは、実際のヘッダの取得が完了すると破棄されます。一部のメッセージヘッダを操作するアドオンでは、不正なメッセージヘッダとして扱われる可能性があります。</li>
+</ul>
+<h2 id="XPCOM">XPCOM</h2>
+<p>さらに詳しい変更点は、以下のページを参照してください。もはや、どのインタフェースも凍結されない点に注意することが重要です。ドキュメントにどのように書いてあろうとも、すべてのインタフェースは凍結されなくなりました (unfrozen)。ドキュメントは随時更新されます。</p>
+<dl> <dt><a href="/ja/XPCOM/XPCOM_changes_in_Gecko_2.0" title="ja/XPCOM/XPCOM changes in Gecko 2.0">Gecko 2.0 における XPCOM の変更点</a></dt> <dd>Firefox 4 で互換性に影響を与える XPCOM の変更点の詳細。</dd> <dt><a href="/ja/Components.utils.getGlobalForObject" title="ja/Components.utils.getGlobalForObject">Components.utils.getGlobalForObject()</a></dt> <dd>この新しいメソッドは、オブジェクトが関連付けられたグローバルオブジェクトを返します。これは、破棄された <code>__parent__</code> の一般的な使用例を置き換えるものです。</dd>
+</dl>
+<h2 id="その他の変更点">その他の変更点</h2>
+<ul> <li>Thunderbird のビルドは、静的ビルドから libxul スタイルのビルドへ変更されました。</li> <li>Thunderbird が、Firefox がサポートするものと同じ out-of-process プラグインをサポートするようになりました。</li> <li>Thunderbird 内に含まれるリソースのほとんどが、単一の JAR アーカイブファイルである <code>omni.jar</code> にまとめられました。ファイルの I/O が減ったことにより、起動時間が短縮されました。詳しくは、<a href="/ja/About_omni.jar" rel="internal">omni.jar について</a>を参照してください。</li> <li>Content タブが Firefox と同じ方法で favicon をサポートするようになりました。</li> <li>Thunderbird のリリース番号が Gecko のリリース番号と一致するようになりました。詳しい情報は、<a class=" external" href="http://groups.google.com/group/tb-planning/browse_thread/thread/521988f37b611174" title="http://groups.google.com/group/tb-planning/browse_thread/thread/521988f37b611174">tb-planning list の議論</a>を参照してください。</li>
+</ul>
+<h2 id="他のリソース">他のリソース</h2>
+<p>Thunderbird 5 のコードネームは 'Miramar' です。</p>
+<ul> <li><a href="/ja/Firefox_5_for_developers" title="ja/Firefox 5 for developers">Firefox 5 for developers</a></li> <li><a href="/ja/Firefox_4_for_developers" title="ja/Firefox 4.0 for developers">Firefox 4 for developers</a></li> <li><a href="/ja/Thunderbird_3_for_developers" title="ja/Thunderbird 3 for
+ developers">Thunderbird 3.1 for developers</a></li> <li><a class="external" href="http://ccgi.standard8.plus.com/blog/archives/322" title="http://ccgi.standard8.plus.com/blog/archives/322">build details</a></li> <li><a class=" link-https" href="https://wiki.mozilla.org/Thunderbird:Testing" title="https://wiki.mozilla.org/Thunderbird:Testing">how to help with testing</a></li>
+</ul>
+<div class="noinclude">
+
+</div>
diff --git a/files/ja/mozilla/thunderbird/releases/index.html b/files/ja/mozilla/thunderbird/releases/index.html
new file mode 100644
index 0000000000..f16a1d845e
--- /dev/null
+++ b/files/ja/mozilla/thunderbird/releases/index.html
@@ -0,0 +1,19 @@
+---
+title: Thunderbird 開発者向けリリースノート
+slug: Mozilla/Thunderbird/Releases
+tags:
+ - Landing
+ - Mozilla
+ - Release
+ - thunderbird
+translation_of: Mozilla/Thunderbird/Releases
+---
+<p>このページは、各 Thunderbird リリース版の "Thunderbird X for developers" の記事へのリンクを提供します。これらのリリースノートでは、Thunderbird の各バージョンで追加された機能や修正されたバグの一覧を見ることができます。</p>
+
+<div class="multiColumnList">{{ListSubpages("/ja/docs/Mozilla/Thunderbird/Releases",1,1,1)}}</div>
+
+<h2 class="multiColumnList" id="See_also" name="See_also">関連情報</h2>
+
+<ul>
+ <li><a href="/ja/docs/Mozilla/Firefox/Releases">Firefox 開発者向けリリースノート</a></li>
+</ul>
diff --git a/files/ja/mozilla/toolkit_version_format/index.html b/files/ja/mozilla/toolkit_version_format/index.html
new file mode 100644
index 0000000000..8eb2e46a17
--- /dev/null
+++ b/files/ja/mozilla/toolkit_version_format/index.html
@@ -0,0 +1,101 @@
+---
+title: Toolkit version format
+slug: Mozilla/Toolkit_version_format
+tags:
+ - Toolkit API
+translation_of: Mozilla/Toolkit_version_format
+---
+<p>このドキュメントは Firefox 1.5 (<a href="ja/XULRunner">XULRunner</a> 1.8)以降で使われているバージョン形式のリファレンスです。この形式は拡張マネージャ、ソフトウェアの更新、およびプラットフォームのその他の部分で使われています。 最低限、以下の場所のバージョンはこの形式に従っていなければなりません。</p>
+
+<ul>
+ <li><a href="ja/Install_Manifests">install</a> および <a href="ja/Update_Manifest">update</a> manifests にある<a href="ja/Install_Manifests#version">Addon</a> および <a href="ja/Install_Manifests#targetApplication">target application</a>のバージョン</li>
+ <li>設定値 <code>app.extensions.version</code>, <code>extensions.lastAppVersion</code></li>
+ <li><a href="ja/NsIXULAppInfo">nsIXULAppInfo</a>が返すバージョン</li>
+ <li><a href="ja/XULRunner">XULRunner</a>アプリケーションの<a href="ja/XUL_Application_Packaging"><code>application.ini</code></a></li>
+ <li><a href="ja/Chrome_Registration">chrome manifests</a>にある<a href="ja/Chrome_Registration#appversion">appversion flag</a>.</li>
+</ul>
+
+<p><a href="ja/NsIVersionComparator">nsIVersionComparator</a> をあなたのアプリケーションからバージョンの比較に使うことができます。</p>
+
+<p>Firefox/Thunderbird 1.0 で使われていた古いバージョン形式については下の {{ Anch("古いバージョン形式") }} を参照してください。</p>
+
+<p>{{ 英語版章題("Version format") }}</p>
+
+<h3 id=".E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E5.BD.A2.E5.BC.8F" name=".E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E5.BD.A2.E5.BC.8F">バージョン形式</h3>
+
+<p><strong>バージョン文字列</strong> はドットで区切られた1つ以上の<em>バージョンパート</em>から成ります。</p>
+
+<p>それぞれの <strong>バージョンパート</strong> はそれ自身が <code>&lt;数値-a&gt;&lt;文字列-b&gt;&lt;数値-c&gt;&lt;文字列-d&gt;</code> という4つのパートの並びに解析されます。それぞれのパートは任意です。 数値は10進整数で (マイナスかもしれない)、文字列は ASCII です。</p>
+
+<p>有効なバージョンパートのいくつかの例:</p>
+
+<ul>
+ <li><code>0</code> (as in <code>1.0</code>): <code>&lt;数値-a&gt;=0</code></li>
+ <li><code>5a</code> (as in <code>1.5a</code>): <code>&lt;数値-a&gt;=5</code>, <code>&lt;文字列-b&gt;=a</code></li>
+ <li><code>5pre4</code> (as in <code>3.5pre4</code>): <code>&lt;数値-a&gt;=5</code>, <code>&lt;文字列-b&gt;=pre</code>, <code>&lt;数値-c&gt;=4</code></li>
+ <li><code>*</code> (as in <code>1.0.*</code>): <code>&lt;string-b&gt;=*</code></li>
+</ul>
+
+<p>可読性と後方互換性のために、以下のような特別な解析ルールが適用されます。</p>
+
+<ul>
+ <li>バージョンパートがアスタリスク一つならば、 無限に大きい数字として解釈される:<br>
+ <code>1.5.0.*</code> は <code>1.5.0.<em>(無限)</em></code> という意味です。</li>
+ <li>文字列-b がプラス記号ならば, 数値-a は Firefox 1.0.x のバージョンフォーマットとの互換性のため1増加される:<br>
+ <code>1.0+</code> は <code>1.1pre</code> と同じです。</li>
+</ul>
+
+<p>バージョンパートを文字列と数値の並びに分ける原理は、バージョンパートを比較する際、数値部分は数値として比較され(例: '1.0pre1' &lt; '1.0pre10')、文字列部分はバイト単位で比較されるというものです。 バージョンがどの様にして比較されるかについての詳細は次のセクションを参照してください。</p>
+
+<p>{{ 英語版章題("Comparing versions") }}</p>
+
+<h3 id=".E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E3.81.AE.E6.AF.94.E8.BC.83" name=".E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E3.81.AE.E6.AF.94.E8.BC.83">バージョンの比較</h3>
+
+<p>二つのバージョン文字列が比較される時、 左のバージョンパートから順に右に向かって比較されます。 空であったり欠けているバージョンパートは <code>0</code> と同義です。</p>
+
+<p>あるポイントで、一方のバージョン文字列のバージョンパートが、もう一方のバージョン文字列の対応するバージョンパートよりも大きければ、最初のバージョン文字列は他方のバージョン文字列よりも大きいということになります。</p>
+
+<p>そうでなければ、バージョン文字列は同一です。欠落しているバージョンパートは <code>0</code> であるのと同じように扱われるので、次のバージョン文字列は全て同じであるということに注意してください。<br>
+ <code>1</code> 、 <code>1.0</code> 、 <code>1.0.</code> 、 <code>1.0.0</code> 、 そして <code>1.0...</code> も</p>
+
+<p>{{ 英語版章題("Comparing version parts") }}</p>
+
+<h4 id=".E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E3.83.91.E3.83.BC.E3.83.88.E3.81.AE.E6.AF.94.E8.BC.83" name=".E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E3.83.91.E3.83.BC.E3.83.88.E3.81.AE.E6.AF.94.E8.BC.83">バージョンパートの比較</h4>
+
+<p>バージョンパートも同様に左から右に比較されます。 パート A と C は数値として比較され、パート B と D はバイト単位で比較されます。文字列が存在する場合は存在しない場合よりも必ず小さくなります。 (<code>1.6a</code> は <code>1.6</code> よりも小さい)。</p>
+
+<p>{{ 英語版章題("Examples") }}</p>
+
+<h3 id=".E4.BE.8B" name=".E4.BE.8B">例</h3>
+
+<pre class="eval notranslate">1.-1
+&lt; 1 == 1. == 1.0 == 1.0.0
+&lt; 1.1a &lt; 1.1aa &lt; 1.1ab &lt; 1.1b &lt; 1.1c
+&lt; 1.1whatever
+&lt; 1.1pre == 1.1pre0 == 1.0+
+&lt; 1.1pre1a &lt; 1.1pre1aa &lt; 1.1pre1b &lt; 1.1pre1
+&lt; 1.1pre2
+&lt; 1.1pre10
+&lt; 1.1.-1
+&lt; 1.1 == 1.1.0 == 1.1.00
+&lt; 1.10
+&lt; 1.* &lt; 1.*.1
+&lt; 2.0
+</pre>
+
+<p>{{ 英語版章題("Older version formats") }}</p>
+
+<h3 id=".E5.8F.A4.E3.81.84.E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E5.BD.A2.E5.BC.8F" name=".E5.8F.A4.E3.81.84.E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3.E5.BD.A2.E5.BC.8F">古いバージョン形式</h3>
+
+<p>Firefox/Thunderbird 1.0 では、次のようなより単純なバージョン形式を用いていました。</p>
+
+<pre class="eval notranslate">major[.minor[.release[.build]]][+]
+</pre>
+
+<p><code>{{ mediawiki.external('..') }}</code> は任意の要素であることを意味しており, <code>major</code>, <code>minor</code>, <code>release</code>, <code>build</code> はすべて正の整数です。</p>
+
+
+
+<div class="noinclude"></div>
+
+<p>{{ languages( { "en": "en/Toolkit_version_format", "es": "es/Formato_para_la_versi\u00f3n_del_Toolkit", "zh-cn": "cn/\u7248\u672c\u683c\u5f0f\u8bf4\u660e" } ) }}</p>
diff --git a/files/ja/mozilla/webidl_bindings/index.html b/files/ja/mozilla/webidl_bindings/index.html
new file mode 100644
index 0000000000..054e4653c6
--- /dev/null
+++ b/files/ja/mozilla/webidl_bindings/index.html
@@ -0,0 +1,1232 @@
+---
+title: WebIDL bindings
+slug: Mozilla/WebIDL_bindings
+translation_of: Mozilla/WebIDL_bindings
+---
+<div class="note">
+<p>注記: このドキュメントは getters/setters/creators/deleters の名前付け及びインデックス付けが必要です</p>
+</div>
+
+<p><a class="external" href="http://www.w3.org/TR/WebIDL/" title="http://www.w3.org/TR/WebIDL/">WebIDL </a>バインディングはビルド時に2つの物を生成します: 実際の WebIDL ファイルと WebIDL が Gecko の内部コードとどのように紐付けされるかを定義したメタデータのリストが入った設定ファイルです。</p>
+
+<p>すべてのWebIDLファイルは<a class="external external-icon" href="http://mxr.mozilla.org/mozilla-central/source/dom/webidl/" title="http://mxr.mozilla.org/mozilla-central/source/dom/webidl/"><code>dom/webidl</code></a> に配置され、このディレクトリにある <a class="external external-icon" href="http://mxr.mozilla.org/mozilla-central/source/dom/webidl/moz.build" title="http://mxr.mozilla.org/mozilla-central/source/dom/webidl/moz.build">moz.build</a> のリストに追加されます。</p>
+
+<p>Note that if you're adding new interfaces, then the test at <code><span class="s0"><a href="http://mxr.mozilla.org/mozilla-central/source/dom/tests/mochitest/general/test_interfaces.html">dom/tests/mochitest/general/test_interfaces.html</a> </span></code>will most likely fail. This is a signal that you need to get a review from a DOM peer. Resist the urge to just add your interfaces to the list without the review; it will just annoy the DOM peers and they'll make you get the review anyway.</p>
+
+<p>設定ファイルの <code><a class="external external-icon" href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/Bindings.conf" title="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/Bindings.conf">dom/bindings/Bindings.conf</a></code> は一般的な Python の辞書で、インタフェースの名前とインタフェースの情報の紐付けをし、これらは <em>descriptor</em> と呼ばれています  これらは様々なエッジケースをハンドルする可能なすべての種類のオプションが記述されますが、多くの descriptor はとてもシンプルです。</p>
+
+<p>全ての生成されたコードは <code>mozilla::dom</code> 名前空間に配置されます  一つのインタフェースにつきインタフェースの名前と <code>Binding</code> がついた名前空間が生成され、インタフェースのバインディングに関連した全ての物事はこの名前空間で処理されます。</p>
+
+<p><code>dom/bindings</code> にある多くのヘルパーオブジェクトやユーティリティメソッドは全て <code>mozilla::dom</code> 名前空間を持ち、これらのヘッダーは全て <code>mozilla/dom</code> にエクスポートされます。</p>
+
+<h2 id="Adding_WebIDL_bindings_to_a_class" name="Adding_WebIDL_bindings_to_a_class">WebIDL バインディングをクラスに追加する</h2>
+
+<p><code>MyInterface</code>というインタフェースの WebIDL バインディングをインタフェースの実装をしている <code>mozilla::dom::MyInterface</code> クラスに追加するには、次の作業が必要になります::</p>
+
+<ol>
+ <li>
+ <p>もしほかのインターフェイスを継承しなければ、nsWrapperChache を継承しプロパティのキャッシュラッパーをトレースするための cycle collector クラスをフックします。オブジェクトの生成だけする場合や、他のオブジェクトを使わない場合などは、この手順は必要ありません。<br>
+ If your interface doesn't inherit from any other interfaces, inherit from <code>nsWrapperCache</code> and hook up the class to the cycle collector so it will trace the wrapper cache properly. Note that you may not need to do this if your objects can only be created, never gotten from other objects. If you also inherit from <code>nsISupports</code>, make sure the <code>nsISupports</code> comes before the <code>nsWrapperCache</code> in your list of parent classes. If your interface <em>does</em> inherit from another interface, just inherit from the C++ type that the other interface corresponds to.</p>
+
+ <p>If you do need to hook up cycle collection, it will look like this in the common case of also inheriting from nsISupports:</p>
+
+ <pre class="brush: cpp">// Add strong pointers your class holds here. If you do, change to using
+// NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE.
+NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_0(MyClass)
+NS_IMPL_CYCLE_COLLECTING_ADDREF(MyClass)
+NS_IMPL_CYCLE_COLLECTING_RELEASE(MyClass)
+NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(MyClass)
+ NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
+ NS_INTERFACE_MAP_ENTRY(nsISupports)
+NS_INTERFACE_MAP_END</pre>
+ </li>
+ <li>あなたのクラスのインスタンスを与えるために毎回同じオブジェクトを返す<code>GetParentObject</code>のオーバーライドを実装してください (あなたが明示的に再編されたJSラッパーによる親オブジェクトの変更をハンドルするコードを書かない限りは)。そのアイデアは<code>GetParentObject</code>を辿れば最終的にはWindowsが得られ、すべてのWebIDLオブジェクトは特定のWindowと関連付けられることを示します。例えば、<code>nsINode:: GetParentObject</code>は、ノードの所有者ドキュメントを返します。GetParentObjectの返り値は<code>nsISupports</code>を単独で継承しているか対応する<code>nsISupports</code>を生成することができる<code>ToSupports()</code>メソッドを持っている必要があります。<code>MyInterface</code>の多くのインスタンスを迅速に作成することが予想される場合、<code>GetParentObject</code>の戻り値は、最適なパフォーマンスを得るため<code>nsWrapperCache<code>から自分自身を継承しなければなりません。<code>GetParentObject</code>か らnullを返すことは返却されるオブジェクトをセキュリティのためのランダムなグローバルオブジェクトを関連付けることがOKである場合に許可されてい ますが、これはWebコンテンツが無防備になるので通常OKではありません。ラッパーのキャッシュを必要としない場合は、再度、この操作を行う必要はありません。</code></code></li>
+ <li>Add the WebIDL for <code>MyInterface</code> in <code>dom/webidl</code> and to the list in <code>dom/webidl/moz.build</code>.</li>
+ <li>Add an entry to <code>dom/bindings/Bindings.conf</code> that sets some basic information about the implementation of the interface. If the C++ type is not <code>mozilla::dom::MyInterface</code>, you need to set the <code>'nativeType'</code> to the right type. If the type is not in the header file one gets by replacing '::' with '/' and appending '<code>.h</code>', then add a corresponding <code>'headerFile'</code> annotation (or <a href="#HeaderFile" title="#HeaderFile"><code>HeaderFile</code></a> annotation to the .webidl file). If you don't have to set any annotations, then you don't need to add an entry either and the code generator will simply assume the defaults here.</li>
+ <li>Add external interface entries to <code>Bindings.conf</code> for whatever non-WebIDL interfaces your new interface has as arguments or return values.</li>
+ <li>Implement a <code>WrapObject</code> override on <code>mozilla::dom::MyInterface</code> that just calls through to <code>mozilla::dom::MyInterfaceBinding::Wrap</code>. Note that if your C++ type is implementing multiple distinct Web IDL interfaces, you need to choose which <code>mozilla::dom::MyInterfaceBinding::Wrap</code> to call here. See <code>AudioContext::Wrap</code>, for example.</li>
+ <li>Expose whatever methods the interface needs on <code>mozilla::dom::MyInterface</code>. These can be inline, virtual, have any calling convention, and so forth, as long as they have the right argument types and return types. You can see an example of what the function declarations should look like by running <code>mach webidl-example MyInterface</code>. This will produce two files in <code>dom/bindings</code> in your objdir: <code>MyInterface-example.h</code> and <code>MyInterface-example.cpp</code>, which show a basic implementation of the interface using a class that inherits from <code>nsISupports</code> and has a wrapper cache.</li>
+</ol>
+
+<p>See this <a class="link-https" href="https://hg.mozilla.org/mozilla-central/rev/dd08c10193c6" title="https://hg.mozilla.org/mozilla-central/rev/dd08c10193c6">sample patch that migrates window.performance.* to WebIDL bindings</a>.</p>
+
+<div class="note"><strong>Note:</strong> If your object can only be reflected into JS by creating it, not by retrieving it from somewhere, you can skip steps 1 and 2 above and instead add <code>'wrapperCache': False</code> to your descriptor. You will need to flag the functions that return your object as <a href="#Creator" title="#Creator"><code>[NewObject]</code></a> in the WebIDL.</div>
+
+<h2 id="C_reflections_of_WebIDL_constructs">C++ reflections of WebIDL constructs</h2>
+
+<h3 id="C_reflections_of_WebIDL_operations_methods">C++ reflections of WebIDL operations (methods)</h3>
+
+<p><br>
+ A WebIDL operation is turned into a method call on the underlying C++ object. The return type and argument types are determined <a href="#typemapping" title="#typemapping">as described below</a>. In addition to those, all <a href="#Throws">methods that are allowed to throw</a> will get an <code>ErrorResult&amp;</code> argument appended to their argument list. Methods that use certain WebIDL types like <code>any</code> or <code>object</code> will get a <code>JSContext*</code> argument prepended to the argument list. Static methods will be passed a <a href="#GlobalObject" title="#GlobalObject"><code>const GlobalObject&amp;</code></a> for the relevant global. This argument comes before the <code>JSContext*</code> argument, if any.</p>
+
+<p>The name of the C++ method is simply the name of the WebIDL operation with the first letter converted to uppercase.</p>
+
+<p>WebIDL overloads are turned into C++ overloads: they simply call C++ methods with the same name and different signatures.</p>
+
+<p>For example, this webidl:</p>
+
+<pre>interface MyInterface
+{
+ void doSomething(long number);
+ double doSomething(MyInterface? otherInstance);
+
+ [Throws]
+ MyInterface doSomethingElse(optional long maybeNumber);
+ [Throws]
+ void doSomethingElse(MyInterface otherInstance);
+
+ void doTheOther(any something);
+
+ void doYetAnotherThing(optional boolean actuallyDoIt = false);
+
+ static void staticOperation(any arg);
+};
+</pre>
+
+<p>will require these method declarations:</p>
+
+<pre class="brush: cpp">class MyClass
+{
+ void DoSomething(int32_t aNumber);
+ double DoSomething(MyClass* aOtherInstance);
+
+ already_AddRefed DoSomethingElse(Optional aMaybeNumber,
+ ErrorResult&amp; rv);
+ void DoSomethingElse(MyClass&amp; aOtherInstance, ErrorResult&amp; rv);
+
+ void DoTheOther(JSContext* cx, JS::Value aSomething);
+
+ void DoYetAnotherThing(bool aActuallyDoIt);
+
+ static void StaticOperation(const GlobalObject&amp; aGlobal, JSContext* cx, JS::Value aSomething);
+}
+</pre>
+
+<h3 id="C_reflections_of_WebIDL_attributes">C++ reflections of WebIDL attributes</h3>
+
+<p>A WebIDL attribute is turned into a pair of method calls for the getter and setter on the underlying C++ object. A readonly attribute only has a getter and no setter.</p>
+
+<p>The getter's name is the name of the attribute with the first letter converted to uppercase. This has <code>Get</code> prepended to it if any of these conditions hold:</p>
+
+<ol>
+ <li>The type of the attribute is nullable.</li>
+ <li>The getter can throw.</li>
+ <li>The return value of the attribute is returned via an out parameter in the C++.</li>
+</ol>
+
+<p>The method signature for the getter looks just like an operation with no arguments and the attribute's type as the return type.</p>
+
+<p>The setter's name is <code>Set</code> followed by the name of the attribute with the first letter converted to uppercase. The method signature looks just like an operation with a void return value and a single argument whose type is the attribute's type.</p>
+
+<h3 id="C_reflections_of_WebIDL_constructors">C++ reflections of WebIDL constructors</h3>
+
+<p>A WebIDL constructor is turned into a static class method named <code>Constructor</code>. The arguments of this method will be the arguments of the WebIDL constructor, with a <a href="#GlobalObject" title="#GlobalObject"><code>const GlobalObject&amp;</code></a> for the relevant global prepended. For the non-worker case, the global is typically the inner window for the DOM Window the constructor function is attached to. If a <code>JSContext*</code> is also needed due to some of the argument types, it will come after the global. The return value of the constructor for <code>MyInterface</code> is exactly the same as that of a method returning an instance of <code>MyInterface</code>. Constructors are always allowed to throw.</p>
+
+<p>For example, this IDL:</p>
+
+<pre>[Constructor,
+ Constructor(unsigned long someNumber)]
+interface MyInterface
+{
+};
+</pre>
+
+<p>will require the following declarations in <code>MyClass</code>:</p>
+
+<pre class="brush: cpp">class MyClass {
+ // Various nsISupports stuff or whatnot
+ static
+ already_AddRefed Constructor(const GlobalObject&amp; aGlobal,
+ ErrorResult&amp; rv);
+ static
+ already_AddRefed Constructor(const GlobalObject&amp; aGlobal,
+ uint32_t aSomeNumber,
+ ErrorResult&amp; rv);
+};
+</pre>
+
+<h3 id="typemapping" name="typemapping">C++ reflections of WebIDL types</h3>
+
+<p>The exact C++ representation for WebIDL types can depend on the precise way that they're being used (e.g., return values, arguments, and sequence or dictionary members might all have different representations).</p>
+
+<p>Unless stated otherwise, a type only has one representation. Also, unless stated otherwise, nullable types are represented by wrapping <a href="#Nullable" title="#Nullable"><code>Nullable&lt;&gt;</code></a> around the base type.</p>
+
+<p>In all cases, optional arguments which do not have a default value are represented by wrapping <a href="#Optional" title="#Optional"><code>const Optional&lt;&gt;&amp;</code></a> around the representation of the argument type. If the argument type is a C++ reference, it will also become a <a href="#NonNull" title="#NonNull">NonNull&lt;&gt;</a> around the actual type of the object in the process. Optional arguments which do have a default value are just represented by the argument type itself, set to the default value if the argument was not in fact passed in.</p>
+
+<p>Variadic WebIDL arguments are treated as a <a href="#Sequence" title="#Sequence"><code>const Sequence&lt;&gt;&amp;</code></a> around the actual argument type.</p>
+
+<h4 id="any"><code>any</code></h4>
+
+<p><code>any</code> is represented in three different ways, depending on use:</p>
+
+<ul>
+ <li><code>any</code> arguments become <code>JS::Handle</code>. They will be in the compartment of the passed-in JSContext.</li>
+ <li><code>any</code> return values become a <code>JS::MutableHandle</code> out param appended to the argument list. This comes after all IDL arguments, but before the <code>ErrorResult&amp;</code>, if any, for the method. The return value is allowed to be in any compartment; bindings will wrap it into the context compartment as needed.</li>
+ <li><code>any</code> dictionary members and sequence elements become <code>JS::Value</code>. The dictionary members and sequence elements are guaranteed to be marked by whomever puts the sequence or dictionary on the stack, using <code>SequenceRooter</code> and <code>DictionaryRooter</code>.</li>
+</ul>
+
+<p>Methods using <code>any</code> always get a <code>JSContext*</code> argument.</p>
+
+<p>For example, this WebIDL:</p>
+
+<pre>interface Test {
+ attribute any myAttr;
+ any myMethod(any arg1, sequence arg2, optional any arg3);
+};
+</pre>
+
+<p>will correspond to these C++ function declarations:</p>
+
+<pre class="brush: cpp">void MyAttr(JSContext* cx, JS::MutableHandle retval);
+void SetMyAttr(JSContext* cx, JS::Handle value);
+void MyMethod(JSContext* cx, JS::Handle arg1,
+ const Sequence&amp; arg2,
+ const Optional &gt;&amp; arg3,
+ JS::MutableHandle retval);
+</pre>
+
+<h4 id="boolean"><code>boolean</code></h4>
+
+<p>The <code>boolean</code> WebIDL type is represented as a C++ <code>bool</code>.</p>
+
+<p>For example, this WebIDL:</p>
+
+<pre>interface Test {
+ attribute boolean myAttr;
+ boolean myMethod(optional boolean arg);
+};
+</pre>
+
+<p>will correspond to these C++ function declarations:</p>
+
+<pre class="brush: cpp">bool MyAttr();
+void SetMyAttr(bool value);
+JS::Value MyMethod(const Optional&amp; arg);
+</pre>
+
+<h4 id="Integer_types">Integer types</h4>
+
+<p>Integer WebIDL types are mapped to the corresponding C99 stdint types.</p>
+
+<p>For example, this WebIDL:</p>
+
+<pre>interface Test {
+ attribute short myAttr;
+ long long myMethod(unsigned long? arg);
+};
+</pre>
+
+<p>will correspond to these C++ function declarations:</p>
+
+<pre class="brush: cpp">int16_t MyAttr();
+void SetMyAttr(int16_t value);
+int64_t MyMethod(const Nullable&amp; arg);
+</pre>
+
+<h4 id="Floating_point_types">Floating point types</h4>
+
+<p>Floating point WebIDL types are mapped to the C++ type of the same name. So <code>float</code> and <code>unrestricted float</code> become a C++ <code>float</code>, while <code>double</code> and <code>unrestricted double</code> become a C++ <code>double</code>.</p>
+
+<p>For example, this WebIDL:</p>
+
+<pre>interface Test {
+ float myAttr;
+ double myMethod(unrestricted double? arg);
+};
+</pre>
+
+<p>will correspond to these C++ function declarations:</p>
+
+<pre class="brush: cpp">float MyAttr();
+void SetMyAttr(float value);
+double MyMethod(const Nullable&amp; arg);
+</pre>
+
+<h4 id="DOMString"><code>DOMString</code></h4>
+
+<p>Strings are reflected in three different ways, depending on use:</p>
+
+<ul>
+ <li>String arguments become <code>const nsAString&amp;</code>.</li>
+ <li>String return values become a <a href="#DOMString-helper" title="#DOMString-helper"><code>mozilla::dom::DOMString&amp;</code></a> out param appended to the argument list. This comes after all IDL arguments, but before the <code>ErrorResult&amp;</code>, if any, for the method. Note that this allows callees to declare their methods as taking an <code>nsAString&amp;</code> or <code>nsString&amp;</code> if desired.</li>
+ <li>Strings in sequences, dictionaries, owning unions, and variadic arguments become <code>nsString</code>.</li>
+</ul>
+
+<p>Nullable strings are represented by the same types as non-nullable ones, but the string will return true for <code>DOMStringIsNull()</code>. Returning null as a string value can be done using <code>SetDOMStringToNull</code> on the out param if it's an <code>nsAString</code> or calling <code>SetNull()</code> on a <code>DOMString</code>.</p>
+
+<p>For example, this WebIDL:</p>
+
+<pre>interface Test {
+ DOMString myAttr;
+ [Throws]
+ DOMString myMethod(sequence arg1, DOMString? arg2, optional DOMString arg3);
+};
+</pre>
+
+<p>will correspond to these C++ function declarations:</p>
+
+<pre class="brush: cpp">void GetMyAttr(nsString&amp; retval);
+void SetMyAttr(const nsAString&amp; value);
+void MyMethod(const Sequence&amp; arg1, const nsAString&amp; arg2,
+ const Optional&amp; arg3, nsString&amp; retval, ErrorResult&amp; rv);
+</pre>
+
+<h4 id="ByteString"><code>ByteString</code></h4>
+
+<p><code>ByteString</code> is reflected in three different ways, depending on use:</p>
+
+<ul>
+ <li><code>ByteString</code> arguments become <code>const nsACString&amp;</code>.</li>
+ <li><code>ByteString</code> return values become an <code>nsCString&amp;</code> out param appended to the argument list. This comes after all IDL arguments, but before the <code>ErrorResult&amp;</code>, if any, for the method.</li>
+ <li><code>ByteString</code> in sequences, dictionaries, owning unions, and variadic arguments becomes <code>nsCString</code>.</li>
+</ul>
+
+<p>Nullable <code>ByteString</code> are represented by the same types as non-nullable ones, but the string will return true for <code>IsVoid()</code>. Returning null as a string value can be done using <code>SetIsVoid()</code> on the out param.</p>
+
+<h4 id="object"><code>object</code></h4>
+
+<p><code>object</code> is represented in three different ways, depending on use:</p>
+
+<ul>
+ <li><code>object</code> arguments become <code>JS::Handle</code>. They will be in the compartment of the passed-in JSContext.</li>
+ <li><code>object</code> return values become a <code>JS::MutableHandle</code> out param appended to the argument list. This comes after all IDL arguments, but before the <code>ErrorResult&amp;</code>, if any, for the method. The return value is allowed to be in any compartment; bindings will wrap it into the context compartment as needed.</li>
+ <li><code>object</code> dictionary members and sequence elements become <code>JSObject*</code>. The dictionary members and sequence elements are guaranteed to be marked by whoever puts the sequence or dictionary on the stack, using <code>SequenceRooter</code> and <code>DictionaryRooter</code>.</li>
+</ul>
+
+<p>Methods using <code>object</code> always get a <code>JSContext*</code> argument.</p>
+
+<p>For example, this WebIDL:</p>
+
+<pre>interface Test {
+ object myAttr;
+ object myMethod(object arg1, object? arg2, sequence arg3, optional object arg4,
+ optional object? arg5);
+};</pre>
+
+<p>will correspond to these C++ function declarations:</p>
+
+<pre class="brush: cpp">void GetMyAttr(JSContext* cx, JS::MutableHandle retval);
+void SetMyAttr(JSContext* cx, JS::Handle value);
+void MyMethod(JSContext* cx, JS::Handle arg1, JS::Handle arg2,
+ const Sequence&amp; arg3,
+ const Optional &gt;&amp; arg4,
+ const Optional &gt;&amp; arg5,
+ JS::MutableHandle retval);
+</pre>
+
+<h4 id="Interface_types">Interface types</h4>
+
+<p>There are four kinds of interface types in the WebIDL bindings. Callback interfaces are used to represent script objects that browser code can call into. External interfaces are used to represent objects that have not been converted to the WebIDL bindings yet. WebIDL interfaces are used to represent WebIDL binding objects. "SpiderMonkey" interfaces are used to represent objects that are implemented natively by the JavaScript engine (e.g., typed arrays).</p>
+
+<h5 id="Callback_interfaces">Callback interfaces</h5>
+
+<p>Callback interfaces are represented in C++ as objects inheriting from <a href="#CallbackInterface" title="#CallbackInterface"><code>mozilla::dom::CallbackInterface</code></a>, whose name, in the <code>mozilla::dom</code> namespace, matches the name of the callback interface in the WebIDL. The exact representation depends on how the type is being used.</p>
+
+<ul>
+ <li>Nullable arguments become <code>Foo*</code>.</li>
+ <li>Non-nullable arguments become <code>Foo&amp;</code>.</li>
+ <li>Return values become <code>already_AddRefed</code> or <code>Foo*</code> as desired. The pointer form is preferred because it results in faster code, but it should only be used if the return value was not addrefed (and so it can only be used if the return value is kept alive by the callee until at least the binding method has returned).</li>
+ <li>WebIDL callback interfaces in sequences, dictionaries, owning unions, and variadic arguments are represented by <code>nsRefPtr</code> if nullable and <a href="#OwningNonNull" title="#OwningNonNull"><code>OwningNonNull</code></a> otherwise.</li>
+</ul>
+
+<p>If the interface is a single-operation interface, the object exposes two methods that both invoke the same underlying JS callable. The first of these methods allows the caller to pass in a <code>this</code> object, while the second defaults to <code>undefined</code> as the <code>this</code> value. In either case, the <code>this</code> value is only used if the callback interface is implemented by a JS callable. If it's implemented by an object with a property whose name matches the operation, the object itself is always used as <code>this</code>.</p>
+
+<p>If the interface is not a single-operation interface, it just exposes a single method for every IDL method/getter/setter.</p>
+
+<p>The signatures of the methods correspond to the signatures for throwing IDL methods/getters/setters with an additional trailing "<code>mozilla::dom::CallbackObject::ExceptionHandling</code> <code>aExceptionHandling</code>" argument, defaulting to <code>eReportExceptions</code>. If <code>aReportExceptions</code> is set to <code>eReportExceptions</code>, the methods will report JS exceptions before returning. If <code>aReportExceptions</code> is set to <code>eRethrowExceptions</code>, JS exceptions will be stashed in the <code>ErrorResult</code> and will be reported when the stack unwinds to wherever the <code>ErrorResult</code> was set up.</p>
+
+<p>For example, this WebIDL:</p>
+
+<pre>callback interface MyCallback {
+ attribute long someNumber;
+ short someMethod(DOMString someString);
+};
+callback interface MyOtherCallback {
+ // single-operation interface
+ short doSomething(Node someNode);
+};
+interface MyInterface {
+ attribute MyCallback foo;
+ attribute MyCallback? bar;
+};</pre>
+
+<p>will lead to these C++ class declarations in the <code>mozilla::dom</code> namespace:</p>
+
+<pre class="brush: cpp">class MyCallback : public CallbackInterface
+{
+ int32_t GetSomeNumber(ErrorResult&amp; rv, ExceptionHandling aExceptionHandling = eReportExceptions);
+ void SetSomeNumber(int32_t arg, ErrorResult&amp; rv,
+ ExceptionHandling aExceptionHandling = eReportExceptions);
+ int16_t SomeMethod(const nsAString&amp; someString, ErrorResult&amp; rv,
+ ExceptionHandling aExceptionHandling = eReportExceptions);
+};
+
+class MyOtherCallback : public CallbackInterface
+{
+public:
+ int16_t
+ DoSomething(nsINode&amp; someNode, ErrorResult&amp; rv,
+ ExceptionHandling aExceptionHandling = eReportExceptions);
+
+ template
+ int16_t
+ DoSomething(const T&amp; thisObj, nsINode&amp; someNode, ErrorResult&amp; rv,
+ ExceptionHandling aExceptionHandling = eReportExceptions);
+};</pre>
+
+<p>and these C++ function declarations on the implementation of <code>MyInterface</code>:</p>
+
+<pre>already_AddRefed GetFoo();
+void SetFoo(MyCallback&amp;);
+already_AddRefed GetBar();
+void SetBar(MyCallback*);
+</pre>
+
+<p>A consumer of MyCallback would be able to use it like this:</p>
+
+<pre class="brush: cpp">void
+SomeClass::DoSomethingWithCallback(MyCallback&amp; aCallback)
+{
+ ErrorResult rv;
+ int32_t number = aCallback.GetSomeNumber(rv);
+ if (rv.Failed()) {
+ // The error has already been reported to the JS console; you can handle
+ // things however you want here.
+ return;
+ }
+
+ // For some reason we want to catch and rethrow exceptions from SetSomeNumber, say.
+ aCallback.SetSomeNumber(2*number, rv, eRethrowExceptions);
+ if (rv.Failed()) {
+ // The exception is now stored on rv. This code MUST report
+ // it usefully; otherwise it will assert.
+ }
+}
+</pre>
+
+<h5 id="External_interfaces">External interfaces</h5>
+
+<p>External interfaces are represented in C++ as objects that XPConnect knows how to unwrap to. This can mean XPCOM interfaces (whether declared in XPIDL or not) or it can mean some type that there's a castable native unwrapping function for. The C++ type to be used should be the <code>nativeType</code> listed for the external interface in the <a href="#Bindings.conf" title="#Bindings.conf"><code>Bindings.conf</code></a> file. The exact representation depends on how the type is being used.</p>
+
+<ul>
+ <li>Arguments become <code>nsIFoo*</code>.</li>
+ <li>Return values can be <code>already_AddRefed</code> or <code>nsIFoo*</code> as desired. The pointer form is preferred because it results in faster code, but it should only be used if the return value was not addrefed (and so it can only be used if the return value is kept alive by the callee until at least the binding method has returned).</li>
+ <li>External interfaces in sequences, dictionaries, owning unions, and variadic arguments are represented by <code>nsRefPtr.</code></li>
+</ul>
+
+<h5 id="WebIDL_interfaces">WebIDL interfaces</h5>
+
+<p>WebIDL interfaces are represented in C++ as C++ classes. The class involved must either be refcounted or must be explicitly annotated in <code>Bindings.conf</code> as being directly owned by the JS object. If the class inherits from <code>nsISupports</code>, then the canonical <code>nsISupports</code> must be on the primary inheritance chain of the object. If the interface has a parent interface, the C++ class corresponding to the parent must be on the primary inheritance chain of the object. This guarantees that a <code>void*</code> can be stored in the JSObject which can then be <code>reinterpret_cast</code> to any of the classes that correspond to interfaces the object implements. The C++ type to be used should be the <code>nativeType</code> listed for the interface in the <a href="#Bindings.conf" title="#Bindings.conf"><code>Bindings.conf</code></a> file, or <code>mozilla::dom::InterfaceName</code> if none is listed. The exact representation depends on how the type is being used.</p>
+
+<ul>
+ <li>Nullable arguments become <code>Foo*</code>.</li>
+ <li>Non-nullable arguments become <code>Foo&amp;</code>.</li>
+ <li>Return values become <code>already_AddRefed</code> or <code>Foo*</code> as desired. The pointer form is preferred because it results in faster code, but it should only be used if the return value was not addrefed (and so it can only be used if the return value is kept alive by the callee until at least the binding method has returned).</li>
+ <li>WebIDL interfaces in sequences, dictionaries, owning unions, and variadic arguments are represented by <code>nsRefPtr</code> if nullable and <a href="#OwningNonNull" title="#OwningNonNull"><code>OwningNonNull</code></a> otherwise.</li>
+</ul>
+
+<p>For example, this WebIDL:</p>
+
+<pre>interface MyInterface {
+ attribute MyInterface myAttr;
+ void passNullable(MyInterface? arg);
+ MyInterface? doSomething(sequence arg);
+ MyInterface doTheOther(sequence arg);
+ readonly attribute MyInterface? nullableAttr;
+ readonly attribute MyInterface someOtherAttr;
+ readonly attribute MyInterface someYetOtherAttr;
+};
+</pre>
+
+<p>Would correspond to these C++ function declarations:</p>
+
+<pre class="brush: cpp">already_AddRefed MyAttr();
+void SetMyAttr(MyClass&amp; value);
+void PassNullable(MyClass* arg);
+already_AddRefed doSomething(const Sequence &gt;&amp; arg);
+already_AddRefed doTheOther(const Sequence &gt;&amp; arg);
+already_Addrefed GetNullableAttr();
+MyClass* SomeOtherAttr();
+MyClass* SomeYetOtherAttr(); // Don't have to return already_AddRefed!
+</pre>
+
+<h5 id="SpiderMonkey_interfaces">"SpiderMonkey" interfaces</h5>
+
+<p>Typed array, array buffer, and array buffer view arguments are represented by the objects in <a href="#TypedArray" title="#TypedArray"><code>TypedArray.h</code></a>. For example, this WebIDL:</p>
+
+<pre>interface Test {
+ void passTypedArrayBuffer(ArrayBuffer arg);
+ void passTypedArray(ArrayBufferView arg);
+ void passInt16Array(Int16Array? arg);
+}
+</pre>
+
+<p>will correspond to these C++ function declarations:</p>
+
+<pre class="brush: cpp">void PassTypedArrayBuffer(const ArrayBuffer&amp; arg);
+void PassTypedArray(const ArrayBufferView&amp; arg);
+void PassInt16Array(const Nullable&amp; arg);
+</pre>
+
+<p>Typed array return values become a <code>JS::MutableHandle</code> out param appended to the argument list. This comes after all IDL arguments, but before the <code>ErrorResult&amp;</code>, if any, for the method. The return value is allowed to be in any compartment; bindings will wrap it into the context compartment as needed.</p>
+
+<p>Typed arrays store a <code>JSObject*</code> and hence need to be rooted properly. On-stack typed arrays can be declared as <code>RootedTypedArray</code> (e.g. <code>RootedTypedArray</code>). Typed arrays on the heap need to be traced.</p>
+
+<h4 id="Dictionary_types">Dictionary types</h4>
+
+<p>A dictionary argument is represented by a const reference to a struct whose name is the dictionary name in the <code>mozilla::dom</code> namespace. The struct has one member for each of the dictionary's members with the same name except the first letter uppercased and prefixed with "m". The members that have default values have types as described under the corresponding WebIDL type in this document. The members that don't have default values have those types wrapped in <a href="#Optional" title="#Optional"><code>Optional&lt;&gt;</code></a>.</p>
+
+<p>Dictionary return values are represented by an out parameter whose type is a non-const reference to the struct described above, with all the members that have default values preinitialized to those default values.</p>
+
+<p>Note that optional dictionary arguments are always considered to have a default value of <code>null</code>, so dictionary arguments are never wrapped in <code>Optional&lt;&gt;</code>.</p>
+
+<p>If necessary, dictionaries can be directly initialized from a <code>JS::Value</code> in C++ code by invoking their <code>Init()</code> method. Consumers doing this should declare their dictionary as <code>RootedDictionary</code>. When this is done, passing in a null scope object and even a null <code>JSContext*</code> is allowed if the passed-in <code>JS::Value</code> is <code>JS::NullValue()</code>. Likewise, a dictionary struct can be converted to a <code>JS::Value</code> in C++ by calling <code>ToJSValue</code> with the dictionary as the second argument. If <code>Init()</code> or <code>ToJSValue()</code> returns false, they will generally set a pending exception on the JSContext; reporting those is the responsibility of the caller.</p>
+
+<p>For example, this WebIDL:</p>
+
+<pre>dictionary Dict {
+ long foo = 5;
+ DOMString bar;
+};
+
+interface Test {
+ void initSomething(optional Dict arg);
+};
+</pre>
+
+<p>will correspond to this C++ function declaration:</p>
+
+<pre class="brush: cpp">void InitSomething(const Dict&amp; arg);
+</pre>
+
+<p>and the <code>Dict</code> struct will look like this:</p>
+
+<pre class="brush: cpp">struct Dict {
+ bool Init(JSContext* aCx, JS::Handle aVal, const char* aSourceDescription = "value");
+
+ Optional mBar;
+ int32_t mFoo;
+}
+</pre>
+
+<p>Note that the dictionary members are sorted in the struct in alphabetical order.</p>
+
+<h4 id="Enumeration_types">Enumeration types</h4>
+
+<p>WebIDL enumeration types are represented as C++ enums. The values of the C++ enum are named by taking the strings in the WebIDL enumeration, replacing all non-alphanumerics with underscores, and uppercasing the first letter, with a special case for the empty string, which becomes the value <code>_empty</code>.</p>
+
+<p>For a WebIDL enum named <code>MyEnum</code>, the C++ enum is named <code>MyEnum</code> and placed in the <code>mozilla::dom</code> namespace, while the values are placed in the <code>mozilla::dom::MyEnum</code> namespace. There is also a <code>mozilla::dom::MyEnumValues::strings</code> which is an array of <code>mozilla::dom::EnumEntry</code> structs that gives access to the string representations of the values.</p>
+
+<p>For example, this WebIDL:</p>
+
+<pre>enum MyEnum {
+ "something",
+ "something-else",
+ "",
+ "another"
+};
+</pre>
+
+<p>would lead to this C++ enum declaration:</p>
+
+<pre class="brush: cpp">MOZ_BEGIN_ENUM_CLASS(MyEnum, uint32_t)
+ Something,
+ Something_else,
+ _empty,
+ Another
+MOZ_END_ENUM_CLASS(MyEnum)
+
+namespace MyEnumValues {
+extern const EnumEntry strings[10];
+} // namespace MyEnumValues
+</pre>
+
+<h4 id="Callback_function_types">Callback function types</h4>
+
+<p>Callback functions are represented as an object, inheriting from <a href="#CallbackFunction" title="#CallbackFunction"><code>mozilla::dom::CallbackFunction</code></a>, whose name, in the <code>mozilla::dom</code> namespace, matches the name of the callback function in the WebIDL. If the type is nullable, a pointer is passed in; otherwise a reference is passed in.</p>
+
+<p>The object exposes two <code>Call</code> methods, which both invoke the underlying JS callable. The first <code>Call</code> method has the same signature as a throwing method declared just like the callback function, with an additional trailing "<code>mozilla::dom::CallbackObject::ExceptionHandling</code> <code>aExceptionHandling</code>" argument, defaulting to <code>eReportExceptions</code>, and calling it will invoke the callable with <code>undefined</code> as the <code>this</code> value. The second <code>Call</code> method allows passing in an explicit <code>this</code> value as the first argument. This second call method is a template on the type of the first argument, so the <code>this</code> value can be passed in in whatever form is most convenient, as long as it's either a type that can be wrapped by XPConnect or a WebIDL interface type.</p>
+
+<p>If <code>aReportExceptions</code> is set to <code>eReportExceptions</code>, the <code>Call</code> methods will report JS exceptions before returning. If <code>aReportExceptions</code> is set to <code>eRethrowExceptions</code>, JS exceptions will be stashed in the <code>ErrorResult</code> and will be reported when the stack unwinds to wherever the <code>ErrorResult</code> was set up.</p>
+
+<p>For example, this WebIDL:</p>
+
+<pre>callback MyCallback = long (MyInterface arg1, boolean arg2);
+interface MyInterface {
+ attribute MyCallback foo;
+ attribute MyCallback? bar;
+};</pre>
+
+<p>will lead to this C++ class declaration, in the <code>mozilla::dom</code> namespace:</p>
+
+<pre class="brush: cpp">class MyCallback : public CallbackFunction
+{
+public:
+ int32_t
+ Call(MyInterface&amp; arg1, bool arg2, ErrorResult&amp; rv,
+ ExceptionHandling aExceptionHandling = eReportExceptions);
+
+ template
+ int32_t
+ Call(const T&amp; thisObj, MyInterface&amp; arg1, bool arg2, ErrorResult&amp; rv,
+ ExceptionHandling aExceptionHandling = eReportExceptions);
+};</pre>
+
+<p>and these C++ function declarations in the <code>MyInterface</code> class:</p>
+
+<pre>already_AddRefed GetFoo();
+void SetFoo(MyCallback&amp;);
+already_AddRefed GetBar();
+void SetBar(MyCallback*);
+</pre>
+
+<p>A consumer of MyCallback would be able to use it like this:</p>
+
+<pre class="brush: cpp">void
+SomeClass::DoSomethingWithCallback(MyCallback&amp; aCallback, MyInterface&amp; aInterfaceInstance)
+{
+ ErrorResult rv;
+ int32_t number = aCallback.Call(aInterfaceInstance, false, rv);
+ if (rv.Failed()) {
+ // The error has already been reported to the JS console; you can handle
+ // things however you want here.
+ return;
+ }
+
+ // Now for some reason we want to catch and rethrow exceptions from the callback,
+ // and use "this" as the this value for the call to JS.
+ number = aCallback.Call(*this, true, rv, eRethrowExceptions);
+ if (rv.Failed()) {
+ // The exception is now stored on rv. This code MUST report
+ // it usefully; otherwise it will assert.
+ }
+}
+</pre>
+
+<h5 id="sect1"></h5>
+
+<h4 id="Sequences">Sequences</h4>
+
+<p>Sequence arguments are represented by <a href="#Sequence" title="#Sequence"><code>const Sequence&amp;</code></a>, where <code>T</code> depends on the type of elements in the WebIDL sequence.</p>
+
+<p>Sequence return values are represented by an <code>nsTArray</code> out param appended to the argument list, where <code>T</code> is the return type for the elements of the WebIDL sequence. This comes after all IDL arguments, but before the <code>ErrorResult&amp;</code>, if any, for the method.</p>
+
+<h4 id="Arrays">Arrays</h4>
+
+<p>IDL array objects are not supported yet. The spec on these is likely to change drastically anyway.</p>
+
+<h4 id="Union_types">Union types</h4>
+
+<p>Union types are reflected as a struct in the <code>mozilla::dom</code> namespace. There are two kinds of union structs: one kind does not keep its members alive (is "non-owning"), and the other does (is "owning"). Const references to non-owning unions are used for plain arguments. Owning unions are used in dictionaries, sequences, and for variadic arguments. Union return values become a non-const owning union out param. The name of the struct is the concatenation of the names of the types in the union, with "Or" inserted between them, and for an owning struct "Owning" prepended. So for example, this IDL:</p>
+
+<pre>void passUnion((object or long) arg);
+(object or long) receiveUnion();
+void passSequenceOfUnions(sequence&lt;(object or long)&gt; arg);
+void passOtherUnion((HTMLDivElement or ArrayBuffer or EventInit) arg);
+</pre>
+
+<p>would correspond to these C++ function declarations:</p>
+
+<pre class="brush: cpp">void PassUnion(const ObjectOrLong&amp; aArg);
+void ReceiveUnion(OwningObjectObjectOrLong&amp; aArg);
+void PassSequenceOfUnions(const Sequence&amp; aArg);
+void PassOtherUnion(const HTMLDivElementOrArrayBufferOrEventInit&amp; aArg);
+</pre>
+
+<p>Union structs expose accessors to test whether they're of a given type and to get hold of the data of that type. They also expose setters that set the union as being of a particular type and return a reference to the union's internal storage where that type could be stored. The one exception is the <code>object</code> type, which uses a somewhat different form of setter where the <code>JSObject*</code> is passed in directly. For example, <code>ObjectOrLong</code> would have the following methods:</p>
+
+<pre class="brush: cpp">bool IsObject() const;
+JSObject* GetAsObject() const;
+void SetToObject(JSContext*, JSObject*);
+bool IsLong() const;
+int32_t GetAsLong() const;
+int32_t&amp; SetAsLong()
+</pre>
+
+<p>Owning unions used on the stack should be declared as a <code>RootedUnion</code>, for example, <code>RootedUnion</code>.</p>
+
+<h4 id="Date"><code>Date</code></h4>
+
+<p>WebIDL <code>Date</code> types are represented by a <code>mozilla::dom::Date</code> struct.</p>
+
+<h3 id="Stringifiers">Stringifiers</h3>
+
+<p>Named stringifiers operations in WebIDL will just invoke the corresponding C++ method.</p>
+
+<p>Anonymous stringifiers in WebIDL will invoke the C++ method called <code>Stringify</code>. So, for example, given this IDL:</p>
+
+<pre>interface FirstInterface {
+ stringifier;
+};
+
+interface SecondInterface {
+ stringifier DOMString getStringRepresentation();
+};
+</pre>
+
+<p>the corresponding C++ would be:</p>
+
+<pre>class FirstInterface {
+public:
+ void Stringify(nsAString&amp; aResult);
+};
+
+class SecondInterface {
+public:
+ void GetStringRepresentation(nsAString&amp; aResult);
+};
+</pre>
+
+<h3 id="Legacy_Callers">Legacy Callers</h3>
+
+<p>Only anonymous legacy callers are supported, and will invoke the C++ method called <code>LegacyCall</code>. This will be passed the JS "this" value as the first argument, then the arguments to the actual operation. A <code>JSContext</code> will be passed if any of the operation arguments need it. So for example, given this IDL:</p>
+
+<pre>interface InterfaceWithCall {
+ legacycaller long (float arg);
+};
+</pre>
+
+<p>the corresponding C++ would be:</p>
+
+<pre class="brush: cpp">class InterfaceWithCall {
+public:
+ int32_t LegacyCall(JS::Handle aThisVal, float aArgument);
+};
+</pre>
+
+<h3 id="Named_getters">Named getters</h3>
+
+<p>If the interface has a named getter, the binding will expect several methods on the C++ implementation:</p>
+
+<ul>
+ <li>A <code>NamedGetter</code> method. This takes a property name and returns whatever type the named getter is declared to return. It also has a boolean out param for whether a property with that name should exist at all.</li>
+ <li>A <code>NameIsEnumerable</code> method. This takes a property name and returns a boolean that indicates whether the property is enumerable.</li>
+ <li>A <code>GetSupportedNames</code> method. This takes an unsigned integer which corresponds to the flags passed to the <code>iterate</code> proxy trap and returns a list of property names. For implementations of this method, the important flags is <code>JSITER_HIDDEN</code>. If that flag is set, the call needs to return all supported property names. If it's not set, the call needs to return only the enumerable ones.</li>
+</ul>
+
+<p>The <code>NameIsEnumerable</code> and <code>GetSupportedNames</code> methods need to agree on which names are and are not enumerable. The <code>NamedGetter</code> and <code>GetSupportedNames</code> methods need to agree on which names are supported.</p>
+
+<p>So for example, given this IDL:</p>
+
+<pre>interface InterfaceWithNamedGetter {
+ getter long(DOMString arg);
+};
+</pre>
+
+<p>the corresponding C++ would be:</p>
+
+<pre class="brush: cpp">class InterfaceWithNamedGetter
+{
+public:
+ int32_t NamedGetter(const nsAString&amp; aName, bool&amp; aFound);
+ bool NameIsEnumerable(const nsAString&amp; aName);
+ void GetSupportedNames(unsigned aFlags, nsTArray&amp; aNames);
+};
+</pre>
+
+<h2 id="Throwing_exceptions_from_WebIDL_methods_getters_and_setters">Throwing exceptions from WebIDL methods, getters, and setters</h2>
+
+<p>WebIDL methods, getters, and setters that are <a href="#Throws">explicitly marked as allowed to throw</a> have an <code>ErrorResult&amp;</code> argument as their last argument. To throw an exception, simply call <code>Throw()</code> on the <code>ErrorResult&amp;</code> and return from your C++ back into the binding code.</p>
+
+<p>In cases when the specification calls for throwing a <code>TypeError</code>, you should use <code>ErrorResult::ThrowTypeError()</code> instead of calling <code>Throw()</code>.</p>
+
+<h2 class="note" id="Custom_extended_attributes">Custom extended attributes</h2>
+
+<p>Our WebIDL parser and code generator recognize several extended attributes that are not present in the WebIDL spec.</p>
+
+<h3 id="AliaspropName"><code>[Alias=propName]</code></h3>
+
+<p>This extended attribute can be specified on a method and indicates that another property with the specified name will also appear on the interface prototype object and will have the same Function object value as the property for the method. For example:</p>
+
+<pre>interface MyInterface {
+ [Alias=performSomething] void doSomething();
+};
+</pre>
+
+<p><code>MyInterface.prototype.performSomething</code> will have the same Function object value as <code>MyInterface.prototype.doSomething</code>.</p>
+
+<p>Multiple <code>[Alias]</code> extended attribute can be used on the one method. <code>[Alias]</code> cannot be used on a static method, nor on methods on a global interface (such as <code>Window</code>).</p>
+
+<p>Aside from regular property names, the name of an alias can be <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Well-known_symbols">Symbol.iterator</a>. This is specified by writing <code>[Alias="@@iterator"]</code>.</p>
+
+<h3 id="ChromeOnly" name="ChromeOnly"><code>[ChromeOnly]</code></h3>
+
+<p>この拡張された属性はメソッド、属性、インターフェイスの一部・全体に定義することができます。</p>
+
+<p>[ChromeOnly]がついたインターフェイスメンバーは chrome ウィンドウだけで利用することができます。(webpage には見えません) web コンテンツから見るとインターフェイス自体が存在しないことになります。Xrays を使って chrome スクリプトをコンテンツ上で動かすことでメンバーが見られるようになります。</p>
+
+<p>インターフェイス全体に適用した場合、 <a href="#Func" title="#Func"><code>[Func]</code></a> を使った時のように、自動でシステムのスクリプトから呼び出されたか(chrome または、chrome ページから開始された Worker かどうか)チェックします。グローバルオブジェクトとして使えるか判断するために C++ の実装を呼び出すことはありません。これは Xrays 経由だと[ChromeOnly]インターフェイスオブジェクトにアクセスできることを意味しています。</p>
+
+<p>この拡張された属性は、 <code>[<a href="#AvailableIn">AvailableIn</a>]</code>, <code><code>[<a href="#CheckPermissions">CheckPermissions</a>]</code></code>,<code> [<a href="#Func">Func</a>]</code>,  <code>[<a href="#Pref">Pref</a>]と併用できます。もし他の属性を定義した場合、すべての条件をみたす時だけ使えるようになります。</code></p>
+
+<h3 id="Pref" name="Pref"><code>[Pref=prefname]</code></h3>
+
+<p>This extended attribute can be specified on any method, attribute, or constant on an interface or on an interface as a whole. It takes a value, which must be the name of a boolean preference.</p>
+
+<p>If specified on an interface member, the interface member involved is only exposed if the preference is set to <code>true</code>. An example of how this can be used:</p>
+
+<pre>interface MyInterface {
+ attribute long alwaysHere;
+ [Pref="my.pref.name"] attribute long onlyHereIfEnabled;
+};
+</pre>
+
+<p>If specifed on an interface as a whole, this functions like <a href="#Func" title="#Func"><code>[Func]</code></a> except that the binding will check the value of the preference directly without calling into the C++ implementation of the interface at all. This is useful when the enable check is simple and it's desirable to keep the prefname with the WebIDL declaration. The implementation can call <code>MyInterfaceBinding::PrefEnabled()</code> to check whether it is enabled or not. An example of how this can be used:</p>
+
+<pre>[Pref="my.pref.name"]
+interface MyConditionalInterface {
+};
+</pre>
+
+<p>This extended attibute can be specified together with <code>[<a href="#AvailableIn">AvailableIn</a>]</code>, <code><code><code>[<a href="#CheckPermissions">CheckPermissions</a>]</code></code></code>, <code>[<a href="#ChromeOnly">ChromeOnly</a>]</code>, and<code>[<a href="#Func">Func</a>]</code>. If more than one of these is specified, all conditions will need to test true for the interface or interface member to be exposed.</p>
+
+<h3 id="Func" name="Func"><code>[Func="funcname"]</code></h3>
+
+<p>This extended attribute can be specified on any method, attribute, or constant on an interface or on an interface as a whole. It takes a value, which must be the name of a static function.</p>
+
+<p>If specified on an interface member, the interface member involved is only exposed if the specified function returns <code>true</code>. An example of how this can be used:</p>
+
+<pre>interface MyInterface {
+ attribute long alwaysHere;
+ [Func="MyClass::StuffEnabled"] attribute long onlyHereIfEnabled;
+};
+</pre>
+
+<p>The function is invoked with two arguments: the <code>JSContext</code> that the operation is happening on and the <code>JSObject</code> for the global of the object that the property will be defined on if the function returns true. In particular, in the Xray case the <code>JSContext</code> is in the caller compartment (typically chrome) but the <code>JSObject</code> is in the target compartment (typically content). This allows the method implementation to select which compartment it cares about in its checks.</p>
+
+<p>The above IDL would also require the following C++:</p>
+
+<pre class="brush: cpp">class MyClass {
+ static bool StuffEnabled(JSContext* cx, JSObject* obj);
+};
+</pre>
+
+<p>If specified on an interface as a whole, then lookups for the interface object for this interface on a DOM Window will only find it if the specified function returns true. For objects that can only be created via a constructor, this allows disabling the functionality altogether and making it look like the feature is not implemented at all.</p>
+
+<p>An example of how <code>[Func]</code> can be used:</p>
+
+<pre>[Func="MyClass::MyConditionalInterfaceEnabled"]
+interface MyConditionalInterface {
+};
+</pre>
+
+<p>In this case, the C++ function is passed a <code>JS::Handle</code>. So the C++ in this case would look like this:</p>
+
+<pre class="brush: cpp">class MyClass {
+ static bool MyConditionalInterfaceEnabled(JSContext* cx, JS::Handle obj);
+};
+</pre>
+
+<p>Just like in the interface member case, the <code>JSContext</code> is in the caller compartment but the <code>JSObject</code> is the actual object the property would be defined on. In the Xray case that means obj is in the target compartment (typically content) and <code>cx</code> is typically chrome.</p>
+
+<p>This extended attibute can be specified together with <code>[<a href="#AvailableIn">AvailableIn</a>]</code>, <code>[<a href="#CheckPermissions">CheckPermissions</a>]</code>, <code>[<a href="#ChromeOnly">ChromeOnly</a>]</code>, and <code>[<a href="#Pref">Pref</a>]</code>. If more than one of these is specified, all conditions will need to test true for the interface or interface member to be exposed.</p>
+
+<h3 id="AvailableIn" name="AvailableIn"><code>[AvailableIn=Where]</code></h3>
+
+<p>This extended attribute can be specified on any method, attribute, or constant on an interface or on an interface as a whole. It takes a value, which must be either <code>PrivilegedApps</code> or <code>CertifiedApps</code>. The former will make the interface or interface member only visible in privileged or certified apps on Firefox OS. The latter will make the interface or interface member only visible in certified apps.</p>
+
+<p>This extended attibute can be specified together with <code>[<a href="#ChromeOnly">ChromeOnly</a>]</code>, <code>[<a href="#CheckPermissions">CheckPermissions</a>]</code>, <code>[<a href="#Func">Func</a>]</code>, and <code>[<a href="#Pref">Pref</a>]</code>. If more than one of these is specified, all conditions will need to test true for the interface or interface member to be exposed.</p>
+
+<h3 id="CheckPermissions" name="CheckPermissions"><code>[CheckPermissions="list of permissions"]</code></h3>
+
+<p>This extended attribute can be specified on any method, attribute, or constant on an interface or on an interface as a whole. It takes a whitespace-separated list of permissions to be checked before making the interface or interface member visible to a page or app. When multiple permission names are specified, <strong>at least one</strong> of them will need to be set to nsIPermissionManager::ALLOW_ACTION for the interface or interface member to be exposed.</p>
+
+<p>This extended attribute can be specified together with <code>[<a href="#AvailableIn">AvailableIn</a>]</code>, <code>[<a href="#ChromeOnly">ChromeOnly</a>]</code>, <code>[<a href="#Func">Func</a>]</code> and <code>[<a href="#Pref">Pref</a>]. </code>If more than one of these is specified, all conditions will need to test true for the interface or interface member to be exposed.</p>
+
+<h3 id="Throws" name="Throws"><code>[Throws]</code>, <code>[GetterThrows]</code>, <code>[SetterThrows]</code></h3>
+
+<p>Used to flag methods or attributes as allowing the C++ callee to throw. This causes the binding generator, and in many cases the JIT, to generate extra code to handle possible exceptions. Possibly-throwing methods and attributes get an <code>ErrorResult&amp;</code> argument.</p>
+
+<p><code>[Throws]</code> applies to both methods and attributes; for attributes it means both the getter and the setter can throw. <code>[GetterThrows]</code> applies only to attributes. <code>[SetterThrows]</code> applies only to non-readonly attributes.</p>
+
+<p>For bindings that involve workers, the above can all be specified with <code>MainThread</code> or <code>Workers</code> as a value. When doing this, if <code>[Throws]</code> is specified on an attribute, no matter what its value, then <code>[GetterThrows]</code> and <code>[SetterThrows]</code> will be ignored. So to have an attribute which can throw both when getting and setting on main thread but can only throw from the setter in workers, use <code>[SetterThrows, GetterThrows=MainThread]</code>.</p>
+
+<p>For interfaces flagged with <code>[JSImplementation]</code>, all methods and properties are assumed to be able to throw and do not need to be flagged as throwing.</p>
+
+<h3 id="DependsOn" name="DependsOn"><code>[DependsOn]</code></h3>
+
+<p>Used for a method or attribute to indicate what the return value depends on. Possible values are:</p>
+
+<dl>
+ <dt><code>Everything</code></dt>
+ <dd>This value can't actually be specified explicitly; this is the default value you get when <code>[DependsOn]</code> is not specified. This means we don't know anything about the return value's dependencies and hence can't rearrange other code that might change values around the method or attribute.</dd>
+ <dt id="DependsOn=DOMState"><code>DOMState</code></dt>
+ <dd>The return value depends on the state of the "DOM", by which we mean all objects specified via Web IDL. The return value is guaranteed to not depend on the state of the JS heap or other JS engine data structures, and is guaranteed to not change unless some function with <a href="#Affects=Everything"><code>[Affects=Everything]</code></a> is executed.</dd>
+ <dt><code>DeviceState</code></dt>
+ <dd>The return value depends on the state of the device we're running on (e.g., the system clock). The return value is guaranteed to not be affected by any code running inside Gecko itself, but we might get a new value every time the method or getter is called even if no Gecko code ran between the calls.</dd>
+ <dt id="DependsOn=Nothing"><code>Nothing</code></dt>
+ <dd>The return value is a constant that never changes. This value cannot be used on non-readonly attributes, since having a non-readonly attribute whose value never changes doesn't make sense.</dd>
+</dl>
+
+<p>Values other than <code>Everything</code>, when used in combination with <a href="#Affects=Nothing"><code>[Affects=Nothing]</code></a>, can used by the JIT to perform loop-hoisting and common subexpression elimination on the return values of IDL attributes and methods.</p>
+
+<h3 id="Affects" name="Affects"><code>[Affects]</code></h3>
+
+<p>Used for a method or attribute getter to indicate what sorts of state can be affected when the function is called. Attribute setters are, for now, assumed to affect everything. Possible values are:</p>
+
+<dl>
+ <dt id="Affects=Everything"><code>Everything</code></dt>
+ <dd>This value can't actually be specified explicitly; this is the default value you get when <code>[Affects]</code> is not specified. This means that calling the method or getter might change any mutable state in the DOM or JS heap.</dd>
+ <dt id="Affects=Nothing"><code>Nothing</code></dt>
+ <dd>Calling the method or getter will have no side-effects on either the DOM or the JS heap.</dd>
+</dl>
+
+<p>Methods and attribute getters with <code>[Affects=Nothing]</code> are allowed to throw exceptions, as long as they do so deterministically. In the case of methods, whether an exception is thrown is allowed to depend on the arguments, as long as calling the method with the same arguments will always either throw or not throw.</p>
+
+<p>The <code>Nothing</code> value, when used with <code>[DependsOn]</code> values other than <code>Everything</code>, can used by the JIT to perform loop-hoisting and common subexpression elimination on the return values of IDL attributes and methods, as well as code motion past DOM methods that might depend on system state but have no side effects.</p>
+
+<h3 id="Pure" name="Pure"><code>[Pure]</code></h3>
+
+<p>This is an alias for <code>[<a href="#Affects=Nothing">Affects=Nothing</a>, <a href="#DependsOn=DOMState">DependsOn=DOMState</a>]</code>. Attributes/methods flagged in this way promise that they will keep returning the same value as long as nothing that has <code>[Affects=Everything]</code> executes.</p>
+
+<h3 id="Constant" name="Constant"><code>[Constant]</code></h3>
+
+<p>This is an alias for <code>[<a href="#Affects=Nothing">Affects=Nothing</a>, <a href="#DependsOn=Nothing">DependsOn=Nothing</a>]</code>. Used to flag readonly attributes or methods that could have been annotated with <code>[Pure]</code> and also always return the same value. This should only be used when it's absolutely guaranteed that the return value of the attribute getter will always be the same from the JS engine's point of view.</p>
+
+<h3 id="NeedResolve" name="NeedResolve"><code>[NeedResolve]</code></h3>
+
+<p>Used to flag interfaces which have a custom resolve hook. This annotation will cause the <code>DoResolve</code> method to be called on the underlying C++ class when a property lookup happens on the object. The signature of this method is: <code>bool DoResolve(JSContext*, JS::Handle, JS::Handle, JS::MutableHandle)</code>. Here the passed-in object is the object the property lookup is happening on (which may be an Xray for the actual DOM object) and the jsid is the property name. The value that the property should have is returned in the <code>MutableHandle</code>, with <code>UndefinedValue()</code> indicating that the property does not exist.</p>
+
+<p>If this extended attribute is used, then the underlying C++ class must also implement a method called <code>GetOwnPropertyNames</code> with the signature <code>void GetOwnPropertyNames(JSContext* aCx, nsTArray&amp; aNames, ErrorResult&amp; aRv)</code>. This method will be called by the JS engine's enumerate hook and must provide a superset of all the property names that <code>DoResolve</code> might resolve. Providing names that <code>DoResolve</code> won't actually resolve is OK.</p>
+
+<h3 id="HeaderFile" name="HeaderFile"><code>[HeaderFile="path/to/headerfile.h"]</code></h3>
+
+<p>Indicates where the implementation can be found. Similar to the headerFile annotation in Bindings.conf.</p>
+
+<h3 id="JSImplementation" name="JSImplementation"><code>[JSImplementation="@mozilla.org/some-contractid;1"]</code></h3>
+
+<p>Used on an interface to provide the contractid of the <a href="#Implementing_WebIDL_using_Javascript" title="#Implementing_WebIDL_using_Javascript">JavaScript component implementing the interface</a>.</p>
+
+<h3 id="NavigatorProperty" name="NavigatorProperty"><code>[NavigatorProperty="propName"]</code></h3>
+
+<p>Setting this extended attribute to <code>propName</code> on an interface causes <code>window.navigator.propName</code> to be an instance of the interface.</p>
+
+<h3 id="StoreInSlot" name="StoreInSlot"><code>[StoreInSlot]</code></h3>
+
+<p>Used to flag attributes that can be gotten very quickly from the JS object by the JIT. Such attributes will have their getter called immediately when the JS wrapper for the DOM object is created, and the returned value will be stored directly on the JS object. Later gets of the attribute will not call the C++ getter and instead use the cached value. If the value returned by the attribute needs to change, the C++ code should call the <code>ClearCachedFooValue</code> method in the namespace of the relevant binding, where <code>foo</code> is the name of the attribute. This will immediately call the C++ getter and cache the value it returns, so it needs a <code>JSContext</code> to work on. This extended attribute can only be used in on attributes whose getters are <a href="#Pure"><code>[Pure]</code></a> or <a href="#Constant"><code>[Constant]</code></a> and which are not <a href="#Throws"><code>[Throws]</code></a> or <a href="#Throws"><code>[GetterThrows]</code></a>.</p>
+
+<p>So for example, given this IDL:</p>
+
+<pre>interface MyInterface {
+ [Pure, StoreInSlot] attribute long myAttribute;
+};
+</pre>
+
+<p>the C++ implementation of MyInterface would clear the cached value by calling <code>mozilla::dom::MyInterfaceBinding::ClearCachedMyAttributeValue(cx, this)</code>. This function will return false on error and the caller is responsible for handling any JSAPI exception that is set by the failure.</p>
+
+<p>If the attribute is not readonly, setting it will automatically clear the cached value and reget it again before the setter returns.</p>
+
+<h3 id="Cached" name="Cached"><code>[Cached]</code></h3>
+
+<p>Used to flag attributes that, when their getter is called, will cache the returned value on the JS object. This can be used to implement attributes whose value is a sequence or dictionary (which would otherwise end up returning a new object each time and hence not be allowed in WebIDL).</p>
+
+<p>Unlike <a href="#StoreInSlot"><code>[StoreInSlot]</code></a> this does <em>not</em> cause the getter to be eagerly called at JS wrapper creation time; the caching is lazy. <code>[Cached]</code> attributes must be <a href="#Pure"><code>[Pure]</code></a> or <a href="#Constant"><code>[Constant]</code></a>, because otherwise not calling the C++ getter would be observable, but are allowed to have throwing getters. Their cached value can be cleared by calling the <code>ClearCachedFooValue</code> method in the namespace of the relevant binding, where <code>foo</code> is the name of the attribute. Unlike <code>[StoreInSlot]</code> attributes, doing so will not immediately invoke the getter, so it does not need a <code>JSContext</code>.</p>
+
+<p>So for example, given this IDL:</p>
+
+<pre>interface MyInterface {
+ [Pure, StoreInSlot] attribute long myAttribute;
+};
+</pre>
+
+<p>the C++ implementation of MyInterface would clear the cached value by calling <code>mozilla::dom::MyInterfaceBinding::ClearCachedMyAttributeValue(this)</code>. JS-implemented WebIDL can clear the cached value by calling <code>this.__DOM_IMPL__.clearCachedMyAttributeValue()</code>.</p>
+
+<p>If the attribute is not readonly, setting it will automatically clear the cached value.</p>
+
+<h3 id="Frozen" name="Frozen"><code>[Frozen]</code></h3>
+
+<p>Used to flag attributes that, when their getter is called, will call <a href="/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze"><code>Object.freeze</code></a> on the return value before returning it. This extended attribute is only allowed on attributes that return sequences, and corresponds to returning a frozen <code>Array</code>.</p>
+
+<h3 id="ChromeConstructor" name="ChromeConstructor"><code>[ChromeConstructor]</code></h3>
+
+<p><code>[ChromeConstructor]</code> has the same behavior as <code>[Constructor]</code>, but the constructor will throw if it's not called from chrome code. The same usage rules and restrictions as those for <code>[Constructor]</code> apply. Note that <code>[Constructor]</code> and <code>[ChromeConstructor]</code> are mutually exclusive; while there can be multiple of either, there can never be both on the same interface.</p>
+
+<h3 id="BinaryName" name="BinaryName"><code>[BinaryName]</code></h3>
+
+<p><code>[BinaryName]</code> can be specified on method or attribute to change the C++ function name that will be used for the method or attribute. It takes a single string argument, which is the name you wish the method or attribute had instead of the one it actually has.</p>
+
+<p>For example, given this IDL:</p>
+
+<pre>interface InterfaceWithRenamedThings {
+ [BinaryName="renamedMethod"]
+ void someMethod();
+ [BinaryName="renamedAttribute"]
+ attribute long someAttribute;
+};
+</pre>
+
+<p>the corresponding C++ would be:</p>
+
+<pre class="brush: cpp">class InterfaceWithRenamedThings
+{
+public:
+ void RenamedMethod();
+ int32_t RenamedAttribute();
+ void SetRenamedAttribute(int32_t);
+};
+</pre>
+
+<h3 id="Exposed" name="Exposed"><code>[Exposed]</code></h3>
+
+<p><code>[Exposed]</code> is mostly <a href="http://heycam.github.io/webidl/#Exposed">defined by the Web IDL specification.</a> There is one Gecko-specific nonstandard extension: the <code>System</code> value. <code>[Exposed=System]</code> means the interface is available in situations when the global is a BackstagePass object. The most common examples are <a href="/en-US/docs/Mozilla/Tech/XPCOM/Guide/Building_components_in_JavaScript">JS components</a> and xpcshell.</p>
+
+<h2 class="note" id="Helper_objects">Helper objects</h2>
+
+<p>The C++ side of the bindings uses a number of helper objects.</p>
+
+<h3 id="Nullable" name="Nullable"><code>Nullable</code></h3>
+
+<p><code>Nullable&lt;&gt;</code> is a struct declared in <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/Nullable.h" title="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/Nullable.h"><code>Nullable.h</code></a> and exported to <code>mozilla/dom/Nullable.h</code> that is used to represent nullable values of types that don't have a natural way to represent null.</p>
+
+<p><code>Nullable</code> has an <code>IsNull()</code> getter that returns whether null is represented and a <code>Value()</code> getter that returns a <code>const T&amp;</code> and can be used to get the value when it's not null.</p>
+
+<p><code>Nullable</code> has a <code>SetNull()</code> setter that sets it as representing null and two setters that can be used to set it to a value: <code>"void SetValue(T)"</code> (for setting it to a given value) and <code>"T&amp; SetValue()"</code> for directly modifying the underlying <code>T&amp;</code>.</p>
+
+<h3 id="Optional" name="Optional"><code>Optional</code></h3>
+
+<p><code>Optional&lt;&gt;</code> is a struct declared in <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingDeclarations.h" title="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingUtils.h"><code>BindingDeclarations.h</code></a> and exported to <code>mozilla/dom/BindingDeclarations.h</code> that is used to represent optional arguments and dictionary members, but only those that have no default value.</p>
+
+<p><code>Optional</code> has a <code>WasPassed()</code> getter that returns true if a value is available. In that case, the <code>Value()</code> getter can be used to get a <code>const T&amp;</code> for the value.</p>
+
+<h3 id="NonNull" name="NonNull"><code>NonNull</code></h3>
+
+<p><code>NonNull</code> is a struct declared in <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingUtils.h" title="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingUtils.h"><code>BindingUtils.h</code></a> and exported to <code>mozilla/dom/BindingUtils.h</code> that is used to represent non-null C++ objects. It has a conversion operator that produces <code>T&amp;</code>.</p>
+
+<h3 id="OwningNonNull" name="OwningNonNull"><code>OwningNonNull</code></h3>
+
+<p><code>OwningNonNull</code> is a struct declared in <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingUtils.h" title="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingUtils.h"><code>BindingUtils.h</code></a> and exported to <code>mozilla/dom/BindingUtils.h</code> that is used to represent non-null C++ objects and holds a strong reference to them. It has a conversion operator that produces <code>T&amp;</code>.</p>
+
+<h3 id="TypedArrays" name="TypedArrays">Typed arrays, arraybuffers, array buffer views</h3>
+
+<p><code><a class="external" href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/TypedArray.h" title="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/TypedArray.h">TypedArray.h</a></code> is exported to <code>mozilla/dom/TypedArray.h</code> and exposes structs that correspond to the various typed array types, as well as <code>ArrayBuffer</code> and <code>ArrayBufferView</code>, all in the <code>mozilla::dom</code> namespace. Each struct has a <code>Data()</code> method that returns a pointer to the relevant type (<code>uint8_t</code> for <code>ArrayBuffer</code> and <code>ArrayBufferView</code>) and a <code>Length()</code> method that returns the length in units of <code>*Data()</code>. So for example, <code>Int32Array</code> has a <code>Data()</code> returning i<code>nt32_t</code><code>*</code> and a <code>Length()</code> that returns the number of 32-bit ints in the array..</p>
+
+<h3 id="Sequence" name="Sequence"><code>Sequence</code></h3>
+
+<p><code>Sequence&lt;&gt;</code> is a type declared in <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingDeclarations.h" title="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingUtils.h"><code>BindingDeclarations.h</code></a> and exported to <code>mozilla/dom/BindingDeclarations.h</code> that is used to represent sequence arguments. It's some kind of typed array, but which exact kind is opaque to consumers. This allows the binding code to change the exact definition (e.g., to use auto arrays of different sizes and so forth) without having to update all the callees.</p>
+
+<h3 id="CallbackFunction" name="CallbackFunction"><code>CallbackFunction</code></h3>
+
+<p><code>CallbackFunction</code> is a type declared in <a href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/CallbackFunction.h">CallbackFunction.h</a> and exported to <code>mozilla/dom/CallbackFunction.h</code> that is used as a common base class for all the generated callback function representations. This class inherits from <code>nsISupports</code>, and consumers must make sure to cycle-collect it, since it keeps JS objects alive.</p>
+
+<h3 id="CallbackInterface" name="CallbackInterface"><code>CallbackInterface</code></h3>
+
+<p><code>CallbackInterface</code> is a type declared in <a href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/CallbackInterface.h">CallbackInterface.h</a> and exported to <code>mozilla/dom/CallbackInterface.h</code> that is used as a common base class for all the generated callback interface representations. This class inherits from <code>nsISupports</code>, and consumers must make sure to cycle-collect it, since it keeps JS objects alive.</p>
+
+<h3 id="DOMString-helper" name="DOMString-helper"><code>DOMString</code></h3>
+
+<p><code>DOMString</code> is a class declared in <a href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingDeclarations.h">BindingDeclarations.h</a> and exported to <code>mozilla/dom/BindingDeclarations.h</code> that is used for WebIDL <code>DOMString</code> return values. It has a conversion operator to <code>nsString&amp;</code> so that it can be passed to methods that take that type or <code>nsAString&amp;</code>, but callees that care about performance, have an <code>nsStringBuffer</code> available, and promise to hold on to the <code>nsStringBuffer</code> at least until the binding code comes off the stack can also take a <code>DOMString</code> directly for their string return value and call its <code>SetStringBuffer</code> method with the <code>nsStringBuffer</code> and its length. This allows the binding code to avoid extra reference-counting of the string buffer in many cases, and allows it to take a faster codepath even if it does end up having to addref the <code>nsStringBuffer</code>.</p>
+
+<h3 id="GlobalObject" name="GlobalObject"><code>GlobalObject</code></h3>
+
+<p><code>GlobalObject</code> is a class declared in <a href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingDeclarations.h">BindingDeclarations.h</a> and exported to <code>mozilla/dom/BindingDeclarations.h</code> that is used to represent the global object for static attributes and operations (including constructors). It has a <code>Get()</code> method that returns the <code>JSObject*</code> for the global and a <code>GetAsSupports()</code> method that returns an <code>nsISupports*</code> for the global on the main thread, if such is available. It also has a <code>GetContext()</code> method that returns the <code>JSContext*</code> the call is happening on. A caveat: the compartment of the <code>JSContext</code> may not match the compartment of the global!</p>
+
+<h3 id="Date-struct" name="Date-struct"><code>Date</code></h3>
+
+<p><code>Date</code> is a class declared in <a href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/BindingDeclarations.h">BindingDeclarations.h</a> and exported to <code>mozilla/dom/BindingDeclarations.h</code> that is used to represent WebIDL Dates. It has a <code>TimeStamp()</code> method returning a double which represents a number of milliseconds since the epoch, as well as <code>SetTimeStamp()</code> methods that can be used to initialize it with a double timestamp or a JS <code>Date</code> object. It also has a <code>ToDateObject()</code> method that can be used to create a new JS <code>Date</code>.</p>
+
+<h3 id="ErrorResult" name="ErrorResult"><code>ErrorResult</code></h3>
+
+<p><code>ErrorResult</code> is a class declared in <a href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/ErrorResult.h">ErrorResult.h</a> and exported to <code>mozilla/ErrorResult.h</code> that is used to represent exceptions in WebIDL bindings. This has the following methods:</p>
+
+<ul>
+ <li><code>Throw</code>: allows throwing an <code>nsresult</code>. The <code>nsresult</code> must be a failure code.</li>
+ <li><code>ThrowTypeError</code>: allows throwing a <code>TypeError</code> with the given error message. The list of allowed <code>TypeError</code>s and corresponding messages is in <a href="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/Errors.msg" title="http://mxr.mozilla.org/mozilla-central/source/dom/bindings/Errors.msg"><code>dom/bindings/Errors.msg</code></a>.</li>
+ <li><code>ThrowJSException</code>: allows throwing a preexisting JS exception value. However, the <code>MightThrowJSException()</code> method must be called before any such exceptions are thrown (even if no exception is thrown).</li>
+ <li><code>Failed</code>: checks whether an exception has been thrown on this <code>ErrorResult</code>.</li>
+ <li><code>ErrorCode</code>: returns a failure <code>nsresult</code> representing (perhaps incompletely) the state of this <code>ErrorResult</code>.</li>
+ <li><code>operator=</code>: takes an <code>nsresult</code> and acts like <code>Throw</code> if the result is an error code, and like a no-op otherwise (unless an exception has already been thrown, in which case it asserts). This should only be used for legacy code that has nsresult everywhere; we would like to get rid of this operator at some point.</li>
+</ul>
+
+<h2 id="Bindings.conf" name="Bindings.conf"><code>Bindings.conf</code> details</h2>
+
+<p>Write me. In particular, need to describe at least use of <code>concrete</code>, <code>prefable</code>, and <code>addExternalInterface</code>.</p>
+
+<h3 id="How_to_get_a_JSContext_passed_to_a_given_method">How to get a JSContext passed to a given method</h3>
+
+<p>In some rare cases you may need a <code>JSContext*</code> argument to be passed to a C++ method that wouldn't otherwise get such an argument. To see how to achieve this, search for <code>implicitJSContext</code> in <a href="https://developer.mozilla.org/en-US/docs/Mozilla/WebIDL_bindings#Bindings.conf" title="https://developer.mozilla.org/en-US/docs/Mozilla/WebIDL_bindings#Bindings.conf">dom/bindings/Bindings.conf</a>.</p>
+
+<h2 id="Implementing_WebIDL_using_Javascript">Implementing WebIDL using Javascript</h2>
+
+<p>It is possible to implement WebIDL interfaces in JavaScript within Gecko -- however, <strong>this is limited to interfaces that are not exposed in Web Workers</strong>. When the binding occurs, two objects are created:</p>
+
+<ul>
+ <li><em>Content-exposed object:</em> what gets exposed to the web page.</li>
+ <li><em>Implementation object:</em> running as a chrome-privileged script. This allows the implementation object to have various APIs that the content-exposed object does not.</li>
+</ul>
+
+<p>Because there are two types of objects, you have to be careful about which object you are creating.</p>
+
+<h3 id="Creating_JS-implemented_WebIDL_objects">Creating JS-implemented WebIDL objects</h3>
+
+<p>To create a JS-implemented WebIDL object, one must create both the chrome-side implementation object and the content-side page-exposed object. There are three ways to do this.</p>
+
+<h4 id="Using_the_WebIDL_constructor">Using the WebIDL constructor</h4>
+
+<p>If the interface has a constructor, a content-side object can be created by getting that constructor from the relevant content window and invoking it. For example:</p>
+
+<pre class="brush: js">var contentObject = new contentWin.RTCPeerConnection();</pre>
+
+<p>The returned object will be an Xray wrapper for the content-side object. Creating the object this way will automatically create the chrome-side object using its contractID.</p>
+
+<p>This method is limited to the constructor signatures exposed to webpages. Any additional configuration of the object needs to be done via <a href="#ChromeOnly" title="#ChromeOnly"><code>[ChromeOnly]</code></a> methods on the interface.</p>
+
+<p>Creating many objects this way can be slow due to the createInstance overhead involved.</p>
+
+<h4 id="Using_a__create_method">Using a <code>_create</code> method</h4>
+
+<p>A content-side object can be created for a given chrome-side object by invoking the static <code>_create</code> method on the interface. This method takes two arguments: the content window in which to create the object and the chrome-side object to use. For example:</p>
+
+<pre class="brush: js">var contentObject = RTCPeerConnection._create(contentWin,
+ new MyPeerConnectionImpl()); </pre>
+
+<p>However, if you are in a JS component, you may only be able to get to the correct interface object via some window object. In this case, the code would look more like:</p>
+
+<pre class="brush: js">var contentObject = contentWin.RTCPeerConnection._create(contentWin,
+ new MyPeerConnectionImpl()); </pre>
+
+<p>Creating the object this way will not invoke its <code>__init</code> method or <code>init</code> method.</p>
+
+<h4 id="By_returning_a_chrome-side_object_from_a_JS-implemented_WebIDL_method">By returning a chrome-side object from a JS-implemented WebIDL method</h4>
+
+<p>If a JS-implemented WebIDL method is declared as returning a JS-implemented interface, then a non-WebIDL object returned from that method will be treated as the chrome-side part of a JS-implemented WebIdL object and the content-side part will be automatically created.</p>
+
+<p>Creating the object this way will not invoke its <code>__init</code> method or <code>init</code> method.</p>
+
+<h3 id="Implementing_a_WebIDL_object_in_JavaScript">Implementing a WebIDL object in JavaScript</h3>
+
+<p>To implement a WebIDL interface in JavaScript, first add a WebIDL file, in the same way as you would for a C++-implemented interface. To support implementation in JS, you must add an extended attribute <code>JSImplementation="CONTRACT_ID_STRING"</code> on your interface, where CONTRACT_ID_STRING is the XPCOM component contract ID of the JS implementation -- note ";1" is just a Mozilla convention for versioning APIs. Here's an example:</p>
+
+<pre>[Constructor(optional long firstNumber), JSImplementation="@mozilla.org/my-number;1"]
+interface MyNumber {
+ attribute long value;
+ readonly attribute long otherValue;
+ void doNothing();
+};</pre>
+
+<p>Next, create an XPCOM component that implements this interface. <a href="/en-US/docs/How_to_Build_an_XPCOM_Component_in_Javascript" title="/en-US/docs/How_to_Build_an_XPCOM_Component_in_Javascript">Basic directions</a> for how to do this can be found elsewhere on MDN. Use the same contract ID as you specified in the WebIDL file. The class ID doesn't matter, except that it should be a newly generated one. For <code>QueryInterface</code>, you only need to implement <code>nsISupports</code>, not anything corresponding to the WebIDL interface. The name you use for the XPCOM component should be distinct from the name of the interface, to avoid confusing error messages.</p>
+
+<p>WebIDL attributes are implemented as properties on the JS object or its prototype chain, whereas WebIDL methods are implemented as methods on the object or prototype. Note that any other instances of the interface that you are passed in as arguments are the full web-facing version of the object, and not the JS implementation, so you currently cannot access any private data.</p>
+
+<p>The WebIDL constructor invocation will first create your object. If the XPCOM component implements <code>nsIDOMGlobalPropertyInitializer</code><span id="summary_alias_container"><span id="short_desc_nonedit_display">, then the object's </span></span><code>init</code><span id="summary_alias_container"><span id="short_desc_nonedit_display"> method will be invoked with a single argument: the content window the constructor came from. This allows the JS implementation to know which content window it's associated with. The </span></span><code>init</code><span id="summary_alias_container"><span id="short_desc_nonedit_display"> method should not return anything. After this, the content-side object will be created. Then, </span></span>if there are any constructor arguments, the object's <code>__init</code> method will be invoked, with the constructor arguments as its arguments.</p>
+
+<p>If you want an instance of the class to be added to <code>window.navigator</code>, add an extended attribute<span class="difflineplus"> </span><code>NavigatorProperty="PropertyName"</code> which will make the instance available as <code>window.navigator.PropertyName</code>.</p>
+
+<h3 id="Checking_for_Permissions_or_Preferences">Checking for Permissions or Preferences</h3>
+
+<p>With JS-implemented WebIDL, the <code>init</code> method should only return undefined. If any other value, such as <code>null</code>, is returned, the bindings code will assert or crash. In other words, it acts like it has a "void" return type. Preference or permission checking should be implemented by adding an extended attribute to the WebIDL interface. This has the advantage that if the check fails, the constructor or object will not show up at all.</p>
+
+<p>For preference checking, add an extended attribute <code>Pref="myPref.enabled"</code> where <code>myPref.enabled</code> is the preference that should be checked. <code>SettingsLock</code> is an example of this.</p>
+
+<p>For permissions or other kinds of checking, add an extended attribute <code>Func="MyPermissionChecker"</code> where <code>MyPermissionChecker</code> is a function implemented in C++ that returns true if the interface should be enabled. This function can do whatever checking is needed. One example of this is <code>PushManager</code>.</p>
+
+<h3 id="Example">Example</h3>
+
+<p>Here's an example JS implementation of the above interface. The <code>invisibleValue</code> field will not be accessible to web content, but is usable by the doNothing() method.</p>
+
+<pre>Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+
+function MyNumberInner() {
+ this.value = 111;
+ this.invisibleValue = 12345;
+}
+
+MyNumberInner.prototype = {
+ classDescription: "Get my number XPCOM Component",
+ classID: Components.ID("{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"), // dummy UUID
+ contractID: "@mozilla.org/my-number;1",
+ QueryInterface: XPCOMUtils.generateQI([Components.interfaces.nsISupports]),
+ doNothing: function() {},
+ get otherValue() { return this.invisibleValue - 4; },
+ __init: function(firstNumber) {
+ if (arguments.length &gt; 0) {
+ this.value = firstNumber;
+ }
+ }
+}
+
+var components = [MyNumberInner];
+var NSGetFactory = XPCOMUtils.generateNSGetFactory(components);</pre>
+
+<p>Finally, add a component and a contract and whatever other manifest stuff you need to implement an XPCOM component.</p>
+
+<h3 id="Guarantees_provided_by_bindings">Guarantees provided by bindings</h3>
+
+<p>When implementing a WebIDL interface in JavaScript, certain guarantees will be provided by the binding implementation. For example, string or numeric arguments will actually be primitive strings or numbers. Dictionaries will contain only the properties that they are declared to have, and they will have the right types. Interface arguments will actually be objects implementing that interface.</p>
+
+<p>What the bindings will NOT guarantee is much of anything about <code>object</code> and <code>any</code> arguments. They will get cross-compartment wrappers that make touching them from chrome code not be an immediate security bug, but otherwise they can have quite surprising behavior if the page is trying to be malicious. Try to avoid using these types if possible.</p>
+
+<h3 id="Accessing_the_content_object_from_the_implementation">Accessing the content object from the implementation</h3>
+
+<p>If the JS implementation of the WebIDL interface needs to access the content object, it is available as a property called <code>__DOM_IMPL__</code> on the chrome implementation object. This property only appears after the content-side object has been created. So it is available in <code>__init</code> but not in <code>init</code>.</p>
+
+<h3 id="Determining_the_principal_of_the_caller_that_invoked_the_WebIDL_API">Determining the principal of the caller that invoked the WebIDL API</h3>
+
+<p>This can be done by calling <code>Component.utils.<span class="d">getWebIDLCallerPrincipal</span>()</code>.</p>
+
+<h3 id="Throwing_exceptions_from_JS-implemented_APIs">Throwing exceptions from JS-implemented APIs</h3>
+
+<p>There are two reasons a JS implemented API might throw. The first reason is that some unforeseen condition occurred and the second is that a specification requires an exception to be thrown.</p>
+
+<p>When throwing for an unforeseen condition, the exception will be reported to the console, and a sanitized NS_ERROR_UNEXPECTED exception will be thrown to the calling content script, with the file/line of the content code that invoked your API. This will avoid exposing chrome URIs and other implementation details to the content code.</p>
+
+<p>When throwing because a specification requires an exception, you need to communicate to the binding code that this is what you're doing. Right now this is done by throwing a <code>DOMError</code> from the window your WebIDL object is associated with (the one that was passed to your <code>init</code> method). The binding code will then rethrow just the message string of that <code>DOMError</code> to the web page, as a plain JS <code>Error</code>. This does not allow implementing exceptions per spec (e.g., there is no way to explicitly throw a <code>TypeError</code> or other <code>Error</code> subclass), unfortunately; we're still working on that. Since you know for this case the exception is being thrown because a spec requires it, you know you need to create the <code>DOMError</code>. An example of how this could work:</p>
+
+<pre class="brush: js">if (!isValid(passedInObject)) {
+ throw new this.contentWindow.DOMError("Error", "Object is invalid");
+}
+</pre>
+
+<p>In some cases you may need to perform operations whose exception message you just want to propagate to the content caller. This can be done like so:</p>
+
+<pre class="brush: js">try {
+ someOperationThatCanThrow();
+} catch (e) {
+ throw new this.contentWindow.DOMError(e.name, e.message);
+}
+</pre>
+
+<h3 id="Inheriting_from_interfaces_implemented_in_C">Inheriting from interfaces implemented in C++</h3>
+
+<p>It's possible to have an interface implemented in JavaScript inherit from an interface implemented in C++. To do so, simply have one interface inherit from the other and the bindings code will auto-generate a C++ object inheriting from the implementation of the parent interface. The class implementing the parent interface will need a constructor that takes an <code>nsPIDOMWindow*</code> (though it doesn't have to do anything with that argument).</p>
+
+<p>If the class implementing the parent interface is abstract and you want to use a specific concrete class as the implementation to inherit from, you will need to add a <code>defaultImpl</code> annotation to the descriptor for the parent interface in <code>Bindings.conf</code>. The value of the annotation is the C++ class to use as the parent for JS-implemented descendants; if <code>defaultImpl</code> is not specified, the <code>nativeType</code> will be used.</p>
+
+<p>For example, consider this interface that we wish to implement in JavaScript:</p>
+
+<pre>[<code>JSImplementation</code>="some-contract"]
+interface MyEventTarget : EventTarget {
+ attribute EventHandler onmyevent;
+ void dispatchTheEvent(); // Sends a "myevent" event to this EventTarget
+}
+</pre>
+
+<p>The implementation would look something like this, ignoring most of the XPCOM boilerplate:</p>
+
+<pre>function MyEventTargetImpl() {
+}
+MyEventTargetImpl.prototype = {
+ // QI to nsIDOMGlobalPropertyInitializer so we get init() called on us.
+ QueryInterface: XPCOMUtils.generateQI([Ci.nsIDOMGlobalPropertyInitializer]),
+
+ init: function(contentWindow) {
+ this.contentWindow = contentWindow;
+ }
+
+ get onmyevent() {
+ return this.__DOM_IMPL__.getEventHandler("onmyevent");
+ }
+
+ set onmyevent(handler) {
+ this.__DOM_IMPL__.setEventHandler("onmyevent", handler);
+ }
+
+ dispatchTheEvent: function() {
+ var event = new this.contentWindow.Event("myevent");
+ this.__DOM_IMPL__.dispatchEvent(event);
+ }
+};
+</pre>
+
+<p>The implementation would automatically support the API exposed on <code>EventTarget</code> (so, for example, <code>addEventListener</code>). Calling the <code>dispatchTheEvent</code> method would cause dispatch of an event that content script can see via listeners it has added.</p>
+
+<p>Note that in this case the chrome implementation is relying on some <code>[ChromeOnly]</code> methods on EventTarget that were added specifically to make it possible to easily implement event handlers. Other cases can do similar things as needed.</p>
diff --git a/files/ja/mozilla/working_with_windows_in_chrome_code/index.html b/files/ja/mozilla/working_with_windows_in_chrome_code/index.html
new file mode 100644
index 0000000000..eee407f580
--- /dev/null
+++ b/files/ja/mozilla/working_with_windows_in_chrome_code/index.html
@@ -0,0 +1,308 @@
+---
+title: chrome コードでウィンドウを取り扱う
+slug: Mozilla/Working_with_windows_in_chrome_code
+tags:
+ - Add-ons
+ - Extensions
+translation_of: Mozilla/Working_with_windows_in_chrome_code
+---
+<p>この文書では、Mozilla の chrome コード (<a href="/ja/XUL" title="ja/XUL">XUL</a> アプリケーションや <a href="/ja/Extensions" title="ja/Extensions">拡張機能</a>) の中で複数のウィンドウを取り扱う方法を解説します。また、新規ウィンドウを開く、すでにウィンドウが開いているか確認する、異なるウィンドウ間でデータを受け渡すといった場面での tips やサンプルコードを紹介します。</p>
+<p>{{ 英語版章題("Opening windows") }}</p>
+<h3 id=".E6.96.B0.E8.A6.8F.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E9.96.8B.E3.81.8F" name=".E6.96.B0.E8.A6.8F.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E9.96.8B.E3.81.8F">新規ウィンドウを開く</h3>
+<p>新規ウィンドウを開くためには、通常は <code><a href="/ja/DOM/window.open" title="ja/DOM/window.open">window.open</a></code> もしくは <code><a href="/ja/DOM/window.openDialog" title="ja/DOM/window.openDialog">window.openDialog</a></code> の DOM メソッドを次のように呼び出します。</p>
+<pre class="eval">var win = window.open("<a class="external" rel="freelink">chrome://myextension/content/about.xul</a>",
+ "aboutMyExtension", "chrome,centerscreen");
+</pre>
+<p><code>window.open</code> の 1 つめのパラメータはウィンドウとその内容を記述した XUL ファイルの URI です。</p>
+<p>2 つめのパラメータは、ウィンドウ名です。この名前はリンクやフォームにおいて <code>target</code> 属性として利用することができます。これは、ユーザが見るウィンドウタイトルとは異なります。そちらは、XULを使って指定します。</p>
+<p>3 つめは任意のパラメータで、ウィンドウに設定する特別な機能のリストです。</p>
+<p><code>window.openDialog</code> 関数は同様に動作しますが、JavaScript コードから参照可能な追加の引数を設定することができます。また、ウィンドウの機能設定についても <code>dialog</code> 機能が常に設定されているように動作するなど、多少異なります。</p>
+<p>XPCOM コンポーネントのコードからウィンドウを開く時などのように <code>Window</code> オブジェクトを利用できない場合、 <a href="/ja/NsIWindowWatcher" title="ja/NsIWindowWatcher">nsIWindowWatcher</a> インターフェイスを利用できます。パラメータは <code>window.open</code> に類似しており、実際 <code>window.open</code> の実装では <code>nsIWindowWatcher</code> のメソッドを呼び出しています。</p>
+<pre class="eval">var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
+ .getService(Components.interfaces.nsIWindowWatcher);
+var win = ww.openWindow(null, "<a class="external" rel="freelink">chrome://myextension/content/about.xul</a>",
+ "aboutMyExtension", "chrome,centerscreen", null);
+</pre>
+<p>{{ 英語版章題("Window object") }}</p>
+<h3 id="Window_.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88" name="Window_.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88">Window オブジェクト</h3>
+<p>上記セクションで <code>window.open</code> の戻り値を代入されている <code>win</code> 変数に注目してください。これを使って開いたウィンドウにアクセスすることが出来ます。 <code>window.open</code> (やそれに似たメソッド) の戻り値は、 <code>window</code> 変数と同じ型の <code><a class="external" href="http://xulplanet.com/references/objref/Window.html">Window</a></code> オブジェクト (普通は <code><a class="external" href="http://xulplanet.com/references/objref/ChromeWindow.html">ChromeWindow</a></code>) です。</p>
+<p>技術的には、この戻り値は <code><a href="/ja/NsIDOMJSWindow" title="ja/NsIDOMJSWindow">nsIDOMJSWindow</a></code> や <code><a href="/ja/NsIDOMWindowInternal" title="ja/NsIDOMWindowInternal">nsIDOMWindowInternal</a></code> を含む多くのインターフェイスを実装していますが、ユーザー定義のグローバル変数のプロパティやウィンドウの関数も持っています。なので、例えば、そのウィンドウに対応する DOM ドキュメントにアクセスするのに <code><a href="/ja/DOM/window.document" title="ja/DOM/window.document">win.document</a></code> を使うことが出来ます。</p>
+<p>しかし注意すべきなのは、 <code>open()</code> の呼び出しが返るのは、そのウィンドウが完全にロードされる <em>前</em> なので、 <code><a href="/ja/DOM/document.getElementById" title="ja/DOM/document.getElementById">win.document.getElementById()</a></code> のような幾つかの呼び出しは失敗するであろうという事です。この困難に打ち勝つには、開かれようとしているウィンドウの <code>load</code> ハンドラに初期化コードを移動するか、<a href="#callback">下記</a>にあるようにコールバック関数を渡すのがいいでしょう。</p>
+<p><code><a href="/ja/DOM/document.defaultView" title="ja/DOM/document.defaultView">document.defaultView</a></code> を使ってドキュメントから <code>Window</code> オブジェクトを取得できます。</p>
+<p>{{ 英語版章題("Content windows") }}</p>
+<h3 id=".E3.82.B3.E3.83.B3.E3.83.86.E3.83.B3.E3.83.84.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6" name=".E3.82.B3.E3.83.B3.E3.83.86.E3.83.B3.E3.83.84.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6">コンテンツウィンドウ</h3>
+<p>XUL ウィンドウが、 <code>&lt;browser&gt;</code> や <code>&lt;iframe&gt;</code> のようなページを表示できるウィジェットを含んでいる時、そのウィジェットのドキュメントは、当然、chrome ウィンドウ自体のドキュメントからは分離されています。個々のサブドキュメントにもまた、一般常識的にはウィンドウが無いにもかかわらず、<code>Window</code> オブジェクトがあります。</p>
+<p><code>&lt;tabbrowser&gt;</code> のタブの中に開かれた chrome ウィンドウにも同じことが当てはまります。タブの中に開かれた chrome ドキュメント上の要素はあなたの chrome ドキュメントから分離されています。</p>
+<p>次の二つのサブセクションでは、(異なるコンテキストにあるにもかかわらず) chrome とコンテンツの境界線を越えるどちらかの方法、すなわち、chrome ドキュメントの祖先である要素にアクセスする方法と、chrome ドキュメントの子孫である要素にアクセスする方法を記述します。</p>
+<p>{{ 英語版章題("Accessing content documents") }}</p>
+<h4 id=".E3.82.B3.E3.83.B3.E3.83.86.E3.83.B3.E3.83.84.E3.81.AE.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.81.AB.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9.E3.81.99.E3.82.8B" name=".E3.82.B3.E3.83.B3.E3.83.86.E3.83.B3.E3.83.84.E3.81.AE.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.81.AB.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9.E3.81.99.E3.82.8B">コンテンツのドキュメントにアクセスする</h4>
+<p>ドキュメントの中に <code>&lt;tabbrowser&gt;</code>、 <code>&lt;browser&gt;</code>、 もしくは <code>&lt;iframe&gt;</code> 要素に読み込まれたドキュメントがあるとします。そのドキュメントには <code>browser.contentDocument</code> を、そのドキュメントの <code>Window</code> オブジェクトには <code>browser.contentWindow</code> を使ってアクセスできます。</p>
+<p><a href="/ja/XPCNativeWrapper#What_is_a_trusted_window.3F" title="ja/XPCNativeWrapper#What_is_a_trusted_window.3F">信頼できないコンテンツ</a>を扱う時には <a href="/ja/XPCNativeWrapper" title="ja/XPCNativeWrapper">XPCNativeWrapper</a> についてよく知っておくべきです。XPCNativeWrapper が有効 (Firefox 1.5+ ではデフォルト) だと、拡張機能はコンテンツドキュメントの DOM に安全にアクセスできますが、コンテンツの JavaScript にはアクセスできません。コンテンツの JavaScript を直接扱うために XPCNativeWrapper をバイパスすることはセキュリティ上の問題に繋がります。</p>
+<p>コンテンツページとやり取りする必要があるならば、 <a href="/ja/Code_snippets/Interaction_between_privileged_and_non-privileged_pages" title="ja/Code_snippets/Interaction_between_privileged_and_non-privileged_pages">特権コードと非特権コードの協調</a> を参照して下さい。</p>
+<p>{{ 英語版章題("The content shortcut") }}</p>
+<h5 id="content_.E3.82.B7.E3.83.A7.E3.83.BC.E3.83.88.E3.82.AB.E3.83.83.E3.83.88" name="content_.E3.82.B7.E3.83.A7.E3.83.BC.E3.83.88.E3.82.AB.E3.83.83.E3.83.88"><code>content</code> ショートカット</h5>
+<p><code>&lt;browser type="content-primary"/&gt;</code> の場合、 <a href="/ja/DOM/window.content" title="ja/DOM/window.content">content</a> ショートカットプロパティを使ってコンテンツドキュメントの <code>Window</code> オブジェクトにアクセスできます。例えば、</p>
+<pre class="eval">// content-primary ウィジェットに表示されているドキュメントのタイトルを警告ダイアログで表示する
+
+alert(content.document.title);
+</pre>
+<p>例えば、<code>browser.xul</code> オーバーレイの中で <code>content.document</code> を使うことで、Firefox のウィンドウで選択されているタブのウェブページにアクセスできます。</p>
+<div class="note">
+ 幾つかの例では <code>_content</code> を <code>content</code> の代わりに使っています。 前者はここ最近非推奨とされているので、新しくコードを書く時には <code>content</code> を使うべきです。</div>
+<p>{{ 英語版章題("Accessing a document in the sidebar") }}</p>
+<h4 id=".E3.82.B5.E3.82.A4.E3.83.89.E3.83.90.E3.83.BC.E5.86.85.E3.81.AE.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.81.AB.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9.E3.81.99.E3.82.8B" name=".E3.82.B5.E3.82.A4.E3.83.89.E3.83.90.E3.83.BC.E5.86.85.E3.81.AE.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.81.AB.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9.E3.81.99.E3.82.8B">サイドバー内のドキュメントにアクセスする</h4>
+<p>Firefox にはサイドバーがあり、id="sidebar" の <code>&lt;browser&gt;</code> 要素として実装されています。サイドバー内部の要素や変数にアクセスするには、{{ Anch("コンテンツのドキュメントにアクセスする") }}時のように、 <code>document.getElementById("sidebar").contentDocument</code> や <code>.contentWindow</code> を使う必要があります。</p>
+<p><a href="/ja/Code_snippets/Sidebar" title="ja/Code_snippets/Sidebar">Code snippets:Sidebar</a> でサイドバーに関するより多くの Tips を参照して下さい。</p>
+<p>{{ 英語版章題("Accessing the elements of the top-level document from a child window") }}</p>
+<h4 id=".E5.AD.90.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.81.8B.E3.82.89.E3.83.88.E3.83.83.E3.83.97.E3.83.AC.E3.83.99.E3.83.AB.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.81.AE.E8.A6.81.E7.B4.A0.E3.81.AB.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9.E3.81.99.E3.82.8B" name=".E5.AD.90.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.81.8B.E3.82.89.E3.83.88.E3.83.83.E3.83.97.E3.83.AC.E3.83.99.E3.83.AB.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.81.AE.E8.A6.81.E7.B4.A0.E3.81.AB.E3.82.A2.E3.82.AF.E3.82.BB.E3.82.B9.E3.81.99.E3.82.8B">子ウィンドウからトップレベルドキュメントの要素にアクセスする</h4>
+<p>逆のケースとして、<code>&lt;browser&gt;</code> や <code>&lt;iframe&gt;</code> に読み込まれた特権スクリプトから chrome ドキュメントにアクセスしたい場合があります。</p>
+<p>これが役に立つ典型的な例は、Firefox のメインウィンドウのサイドバー内でコードを実行して、メインのブラウザウィンドウ内の要素にアクセスしたい時です。</p>
+<p><a href="/ja/DOM_Inspector" title="ja/DOM_Inspector">DOM Inspector</a> で見られるような DOM ツリーはこのようになっています。</p>
+<pre class="eval">#document
+ window main-window
+ ...
+ browser
+ #document
+ window myExtensionWindow
+</pre>
+<p>子ウィンドウがある場所がコードが実行される場所です。</p>
+<p>やるべき事は chrome ドキュメントの上の要素にアクセスすること、すなわち chrome ウィンドウから脱出して祖先にアクセスすることです。これは下記の文によって可能になります。</p>
+<pre class="eval">var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
+ .getInterface(Components.interfaces.nsIWebNavigation)
+ .QueryInterface(Components.interfaces.nsIDocShellTreeItem)
+ .rootTreeItem
+ .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
+ .getInterface(Components.interfaces.nsIDOMWindow);
+</pre>
+<p>これによって chrome と コンテンツ の境界を越えることができ、メインウィンドウのオブジェクトが返ってきます。</p>
+<p>{{ 英語版章題("Finding already opened windows") }}</p>
+<h3 id=".E3.81.99.E3.81.A7.E3.81.AB.E9.96.8B.E3.81.84.E3.81.A6.E3.81.84.E3.82.8B.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E8.A6.8B.E3.81.A4.E3.81.91.E3.82.8B" name=".E3.81.99.E3.81.A7.E3.81.AB.E9.96.8B.E3.81.84.E3.81.A6.E3.81.84.E3.82.8B.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E8.A6.8B.E3.81.A4.E3.81.91.E3.82.8B">すでに開いているウィンドウを見つける</h3>
+<p>ウィンドウメディエータ XPCOM コンポーネント (<a href="/ja/nsIWindowMediator" title="ja/nsIWindowMediator">nsIWindowMediator</a> インターフェイス) は、存在しているウィンドウに関する情報を提供します。現在開かれているウィンドウの情報を得るために、<code>getMostRecentWindow</code> と <code>getEnumerator</code> という二つのメソッドがよく使われます。<a href="/ja/nsIWindowMediator" title="ja/nsIWindowMediator">nsIWindowMediator</a> のページでより多くの情報と <code>nsIWindowMediator</code> の使用例を参照して下さい。 <span class="comment">{{英語版章題("Example: Opening a window only if it's not opened already")}} === Example: Opening a window only if it's not opened already === XXX TBD</span></p>
+<p>{{ 英語版章題("Passing data between windows") }}</p>
+<h3 id=".E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E9.96.93.E3.81.A7.E3.81.AE.E3.83.87.E3.83.BC.E3.82.BF.E3.81.AE.E3.82.84.E3.82.8A.E5.8F.96.E3.82.8A" name=".E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E9.96.93.E3.81.A7.E3.81.AE.E3.83.87.E3.83.BC.E3.82.BF.E3.81.AE.E3.82.84.E3.82.8A.E5.8F.96.E3.82.8A">ウィンドウ間でのデータのやり取り</h3>
+<p>複数のウィンドウを扱っていると、一方のウィンドウからもう一方へ情報を渡さなければならないことがよくあります。ウィンドウが異なると DOM ドキュメントとグローバルオブジェクトも別個のものをスクリプトに対して持っているので、スクリプトの中で違うウィンドウから一つのグローバル JavaScript 変数を単純に使うことはできません。</p>
+<p>データを共有するためのテクニックには効力や単純さの点で異なるものが幾つかあります。次の幾つかのセクションで最も単純なものから最も複雑なものまで説明しましょう。</p>
+<p>{{ 英語版章題("Example 1: Passing data to window when opening it with openDialog") }}</p>
+<h4 id=".E4.BE.8B_1:_openDialog_.E3.81.A7.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E9.96.8B.E3.81.84.E3.81.9F.E6.99.82.E3.81.AB.E3.83.87.E3.83.BC.E3.82.BF.E3.82.92.E6.B8.A1.E3.81.99" name=".E4.BE.8B_1:_openDialog_.E3.81.A7.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E9.96.8B.E3.81.84.E3.81.9F.E6.99.82.E3.81.AB.E3.83.87.E3.83.BC.E3.82.BF.E3.82.92.E6.B8.A1.E3.81.99">例 1: <code>openDialog</code> でウィンドウを開いた時にデータを渡す</h4>
+<p><code><a href="/ja/DOM/window.openDialog" title="ja/DOM/window.openDialog">window.openDialog</a></code> または <code>nsIWindowWatcher.openWindow</code> でウィンドウを開く時に、そのウィンドウに任意の<em>引数</em>を渡すことができます。引数は単純な JavaScript オブジェクトで、開かれたウィンドウの中で <code><a href="/ja/DOM/window.arguments" title="ja/DOM/window.arguments">window.arguments</a></code> プロパティからアクセスできます。</p>
+<p>この例では、プログレスダイアログを開くのに <code>window.openDialog</code> を使用しています。最大値と現在の進行値だけでなく、現在の状況を示すテキストも渡しています。<code>nsIWindowWatcher.openWindow</code> の使い方は少しだけ変わっているので注意してください 。 <span class="comment">TODO: link to <a href="/ja/How_To_Pass_an_XPCOM_Object_to_a_New_Window">How To Pass an XPCOM Object to a New Window</a> when it has a more useful example</span></p>
+<p>開く側のコード:</p>
+<pre class="eval">window.openDialog("<a class="external" rel="freelink">chrome://test/content/progress.xul</a>",
+ "myProgress", "chrome,centerscreen",
+ {status: "Reading remote data", maxProgress: 50, progress: 10} );
+</pre>
+<p><code>progress.xul</code>:</p>
+<pre>&lt;?xml version="1.0"?&gt;
+&lt;?xml-stylesheet href="chrome://global/skin/" type="text/css"?&gt;
+
+&lt;window onload="onLoad();" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt;
+&lt;script&gt;&lt;![CDATA[
+ var gStatus, gProgressMeter;
+ var maxProgress = 100;
+ function onLoad() {
+ gStatus = document.getElementById("status");
+ gProgressMeter = document.getElementById("progressmeter");
+
+ if("arguments" in window &amp;&amp; window.arguments.length &gt; 0) {
+ maxProgress = window.arguments[0].maxProgress;
+ setProgress(window.arguments[0].progress);
+ setStatus(window.arguments[0].status);
+ }
+ }
+
+ function setProgress(value) {
+ gProgressMeter.value = 100 * value / maxProgress;
+ }
+
+ function setStatus(text) {
+ gStatus.value = "Status: " + text + "...";
+ }
+]]&gt;&lt;/script&gt;
+
+&lt;label id="status" value="(No status)"/&gt;
+&lt;hbox&gt;
+ &lt;progressmeter id="progressmeter" mode="determined"/&gt;
+ &lt;button label="Cancel" oncommand="close();"/&gt;
+&lt;/hbox&gt;
+
+&lt;/window&gt;
+</pre>
+<p>{{ 英語版章題("Example 2: Interacting with the opener") }}</p>
+<h4 id=".E4.BE.8B_2:_.E9.96.8B.E3.81.84.E3.81.9F.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.81.A8.E3.81.AE.E7.9B.B8.E4.BA.92.E3.81.AE.E3.82.84.E3.82.8A.E5.8F.96.E3.82.8A" name=".E4.BE.8B_2:_.E9.96.8B.E3.81.84.E3.81.9F.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.81.A8.E3.81.AE.E7.9B.B8.E4.BA.92.E3.81.AE.E3.82.84.E3.82.8A.E5.8F.96.E3.82.8A">例 2: 開いたウィンドウとの相互のやり取り</h4>
+<p>開かれたウィンドウがそれを開いたウィンドウとやり取りしなければならないことがあります。例えば、ユーザーがウィンドウに変化を加えたことを知らせるためにはその必要があるでしょう。開かれたウィンドウの <a href="/ja/Window.opener" title="ja/Window.opener">window.opener</a> プロパティを使うか、前のセクションで述べた方法でウィンドウに渡されたコールバック関数を介して、ウィンドウを開いたウィンドウを見つける事が出来ます。</p>
+<p>先の例に、ユーザーがプログレスダイアログのキャンセルボタンを押した時に、それを開いたウィンドウにそれを知らせるためのコードを追加してみましょう。</p>
+<ul>
+ <li><strong><code>window.opener</code> を使う。</strong><code>opener</code> プロパティはそのウィンドウを開いたウィンドウを返します。さらに言えば、そのウィンドウを開いた {{ Anch("Window オブジェクト") }}です。</li>
+</ul>
+<p>もしプログレスダイアログを開いたウィンドウが <code>cancelOperation</code> 関数を宣言した事がわかっているなら、ユーザーがキャンセルボタンを押したのを知らせるのにこのように <code>window.opener.cancelOperation()</code> を使うことが出来ます。</p>
+<pre class="eval">&lt;button label="Cancel" oncommand="<strong>opener.cancelOperation();</strong> close();"/&gt;
+</pre>
+<ul>
+ <li><strong>コールバック関数を使う。</strong>別のやり方として、開いた側のウィンドウは、前の例で状態を表す文字列を渡したのと同じ方法で、プログレスダイアログにコールバック関数を渡すことが出来ます:</li>
+</ul>
+<pre class="eval">function onCancel() {
+ alert("Operation canceled!");
+}
+
+...
+
+window.openDialog("<a class="external" rel="freelink">chrome://test/content/progress.xul</a>",
+ "myProgress", "chrome,centerscreen",
+ {status: "Reading remote data", maxProgress: 50, progress: 10},
+ <strong>onCancel</strong>);
+</pre>
+<p>そうすると、プログレスダイアログはこのようにしてコールバック関数を実行できます:</p>
+<pre class="eval">&lt;button label="Cancel" oncommand="<strong>window.arguments[1]();</strong> close();"/&gt;
+</pre>
+<p>{{ 英語版章題("Example 3: Using nsIWindowMediator when opener is not enough") }}</p>
+<h4 id=".E4.BE.8B_3:_opener_.E3.81.A7.E4.BA.8B.E8.B6.B3.E3.82.8A.E3.81.AA.E3.81.91.E3.82.8C.E3.81.B0_nsIWindowMediator_.E3.82.92.E4.BD.BF.E3.81.86" name=".E4.BE.8B_3:_opener_.E3.81.A7.E4.BA.8B.E8.B6.B3.E3.82.8A.E3.81.AA.E3.81.91.E3.82.8C.E3.81.B0_nsIWindowMediator_.E3.82.92.E4.BD.BF.E3.81.86">例 3: <code>opener</code> で事足りなければ <code>nsIWindowMediator</code> を使う</h4>
+<p><code>window.opener</code> プロパティはとても簡単に使うことが出来ますが、ウィンドウがいくつかのよく知られた場所から開かれたことが判っている時にしか使えません。より複雑なケースでは、上で紹介された <code><a href="/ja/nsIWindowMediator" title="ja/nsIWindowMediator">nsIWindowMediator</a></code> を使う必要があります。</p>
+<p><code>nsIWindowMediator</code> を使いたくなるケースの一つは、拡張機能の設定ウィンドウです。あなたは browser.xul へのオーバーレイと設定ウィンドウから成るブラウザ拡張機能を開発しているとします。オーバーレイには設定ウィンドウを開くボタンが含まれており、そのウィンドウはブラウザウィンドウから幾つかのデータを読み取る必要があるとします。あなたは覚えているでしょうが、Firefox の拡張マネージャもあなたの設定ダイアログを開くのに使われることがあります。</p>
+<p>これはつまり、あなたの設定ダイアログにおける <code>window.opener</code> の値は必ずしもブラウザウィンドウではなく、拡張マネージャウィンドウかもしれないということです。<code>opener</code> の <code>location</code> プロパティを調べて、それが拡張マネージャウィンドウの場合には <code>opener.opener</code> を使うということも出来るかもしれませんが、より良い方法は <code>nsIWindowMediator</code> を使う事です。</p>
+<pre class="eval">var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
+ .getService(Components.interfaces.nsIWindowMediator);
+var browserWindow = wm.getMostRecentWindow("navigator:browser");
+// |browserWindow| から値を読む
+</pre>
+<p>設定ダイアログでユーザーが行なった変更を適用するのに同じテクニックを使いたい衝動に駆られるかもしれませんが、それをするのにより良い方法は <a class="external" href="http://kb.mozillazine.org/Dev_:_Using_preferences#Using_preferences_observers">preferences observers</a> を使う事です。</p>
+<p>{{ 英語版章題("Advanced data sharing") }}</p>
+<h3 id=".E9.AB.98.E5.BA.A6.E3.81.AA.E3.83.87.E3.83.BC.E3.82.BF.E5.85.B1.E6.9C.89.E6.96.B9.E6.B3.95" name=".E9.AB.98.E5.BA.A6.E3.81.AA.E3.83.87.E3.83.BC.E3.82.BF.E5.85.B1.E6.9C.89.E6.96.B9.E6.B3.95">高度なデータ共有方法</h3>
+<p>上のコードは一つのウィンドウから他のウィンドウやウィンドウ群にデータを渡す必要がある場合には便利ですが、ただ単に異なるウィンドウ間で共通の JavaScript 変数を共有したいだけの場合もあります。それぞれのウィンドウで、ローカル変数とそれに対応するセッタ関数を宣言して、ウィンドウをまたいで変数の「インスタンス」を同期させるという事も出来ますが、幸運にも、もっと良いやり方があります。</p>
+<p>共有の変数を宣言するには、アプリケーションが起動している間ずっと存在していて、異なる chrome ウィンドウ内のコードから簡単にアクセスできるような場所を見つける必要があります。そういった場所は実際に幾つかあります。</p>
+<p>{{ 英語版章題("Using JavaScript code modules") }}</p>
+<h4 id="JavaScript_.E3.82.B3.E3.83.BC.E3.83.89.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB.E3.81.AE.E4.BD.BF.E7.94.A8" name="JavaScript_.E3.82.B3.E3.83.BC.E3.83.89.E3.83.A2.E3.82.B8.E3.83.A5.E3.83.BC.E3.83.AB.E3.81.AE.E4.BD.BF.E7.94.A8">JavaScript コードモジュールの使用</h4>
+<p><a href="/ja/JavaScript_code_modules/Using" title="ja/JavaScript_code_modules/Using">JavaScript コードモジュール</a> {{ Fx_minversion_inline(3) }} は、グローバルな共有シングルトンオブジェクトを作成し、あらゆる JavaScript スコープにインポートするための簡単な方法です。インポートする側のスコープはコードモジュール内のオブジェクトとデータにアクセスできるようになります。コードモジュールはキャッシュされるため、すべてのスコープがコードモジュールの同じインスタンスを取得し、モジュール内のデータを共有できます。詳しくは <a href="/ja/Components.utils.import" title="ja/Components.utils.import">Components.utils.import</a> を参照してください。</p>
+<ul>
+ <li>長所:
+ <ul>
+ <li>これは「まっとうなやり方」です。</li>
+ <li>作成やインポートはとても簡単です。</li>
+ <li>XPCOM コンポーネントを構築する必要がありません。</li>
+ </ul>
+ </li>
+ <li>短所:
+ <ul>
+ <li>Firefox 3 以降でしか使えません。</li>
+ <li>モジュールとインポートする側のスコープとの間でスコープが共有されるため、名前の衝突に気をつける必要があります。</li>
+ </ul>
+ </li>
+</ul>
+<p>{{ 英語版章題("Using an XPCOM singleton component") }}</p>
+<h4 id="XPCOM_.E3.82.B7.E3.83.B3.E3.82.B0.E3.83.AB.E3.83.88.E3.83.B3.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.82.92.E4.BD.BF.E3.81.86" name="XPCOM_.E3.82.B7.E3.83.B3.E3.82.B0.E3.83.AB.E3.83.88.E3.83.B3.E3.82.B3.E3.83.B3.E3.83.9D.E3.83.BC.E3.83.8D.E3.83.B3.E3.83.88.E3.82.92.E4.BD.BF.E3.81.86">XPCOM シングルトンコンポーネントを使う</h4>
+<p>データを共有する方法として最もクリーンで強力なのは、独自の XPCOM コンポーネント (<a href="/ja/How_to_Build_an_XPCOM_Component_in_Javascript" title="ja/How_to_Build_an_XPCOM_Component_in_Javascript">Javascript で書けます</a>) を定義する方法です。このコンポーネントには、 <code>getService</code> を呼び出すことでどこからでもアクセスできます。</p>
+<pre class="eval">Components.classes["@domain.org/mycomponent;1"].getService();
+</pre>
+<ul>
+ <li>長所:
+ <ul>
+ <li>これは「まっとうなやり方」です。</li>
+ <li>コンポーネントの中に任意の JavaScript オブジェクトを保管できます。</li>
+ <li>コンポーネント間でスコープが共有されないので、名前の衝突を心配する必要はありません。</li>
+ <li>古いバージョンの Firefox でも使用できます。</li>
+ </ul>
+ </li>
+ <li>短所:
+ <ul>
+ <li><code><a href="/ja/DOM/window" title="ja/DOM/window">window</a></code> オブジェクトや、<code>alert</code> や <code>open</code> といったそのメンバ、その他ウィンドウ内部から取得できるたくさんのオブジェクトが利用できません。しかし、その機能性は失われていません。それらの便利なショートカットの代わりに、直接 XPCOM コンポーネントを使わなければならないだけのことです。もちろん、単にコンポーネント内にデータを保存するだけならこの事は問題ではありません。</li>
+ <li>XPCOM コンポーネントの作成を学ぶのに時間がかかります。</li>
+ </ul>
+ </li>
+</ul>
+<p>オンラインに XPCOM コンポーネントの作成についての記事や本が幾つかあります。</p>
+<p>{{ 英語版章題("Using FUEL Application object") }}</p>
+<h4 id="FUEL_.E3.81.AE_Application_.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.82.92.E4.BD.BF.E3.81.86" name="FUEL_.E3.81.AE_Application_.E3.82.AA.E3.83.96.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.82.92.E4.BD.BF.E3.81.86">FUEL の Application オブジェクトを使う</h4>
+<p>JavaScript ライブラリ FUEL {{ Fx_minversion_inline(3) }} には、ウィンドウ間でデータを共有する簡単な方法があります。<code>Application</code> オブジェクトはデータをグローバルに格納するのに使用できる <code>storage</code> プロパティをサポートしています。この方法は XPCOM シングルトンを使用する方法を単純化したものです。</p>
+<pre class="eval">Application.storage.set(keyname, data);
+
+var data = Application.storage.get(keyname, default);
+
+意味: keyname はデータを識別するのに使用する文字列
+ data はデータ
+ default は keyname が存在しない場合に返されるデータ値
+</pre>
+<ul>
+ <li>長所:
+ <ul>
+ <li>これは「まっとうなやり方」です。</li>
+ <li>コンポーネントの中に任意の JavaScript オブジェクトを保管できます。</li>
+ <li>コンポーネント間でスコープが共有されないので、名前の衝突を心配する必要はありません。</li>
+ <li>XPCOM コンポーネントを構築する必要がありません。</li>
+ </ul>
+ </li>
+ <li>短所:
+ <ul>
+ <li>Firefox 3 以降でしか使えません。</li>
+ <li><code><a href="/ja/DOM/window" title="ja/DOM/window">window</a></code> オブジェクトや、<code>alert</code> や <code>open</code> といったそのメンバ、その他ウィンドウ内部から取得できるたくさんのオブジェクトが利用できません。しかし、その機能性は失われていません。それらの便利なショートカットの代わりに、直接 XPCOM コンポーネントを使わなければならないだけのことです。もちろん、単にコンポーネント内にデータを保存するだけならこの事は問題ではありません。</li>
+ </ul>
+ </li>
+</ul>
+<p>{{ 英語版章題("Storing shared data in preferences") }}</p>
+<h4 id=".E8.A8.AD.E5.AE.9A.E3.81.AB.E5.85.B1.E6.9C.89.E3.83.87.E3.83.BC.E3.82.BF.E3.82.92.E4.BF.9D.E7.AE.A1.E3.81.99.E3.82.8B" name=".E8.A8.AD.E5.AE.9A.E3.81.AB.E5.85.B1.E6.9C.89.E3.83.87.E3.83.BC.E3.82.BF.E3.82.92.E4.BF.9D.E7.AE.A1.E3.81.99.E3.82.8B">設定に共有データを保管する</h4>
+<p>単に文字列や数値を保管したいだけなら、XPCOM コンポーネントを丸々書くような難しいことをする必要は無いかもしれません。そういったケースでは<a class="external" href="http://www.xulplanet.com/references/xpcomref/ifaces/nsIPrefService.html">設定サービス</a>が使えます。</p>
+<ul>
+ <li>長所:
+ <ul>
+ <li>きわめて簡単に単純なデータを保管できます。</li>
+ </ul>
+ </li>
+ <li>短所:
+ <ul>
+ <li>複雑なデータを保管するのは簡単ではありません。</li>
+ <li>設定サービスを乱用してその後片付けを自分でしないと、<code>prefs.js</code> が肥大化してアプリケーションの起動が遅くなる場合があります。</li>
+ </ul>
+ </li>
+</ul>
+<p>プリファレンスシステムの詳しい解説とコードの例は <a href="/ja/Code_snippets/Preferences" title="ja/Code_snippets/Preferences">Code snippets:Preferences</a> を参照して下さい。</p>
+<p>例:</p>
+<pre class="eval">var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefService);
+var branch = prefs.getBranch("extensions.myext.");
+var var1 = branch.getBoolPref("var1"); // 設定値を得る
+</pre>
+<p>{{ 英語版章題("The hidden window hack") }}</p>
+<h4 id=".E9.9A.A0.E3.81.97.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E4.BD.BF.E3.81.A3.E3.81.9F.E3.83.8F.E3.83.83.E3.82.AF" name=".E9.9A.A0.E3.81.97.E3.82.A6.E3.82.A3.E3.83.B3.E3.83.89.E3.82.A6.E3.82.92.E4.BD.BF.E3.81.A3.E3.81.9F.E3.83.8F.E3.83.83.E3.82.AF">隠しウィンドウを使ったハック</h4>
+<p>拡張機能の作者の中には、データやコードを保管するのに特殊な <em>隠しウィンドウ</em> を使っている人もいます。隠しウィンドウは普通のウィンドウに似ていますが、他のウィンドウと違って、アプリケーションが起動している間中ずっと利用でき、ユーザーからは見えません。このウィンドウに読み込まれるドキュメントは、メニューを実装するのにこれが使われている Mac では <code><a class="external" rel="freelink">chrome://browser/content/hiddenWindow.xul</a></code> で、他のオペレーティングシステムでは <code><a class="external" rel="freelink">resource://gre/res/hiddenWindow.html</a></code> です。隠しウィンドウは、ゆくゆくはそれが必要とされないオペレーティングシステムからは削除されるでしょう ({{ Bug(71895) }}) 。</p>
+<p>隠しウィンドウへの参照は nsIAppShellService インターフェイスから取得できます。他の DOM オブジェクトと同じように独自のプロパティを設定できます:</p>
+<pre class="eval">var hiddenWindow = Components.classes["@mozilla.org/appshell/appShellService;1"]
+ .getService(Components.interfaces.nsIAppShellService)
+ .hiddenDOMWindow;
+hiddenWindow.myExtensionStatus = "ready";
+</pre>
+<p>しかし、隠しウィンドウに入れられたオブジェクトは依然としてそれを作ったウィンドウに所属しています。もしそういったオブジェクトのメソッドが <code>XMLHttpRequest</code> のような <code>window</code> オブジェクトのプロパティにアクセスしたら、元のウィンドウが閉じられていた場合にはエラーメッセージが出るでしょう。これを避けるには、スクリプトファイルを使ってオブジェクトを隠しウィンドウに読み込むのがいいでしょう:</p>
+<pre class="eval">var hiddenWindow = Components.classes["@mozilla.org/appshell/appShellService;1"]
+ .getService(Components.interfaces.nsIAppShellService)
+ .hiddenDOMWindow;
+hiddenWindow.Components.classes["@mozilla.org/moz/jssubscript-loader;1"]
+ .getService(Components.interfaces.mozIJSSubScriptLoader)
+ .loadSubScript("<a class="external" rel="freelink">chrome://my-extension/content/globalObject.js</a>");
+hiddenWindow.myExtensionObject.doSomething();
+</pre>
+<p><code>globalObject.js</code> にはこのようなコードが含まれています:</p>
+<pre class="eval">var myExtensionObject = {
+ doSomething: function() {
+ return new XMLHttpRequest();
+ }
+}
+</pre>
+<ul>
+ <li>長所:
+ <ul>
+ <li>隠しウィンドウでコードを実行する場合、コンポーネントを使うのとは違い、<code>window</code> オブジェクトやそのプロパティを利用できます。</li>
+ <li>隠しウィンドウに任意の JavaScript オブジェクトを保管できます。</li>
+ </ul>
+ </li>
+ <li>短所:
+ <ul>
+ <li>これはハックです。</li>
+ <li>同じウィンドウに異なる拡張機能がアクセスするので、衝突を避ける為に長い変数名を使わなければなりません。</li>
+ <li>Windows や Linux のビルドでは、隠しウィンドウは削除されるかもしれません。</li>
+ </ul>
+ </li>
+</ul>
+<p>{{ 英語版章題("See also") }}</p>
+<h3 id=".E5.8F.82.E8.80.83" name=".E5.8F.82.E8.80.83">参考</h3>
+<ul>
+ <li><a href="/ja/Code_snippets/Dialogs_and_Prompts" title="ja/Code_snippets/Dialogs_and_Prompts">Code snippets:Dialogs</a></li>
+</ul>
+<p> </p>
+<p> </p>