From a065e04d529da1d847b5062a12c46d916408bf32 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 21:46:22 -0500 Subject: update based on https://github.com/mdn/yari/issues/2028 --- .../firefox/australis_add-on_compat/index.html | 130 ------ .../mozilla/firefox/developer_edition/index.html | 34 -- .../firefox/developer_edition/reverting/index.html | 25 -- .../enterprise_deployment_before_60/index.html | 210 --------- files/ja/mozilla/firefox/firefox_esr/index.html | 22 - files/ja/mozilla/firefox/headless_mode/index.html | 267 ------------ .../firefox/linux_compatibility_matrix/index.html | 480 --------------------- .../mozilla/firefox/multiple_profiles/index.html | 245 ----------- .../firefox/multiprocess_firefox/index.html | 75 ---- .../message_manager/index.html | 71 --- .../message_manager_overview/index.html | 444 ------------------- .../web_content_compatibility/index.html | 28 -- .../which_uris_load_where/index.html | 61 --- .../\347\233\256\347\232\204/index.html" | 44 -- .../index.html | 207 --------- files/ja/mozilla/firefox/privacy/index.html | 20 - .../privacy/storage_access_policy/index.html | 267 ------------ .../firefox/privacy/tracking_protection/index.html | 73 ---- .../index.html | 48 --- 19 files changed, 2751 deletions(-) delete mode 100644 files/ja/mozilla/firefox/australis_add-on_compat/index.html delete mode 100644 files/ja/mozilla/firefox/developer_edition/index.html delete mode 100644 files/ja/mozilla/firefox/developer_edition/reverting/index.html delete mode 100644 files/ja/mozilla/firefox/enterprise_deployment_before_60/index.html delete mode 100644 files/ja/mozilla/firefox/firefox_esr/index.html delete mode 100644 files/ja/mozilla/firefox/headless_mode/index.html delete mode 100644 files/ja/mozilla/firefox/linux_compatibility_matrix/index.html delete mode 100644 files/ja/mozilla/firefox/multiple_profiles/index.html delete mode 100644 files/ja/mozilla/firefox/multiprocess_firefox/index.html delete mode 100644 files/ja/mozilla/firefox/multiprocess_firefox/message_manager/index.html delete mode 100644 files/ja/mozilla/firefox/multiprocess_firefox/message_manager/message_manager_overview/index.html delete mode 100644 files/ja/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html delete mode 100644 files/ja/mozilla/firefox/multiprocess_firefox/which_uris_load_where/index.html delete mode 100644 "files/ja/mozilla/firefox/multiprocess_firefox/\347\233\256\347\232\204/index.html" delete mode 100644 files/ja/mozilla/firefox/performance_best_practices_for_firefox_fe_engineers/index.html delete mode 100644 files/ja/mozilla/firefox/privacy/index.html delete mode 100644 files/ja/mozilla/firefox/privacy/storage_access_policy/index.html delete mode 100644 files/ja/mozilla/firefox/privacy/tracking_protection/index.html delete mode 100644 files/ja/mozilla/firefox/security_best_practices_for_firefox_front-end_engi/index.html (limited to 'files/ja/mozilla/firefox') diff --git a/files/ja/mozilla/firefox/australis_add-on_compat/index.html b/files/ja/mozilla/firefox/australis_add-on_compat/index.html deleted file mode 100644 index fb7e362c1e..0000000000 --- a/files/ja/mozilla/firefox/australis_add-on_compat/index.html +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: Australis とアドオンの互換性 -slug: Mozilla/Firefox/Australis_add-on_compat -tags: - - Extensions -translation_of: Mozilla/Firefox/Australis_add-on_compat ---- -
{{FirefoxSidebar}}
- -

拡張機能の変更

- -

We've removed the add-ons toolbar (including the status-bar). 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. Add-ons made using the Add-on SDK should not need to worry about this change.

- -

We've removed the application (Firefox) menu. Instead, there is a new panel-based menu 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.

- -

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.

- -

The standalone stop reload buttons have been removed.

- -

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 toolbar.insertItem method, the toolbar.currentSet property, and the currentset attribute on toolbars. If possible, please stop relying on them. Instead, you should use the CustomizableUI module.

- -

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.

- -

Because of the new customization APIs, your toolbar buttons may not be direct children of a XUL <toolbar>; 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 toolbar.customizationTarget.

- -

Icon sizes in toolbars have changed, 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:

- - - -

When in the customization area (palette), the button will be wrapped in a toolbarpaletteitem with a place attribute set to palette. Putting it all together, your updated CSS might look like this:

- -
#my-addon-button {
-    list-style-image: url(icon16.png);
-}
-#my-addon-button[cui-areatype="menu-panel"],
-toolbarpaletteitem[place="palette"] > #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"] > #my-addon-button {
-        list-style-image: url(icon64.png);
-    }
-}
-
- -

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.

- -

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 addon-page has been removed as it no longer has any effect.

- -

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 overflows attribute to false on the item. The urlbar-container is not overflowable by default, for example. Items that are overflowed have the overflowedItem attribute set to true.

- -

The menu panel uses a 3-column grid layout. Items should either fit in a single grid column (toolbarbuttons 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 toolbaritems. In order to have the latter work correctly, you should use the panel-wide-item class on your toolbaritem.

- -

If your add-on provides a <toolbarbutton type="menu"/> or <toolbarbutton type="menu-button"/>, consider moving to a subview-based design, which will work much better in the menu panel. There's some documentation you can look at, as well as the implementation of the history widget.

- -

If your add-on provides a simple toolbarbutton then it should automatically be styled correctly in the menu panel, overflow panel and palette. If it provides a toolbaritem it is likely you will need to do additional work to make it look nice in places other than a toolbar.

- -

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 this bug 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.

- -

The class 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 anonid attribute with value "close-button".

- -

The close-icon 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.

- -

The BrowserToolboxCustomizeDone, BrowserToolboxCustomizeChange, and BrowserCustomizeToolbar global window functions have been removed. The customize events fired from the toolbox are now the preferred mechanism for hooking new logic into the customization feature.

- -

Add-on SDK Australis APIs

- -

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 reference documentation. Also note that the widget module has been deprecated in favor of the new APIs.

- -

Changes for themes

- -

We've changed the tab markup. If you style these differently, you'll need to check whether it still works.

- -

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).

- -

Support for small icons mode as well as text and icons mode have been removed.

- -

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:

- - - -

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.

- -

We've changed a few toolbarbutton IDs, such as those for the bookmark and history buttons. We also added new ones.

- -

The application (Firefox) menu has been removed.

- -

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.

- -

The navigation toolbar can no longer be hidden e.g. for update pages or in-content UI.
-  

- - - - - -

See Also

- - diff --git a/files/ja/mozilla/firefox/developer_edition/index.html b/files/ja/mozilla/firefox/developer_edition/index.html deleted file mode 100644 index 1f1c73209e..0000000000 --- a/files/ja/mozilla/firefox/developer_edition/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: Developer Edition -slug: Mozilla/Firefox/Developer_Edition -tags: - - Beta - - Bugs - - Developer Edition - - Latest -translation_of: Mozilla/Firefox/Developer_Edition ---- -
{{FirefoxSidebar}}
- -

Firefox Developer Edition は、ウェブ開発者向けの Firefox のバージョンです。以下の内容が含まれます:

- - - -

Developer Edition の新機能

- -

Developer Edition をダウンロード

- -

 

diff --git a/files/ja/mozilla/firefox/developer_edition/reverting/index.html b/files/ja/mozilla/firefox/developer_edition/reverting/index.html deleted file mode 100644 index c9f86b8e6f..0000000000 --- a/files/ja/mozilla/firefox/developer_edition/reverting/index.html +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: Reverting -slug: Mozilla/Firefox/Developer_Edition/Reverting -translation_of: Mozilla/Firefox/Developer_Edition/Reverting ---- -
{{FirefoxSidebar}}
- -

Developer Edition のテーマを元に戻す

- -

Developer Editionを使用したいが、FirefoxとFirefox Betaで使用されている 'Australis'テーマを使用したい場合は、通常のFirefoxテーマに切り替えることができます。「カスタマイズ」パネルを開き、「テーマ」をクリックし、「デフォルト」というラベルのテーマを選択します。

- -

{{EmbedYouTube("oiHt8T1Liyk")}}

- -

または、URLバーに "about:addons" と入力して「Appearance」を選択し、そこからテーマを切り替えます。

- -

Firefox Aurora に戻す

- -

Firefox Developer Editionでベータ版以前の機能をすべて使いたいが、他の変更を望まない場合は、古いFirefox Auroraのようなものに戻すことができます。これにより、アップグレード前のプロファイルとセッションデータも復元されます。それは2段階のプロセスです。この手順をこの順序で実行する必要があります。

- -
    -
  1. Developer EditionのPreferencesページを開いて、「Firefox Developer EditionとFirefoxを同時に実行する」をオフにします。 ブラウザを再起動するよう求められます
  2. -
  3. 再起動後、上記の「Developer Editionテーマを元に戻す」で説明したように、開発者エディションのテーマを元に戻すことができます
  4. -
- -

{{EmbedYouTube("8rEJn_hATE8")}}

diff --git a/files/ja/mozilla/firefox/enterprise_deployment_before_60/index.html b/files/ja/mozilla/firefox/enterprise_deployment_before_60/index.html deleted file mode 100644 index 262254fcf7..0000000000 --- a/files/ja/mozilla/firefox/enterprise_deployment_before_60/index.html +++ /dev/null @@ -1,210 +0,0 @@ ---- -title: エンタープライズ環境におけるFirefoxのデプロイ(Firefox 60 ESR 以前) -slug: Mozilla/Firefox/Enterprise_deployment_before_60 -tags: - - Firefox - - エンタープライズ - - デプロイ - - 管理者向け -translation_of: Mozilla/Firefox/Enterprise_deployment_before_60 ---- -
{{FirefoxSidebar}}
- -

このページでは、Mozilla Firefox を Windows および macOS コンピュータ上でエンタープライズ設定で管理するプロセスを、最初から最後までドキュメント化しようとしています。 ご不明な点がございましたら、エンタープライズワーキンググループメーリングリスト(enterprise@mozilla.org)にメールをお送りください。 さらに、リストに登録し、進行中のディスカッションに参加してください。

- -
:この記事では、Firefox 60 ESR 以前の Firefox のバージョンについて説明します。 Firefox 60以降でエンタープライズ環境用にデプロイするには、エンタープライズ環境での Firefox のデプロイを参照してください。
- -

さまざまな Firefox を選択する

- -

Rapid Release (RR)

- -

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.

- -

For the planned dates for upcoming releases, see the column 'release date' in the Future branch dates table in the Mozilla wiki.

- -

Extended Support Release (ESR)

- -

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.

- -

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 60 will be the next ESR

- -

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).

- -

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.

- -

インストール

- -
    -
  1. Get the full, redistributable installer from
    - http://www.mozilla.org/firefox/all/ (RR)
    - or
    - https://www.mozilla.org/firefox/organizations/all.html (ESR)
    - rather than the "stub" or "downloader" that you get by clicking the "Download" button.
  2. -
  3. Install using the software distribution method of your choice.
    - The command line option for a silent install is -ms
  4. -
  5. Optionally you can specify an INI file, for example to disable the placement of shortcuts and the installation of the MaintenanceService; see Installer Command Line Arguments.
  6. -
- -

構成・設定

- -
    -
  1. Find the Firefox program directory where the Firefox executable is located.
    - For example: -
      -
    • on Windows this is typically either: - -
        -
      • C:\Program Files\Mozilla Firefox 
      • -
      • or C:\Program Files (x86)\Mozilla Firefox
      • -
      -
    • -
    • on macOS it is typically: -
        -
      • /Applications/Firefox.app/Contents/MacOS
      • -
      -
    • -
    - If you are specifying a configuration INI file and have set InstallDirectoryName or InstallDirectoryPath, then use that path.
    - Subfolders mentioned below are relative to this program directory.
  2. -
  3. Create a JavaScript file that instructs to use a administrative config file at startup.
    - For best results, the filename should be early in the alphabet, for example; 00_admin-prefs.js
    - By convention this file is named autoconfig.js, but other filenames will work.
    - This file should be put inside: (see Changes Over Time) -
      -
    • on Windows: -
        -
      • defaults\pref
      • -
      -
    • -
    • on Mac: -
        -
      • Firefox.app/Contents/Resources/defaults/pref
      • -
      -
    • -
    • on Linux: -
        -
      1. Formerly: -
          -
        • defaults/pref
          - (Still working in Firefox 60.0a1)
        • -
        -
      2. -
      3. Presently: -
          -
        • browser/defaults/preferences
        • -
        -
      4. -
      -
    • -
    - -

    This autoconfig.js file must set these preferences:

    - -
    // Any comment. You must start the file with a single-line comment!
    -pref("general.config.filename", "mozilla.cfg");
    -pref("general.config.obscure_value", 0);
    - -
    -

    The first line of the autoconfig.js and mozilla.cfg is ignored.  The line shouldn't contain any configuration, nor multiline comment (/*...*/) without closing "*/".

    -
    -
  4. -
  5. Create a .cfg file in the Firefox program directory. By convention, mozilla.cfg, but it can be any file name really. It just has to match what is specified in general.config.filename preference above. Skip or comment out the first line, 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: -
    -
    pref
    -
    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". 
    -
    defaultPref
    -
    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". 
    -
    lockPref
    -
    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". Some config items require lockPref to be set, such as app.update.enabled. It will not work if it set with just pref.
    -
    clearPref
    -
    can be used to "blank" certain preferences. This can be useful e.g. to disable functions that rely on comparing version numbers.
    -
    - -
    -

    The first line of the autoconfig.js and mozilla.cfg is ignored.  The line shouldn't contain any configuration, nor multiline comment (/*...*/) without closing "*/".

    -
    -
  6. -
- -

See Customizing Firefox autoconfig files and Customizing Firefox autoconfig files continued for more detail. For fancier stuff like disabling UI elements, you may want to use the CCK2 extension.

- -

Example configuration file

- -

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 Knowledgebase.

- -
// Any comment. You must start the file with a comment!
-
-// 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
-defaultPref("browser.startup.homepage","data:text/plain,browser.startup.homepage=http://home.example.com");
-
-// 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("datareporting.policy.dataSubmissionEnabled", false);
-
-// Disable crash reporter
-lockPref("toolkit.crashreporter.enabled", false);
-Components.classes["@mozilla.org/toolkit/crash-reporter;1"].getService(Components.interfaces.nsICrashReporter).submitReports = false; 
-
- -

拡張機能のパッケージング

- -
    -
  1. Install the extension on a test machine. Look in about:support under Extensions to find the GUID.   This is absent in: FF 52.5.1 ESR
  2. -
  3. Look in the Profile directory (ex: %APPDATA%\Mozilla\Firefox\Profiles on Win7; to find it, click Show Folder in about:support), 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.
  4. -
  5. Decide how you want to deploy it. The simplest method is to drop the .xpi or folder into the program directory/distribution/extensions, 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 Integrating add-ons into Firefox/ for alternative methods.
  6. -
- -

Also keep in mind: Add-on scopes redux

- -

Changes Over Time

- -

Changes in Directory Structure

- -

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:

- - - -

Custom settings in defaults/pref 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 browser/defaults/preferences and redeploy.

- -

Mac Directory Change

- -

Due to Apple's stricter approach to software signing, as of about version 35 or so configuration files should now be placed relative to /Applications/Firefox.app/Contents/Resources (so mozilla.cfg should go there, and autoconfig.js under /Applications/Firefox.app/Contents/Resources/defaults/pref.)

- -

Changes in ESR 24 and newer with Adobe PDF Files

- -

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, even if an external viewer had already been configured. The name of the Content Type is also changed from Adobe Acrobat Document to Portable Document Format (PDF), which makes it difficult to locate via the Tools, Options, Applications tab. To disable this, set pdfjs.disabled to true as in the example file above.

diff --git a/files/ja/mozilla/firefox/firefox_esr/index.html b/files/ja/mozilla/firefox/firefox_esr/index.html deleted file mode 100644 index db1e60c146..0000000000 --- a/files/ja/mozilla/firefox/firefox_esr/index.html +++ /dev/null @@ -1,22 +0,0 @@ ---- -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 ---- -
{{FirefoxSidebar}}
- -

Firefox 延長サポートリリース (ESR) は、大規模展開している拡張サポートが必要な組織で使用する、デスクトップ版 Firefox の公式リリースに基づいています。他のリリースチャンネルとは異なり、ESR は 6 週間ごとに新しい機能で更新されるものではありません。代わりに、1 年以上サポートされており、主要なセキュリティまたは安定性の修正が加えられて更新されています。

- -

スケジュールと詳細は ESR 公式サイトで入手できます。

- -

Firefox ESR を導入している管理者は、Enterprise Working Group (EWG) のメーリングリストに登録することを強くお勧めします。

diff --git a/files/ja/mozilla/firefox/headless_mode/index.html b/files/ja/mozilla/firefox/headless_mode/index.html deleted file mode 100644 index 88e2da5052..0000000000 --- a/files/ja/mozilla/firefox/headless_mode/index.html +++ /dev/null @@ -1,267 +0,0 @@ ---- -title: ヘッドレスモード -slug: Mozilla/Firefox/Headless_mode -tags: - - Automation - - Firefox - - Mozilla - - QA - - Testing - - headless - - headless mode - - node.js -translation_of: Mozilla/Firefox/Headless_mode ---- -

ヘッドレスモードは、その名の通り Firefox を実行する便利な方法です — UI コンポーネントが表示されない点を除いて、Firefox は通常通り実行されます。ウェブサーフィンにはあまり役立たないかもしれませんが、自動テストには非常に有効です。この記事では、ヘッドレス Firefox の実行について知るべきことをすべて提供します。

- -

ヘッドレスモードを使用する

- -

このセクションではヘッドレスモードの使用方法について説明します

- -

基本的な使い方

- -

-headless フラグを含めることで、コマンドラインから Firefox をヘッドレスモードで実行できます。たとえば:

- -
/path/to/firefox -headless
- -

スクリーンショットを撮る

- -

Firefox 57以降、-screenshotフラグを使用してウェブサイトのスクリーンショットを撮ることができます。基本的な使い方は:

- -
/path/to/firefox -headless -screenshot https://developer.mozilla.com
- -

これにより、screenshot.pngというファイル名で800pxのビューポート幅を持つhttps://developer.mozilla.comの全画面スクリーンショットが作成され、アクティブなディレクトリに保存されます。

- -

暗黙的に -screenshot を使用している場合、-headlessを省略することができます。

- -
/path/to/firefox -screenshot https://developer.mozilla.com
- -

上記のデフォルト値を上書きするために、次のフラグ/機能を使用できます。

- - - -

たとえば、次のコマンドは、ビューポートの幅が800px、高さが1000pxのhttps://developer.mozilla.comのスクリーンショットをtest.jpgというファイル名で作成し、アクティブなディレクトリに保存します。

- -
/path/to/firefox -screenshot test.jpg  https://developer.mozilla.com --window-size=800,1000
- -

 

- -

ブラウザーサポート

- -

ヘッドレス Firefox は Linux 上の Fx55 以上と Windows/Mac 上の Fx56 以上で動作します。

- -

ヘッドレスモードで自動テストを実行する

- -

ヘッドレス Firefox の最も便利な使い方は、自動テストの実行です。つまり、テストプロセスをより効率的にできます。

- -

Node.js で Selenium

- -

ここで、Node.jsselenium-webdriver パッケージを使用して Selenium テストを作成します。このガイドでは、読者が Selenium と Webdriver、Node に精通しており、テスト環境をセットアップ済みであることを想定しています。そうでないなら、最初に Setting up Selenium in Node ガイドを読んでから戻ってきてください。

- -

まず、システムに Node と selenium-webdriver パッケージがインストールされていることを確かめてから、selenium-test.js と呼ばれる新しいファイルを作成し、以下の手順に従ってテストコードを入力してください。

- -
-

ノート: 代わりに、headless-examples repo をコピーできます。これはパッケージファイルも含んでいるので、npm install を実行するだけで必要な依存パッケージをインストールできます。

-
- -
    -
  1. -

    コードを追加していきましょう、このファイル内で、selenium-webdriver メインモジュールと firefox サブモジュールのインポートから始めます:

    - -
    var webdriver = require('selenium-webdriver'),
    -    By = webdriver.By,
    -    until = webdriver.until;
    -
    -var firefox = require('selenium-webdriver/firefox');
    -
  2. -
  3. -

    次に、Firefox Nightly を表す新しい binary オブジェクトを生成し、ヘッドレスモードで実行するために -headless 引数を追加します:

    - -
    var binary = new firefox.Binary(firefox.Channel.NIGHTLY);
    -binary.addArguments("-headless");
    -
  4. -
  5. -

    いよいよ Firefox のための新しいドライバーインスタンスを生成します。上記で作成したバイナリを使用してテストの実行を指定するオプションオブジェクトを含めるためには、setFirefoxOptions() を使用します。(このステップは Linux と Windows/Mac でヘッドレスモードがリリースされた後は不要です。しかし、Nightly 特有の機能としてテストしたい場合にはまだ役立ちます):

    - -
    var driver = new webdriver.Builder()
    -    .forBrowser('firefox')
    -    .setFirefoxOptions(new firefox.Options().setBinary(binary))
    -    .build();
    -
  6. -
  7. -

    Google 検索ホームページ上で簡単なテストを実行する次のコードを追加します:

    - -
    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();
    -
  8. -
  9. -

    最後に、次のコマンドでテストを実行します:

    - -
    node selenium-test
    -
  10. -
- -

これでおしまい! 少し経つと、コンソール上に "Test passed" というメッセージが表示されます。

- -

Myk Melez の Headless Firefox in Node.js with selenium-webdriver には、追加の便利な tips やヘッドレスモードで Node.js Selenium テストを実行するトリックが含まれています。

- -

Java で Selenium

- -
-

Note: これらの手順を書いてくれてありがとう、nicholas dipiazzaに感謝します!

-
- -

このガイドでは、Setting up Selenium in Node ガイドで説明したように、マシンに Geckodriver が既にあること、および Gradle プロジェクトをサポートする IDE があることを前提としています。

- -
    -
  1. -

    headlessfirefox-gradle.zip アーカイブ(ここのソースを参照)をダウンロードし、解凍してheadlessfirefoxフォルダをIDEにグラデルプロジェクトとしてインポートします

    -
  2. -
  3. -

    必要に応じてbuild.gradleファイルを編集して、selenium をそれ以降のバージョンに設定します。執筆時点では 3.5.3 を使用しました

    - -
    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'
    -}
    -
  4. -
  5. -

    HeadlessFirefoxSeleniumExample.javaファイルのwebdriver.gecko.driverプロパティをgeckodriverをインストールしたパスと等しくなるように編集します(下の15行目を参照)

    - -
    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();
    -   }
    - }
    -}
    -
  6. -
  7. -

    Javaクラスを実行すると、このページのHTMLコンテンツがコンソール/端末に表示されます

    -
  8. -
- -

Python で Selenium

- -

このガイドでは、Setting up Selenium in Nodeで説明したように、マシンにgeckodriverが既にあることを前提としています。

- -
    -
  1. -

    SeleniumのPythonクライアントの最新バージョンをインストールします

    -
  2. -
  3. -

    geckodriverをインストールした場所にパスを通すためには、11行目のexecutable_pathを設定し、次のように編集します

    - -
    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()
    -
  4. -
  5. -

    Pythonスクリプトを実行すると、このページのHTMLコンテンツがコンソール/端末に表示されます

    -
  6. -
- -

その他のテスト方法

- - - -

さらに、環境変数を設定できる限り、他の一般的なテストアプリで書かれた自動テストを実行するために、ヘッドレスFirefoxを使用することができます。

- -

トラブルシューティングとヘルプ

- -

ヘッドレスモードの実行でトラブルがあっても心配しないでください — ここで助けます。このセクションでは、追加の QA を載せることを想定しています。

- - - -

エンジニアに質問したいなら、Mozilla IRC#headless チャネルに行くのがベストです。バグを見つけた場合は、Mozilla Bugzilla で報告してください。

- -

関連項目

- - diff --git a/files/ja/mozilla/firefox/linux_compatibility_matrix/index.html b/files/ja/mozilla/firefox/linux_compatibility_matrix/index.html deleted file mode 100644 index 50adc5a551..0000000000 --- a/files/ja/mozilla/firefox/linux_compatibility_matrix/index.html +++ /dev/null @@ -1,480 +0,0 @@ ---- -title: Linux の互換性マトリックス -slug: Mozilla/Firefox/Linux_compatibility_matrix -translation_of: Mozilla/Firefox/Linux_compatibility_matrix ---- -
{{FirefoxSidebar}}
- -

次の表は、mozilla.org distributed Firefox ビルドの依存関係の利用可能なライブラリのバージョン、および/またはFirefoxのビルドを示しています。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ディストリビューションカーネルglibcglibgtk+2gtk+3pixmanstdc++GCCリリースEOL
Fedora 163.12.142.302.243.20.224.64.6Nov 2011Feb 2013
Fedora 173.32.152.322.243.40.244.74.7May 2012Jul 2013
Fedora 183.62.162.342.243.60.264.74.7Jan 2013Jan 2014
Fedora 193.92.172.362.243.80.304.84.8Jul 2013Jan 2015
Fedora 203.112.182.382.243.100.304.84.8Dec 2013Jun 2015
Fedora 213.172.202.422.243.140.324.94.9Dec 2014Dec 2015
Fedora 224.02.212.442.243.160.325.14.9, 5.1May 2015Jul 2016
Fedora 234.22.222.462.243.180.335.15.1Nov 2015Dec 2016
Fedora 244.52.232.482.243.200.346.16.1Jun 2016Aug 2017
Fedora 254.82.242.502.243.22.20.346.26.2Nov 2016Dec 2017
Fedora 264.112.252.522.243.22.160.347.17.1Jul 2017Jun 2018
Fedora 274.132.262.542.243.22.240.347.27.2Nov 2017?
Fedora 284.162.272.562.243.22.300.348.0.18.0.1May 2018?
RHEL 62.6.322.122.282.24N/A0.324.44.4Nov 2010Nov 2020
RHEL 73.102.172.422.243.140.324.84.8Jun 2014Jun 2024
openSUSE 11.42.6.372.112.282.223.00.204.54.5Mar 2011Jul 2015
openSUSE 12.13.12.142.302.243.20.224.64.6Nov 2011May 2013
openSUSE 12.23.42.152.322.243.40.244.74.7Jul 2012Jan 2014
openSUSE 12.33.72.172.342.243.60.284.74.7Mar 2013Sep 2014
openSUSE 13.13.112.182.382.243.100.304.84.8Nov 2013Jan 2016
openSUSE 13.23.162.192.422.243.140.324.84.8, 4.9Nov 2014Jan 2017
openSUSE Leap 42.14.12.192.442.243.160.325.24.8, 5.2Nov 2015May 2017
openSUSE Leap 42.24.42.222.48.22.243.20.90.345.3.14.8.5, 5.3.1, 6.1.1Nov 2016Jan 2018
openSUSE Leap 42.34.42.222.48.22.243.20.100.345.3.14.8.5, 5.3.1, 6.2.1, 7.1.1Jul 2017Jan 2019
Debian 62.6.322.112.242.20N/A0.164.44.1, 4.3, 4.4Feb 2011May 2014 / Feb 2016 (LTS)
Debian 73.22.132.322.243.40.264.74.4, 4.6, 4.7May 2013Apr 2016 / May 2018 (LTS)
Debian 83.162.192.422.243.140.324.94.8, 4.9Apr 2015Jun 2018 / Jun 2020 (LTS)
Debian 94.92.242.502.243.220.346.36.3Jun 2017Jun 2020 / Jun 2022 (LTS)
Ubuntu 12.04 LTS3.22.152.322.243.40.304.64.4, 4.5, 4.6Apr 2012Apr 2017
Ubuntu 14.04 LTS3.132.192.402.243.100.304.84.4, 4.6, 4.7, 4.8Apr 2014Apr 2019
Ubuntu 16.04 LTS4.42.232.482.243.180.335.34.7, 4.8, 4.9, 5.3Apr 2016Apr 2021
Ubuntu 18.04 LTS4.152.272.562.243.22.300.348-201804147.3Apr 2018Apr 2023
SLES 11 (SP4)3.02.112.222.18N/A0.244.6, 5.34.3Mar 2009Mar 2019
SLES 12 (SP2)4.42.222.48.22.243.20.90.346.2.14.8.5Oct 2014Oct 2024
- -

注意

- -

赤い背景は、現在のバージョンのFirefoxとの互換性がないことを表しています。EOL列では、EOL列の末尾のディストリビューションバージョンを表します。
-
- 黄色の背景はESR60との互換性を表しています
-
- 緑色の背景は現在のリリース (執筆時点では60) との互換性があることを表しています
-
- より緑色の背景は、現在のmozilla-central (執筆時点では62) との互換性があることを表しています。

- -

テーブルは https://github.com/glandium/firefox-linux-compat-matrix のスクリプトとデータを使って生成されています。

diff --git a/files/ja/mozilla/firefox/multiple_profiles/index.html b/files/ja/mozilla/firefox/multiple_profiles/index.html deleted file mode 100644 index d495fe06af..0000000000 --- a/files/ja/mozilla/firefox/multiple_profiles/index.html +++ /dev/null @@ -1,245 +0,0 @@ ---- -title: Multiple Firefox profiles -slug: Mozilla/Firefox/Multiple_profiles -tags: - - Firefox - - QA - - イントロ - - ガイド - - プロファイル - - 初心者 -translation_of: Mozilla/Firefox/Multiple_profiles ---- -
{{FirefoxSidebar}}
- -

Firefox のプロファイルは、ユーザーが Firefox のコピーに作成またはインストールした設定、カスタマイズ、アドオン、その他のパーソナライズの集合です。プロファイルに関する詳細は、Mozilla のエンドユーザサポートサイトを参照してください。

- -

複数のプロファイルを持つ理由

- -

カジュアルなユーザーは、家族ごとに異なるプロファイルを使用することができます。プロファイルを別にすると、それぞれの人が独自のブックマーク、設定、アドオンを持つことができます。

- -

Web 開発者は Web サイト、アプリケーション、またはさまざまな Firefox チャンネル上の他のプロジェクトをテストするためのセカンダリプロファイルを必要とするかもしれません。たとえば、Web 開発用にいくつかの拡張機能をインストールしたいが、汎用の Web ブラウジング用にはインストールしたくないかもしれません。 Nightly チャンネルを使用している間、アドオン開発者がそれらを更新する機会を得るまで、新しい API の変更と一時的に互換性がなくなったアドオンが発生することがあります。このようなアドオンは、他のプロファイルで使用できるようにしながら、 Nightly のためのプロファイルから削除できます。

- -

QA、テスト、およびバグトリアージングの貢献者のために、それぞれ独自のプロファイルを持つ複数の開発版 Firefox をインストールしたい場合があります。テスト用の新しいプロファイルを作成すると、環境設定、ブックマーク、および履歴が失われないようにすることができます。新しいプロファイルを設定するには少し時間がかかります。完了すると、すべての Firefox バージョンが別々に更新され、同時に実行できます。

- -

利用可能なブラウザ開発チャンネル

- -

4つの利用可能なチャンネルがあり、それぞれは異なるレベルの安定性と開発レベルに対応しています。 4つのチャンネルは Release, Beta, Developer Edition, and Nightlyです。 Release チャンネルは "公式なリリース" であり、たいていのユーザーに推奨されます。 しかしながら、より冒険好きなユーザーに対しては、ほかの3つのチャンネルを使用して Firefox の新機能を見て、試すことができます。 Beta チャンネルは次のリリースで公開される予定の機能を含んでおりテストの最終段階にあたります。 Aurora (Developer Edition) はまだ Beta ほど安定していない実験的な機能を含んでいます。 Nightly は Firefox 開発者からの最新のコードが含まれており、最も安定していないチャンネルです。

- -

サードパーティのツール

- -

組み込みのプロファイルマネージャーと外部のプロファイルマネージャーに加えて、複数のプロファイルで作業するのを容易にするサードパーティ製のツールがいくつかあります。

- -
-

このリストは決して網羅的ではありません。発見した便利なツールをリストに追加してください!

-
- -

Mac OS X

- - - -

プロファイル管理

- -

Firefox の実行中のプロファイルの決定

- -

Windows, macOS or Linux で現在実行している Firefox インスタンスのプロファイルを決定するには、次のようにします。

- -
    -
  1. ブラウザーの URL 検索バーに about:profiles と入力します。
  2. -
  3. 表示されるページでは、すべてのプロファイルの一覧が表示されます。 それぞれの先頭は "プロファイル:" に続いてそのプロファイルの名前が表示されています。
  4. -
  5. 現在実行している Firefox インスタンスのプロファイルの下には "これは使用中のプロファイルです" という太字のテキストが表示されます。 例えば、 "プロファイル: Suzie" という項目の下にそのテキストがあれば、 Suzie という名前のプロファイルを実行していることになります。
  6. -
- -

希望のプロファイルで Firefox を起動する

- -

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 exit/quit/terminate all running instances of Firefox, FirefoxDeveloperEdition or Nightly.  Then follow the instructions below, applicable to your operating system.

- -

Windows

- -
Windows XP
- -
    -
  1. Click the Start button.
  2. -
  3. Click "Run".
  4. -
  5. -

    Type firefox --ProfileManager.

    -
  6. -
- -
Windows Vista/7
- -
    -
  1. Click the Start button.
  2. -
  3. Click the search bar at the bottom.
  4. -
  5. -

    Type firefox --ProfileManager.

    -
  6. -
- -
Windows 8/8.1
- -
    -
  1. Press "Windows + R" on your keyboard.
  2. -
  3. Type firefox --ProfileManager.
  4. -
- -

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.

- -

Linux

- -

If Firefox is already included in your Linux distribution, or if you have installed Firefox with the package manager of your Linux distribution:

- -
    -
  1. At the top of the Firefox window, click on the File menu and select Quit.
  2. -
  3. In Terminal run firefox --ProfileManager
  4. -
- -

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.

- -

macOS

- -
    -
  1. Run the Terminal application, which is found in Applications/Utilities.
  2. -
  3. Type or paste in the path to Firefox, followed by .app/Contents/MacOS/firefox.  For example, if Firefox is installed in the recommended location, you would enter /Applications/Firefox.app/Contents/MacOS/firefox.
  4. -
  5. If you have the path to your desired profile handy, enter a space character, followed by -profile 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 --profilemanager.  This will present the Profile Manager window in which you can make your selection.
  6. -
  7. Hit return.
  8. -
- -

Here is a complete example Terminal command from steps 2-3:

- -
/Applications/Firefox.app/Contents/macOS/firefox -profile /Users/Suzie/Library/Application\ Support/Firefox/Profiles/r99d1z7c.default
- -

If you want to do this frequently and more easily, you may wish to create an Automator application, as explained in this tutorial.

- -

プロファイルの作成

- -

Creating a profile through the Profile Manager

- -

These instructions should be the same for all operating systems.

- -
    -
  1. To start the Create Profile Wizard, click "Create Profile..." in the Profile Manager.
  2. -
  3. 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.
  4. -
  5. You can also choose where to store the profile on your computer. To select storage location, click Choose Folder....
  6. -
  7. 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.
  8. -
  9. To create the new profile, click Finish.
  10. -
- -

Creating a profile through the Firefox browser

- -

You can create a new Firefox profile directly from the browser.

- -
    -
  1. Type about:profiles into the browser URL search bar
  2. -
  3. On the page, click Create a New Profile button
  4. -
  5. Read the introduction, and click Next
  6. -
  7. 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.
  8. -
  9. Optionally, to change where the profile will be stored on your computer, click Choose Folder...
  10. -
  11. To create the new profile, click Finish.
  12. -
- -

プロファイルの削除

- -
    -
  1. In the Profile Manager, select the profile to remove, and click Delete Profile....
  2. -
  3. Confirm that you wish to delete the profile: -
      -
    • 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.
    • -
    • Delete Files removes the profile and its files, including the profile bookmarks, settings, passwords, etc.
      -
      - {{ warning("If you use the \"Delete Files\" option, the profile folder, and files will be deleted. This action cannot be undone.") }}
    • -
    • Cancel interrupts the profile deletion.
    • -
    -
  4. -
- -

プロファイルの名前変更

- -
    -
  1. In the Profile Manager, select the profile you want to rename, and then click "Rename Profile".
  2. -
  3. Enter a new name for the profile and click on OK.
  4. -
- -
-

Note: The folder containing the files for the profile is not renamed.

-
- -

オプション

- -

オフライン作業

- -

Choosing this option loads the selected profile, and starts Firefox offline. You can view previously viewed web pages, and experiment with your profile.

- -

Don't ask at startup

- -

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.

- -
-

Note: To access other profiles after selecting this option, you must start the Profile Manager first.

-
- -

プロファイルの使用

- -

Windows

- -

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:

- -
    -
  1. Right-click the icon and choose "Properties".
  2. -
  3. 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.
  4. -
  5. After the closing quote, add -ProfileManager.
  6. -
  7. Click Ok.
  8. -
- -

Now whenever you double click that icon, the profile manager should appear, allowing you to choose which profile you'd like to use.

- -

If you want individual icons to launch specific profiles, you will need to edit the "Target" of each icon. To do this:

- -
    -
  1. Right-click the icon and choose "Properties".
  2. -
  3. 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.
  4. -
  5. To permanently set a specific profile, add -p PROFILE_NAME to the target path, but outside of the quotes, replacing "PROFILE_NAME" with the actual profile name you chose.
  6. -
  7. If you would also like to allow multiple instances of Firefox to run at the same time, add -no-remote after the profile name.
  8. -
- -

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.

- -

Linux

- -

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: Gnome 3 Custom application launcher. 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.

- -

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.

- -
    -
  1. Set the "command" text field to target the executable file, likely "/usr/bin/firefox", and add the -p parameter.
  2. -
- -

If you want individual icons to launch specific profiles, you will need to set the command line for your new launcher. To do this:

- -
    -
  1. Set the "command" text field to target the executable file, likely "/usr/bin/firefox", and add the -p PROFILE_NAME parameter, replacing "PROFILE_NAME" with the specific profile.
  2. -
  3. Repeat as necessary, for each additional profile you want to set.
  4. -
  5. If you would also like to allow multiple instances of Firefox to run at the same time, add "-no-remote" after the profile name.
  6. -
- -

Mac OS X

- -

You can find a useful tutorial to set up custom launchers here: Managing Multiple Firefox Profiles in OSX. 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.

- -

さまざまな Firefox チャンネル用に複数のプロフィールを設定する

- -

This section will be especially helpful if you are a developer, wanting to work with multiple channels, and each having their separate launcher.

- -

Windows

- -

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 Windows Launcher.

- -

Linux

- -

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 here. 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 -no-remote part to the end of the command field, so that you could run multiple instances at the same time.

- -

Mac OS X

- -

You can find a useful tutorial to set up custom launchers here: Managing Multiple Firefox Profiles in OSX. 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.

diff --git a/files/ja/mozilla/firefox/multiprocess_firefox/index.html b/files/ja/mozilla/firefox/multiprocess_firefox/index.html deleted file mode 100644 index 3adde0c9b6..0000000000 --- a/files/ja/mozilla/firefox/multiprocess_firefox/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: マルチプロセス Firefox -slug: Mozilla/Firefox/Multiprocess_Firefox -translation_of: Mozilla/Firefox/Multiprocess_Firefox ---- -

現バージョンのデスクトップ版 Firefox は、オペレーティングシステムにおけるプロセス 1 つでブラウザ全体を実行しています。特に、ブラウザ UI (別名 "chrome code") の JavaScript を実行するプロセスと Web ページ (別名 "content" または "web content") のコードを実行するプロセスが同じです。
-
- 将来のバージョンの Firefox は、ブラウザ UI のプロセスと web content のプロセスを分離します。このアーキテクチャの第 1 段階では、すべてのブラウザタブを同一のプロセスで実行して、ブラウザ UI を別のプロセスで実行する予定です。また将来の段階で、複数の content プロセスを持つようにする予定です。マルチプロセス Firefox を提供するプロジェクトは Electrolysis と呼ばれ、e10s と略されることがあります。

- -

一般的な Web ページは、マルチプロセス Firefox の影響を受けません。Firefox そのものや Firefox アドオンの開発に携わる人々は、web content に直接アクセスできる機能に依存するコードを使用している場合に影響を受けます。

- -

content へ直接アクセスせずに、chrome JavaScript では メッセージマネージャ を使用して content にアクセスしなければなりません。容易に移行できるようにするため、クロスプロセスオブジェクトラッパーアドオン開発者向けの互換性 shim を実装しました。あなたがアドオン開発者で影響を受けるかがわからない場合は、マルチプロセス Firefox を扱うためのガイドをご覧ください。

- -

現在マルチプロセス Firefox は Firefox Developer Edition で、既定で有効です。

- -
-
-
-
-
技術概要
-
マルチプロセス Firefox がどのように実装されているかを、高レベルから概観します。
-
用語
-
マルチプロセス Firefox で使用する用語のリファレンスです。
-
メッセージマネージャ
-
chrome と content の間の通信に使用するオブジェクトのガイドです。
-
SDK ベースのアドオン
-
Add-on SDK を使用して開発したアドオンのマイグレーション方法です。
-
URI ごとの読み込み先
-
どの URI (chrome:、about:、file:、resource:) がどのプロセスに読み込まれるかのクイックガイドです。
-
-
- -
-
-
マルチプロセス化を行う理由
-
なぜマルチプロセス Firefox を実装するか? その答えはパフォーマンス、セキュリティ、安定性です。
-
アドオンのマイグレーションガイド
-
あなたがアドオン開発者でしたら、アドオンが影響を受けるかを突き止めてコードの更新方法を確認してください。
-
クロスプロセスオブジェクトラッパー
-
クロスプロセスオブジェクトラッパーは、chrome code が同期的に content にアクセスする機能を提供する、マイグレーション支援措置です。
-
content プロセスのデバッグ
-
frame やプロセスのスクリプトを含む、content プロセスで実行しているコードをデバッグする方法です。
-
マルチプロセス化された Firefox におけるタブの選択方法
-
マルチプロセス化された Firefox ではタブの選択方法が異なります。
-
-
-
- -
-
-
-
-
chrome スクリプトの制限
-
chrome code で実施できなくなることと、その修正方法の実例です。
-
-
- -
-
-
frame スクリプトの制限
-
frame スクリプトで実施できなくなることと、その代替手段の実例です。
-
-
-
- -
-

問い合わせ先

- -

プロジェクトについて詳しく知り、参加するか疑問点を尋ねてください。

- - diff --git a/files/ja/mozilla/firefox/multiprocess_firefox/message_manager/index.html b/files/ja/mozilla/firefox/multiprocess_firefox/message_manager/index.html deleted file mode 100644 index 869474d44f..0000000000 --- a/files/ja/mozilla/firefox/multiprocess_firefox/message_manager/index.html +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: Message manager -slug: Mozilla/Firefox/Multiprocess_Firefox/Message_Manager -tags: - - NeedsTranslation - - TopicStub -translation_of: Mozilla/Firefox/Multiprocess_Firefox/Message_Manager ---- -

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.

- -

These guides explain how to use message managers in multiprocess Firefox.

- -

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.

- -
-

Guides

- -
- - - -
- -
-

API reference

- -
- - - -
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 deleted file mode 100644 index 5e00266603..0000000000 --- a/files/ja/mozilla/firefox/multiprocess_firefox/message_manager/message_manager_overview/index.html +++ /dev/null @@ -1,444 +0,0 @@ ---- -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 ---- -
-

マルチプロセスの Firefo では 2 つのプロセスが存在します。

- - - -

Message manager はあるプロセス上の chrome 権限 JavaScript がほかのプロセス上の Chrome 権限 JavaScript と通信することを可能にします。

- -

この記事では種類の違う message manager の説明、アクセス方法、使いどころの説明をします。

-
- -

トップレベルにおいて、2つの違う種類の message manager が存在します。

- - - -

Frame message managers

- -

マルチプロセスの Firefo では、chrome コードが Web コンテンツにアクセスする必要が出た時に、以下のように使います。

- - - -
-

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 similar but different kind of script.

-
- -

So fundamentally, frame message managers enable chrome code to:

- - - -

There are various types of frame message managers, as depicted in this diagram:

- -

- -

This diagram shows the setup when there are 2 browser windows open, one with 2 tabs open and one with 1 tab open.

- -

Chrome process

- -

In the chrome process, there's a hierarchy of frame message managers: the global frame message manager, window message managers, and browser message managers.

- -

Global frame message manager

- - - - - - - - - - - - - - - - -
Description -

There's a single global frame message manager in the chrome process.

- -

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.

- -

Its most important functions and attributes are:

- -

childCount : contains the number of children (typically, browser windows)

- -

getChildAt() : get the child at the given index

- -

loadFrameScript() : load a frame script into every tab in the browser

- -

broadcastAsyncMessage() : send a message to frame scripts

- -

addMessageListener() : start listening to a specific message from all frame scripts

- -

removeMessageListener() : stop listening to a specific message

-
Interfaces -

nsIFrameScriptLoader

- -

nsIMessageListenerManager

- -

nsIMessageBroadcaster

-
How to access -

Access it using Components.classes:

- -
-// chrome script
-let globalMM = Cc["@mozilla.org/globalmessagemanager;1"]
-  .getService(Ci.nsIMessageListenerManager);
- -

You can also access it as the mm property of Services.jsm, if you are in the parent process.

-
- -

Window message manager

- - - - - - - - - - - - - - - - -
Description -

There's a window message manager for every browser window: two, in the diagram above.

- -

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.

- -

Its most important functions and attributes are:

- -

childCount : contains the number of children (typically, browser tabs)

- -

getChildAt() : get the child at the given index

- -

loadFrameScript() : load a frame script into every tab in this window

- -

broadcastAsyncMessage() : send a message to all frame scripts in this window

- -

addMessageListener() : start listening to a specific message from frame scripts

- -

removeMessageListener() : stop listening to a specific message

-
Interfaces -

nsIFrameScriptLoader

- -

nsIMessageListenerManager

- -

nsIMessageBroadcaster

-
How to access -

You can access it as a property of the browser window:

- -
-// chrome script
-let windowMM = window.messageManager;
-
- -

Browser message manager

- -
-

Note that in this context, "browser" refers to the XUL <browser> object, which is a frame that hosts a single Web document. It does not refer to the more general sense of a Web browser.

-
- - - - - - - - - - - - - - - - -
Description -

Finally, there's a browser message manager for every open content tab: three, in the diagram above.

- -

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.

- -

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.

- -

Its most important functions are:

- -

loadFrameScript() : load a frame script into this browser frame (tab)

- -

sendAsyncMessage() : send a message to all frame scripts in this browser frame

- -

addMessageListener() : start listening to a specific message from frame scripts

- -

removeMessageListener() : stop listening to a specific message

-
Interfaces -

nsIProcessChecker

- -

nsIFrameScriptLoader

- -

nsIMessageListenerManager

- -

nsIMessageSender

-
How to access -

The browser message manager can be accessed as a property of the XUL <browser> element:

- -
-// chrome script
-let browserMM = gBrowser.selectedBrowser.messageManager;
-
- -

Content process

- -

Content frame message manager

- - - - - - - - - - - - - - - - -
Description -

There's a content frame message manager for every open tab. It's the content-side end of frame message manager conversations.

- -

Frame scripts are loaded into the content frame message manager scope, and messages from chrome message managers end up here.

- -

The content frame message manager provides the global object for frame scripts (but note that there is trickery to ensure that top-level variables defined by frame scripts are not shared).

- -

Frame scripts can use this object to send messages to the chrome process, and to receive messages from the chrome process.

- -

Its most important attributes and functions are:

- -

content : access the DOM window hosted by the tab

- -

docShell : access the top-level docshell

- -

Components : access privileged objects and APIs

- -

addEventListener() : listen to DOM events

- -

addMessageListener() : receive messages from the chrome process

- -

sendAsyncMessage() : send asynchronous messages to the chrome process

- -

sendSyncMessage() : send synchronous messages to the chrome process

-
Interfaces -

nsIDOMEventTarget

- -

nsIMessageListenerManager

- -

nsIMessageSender

- -

nsISyncMessageSender

- -

nsIContentFrameMessageManager

-
How to accessThe content frame message manager is the global object in frame scripts.
- -

Process message managers

- -

Process message managers はプロセス境界を越え、異なるプロセスと通信することを可能にします。マルチプロセスの Firefo のコンセプトは次の通り。

- - - -

実用的な目的で、マルチプロセスの Firefo の親プロセスは chrome プロセスで、子プロセスは コンテンツプロセスです。

- -

各子プロセスは、single child process message manager (CPMM) を持ちます。それに加え、親プロエスでは child-in-process message manager (CIPMM) をもっています。

- -

各子プロセスの message manager は、親プロセスに対応する parent process message manager (PPMM) を持っています。

- -

親プロセスには 1つの global parent process message manager (GPPMM) をもっており、それがすべての親プロセスの message manager に対するアクセスを提供します。2 つの子プロセスを持つと以下の図のように構築されます。

- -

- -

GPPMM を使って、CIPMM とすべての CPMM にブロードキャストすることができます。PPMM は対応する CPMM にだけメッセージを送信できます。CPMM では親プロセスにメッセージを送信できます。まず初めに対応する PPMM が受信でき、次に GPPMM が受信します。
-
- 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).

- -

Parent process

- -

Global parent process message manager

- - - - - - - - - - - - - - - - -
Description -

The global parent process message manager (GPPMM) is global to the parent process.

- -
    -
  • Messages sent using the GPPMM get sent to all CPMMs in all child processes.
  • -
  • Process scripts loaded using the GPPMM get loaded in all child processes.
  • -
- -

Its most important functions and attributes are:

- -

childCount : contains the number of children (child processes, plus the in-content child)

- -

getChildAt() : get the child at the given index

- -

loadProcessScript() : load a process script into every content process

- -

broadcastAsyncMessage() : send a message to all process scripts

- -

addMessageListener() : start listening to a specific message from process scripts

- -

removeMessageListener() : stop listening to a specific message

-
Interfaces -

nsIProcessScriptLoader

- -

nsIMessageListenerManager

- -

nsIMessageBroadcaster

-
How to access -

You can access the GPPMM with code like this:

- -
-// parent process
-let ppmm = Cc["@mozilla.org/parentprocessmessagemanager;1"]
-           .getService(Ci.nsIMessageBroadcaster);
- -

You can also access it as the ppmm property of Services.jsm, if you are in the parent process.

-
- -

Parent process message manager

- - - - - - - - - - - - - - - - -
Description -

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.

- -
    -
  • Messages sent using the PPMM are received only by the corresponding CPMM
  • -
  • Scripts loaded using the PPMM are loaded only into the corresponding child process.
  • -
- -

Its most important functions are:

- -

loadProcessScript() : load a process script into the content process

- -

broadcastAsyncMessage() : send a message to process scripts

- -

addMessageListener() : start listening to a specific message from process scripts

- -

removeMessageListener() : stop listening to a specific message

-
Interfaces -

nsIProcessChecker

- -

nsIProcessScriptLoader

- -

nsIMessageListenerManager

- -

nsIMessageSender

-
How to access -

You can access a PPMM using the getChildAt() function in the GPPMM:

- -
-// parent process
-let ppmm = Services.ppmm.getChildAt(1);
-
- -

Child process

- -

Child process message manager

- - - - - - - - - - - - - - - - -
Description -

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.

- -

Its most important attributes and functions are:

- -

Components : access privileged objects and APIs

- -

addMessageListener() : receive messages from the parent process

- -

sendAsyncMessage() : send asynchronous messages to the parent process

- -

sendSyncMessage() : send synchronous messages to the parent process

-
Interfaces -

nsIMessageListenerManager

- -

nsIMessageSender

- -

nsISyncMessageSender

- -

nsIContentProcessMessageManager

-
How to access -

Code running in a child process can access the CPMM with code like this:

- -
-// child process script
-let cpmm = Cc["@mozilla.org/childprocessmessagemanager;1"]
-           .getService(Ci.nsISyncMessageSender);
- -

You can also access it as the cpmm property of Services.jsm, if you are in the child process.

-
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 deleted file mode 100644 index c94bbd1737..0000000000 --- a/files/ja/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Web コンテンツの互換性 -slug: Mozilla/Firefox/Multiprocess_Firefox/Web_content_compatibility -translation_of: Mozilla/Firefox/Multiprocess_Firefox/Web_content_compatibility ---- -
{{FirefoxSidebar}}
- -

Firefoxにマルチプロセス機能を導入するには、Webコンテンツにシームレスで目に見えないものが必要ですが、過去の挙動からの例外や微妙な変更があります。 この資料では、遭遇する可能性のある既知の相違点について説明します。

- -

イベント

- -

ここでは、マルチプロセスのFirefoxの実装によって動作が変更されたイベントに関する情報を見つけることができます。

- -

<option> から <select> へイベントがバブルしない

- -

以前より、Firefoxはキーボードとマウスのイベントを {{HTMLElement("option")}} 要素から {{HTMLElement("select")}} 要素にバブルアップさせました。この動作は多くのブラウザで矛盾(たとえば、イベントがChromeでバブルアップしないなど)しています。 Web互換性を高めるため(加えて技術的な理由のため)に、Firefoxがマルチプロセスモードで、<select>要素がドロップダウンリストとして表示されている場合、これらのイベントはバブルアップしません。<select>がインラインで表示され、multiple属性が定義されているか、size属性が1より大きい値に設定されている場合、これらのイベントはバブルアップします。
-
- イベントの {{HTMLElement("option")}} 要素を見るのではなく、{{HTMLElement("select")}} の {{event("change")}} イベントを監視する必要があります。詳細は {{bug(1090602)}} を参照してください。

- -

関連情報

- - 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 deleted file mode 100644 index d4eccacf5a..0000000000 --- a/files/ja/mozilla/firefox/multiprocess_firefox/which_uris_load_where/index.html +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: URIのロードする先 -slug: Mozilla/Firefox/Multiprocess_Firefox/Which_URIs_load_where -translation_of: Mozilla/Firefox/Multiprocess_Firefox/Which_URIs_load_where ---- -
{{FirefoxSidebar}}
- -

最初にページのURIスキームに基づいて、ブラウザは Chrome プロセスまたはコンテンツプロセスでページを読み込むかどうかを決定できます。一部のスキームでは、デフォルトの動作を変更できます。

- - - - - - - - - - - - - - - - - - - - - - - - - - -
スキーム振る舞い
about: -

By default, about: pages are always loaded in the chrome process. However, when you register a new about: page, you can change this default.

- -

Two new flags are defined in nsIAboutModule:

- -
    -
  • URI_CAN_LOAD_IN_CHILD: the page will be loaded in the same process as the browser that has loaded it.
  • -
  • URI_MUST_LOAD_IN_CHILD: the page will always be loaded in a child process.
  • -
- -

To use one of these flags, return it from your implementation of getURIFlags in the code that registers the about: URI.

- -

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 - Bug 1257201.

-
chrome: -

By default, chrome: pages are always loaded in the chrome process. However, when you register a new chrome: page, you can change this default.

- -

Two new flags are defined in the chrome.manifest file:

- -
    -
  • remoteenabled: the page will be loaded in the same process as the browser that has loaded it.
  • -
  • remoterequired: the page will always be loaded in a child process.
  • -
-
file: -

常にコンテンツプロセスに読み込まれます。

- -

注: これは file: という意味ではなく、コンテンツプロセスのコードでURIを自由に使用することができます。 サンドボックス化は特定のディレクトリをブラックリストに載せ、今後の変更により file: URIを通常のWebコンテンツとは別の独立したコンテンツプロセスに制限する可能性があります。bug 1187099 で、これがプロファイルディレクトリからファイルをロードしようとしているアドオンにどのように影響するかを見てください。

-
resource:常にコンテンツプロセスに読み込まれます。
diff --git "a/files/ja/mozilla/firefox/multiprocess_firefox/\347\233\256\347\232\204/index.html" "b/files/ja/mozilla/firefox/multiprocess_firefox/\347\233\256\347\232\204/index.html" deleted file mode 100644 index b9635595c4..0000000000 --- "a/files/ja/mozilla/firefox/multiprocess_firefox/\347\233\256\347\232\204/index.html" +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: マルチプロセス化を行う理由 -slug: Mozilla/Firefox/Multiprocess_Firefox/目的 -translation_of: Mozilla/Firefox/Multiprocess_Firefox/Motivation ---- -

Firefoxがコンテンツを別のプロセスで動作するようにするには、3つの目的があります。:それは、パフォーマンス、セキュリティ、安定性です

- -

パフォーマンス

- -

Mozilla は過去2年間、ブラウザの応答性の向上に注力してきました。その目的はプチフリ、つまり大きなページをロードしているときやタイピング中、もしくはスクロール中にブラウザがフリーズしたように見える状況を減らすことにありました。近年、応答性はスループットよりも重要になりつつあります。応答性の向上に関する様々な改良は、Snappy project の一部として達成されました。主な点を挙げると以下の通りになります:

- - - -

すぐにできる改良の多くは成されており、残った問題は修正が難しい物ばかりでした。例えば JavaScript の実行やメインスレッドで行われるレイアウト処理などです。これらはイベントループをブロックするのですが、別のプロセスへ分離するには難しい処理でもあります。これらの処理は DOM のようなデータにアクセスする必要がありますが、これらのデータはスレッドセーフではないからです。他の選択肢として、イベントループを JavaScript の処理の中に入れる事も検討しましたが、Firefox  の他の部分(アドオンではありません)によって難しい事がわかりました。

- -

Web コンテンツを別のプロセスに分離する事は、良い代替策でした。スレッドを利用するアプローチと同様、Firefox は JavaScript やレイアウト処理がコンテントプロセスで行われている間に イベントループを実行できる上に、DOM やコンテンツデータにアクセスしない UI のコードをスレッドセーフにしなくても済みます。その反面、Firefox の UI プロセスは明示的にメッセージパッシングを行わないとコンテンツデータにアクセスできなくなります。

- -

このトレードオフはいくつかの理由から許容できると考えています:

- - - -

セキュリティ

- -

Firefox に攻撃可能なバグがあった場合、それを利用してユーザのコンピュータを乗っ取ることが可能です。この問題の解決策として最も強力なものは、サンドボックス化です。 技術的にはサンドボックス化にマルチプロセス化は必要ありません。しかしシングルプロセスの Firefox 上でサンドボックス化を行っても、あまり有用ではありません。サンドボックスはあくまでプロセスが、通常のプロセスがしないような振る舞いをするのを阻止するための機能です。アドオンがインストールされている場合が典型的ですが、Firefox の通常プロセスはネットワーク通信やファイルへのアクセスを行います。そのため、シングルプロセスの Firefox では制限をうまく掛けることが難しくなっています。

- -

マルチプロセス化したFirefoxでのコンテンツプロセスは、サンドボックス化されます。通常、コンテンツプロセスはファイルシステムに直接アクセスすることはありません。そのような場合はメインプロセスに対してファイルアクセスリクエストを送ります。メインプロセスは、そのリクエストが妥当なものかを検証できるため、コンテンツプロセスに対するサンドボックスの制限は極めて厳しいものなります。その結果として、Firefox にセキュリティホールを作ることが難しくなると期待されます。

- -

安定性

- -

Web ページ中で実行されるプログラムがクラッシュした場合、ブラウザ全体が停止してしまします。マルチプロセス化することによって、停止するのはクラッシュしたプログラムの動作するコンテントプロセスのみとなります。

- -
-

このページの内容の多くは、Bill McCloskey のブログポストの内容を含んでいます。詳しくはこちらをご覧ください: http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/

-
- -

 

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 deleted file mode 100644 index 7ccf3a2ec4..0000000000 --- a/files/ja/mozilla/firefox/performance_best_practices_for_firefox_fe_engineers/index.html +++ /dev/null @@ -1,207 +0,0 @@ ---- -title: Firefox フロントエンドエンジニアのためのパフォーマンスベストプラクティス -slug: Mozilla/Firefox/Performance_best_practices_for_Firefox_fe_engineers -translation_of: Mozilla/Firefox/Performance_best_practices_for_Firefox_fe_engineers ---- -

可能であればメインスレッドを避けること

- -

メインスレッドはユーザーイベントを処理し、描画を行います。また、多くの JavaScript はメインスレッドで動きます。

- -

メインスレッドを避けるほどに、ユーザーイベントや描画、応答が素早くできます。

- -

メインスレッドから何か計算する必要がある場合、 Worker を使うことをおすすめします。また、より高い権限が必要な場合は ChromeWorker (Firefoxのみ)を使うことを検討してください。

- -

requestIdleCallback

- -

どうしてもメインスレッドで何らかの長い処理をしないといけない場合、おそらく存在するであろうユーザーが何もしない空き時間に、小さなパーツに分割して実行することを検討してください。

- -

RequestIdleCallback ではこちらが役に立つでしょう。 こちらの Hacks ブログをチェックしてください。

- -

そして、いつか、DOM コンテキスト以外でも可能となるでしょう!

- -

Hide your panels

- -

If you’re adding a new <popup> or <panel> 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.

- -

Get familiar with the pipeline that gets pixels to the screen

- -

This is the pipeline that a browser uses to get pixels to the screen.

- -
-

The above image is used under Creative Commons Attribution 3.0, courtesy of this page from our friends at Google, which itself is well worth the read.

-
- -

For 60fps, the above needs to occur in 16ms or less.

- -

Note that the requestAnimationFrame API 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).

- -

Detecting and Avoiding Synchronous Style Flushes

- -

What are Style Flushes?

- -

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.

- -

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 classList.add / classList.remove / classList.toggle), 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).

- -

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.

- -

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 jank.

- -

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 the style information you’re asking for has something to do with size or position, 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).

- -

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 requestAnimationFrame 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.

- -

Writing tests to ensure you don’t add more synchronous style flushes

- -

Unlike reflow, there isn’t a “observer” mechanism for style recalculations. There is, however, an attribute on nsIDOMWindowUtils that records a count of how many style calculations have occurred for a particular DOM window.

- -

It should be possible to write a test that gets the nsIDOMWindowUtils for a browser window, records the count of styleFlushes, then synchronously calls the function 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.

- -

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.

- -

Detecting and Avoiding Synchronous Reflow

- -
-

This is also sometimes called “sync Layout” or “sync Layout calculations”

-
- -

“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.

- -

This section will attempt to demystify things.

- -

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.

- -

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.

- -

Also note that since the early days, 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. Interruptible reflow is fine. Interruptible reflow only happens during initial document load.

- -

Uninterruptible reflow is what we want to avoid at all costs. 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 JavaScript asks for the size or position of anything. Here’s a comprehensive list of things that JavaScript can ask for that can cause uninterruptible reflow.

- -

Here’s a simple example, cribbed from this blog post by Paul Rouget:

- -

div1.style.margin = "200px";        // Line 1
- var height1 = div1.clientHeight;    // Line 2
- div2.classList.add("foobar");       // Line 3
- var height2 = div2.clientHeight;    // Line 4
- doSomething(height1, height2);      // Line 5

- -

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.

- -

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?”).

- -

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.

- -

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.

- -

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.

- -

nsIDOMWindowUtils.getBoundsWithoutFlushing

- -

getBoundsWithoutFlushing 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.

- -

nsIDOMWindowUtils.getRootBounds

- -

Similar to above - but allows you to get dimensions of the containing window without causing a sync reflow.

- -

nsIDOMWindowUtils.getScrollXY

- -

Similar to above - but allows you to get the window scroll offsets without causing a sync reflow.

- -

Writing tests to ensure you don’t add more unintentional reflow

- -

We have something called nsIReflowObserver, which allows us to detect both interruptible and uninterruptible reflows. A number of tests have been written that exercise various functions of the browser (opening tabs, opening windows) and ensures that we don’t add new uninterruptible reflows accidentally while those actions occur.

- -

You should add tests like this for your feature if you happen to be touching the DOM.

- -

Detecting Over-painting with Paint Flashing

- -

Painting is, in general, cheaper than both style calculation and layout calculation - but the more you can avoid, the better.

- -

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.

- -

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.

- -

You can activate paint flashing for browser chrome by setting nglayout.debug.paint_flashing_chrome to true.

- -

You can activate paint flashing for web content by setting nglayout.debug.paint_flashing to true.

- -

Now exercise your function and see what’s painting. See a lot of flashing / colours? That means a lot of painting is going on.

- -

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.

- -

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).

- -

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 will-change style on the node, though this should be used sparingly.

- -

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.

- -

Adding Nodes with documentFragment

- -

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.

- -

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.

- -

Thanks to the createDocumentFragment API, this is very straight-forward.

- -

This example has been cribbed from davidwalsh’s blog post:

- -

// Create the fragment
- var frag = document.createDocumentFragment();
- // Create numerous list items, add to fragment
- for(var x = 0; x < 10; x++) {
-     var li = document.createElement("li");
-     li.innerHTML = "List item " + x;
-     frag.appendChild(li);
- }

- -

// Mass-add the fragment nodes to the list
- listNode.appendChild(frag);

- -

The above is strictly cheaper that individually adding each node to the DOM.

- -

The Gecko Profiler Add-on is your friend

- -

The Gecko Profiler is your best friend when diagnosing performance problems and looking for bottlenecks.

- -

There’s plenty of excellent documentation on MDN about the Gecko Profiler:

- - - -

Don’t Guess. Measure.

- -

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.

- -

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 Date.now() recording at the entrance, and a Date.now() at the exits in order to measure processing time changes.

- -

Prove to yourself that you’ve actually improved something by measuring before and after.

- -

window.performance

- -

The Performance API 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.

- -

Also, the Gecko Profiler back-end is in the process of being modified to expose things like markers (from window.performance.mark).

- -

Rely on the Compositor for animations. Main thread animation should be treated as deprecated.

- -

Here’s an excellent article about doing that.

- -

Use IndexedDB for Storage

- -

AppCache and LocalStorage are synchronous storage APIs that will block the main thread when you use them. Avoid them at all costs!

- -

IndexedDB is preferable, as the API is asynchronous (all disk operations occur off of the main thread), and can be accessed from Web Workers.

- -

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 things like Maps, Sets, Dates, Blobs, and more, without having to do conversions for JSON compatibility.

- -

A Promise-based wrapper for IndexedDB, IndexedDB.jsm, is available for chrome code.

- -

Test on weak hardware

- -

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.

- -

We should remind ourselves that the majority of our user base is unlikely to have similar hardware. Look at the Firefox Hardware Report 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.

- -

 

diff --git a/files/ja/mozilla/firefox/privacy/index.html b/files/ja/mozilla/firefox/privacy/index.html deleted file mode 100644 index 4abcf426c4..0000000000 --- a/files/ja/mozilla/firefox/privacy/index.html +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Privacy -slug: Mozilla/Firefox/Privacy -tags: - - Privacy - - Security -translation_of: Mozilla/Firefox/Privacy ---- -
{{FirefoxSidebar}}
- -

このドキュメントは、プライバシーに関連するドキュメントのリストを表示します。

- -

{{ ListSubpages () }}

- -

関連情報

- - diff --git a/files/ja/mozilla/firefox/privacy/storage_access_policy/index.html b/files/ja/mozilla/firefox/privacy/storage_access_policy/index.html deleted file mode 100644 index b24c4748f5..0000000000 --- a/files/ja/mozilla/firefox/privacy/storage_access_policy/index.html +++ /dev/null @@ -1,267 +0,0 @@ ---- -title: 'ストレージアクセスポリシー: 追跡者からのクッキーのブロック' -slug: Mozilla/Firefox/Privacy/Storage_access_policy -tags: - - Privacy - - storage access policy - - tracking protection -translation_of: Mozilla/Firefox/Privacy/Storage_access_policy ---- -
{{FirefoxSidebar}}
- -

Firefox には、サードパーティの追跡リソース(tracking resources、トラッキングリソース)からのクッキーやその他のサイトデータをブロックする新しいストレージアクセスポリシーが含まれています。 このポリシーは、Firefox で長年にわたって利用されてきた古いクッキーポリシーの代替として設計されています。 このポリシーは、従来のクッキーブロックに関連するサイトの中断を最小限に抑えながら、クロスサイトトラッキング(cross-site tracking、サイトをまたがった追跡)から保護します。 この記事では、ポリシーの仕組みとテスト方法について説明します。

- -

Firefox でのテスト

- -

このクッキーポリシーは、バージョン 63 以降の Firefox で使用可能です。 この文書では、Firefox Release ユーザーに出荷する予定のポリシーについて説明しますが、Firefox の現在の Release バージョンで実装されているものと一致しない場合があります。 これは、プレリリースチャネルである Firefox Nightly にポリシーが追加されるとすぐに、ポリシーの新しい側面を文書化するためです。 Firefox Nightly には、Release ユーザーへの出荷を予定していない実験的な機能も含まれている場合があります。 この文書には実験的な機能は含まれていませんが、追跡者(trackers、トラッカー)として分類されたドメインの機能に影響を与える可能性があります。

- -

これには最新バージョンの保護が含まれているため、Firefox Nightly でサイトをテストすることをお勧めします。 前述のように、Nightly には、Release ユーザーに到達する前に削除または変更される追加の保護が含まれることがあります。 保護を強化するため、このページは常に最新情報で更新されます。

- -

Nightly では、これらの保護はデフォルトで有効になっています。 クッキーポリシーは、コンテンツブロッキング設定を介して Firefox の他のバージョンで有効にできます(これらの手順はバージョンによって異なります。 リンクされた文書には、適切な Firefox バージョンを選択するためのドロップダウンが含まれています)。

- -

中断するサイトを報告

- -

この変更の結果としてウェブサイトが中断する場合は、Bugzilla の Firefox 製品内の Tracking Protection コンポーネントでバグを報告してください。 または、コントロールセンターのコンテンツブロッキングセクションで「問題の報告」をクリックして、Firefox で中断するサイトを直接報告できます(このショートカットは、Firefox のすべてのバージョンで利用できるとは限りません)。

- -

トラッキング防止の説明

- -

Firefox はどのリソースが追跡リソースかをどのように判断していますか?

- -

Firefox はトラッキング防止リストを使用して、どのリソースが追跡リソースかを判断します。 トラッキング防止リストは、Disconnect によって維持されます。 リストが Firefox に適用されると、次の2つの重要な変更が行われます。

- - - -

Firefox は、組み込みのトラッキング防止 URL 分類子を使用して、トラッキング防止リストに一致するリソースを判別します。 ドメインは、SafeBrowsing v4 仕様に従ってリストと照合されます。 具体的には、リストに対してリソースの正確なホスト名を確認し、最後の5つのコンポーネントから開始して先頭のコンポーネントを次々に取り除くことによって形成された最後の4つのホスト名も同様に確認します。 次の例を検討してください。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
リスト上のホスト名リソースのホスト名一致
example.comexample.comはい
example.coma.b.example.comはい
blah.example.comexample.comいいえ
a.b.example.comc.d.example.comいいえ
blah.example.comfoo.blah.example.comはい
- -

ストレージアクセスポリシーは何をブロックしますか?

- -

ストレージアクセスポリシーは、追跡者として識別されたリソースがサードパーティのコンテキストに読み込まれたときに、それらのクッキーや他のサイトストレージにアクセスすることをブロックします。 これにより、それらのリソースがクッキーまたはサイトストレージに保存されている追跡識別子を取得し、それらを使用して複数のファーストパーティにわたって訪問したユーザーを識別することができなくなります。 具体的には、Firefox は次の制限を課してこれを行います。

- -

クッキー:

- - - -

DOM ストレージ:

- - - -

メッセージングとワーカー:

- - - -

DOM キャッシュ:

- - - -

ブラウザーキャッシュ:

- - - -

ネットワーク接続:

- - - -

HTTP リファラー:

- - - -

ポリシーによってブロックされないものは何ですか?

- -
    -
  1. 現在、このポリシーは、追跡リソースとして分類されていないリソースに対するサードパーティのストレージアクセスを制限していません。 今後、サードパーティのストレージアクセスに追加の制限を適用する場合があります。
  2. -
  3. ポリシーによって適用される制限は、追跡リソースとして分類されたサードパーティのスクリプトがページのメインコンテキストのストレージにアクセスすることを妨げません。 これらのスクリプトは、最上位オリジンを対象としたストレージを引き続き使用できます。
  4. -
  5. 追跡者として分類されたオリジンは、ファーストパーティのコンテキストで読み込まれると、自分のストレージにアクセスできます。
  6. -
  7. 最上位コンテキストと同じ eTLD+1 から読み込まれたクロスオリジンリソースは、引き続きストレージにアクセスできます。
  8. -
  9. 追跡者として通常分類されるオリジンは、最上位ページのオリジンがそれらと同じ組織からのものであると判断された場合、ブロックされません
  10. -
- -

ストレージアクセス許可

- -

ウェブ互換性を改善し、ストレージアクセスを必要とするサードパーティのインテグレーションを許すために、Firefox はこのセクションで説明するように、特定のサードパーティオリジンに対して、ファーストパーティを対象としたストレージアクセスを許可します。 現在、Firefox には、ユーザーが追跡者として分類されるサードパーティとやり取りするときに、これらのサードパーティリソースにストレージアクセスを許可するいくつかのウェブ互換性経験則が含まれています。 これは、アクセスを許可しないとウェブページが中断することが予想される場合に行います。 また、埋め込みの {{htmlelement("iframe")}} が {{domxref("Document.requestStorageAccess()")}} を呼び出してストレージアクセスを要求できる Storage Access API の初期実装もサポートしています。 これらのアプローチは両方とも同じレベルのストレージアクセスを提供しますが、ストレージへのアクセスを保証するために、サードパーティが Storage Access API の使用に切り替えることをお勧めします。

- -

対話時の自動ストレージアクセス

- -

ウェブ互換性を改善するために、Firefox には現在、ユーザーとのやり取りを受け取るサードパーティにストレージアクセスを自動的に許可するためのいくつかの経験則が含まれています。 これらの経験則は、ウェブで一般的な一部のサードパーティのインテグレーションを機能させ続けることを目的としています。 これらは一時的なものであり、Firefox の将来のバージョンでは取り除かれる予定です。 現在および将来のウェブ開発において依存するべきではありません。

- -

ユーザージェスチャーが元の文書へのオープナーアクセスを持つポップアップウィンドウをトリガーすると、追跡リソースとして分類されたリソースにサードパーティのストレージアクセスが許可される場合があります。 その場合、サードパーティのオリジンにアクセスを許可する方法には次の3つがあります。

- - - -

ストレージアクセスの範囲

- -

ストレージアクセスが許可されると、それはオープナー文書のオリジンまたはそのオリジンのサブドメインを対象とします。 オリジンのサブドメインで許可されたアクセスは、最上位オリジンに拡張されません。 例えば、tracker.example のリソースに foo.example.com のストレージアクセスが許可されている場合、tracker.exampleexample.com ではなく bar.foo.example.com のクッキーにアクセスできます。 代わりに、tracker.exampleexample.com でアクセスを許可された場合、bar.foo.example.comfoo.example.com、および example.com のストレージにアクセスできます。

- -

example.comtracker.example にストレージアクセスが許可されると、example.com から読み込まれた任意の最上位文書において tracker.example から読み込まれたすべてのリソースには、すぐにストレージアクセスが与えられます。 これには、ページのメインコンテキストに読み込まれたすべてのリソース、埋め込み <iframe>、埋め込み <iframe> に読み込まれたリソースが含まれます。 ストレージアクセスは、example.com に読み込まれた他のリソース(other-tracker.example など)や、tracker.example が埋め込まれている他のファーストパーティ(example.org など)には拡張されません。

- -

ストレージアクセス許可は、ネストされたコンテキストの最初のレベルまで拡張されますが、それ以上は拡張されません。 これは、ページのメインコンテキストに埋め込まれ、追跡者として分類されたドメインから読み込まれた <iframe> が、JavaScript を介してアクセス可能なすべてのストレージの場所に完全にアクセスできることを意味します。 同様に、ページのメインコンテキストに埋め込まれた <iframe> に読み込まれたリソースの要求は、HTTP クッキーにアクセスできます。 ただし、追跡者として分類されたオリジンからのものを含むがこれに限定されない、さらにネストされたコンテキストは、ストレージアクセスを許可されません。

- -

tracker.example にストレージアクセスを許可している example.com から読み込まれた最上位ページでの以下の埋め込みのシナリオを検討してください。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
埋め込みtracker.example リソースのストレージアクセス
画像は tracker.example から読み込まれ、example.com のメインコンテキストに埋め込まれます。HTTP: はい
- JS: 該当なし
example.com は、example.org から <iframe> を埋め込みます。 その <iframe> は、tracker.example から画像を読み込みます。HTTP: はい
- JS: 該当なし
example.com は、example.org から <iframe> を埋め込みます。 その <iframe> は、tracker.example から <iframe> を埋め込みます。HTTP: はい
- JS: いいえ
example.com は、tracker.example から <iframe> を埋め込みます。HTTP: はい
- JS: はい
example.com は、example.com(同じオリジン)から <iframe> を埋め込みます。 ネストされた <iframe> は、tracker.example から <iframe> を埋め込みます。HTTP: はい
- JS: いいえ
- -

ストレージアクセスの有効期限

- -

ストレージアクセス許可は30日後に失効します。 追跡リソースとして分類されたドメインには、複数のファーストパーティでサードパーティのストレージアクセスが許可される場合があり、各パーティのストレージ許可は独立して期限切れになります。 上記の経験則は、すでにアクセスが許可されているオリジンに対するサードパーティのストレージ許可の有効期間を延長するのにも役立ちます。 経験則がアクティブになるたびに、または Storage Access API の成功呼び出しが行われるたびに、以前にアクセスが許可された時点から数えて、既存のストレージアクセスの有効期限が30日間延長されます。

- -

今後、ストレージアクセスの有効期間を変更する予定です。 前述したように、今後ストレージをサードパーティとして使用できることを知る方法は、Storage Access API を使用することです。

- -

デバッグ

- -

サイト所有者は、サイト、特にサードパーティのコンテンツインテグレーションに依存しているサイトをテストすることをお勧めします。 テストを簡単にするために、Firefox にいくつかの新機能を追加しました。

- -

開発ツールの通知

- -

Firefox 開発ツールのネットワークモニターには、追跡リソースとして分類されたすべてのリソース要求のインジケーターが含まれるようになりました。 このインジケータは、ドメイン列に盾のアイコンとして表示されます。 次のサンプル画像では、trackertest.org は追跡リソースとして分類されていますが、example.com への要求は追跡リソースではありません。

- -

Firefox 開発ツールのネットワーク要求は、小さな盾のアイコンで追跡リソースがどれであるかを示します

- -

トラッキング防止リストへのカスタムドメインの追加

- -

サイトのサードパーティドメインが追跡者として分類された場合、どのように機能するのか興味がありますか? トラッキング防止 URL 分類子にカスタムドメインを追加できる設定を追加しました。 そうするには次のようにします。

- -
    -
  1. アドレスバーに about:config と入力します。 「注意して進んでください!」と警告するページが表示された場合は、「危険性を承知の上で使用する!」をクリックします。
  2. -
  3. 設定名 "urlclassifier.trackingAnnotationTable.testEntries" を検索します。
  4. -
  5. 設定がすでに存在する場合は、設定値を編集します。
  6. -
  7. 設定が存在しない場合は、「文字列」をクリックしてから「+」をクリックして、新しい設定を作成します。
  8. -
  9. 設定値には、追跡者として分類するオリジンをコンマで区切って入力します。 例えば、"example.net,example.org"。
  10. -
- -
-

警告: テストが終了したら、これらのエントリを必ず取り除いてください。

-
- -

FAQ

- -

このクッキーポリシーはサイトの中断につながる可能性がありますが、一般的なサードパーティのインテグレーションがクロスサイトトラッキングを防止しながら機能し続けるように設計されています。 このセクションでは、さまざまなインテグレーションのシナリオで期待できる機能について説明します。

- -

このストレージアクセスポリシーにより、ウェブサイトに広告が表示されなくなりますか?

- -

いいえ — この機能は、ウェブサイトをわたってユーザーを追跡するために使用できるクッキーとサイトデータへのアクセスのみを制限します。 追跡識別子をブロックしても、広告の表示は妨げられません。

- -

追跡者として分類されるサードパーティの分析サービスを使用しています。 分析データは引き続き受け取れますか?

- -

これは、サードパーティの分析サービスの実装方法に依存します。 サードパーティの分析プロバイダーは、サードパーティのストレージを使用してデータを収集できなくなります。 これは、サードパーティドメイン、またはローカルストレージとそのオリジンの下に保存されている他のサイトデータを対象としたクッキーを使用するプロバイダーが、他のウェブサイトにわたる識別子にアクセスできなくなることを意味します。

- -

これらのサービスがページのメインコンテキストに埋め込まれている場合、ファーストパーティのクッキーとサイトストレージを引き続き使用して、その特定のファーストパーティのドメインにおいてページにわたった訪問を追跡できます。

- -

ソーシャルログイン、いいねボタン、シェアボタンのインテグレーションのためにサードパーティのサービスを使用しています。 ユーザーは引き続きこれらのサービスを利用できますか?

- -

これは、ソーシャルインテグレーションの実装方法によって異なります。 人気のあるソーシャルインテグレーションの多くは、Firefox の現在のクッキーポリシーに基づいて機能し続けますが、ユーザーエクスペリエンスに若干の違いがあります。

- -

追跡者として分類されたソーシャルコンテンツプロバイダーは、ユーザーが新しいファーストパーティに初めてアクセスしたときにサードパーティのクッキーにアクセスできません。 したがって、ユーザーはプロバイダーのウェブサイトに直接アクセスしたときにログインしているにも関わらず、サービスにログアウトしているように見える場合があります。 インテグレーションの種類によっては、ユーザーがソーシャルコンテンツプロバイダーとやり取りするために、プロバイダーにクッキーへのアクセスを許可する前に、何らかのアクションを実行する必要がある場合があります。 例えば次のようにです。

- - - -

これらのやり取りの後、プロバイダーは、上記のストレージアクセスのアクティベーション経験則によって捕捉される方法でユーザーにプロンプ​​トした場合、サードパーティのストレージアクセスを受け取ります。 これらのプロバイダーは、できるだけ早く Storage Access API を介してストレージアクセスを明示的に要求するように切り替えることを検討する必要があります。 この API の初期実装は、現在 Nightly で利用可能です。

- -

サードパーティのピクセルやその他のツールを使用して、広告キャンペーンの効果を測定しています。 広告のコンバージョン率を測定することはできますか?

- -

これは、サードパーティが測定ツールをどのように実装したかに依存しますが、一般に広告コンバージョンの測定はより困難になります。 次の例を考慮してください。

- -
    -
  1. あなたは、ユーザーが何度も見たがクリックされなかったソーシャルメディアウェブサイトで広告を掲載している。 そのユーザーは、後で同じソーシャルメディアウェブサイトからのコンバージョン追跡タグを含んであなたのウェブサイトに訪問します。 このタイプのコンバージョンは、多くの場合「ビュースルーコンバージョン」と呼ばれます。 ソーシャルメディアウェブサイトはそれらのサードパーティのストレージにアクセスできないため、それらのウェブサイトで広告を見たユーザーと同じユーザーとしてユーザーを認識せず、コンバージョンは追跡されません。 ディスプレイネットワークで提供されるものを含め、ほとんどのビュースルーコンバージョン追跡技術は機能しなくなると予想されます。
  2. -
  3. あなたは、ユーザーがクリックしたディスプレイネットワークまたはソーシャルメディアウェブサイトで広告を掲載している。 そのユーザーはあなたのウェブサイトに着陸します。 これには、あなたの広告を表示した同じウェブサイトのコンバージョン追跡タグが含まれています。 このタイプのコンバージョンは、しばしば「クリックスルーコンバージョン」と呼ばれます。 ソーシャルメディアサイトまたはディスプレイネットワークはそれらのサードパーティのストレージにアクセスできないため、それらのウェブサイトで広告を見たユーザーと同じユーザーとしてユーザーを認識せず、コンバージョンは追跡されません。 このバージョンのクリックスルーコンバージョンは機能しなくなると予想されます。
  4. -
  5. あなたは、ソーシャルメディアウェブサイトに表示される広告を掲載している。 ユーザーがあなたの広告をクリックすると、サードパーティのネットワークからコンバージョン追跡タグを含むランディングページに移動します。 ソーシャルメディアのウェブサイトでは、ネットワークは広告のランディングページ URL に、訪問が広告をクリックした結果であることを示すクエリパラメーターで注釈を付けます。 あなたのウェブサイトでは、ディスプレイネットワークのタグが URL クエリパラメーターをチェックし、広告追跡パラメータをファーストパーティストレージに保存します。 ユーザーが後でコンバージョンイベントを完了した場合、ネットワークのタグはファーストパーティストレージをチェックして、訪問の原因となったクリックを特定します。 この方法で実装されたクリックスルーコンバージョンは引き続き機能すると予想されます。
  6. -
diff --git a/files/ja/mozilla/firefox/privacy/tracking_protection/index.html b/files/ja/mozilla/firefox/privacy/tracking_protection/index.html deleted file mode 100644 index 471f4d0684..0000000000 --- a/files/ja/mozilla/firefox/privacy/tracking_protection/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: トラッキング防止 -slug: Mozilla/Firefox/Privacy/Tracking_Protection -translation_of: Mozilla/Firefox/Privacy/Tracking_Protection ---- -

トラッキング防止機能とは何か?

- -

バージョン 42 以降、デスクトップ版 Firefox および Android 版 Firefox には、組み込みの機能としてトラッキング防止が含まれます。プライベートウィンドウ(Android 版 Firefox ではプライベートタブ)では、サイトをまたいでユーザーを追跡するようなドメインからロードされるコンテンツは Firefox によってブロックされます。

- -

ブロックされたコンテンツがページレイアウトの一部である場合、どの部分が Firefox によってブロックされたレイアウト要素であるのかはユーザーにも分かるでしょう。ただし、ページグリッドが要素のブロックによってできた穴を塞ぐように配置されることで、ユーザーに全く気付かれないこともあります。

- -

Firefox によってコンテンツがブロックされると、ウェブコンソールに次のようなメッセージとして記録されます。

- -
トラッキング防止機能が有効なため、 "http://some/url" のリソースがブロックされました。
- -

Android 版 Firefox の場合、コンソールへの出力はリモートデバッガからアクセスできる点に注意してください。

- -

Firefox UI は、コンテンツがいつブロックされたのか、そして、選択すれば現在のセッションにおいてブロック解除を有効にできるということを示します。また、ユーザーはトラッキング防止機能を完全に無効にすることもできます。

- -

Firefox はどのようにブロックする対象を選ぶのか?

- -

コンテンツはそれがロードされるドメインに基づいてブロックされます。

- -

Firefox は、サイトをまたぐユーザーの追跡を行うサイトをリストにします。トラッキング防止機能が有効な場合、Firefoxは、このリストにあるサイトからのコンテンツをブロックします。

- -

ユーザーの追跡を行うサイトとしては、広告サイトや分析サイトが一般的です。

- -

このことがあなたのサイトにとって意味するものは?

- -

トラッキング防止が有効であれば、次のことが言えます。

- - - -

もしあなたのサイトの別の部分が、ロードされる追跡を行うコンテンツに依存していた場合、トラッキング防止が有効になっているとこれらの部分も同様に正しく表示されなくなるかもしれません。例えば、追跡を行うサイトからコンテンツがロードされた時に実行されるようなコールバックがあなたのサイトに含まれたいた場合、このコールバックが実行されることはありません。

- -

例えば、Google Analytics はこのような使い方をすべきではありません:

- -
<a href="http://www.example.com" onclick="trackLink('http://www.example.com', event);">Visit example.com</a>
-<script>
-function trackLink(url,event) {
-    event.preventDefault();
-    ga('send', 'event', 'outbound', 'click', url, {
-     'transport': 'beacon',
-     'hitCallback': function() {
-       document.location = url;
-     }
-   });
-}
-</script>
- -

その代わり、Google Analytics を使わない場合も考慮して、次のように ga オブジェクトが初期化されているか確認してください:

- -
<a href="http://www.example.com" onclick="trackLink('http://www.example.com', event);">Visit example.com</a>
-<script>
-function trackLink(url,event) {
-    event.preventDefault();
-    if (window.ga && ga.loaded) {
-         ga('send', 'event', 'outbound', 'click', url, {
-         'transport': 'beacon',
-         'hitCallback': function() { document.location = url; }
-       });
-    } else {
-        document.location = url;
-    }
-}
-</script>
- -

この手法についてより詳しくは Google Analytics, Privacy, and Event Tracking をご覧ください。

- -

他のサイトからのコンテンツに依存してしまうやり方は、そのサイトが重かったり、読み込みに失敗したり、アドオンによってトラッキングがブロックされた場合にあなたのサイトまで影響を受けてしまうので良い方法とは言えません。

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 deleted file mode 100644 index fefd9703e1..0000000000 --- a/files/ja/mozilla/firefox/security_best_practices_for_firefox_front-end_engi/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -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 ---- -
{{FirefoxSidebar}}
- -

このガイドは、Firefoxの開発者がセキュリティコントロールを理解し、Firefoxのフロントエンドを開発する際の一般的な落とし穴を避けるのに役立ちます。

- -

既存のセキュリティコントロール

- -

innerHTMLやそれに関連するものを通してDOMに入るすべての文字列をサニタイズする

- -

Chrome 特権で実行されるコードでは、Chrome 特権文書用に作成されたすべてのHTMLフラグメントをサニタイズします。これには文字列を受け取りDOMツリーに解析するすべてのDOM APIが含まれます。

- -

私たちは、Sanitizerに組み込まれた次のフラグを使用します。

- -
SanitizerAllowStyle
-SanitizerAllowComments
-SanitizerDropForms
-SanitizerLogRemovals
- -

サニタイザはすべてのスクリプト (スクリプトタグ、イベントハンドラ) とフォーム要素 (form, input, keygen, option, optgroup, select, button, datalist) を削除します。ホワイトリストに載っている要素のリストの正式なものはソースコードです。
-
- 最後のフラグは開発者が問題を早期に発見し、提供後ではなく開発サイクル内で問題を回避できることを保証します。

- -

非衛生的なDOMの相互作用に対するLinterの規則

- -

Security Assuranceチームは、innerHTMLなどのDOM APIの安全でない使用を禁止する ESLint ルールを維持しています。Linterは善意の開発者を想定して、ソースコードにハードコードされた文字列リテラルを使用するコードの例外を作成します。 開発者は次のようなテンプレート文字列と組み合わせてエスケープ関数を使用することで、ルールをトリッピングすることを避けることができます。

- -
bar.innerHTML = escapeHTML`<a href='${url}'>About</a>`;
- -

Chrome 特権コードでは、残っているスクリプトは引き続きGoogleのサニタイザで削除されます。

- -

付録

- -

許可されていない DOM API の一覧

- - - -

Please take a look at the repository for an updated list

-- cgit v1.2.3-54-g00ecf