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 --- .../add-ons/developing_b2g_os_add-ons/index.html | 357 ------ files/ja/archive/b2g_os/add-ons/index.html | 106 -- .../b2g_os/api/bluetoothmanager/enabled/index.html | 51 - .../bluetoothmanager/getdefaultadapter/index.html | 48 - .../archive/b2g_os/api/bluetoothmanager/index.html | 188 --- .../api/bluetoothmanager/isconnected/index.html | 55 - .../api/bluetoothmanager/onadapteradded/index.html | 44 - .../api/bluetoothmanager/ondisabled/index.html | 45 - .../api/bluetoothmanager/onenabled/index.html | 45 - files/ja/archive/b2g_os/api/callevent/index.html | 134 -- .../archive/b2g_os/api/domapplication/index.html | 103 -- files/ja/archive/b2g_os/api/index.html | 831 ------------- .../ja/archive/b2g_os/api/mozndefrecord/index.html | 127 -- files/ja/archive/b2g_os/api/moznfcpeer/index.html | 113 -- files/ja/archive/b2g_os/api/moznfctag/index.html | 134 -- files/ja/archive/b2g_os/api/navigator/index.html | 29 - .../b2g_os/api/navigator/mozapps/index.html | 82 -- .../api/navigator/mozsetmessagehandler/index.html | 265 ---- .../b2g_os/api/navigator/moztelephony/index.html | 120 -- .../ja/archive/b2g_os/api/telephonycall/index.html | 237 ---- files/ja/archive/b2g_os/architecture/index.html | 752 ----------- .../gaia_ui_tests_run_tests/index.html | 356 ------ .../automated_testing/gaia-ui-tests/index.html | 73 -- .../part_1_marionette_firefox_os_start/index.html | 191 --- .../index.html | 177 --- .../gaia-ui-tests/part_3_reusable_tests/index.html | 183 --- .../index.html | 160 --- .../part_5_introducing_a_test_runner/index.html | 243 ---- .../part_6_marionette_by_class/index.html | 132 -- .../part_7_writing_your_own_tests/index.html | 122 -- .../part_8_using_a_base_class/index.html | 153 --- .../gaia-ui-tests/part_9_app_objects/index.html | 141 --- .../gaia_performance_tests/index.html | 201 --- .../automated_testing/gaia_unit_tests/index.html | 119 -- .../ja/archive/b2g_os/automated_testing/index.html | 97 -- .../b2g_os/automated_testing/raptor/index.html | 442 ------- .../setting_up_marionette/index.html | 48 - .../b2g_os/automated_testing/xpcshell/index.html | 46 - .../b2g_os/b2g_build_prerequisites/index.html | 423 ------- .../archive/b2g_os/b2g_os_architecture/index.html | 34 - .../board_guide/chirimen/chirimen_faq/index.html | 8 - .../archive/b2g_os/board_guide/chirimen/index.html | 16 - .../board_guide/chirimen/os_image/index.html | 14 - .../quick_start_guide/basic_startup/index.html | 5 - .../quick_start_guide/board_connectors/index.html | 5 - .../quick_start_guide/dev_windows/index.html | 5 - .../firmware_update_guide_for_windows/index.html | 6 - .../chirimen/quick_start_guide/index.html | 5 - files/ja/archive/b2g_os/board_guide/index.html | 40 - .../b2g_build_variables_reference_sheet/index.html | 320 ----- .../b2g_installer_add-on/index.html | 275 ---- .../index.html | 241 ---- .../compatible_devices/index.html | 283 ----- .../firefox_os_build_overview/index.html | 149 --- .../firefox_os_update_packages/index.html | 523 -------- .../building_and_installing_firefox_os/index.html | 64 - .../fota_community_builds/index.html | 225 ---- .../b2g_os/building_boot_to_gecko/index.html | 553 --------- .../choosing_how_to_run_gaia_or_b2g/index.html | 77 -- .../index.html | 255 ---- .../index.html | 41 - .../debugging_b2g_using_valgrind/index.html | 132 -- .../b2g_os/debugging/debugging_ooms/index.html | 102 -- .../b2g_os/debugging/developer_settings/index.html | 388 ------ .../firefox_os_crash_reporting/index.html | 119 -- files/ja/archive/b2g_os/debugging/index.html | 90 -- .../b2g_os/debugging/installing_adb/index.html | 105 -- .../intercepting_traffic_using_a_proxy/index.html | 185 --- .../debugging/on-device_console_logging/index.html | 66 - .../archive/b2g_os/debugging/setting_up/index.html | 57 - .../b2g_os/debugging/taking_screenshots/index.html | 89 -- .../testing_in_a_privileged_context/index.html | 113 -- files/ja/archive/b2g_os/developer_mode/index.html | 139 --- .../customizing_the_b2g.sh_script/index.html | 49 - .../filing_bugs_against_firefox_os/index.html | 199 --- .../b2g_os/developing_firefox_os/index.html | 48 - .../localizing_firefox_os/index.html | 185 --- .../modifying_hosts_file/index.html | 46 - .../customizing_build-time_apps/index.html | 173 --- .../customizing_the_keyboard/index.html | 234 ---- .../different_ways_to_run_gaia/index.html | 159 --- .../gaia_tools_reference/index.html | 189 --- files/ja/archive/b2g_os/developing_gaia/index.html | 129 -- .../make_options_reference/index.html | 383 ------ .../making_gaia_code_changes/index.html | 137 -- .../market_customizations_guide/index.html | 1313 -------------------- .../running_the_gaia_codebase/index.html | 131 -- .../submitting_a_gaia_patch/index.html | 119 -- .../testing_gaia_code_changes/index.html | 175 --- .../understanding_the_gaia_codebase/index.html | 210 ---- .../index.html" | 249 ---- files/ja/archive/b2g_os/firefox_os_apps/index.html | 85 -- files/ja/archive/b2g_os/firefox_os_faq/index.html | 23 - .../b2g_os/firefox_os_usage_tips/index.html | 19 - files/ja/archive/b2g_os/index.html | 167 --- .../index.html | 160 --- files/ja/archive/b2g_os/introduction/index.html | 86 -- .../archive/b2g_os/introduction_to_gaia/index.html | 38 - files/ja/archive/b2g_os/pandaboard/index.html | 40 - files/ja/archive/b2g_os/performance/index.html | 226 ---- .../index.html | 58 - .../firefox_os_device_features/index.html | 75 -- .../ja/archive/b2g_os/phone_guide/flame/index.html | 134 -- .../phone_guide/flame/initial_setup/index.html | 108 -- .../flame/updating_your_flame/index.html | 441 ------- files/ja/archive/b2g_os/phone_guide/fx0/index.html | 50 - .../b2g_os/phone_guide/geeksphone/index.html | 107 -- files/ja/archive/b2g_os/phone_guide/index.html | 90 -- .../archive/b2g_os/phone_guide/nexus_4/index.html | 46 - .../archive/b2g_os/phone_guide/nexus_5/index.html | 46 - .../b2g_os/phone_guide/phone_specs/index.html | 717 ----------- .../archive/b2g_os/phone_guide/zte_open/index.html | 298 ----- .../b2g_os/phone_guide/zte_open_c/index.html | 85 -- files/ja/archive/b2g_os/porting/index.html | 246 ---- files/ja/archive/b2g_os/porting_b2g_os/index.html | 17 - .../preparing_for_your_first_b2g_build/index.html | 273 ---- files/ja/archive/b2g_os/quickstart/index.html | 49 - .../open_web_apps_and_web_standards/index.html | 89 -- .../index.html" | 268 ---- files/ja/archive/b2g_os/releases/1.1/index.html | 89 -- files/ja/archive/b2g_os/releases/1.2/index.html | 466 ------- files/ja/archive/b2g_os/releases/1.4/index.html | 96 -- files/ja/archive/b2g_os/releases/2.0/index.html | 112 -- files/ja/archive/b2g_os/releases/2.1/index.html | 49 - files/ja/archive/b2g_os/releases/index.html | 32 - .../index.html | 57 - .../index.html | 58 - .../security/application_security/index.html | 132 -- .../b2g_os/security/b2g_ipc_internals/index.html | 254 ---- files/ja/archive/b2g_os/security/index.html | 68 - .../b2g_os/security/security_model/index.html | 284 ----- .../b2g_os/security/system_security/index.html | 385 ------ files/ja/archive/b2g_os/simulator/index.html | 114 -- .../simulator/simulator_walkthrough/index.html | 282 ----- .../hello_world_example/index.html | 125 -- .../how_to_connect_webide_to_tv_(viera)/index.html | 116 -- .../b2g_os/tvs_connected_devices/index.html | 82 -- .../interacting_with_tv_remote_controls/index.html | 73 -- .../simulating_firefox_os_for_tv/index.html | 126 -- .../tv_broadcast_streams_firefox_os/index.html | 94 -- .../index.html | 148 --- .../tv_remote_control_navigation/index.html | 334 ----- .../b2g_os/using_the_app_manager/index.html | 303 ----- .../b2g_os/using_the_b2g_desktop_client/index.html | 314 ----- .../b2g_os/using_the_b2g_emulators/index.html | 182 --- files/ja/archive/b2g_os/ux/style_guide/index.html | 209 ---- .../ja/archive/b2g_os/web_telephony_api/index.html | 144 --- .../using_the_web_telephony_api/index.html | 268 ---- .../index.html" | 60 - 149 files changed, 25127 deletions(-) delete mode 100644 files/ja/archive/b2g_os/add-ons/developing_b2g_os_add-ons/index.html delete mode 100644 files/ja/archive/b2g_os/add-ons/index.html delete mode 100644 files/ja/archive/b2g_os/api/bluetoothmanager/enabled/index.html delete mode 100644 files/ja/archive/b2g_os/api/bluetoothmanager/getdefaultadapter/index.html delete mode 100644 files/ja/archive/b2g_os/api/bluetoothmanager/index.html delete mode 100644 files/ja/archive/b2g_os/api/bluetoothmanager/isconnected/index.html delete mode 100644 files/ja/archive/b2g_os/api/bluetoothmanager/onadapteradded/index.html delete mode 100644 files/ja/archive/b2g_os/api/bluetoothmanager/ondisabled/index.html delete mode 100644 files/ja/archive/b2g_os/api/bluetoothmanager/onenabled/index.html delete mode 100644 files/ja/archive/b2g_os/api/callevent/index.html delete mode 100644 files/ja/archive/b2g_os/api/domapplication/index.html delete mode 100644 files/ja/archive/b2g_os/api/index.html delete mode 100644 files/ja/archive/b2g_os/api/mozndefrecord/index.html delete mode 100644 files/ja/archive/b2g_os/api/moznfcpeer/index.html delete mode 100644 files/ja/archive/b2g_os/api/moznfctag/index.html delete mode 100644 files/ja/archive/b2g_os/api/navigator/index.html delete mode 100644 files/ja/archive/b2g_os/api/navigator/mozapps/index.html delete mode 100644 files/ja/archive/b2g_os/api/navigator/mozsetmessagehandler/index.html delete mode 100644 files/ja/archive/b2g_os/api/navigator/moztelephony/index.html delete mode 100644 files/ja/archive/b2g_os/api/telephonycall/index.html delete mode 100644 files/ja/archive/b2g_os/architecture/index.html delete mode 100644 files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/gaia_ui_tests_run_tests/index.html delete mode 100644 files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/index.html delete mode 100644 files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_1_marionette_firefox_os_start/index.html delete mode 100644 files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_2_marionette_firefox_os_interactions/index.html delete mode 100644 files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_3_reusable_tests/index.html delete mode 100644 files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_4_reusing_commands_firefox_os_setup/index.html delete mode 100644 files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_5_introducing_a_test_runner/index.html delete mode 100644 files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_6_marionette_by_class/index.html delete mode 100644 files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_7_writing_your_own_tests/index.html delete mode 100644 files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_8_using_a_base_class/index.html delete mode 100644 files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_9_app_objects/index.html delete mode 100644 files/ja/archive/b2g_os/automated_testing/gaia_performance_tests/index.html delete mode 100644 files/ja/archive/b2g_os/automated_testing/gaia_unit_tests/index.html delete mode 100644 files/ja/archive/b2g_os/automated_testing/index.html delete mode 100644 files/ja/archive/b2g_os/automated_testing/raptor/index.html delete mode 100644 files/ja/archive/b2g_os/automated_testing/setting_up_marionette/index.html delete mode 100644 files/ja/archive/b2g_os/automated_testing/xpcshell/index.html delete mode 100644 files/ja/archive/b2g_os/b2g_build_prerequisites/index.html delete mode 100644 files/ja/archive/b2g_os/b2g_os_architecture/index.html delete mode 100644 files/ja/archive/b2g_os/board_guide/chirimen/chirimen_faq/index.html delete mode 100644 files/ja/archive/b2g_os/board_guide/chirimen/index.html delete mode 100644 files/ja/archive/b2g_os/board_guide/chirimen/os_image/index.html delete mode 100644 files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/basic_startup/index.html delete mode 100644 files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/board_connectors/index.html delete mode 100644 files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/dev_windows/index.html delete mode 100644 files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/firmware_update_guide_for_windows/index.html delete mode 100644 files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/index.html delete mode 100644 files/ja/archive/b2g_os/board_guide/index.html delete mode 100644 files/ja/archive/b2g_os/building_and_installing_firefox_os/b2g_build_variables_reference_sheet/index.html delete mode 100644 files/ja/archive/b2g_os/building_and_installing_firefox_os/b2g_installer_add-on/index.html delete mode 100644 files/ja/archive/b2g_os/building_and_installing_firefox_os/building_firefox_os_for_flame_on_osx/index.html delete mode 100644 files/ja/archive/b2g_os/building_and_installing_firefox_os/compatible_devices/index.html delete mode 100644 files/ja/archive/b2g_os/building_and_installing_firefox_os/firefox_os_build_overview/index.html delete mode 100644 files/ja/archive/b2g_os/building_and_installing_firefox_os/firefox_os_update_packages/index.html delete mode 100644 files/ja/archive/b2g_os/building_and_installing_firefox_os/index.html delete mode 100644 files/ja/archive/b2g_os/building_boot_to_gecko/fota_community_builds/index.html delete mode 100644 files/ja/archive/b2g_os/building_boot_to_gecko/index.html delete mode 100644 files/ja/archive/b2g_os/choosing_how_to_run_gaia_or_b2g/index.html delete mode 100644 files/ja/archive/b2g_os/customization_with_the_.userconfig_file/index.html delete mode 100644 files/ja/archive/b2g_os/debugging/connecting_a_firefox_os_device_to_the_desktop/index.html delete mode 100644 files/ja/archive/b2g_os/debugging/debugging_b2g_using_valgrind/index.html delete mode 100644 files/ja/archive/b2g_os/debugging/debugging_ooms/index.html delete mode 100644 files/ja/archive/b2g_os/debugging/developer_settings/index.html delete mode 100644 files/ja/archive/b2g_os/debugging/firefox_os_crash_reporting/index.html delete mode 100644 files/ja/archive/b2g_os/debugging/index.html delete mode 100644 files/ja/archive/b2g_os/debugging/installing_adb/index.html delete mode 100644 files/ja/archive/b2g_os/debugging/intercepting_traffic_using_a_proxy/index.html delete mode 100644 files/ja/archive/b2g_os/debugging/on-device_console_logging/index.html delete mode 100644 files/ja/archive/b2g_os/debugging/setting_up/index.html delete mode 100644 files/ja/archive/b2g_os/debugging/taking_screenshots/index.html delete mode 100644 files/ja/archive/b2g_os/debugging/testing_in_a_privileged_context/index.html delete mode 100644 files/ja/archive/b2g_os/developer_mode/index.html delete mode 100644 files/ja/archive/b2g_os/developing_firefox_os/customizing_the_b2g.sh_script/index.html delete mode 100644 files/ja/archive/b2g_os/developing_firefox_os/filing_bugs_against_firefox_os/index.html delete mode 100644 files/ja/archive/b2g_os/developing_firefox_os/index.html delete mode 100644 files/ja/archive/b2g_os/developing_firefox_os/localizing_firefox_os/index.html delete mode 100644 files/ja/archive/b2g_os/developing_firefox_os/modifying_hosts_file/index.html delete mode 100644 files/ja/archive/b2g_os/developing_gaia/customizing_build-time_apps/index.html delete mode 100644 files/ja/archive/b2g_os/developing_gaia/customizing_the_keyboard/index.html delete mode 100644 files/ja/archive/b2g_os/developing_gaia/different_ways_to_run_gaia/index.html delete mode 100644 files/ja/archive/b2g_os/developing_gaia/gaia_tools_reference/index.html delete mode 100644 files/ja/archive/b2g_os/developing_gaia/index.html delete mode 100644 files/ja/archive/b2g_os/developing_gaia/make_options_reference/index.html delete mode 100644 files/ja/archive/b2g_os/developing_gaia/making_gaia_code_changes/index.html delete mode 100644 files/ja/archive/b2g_os/developing_gaia/market_customizations_guide/index.html delete mode 100644 files/ja/archive/b2g_os/developing_gaia/running_the_gaia_codebase/index.html delete mode 100644 files/ja/archive/b2g_os/developing_gaia/submitting_a_gaia_patch/index.html delete mode 100644 files/ja/archive/b2g_os/developing_gaia/testing_gaia_code_changes/index.html delete mode 100644 files/ja/archive/b2g_os/developing_gaia/understanding_the_gaia_codebase/index.html delete mode 100644 "files/ja/archive/b2g_os/developing_gaia/\346\247\213\351\200\240\345\205\245\351\226\200\346\233\270/index.html" delete mode 100644 files/ja/archive/b2g_os/firefox_os_apps/index.html delete mode 100644 files/ja/archive/b2g_os/firefox_os_faq/index.html delete mode 100644 files/ja/archive/b2g_os/firefox_os_usage_tips/index.html delete mode 100644 files/ja/archive/b2g_os/index.html delete mode 100644 files/ja/archive/b2g_os/installing_boot_to_gecko_on_a_mobile_device/index.html delete mode 100644 files/ja/archive/b2g_os/introduction/index.html delete mode 100644 files/ja/archive/b2g_os/introduction_to_gaia/index.html delete mode 100644 files/ja/archive/b2g_os/pandaboard/index.html delete mode 100644 files/ja/archive/b2g_os/performance/index.html delete mode 100644 files/ja/archive/b2g_os/phone_guide/best_practices_open_reference_devices/index.html delete mode 100644 files/ja/archive/b2g_os/phone_guide/firefox_os_device_features/index.html delete mode 100644 files/ja/archive/b2g_os/phone_guide/flame/index.html delete mode 100644 files/ja/archive/b2g_os/phone_guide/flame/initial_setup/index.html delete mode 100644 files/ja/archive/b2g_os/phone_guide/flame/updating_your_flame/index.html delete mode 100644 files/ja/archive/b2g_os/phone_guide/fx0/index.html delete mode 100644 files/ja/archive/b2g_os/phone_guide/geeksphone/index.html delete mode 100644 files/ja/archive/b2g_os/phone_guide/index.html delete mode 100644 files/ja/archive/b2g_os/phone_guide/nexus_4/index.html delete mode 100644 files/ja/archive/b2g_os/phone_guide/nexus_5/index.html delete mode 100644 files/ja/archive/b2g_os/phone_guide/phone_specs/index.html delete mode 100644 files/ja/archive/b2g_os/phone_guide/zte_open/index.html delete mode 100644 files/ja/archive/b2g_os/phone_guide/zte_open_c/index.html delete mode 100644 files/ja/archive/b2g_os/porting/index.html delete mode 100644 files/ja/archive/b2g_os/porting_b2g_os/index.html delete mode 100644 files/ja/archive/b2g_os/preparing_for_your_first_b2g_build/index.html delete mode 100644 files/ja/archive/b2g_os/quickstart/index.html delete mode 100644 files/ja/archive/b2g_os/quickstart/open_web_apps_and_web_standards/index.html delete mode 100644 "files/ja/archive/b2g_os/quickstart/\345\210\235\343\202\201\343\201\246\343\201\256\343\202\242\343\203\227\343\203\252/index.html" delete mode 100644 files/ja/archive/b2g_os/releases/1.1/index.html delete mode 100644 files/ja/archive/b2g_os/releases/1.2/index.html delete mode 100644 files/ja/archive/b2g_os/releases/1.4/index.html delete mode 100644 files/ja/archive/b2g_os/releases/2.0/index.html delete mode 100644 files/ja/archive/b2g_os/releases/2.1/index.html delete mode 100644 files/ja/archive/b2g_os/releases/index.html delete mode 100644 files/ja/archive/b2g_os/running_custom_builds_in_the_app_manager/index.html delete mode 100644 files/ja/archive/b2g_os/running_tests_on_firefox_os_for_developers/index.html delete mode 100644 files/ja/archive/b2g_os/security/application_security/index.html delete mode 100644 files/ja/archive/b2g_os/security/b2g_ipc_internals/index.html delete mode 100644 files/ja/archive/b2g_os/security/index.html delete mode 100644 files/ja/archive/b2g_os/security/security_model/index.html delete mode 100644 files/ja/archive/b2g_os/security/system_security/index.html delete mode 100644 files/ja/archive/b2g_os/simulator/index.html delete mode 100644 files/ja/archive/b2g_os/simulator/simulator_walkthrough/index.html delete mode 100644 files/ja/archive/b2g_os/tvs_connected_devices/hello_world_example/index.html delete mode 100644 files/ja/archive/b2g_os/tvs_connected_devices/how_to_connect_webide_to_tv_(viera)/index.html delete mode 100644 files/ja/archive/b2g_os/tvs_connected_devices/index.html delete mode 100644 files/ja/archive/b2g_os/tvs_connected_devices/interacting_with_tv_remote_controls/index.html delete mode 100644 files/ja/archive/b2g_os/tvs_connected_devices/simulating_firefox_os_for_tv/index.html delete mode 100644 files/ja/archive/b2g_os/tvs_connected_devices/tv_broadcast_streams_firefox_os/index.html delete mode 100644 files/ja/archive/b2g_os/tvs_connected_devices/tv_remote_control_button_mapping_to_keyboard/index.html delete mode 100644 files/ja/archive/b2g_os/tvs_connected_devices/tv_remote_control_navigation/index.html delete mode 100644 files/ja/archive/b2g_os/using_the_app_manager/index.html delete mode 100644 files/ja/archive/b2g_os/using_the_b2g_desktop_client/index.html delete mode 100644 files/ja/archive/b2g_os/using_the_b2g_emulators/index.html delete mode 100644 files/ja/archive/b2g_os/ux/style_guide/index.html delete mode 100644 files/ja/archive/b2g_os/web_telephony_api/index.html delete mode 100644 files/ja/archive/b2g_os/web_telephony_api/using_the_web_telephony_api/index.html delete mode 100644 "files/ja/archive/b2g_os/\343\203\210\343\203\251\343\203\226\343\203\253\343\202\267\343\203\245\343\203\274\343\203\206\343\202\243\343\203\263\343\202\260/index.html" (limited to 'files/ja/archive/b2g_os') diff --git a/files/ja/archive/b2g_os/add-ons/developing_b2g_os_add-ons/index.html b/files/ja/archive/b2g_os/add-ons/developing_b2g_os_add-ons/index.html deleted file mode 100644 index f554cd6126..0000000000 --- a/files/ja/archive/b2g_os/add-ons/developing_b2g_os_add-ons/index.html +++ /dev/null @@ -1,357 +0,0 @@ ---- -title: B2G OS のアドオンを開発する -slug: Archive/B2G_OS/Add-ons/Developing_B2G_OS_add-ons -tags: - - Add-ons - - Apps - - CSS - - Extensions - - Firefox OS - - JavaScript - - Manifest - - cuztomizations -translation_of: Archive/B2G_OS/Add-ons/Developing_B2G_OS_add-ons ---- -

- -

アドオンは Web ブラウザの世界ではよく知られたコンセプトであり、Firefox OS にもアドオンの仕組みが導入されることとなりました。アドオン 1 つでアプリ 1 つ、または複数、もしくは全アプリを拡張できます。この記事では自分で Firefox OS アドオンを作るためのガイドやヒント、Tips やその他の有益な情報を提供します。

- -
-

脚注: Firefox OS アドオンは Chrome/Blink アドオンの基礎となるWebExtensionsの拡張機能モデルを利用しており、 互換性と機能の点においてアドオンの作成に多くの利点をもたらします。より詳細については鋭意執筆中の WebExtensions ドキュメントをご確認ください。

-
- -
-

重要: アドオンは Firefox OS 2.5 以降でのみ使用可能であり、また拡張機能をデバッグするための最新の WebIDE サポートを得るために新しいビルドを端末にインストールする必要があります。Firefox OS アドオンの開発を始める前に、開発用端末が最新の利用可能なビルドにアップグレードされているかご確認ください。

-
- -

アドオンの開発

- -

アドオンはJavaScript, CSSやその他のファイルからなるアプリパッケージです。ただし、アドオンは独立したアプリとしては動作しません。アドオンのマニフェストはどのアプリに アドオンを適用するのかを定義するための特別な機能を含んでいます。アプリがアドオンのインストールされた Firefox OS 端末から起動されるとき、アドオンは manifest.json のフィールドで指定されたパターンにマッチするアプリに注入されます。

- -

Firefox OS アドオンは、WebExtensions API を利用して開発する新しい Firefox アドオン群と同様の構文と構造になっています。WebExtension API は Chrome extensions のモデルをベースにしています。

- -

簡単な例

- -

Firefox OS アドオンの基本について説明するために、クリックすると消えるバナーをシステムアプリに追加する簡単なサンプルを紹介します。

- -

firefox os screenshot showing add-on banner

- -

これはとても基本的でありふれた例ですが、開発を始めるには充分なものです。Github 上のサンプルコードを確認のうえ、ローカル環境に clone もしくは ZIP をダウンロードし、WebIDE で自分の Firefox OS 端末にアドオンをインストールしてみてください。(Testing your add-on using WebIDE セクションもご覧ください。) アドオンはいずれ Firefox Marketplace で配布できるようになります。

- -

Firefox OS アドオンはここに列挙したこと以上にたくさんのことができることに注意してください。WebExtensions のドキュメントにはこれから情報が充実していきます。

- -

Firefox OS アドオンの構造

- -

このセクションではサンプルアドオンの内容の各項目を順に説明していきます。ディレクトリ構成は以下のようになっています:

- - - -

manifest.json

- -

サンプルアドオンのディレクトリには、2 つのマニフェストファイルが含まれていることにお気付きでしょう。最初のものは manifest.json で、Chrome スタイルのマニフェスト構成をもち、CSS や JavaScript、アイコンファイルなどとともに extensions.zip パッケージのなかに配置されるものです。様々な指示を含めることができます (Chrome Manifest File Format をご覧ください) 。ただし、この例ではシンプルなものを利用することにしましょう:

- -
{
-  "manifest_version": 1,
-  "name": "Add-on banner",
-  "description": "Firefox OS add-on example",
-  "version": "1.0",
-  "author": "Chris Mills",
-  "content_scripts": [{
-    "matches": ["app://system.gaiamobile.org/index.html"],
-    "css": ["css/style.css"],
-    "js": ["js/index.js"]
-  }],
-  "icons": {
-    "128": "/icons/128.png"
-  }
-}
- -

多くのフィールドは説明するまでもありませんが、最後のいくつかを紹介します。

- -

まずはじめに、content_scripts フィールドはアドオンが適用されるアプリに注入されるコードを参照します。CSS と JavaScript のファイルはそれぞれ cssjs フィールドでバスを指定します。matches フィールドはどのアプリにコードが注入されるのかを指定するパターンを含むものです。このパターンは多様な形式で書けます (Chrome Match Patterns をご覧ください)。いまはシンプルに app://system.gaiamobile.org/index.html と指定されており、システムアプリのみに限定されています。すべてのアプリに適用したい時には app://*/* を利用します。

- -
-

脚注: 配列に複数の要素を含めることで、容易に複数のスクリプトやスタイルシートを参照することができます。例えば "css": ["css/style.css", "css/more.css"] のような形になります。

-
- -
-

脚注: Firefox OS では、現在のところ Chrome の <all_urls> キーワードはサポートしていません。

-
- -

マニフェストの最後の部分で、icons フィールドをインクルードしていますが、これについての詳細は次のセクションをご覧ください。

- -

update.webapp

- -
-

Note: You don't need the .webapp manifest if you are submitting add-ons to the Firefox Marketplace — you just need the .zip file.

-
- -

update.webapp マニフェストは Firefox OS スタイルのマニフェストであり、基本的にはパッケージアプリと同様の簡易マニフェストです。 (Self-publishing packaged apps をご覧ください)

- -

update.webapp ファイルは以下のようなものです:

- -
{
-  "name" : "Add-on banner",
-  "description": "Firefox OS add-on example",
-  "developer": { "name": "Chris Mills" },
-  "package_path": "extension.zip",
-  "icons": {
-    "128": "/icons/128.png"
-  }
-}
- -

やはり、これらのほとんどは説明するまでもありません。

- -

おそらく、ここでいちばん重要なフィールドは package_path でしょう。これはエクステンションを含むパッケージのパスを指すものです。

- -

ここで、manifest.json のときと同様に icons フィールドが含まれていることにお気付きでしょう。update.webapp は現時点でアイコンに関する情報をもつ必要がある唯一の場所ですが、仕様が変更になる可能性もあるため、いまのところ両方にフィールドを含めることを推奨しています。icons フィールドで指定されたアドオンのアイコンは Gaia Settings アプリ内で利用され、また、アドオンのホストが開始されれば Firefox Marketplace でも利用されます。

- -

アイコンのインクルード

- -

アイコンは少なくとも1つ含まれなければならず、マニフェストから参照しなければ、そのマニフェストは有効なものとはなりません。詳細については Manifest リファレンスのアイコンセクション をご覧ください。

- -

CSS

- -
-

重要: bug 1179536 によると、システムアプリ以外にスタイルシートを注入するのは動作しません。このアドオンはシステムアプリにのみ影響するため、チュートリアルは動作しますが、その他のアプリやwebページにスタイルを追加するには、JavaScriptを使ってスタイル変更する必要があります。

-
- -

CSSについて、例ではなにも特殊なことはしていませんが、覚えておくべきことは、アドオンのクラス名やセレクタ名はそのアドオンを適用するアプリの CSS とコンフリクトさせるべきではないということです。

- -

例えば、バナーのサンプルでは、バナーを fxos-banner というクラス名の <div> で囲いました。しかし本来はクラス名について、より一意性のあるコードとなるように考えるのが良いでしょう。

- -

JavaScript

- -

JavaScript についても、なにも特殊な機能は持たせていません (Github 上の JavaScript ソースをご覧ください)。JavaScript ソースは、manifest.json ファイルで指定された CSS に続いてアプリに注入されます。

- -
-

脚注: アドオンのコードはアプリが起動し、マニフェストの指定とマッチする度に注入されます。また、アドオンが有効化される度に注入されます。アプリの起動時に アドオンが注入される場合、アプリの DOM を含めたすべてのものが初期化される前にアドオンの各ファイルが注入されます。アプリの初期化を待たずに即時注入するか、アプリの起動を待ってから注入す るか、起動処理タイミングの選択はアドオンの開発者に任されています。以下でより詳細について説明します。

-
- -

その他の主な事柄は以下に記載されています。

- -

window オブジェクト

- -

アドオンはプロキシされた window オブジェクトを共有します。結果として、アドオンから window オブジェクトに書き込まれたものはアプリ側のコードでは利用できません。しかし、アプリ側で window オブジェクトにセットされたものはアドオンで利用できます。同様に、DOM も普段通りにアクセス可能です。

- -

DOM へのコード注入

- -

アプリの DOM を操作するのに JavaScript API を利用できます。

- -

正しいタイミングでコードを注入する

- -

アプリがロードされた後にアドオンが注入される場合に正しく処理されるように気をつけねばなりません。そのようなシナリオは、アプリがすでに起動している状態でアドオンが有効化されたときに起こります。その場合、DOMContentLoaded イベントがすでに発生してしまっているため、window.onload ハンドラは動作しません。

- -

現在、この問題に対するうまい解決策はありません。一時的な対処として、DOMContentLoaded コールバックをセットする前に DOM がロードされているかどうかを確認することをおすすめします。このパターンはサンプルコードでも利用されています:

- -
// If injecting into an app that was already running at the time
-// the app was enabled, simply initialize it.
-if (document.documentElement) {
-  initialize();
-}
-
-// Otherwise, we need to wait for the DOM to be ready before
-// starting initialization since add-ons are usually (always?)
-// injected *before* `document.documentElement` is defined.
-else {
-  window.addEventListener('DOMContentLoaded', initialize);
-}
-
-function initialize() {
-  // ...
-}
-
- -

複数の注入の防止

- -

最後に、一つのアプリインスタンスに対して、何度もアドオンが注入されてしまうことを防ぐために、アドオンの初期化処理が既に終わっているか確認すると良いでしょう。以下に例を示します:

- -
function initialize() {
-  if (document.querySelector('.fxos-banner')) {
-    // Already injected, abort.
-    return;
-  } else {
-    var body = document.querySelector('body');
-    var fxosBanner = document.createElement('div');
-    fxosBanner.classList.add('fxos-banner');
-    var bannerText = document.createElement('p');
-    var closeBtn = document.createElement('button');
-
-    fxosBanner.appendChild(bannerText);
-    fxosBanner.appendChild(closeBtn);
-    body.appendChild(fxosBanner);
-
-    closeBtn.textContent = 'X';
-    bannerText.textContent = 'Wow, you have an extension installed!';
-
-    closeBtn.onclick = function() {
-      fxosBanner.parentNode.removeChild(fxosBanner);
-    }
-  }
-}
-
- -

ここでは、バナーがすでに存在するかを確認するために if (document.querySelector('.fxos-banner')) を利用しています。もしそうであれば、関数から抜け出します。そうでなければ、querySelector() メソッドは null を返し、バナーを作成するコードブロックが実行されます。

- -

アドオンのアプリマネジメント関数

- -

すべての AppsMgmt の関数はアプリで動作するのと同じようにアドオン上でも動作します。後者については webapps-manager パーミッションがマニフェストで指定されている特権アプリに注入されたアドオンでのみ利用可能であることに注意してください。

- -

これらの関数に加えて、アドオンが有効化、無効化される際のコールバックとして onenabledstatechange が用意されています。このイベントはすべてのアドオンに対して発火するため、初期化やクリーンアップの処理の前にどのアドオンが有効化・無効化されたのかを確認する必要があるでしょう

- -
navigator.mozApps.mgmt.addEventListener('enabledstatechange', function(event) {
-  var app = event.application;
-  if (app.manifestURL === 'https://origin.of.manifest/manifest.webapp') {
-    var wasEnabled = app.enabled;
-    // do something with this information
-  }
-});
-
- -
-

重要bug 1214155 にあるように、navigator.mozApps.mgmt.onenabledstatechange = function() {...} を通じて有効なステートリスナーを追加できません。つまり上で述べている addEventListener を使わないといけません、

-
- -

extension.zip

- -
-

脚注: extension.zip ファイルは、どのようにシステムが動作するのかといった説明のためにデモ用のリポジトリの中に配置されています。実際には、 Zip ファイルをディレクトリの中に含める必要はなく、WebIDE がアドオンをインストールする際に自動生成します。Firefox Marketplace がアドオンの掲載を始める際にも、同様にする予定となっています。

-
- -

extension.zip アーカイブはエクステンションのためのコードを含み、それらは update.webapppackage_path フィールドで指定されています。このため、Gecko がインストールするべきコードを見つけることができるのです。アーカイブのなかは以下のようになっています:

- - - -

このように manifest.json ファイルはアーカイブのなかに配置され、どのファイルをどのアプリに注入するのかを参照するために提供されます。

- -

WebIDE を利用したアドオンのテスト

- -

Mozilla の WebIDE ツールはデスクトップ版の Firefox ではじめから利用可能です。これを利用してアドオンを端末にインストールするには、以下のステップに従います:

- -
    -
  1. Firefox 43 かそれ以降のバージョンの Firefox がインストールされているか確認してください (執筆時点では Nightly バージョンが必要でした)。WebIDE でのアドオン開発はこのバージョン以降でのみサポートされています。
  2. -
  3. ブラウザを開き、WebIDE ボタンを押下する、もしくはメニューから Tools > Web Developer > WebIDE を選択して WebIDE ツールを開きます。
  4. -
  5. 端末のリモートデバッグが有効になっているかを確認します。(Settings アプリ > Developer > "Debugging via USB" の項目で "ADB and DevTools" を選択します。)
  6. -
  7. USB ケーブルを利用し端末を PC に接続します。同時に2台以上の端末が接続されていないようにしてください。
  8. -
  9. WebIDE の UI 上で、Select Runtime オプションを押下し、USB Devices に列挙されている端末のなかから接続された端末を選択します。
  10. -
  11. 現時点では、Allow USB debugging connection? というプロンプトが端末上に表示されます。Allow を選択してください。(訳注: 開発者向けビルドの場合プロンプト無しでインストール可能になっている場合もあります)
  12. -
  13. Open App オプションから Open Packaged App... を選択します。
  14. -
  15. ファイルの選択画面で update.webapp マニフェストファイルを含むディレクトリまで遷移し、Open を押下します。
  16. -
  17. 警告もエラーも報告されなければ、"Play" ボタンを押下してアドオンを端末にインストールすることができます。(Install and Run)
  18. -
  19. 動作しているアドオンを確認するには、Settings アプリ > Add-ons > Add-on example > 上部のチェックボックスにチェックしてアドオンを有効化します。
  20. -
- -

アドオンをデバッグする

- -

Please note due to バグ 1185464 にある通り、現在 WebIDE を使ってデバッグすることはできないことに気をつけてください。

- -

アドオンの設定

- -

Settings アプリ > Add-ons から端末上のアドオンを管理することができます。この項目ではインストールされたアドオンが列挙され、それぞれをタップしてそれぞれの詳細について確認することができます。

- -

firefox os screenshot showing a list of installed add-ons in the settings appinformation screen for an individual addon, with a list of apps this add-on affects, and controls to disable and delete the add-on

- -

アドオンの有効化・無効化、そして削除

- -

標準では、アドオンは Firefox Marketplace からインストールされると有効になります。WebIDE からインストールされた場合は、最初は無効化された状態になります。

- -

各アドオンのページ (Settings app > Add-ons 以下にあります) の上部のチェックボックスから、手動でアドオンを有効化、無効化することができます。また、これを自動化したい場合は navigator.mozApps.mgmt.setEnabled() 関数を利用することが可能です (この Github 上の setEnabled() 利用例 をご覧ください)。

- -

各アドオンのページにある Delete ボタンをタップすることでアドオンを削除することができます。

- -

パーミッション

- -

アドオンはホストアプリからすべてのパーミッションを継承します。アドオンのマニフェスト (update.webapp) でパーミッションを要求しても効果はなく、ホストアプリで利用できない API はアドオンにも提供されません。

diff --git a/files/ja/archive/b2g_os/add-ons/index.html b/files/ja/archive/b2g_os/add-ons/index.html deleted file mode 100644 index 6f689e46ef..0000000000 --- a/files/ja/archive/b2g_os/add-ons/index.html +++ /dev/null @@ -1,106 +0,0 @@ ---- -title: B2G OS アドオン -slug: Archive/B2G_OS/Add-ons -tags: - - Add-ons - - Apps - - Extensions - - Firefox OS - - customizations -translation_of: Archive/B2G_OS/Add-ons ---- -

- -
-

注記: B2G OS アドオンは、WebExtensions API を基礎としていて、これはデスクトップ版Firefox の42以降からサポートされており、Chrome と Operaで使われているエクステンション(拡張機能)を基礎としています。

-
- -

前提条件

- -

エクステンションの開発を始めるためのセットアップを行うには、下記のステップに従う必要があります。

- -

1. USB デバッグの有効化

- -

端末の Settings アプリで、Developer > De bugging via USB > ADB and Devtools.を選びます。ここで WebIDE を用いてインストール型のアプリを USB ケーブル Wifi 上 (USB ケーブル不要) の両方からデバッグできるはずです。

- -

2. WebIDE のセットアップ

- -

WebIDE ツールは Firefox の一部分であり、開発期間に電話機へアドオンをインストールするのに使われます — 詳しくは WebIDE を利用したアドオンのテストをご覧ください。

- -

その他の情報

- -

開発する

- - - -

参加する

- - - -
- -+
diff --git a/files/ja/archive/b2g_os/api/bluetoothmanager/enabled/index.html b/files/ja/archive/b2g_os/api/bluetoothmanager/enabled/index.html deleted file mode 100644 index f33ecec381..0000000000 --- a/files/ja/archive/b2g_os/api/bluetoothmanager/enabled/index.html +++ /dev/null @@ -1,51 +0,0 @@ ---- -title: BluetoothManager.enabled -slug: Archive/B2G_OS/API/BluetoothManager/enabled -tags: - - API - - Firefox OS - - Non Standard - - Property - - Reference - - Web Bluetooth - - WebAPI -translation_of: Archive/B2G_OS/API/BluetoothManager/enabled ---- -

- -

-

非標準
- この機能は現在 W3C の標準化のプロセスに乗っていませんが、Firefox OS プラットフォームではサポートされています。将来は動作が変わるかもしれませんし、他のブラウザーで広くサポートされているわけでもありませんが、Firefox OS アプリ専用のコードで使うには適しています。

-

- -

-

この API は 認定済みアプリのみ、 Firefox OS で有効になります。

-

- -

概要

- -

enabled プロパティはBluetoothがオン(true) またはオフ (false)であることを示します

- -
-

注: Bluetoothの有効化/無効化は Settings API bluetooth.enabled の設定を変更する事によってのみ実行されます。この設定を変更する度に BluetoothManager オブジェクトは enabled または disabled イベントを発行します。これらイベントは BluetoothManager.onenabled および BluetoothManager.ondisabled イベントハンドラを利用して取得することができます。

-
- -

構文

- -
var enabled = navigator.mozBluetooth.enabled
- -

- -

bool値を返します。

- -

仕様

- -

正式な仕様の一部ではありません。 W3C's System Applications Working Group で協議される必要があります。

- -

参考

- - diff --git a/files/ja/archive/b2g_os/api/bluetoothmanager/getdefaultadapter/index.html b/files/ja/archive/b2g_os/api/bluetoothmanager/getdefaultadapter/index.html deleted file mode 100644 index 5a504886f8..0000000000 --- a/files/ja/archive/b2g_os/api/bluetoothmanager/getdefaultadapter/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: BluetoothManager.getDefaultAdapter() -slug: Archive/B2G_OS/API/BluetoothManager/getDefaultAdapter -tags: - - API - - Method - - Non Standard - - Reference - - Web Bluetooth - - WebAPI -translation_of: Archive/B2G_OS/API/BluetoothManager/getDefaultAdapter ---- -

- -

-

非標準
- この機能は標準ではなく、標準化の予定もありません。公開されているウェブサイトには使用しないでください。ユーザーによっては使用できないことがあります。実装ごとに大きな差があることもあり、将来は振る舞いが変わるかもしれません。

-

- -

-

この API は 認定済みアプリのみ、 Firefox OS で有効になります。

-

- -

概要

- -

getDefaultAdapter メソッドは、デバイスをサードパーティー製のBluetooth デバイスと接続するためのデフォルトアダプタを取得するのに使われます。

- -

新しいアダプタがデバイスに接続される毎に、そのデバイスがデフォルトのアダプタになります。通常Firefox OSはアダプタを一つだけ有します。.

- -

構文

- -
var request = navigator.mozBluetooth.getDefaultAdapter();
- -

返値

- -

オペレーションの成功または失敗を取得するための DOMRequest オブジェクトを返します。成功した場合、リクエストの結果は BluetoothAdapter オブジェクトです。

- -

仕様

- -

正式な仕様の一部ではありません。W3C's System Applications Working Group で協議される必要があります。

- -

参考

- - diff --git a/files/ja/archive/b2g_os/api/bluetoothmanager/index.html b/files/ja/archive/b2g_os/api/bluetoothmanager/index.html deleted file mode 100644 index b508d9317b..0000000000 --- a/files/ja/archive/b2g_os/api/bluetoothmanager/index.html +++ /dev/null @@ -1,188 +0,0 @@ ---- -title: BluetoothManager (Firefox OS) -slug: Archive/B2G_OS/API/BluetoothManager -tags: - - API - - BluetoothManager - - Certified - - DOM - - Firefox OS - - Interface - - Reference - - Web Bluetooth - - WebAPI -translation_of: Archive/B2G_OS/API/BluetoothManager ---- -

- -

-

非標準
- この機能は現在 W3C の標準化のプロセスに乗っていませんが、Firefox OS プラットフォームではサポートされています。将来は動作が変わるかもしれませんし、他のブラウザーで広くサポートされているわけでもありませんが、Firefox OS アプリ専用のコードで使うには適しています。

-

- -

-

この API は 認定済みアプリのみ、 Firefox OS で有効になります。

-

- -

Web Bluetooth API のインターフェースである BluetoothManager は、デバイス上の全てのBluetoothアダプタへのアクセスを許可します。このアダプタはデバイスと他のBluetoothデバイスを接続するためのインターフェースです。

- -

インターフェース概要

- -
[CheckPermissions="bluetooth"]
-interface BluetoothManager: EventTarget
-{
-  readonly attribute BluetoothAdapter? defaultAdapter;
-
-           attribute EventHandler onattributechanged;
-           attribute EventHandler onadapteradded;
-           attribute EventHandler onadapterremoved;
-
-  sequence<BluetoothAdapter> getAdapters();
-};
- -

プロパティ

- -
-
BluetoothManager.enabled 読取専用
-
Bluetoohがオン(true) またはオフ(false)を示すbool値。
-
- -

イベントハンドラ

- -
-
BluetoothManager.onadapteradded
-
adapteradded イベントが発火した際に実行されるハンドラ。これはデバイス上でBluetoothアダプタが有効になったとき発生します。
-
BluetoothManager.onadapterremoved
-
adapterremoved イベントが発火した際に実行されるハンドラ。これはデバイス上でBluetoothアダプタが無効にされたか取り外された場合に発生します。
-
BluetoothManager.onattributechanged
-
attributechanged イベントが発火した際に実行されるハンドラ。これは BluetoothManager.defaultAdapter プロパティが変化した際に発生します。
-
- -
-

注: BluetoothManager インターフェースは EventTarget インターフェースを継承しているため、全てのイベントは addEventListener メソッドを使用して監視することが可能です。

-
- -

廃止イベントハンドラ

- -
-
BluetoothManager.onenabled
-
enabled イベントが発火した際に実行されるハンドラ。 これはBluetoothが有効になった際に発生します。
-
BluetoothManager.ondisabled
-
disabled イベントが発火した際に実行されるハンドラ。 これはBluetoothが無効になった際に発生します。
-
- -

メソッド

- -
-
BluetoothManager.getAdapters()
-
現在デバイスで使用されている BluetoothAdapter のリストを返します。
-
- -

廃止メソッド

- -
-
BluetoothManager.getDefaultAdapter()
-
デバイスで使用されているデフォルトアダプタを取得します。これはオペレーションの成功または失敗を取得するための DOMRequest を返します。成功した場合、リクエストの結果は BluetoothAdapter オブジェクトです。このメソッドは BluetoothManager.getAdapters() に置き換えられました。
-
- -

仕様

- - - - - - - - - - - - - - -
SpecificationStatusComment
Web Bluetooth
BluetoothManager の定義
ドラフト草案。これは正式な仕様ではありません。W3C's System Applications Working Group で協議が必要です
- -

ブラウザの互換性

- -

現在、互換性データを可読形式の JSON フォーマットに置き換えているところです。 - この互換性一覧は古い形式を使っており、これに含まれるデータの置き換えが済んでいません。 - 手助けしていただける場合は、こちらから!

- -
- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support未サポート未サポート未サポート未サポート未サポート
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidAndroid WebviewFirefox Mobile (Gecko)Firefox OSIE MobileOpera MobileSafari MobileChrome for Android
Bluetooth 'v2' support: getAdapters(), onattributechange, onadapterremoved未サポート未サポート未サポート2.1未サポート未サポート未サポート未サポート
Bluetooth initial support: getDefaultAdapter(), onenabled, ondisabled, onadapteradded未サポート未サポート未サポート1.0.1未サポート未サポート未サポート未サポート
-
- -

 

- -

参考

- -

 

- -

Using the Web Bluetooth API

diff --git a/files/ja/archive/b2g_os/api/bluetoothmanager/isconnected/index.html b/files/ja/archive/b2g_os/api/bluetoothmanager/isconnected/index.html deleted file mode 100644 index 1773376bb1..0000000000 --- a/files/ja/archive/b2g_os/api/bluetoothmanager/isconnected/index.html +++ /dev/null @@ -1,55 +0,0 @@ ---- -title: BluetoothManager.isConnected() -slug: Archive/B2G_OS/API/BluetoothManager/isConnected -tags: - - API - - Firefox OS - - Method - - Non Standard - - Reference - - Web Bluetooth - - WebAPI -translation_of: Archive/B2G_OS/API/BluetoothManager/isConnected ---- -

- -

-

非標準
- この機能は現在 W3C の標準化のプロセスに乗っていませんが、Firefox OS プラットフォームではサポートされています。将来は動作が変わるかもしれませんし、他のブラウザーで広くサポートされているわけでもありませんが、Firefox OS アプリ専用のコードで使うには適しています。

-

- -

-

この API は 認定済みアプリのみ、 Firefox OS で有効になります。

-

- -

概要

- -

isConnected メソッドは Bluetooth profile を持つデバイスが接続されているかをチェックするのに使用されます。

- -

このメソッドは デバイスが BluetoothAdapter.connect() メソッドに第2引数を指定せずに接続された場合に役に立ちます。なぜなら Bluetooth プロファイルはプラットフォームに依存するため、時としてBluetooth プロファイルが利用可能かどうかをチェックする必要があるためです。

- -

構文

- -
var isConnected = navigator.mozBluetooth.isConnected(profile);
- -

引数

- -
-
profile
-
Bluetooth profile に記載された数値
-
- -

返値

- -

bool値

- -

仕様

- -

正式な仕様の一部ではありません。W3C's System Applications Working Group で協議される必要があります。

- -

参考

- - diff --git a/files/ja/archive/b2g_os/api/bluetoothmanager/onadapteradded/index.html b/files/ja/archive/b2g_os/api/bluetoothmanager/onadapteradded/index.html deleted file mode 100644 index 6459c14b55..0000000000 --- a/files/ja/archive/b2g_os/api/bluetoothmanager/onadapteradded/index.html +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: BluetoothManager.onadapteradded -slug: Archive/B2G_OS/API/BluetoothManager/onadapteradded -tags: - - API - - Firefox OS - - Non Standard - - Property - - Reference - - Web Bluetooth - - WebAPI -translation_of: Archive/B2G_OS/API/BluetoothManager/onadapteradded ---- -

- -

-

非標準
- この機能は現在 W3C の標準化のプロセスに乗っていませんが、Firefox OS プラットフォームではサポートされています。将来は動作が変わるかもしれませんし、他のブラウザーで広くサポートされているわけでもありませんが、Firefox OS アプリ専用のコードで使うには適しています。

-

- -

-

この API は 認定済みアプリのみ、 Firefox OS で有効になります。

-

- -

概要

- -

adapteradded イベントを受け取るためのイベントリスナを指定します。このイベントは Bluetooth アダプタがデバイス上で有効になった際に発生します。このイベントが発生すると BluetoothManager.getDefaultAdapter() メソッドは直近で有効になったアダプタにアクセスすることが可能になります。

- -

構文

- -
navigator.mozBluetooth.onadapteradded = funcRef
- -

funcRefadapteradded イベントが発生した際に呼び出される関数です。

- -

仕様

- -

正式な仕様の一部ではありません。W3C's System Applications Working Group で協議される必要があります。

- -

参考

- - diff --git a/files/ja/archive/b2g_os/api/bluetoothmanager/ondisabled/index.html b/files/ja/archive/b2g_os/api/bluetoothmanager/ondisabled/index.html deleted file mode 100644 index e7e7306738..0000000000 --- a/files/ja/archive/b2g_os/api/bluetoothmanager/ondisabled/index.html +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: BluetoothManager.ondisabled -slug: Archive/B2G_OS/API/BluetoothManager/ondisabled -tags: - - API - - Firefox OS - - Non Standard - - Property - - Reference - - Web Bluetooth - - WebAPI -translation_of: Archive/B2G_OS/API/BluetoothManager/ondisabled ---- -

- -

-

非標準
- この機能は現在 W3C の標準化のプロセスに乗っていませんが、Firefox OS プラットフォームではサポートされています。将来は動作が変わるかもしれませんし、他のブラウザーで広くサポートされているわけでもありませんが、Firefox OS アプリ専用のコードで使うには適しています。

-

- -

-

この API は 認定済みアプリのみ、 Firefox OS で有効になります。

-

- -

概要

- -

disabled イベントを受け取るためのイベントリスナを指定します。このイベントはデバイス上でBluetoothが無効化された際に発生します。

- -

構文

- -
navigator.mozBluetooth.ondisabled = funcRef
- -

funcRefdisabled イベントが発生した際に呼び出される関数です。

- -

仕様

- -

正式な仕様の一部ではありません。W3C's System Applications Working Group で協議される必要があります。

- -

参考

- - diff --git a/files/ja/archive/b2g_os/api/bluetoothmanager/onenabled/index.html b/files/ja/archive/b2g_os/api/bluetoothmanager/onenabled/index.html deleted file mode 100644 index ce4bc4e086..0000000000 --- a/files/ja/archive/b2g_os/api/bluetoothmanager/onenabled/index.html +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: BluetoothManager.onenabled -slug: Archive/B2G_OS/API/BluetoothManager/onenabled -tags: - - API - - Firefox OS - - Non Standard - - Property - - Reference - - Web Bluetooth - - WebAPI -translation_of: Archive/B2G_OS/API/BluetoothManager/onenabled ---- -

- -

-

非標準
- この機能は現在 W3C の標準化のプロセスに乗っていませんが、Firefox OS プラットフォームではサポートされています。将来は動作が変わるかもしれませんし、他のブラウザーで広くサポートされているわけでもありませんが、Firefox OS アプリ専用のコードで使うには適しています。

-

- -

-

この API は 認定済みアプリのみ、 Firefox OS で有効になります。

-

- -

概要

- -

enabled イベントを受け取るためのイベントリスナを指定します。このイベントはデバイス上でBluetoothが有効になった際に発生します。

- -

構文

- -
navigator.mozBluetooth.onenabled = funcRef
- -

funcRefenabled イベントが発生した際に呼び出される関数です。

- -

仕様

- -

正式な仕様の一部ではありません。W3C's System Applications Working Group で協議される必要があります。

- -

参考

- - diff --git a/files/ja/archive/b2g_os/api/callevent/index.html b/files/ja/archive/b2g_os/api/callevent/index.html deleted file mode 100644 index 45aec0f7bc..0000000000 --- a/files/ja/archive/b2g_os/api/callevent/index.html +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: CallEvent -slug: Archive/B2G_OS/API/CallEvent -tags: - - API - - B2G - - CallEvent - - Event - - Firefox OS - - Interface - - Mobile - - Non-standard - - Reference - - Telephony - - events -translation_of: Archive/B2G_OS/API/CallEvent ---- -
- -
-

この API は 認定済みアプリのみ、 Firefox OS で有効になります。

-
- -

Web Telephony APICallEvent インターフェイスは、電話の通話に関連するイベントを表します。

- -

プロパティ

- -
-
CallEvent.call 読取専用
-
イベント発生元からの通話を表す TelephonyCall オブジェクト。
-
- -

- -
// Telephony object
-var tel = navigator.mozTelephony;
-
-// Receive a call
-tel.onincoming = function(e) {
-  var incomingCall = e.call;
-
-  // Answer the call
-  incomingCall.answer();
-};
- -

仕様

- - - - - - - - - - - - - - - - -
仕様状態コメント
Web TelephonyドラフトDraft
- -

ブラウザ実装状況

- -

現在、互換性データを可読形式の JSON フォーマットに置き換えているところです。 - この互換性一覧は古い形式を使っており、これに含まれるデータの置き換えが済んでいません。 - 手助けしていただける場合は、こちらから!

- -
- - -

- -
- - - - - - - - - - - - - - - - - - - -
機能ChromeFirefox (Gecko)Internet ExplorerOperaSafari
基本サポート未サポート未サポート未サポート未サポート未サポート
-
- -
- - - - - - - - - - - - - - - - - - - - - -
機能AndroidFirefox Mobile (Gecko)Firefox OS (Gecko)IE MobileOpera MobileSafari Mobile
基本サポート未サポート12.0 (12.0)1.0.1未サポート未サポート未サポート
-
- -

関連情報

- - diff --git a/files/ja/archive/b2g_os/api/domapplication/index.html b/files/ja/archive/b2g_os/api/domapplication/index.html deleted file mode 100644 index c14b8d8804..0000000000 --- a/files/ja/archive/b2g_os/api/domapplication/index.html +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: App -slug: Archive/B2G_OS/API/DOMApplication -tags: - - Apps - - Apps API - - Manifest - - Methods - - Non-standard -translation_of: Archive/B2G_OS/API/DOMApplication ---- -
-
-

非標準
- この機能は標準ではなく、標準化の予定もありません。公開されているウェブサイトには使用しないでください。ユーザーによっては使用できないことがあります。実装ごとに大きな差があることもあり、将来は振る舞いが変わるかもしれません。

-
-

Open Web Apps の JavaScript API において、App オブジェクトは、ユーザのアプリディレクトリにインストールされている、あるいはインストールできるアプリを表す JavaScript オブジェクトです。

-

プロパティ

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
名前意味
manifestアプリの マニフェスト の現在保存されているインスタンス。object
manifestURLマニフェストが見つかった場所。string
originアプリの生成元 (プロトコル、ホスト、オプションでポート番号)。例えば http://example.comstring
installOriginアプリのインストールを実行したサイトの生成元。string
installTimeアプリがインストールされた時刻。これは Date().getTime() を使って生成され、1970 年 1 月 1 日午前 0 時からのミリ秒数で表されます。integer
receipts1 つあるいは複数のレシートの配列を含んだオブジェクト。各レシートは文字列です。レシートがない場合、これは null となります。object または null
-

メソッド

- - - - - - - - - - - - - - - - - -
メソッド意味
launch()アプリを起動します。値を返しません。
checkForUpdate() -

アプリが更新されたかどうかを確認します。DOMRequest オブジェクトを返します。

-

パッケージ型アプリ については、更新を確認し、必要なら downloadavailable フラグを立てます。

-

ホスト型アプリについては、アプリマニフェストとアプリケーションキャッシュ上で更新を確認し、必要なら更新を行います。

-
-

App オブジェクトの例

-
{
-  manifest: {
-    name: "Add-on Builder",
-    default_locale: "en",
-    installs_allowed_from: [
-      "https://apps-preview-dev.example.com/",
-      "https://apps-preview.example.com/"
-    ],
-    description: "Add-on Builder makes it easy to write, build and test Firefox extensions using common web technologies.",
-    version: "0.9.16.1",
-    developer: {
-      url: "https://builder.addons.mozilla.org/",
-      name: "Mozilla Flightdeck Team"
-    }
-  },
-  origin: "https://builder-addons-dev.example.com",
-  installTime: 1321986882773,
-  installOrigin: "https://apps-preview-dev.example.com",
-  receipts: ["h0dHBzOi8v (most of receipt removed here) Tg2ODtkUp"]
-}
diff --git a/files/ja/archive/b2g_os/api/index.html b/files/ja/archive/b2g_os/api/index.html deleted file mode 100644 index 472f075af6..0000000000 --- a/files/ja/archive/b2g_os/api/index.html +++ /dev/null @@ -1,831 +0,0 @@ ---- -title: B2G OS APIs -slug: Archive/B2G_OS/API -tags: - - API - - B2G API - - b2g os api's -translation_of: Archive/B2G_OS/API ---- -

B2G OS API一覧 - -

-A -B -C -D -E -F -G -H -I - - -K -L -M -N -O -P - - -R -S -T -U -V -W -X - - - - - -

diff --git a/files/ja/archive/b2g_os/api/mozndefrecord/index.html b/files/ja/archive/b2g_os/api/mozndefrecord/index.html deleted file mode 100644 index 708f45ecf0..0000000000 --- a/files/ja/archive/b2g_os/api/mozndefrecord/index.html +++ /dev/null @@ -1,127 +0,0 @@ ---- -title: MozNDEFRecord -slug: Archive/B2G_OS/API/MozNDEFRecord -tags: - - API - - Firefox OS - - Interface - - MozNDEFRecord - - NDEFRecord - - NFC - - Reference -translation_of: Archive/B2G_OS/API/MozNDEFRecord ---- -

-

この API は Firefox OS 上の特権付きアプリ、または認定済みアプリからのみ有効になります。

-

- -

MozNDEFRecord はNFC データ交換フォーマット (NDEF) を実装するデータ構造です。これはアプリ、NFCタグ、デバイスの間で NFC関連のデータ通信をするための標準的な共通フォーマットです。

- -

文法

- -
MozNDEFRecord(optional MozNDEFRecordOptions options);
-dictionary MozNDEFRecordOptions {
-  TNF tnf = "empty";
-  Uint8Array type;
-  Uint8Array id;
-  Uint8Array payload;
-};
-
- -

プロパティ

- -
-
MozNDEFRecord.tnf 読取専用
-
tnf は、レコードのタイプ名フォーマット (3-bit フィールド) を含みます。この項目は必須です。
-
MozNDEFRecord.type 読取専用
-
type はペイロードのコンテンツを記述したオプションのフィールドです。通常はMIMEタイプになります。
-
- -
-
MozNDEFRecord.id 読取専用
-
idUint8Array を表すオプションのフィールドです。このフィールドの意味はアプリケーション依存です (機能性によって、適切なidが使用できます)
-
MozNDEFRecord.payload 読取専用
-
payloadUint8Array を表すオプションのフィールドです。。このフィールドの意味はアプリケーション依存です (例えば、連絡帳アプリでは、URLや、MIMEタイプや、住所などを含みます)
-
- -

仕様

- -

Gecko での NFC の実装は、NFC フォーラムの仕様に従っています。

- -
-
- -

ブラウザ互換性

- -

現在、互換性データを可読形式の JSON フォーマットに置き換えているところです。 - この互換性一覧は古い形式を使っており、これに含まれるデータの置き換えが済んでいません。 - 手助けしていただける場合は、こちらから!

- -
- - -

- -
- - - - - - - - - - - - - - - - - - - -
機能ChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
基本部分 -

未サポート

-
未サポート未サポート未サポート未サポート
-
- -
- - - - - - - - - - - - - - - - - - - - - -
機能AndroidFirefox Mobile (Gecko)Firefox OS (Gecko)IE PhoneOpera MobileSafari Mobile
基本部分未サポート未サポート2.0 moz [1]未サポート未サポート未サポート
-
- -

[1] Firefox OS 2.2 以降では、特権付きアプリから利用可能; それより前のバージョンでは、認定アプリでのみ利用可能。

- -

こちらも見よ

- - diff --git a/files/ja/archive/b2g_os/api/moznfcpeer/index.html b/files/ja/archive/b2g_os/api/moznfcpeer/index.html deleted file mode 100644 index 26d9ae5eb4..0000000000 --- a/files/ja/archive/b2g_os/api/moznfcpeer/index.html +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: MozNFCPeer -slug: Archive/B2G_OS/API/MozNFCPeer -translation_of: Archive/B2G_OS/API/MozNFCPeer ---- -

- -

-

この API は Firefox OS 上の特権付きアプリ、または認定済みアプリからのみ有効になります。

-

- -
-

NFCPeer は、他のNFC対応デバイスと相互作用するピアツーピア (P2P)インターフェイスを提供します。これは NDEF メッセージの送信と、ファィル送信に使われます。

-
- -

メソッド

- -
-
MozNFCPeer.sendFile()
-
sendFile() sends files to other NFC-enabled devices. This should be called inside a mozNFC.onpeerfound() event callback.  This method is available in certified apps only.
-
MozNFCPeer.sendNDEF()
-
sendNDEF() sends NDEF Messages to other NFC-enabled devices. This should be called inside a mozNFC.onpeerfound() event callback.
-
- -

サンプル

- -
navigator.mozNfc.onpeerfound = function (evt) {
-  var peer = evt.peer;
-  // ndef is an instance of MozNDEFRecord contains the shared data, like URL.
-  peer.sendNDEF([ndef]);
-};
-
- -

仕様

- -

The NFC implementation in Gecko follows the NFC Forum specifications.

- -
-
- -

ブラウザ互換性

- -

現在、互換性データを可読形式の JSON フォーマットに置き換えているところです。 - この互換性一覧は古い形式を使っており、これに含まれるデータの置き換えが済んでいません。 - 手助けしていただける場合は、こちらから!

- -
- - -

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support -

未サポート

-
未サポート未サポート未サポート未サポート
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)Firefox OS (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support未サポート未サポート2.0 moz [1]未サポート未サポート未サポート
-
- -

[1] Available in privileged apps as of Firefox OS 2.2; certified-only before that.

- -

こちらも見よ

- - diff --git a/files/ja/archive/b2g_os/api/moznfctag/index.html b/files/ja/archive/b2g_os/api/moznfctag/index.html deleted file mode 100644 index 0625c8b98c..0000000000 --- a/files/ja/archive/b2g_os/api/moznfctag/index.html +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: MozNFCTag -slug: Archive/B2G_OS/API/MozNFCTag -tags: - - API - - Firefox OS - - MozNFCTag - - NFC - - NFCTag - - Reference -translation_of: Archive/B2G_OS/API/MozNFCTag ---- -

- -

-

この API は Firefox OS 上の特権付きアプリ、または認定済みアプリからのみ有効になります。

-

- -

MozNFCTag は NDEF-コンパチな NFC を読み書き、検査するのに必要な基本機能を含みます。

- -

メソッド

- -
-
MozNFCTag.makeReadOnly()
-
Calling makeReadOnly() will make the NDEF stored on this tag read only. Avalable in Firefox OS 2.2+.
-
MozNFCTag.format()
-
Formats this tag as NDEF-compatible. Avalable in Firefox OS 2.2+.
-
MozNFCTag.readNDEF()
-
readNDEF() retrieves the NDEF contents stored on this Tag, and returns the NDEF as an array of MozNDEFRecord objects.
-
MozNFCTag.writeNDEF()
-
writeNDEF() takes an array of MozNDEFRecord objects, and writes them to a NDEF-compatible tag.
-
- -

プロパティ

- -
-
 MozNFCTag.techList 読取専用
-
The supported NFC Technologies of this tag.
-
MozNFCTag.id 読取専用
-
The identifier of this tag.
-
MozNFCTag.type 読取専用
-
The type of this tag,
-
MozNFCTag.maxNDEFSize 読取専用
-
The maximum size of NDEF can be stored on this tag.
-
MozNFCTag.isReadOnly 読取専用
-
Indicate whether the NDEF content stored on this tag read-only or not.
-
MozNFCTag.isFormatable 読取専用
-
Inidicate whether this tag is NDEF-compatible or not.
-
MozNFCTag.canBeMadeReadOnly 読取専用
-
Indicate whether the NDEF stored on this tag could be configured as read-only or not.
-
MozNFCTag.isLost 読取専用
-
Indicate whether if this tag is already lost. (i.e. is moved out of range) 
-
- -

仕様

- -

The NFC implementation in Gecko follows the NFC Forum specifications.

- -
-
- -

ブラウザ互換性

- -

現在、互換性データを可読形式の JSON フォーマットに置き換えているところです。 - この互換性一覧は古い形式を使っており、これに含まれるデータの置き換えが済んでいません。 - 手助けしていただける場合は、こちらから!

- -
- - -

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support -

未サポート

-
未サポート未サポート未サポート未サポート
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox Mobile (Gecko)Firefox OS (Gecko)IE PhoneOpera MobileSafari Mobile
Basic support未サポート未サポート2.0 moz [1]未サポート未サポート未サポート
-
- -

[1] Available in privileged apps as of Firefox OS 2.2; certified-only before that.

- -

こちらも見よ

- - diff --git a/files/ja/archive/b2g_os/api/navigator/index.html b/files/ja/archive/b2g_os/api/navigator/index.html deleted file mode 100644 index 9baa00de3c..0000000000 --- a/files/ja/archive/b2g_os/api/navigator/index.html +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Navigator (Firefox OS extensions) -slug: Archive/B2G_OS/API/Navigator -tags: - - API - - Firefox OS - - Interface - - Navigator - - NeedsTranslation - - Non-standard - - TopicStub -translation_of: Archive/B2G_OS/API/Navigator ---- -

- -

The Navigator interface represents the state and the identity of the user agent. It allows scripts to query it and to register themselves to carry on some activities. This page represents the list of properties and methods added to Navigator on Firefox OS devices. For the list of properties and methods available to any Web sites, consult Navigator.

- -

A Navigator object can be retrieved using the read-only Window.navigator property.

- -

Properties

- -
-
Navigator.Bluetooth 読取専用  
-
Returns a Promise to a BluetoothDevice object with the specified options.
-
Navigator.mozApps
-
Returns an Apps object you can use to install, manage, and control Open Web apps.
-
Navigator.mozAudioChannelManager
-
The navigator.mozAudioChannelManager object provides access to the mozAudioChannelManager interface, which is used to manage your Firefox OS device's audio channels, including setting what channel's volume to affect when the volume buttons are pressed inside a particular app.
-
diff --git a/files/ja/archive/b2g_os/api/navigator/mozapps/index.html b/files/ja/archive/b2g_os/api/navigator/mozapps/index.html deleted file mode 100644 index 160f21a965..0000000000 --- a/files/ja/archive/b2g_os/api/navigator/mozapps/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: window.navigator.mozApps -slug: Archive/B2G_OS/API/Navigator/mozApps -tags: - - API - - Apps - - Apps API - - Non-standard - - Property -translation_of: Archive/B2G_OS/API/Navigator/mozApps ---- -

-

-

非標準
- この機能は標準ではなく、標準化の予定もありません。公開されているウェブサイトには使用しないでください。ユーザーによっては使用できないことがあります。実装ごとに大きな差があることもあり、将来は振る舞いが変わるかもしれません。

-

-

概要

-

ブラウザ内で Open Web Apps をインストール、管理、コントロールするために使用できる Apps オブジェクトを返します。

-

構文

-
var apps = window.navigator.mozApps;
-
-

-

navigator.mozApps は、ブラウザ内で Open Web Apps をインストール、管理、コントロールするために使用できる Apps オブジェクトです。

-

仕様

-

どの仕様書にも書かれていません。バグ 697383 に基づき Gecko に実装されています。

-

ブラウザ実装状況

-

現在、互換性データを可読形式の JSON フォーマットに置き換えているところです。 - この互換性一覧は古い形式を使っており、これに含まれるデータの置き換えが済んでいません。 - 手助けしていただける場合は、こちらから!

- -
- - -

-
- - - - - - - - - - - - - - - - - - - -
機能ChromeFirefox (Gecko)Internet ExplorerOperaSafari
基本実装---11.0 (11.0)---------
-
-
- - - - - - - - - - - - - - - - - - - -
機能AndroidFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
基本実装---11.0 (11.0)---------
-
-

 

diff --git a/files/ja/archive/b2g_os/api/navigator/mozsetmessagehandler/index.html b/files/ja/archive/b2g_os/api/navigator/mozsetmessagehandler/index.html deleted file mode 100644 index 915dcf65e6..0000000000 --- a/files/ja/archive/b2g_os/api/navigator/mozsetmessagehandler/index.html +++ /dev/null @@ -1,265 +0,0 @@ ---- -title: Navigator.mozSetMessageHandler() -slug: Archive/B2G_OS/API/Navigator/mozSetMessageHandler -tags: - - API - - B2G - - Firefox OS - - Method - - Reference - - Référence(2) - - Web Activities - - Web アクティビティ - - WebAPI - - alarm -translation_of: Archive/B2G_OS/API/Navigator/mozSetMessageHandler ---- -

-

この API は Firefox OS 上で ウェブコンテンツまたは高度の権限を持つアプリより利用できます。

-

- -

概要

- -

アプリケーションはこのメソッドを使って、システムからのメッセージを処理してそれに反応する関数を登録できます。

- -

どのアプリケーションをどのメッセージに対して登録することもできますが、対応する許可設定があるアプリケーションにのみ送信されるメッセージもあります。例えば sms-received メッセージは sms の許可設定があるアプリケーションにのみ送信されます。

- -

システムメッセージは DOM イベントとは反対に、アプリケーションにそのハンドラーがない場合にはキューに残り続けます。アプリケーションにキューに入ったメッセージがあるかは、引数として適切なタイプを渡して navigator.mozHasPendingMessage() を呼ぶことでチェックできます。メッセージハンドラーが設定されると、キューにある全メッセージが非同期にアプリケーションに渡されます。

- -

構文

- -
navigator.mozSetMessageHandler(type, handler);
- -

引数

- -
-
 
-
type
-
type は、登録するハンドラーがどの種類のメッセージ用かを表す文字列です。
-
handler
-
システムがメッセージを送信するとハンドラーが呼ばれます。ハンドラーが受け取る引数はメッセージタイプによって決まります。
-
- -

メッセージタイプ

- -

現在、Firefox OS では以下のメッセージを登録できます。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
メッセージ名ハンドラーのシグニチャー許可設定
activityf( MozActivityRequestHandler request ) 
alarmf( object unknown )alarms
bluetooth-cancelf( object unknown )bluetooth
bluetooth-dialer-commandf( object unknown )bluetooth
bluetooth-hfp-status-changedf( object unknown )bluetooth
bluetooth-opp-transfer-startf( object unknown )bluetooth
bluetooth-opp-transfer-completef( object unknown )bluetooth
bluetooth-opp-receiving-file-confirmationf( object unknown )bluetooth
bluetooth-opp-update-progressf( object unknown )bluetooth
bluetooth-pairedstatuschangedf( object unknown )bluetooth
bluetooth-requestconfirmationf( object unknown )bluetooth
bluetooth-requestpincodef( object unknown )bluetooth
bluetooth-requestpasskeyf( object unknown )bluetooth
headset-buttonf( object unknown ) 
icc-stkcommandf( object command )settings
notificationf( object unknown ) 
pushf( object registration )push
push-registerf (  )push
sms-receivedf( SmsMessage sms )sms
sms-sentf( SmsMessage sms )sms
telephony-call-endedf( object call )telephony
telephony-new-callf( )telephony
ussd-receivedf( object ussd )mobileconnection
wappush-receivedf( object wappush )wappush
- -

仕様

- - - - - - - - - - - - - - -
仕様状態
Unknown不明システムメッセージングのインターフェイスを定義。
- -

ブラウザー互換性

- -

We're converting our compatibility data into a machine-readable JSON format. - This compatibility table still uses the old format, - because we haven't yet converted the data it contains. - Find out how you can help!

- -
- - -

- -
- - - - - - - - - - - - - - - - - - - -
FeatureChromeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
Basic support未サポート未サポート未サポート未サポート未サポート
-
- -
- - - - - - - - - - - - - - - - - - - - - -
FeatureAndroidFirefox OSFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
Basic support未サポート1.0未サポート未サポート未サポート未サポート
-
- -

関連項目

- - diff --git a/files/ja/archive/b2g_os/api/navigator/moztelephony/index.html b/files/ja/archive/b2g_os/api/navigator/moztelephony/index.html deleted file mode 100644 index 9af95b42be..0000000000 --- a/files/ja/archive/b2g_os/api/navigator/moztelephony/index.html +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Navigator.mozTelephony -slug: Archive/B2G_OS/API/Navigator/mozTelephony -tags: - - API - - Certified - - Firefox OS - - Mobile - - Non-standard - - Property - - Telephony -translation_of: Archive/B2G_OS/API/Navigator/MozTelephony ---- -

-

この API は 認定済みアプリのみ、 Firefox OS で有効になります。

-

- -

概要

- -

ブラウザから電話の通話の初期化と制御に使用できる Telephony オブジェクトを返します。

- -

構文

- -
var phone = window.navigator.mozTelephony;
-
- -

- -

navigator.mozTelephony は、Telephony オブジェクトへのアクセスを提供します。これは、ブラウザを実行中の端末の電話機能を制御するために使用します。

- -

仕様

- - - - - - - - - - - - - - - - -
仕様状態コメント
Web TelephonyドラフトDraft
- -

ブラウザ実装状況

- -

明らかな理由により、サポートはモバイルブラウザが優先されます。

- -

現在、互換性データを可読形式の JSON フォーマットに置き換えているところです。 - この互換性一覧は古い形式を使っており、これに含まれるデータの置き換えが済んでいません。 - 手助けしていただける場合は、こちらから!

- -
- - -

- -
- - - - - - - - - - - - - - - - - - - -
機能ChromeFirefox (Gecko)Internet ExplorerOperaSafari
基本サポート未サポート未サポート未サポート未サポート未サポート
-
- -
- - - - - - - - - - - - - - - - - - - - - -
機能AndroidFirefox Mobile (Gecko)Firefox OS (Gecko)IE MobileOpera MobileSafari Mobile
基本サポート未サポート12.0 (12.0)1.0.1未サポート未サポート未サポート
-
- -

関連情報

- - diff --git a/files/ja/archive/b2g_os/api/telephonycall/index.html b/files/ja/archive/b2g_os/api/telephonycall/index.html deleted file mode 100644 index efbd51179c..0000000000 --- a/files/ja/archive/b2g_os/api/telephonycall/index.html +++ /dev/null @@ -1,237 +0,0 @@ ---- -title: TelephonyCall -slug: Archive/B2G_OS/API/TelephonyCall -tags: - - API - - B2G - - Certified - - DOM - - DOM Reference - - Firefox OS - - Mobile - - Non-standard - - Reference - - Telephony -translation_of: Archive/B2G_OS/API/TelephonyCall ---- -

-

この API は 認定済みアプリのみ、 Firefox OS で有効になります。

-

- -

Web Telephony APITelephonyCall インターフェイスは、1 回の電話の通話を表します。通話に関する情報を提供し、通話の制御と通話の状態変化を検出する機構が使用できます。

- -

プロパティ

- -
-
TelephonyCall.disconnectedReason 読取専用
-
通話が切断された理由を示す DOMString 文字列 (原因がエラーによるものか、通話が終了したか、応答が無かったかなど)。
-
TelephonyCall.emergency 読取専用
-
発信番号が緊急通報の番号かどうかを示す Boolean 値。
-
TelephonyCall.group 読取専用
-
TelephonyCallGroup (グループ通話) が属する先 (もしあれば) を示す DOMString 文字列。
-
TelephonyCall.id 読取専用
-
通話に対応する電話番号を示す DOMString 文字列。
-
TelephonyCall.secondId 読取専用
-
CDMA ネットワークで通話中に着信があった場合の電話番号を示す DOMString 文字列。
-
TelephonyCall.mergeable 読取専用
-
現在の通話が TelephonyCallGroup (グループ通話) に追加できるかどうかを示す Boolean 値。
-
TelephonyCall.serviceId 読取専用
-
発信者のサービス名を示す DOMString 文字列。
-
TelephonyCall.state 読取専用
-
通話の状態を示す DOMString 文字列。
-
TelephonyCall.switchable 読取専用
-
現在の通話が "connected" と "held" を切り替えられるかどうかを示す Boolean 値。
-
- -

イベントハンドラ

- -
-
TelephonyCall.onalerting
-
キャリアとの接続待ち中に、呼び出し音 (アラート) 発生時に呼び出される関数。
-
TelephonyCall.onconnected
-
通話が接続された時に一度呼び出される関数。
-
TelephonyCall.onconnecting
-
ダイヤル入力後の接続相手を待つ間に呼び出される関数。
-
TelephonyCall.ondialing
-
通話の ダイヤル番号 の入力開始時に呼び出される関数。
-
TelephonyCall.ondisconnected
-
通話を終了し、切断した後に呼び出される関数。
-
TelephonyCall.ondisconnecting
-
通話の切断を開始した時に呼び出される関数。
-
TelephonyCall.ongroupchange
-
通話の TelephonyCallGroup (および TelephonyCall.group プロパティ) が変化した時に呼び出される関数。
-
TelephonyCall.onholding
-
通話を保留状態にする指示が発行された時に呼び出される関数。
-
TelephonyCall.onheld
-
通話が保留中の時に呼び出される関数。
-
TelephonyCall.onresuming
-
直前の保留から通話が再開される時に呼び出される関数。
-
TelephonyCall.onstatechange
-
通話状態 が変化した時に呼び出される関数。
-
- -

廃止されたプロパティ

- -
-
TelephonyCall.error 読取専用
-
通話の接続成功時に返されるエラーを示す DOMString 文字列。これは、エラーメッセージが返されると混乱するため廃止され、よりセマンティックな効果のある TelephonyCall.disconnectedReason に置き換えられました。
-
TelephonyCall.number 読取専用
-
通話に対応する電話番号を示す DOMString 文字列。Firefox OS 2.0 以降で TelephonyCall.id に置き換えられました。
-
TelephonyCall.secondNumber 読取専用
-
CDMA ネットワークで通話中に着信があった場合の電話番号を示す DOMString 文字列。Firefox OS 2.0 以降で TelephonyCall.SecondId に置き換えられました。
-
- -

廃止されたイベントハンドラ

- -
-
TelephonyCall.onerror
-
エラーにより通話が成功しなかった時に呼び出される関数。これは、TelephonyCall.ondisconnected とよく似ていますが、セマンティック的により狭く役立たないため廃止されました。
-
TelephonyCall.onincoming
-
着信呼び出しが検出された時に呼び出される関数。
-
- -

メソッド

- -

TelephonyCall は、EventTarget インターフェイスからのメソッドも継承します。

- -
-
TelephonyCall.answer()
-
着信呼び出しに応答します。
-
TelephonyCall.hangUp()
-
通話を終了します。
-
TelephonyCall.hold()
-
通話を保留にします。
-
TelephonyCall.resume()
-
直前に保留になっていた通話を再開します。
-
- -

- -
// Telephony object
-var tel = navigator.mozTelephony;
-
-// Place a call
-tel.dial("123456789").then(function(call) {
-  call.number;
-});
-
-// Receive a call
-tel.onincoming = function (e) {
-  var incomingCall = e.call;
-
-  // Get the id/number of the incoming call
-  console.log(incomingCall.id);
-
-  // Answer the call
-  incomingCall.answer();
-};
- -

仕様

- - - - - - - - - - - - - - - - -
仕様状態コメント
Web TelephonyドラフトDraft
- -

ブラウザ実装状況

- -

明らかな理由により、サポートはモバイルブラウザが優先されます。

- -

現在、互換性データを可読形式の JSON フォーマットに置き換えているところです。 - この互換性一覧は古い形式を使っており、これに含まれるデータの置き換えが済んでいません。 - 手助けしていただける場合は、こちらから!

- -
- -
- - - - - - - - - - - - - - - - - - - -
機能ChromeFirefox (Gecko)Internet ExplorerOperaSafari
基本サポート未サポート未サポート未サポート未サポート未サポート
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
機能AndroidFirefox Mobile (Gecko)Firefox OS (Gecko)IE MobileOpera MobileSafari Mobile
基本サポート未サポート12.0 (12.0)1.0.1未サポート未サポート未サポート
id および secondId未サポート30.0 (30.0)2.0未サポート未サポート未サポート
disconnectedReason未サポート37.0 (37.0)2.2未サポート未サポート未サポート
-
- -

関連情報

- - diff --git a/files/ja/archive/b2g_os/architecture/index.html b/files/ja/archive/b2g_os/architecture/index.html deleted file mode 100644 index e07d7b48ca..0000000000 --- a/files/ja/archive/b2g_os/architecture/index.html +++ /dev/null @@ -1,752 +0,0 @@ ---- -title: B2G OS のアーキテクチャ -slug: Archive/B2G_OS/Architecture -tags: - - Architecture - - B2G OS - - Guide - - IPC - - IPDL -translation_of: Archive/B2G_OS/Architecture ---- -
-

この記事では、B2G OS プラットフォームの高水準層の概要、主要なコンセプトの紹介、そして高水準層のコンポーネントがどのように低水準層と対話するかを説明します。

-
- -
-

注記: B2G OS はまだプレリリース段階の製品であることを忘れないようにしてください。ここで説明するアーキテクチャは必ずしも最終的なものではなく、変更される場合があります。

-
- -

B2G OS の用語

- -

B2G OS のドキュメントをさらに読み進める前に理解しておくべき用語がいくつかあります。

- -
-
B2G
-
Boot to Gecko の略語です。
-
Boot to Gecko
-
B2G OS オペレーティングシステムのエンジニアリングコードネームです。プロジェクトに正式な名称がつくまでの長い間この言葉が使われたため、これが B2G OS を指す言葉として使われるのをよく見るでしょう。
-
B2G OS
-
B2G OS は基本的に、最終リリース製品を製造するため Boot to Gecko に加えられた、Mozilla (および OEM パートナー) のブランディングとサポートサービスです。
-
Gaia
-
B2G OS プラットフォームのユーザインタフェースです。B2G OS が起動してからスクリーンに描画されるものはすべて、Gaia 層で書かれています。Gaia はロックスクリーン、ホームスクリーン、そして現代的なスマートフォンに求められる標準的なアプリケーションを実装します。Gaia はすべて、HTML、CSS、JavaScript で実装されています。下層のオペレーティングシステムとの唯一のインタフェースはオープンな Web API であり、それらは Gecko 層で実装されています。サードパーティのアプリケーションも、Gaia 層と一緒にインストールできます。
-
Gecko
-
これは、B2G OS のアプリケーションランタイムです。すなわち HTML、CSS、JavaScript という 3 つのオープン標準のすべてをサポートする層です。Gecko がサポートするすべてのオペレーティングシステムで、それらの API が良好に動作することを確実にします。つまり Gecko には、例えばネットワークスタック、グラフィックスタック、レイアウトエンジン、JavaScript 仮想マシン、ポーティング層を含みます。
-
Gonk
-
Gonk は B2G OS プラットフォームの低水準のオペレーティングシステムであり、Linux カーネル (Android Open Source Project (AOSP) を基にしています) とユーザ空間の Hardware Abstraction Layer (HAL) で構成されます。カーネルといくつかのユーザ層のライブラリーは、一般的なオープンソースプロジェクトのものです: Linux、libusb、bluez などです。HAL の他の部分には、Android プロジェクトと共有しているものもあります: GPS、カメラなどです。Gonk はとてもシンプルな Linux ディストリビューションであると表せます。Gonk は Gecko の移植対象です。つまり OS X、Windows、Android に移植した Gecko があるように、Gonk に移植した Gecko があります。B2G OS プロジェクトは Gonk を完全に管理しているため、他のオペレーティングシステムでは Gecko に開放されていないインタフェースを開放することができます。例えば、Gonk では Gecko がテレフォニースタック全体やディスプレイのフレームバッファーへ直接アクセスできますが、他のオペレーティングシステムではこれらにアクセスできません。
-
Jank
-
モバイルアプリの分野でよく使用されるこの用語は、アプリ内の遅い、あるいは非効率なコード処理による影響を指します。これは UI の更新を妨げ、遅延や応答性の悪さを引き起こします。Gaia のエンジニアは何としてもこのような状態を避けるために、さまざまな最適化手法を使用しています。
-
- -

アーキテクチャの全体像

- -

以下の図は、プロプライエタリなプラットフォームと B2G OS のアーキテクチャを比較したものです。

- -

on the left is a native mobile architecture stack, on the right is the B2G OS architecture. they are similarm except that the native stack is all proprietary device functionality, and the B2G OS stack is all done with open source and web technologies.

- -

B2G OS では、オペレーティングシステムとアプリケーション層の間のネイティブ API がありません。この統合された設計により、パフォーマンスやユーザのリッチなスマートフォン体験を犠牲にすることなく、プラットフォームのオーバーヘッドを軽減するとともにセキュリティを簡略化します。

- -
    -
  1. Gaia はデバイスの中心的な Web アプリおよびユーザインターフェイス層です。これは HTML5、CSS、JavaScript で記述されており、UI がハードウェアや Gecko の機能と対話できるようにするためのさまざまな API を公開しています。
  2. -
  3. Gecko は B2G OS の Web エンジンおよびプレゼンテーション層であり、Web コンテンツと下層のデバイスの間のインターフェイスを提供することにより、ハードウェアと HTML を接続します。Gecko は HTML5 のパースとレンダリングエンジン、セキュアな Web API を通してハードウェア機能へプログラムからアクセス、包括的なセキュリティフレームワーク、アップデート管理、その他のコアサービスといった機能を提供します。
  4. -
  5. Gonk は B2G OS スタックのカーネルレベルのコンポーネントであり、Gecko と下層のハードウェアの間のインターフェイスとして働きます。Gonk は下層のハードウェアを制御して、ハードウェアの機能を Gecko に実装された Web API に公開します。Gonk はハードウェアレベルの要求を定めることによりモバイルデバイスを制御するため、内部で複雑かつ詳細な処理すべてを行う "ブラックボックス" であると考えることができます。
  6. -
  7. モバイルデバイスは、B2G OS を実行する携帯電話機器です。OEM がモバイルデバイスの供給について責任を持ちます。
  8. -
- -

B2G OS の詳細なアーキテクチャ

- -

B2G OS Architecture

- -

B2G OS のブート手順

- -

このセクションでは B2G OS デバイスのブートプロセスについて、どの部分がどのように関わるかを説明します。要約すると一般的なシステムの起動フローは、カーネル空間のブートローダーから始まりネイティブコードの init、B2G、ユーザ空間の Gecko、そしてシステムアプリ、ウィンドウマネージャー、Gecko 内のホームスクリーンアプリと進みます。これらの上で、他のアプリすべてを実行します。

- -

- -

ブートストラッププロセス

- -

B2G OS デバイスでまず電源を入れると、プライマリブートローダが実行されます。そこから主要なオペレーティングシステムを読み込むプロセスが、典型的な方法で進みます。これはチェイン内で順次、高水準ブートローダが次のローダを起動することの連鎖です。プロセスの最終段階で、実行は Linux カーネルに引き渡されます。

- -

ブートプロセスについて注意すべき点がいくつかあります:

- - - -

Linux カーネル

- -

Gonk で使用される Linux カーネルは、派生元である上流の Linux によく似ています (Android Open Source Project に基づきます)。AOSP によって行われたが上流に反映されていない変更点もあります。加えて、時にベンダーはカーネルに変更を加えて、彼ら自身のスケジュールに基づいて上流に反映させます。もっとも、一般的には Linux カーネルに集積されていきます。

- -

Linux のスタートアッププロセスはインターネット上の他所で十分に文書化されていますので、この記事では扱いません。

- -

Linux カーネルはデバイスを起動して、必要不可欠なプロセスを実行します。これは init.rc や、それに後続して b2g (Gecko を含む、B2G OS の基本プロセス) および rild (さまざまなチップセットに固有であろう、テレフォニー関係のプロセス) などの必要なプロセスを起動するための init.b2g.rc で定義されているプロセスを実行します。詳しくは後で説明します。プロセスの最終段階では、ほとんどの UNIX ライクなオペレーティングシステムと同様に、ユーザ空間の init プロセスが起動します。

- -

init プロセスが起動すると、Linux カーネルがユーザ空間やハードウェアデバイスからのシステムコールや割り込みを制御します。多くのハードウェア機能は、sysfs を通してユーザ空間に開放されています。例えば、以下は Gecko でバッテリーの状態を読み出すコードスニペットです:

- -
FILE *capacityFile = fopen("/sys/class/power_supply/battery/capacity", "r");
-double capacity = dom::battery::kDefaultLevel * 100;
-if (capacityFile) {
-  fscanf(capacityFile, "%lf", &capacity);
-  fclose(capacityFile);
-}
- -

init プロセス

- -

Gonk の init プロセスは、必要なファイルシステムのマウントやシステムサービスの起動を制御します。その後、プロセスマネージャとして働くために常駐します。これは他の UNIX ライクなオペレーティングシステムの init にとても似ています。init は、さまざまなサービスを起動するために行うべきことを示すコマンドで構成されるスクリプト (すなわち init*.rc ファイル) を実行します。B2G OS の init.rc は、典型的には B2G OS を起動するために必要なものを含むようパッチを当てた Android の init.rc であり、デバイスにより異なります。

- -

init プロセスが制御する重要なタスクとして、b2g プロセスの起動があります。b2g は、B2G OS オペレーティングシステムの中核部分です。

- -

init.rc で b2g を起動するコードは以下のようになります:

- -
service b2g /system/bin/b2g.sh
-    class main
-    onrestart restart media
- -
-

注記: init.rc が Android のものとどれだけ違うかは、デバイスにより異なります。init.b2g.rc が単純に追加される場合もあれば、より多くのパッチが必要になる場合もあります。

-
- -

ユーザ空間プロセスのアーキテクチャ

- -

ここで、B2G OS のさまざまなコンポーネントがどのように組み合わされていて、また互いに作用しあうかを高い水準で見ておくと役に立ちます。こちらの図は、B2G OS の基本的なユーザ空間プロセスを表しています。

- -

Userspace diagram

- -
-

注記: B2G OS は現在も開発中であるため、この図は変更される可能性があり、また完全に正確なものではないことに注意してください。

-
- -

b2g プロセスは、基本的なシステムプロセスです。これは高い権限で動作します。つまり、ほとんどのハードウェアデバイスにアクセスできます。b2g はモデムと通信したり、ディスプレイフレームバッファーに描画したり、GPS やカメラや他のハードウェア機能と対話したりします。内部的には、b2g は Gecko 層で動作します (libxul.so として実装されています)。Gecko 層の動作や b2g が Gecko とどのように通信するかについて、詳しくは Gecko の章をご覧ください。

- -

b2g

- -

b2g プロセスは、低権限の content プロセス を順番に起動するでしょう。これらのプロセスは、Web アプリケーションや他の Web コンテンツが読み込まれるところです。またこれらのプロセスは主要な Gecko のサーバプロセスと、IPDL というメッセージ伝送システムを通して通信します。

- -

b2g プロセスは libxul を実行しており、これはデフォルトの設定を取得するために b2g/app/b2g.js を参照します。b2g は設定により示された HTML ファイルである b2g/chrome/content/shell.html を開きます。このファイルは omni.ja ファイル内に集積されています。shell.html には b2g/chrome/content/shell.js ファイルが含まれており、これは Gaia の system アプリを起動します。

- -

rild

- -

rild プロセスは、モデムプロセッサへのインタフェースです。rildRadio Interface Layer (RIL) を実装するデーモンです。これは、モデムハードウェアと対話するためにハードウェアベンダーによって実装されるプロプライエタリなコードの部分です。rild は、クライアントコードがモデムに結びつけられた UNIX ドメインソケットへ接続できるようにします。rild は init スクリプト内の以下のようなコードによって起動されます :

- -
service ril-daemon /system/bin/rild
-    socket rild stream 660 root radio
- -

rilproxy

- -

B2G OS では、rild のクライアントが rilproxy プロセスです。これは rildb2g の間で単なる転送プロキシとして動作します。このプロキシは細部の実装として必要です。とても必要なものであるとだけ言っておきましょう。rilproxy のコードは GitHub にあります

- -

mediaserver

- -

mediaserver プロセスは、音声や動画の再生を制御します。Gecko は Android Remote Procedure Call (RPC) の仕組みを通して mediaserver と対話します。Gecko が再生可能なメディア (OGG Vorbis audio、OGG Theora video、WebM video) は Gecko によってデコードされ、直接 mediaserver プロセスに送られます。他のメディアファイルは libstagefright によってデコードされます。libstagefright は、プロプライエタリなコーデックやハードウェアエンコーダにアクセスできます。

- -
-

注記: mediaserver プロセスは、B2G OS の "一時的な" コンポーネントです。初期の開発作業を支援するために存在しており、いずれはなくなる予定です。ただし、おそらく早くても B2G OS 2.0 まではなくならないでしょう。

-
- -

netd

- -

netd プロセスは、ネットワークインタフェースの設定に使用されます。

- -

wpa_supplicant

- -

wpa_supplicant プロセスは Wi-Fi アクセスポイントとの接続を制御する、標準的な UNIX スタイルのデーモンです。

- -

dbus-daemon

- -

dbus-daemon は D-Bus を実装します。これは、B2G OS が Bluetooth 通信のために使用するメッセージバスシステムです。

- -

Gecko

- -

Gecko は前述のとおり、B2G OS でユーザが見るものすべてを実装するために使用される Web 標準技術 (HTMLCSSJavaScript) を実装したものです。また、電話機のハードウェアとの対話を制御します。HTML5 からハードウェアに接続する Web アプリは、Gecko に実装されたセキュアな Web API によって制御されます。 Web API は、下層のモバイルデバイスハードウェアの機能 (バッテリーやバイブレーションなど) やデバイスに保存されていたりデバイスで使用できるデータ (カレンダーや連絡先など) にプログラムからアクセスする機能を提供します。Web コンテンツは、HTML5 でアクセスできる Web API を使用します。

- -

アプリは、関連する HTML5 Web コンテンツの集合体で構成されます。B2G OS のモバイルデバイスで動作する Web アプリを構築するために開発者が行うことは、単なる Web コンテンツの組み立て、パッケージング、頒布です。この Web コンテンツは実行時に、Web ブラウザによって解釈、コンパイル、レンダリングされます。アプリについて詳しくは、アプリセンターをご覧ください。

- -
-

注記: http://dxr.mozilla.org を使用して Gecko のコードベースを検索できます。見栄えがよく、また良好な参照機能を提供しますが、限られたリポジトリでしか使用できません。あるいは、旧来の http://mxr.mozilla.org も使用できます。こちらはより多くの Mozilla プロジェクトを包含しています。

-
- -

Gecko のアーキテクチャ図

- -

- - - - - -

b2g/

- -

b2g フォルダには、主要な B2G OS 関連の機能が入っています。

- -
b2g/chrome/content
- -

システムアプリ上で実行する JavaScript が入っています。

- -
b2g/chrome/content/shell.html
- -

Gaia へのエントリポイントである、システムアプリ向けの HTML です。shell.html は、settings.js および shell.js を読み込みます:

- -
<script type="application/javascript;version=1.8" src="chrome://browser/content/settings.js"> </script>
-<script type="application/javascript;version=1.8" src="chrome://browser/content/shell.js"> </script>
- -

settings.js は、システムのデフォルトの設定パラメータを持っています。

- -
b2g/chrome/content/shell.js
- -

shell.js は Gaia の system アプリが読み込む最初のスクリプトです。

- -

shell.js はすべての必要なモジュールのインポート、重要なリスナの登録、Gaia と通信するための sendCustomEvent および sendChromeEvent の定義、そして webapp のインストールヘルパー (indexedDB クォータ、RemoteDebugger、キーボードヘルパー、スクリーンショットツール) の提供を行います。

- -

しかし shell.js でもっとも重要な機能は Gaia の system アプリを起動して、システム全体に関する管理処理を Gaia の system アプリに引き渡すことです。

- -
let systemAppFrame =
-  document.createElementNS('http://www.w3.org/1999/xhtml', 'html:iframe');
-    ...
-  container.appendChild(systemAppFrame);
- -
b2g/app/b2g.js
- -

このスクリプトはブラウザでの about:config や Gaia の pref.js のように、あらかじめ定義された設定を持っています。これらの設定内容は設定アプリで変更可能であり、また Gaia のビルドスクリプトで user.js による上書きも可能です。

- -

dom/{API}

- -

新たな API の実装 (post-b2g) は dom/ に配置します。navigator.cpp など旧来の API は、dom/base に配置しています。

- -
dom/apps
- -

.jsm が読み込まれます。これは webapp.js のような .js ファイルによる API 実装のインストールや getSelf などがあります。

- -
dom/apps/PermissionsTable.jsm
- -

すべての許可設定を PermissionsTable.jsm で定義しています。

- -

dom/webidl

- -

WebIDL は、Web API の定義に使用する言語です。サポートする属性については WebIDL_bindings をご覧ください。

- -

hal/gonk

- -

このディレクトリには、Gonk のポーティング層に関するファイルが入っています。

- -

Generated files

- -
module/libpref/src/init/all.js
- -

すべての設定ファイルを包含します。

- -
/system/b2g/ omni.ja および omni.js
- -

デバイス内のリソース向けのスタイルパックを包含します。

- -

入力イベントの処理

- -

Gecko 内部のほとんどのアクションは、ユーザのアクションによって発生します。これらのアクションは入力イベント (ボタン押下、タッチスクリーンデバイスのタッチなど) で表されます。これらのイベントは、Gecko アプリケーションに対する主要な入口を表すために使用される Gecko のインタフェースである、nsIAppShellGonk 実装を通して Gecko に入力されます。すなわち、入力デバイスのドライバがユーザインタフェースへイベントを送信するために、Gecko のサブシステムに対応する nsAppShell オブジェクトのメソッドを呼び出します。

- -

例:

- -
void GeckoInputDispatcher::notifyKey(nsecs_t eventTime,
-                                     int32_t deviceId,
-                                     int32_t source,
-                                     uint32_t policyFlags,
-                                     int32_t action,
-                                     int32_t flags,
-                                     int32_t keyCode,
-                                     int32_t scanCode,
-                                     int32_t metaState,
-                                     nsecs_t downTime) {
-  UserInputData data;
-  data.timeMs = nanosecsToMillisecs(eventTime);
-  data.type = UserInputData::KEY_DATA;
-  data.action = action;
-  data.flags = flags;
-  data.metaState = metaState;
-  data.key.keyCode = keyCode;
-  data.key.scanCode = scanCode;
-  {
-    MutexAutoLock lock(mQueueLock);
-    mEventQueue.push(data);
-  }
-  gAppShell->NotifyNativeEvent();
-}
- -

これらのイベントは、標準的な Linux の input_event システムから発生します。B2G OS では light abstraction layer を使用します。これは、イベントのフィルタリングなど便利な機能を提供します。widget/gonk/libui/EventHub.cpp で、入力イベントを生成するコードをご覧いただけます。

- -

イベントが Gecko に受け取られると、それらのイベントは nsAppShell によって DOM へ送られます:

- -
static nsEventStatus sendKeyEventWithMsg(uint32_t keyCode,
-                                         uint32_t msg,
-                                         uint64_t timeMs,
-                                         uint32_t flags) {
-    nsKeyEvent event(true, msg, NULL);
-    event.keyCode = keyCode;
-    event.location = nsIDOMKeyEvent::DOM_KEY_LOCATION_MOBILE;
-    event.time = timeMs;
-    event.flags |= flags;
-    return nsWindow::DispatchInputEvent(event);
-}
-
- -

その後、イベントは Gecko 自身によって処理されるか、さらなる処理のために DOM events として Web アプリケーションに発行されます。

- -

グラフィックス

- -

ごく低水準な部分では、Gecko はハードウェアのフレームバッファーをラップする GL コンテキストの描画に OpenGL ES 2.0 を使用します。これは以下のようなコードにより、nsWindow の Gonk 実装によって行われます:

- -
gNativeWindow = new android::FramebufferNativeWindow();
-sGLContext = GLContextProvider::CreateForWindow(this);
- -

FramebufferNativeWindow クラスは Android からそのまま取り込んでいます。FramebufferNativeWindow.cpp をご覧ください。これはバッファーをフレームバッファーデバイスからメモリーに対応付ける目的でグラフィックドライバーへアクセスするために gralloc API を使用します。

- -

Gecko は描画されたコンテンツをスクリーンに合成するために、自身のレイヤーシステムを使用します。要約すると、以下のようなことが行われます:

- -
    -
  1. Gecko がページの個々の部分をメモリバッファーに描画します。これらのバッファーはシステムメモリーにある場合があります。あるいは、これらが Gecko のアドレス空間にマッピングされたテクスチャであることもあり、これは Gecko が直接ビデオメモリーへ描画します。これは一般に、BasicThebesLayer::PaintThebes() メソッドで行われます。
  2. -
  3. そして、Gecko はこれらすべてのテクスチャを OpenGL コマンドを使用してスクリーンに合成します。この合成処理は ThebesLayerOGL::RenderTo() で行われます。
  4. -
- -

Gecko が Web コンテンツのレンダリングをどのように制御するかの詳細は、本ドキュメントの範囲から外れます。

- -

Hardware Abstraction Layer (HAL)

- -

Gecko Hardware Abstraction Layer は、Gecko のポーティング層の一つです。これは、Gecko の高水準層が利用可能な C++ の API を使用して、複数のプラットフォームにまたがってシステムインタフェースへの低水準なアクセスを制御します。これらの API は Gecko HAL 自身の内部で、プラットフォームごとに実装されています。Gecko ではこの Hardware Abstraction Layer が、JavaScript に対して直接は公開されていません。この対話の部分は、Web API によって処理されます。

- -

高水準層から処理方式を見てみましょう。ユーザが電話機の機能 (電話をかける、Wi-Fi ネットワークにアクセスする、Bluetooth で接続するなど) を使用する要求を発すると、B2G OS のスタックの全階層がその要求の伝達に関わります。Gaia 層のアプリや Web コンテンツが Web API の呼び出し (HTML5 内の機能で実行されます) により、下層のデバイスへのアクセスを要求します。この Web API は Gecko に実装しています。Gecko は同様に、Gonk へ要求します。Gecko が発したひとつの要求は複合的な一連の操作を発生させることもあり、Gonk が携帯電話機内で操作の生成や制御を行います。

- -

HAL の動作

- -

例として Vibration API について考えてみましょう。この API 向けの Gecko HAL は hal/Hal.h で定義されています。本質的には (明快さのために、メソッドのシグネチャを単純化します)、以下の関数があります:

- -
void Vibrate(const nsTArray<uint32> &pattern);
- -

これは、指定されたパターンに従ってデバイスのバイブレーション機能を起動するために Gecko のコードから呼び出される関数です。これに対応する関数として、実行中のバイブレーションを止める関数があります。このメソッドの Gonk 実装は hal/gonk/GonkHal.cpp にあります:

- -
void Vibrate(const nsTArray<uint32_t> &pattern) {
-  EnsureVibratorThreadInitialized();
-  sVibratorRunnable->Vibrate(pattern);
-}
-
- -

このコードはデバイスのバイブレーションを開始するためのリクエストを、別のスレッドに送信します。そのスレッドは、VibratorRunnable::Run() で実装されています。このスレッドのメインループは以下のようになります:

- -
while (!mShuttingDown) {
-  if (mIndex < mPattern.Length()) {
-    uint32_t duration = mPattern[mIndex];
-    if (mIndex % 2 == 0) {
-      vibrator_on(duration);
-    }
-    mIndex++;
-    mMonitor.Wait(PR_MillisecondsToInterval(duration));
-  }
-  else {
-    mMonitor.Wait();
-  }
-}
-
- -

vibrator_on() はバイブレーション装置を起動する、Gonk HAL の API です。内部では、このメソッドは sysfs を使用してカーネルオブジェクトに値を書き込むことにより、カーネルドライバーへメッセージを送信します。

- -

代替の HAL API 実装

- -

Gecko HAL の API は、すべてのプラットフォームにわたってサポートされています。バイブレーション装置へのインタフェースを公開しないプラットフォーム (デスクトップコンピュータなど) 向けに Gecko がビルドされたときは、HAL API の代替実装が使用されます。バイブレーションでは、これは hal/fallback/FallbackVibration.cpp に実装されています。

- -
void Vibrate(const nsTArray<uint32_t> &pattern) {
-}
- -

サンドボックスの実装

- -

ほとんどの Web コンテンツは低い権限の content プロセスで動作するため、これらのプロセスが (例えば) バイブレーション装置を起動・停止できるのに必要な権限を持っていると考えることはできません。加えて、潜在的な競合状態を制御するための中心的な場所が必要です。Gecko HAL ではこれを、HAL の "サンドボックス" 実装により実現しました。このサンドボックス実装は単純に、content プロセスから発生されたリクエストの代理となって "Gecko server" プロセスに転送します。代理のリクエストは IPDL を使用して送信されます。

- -

バイブレーションの場合、これは hal/sandbox/SandboxHal.cpp で実装されている Vibrate() 関数で制御されます:

- -
void Vibrate(const nsTArray<uint32_t>& pattern, const WindowIdentifier &id) {
-  AutoInfallibleTArray<uint32_t, 8> p(pattern);
-
-  WindowIdentifier newID(id);
-  newID.AppendProcessID();
-  Hal()->SendVibrate(p, newID.AsArray(), GetTabChildFrom(newID.GetWindow()));
-}
- -

これは PHal インタフェースで定義されたメッセージを送信します。また PHal インタフェースは hal/sandbox/PHal.ipdl で、IPDL を用いて記述されています。このメソッドは、おおむね以下のように記述されています:

- -
Vibrate(uint32_t[] pattern);
- -

このメッセージの受信側は hal/sandbox/SandboxHal.cpp にある HalParent::RecvVibrate() メソッドであり、以下のようなものです:

- -
virtual bool RecvVibrate(const InfallibleTArray<unsigned int>& pattern,
-            const InfallibleTArray<uint64_t> &id,
-            PBrowserParent *browserParent) MOZ_OVERRIDE {
-
-  hal::Vibrate(pattern, newID);
-  return true;
-}
- -

ここでは、説明に関係ない詳細部分を省略しています。それでも、メッセージが content プロセスから Gecko を通して Gonk へ、そして Vibrate() の Gonk HAL 実装、最終的にバイブレーション機能のドライバまでどのように進むかを示しています。

- -

DOM API

- -

DOM インタフェース は、本質的には Web コンテンツが Gecko と通信する方法です。実際はさらに複雑であり、もし詳細に興味があるのでしたら DOM についてのドキュメントを読むとよいでしょう。DOM インタフェースは IDL を使用して定義されます。IDL は JavaScript と C++ との間の他言語関数インタフェース (FFI) とオブジェクトモデル (OM) で構成されます。

- -

Vibration API は IDL インタフェースを通して Web コンテンツに公開されており、それは nsIDOMNavigator.idl: で提供されます。

- -
[implicit_jscontext] void mozVibrate(in jsval aPattern);
- -

jsval 引数は、mozVibrate() (これは未確定の Vibration 仕様に対する、私たちのベンダ接頭辞付きの実装です) が任意の JavaScript 値を入力として受け入れることを示します。IDL コンパイラである xpidl は、のちに Navigator.cppNavigator クラスによって実装される C++ のインタフェースを生成します。

- -
NS_IMETHODIMP Navigator::MozVibrate(const jsval& aPattern, JSContext* cx) {
-  // ...
-  hal::Vibrate(pattern);
-  return NS_OK;
-}
- -

このメソッドにはご覧いただいているものより多くのコードが含まれていますが、ここでの説明内容に対しては重要でないものです。ポイントは hal::Vibrate() の呼び出しが、制御を DOM から Gecko HAL に移していることです。ここから前の章で説明した HAL 実装に入り、デバイスドライバまで処理が進んでいきます。これに加えて、DOM 実装は実行しているプラットフォームが何か (Gonk、Windows、OS X など) はまったく気にしません。また、コードが content プロセスで実行しているか Gecko サーバプロセスで実行しているかも気にしません。これらの細部は、システムの低水準層が対処するために切り離されています。

- -

Vibration API はとてもシンプルな API であり、例としてよいものです。SMS API は content プロセスとサーバーとの接続に自身の "remoting" 層を使用する、より複雑な API の例になります。

- -

Radio Interface Layer (RIL)

- -

RIL は The userspace process architecture の章でも触れました。本章では、この層のさまざまな部品がどのように作用しあうかをもう少し詳しく見ていきます。

- -

RIL に関係する主要コンポーネントは以下の通りです:

- -
-
rild
-
プロプライエタリなモデムのファームウェアと対話するデーモンです。
-
rilproxy
-
rild と Gecko の間でメッセージを中継するデーモンです (これは b2g プロセス内に実装されています)。これは rild と直接対話しようとするときに発生するパーミッションの問題を克服するものです。この問題が発生する理由は、rildradio グループ内でのみ通信が可能であるためです。
-
b2g
-
chrome プロセスとしても知られるこのプロセスは、Gecko を実装します。そのうち Radio Interface Layer に関係する部分は、dom/system/gonk/ril_worker.js です。これは rilproxy を通して rild と対話するワーカースレッドや radio state machine、主に ril_worker.js と Gecko content プロセスを含む他の Gecko コンポーネントとの間でメッセージ交換を行うメインスレッドの XPCOM サービスである nsIRadioInterfaceLayer インタフェースを実装します。
-
Gecko の content プロセス
-
Gecko の content プロセスにおいて nsIRILContentHelper インタフェース は、Telephony API や SMS API といった部分の DOM を実装するコードが radio interface と対話できるようにする XPCOM サービスを提供するものであり、chrome プロセス内にあります。
-
- -

例: rild から DOM への通信

- -

システムの低水準層が DOM コードとどのように通信するかを見ていきましょう。モデムは着信を受けると、独自の方法を使用して rild にそれを通知します。すると rild は、"オープン" なプロトコルに従ってクライアント向けのメッセージを用意します。これは ril.h に記述されています。着信の場合は RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED メッセージが生成されて、rildrilproxy へ送信します。

- -

rilproxy.c で実装されている rilproxy は自身のメインループ内でそのメッセージを受け取ります。ループでは以下のようなコードを使用して、rild との接続に問い合わせを行います:

- -
ret = read(rilproxy_rw, data, 1024);
-
-if(ret > 0) {
-  writeToSocket(rild_rw, data, ret);
-}
- -

rild からメッセージを受け取ると、そのメッセージは rilproxy と Gecko を接続するソケットを通じて Gecko へ転送されます。Gecko は転送されたメッセージを IPC スレッドで受け取ります:

- -
int ret = read(fd, mIncoming->Data, 1024);
-// ... handle errors ...
-mIncoming->mSize = ret;
-sConsumer->MessageReceived(mIncoming.forget());
-
- -

これらのメッセージを消費するのは SystemWorkerManager であり、これはメッセージを再パッケージ化して、RIL ステートマシンを実装する ril_worker.js スレッドに配布します。これは RILReceiver::MessageReceived() メソッドで行われます:

- -
virtual void MessageReceived(RilRawData *aMessage) {
-  nsRefPtr<DispatchRILEvent> dre(new DispatchRILEvent(aMessage));
-  mDispatcher->PostTask(dre);
-}
- -

そのスレッドに渡されたタスクは次に、JavaScript で実装されている onRILMessage() 関数を呼び出します。これには、JavaScript の API 関数である JS_CallFunctionName() を使用します:

- -
return JS_CallFunctionName(aCx, obj, "onRILMessage", NS_ARRAY_LENGTH(argv),
-                           argv, argv);
- -

onRILMessage()dom/system/gonk/ril_worker.js で実装されており、メッセージバイトを処理して小分けします。小分けされたものはすべて、それぞれの適切なハンドラメソッドへ配られます:

- -
handleParcel: function handleParcel(request_type, length) {
-  let method = this[request_type];
-  if (typeof method == "function") {
-    if (DEBUG) debug("Handling parcel as " + method.name);
-    method.call(this, length);
-  }
-}
-
- -

このコードはオブジェクトからリクエストタイプを取得して、それが JavaScript コードで関数として定義されているかを確かめて、それからメソッドを呼び出すように動作します。ril_worker.js ではメソッドの各リクエストタイプにリクエストタイプと同じ名前を与えていますので、この処理はとてもシンプルです。

- -

今回の例である RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED では、以下のハンドラーが呼び出されます:

- -
RIL[UNSOLICITED_RESPONSE_CALL_STATE_CHANGED] = function UNSOLICITED_RESPONSE_CALL_STATE_CHANGED() {
-  this.getCurrentCalls();
-};
- -

前出のコードで見たように通話の状態が変化したことの通知を受けたときは、ステートマシンが getCurrentCall() メソッドを呼び出すことで現在の通話の状態を取得します:

- -
getCurrentCalls: function getCurrentCalls() {
-  Buf.simpleRequest(REQUEST_GET_CURRENT_CALLS);
-}
- -

これは現在アクティブなすべての通話の状態を問い合わせるために、rild へリクエストを送ります。リクエストは RIL_UNSOL_RESPONSE_CALL_STATE_CHANGED メッセージがたどったものと似た経路を、逆方向に戻っていきます (すなわち、ril_worker.js から SystemWorkerManagerRil.cpprilproxy、そして rild のソケットへ向かいます)。同様に rild は同じ経路で応答を返して、最終的に ril_worker.jsREQUEST_GET_CURRENT_CALLS メッセージ用ハンドラへたどり着きます。そして、双方向の通信が始まります。

- -

それからは通話の状態が処理されて、以前の状態と比較されます。状態が変化した場合は、ril_worker.js がメインスレッドの nsIRadioInterfaceLayer サービスに通知します:

- -
_handleChangedCallState: function _handleChangedCallState(changedCall) {
-  let message = {type: "callStateChange",
-                 call: changedCall};
-  this.sendDOMMessage(message);
-}
- -

nsIRadioInterfaceLayerdom/system/gonk/RadioInterfaceLayer.js に実装されており、メッセージはこれの onmessage() メソッドが受け取ります:

- -
 onmessage: function onmessage(event) {
-   let message = event.data;
-   debug("Received message from worker: " + JSON.stringify(message));
-   switch (message.type) {
-     case "callStateChange":
-       // This one will handle its own notifications.
-       this.handleCallStateChange(message.call);
-       break;
-   ...
-
- -

ここで実際に行っていることは、Parent Process Message Manager (PPMM) を使用した、content プロセスへのメッセージ配送です:

- -
handleCallStateChange: function handleCallStateChange(call) {
-  [some internal state updating]
-  ppmm.sendAsyncMessage("RIL:CallStateChanged", call);
-}
- -

content プロセスではメッセージを Child Process Message Manager (CPMM) から、nsIRILContentHelper サービスの receiveMessage() で受け取ります:

- -
receiveMessage: function receiveMessage(msg) {
-  let request;
-  debug("Received message '" + msg.name + "': " + JSON.stringify(msg.json));
-  switch (msg.name) {
-    case "RIL:CallStateChanged":
-      this._deliverTelephonyCallback("callStateChanged",
-                                     [msg.json.callIndex, msg.json.state,
-                                     msg.json.number, msg.json.isActive]);
-      break;
- -

これは、登録済みであるすべてのテレフォニーコールバックオブジェクトの nsIRILTelephonyCallback.callStateChanged() メソッドを順々に呼び出します。window.navigator.mozTelephony API にアクセスするすべての Web アプリケーションに、既存の call オブジェクトの状態の変化あるいは新たな incoming call イベントの発生といったイベントを Web アプリケーション内の JavaScript へ配送する、コールバックオブジェクトのようなものが登録されています。

- -
NS_IMETHODIMP Telephony::CallStateChanged(PRUint32 aCallIndex, PRUint16 aCallState,
-                                          const nsAString& aNumber, bool aIsActive) {
-  [...]
-
-  if (modifiedCall) {
-    // Change state.
-    modifiedCall->ChangeState(aCallState);
-
-    // See if this should replace our current active call.
-    if (aIsActive) {
-      mActiveCall = modifiedCall;
-    }
-
-    return NS_OK;
-  }
-
-  nsRefPtr<TelephonyCall> call =
-          TelephonyCall::Create(this, aNumber, aCallState, aCallIndex);
-  nsRefPtr<CallEvent> event = CallEvent::Create(call);
-  nsresult rv = event->Dispatch(ToIDOMEventTarget(), NS_LITERAL_STRING("incoming"));
-  NS_ENSURE_SUCCESS(rv, rv);
-  return NS_OK;
-}
- -

アプリケーションはこれらのイベントを受け取って、自身のユーザインタフェースなどを更新できます:

- -
handleEvent: function fm_handleEvent(evt) {
-  switch (evt.call.state) {
-    case 'connected':
-      this.connected();
-      break;
-    case 'disconnected':
-      this.disconnected();
-      break;
-    default:
-      break;
-  }
-}
- -

高度な例として、ダイヤラーアプリケーションの handleEvent() をご覧ください。

- -

3G データ

- -

RIL メッセージに、携帯電話サービスの "データ通信" を開始するものがあります。これは、モデムのデータ通信モードを有効にします。このデータ通信は、通常のインタフェースで設定可能な Linux カーネルの Point-to-Point Protocol (PPP) インタフェースデバイスを生成および起動します。

- -
-

注記: この章は記述が必要です。

-
- - - -

ここでは、RIL 通信に関連する DOM API を紹介します:

- - - -

WiFi

- -

B2G OS の WiFi バックエンドは、単にほとんどの処理で wpa_supplicant を使用します。つまり、バックエンドの主な役割は単にサプリカントの管理や、WiFi ドライバーの読み込みやネットワークインタフェースの有効化・無効化といった付加的な作業になります。つまりバックエンドは、サプリカントの状態を追跡するステートによるステートマシンになります。

- -
-

注記: WiFi で発生する興味深い事象のほとんどは、wpa_supplicant プロセスで起こりうる状態の変化に深く依存しています。

-
- -

WiFi コンポーネントの実装は、2 つのファイルに分かれています:

- -
-
dom/wifi/DOMWifiManager.js
-
nsIWifi.idl で定義されており、Web content に公開する API を実装します。
-
dom/wifi/WifiWorker.js
-
ステートマシンと、サプリカントを操作するコードを実装します。
-
- -

これら 2 つのファイルは互いにメッセージマネージャを使用して通信します。バックエンドは "associate" などのアクションを求めるメッセージを受け入れて、アクションが完了したときに応答メッセージを返します。

- -

DOM 側は状態の変化や情報の更新を示すさまざまなメッセージと同様に、応答メッセージを受け入れます。

- -
-

注記: どの同期 DOM API も、パイプの API 側にデータをキャッシュするよう実装されています。可能であれば同期メッセージは避けてください。

-
- -

WifiWorker.js

- -

このファイルでは、WiFi インタフェースの背後にある主要なロジックを実装しています。これは chrome プロセス (マルチプロセスビルド) で実行され、SystemWorkerManager によってインスタンス化されます。このファイルはおおむね 2 つのセクションに分けられます: 大きな無名関数と WifiWorker (およびそのプロトタイプ) です。無形関数は最終的に、サプリカントへの接続やスキャン結果が利用可能になったといったイベントの通知を含むローカル API を提供することで、WifiManager になります。通常これには小さなロジックが含まれ、要求された情報への応答やサプリカントとの接続の細部を管理するのと合わせて唯一の利用者がそのアクションを制御できるようにします。

- -

WifiWorker オブジェクトは、WifiManager とDOM の間にあります。これはイベントに反応して、それらを DOM に転送します。同様に DOM からの要求を受け取って、対応するアクションをサプリカントで実行します。また、サプリカントの状態に関する情報や次に何を行うべきかの管理も行います。

- -

DOMWifiManager.js

- -

これは DOM API を実装しており、メッセージを呼び出し元と実際の WiFi worker との間でやり取りします。これに関係する、とても小さなロジックがあります。

- -
-

注記: chrome プロセスへの同期メッセージを避けるため、WiFi Manager は受け取ったメッセージに基づいて状態をキャッシュすることが必要です。

-
- -

同期メッセージが 1 つあり、これは現在のサプリカントの状態を取得するために DOM API がインスタンス化されたときに送信されます。

- -

DHCP

- -

DHCP および DNS は標準的な Linux の DHCP クライアントである dhcpcd によって制御されます。しかし、これはネットワーク接続が失われたときに対応できません。このため、B2G OS はワイヤレスネットワークに接続するたびに dhcpcd を停止および再起動します。

- -

dhcpcd はデフォルトルートの設定も担います。DNS サーバーについてカーネルに伝達するためには Network Manager を呼び出します。

- -

Network Manager

- -

Network Manager は 3G データ通信や WiFi コンポーネントによって開かれたネットワークインタフェースの設定を行います。

- -
-

注記: この章は記述が必要です。

-
- -

プロセスとスレッド

- -

B2G OS はすべてのアプリケーションスレッドの実装に POSIX スレッドを使用しており、それには各アプリケーションのメインスレッドだけでなく Web worker やヘルパースレッドも含まれます。プロセスやスレッドの優先度付けに Control groups を使用していることから、Linux カーネル の Completely Fair Scheduler に依存しています。プロセスの状態に応じて、異なる Control group を割り当てています。現在は、5 つの Control group に対応する 6 つのプライオリティレベルがあります:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
プロセスのプライオリティレベル
プライオリティControl group用途
MASTER メイン b2g プロセス
FOREGROUND_HIGHapps/criticalcpu または highpriority の Wakelock を保持する重要なアプリケーション。現在は時計や通信のアプリケーション向けに予約されています。
FOREGROUNDappsフォアグラウンドのアプリケーション
FOREGROUND_KEYBOARDappsキーボードアプリケーション
BACKGROUND_PERCEIVABLEapps/bg_perceivable音声を再生している、あるいは cpu または highpriority の Wakelock を保持しており、少なくともシステムメッセージハンドラを登録しているアプリケーション
BACKGROUNDapps/bg_non_interactiveバックグラウンドで実行している、上記以外のアプリケーション
- -

同じ Control group を共有するレベルがありますが、これは現在、Out of Memory Killer による扱われ方の違いをレベルの違いとしているためです。すべてのプライオリティは、設定によりビルド時に調節できます。関係する項目は b2g/app/b2g.js ファイルにあります。

- -

現在は以下の Control group を使用しています:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Control group
パスCPU 割り当て説明
 全 CPU 時間の 50%メイン b2g プロセスやシステムデーモン向けに予約している、ルート Control group
apps全 CPU 時間の 50%一般のアプリケーション
apps/criticalapps の 95%重要なアプリケーション
apps/bg_perceivableapps の 10%知覚可能なバックグラウンドアプリケーション
apps/bg_non_interactiveapps の 5%バックグラウンドアプリケーション
- -
-

注記: Out of Memory Killer の詳細情報および B2G OS が低メモリ状態にどう対処するかについては、B2G OSの低メモリ管理をご覧ください。

-
- -

プロセス内ではメインスレッドがプロセスの "nice 値" を継承する一方、Web Worker のスレッドは 1 段階大きな "nice 値" が与えられますので低いプライオリティで実行されます。この措置は、CPU 負荷が高い worker がメインスレッドの実行を過度に遅くさせないために行います。現在、アプリケーションのスレッドはすべて、同じ Control group に割り当てます。プロセスのプライオリティは、アプリケーションがバックグラウンドやフォアグラウンドに変わる、新たなアプリケーションを起動する、既存のアプリケーションが CPU Wakelock を取得するなど、主要なイベントが発生するたびに変更されます。

- -
-

注記: 現在 ICS デバイスの cgroups サポートは、カーネルのバグにより破損しています。

-
diff --git a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/gaia_ui_tests_run_tests/index.html b/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/gaia_ui_tests_run_tests/index.html deleted file mode 100644 index 488d7af933..0000000000 --- a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/gaia_ui_tests_run_tests/index.html +++ /dev/null @@ -1,356 +0,0 @@ ---- -title: 'Gaia UI Tests: Running Tests' -slug: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Gaia_UI_Tests_Run_Tests -tags: - - Automation - - Firefox OS - - Gaia - - Guide - - Testing - - gaia-ui-test - - gaiatest -translation_of: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Gaia_UI_Tests_Run_Tests ---- -
- -
-

この記事は、実際のFireFox OS 端末やB2Gデスクトップ、Gaia 自身内部にあるものに合わせた、Gaia UI テストの実行の仕方・流れの詳細を配信してます。Gaia プロジェクトは、コミット毎の継続的インテグレーションとプルリクエストテストをする為に、Treeherder を使用しています。

-
- -

Gaia UI テスト は、実際の端末やエミュレーター、B2G Desktop クライアントで実行する性能をもって開発されています。もっとずっと簡単な方法は、B2G デスクトップに対して実行させることです。あなたがお使いのFirefox OS のバージョンと対して実行させる為に、Gaia の正しいブランチを選ばないといけないことを、忘れないで下さい。

- -

 

- -

B2G デスクトップ上でテスト

- -

B2G クラインアントは、次のようなものです。:デスクトップから楽にFirefox OS上でwebアプリケーションのテスト実行に使える、B2Gのデスクトップ・バージョンです。もし、このテストに詳しくなければ、B2G デスクトップ・クライアント・テストの使用をお読み下さい。この項目では、B2GデスクトップでのUI テストの仕方を教えています。

- -
-

ショートカット:手作業でのPCの環境設定が嫌でしたら、MozITPを使用できます。このツール・セットは自動で、仮想マシンのUbuntu と、任意のタイミングで1クリックで実物のデバイスやMulet 上でのテストを開始できる、gaia UI テスト環境を準備・設定してくれます。

-
- -
-

 

- -

前提条件

- -

 ●デスクトップ版B2G をビルドして下さい。 ご自分のPCか仮想マシンのディレクトリに、こちら(試用版を含む)をダウンロードするか自身でコンパイルし、mozconfig ファイルに、ENABLE_MARIONETTE=1 この1行を追加して下さい。

- -

Gaia Github repository がクローン(コピー)を生成し、確認します。ここでプロフィールを生成する必要があります。プロフィールの生成をしている間、DEBUG=1 で通過していけないことを、注意して下さい。Gaia プロフィールのデバッグの使用は、Gaia UI テストからB2G デスクトップ・インスタンスへ接続への失敗の原因となります。

- -

testvars.json ファイル で以下を確認して下さい。

- -

Configuring test variables

- -

実物のデバイスが使用できず、電話レベル機能が必要ない場合、デスクトップ B2G クライアントは、テスト開発に理想的です。テストの実行が速く、入手しやすく、MacやWindows、Linux で行えます!

- -

テストの実行

- -

新しいテストの実行を確認して見ていきましょう。自分達の変更点が即拾い上げられるように、私達は、Gaia のリポジトリーから直接、gaiatest の作業tree内のバージョンをインストールしています。あなたがクローンを生成したGaiaのバージョンで、gaia/tests/python/gaia-ui-tests  へ移動し、下記の設定のコマンドを実行して下さい。

- -
python setup.py develop
- -

これは、仮想環境内で実行されない時、権限の拒否によるエラーを与えることがあります。その場合では、まだインストールされていないなら virtualenvvirtualenvwrapper をインストールします。

- -
pip install virtualenv
-pip install virtualenvwrapper (perhaps need to use sudo here)
-export WORKON_HOME=~/Envs
-source /usr/local/bin/virtualenvwrapper.sh
-echo "source /usr/local/bin/virtualenvwrapper.sh" >> .bash (rc or _profile)
- -

それから、仮想環境を作って入って下さい。

- -
mkvirtualenv gaia-ui-test
- -

私達がテストを始める場合、Marionette経由で gaiatest はB2Gデスクトップを起動できます。これをするには、B2GバイナリーファイルとB2Gプロファイルへのパスを渡しておく必要があります。下記の例では $HOME 変数に b2g バイナリーと b2g プロファイルを含めています。これは単に、B2Gデスクトップをダウンロード後に、zip展開した場所です。全てのテストを実行するコマンドは下記の通り:

-
- -
gaiatest --binary=$HOME/b2g/b2g-bin --profile=$HOME/b2g/gaia/profile --testvars=testvars.json --restart --type=b2g ./gaiatest/tests/functional/manifest.ini
-
- -

B2G デスクトップに互換性のないテスト — 例えば電話をかけたりSMS送信したりするもの — はテスト実行から自動的に省かれます。

- -

コマンドライン上でファイルを直接呼んでテスト実行できます:

- -
gaiatest --binary=$HOME/b2g/b2g-bin --profile=$HOME/b2g/gaia/profile --testvars=testvars.json --restart ./gaiatest/tests/functional/clock/test_clock_set_alarm.py
-
- -

Firefox OS デバイスの上でのテスト

- -

実際のFirefox OSデバイス上でのテストは、より複雑です。しかし、テストの中で実際のデバイス上でAPIにアクセスする(+ etc...)ため、より正確な結果を得る事ができます。全てのデバイスAPIや、ハードウェア機能といったものへアクセスできます。しなしながら、Firefox OS の実端末を持っていない場合や、使っている機能が実際のハードウェアを必要としない場合は、エミュレータ内で一般機能をテストすることもできます。

- -
-

If you don't want to setup the environment manually. You can try MozITP, it will automatically setup a pre-configured Ubuntu VM and Gaia UI Test environment, so you can start testing on real device or simulator in one-click.

-
- -

前提条件

- -
- -
- -

テストを実行する

- -

The gaiatest package is needed to run the tests. We need to install this for the branch that we want to run the tests on. Navigate to the gaia/tests/python/gaia-ui-tests/ directory and install gaiatest with this command:

- -
python setup.py develop
- -
-

Note: Before you start to run the test, read through this warning in order to acknowledge that running gaia-ui-tests on a device may cause data to be deleted from the device!

-
- -
-

Debug Firefox OS builds: Firefox OS builds built with DEBUG=1 will need a greater timeout than the default (20 seconds). Try adding to the command line --timeout 60000 or higher, depending upon the speed of the device.

-
- -

Marionette on the device awaits commands on port 2828. We need to forward our local port to the remote port on the device using adb. Run the following command:

- -
adb forward tcp:2828 tcp:2828
- -

Please be reminded that you'll need to start your emulator before the command, if you are not running on a real Firefox OS device.

- -

You can use the following command to execute all the gaia-ui-tests:

- -
gaiatest --address=localhost:2828 --testvars=<TESTVARS_FILE> --restart --type=b2g gaiatest/tests/functional/manifest.ini
- -

Or use the following if you want to run a single test (substituting the last part for the actual test you want to run):

- -
gaiatest --address=localhost:2828 --testvars=<TESTVARS_FILE> --restart gaiatest/tests/functional/clock/test_clock_create_new_alarm.py
- -

After the test, you will see all the pass/fail results and stacktraces for each file.

- -

Gecko とGaia 開発者向けの Treeherder を用いてテストを行う

- -

In this section we will focus upon replicating a Treeherder test locally. Before testing locally with a Treeherder configuration, you need to be aware that it builds a Gaia profile separately. The profile that comes packaged with the Treeherder build or rel-eng build is NOT the same Gaia profile that Treeherder uses.

- -
-

前提条件

- - -
- -

Treeherder 設定を使って Gaia プロファイルを作成する

- -

Before building a profile we need to check the environment variables that were used to build the profile. Searching in the "brief log" of the Gu test run, find this command block:

- -
Using env: {'DEBUG': '0',
-            'DESKTOP': '0',
-            'DESKTOP_SHIMS': '0',
-            'NOFTU': '0'}
- -

These settings can drastically change the way desktop B2G behaves. It is very important to match Treeherder's settings.

- -

The next step is to checkout the git commit that matches the hg commit that Treeherder ran with. You can also find the hg commit in the "brief log" of the Treeherder run but you will need to correlate that with the git commit yourself.

- -

The gaia test repository includes a make script for building a Gaia profile. Navigate to the Gaia repo that you have cloned locally, and build the profile using the environment variables we found on Treeherder:

- -
DEBUG=0 DESKTOP=0 DESKTOP_SHIMS=0 NOFTU=0 make
- -

テストを実行する

- -

Using the same git commit that Treeherder used to run the test, go to the gaia/tests/python/gaia-ui-tests directory and install gaiatest using the following command:

- -
python setup.py develop
- -

Now that you have built the Gaia profile, the only significant difference to running these tests is that you must direct gaiatest to the binary location and profile location.

- -

Inside the gaia-ui-tests directory, run the below command, with the following substitutions made:

- - - -
gaiatest --binary $BINARY_PATH/b2g/b2g-bin --profile $PROFILE_PATH/profile --restart --testvars testvars.json gaiatest/tests/manifest.ini --type=b2g
- -
-

Note: There is no need to forward port 2828 unless you have set the Marionette server to use a different default port.

-
- -
-

Important: Try to keep your mouse cursor clear of the b2g window so that pointer events do not pollute the test run.

-
- -

入り組んだ Treeherder ジョブの中から HTML レポートを見つける

- -

All Treeherder jobs (both pass and fail) have an HTML report output generated and stored.

- -
    -
  1. For the commit and Gip job, click the chunk of interest (e.g., f1, f2).
  2. -
  3. In the status bar at the bottom of the screen find the section titled: output.html.
  4. -
  5. Click link to view the report.
  6. -
- -

既に実行済みのデスクトップ B2G バイナリをテストする

- -

In this section we will look at running the tests against an already running Desktop B2G binary with modified source code.

- -
-

前提条件

- - -
- -

テストを実行する

- -

Running tests against an existing b2g process is quite easy — you've already gone through the hard parts to build B2G!

- -

If you have not already installed gaiatest then do so now by going to gaia/tests/python/gaia-ui-tests and running the following:

- -
python setup.py develop
- -

Once you have started the b2g binary process and attached your debugger you need to direct gaiatest to the port using the --address command. Do not use --binary or --profile, otherwise gaiatest will just send commands directly to the port without attempting to start or close the binary.

- -
gaiatest --testvars testvars.json gaiatest/tests/functional/test_that_is_being_debugged.py
- -
-

Note: We have omitted the --restart command too. As gaiatest does not attempt to stop or start the binary, some data from your test run may be left behind in Firefox OS databases or even in the DOM. It is your responsibility to reset B2G back to a basic state before trying to run the test for a second time.

-
- -

テスト変数を設定する

- -

You can customize variables used during the test using a testvars.json file. The gaia-ui-tests will wipe the databases on your phone in order to give the test a clean profile to run against. Gaiatest contains protection against running and wiping your device's data. Please read the warning before you set up your test variables file.

- -

We use the --testvars option to pass in local variables, particularly those that cannot be checked into the repository. For example in gaia-ui-tests these variables can be your private login credentials, phone number, or details of your WiFi connection.

- -

To use it, copy testvars_template.json to a different filename but add it into .gitignore so you don't check it into your repository.

- -

When running your tests add the argument: --testvars=(filename).json

- -

(端末用の) testvars.json  を使って WiFi 設定する方法

- -

By setting the WiFi key in testvars.json you can configure the Firefox OS Settings database with your WiFi configuration. Then the test cases can use your WiFi connection.

- -

No WiFi authentication:

- -
"wifi": { "ssid": "MyNetwork"} 
- -

WEP authentication:

- -
"wifi": { "ssid": "MyNetwork", "keyManagement": "WEP", "wep": "MyPassword" } 
- -

WPA-PSK authentication:

- -
"wifi": { "ssid": "MyNetwork", "keyManagement": "WPA-PSK", "psk": "MyPassword" } 
- -
-

Note: Due to バグ 775499, WiFi connections via WPA-EAP are not possible at this time.

-
- -

トラブルシューティング

- -

この節では、いくつかのよくあるエラーメッセージを、潜在的な解決策を挙げつつ解説します。

- -

テスト開始前によくある問題

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
エラーメッセージ対応策
error: [Errno 111] Connection refused -

"adb forward tcp:2828 tcp:2828" コマンドを再発行する
-
- B2G プロセスが実行されていない

-
Element ... not visible before timeoutテストするアプリにて、要素(element)が表示されている事を確認する
TimeoutException: Condition timed outアプリの条件が、期待しているのと同じである事を確認する
marionette.errors.MarionetteException: localhost:2828 is unavailable.何者か、よくあるのが `adb forward` コマンドがポートをブロックしている。`adb kill-server` で解決するか、アプリを停止することでポートは開放される
ImportError: No module named bluetooth -

コマンド内で、 --type=b2g
- --type=b2g-bluetooth
- に置き換える、あるいは pybluez Python bluetooth パッケージをインストールする

-
OSError: [Errno 2] No such file or directory: '~/moz/gaia/profile'コマンドラインにて、 $HOME のつもりで ~ を使っていないかどうか確認する
- -

 

diff --git a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/index.html b/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/index.html deleted file mode 100644 index 430bef3bb9..0000000000 --- a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: Gaia UI テストの導入 -slug: Archive/B2G_OS/Automated_testing/gaia-ui-tests -tags: - - Build documentation - - Firefox OS - - Gaia - - Guide - - Mobile - - Testing - - TopicStub - - gaia-ui-test - - gaiatest -translation_of: Archive/B2G_OS/Automated_testing/gaia-ui-tests ---- -

-

次のページ »

-

- -
-

Gaia-ui-tests は、Gaia (Firefox OSのUI) を隅から隅までUIテスト実行するMozillaのテストスイートです。全てのテストはPythonで書かれ、Firefox OSのAPI操作に使う JavaScript もいくらか混じっています。このチュートリアル記事では、テストを書いて実行する環境のセットアップ方法を説明します。

-
- -

Gaia-ui-tests は Gaiatestという、Marionette あたりを元にしたPythonパッケージを使っています。 Gaiatest はHTML ロケータや、Marionette 呼び出しや、(相互コミュニケーションと機能用の)API呼び出しを一緒にラップすろように設計されています。Marionette は、Selenium WebDriver (ブラウザ自動化のプログラミングインターフェイス) 用に開発されたW3C標準に基いています。WebDriver と page/app オブジェクトを以前使った事がある場合、Marionette と gaiatest を使うのは楽に感じるでしょう。

- -

Gaia UI を開始する

- -

Gaia/Firefox OS の自動テストを開始するのに熱心な人のために、何もない所から自身のテストを書き始めるのを助けるチュートリアル集を用意しています。このチュートリアルをいったん終えてしまうと、Mozillaのテスト貢献者を始めるための、テストや、Firefox OS や、Marionette に対する充分な知識が得られるでしょう。貢献者になりたい場合は、このチュートリアルを完了しておくことを強く推奨します。

- -
-
パート 1: Marionette と Firefox OS をはじめよう
-
この記事には、テスト実行を開始するためにインストールが必要となるツール、たとえば B2G デスクトップ、Python、Marionette が載っています。
-
パート 2: Marionette を使って Firefox OS と基本的なやりとりをする
-
Marionette 経由で Firefox OS を操作するために使う基本コマンドをざっと見ます。
-
パート 3: コードを再利用可能テストに更新する
-
まだまだ行こう、この記事では基本的なコマンドをPythonファイル内のシンプルなテストに組み上げて、単一エントリーから全てを実行できるようにします。
-
パート 4: Firefox OS をセットアップする再利用コマンド
-
ここではコマンドをPythonメソッドに変えて再利用しやすくするのを見て行きます。
-
パート 5: テストランナーを導入する
-
テストランナーは優秀なテストスイートの中心的機能で、これにより複数のテストの実行やレポートや結果の集約ができます。この記事ではPythonのユニットテストランナーの基本を探検します。
-
パート 6: クラスによって、タプルと Marionette を使う
-
ここでは、更にコードの重複を削減する方法を説明します、それにはタプル内の繰り返しのロケーターを保管して Marionetteの By クラスの文法でシンプルにします。
-
パート 7: 自分自身のテストを書く
-
いま基本は備わっています、そして自分自身のテストを書く時です! ここでは作業を簡単にする推奨ツールの予定や、手で書いてみるいくつかのテストをお勧めします。
-
パート 8: ベースクラスを使用する
-
この状態では、テストファイルは全てのテストランナーコードを含んでいます。当面は問題ないですが、テストファイルの実行を始めるとすぐに、多くの複製ができるでしょう。テストランナーコードを別々のPythonクラスに分けて抽象化する事で、この問題を解決してみます。
-
パート 9: アプリオブジェクトの複製を抑える
-
コードのメンテナンス性についての最終改良として、この記事では特定のFirefox OSアプリとのインタラクションをPythonアプリオブジェクトに抽象化するという抽象化を探検します。
-
- -

上級トピック

- -

テストの実行と記述をものにしたら、もっと複雑・先進的な作業に移りたくなるでしょう、例えば gaia-ui-tests 全体のテストスイートを実行したり、テスト結果としてpower drawをログ出力したり。

- -
-
gaia-ui-tests を実行する
-
Firefox OS の実端末やB2G Desktop に対して、いろいろな設定にて、gaia-ui-tests を一通り実行するガイド。
-
- -

こちらも見よ

- -

Gaia-ui-tests main repository

- -

質問/コメント/関心事

- -

このプロジェクトははるかに初期の段階なので、あなたのフィールドバックはとても感謝されます:

- - - -
diff --git a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_1_marionette_firefox_os_start/index.html b/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_1_marionette_firefox_os_start/index.html deleted file mode 100644 index 4cf4177291..0000000000 --- a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_1_marionette_firefox_os_start/index.html +++ /dev/null @@ -1,191 +0,0 @@ ---- -title: 'パート 1: Marionette と Firefox OS を開始する' -slug: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_1_Marionette_Firefox_OS_start -tags: - - Automation - - Firefox OS - - Gaia - - Python - - gaia-ui-test - - tests -translation_of: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_1_Marionette_Firefox_OS_start ---- -

- -

-

« 前のページ次のページ »

-

- -
-

このチュートリアルシリーズは、Marionette(お使いのコンピュータ上で実行される自動化パッケージ)を使用してFirefox OSの自動UIテストを記述し、実行することが軌道に乗ることを目指します。Marionette はGeckoベースのプラットフォームでテストを実行するコマンドを発行します。この特定の記事では、テスト実行を開始する前に行う必要がある設定を一通り行います。

-
- -

チュートリアルシリーズでは自動テストの概念を一通り見て、またFirefox OS(かなり有用なB2G Desktopテストツール含みます)とMarionetteとの動作を紹介します。 時折、独自の解決策を模索することを奨励するための課題が含まれます。

- -
-

注意: チュートリアルでは、Mozilla製品に固有のものではありません; 例えば、HTML5のアプリを開発している場合は、テストフレームワークを構築するために、このチュートリアルを使用することができます。

-
- -

このチュートリアルに対するソフトウェア要求

- -

チュートリアルで以下のソフトウェアをインストールして、使用します。:

- - - -

Python と pip

- -

Linuxのような一部のオペレーティングシステムはプリインストールのPythonが付属します。 Pythonのをインストールする前に、すでにそれがインストールされていないことを確認してください。コマンドラインまたは端末から、こう実行してください:

- -
python --version
- -

Pythonのの2.6.xまたは2.7.xのすべてのバージョンは、このチュートリアルのための申し分ありません。Python2.7がインストールされていない場合は、Python release siteでインストーラを見つけることができます。

- -

Pip はPythonのツールをインストールするために使用され、Marionetteをインストールするにはこれが必要です。端末またはコマンドラインに pip と入力することで、pip がインストールされているかどうか確認することができます。ピップをインストールするには、pip documentationでの指示に従ってください。

- -

B2G Desktop

- -

B2Gデスクトップクライアントを使用すると、Gaia (Firefox OSの UI) と、デスクトップまたはラップトップコンピュータ上のFirefoxのOSアプリを実行することができます。 デスクトップクライアントにはいくつかの制限があります — それはカメラ、バッテリー、などのデバイスのハードウェアをエミュレートしていません — しかし、それはこのチュートリアルでの目的にとっては完璧でしょう。次にこれをインストールしましょう。

- -

Firefox Nightly siteから最新B2Gデスクトップをダウンロードしてください。(一番下の Desktop Boot2Gecko を見てください) B2Gデスクトップをダウンロードしたら、コンピュータ上のフォルダに内容を抽出します。FirefoxのOSシミュレータを起動するには、お使いのOSに適切な b2g スクリプトファイルを実行します。:

- - - -

アプリケーションが起動したら、このようなウィンドウが表示されるはずです:

- -

A welcome screen for Firefox OS - says welcome in multiple languages

- -

Firefox OSのホームスクリーンに到達するまで、初回の使用上の手順に従ってください。次の非常に有用なキーボードコマンドを使って、携帯電話のハードウェアボタンをエミュレートできることに注意してください。(例えば、 ホームを押すと、スリープからの電話を復帰します。)

- - - - - - - - - - - - - - - - - - - - - - - - - - -
-

 

-
-

Windows/Linux キーボード

-
-

Mac OS キーボード

-
-

ホームボタン

-
-

Home

-
-

Fn+左矢印

-
-

電源ボタン

-
-

End

-
-

Fn+右矢印

-
-

音量 +/-

-
-

Page up/page down

-
-

Fn+ 上/下 矢印

-
- -

この時点では、B2Gデスクトップを開いたまま残すことができ、側にウィンドウを移動します。次に、Marionetteがインストールされると作業完了です。

- -

Marionette

- -

Marionetteは、2つの部分から構成されています。つまりクライアント (ラップトップ上で操作するもの) とサーバ (Firefox OS内で操作するもの)です。操り人形師のように、Marionette サーバで直接Firefox OSを制御できます。

- -

marionette architecture showing marionette server inside Firefox OS and marionette client on its own outside

- -

いまはデスクトップB2Gクライアントを使用しているので、Marionetteサーバがプリインストールされています(実デバイス用のFirefox OSのエンジニアリング構成のビルドを使用している場合も同様です)。 ただしFirefoxのOSを制御する前に、ローカルコンピュータ上にMarionetteのクライアントをインストールする必要があります。これは、ターミナルで次のコマンドを実行することによって行われます:

- -
pip install marionette_client
- -

今のところここまでです。セットアップ済みで、発進の準備ができています!

- -

 

- -
diff --git a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_2_marionette_firefox_os_interactions/index.html b/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_2_marionette_firefox_os_interactions/index.html deleted file mode 100644 index 712caed611..0000000000 --- a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_2_marionette_firefox_os_interactions/index.html +++ /dev/null @@ -1,177 +0,0 @@ ---- -title: 'パート 2: Marionette を使って Firefox OS と基本的なやりとりをする' -slug: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_2_Marionette_Firefox_OS_interactions -tags: - - Automation - - Firefox OS - - Gaia - - Python - - gaia-ui-tests - - tests -translation_of: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_2_Marionette_Firefox_OS_interactions ---- -

- -

-

« 前のページ次のページ »

-

- -
-

チュートリアルのパート2では、Firefox OSのリモート制御を可能にするいくつかの簡単なMarionetteのコマンドを始めましょう。完全なテスト記述はカバーしていませんが、テストを書くときに使用する基本的なコードの特徴を教えてくれます。パート3では、このコードを実際のテストに進化させるように進行します。

-
- -

Firefox OSをスタートアップ

- -

これらのテストを書くとき、Firefox OSをすでに実行し、コマンドを受信する準備をしている必要があります:

- -
    -
  1. デスクトップB2Gを起動します
  2. -
  3. Settings App > Screen lock > uncheck Lock screenを使用して、ロックスクリーンを無効にします。
  4. -
  5. Settings App > Display > Screen timeout の設定を never に変更することによって、画面のタイムアウト/スリープモードを無効にします
  6. -
  7. 我々のテストコマンドを待つために、横側にウィンドウを移動させます
  8. -
- -

Marionetteを発射

- -

今、Pythonコンソールを起動します: 単にターミナルウィンドウに移動して、pythonコマンドを発行します。

- -

ここからは、Firefox OSの内部のMarionetteのサーバにコマンドを送信することができます。以下のコマンドの多くを発行した後、あなたは、Firefox OSの応答が表示されるはずです。Pythonのコンソールでは、必要なコードを含むMarionetteライブラリをインポートするために、次のコマンドを入力します:

- -
from marionette import Marionette
- -

今、Marionetteがクライアントからのコマンドを受信する準備をするような、Marionetteセッションを開始するよう、次の2行を実行してください。:

- -
marionette = Marionette()
-marionette.start_session()
- -

上述したように、ロック画面を無効にしなかった場合は、このコマンドを使用して、プログラムで画面のロックを解除できます:

- -
marionette.execute_script('window.wrappedJSObject.lockScreen.unlock();')
- -

FirefoxのOS内部の別のフレームへのアクセス

- -

FirefoxのOSでのWebアプリは、色々なiFrameで動作します。別々のフレームにてWebアプリを実行すると、それらにセキュリティのための別個のコンテナと、(Windowのような)視覚管理も提供します。これはアプリが実行されるサンドボックスであるように考えることができます。Marionetteは、一度にフレームの1つで動作することができます。Marionetteを、対話をしようとしているフレームに切り替える必要があります。

- -

トップフレームはまた、System アプリです。すべてのアプリケーションとそれらのフレームは、System アプリの子です。新しいMarionette セッションはSystem のフレームで起動しますが、テストを開始するために、ホーム画面を見つけてそこに切り替える必要があります

- -

iFrameを見つけるために、何とかしてそれを識別する必要があります。Marionette がwebdriverのAPIに基づいているため、要素を見つけるために同じ戦略を使用していますので、webdriverがウェブ要素を識別するのに使用する戦略のいずれかを、簡単に使用することができます。element location strategiesで詳細をご覧ください。

- -

このケースでは、ホームスクリーンのiFrameを選択するために、CSSセレクタdiv.homescreen iframe を使用します。つまりfind_element()関数は、その2番目の引数としてこれを取り、検索を実行するのにどの選択機構を使うかを決める第1引数を取ります。変数にこの結果を格納し、これを引数としてswitch_to_frame()関数を実行します。ここで、以下の2つのコマンドを試してみてください:

- -
# Switch context to the homescreen iframe and tap on the Contacts app icon
-home_frame = marionette.find_element('css selector', 'div.homescreen iframe')
-marionette.switch_to_frame(home_frame)
- -
-

注意: さらに読んでおくのや、フレーム切り替えを説明する図は, Working with iFramesをご覧ください。

-
- -

アプリケーションの開始

- -

OKです。今、アイコンを確認できるホームスクリーンアプリにいて、tap()関数とfind_element()関数をの組み合わせて使用し、そのアイコンをタップすることができます。

- -
contacts_icon = marionette.find_element('xpath', "//div[@class='icon']//span[contains(text(),'Contacts')]")
-contacts_icon.tap()
- -

すべてがうまく行っている場合、ここで連絡先アプリを開いて見えるようにする必要がありますが、前にホームスクリーンで行ったように、対話するためには、まだ連絡先アプリのフレームに切り替える必要があります。:

- -
# First, we need to switch context back to the System frame
-marionette.switch_to_frame()
-
-# Now, switch context to the contacts app frame
-contacts_frame = marionette.find_element('css selector', "iframe[data-url*='contacts']")
-marionette.switch_to_frame(contacts_frame)
- -

フレーム切り替えはTrueを返すべきです。これができた場合、素晴らしい。これは連絡先アプリのコンテキスト内に入っていて、これを使用し始める準備ができていることを意味します。

- -

アプリを操作する

- -

次のステップでは、典型的なテストのタスクを実行します — 、新しい連絡先を作成し、それに名前を入力し、それを保存します。最初に、追加の連絡先ボタンをタップします:

- -
# Tap [+] to add a new Contact
-marionette.find_element('id', 'add-contact-button').tap()
- -

今度は、次の2つのコマンドを使用して連絡先の名前を追加してみましょう(send_keys()は要素に値を挿入するために使用されます):

- -
marionette.find_element('id', 'givenName').send_keys('Foo')
-# Add the contact's surname
-marionette.find_element('id', 'familyName').send_keys('Bar')
- -

今、連絡先を保存するためにDoneボタンをタップしましょう:

- -
marionette.find_element('id', 'save-button').tap()
- -

今、連絡先アプリの内部に入力した新しい連絡先が表示されます。そうなっていれば、素晴らしいです!

- -
-

注意: そうなっていない場合、連絡先アプリをリセットか停止して、Firefox OSでホームスクリーンの裏にナビゲートし、タスクを再実行してみてください。

-
- -

Marionetteセッションを閉じます

- -

最後に、次のコマンドを発行して、Marionetteセッションを終了する必要があります:

- -
marionette.delete_session()
- -

これはかなりうまくいきましたが、テストを実行しようとするたびにPythonのコンソールに入力を始めることはできません。第3部では、テストを実行するたびに再利用できるように、Pythonのファイル内にこのスクリプトをコンパイルします。我々はテストに合格したか失敗したかを区別できるように、アサーションも追加します。

- -
-

注意: Marionetteコマンドを記述する場合、必要となるロケータを把握するには、アプリの基本的なHTML構造にアクセスすることが極めて重要であるということが、確実にわかるでしょう。Part 7: Writing your own testsでは、これについて役立つ有用なリソースを提供しています。

-
- -

 

diff --git a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_3_reusable_tests/index.html b/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_3_reusable_tests/index.html deleted file mode 100644 index 18a417120a..0000000000 --- a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_3_reusable_tests/index.html +++ /dev/null @@ -1,183 +0,0 @@ ---- -title: 'パート 3: コードを再利用可能テストに更新する' -slug: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_3_Reusable_tests -translation_of: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_3_Reusable_tests ---- -

- -

-

« 前のページ次のページ »

-

- -
-

パート2では、Marionetteのクライアントコマンドを使用するとFirefox OSの制御が簡単にできることを学びましたが、Pythonのコンソールにそれらを入力するのは、遅くて退屈です。テスト自動化の重要な利点は、それが自律的に実行できることです。すべてのコードをPythonのファイルにコマンドを置き、次に一度にすべてを実行することができるように、このパートでそれを行う方法を学習します。

-
- -

テストケースの要約

- -

連絡先アプリを開き、新しい連絡先を追加する - パート2では、こんな典型的なテストケースを実行する手順をたどってきました:

- -
    -
  1. Firefox OSのロックを解除 (オプション; 第2部では、手動でロック画面をオフにしました。それゆえ、以下のコードでこれを含みません。)
  2. -
  3. 連絡先アプリに切り替え
  4. -
  5. 新しい連絡先の追加アイコンをタップします
  6. -
  7. 連絡先の名前を入力
  8. -
  9. タップして完了
  10. -
  11. しばらく待って、連絡先が存在していることを確認します
  12. -
- -

Pythonのファイルに我々のテストを置きます

- -

Pythonのファイルにこれらのステップをすべて入れた場合、それを再利用し、はるかに素早く実行できます。あなたに都合の良いディレクトリを選んで、そこに test_add_contact.py と呼ばれる新しいテキストファイルを作成します。

- -

以下に示すように、このファイルにパート2で見たコマンドを入力します。良い習慣であるため、Pythonのクラス構造を使用し、チュートリアルの今後のステップでの良い基盤を作ります。

- -
import time
-from marionette import Marionette
-
-class TestContacts:
-
-    def __init__(self):
-        self.test_add_contacts()
-
-    def test_add_contacts(self):
-        # Create the client for this session. Assuming you're using the default port on a Marionette instance running locally
-        self.marionette = Marionette()
-        self.marionette.start_session()
-
-        # Switch context to the homescreen iframe and tap on the contacts icon
-        time.sleep(2)
-        home_frame = self.marionette.find_element('css selector', 'div.homescreen iframe')
-        self.marionette.switch_to_frame(home_frame)
-        contacts_icon = self.marionette.find_element('xpath', "//div[@class='icon']//span[contains(text(),'Contacts')]")
-        contacts_icon.tap()
-
-        # Switch context back to the base frame
-        self.marionette.switch_to_frame()
-        time.sleep(2)
-
-        # Switch context to the contacts app
-        contacts_frame = self.marionette.find_element('css selector', "iframe[data-url*='contacts']")
-        self.marionette.switch_to_frame(contacts_frame)
-
-        # Tap [+] to add a new Contact
-        self.marionette.find_element('id', 'add-contact-button').tap()
-        time.sleep(2)
-
-        # Type name into the fields
-        self.marionette.find_element('id', 'givenName').send_keys('John')
-        self.marionette.find_element('id', 'familyName').send_keys('Doe')
-
-        # Tap done
-        self.marionette.find_element('id', 'save-button').tap()
-        time.sleep(2)
-
-        # Close the Marionette session now that the test is finished
-        self.marionette.delete_session()
-
-if __name__ == '__main__':
-    TestContacts()
-
- -
-

注意: コード内で、パート2でカバーしていないと気づく1つの追加事項は、Python time.sleep()関数です— これは、次の行に継続する前に、一定時間スクリプトを停止します (秒単位で定義) 。ユーザが手動でボタンをタップすることなどや、FirefoxのOSが結果のアクションを完了するのを待つことをシミュレートする必要があるため、自動テストにこれらの行を追加しました。遅延なしにこのスクリプトを実行した場合は、 Pythonはすべてを瞬時に完了し、Firefox OSが追いつくことができないために、おそらくテストは失敗となるだろう。

-
- -

今、ターミナルでテストが保存されているディレクトリに移動し、次のコマンドを実行して、テストを実行することができます:

- -
python test_add_contact.py
- -
-

注意: Pythonのインデントルールに注意してください。 コピーして貼り付けた後は、コードを実行するためにすべてを正しくインデントする必要があるかもしれません。これに関連するエラーが発生した場合は、すべてのインデントレベルはタブで区切られていることを確認します。

-
- -
-

注意: また、上記のコードを使用して挿入された名前はは"John Doe"であることがわかります。パート2での"Foo Bar"という名前と違います。コードが正常に実行し、別の連絡先を追加するように、我々はこうしました。 同じ名前の連絡先を追加しようとする場合、Firefox OSでは重複する連絡先についての警告が表示されます。現時点では、テストの実行を繰り返す最善の方法は、FirefoxのOSのインターフェースに入り、毎回実行する前に、手動で連絡先を削除することです。

-
- -

アサーションを追加する

- -

自動テストに重要となり、我々のテストにまだ欠落している一点は、アサーションです — Firefox OSが望む状態に達しているかどうか (つまりテストが成功したかどうか)、というレポートまたは指標となるもの。新しい連絡先がアプリ内に存在するかどうかを確認するためにいくつかのコードを追加することでこれをやります。
-  
- # Close the Marionette session...行の直前に、このコードに追加し、クラスの他の行と同じレベルにインデントされていることを確認します:

- -
# Now let's find the contact item and get its text
-contact_name = self.marionette.find_element('css selector', 'li.contact-item:not([data-group$="ice"]) p').text
-assert contact_name == 'John Doe'
- -

古い連絡先を削除し、次のようにテストを再実行してみてください:

- -
python test_add_contact.py
- -

全てがうまく実行できらた素晴らしい、今度は機能テストがあります!

- -
-

注意: アサーションが失敗した場合は、以前の'Foo Bar'の連絡先はもう存在していないことを確認してください。アサートの前にCSSセレクタは、実際には、リスト内の最初の連絡先を拾っています。(アサートを呼ぶ前に print "Contact name: %s" % contact_name と呼ぶことで、見ることができます。).

-
- -
-

注意: アサーションは現在何もしないように見えますが、Part 5: Introducing a test runnerで紹介されているように、テストランナーを使用し始めるときアサーションはとても重要です。unittestのようなテストランナーは、アサーションを使ってテストが正常か完了したかどうかを確認し、次にこれらのテストの結果 (OK or FAIL)を返します。

-
- -

タイミングに関する注意

- -

自動テストを書く時に、対処するのが最も困難なことの一つは、タイミングです。Firefox OSが最後の一つを完了する前に、テストが次のステップに移行するなら、失敗を得る可能性が高いです。
-  
- 上述したように、サンプルコードではこの問題を解決するためにtime.sleep(x)コマンドを追加しました。しかしながら、time.sleep(x)を使用することは良い方法ではありません。ハードコードされた設定時間を使用すると、テスト実行に長すぎたり、長さが足りなかったりする可能性があります。後者は最悪のケースであります; それは、偽陰性のテスト結果 (実際にアプリは完全に機能するが、テストが期待するより少し遅く振る舞う時に、失敗とレポートされるテストの意味) を生じます。

- -

次のパートでは、テストの特定部分を抽象化して、独立したPythonの関数にするよう進行します。そして、sleep() 関数を、適切な動的待機で置き換えます。

- -
diff --git a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_4_reusing_commands_firefox_os_setup/index.html b/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_4_reusing_commands_firefox_os_setup/index.html deleted file mode 100644 index 36d6e22400..0000000000 --- a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_4_reusing_commands_firefox_os_setup/index.html +++ /dev/null @@ -1,160 +0,0 @@ ---- -title: 'パート 4: Firefox OS をセットアップする再利用コマンド' -slug: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_4_Reusing_commands_Firefox_OS_setup -tags: - - Automation - - Firefox OS - - Gaia - - Python - - Testing - - gaia-ui-tests -translation_of: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_4_Reusing_commands_Firefox_OS_setup ---- -

- -

-

« 前のページ次のページ »

-

- -
-

パート2とパート3では、動作するテストを理解しました。しかし、テストを実行する前にその状態をリセットしたい場合(例えば、開いているアプリケーションを停止する)、これを手動で行う必要があったでしょう。それは少し退屈なので、再び自動化する必要があります!この部分では、再利用できる独立したPythonのメソッドに少しのコードを発生せることによって、もっと自動化する方法を見ていきます。

-
- -

自動的に状態をリセット

- -

典型的なテストの実行開始時に、おそらくFirefox OSのロック画面を解除し、すべての実行中のアプリケーションを強制終了することを望みます。それでは、これを行う方法を見てみましょう。

- -

ロック画面の解除

- -

先に進む前に、まだ行っていない場合 Settings App > Screen lock > Lock screen で再びロック画面を有効にします。

- -

ちょうどクラス内の場所で、あなたの test_add_contact.py ファイルに次のPythonのメソッドを追加します。:

- -
def unlock_screen(self):
-    self.marionette.execute_script('window.wrappedJSObject.lockScreen.unlock();')
- -

呼び出された時、このメソッドは現在のFirefox OSのロックを解除します。 今度は self.marionette.start_session() 行の下に、下記の行を追加することで、テスト内でこれを呼びましょう。:

- -
# Unlock the screen
-self.unlock_screen()
- -

開いているすべてのアプリケーションの停止

- -

今、実行時に開いているすべてのアプリケーションを停止するために、私たちのコードにメソッドを追加します。これは下記のように見えます。:

- -
    def kill_all(self):
-        self.marionette.switch_to_frame()
-        self.marionette.execute_async_script("""
-             // Kills all running apps, except the homescreen.
-             function killAll() {
-               let manager = window.wrappedJSObject.appWindowManager;
-
-               let apps = manager.getApps();
-               for (let id in apps) {
-                 let origin = apps[id].origin;
-                 if (origin.indexOf('verticalhome') == -1) {
-                   manager.kill(origin);
-                 }
-               }
-             };
-             killAll();
-             // return true so execute_async_script knows the script is complete
-             marionetteScriptFinished(true);
-            """)
- -

直前のセクションで追加した unlock_screen メソッドの直後にこれを追加します。

- -

次に、テストの残りの部分と一緒にこれを実行するには、下記を追加します。つまり self.unlock_screen() 行の直後に追加します。:

- -
# kill all open apps
-self.kill_all()
- -

今、最後にテスト実行した後に連絡先アプリを開いたままにしておき、また再度テストを実行しようとする前にロック画面に戻してみてください。画面のロックが解除されることに加えて、テストが再実行される前に、開いている連絡先アプリが自動的に停止されます。だから、その状態は、今実行しているテストには影響しません。これは、テスト実行の長期間の信頼性のために重要です。

- -

再び数回テストを実行し、すべて動作するのとFirefox OSが正しくリセットされているかどうかを確認します。

- -

ダイナミックウェイト

- -

パート3ではダイナミックウェイトの重要性を述べました。Marionetteには下記のような一般的な構文を使用した、WebDriver/Selenium2のようなウェイトがあります。:

- -
from marionette_driver import Wait
-
-# Wait until element is displayed
-Wait(self.marionette).until(lambda m: m.find_element('id', 'element_id').is_displayed())
- -

指定された要素が表示されるまで、このコードはウェイトします。この時点で、対話する準備が整ったと分かります。テストでこのコード構成を使用してみましょう。

- -

まず第一に、既存のインポート行の直後に、ウェイトインポート行を含めます:

- -
from marionette_driver import Wait
- -

今、コンタクトフレームが表示されるまで待機する Wait() メソッドで、連絡先アイコンをタップした後の2つ目の time.sleep(2) 関数(self.marionette.switch_to_frame() 行の直後)を、置き換えることができます。:

- -
Wait(self.marionette).until(lambda m: m.find_element('css selector', "iframe[data-url*='contacts']").is_displayed())
- -

新しい連絡先の作成を開始する + 記号をタップするとき、Add contact フォームが完全に表示されるまでスライドされるのを待ちたいです。Done (保存) ボタンは次にタップが必要となるもので、このため、継続する前に所定の位置にスライドされるのを待つでしょう。3つ目の time.sleep(2) 関数を、次の行で置き換えます。:

- -
Wait(self.marionette).until(lambda m: m.find_element('id', 'save-button').location['y']== 0)
- -

この例では、Done ボタンが画面の上部に到達するのを待ちます。アニメーション化されたときに、要素は複数のポイントに表示されます。しかし、その最終的な静止位置は、待つための最も安全なものです。

- -

また、要素が表示され"ない"のを待つこともできます。Doneをタップした後で、残りのコードを実行する前に、同様な Wait() メソッドにnotをつけて使用し、Doneボタンが隠されるのを待ちます。4つ目と最終の time.sleep(2) 関数を、下記で置換します。:

- -
Wait(self.marionette).until(lambda m: not m.find_element('id', 'save-button').is_displayed())
- -

テストがOKに動作している場合には、素晴らしいです!テストのモジュール性と信頼性を向上させました。パート5では、テストを実行するためのテストランナーの使い方ご紹介します。

diff --git a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_5_introducing_a_test_runner/index.html b/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_5_introducing_a_test_runner/index.html deleted file mode 100644 index 4ce156330b..0000000000 --- a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_5_introducing_a_test_runner/index.html +++ /dev/null @@ -1,243 +0,0 @@ ---- -title: 'パート 5: テストランナーを導入する' -slug: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_5_Introducing_a_test_runner -tags: - - Automation - - Firefox OS - - Gaia - - Python - - gaia-ui-tests - - tests -translation_of: >- - Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_5_Introducing_a_test_runner ---- -

- -

-

« 前のページ次のページ »

-

- -
-

すべては、ここまでうまく進んでいます。しかし、まだ1つのテストのみを扱っています。実世界の大きなWebアプリケーションをテストする時には、数十または数百のテストケースである場合があり、それぞれを手動で実行することは絶対にしたくありません。このようなシナリオでは、我々は私たちのためにテストを見つけて実行するテストランナーを使用する必要があります。この記事ではただそれだけについて見ていきます。

-
- -

テストランナー

- -

テストランナーは、実際のテストフレームワークのための良好な基礎を提供します。テストランナーがテスト、属性を含むタグのテスト (アノテーション)を実行するように設計されて、レポートおよび他の機能を提供します。利用可能な多くのPythonのテストランナーがあります。しかし、この場合、効果的なシンプルで、PythonでパッケージされているようにPythonの独自の unittest を使います。

- -

一般的には3つの標準のセクションにテストを分割します。テストランナーのセットアップのための典型的なsetUp()、tests、tearDown()
-  
- setUp()tearDown() メソッドはすべてのテストのために自動的に実行されて、それぞれ下記を含んでいます:

- - - -

セットアップのテスト部分では、実際のテストのために実行したい任意のコードです。第2-4部分の上に構築されたテストにこれを適用する方法を見てみましょう。

- -

ユニットテストとtest_add_contact.pyの実行

- -

最初のインポートのユニットテストに必要なユニットテストを使用するには、他のインポート行の下に次を追加してください。:

- -
import unittest
- -

次に、テストランナーを作成する必要があります。これを行うために、 unittest.Testcase クラスから TestContacts クラス継承を行います。つまり、class 行を下記に更新してください。:

- -
class TestContacts(unittest.TestCase):
- -

また、次のものを削除する必要があります:

- -
    def __init__(self):
-        self.test_add_contacts()
- -

テストを初期化すると、代わりにユニットテストによって処理されますので、自分自身を処理する必要はありません。あなたのコードの下で、次のものを置き換えて:

- -
if __name__ == '__main__':
-    TestContacts()
- -

下記を用います。:

- -
if __name__ == '__main__':
-    unittest.main()
- -

次に、TestContacts クラス内部に setUp(self): メソッドを生成する必要があります。そして、次の手順を実施します。:

- -
    -
  1. Marionetteをインスタンス化し、Marionetteセッションを開始します
  2. -
  3. 画面ロックを解除します
  4. -
  5. 開いているすべてのアプリケーションを強制終了します
  6. -
  7. 連絡先アプリをロードします
  8. -
- -

このメソッドは、以下のようになります。test_add_contacts で既にある同一の行を削除する必要があります。

- -
    def setUp(self):
-         # Create the client for this session. Assuming you're using the default port on a Marionette instance running locally
-        self.marionette = Marionette()
-        self.marionette.start_session()
-
-        # Unlock the screen
-        self.unlock_screen()
-
-        # kill all open apps
-        self.kill_all()
-
-        # Switch context to the homescreen iframe
-        time.sleep(2)
-        home_frame = self.marionette.find_element('css selector', 'div.homescreen iframe')
-        self.marionette.switch_to_frame(home_frame)
- -

今のtearDown(self):メソッドを作成します。ここにMarionetteセッションを閉じるためのコードを追加する必要があります。メソッドは次のようになります。:

- -
    def tearDown(self):
-        # Close the Marionette session now that the test is finished
-        self.marionette.delete_session()
-
- -

ここでも、test_add_contacts から同じ行を削除することを忘れないでください。

- -

今、前にしたとおりにテストを実行してみてください。これで、パスと失敗のレポートを取得することを確認できます。これは、ユニットテストやpy.testなどのテストランナーを使用する利点の一つです。

- -
-

注意: あなたが動けなくなる場合は、インターネットのまわりのユニットテスト使用するガイドがたくさんあります。http://selenium-python.readthedocs.org/en/latest/getting-started.htmlhttp://assertselenium.com/2013/10/07/getting-started-with-python-webdriver/ をお勧めします。Pythonとwebdriverをするためのものであるが、これらはまだ関連しています。

-
- -

参照コード

- -

参考のため、この段階での私たちの最終的なコードは次のようになります:

- -
import time
-from marionette import Marionette
-from marionette_driver import Wait
-import unittest
-
-
-class TestContacts(unittest.TestCase):
-
-    def unlock_screen(self):
-        self.marionette.execute_script('window.wrappedJSObject.lockScreen.unlock();')
-
-    def kill_all(self):
-        self.marionette.switch_to_frame()
-        self.marionette.execute_async_script("""
-             // Kills all running apps, except the homescreen.
-             function killAll() {
-               let manager = window.wrappedJSObject.AppWindowManager;
-
-               let apps = manager.getApps();
-               for (let id in apps) {
-                 let origin = apps[id].origin;
-                 if (origin.indexOf('verticalhome') == -1) {
-                   manager.kill(origin);
-                 }
-               }
-             };
-             killAll();
-             // return true so execute_async_script knows the script is complete
-             marionetteScriptFinished(true);
-            """)
-
-    def setUp(self):
-         # Create the client for this session. Assuming you're using the default port on a Marionette instance running locally
-        self.marionette = Marionette()
-        self.marionette.start_session()
-
-        # Unlock the screen
-        self.unlock_screen()
-
-        # kill all open apps
-        self.kill_all()
-
-        # Switch context to the homescreen iframe and tap on the contacts icon
-        time.sleep(2)
-        home_frame = self.marionette.find_element('css selector', 'div.homescreen iframe')
-        self.marionette.switch_to_frame(home_frame)
-
-
-    def test_add_contacts(self):
-        contacts_icon = self.marionette.find_element('xpath', "//div[@class='icon']//span[contains(text(),'Contacts')]")
-        contacts_icon.tap()
-
-        # Switch context back to the base frame
-        self.marionette.switch_to_frame()
-        Wait(self.marionette).until(lambda m: m.find_element('css selector', "iframe[data-url*='contacts']").is_displayed())
-
-        # Switch context to the contacts app
-        contacts_frame = self.marionette.find_element('css selector', "iframe[data-url*='contacts']")
-        self.marionette.switch_to_frame(contacts_frame)
-
-        # Tap [+] to add a new Contact
-        self.marionette.find_element('id', 'add-contact-button').tap()
-        Wait(self.marionette).until(lambda m: m.find_element('id', 'save-button').location['y']== 0)
-
-        # Type name into the fields
-        self.marionette.find_element('id', 'givenName').send_keys('John')
-        self.marionette.find_element('id', 'familyName').send_keys('Doe')
-
-        # Tap done
-        self.marionette.find_element('id', 'save-button').tap()
-        Wait(self.marionette).until(lambda m: not m.find_element('id', 'save-button').is_displayed())
-
-    def tearDown(self):
-        # Close the Marionette session now that the test is finished
-        self.marionette.delete_session()
-
-if __name__ == '__main__':
-    unittest.main()
-
-
diff --git a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_6_marionette_by_class/index.html b/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_6_marionette_by_class/index.html deleted file mode 100644 index 32b7aa2bfd..0000000000 --- a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_6_marionette_by_class/index.html +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: 'パート 6: クラスによって、タプルと Marionette を使う' -slug: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_6_Marionette_By_class -tags: - - Automation - - Firefox OS - - Gaia - - Python - - Testing - - gaia-ui-tests -translation_of: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_6_Marionette_By_class ---- -

- -

-

« 前のページ次のページ »

-

- -
-

コードでは、これまで、特定の要素を見つけるために多くのロケータを使用しています。アプリケーション(iFrames)やアプリケーションの特定の部分であるかどうか。今まで、結果として、直接インラインロケータを書いて、コードを複製しています。さらに状況を改善するためには、再利用できるように、Pythonのタプル変数にこのロケータを抽象化することをお勧めします。この記事では、どのようにお見せしましょう。

-
- -

タプル、およびクラスによるMarionette

- -

例として、連絡先アプリiFrameを見つけるために使用しているロケータを考えてください。:

- -
'css selector', "iframe[data-url*='contacts']"
- -

表示されるようにフレームを待っているときと切り替えるときの両方でこのロケータを使用します。簡単に物事を行うために、変数でこれを保存することができます。(またByをインポートする必要があります。):

- -
from marionette import By
-
-_contacts_frame_locator = (By.CSS_SELECTOR, "iframe[data-url*='contacts']")
- -

Marionette By クラスは、idやCSSセレクタなどのように位置決め技術へのアクセスへのショートカットを提供します。前のように、セレクタを使用して要素を取得し、次にCSSのタプル変数に格納します。HTML(とロケータ)が変化した場合、2つの場所で変更を行うよりも、一度変数を更新する方が簡単です。このタプルを使用するには、そのようなfind_element()メソッドでそれを含みます。:

- -
self.marionette.find_element(*self._contacts_frame_locator)
- -
-

注意: * — これに関連して — Pythonコードは、引数リストを開梱するためのものです; それはfind_element()に渡る必要がある2つの引数に元のタプルを分割しています。詳細および例について、PythonのドキュメントでUnpacking argument listsをご覧ください。

-
- -

他のタプルの例、それは、id 属性によって探し出しますが、以下のとおりであります:

- -
_add_contact_button_locator = (By.ID, 'add-contact-button')
- -

連絡先のテストでタプルとByを使用

- -

今では、テストのうち、ロケータを共有することができる TestContacts クラスのスコープにロケータを移動させることにより、test_add_contact.py のテストケースで重複を減らすための時間です。2,3のロケータを代入する方法を示し、その後、読者の演習として残りの部分を残しておきます。

- -

まず第一に、コードの先頭に次のように置くことによって、By をインポートすることを確認する必要があります。:

- -
from marionette import By
- -

今、TestContactsクラスの一番上にタプルを追加することができます。ちょうどclass TestContacts(unittest.TestCase):行の下に次の行を追加します。:

- -
_contacts_frame_locator = (By.CSS_SELECTOR, "iframe[data-url*='contacts']")
-_save_button_locator = (By.ID, "save-button")
-
- -

今、コードを通過し、すべてのインスタンスを置き換えることができます

- -
find_element('id', 'save-button')
- -

with

- -
find_element(*self._save_button_locator)
- -

and all instances of

- -
find_element('css selector', "iframe[data-url*='contacts']")
- -

with

- -
find_element(*self._contacts_frame_locator)
- -

そして、それは今のところこれだけです。既にあってもこの単純な例では、このコードの再利用のメリットを確認できるようになることを確信しています。この手法では、同じロケータが5、10または20回使用することを有することができる、より複雑なテストを書くために開始するように、特に有効になり始めます。
-
-  

diff --git a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_7_writing_your_own_tests/index.html b/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_7_writing_your_own_tests/index.html deleted file mode 100644 index d1d2a3551f..0000000000 --- a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_7_writing_your_own_tests/index.html +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: 'パート 7: 自分自身のテストを書く' -slug: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_7_Writing_your_own_tests -tags: - - Automation - - Firefox OS - - Gaia - - Python - - gaia-ui-tests - - tests -translation_of: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_7_Writing_your_own_tests ---- -

- -

-

« 前のページ次のページ »

-

- -
-

これまでのところ、すばやく設定し、実行してフォローするのに十分な手順に沿って、FirefoxのOS上で、独自の自動テストを書き始めるために必要なツールや情報のほとんどを与えてくれました。この部分では、いくつかのリソースやアイデアをご提供し、人出がいらないつもりで、次に自身の方法を作るために奨励しています。ここでは、独自のテストを書くの方に移動を開始します - お楽しみください!

-
- -

リソース

- -

自身のユニットテストを構築するために開始するように次のリソースが有用であろう。

- - - -

新規および変更されたテストのためのアイデア

- -

このセクションでは、始めるためにいくつかのアイデアを提供します。

- -

test_add_contact.pyの変更

- -

すでに動作してきたテストを修正してみましょう:

- -
    -
  1. テスト接点には一意の名前を毎回持っていることを確認します。
  2. -
  3. setUp() ステップにおけるすべての連絡先を削除します。
  4. -
  5. ロック解除前に画面を復帰。
  6. -
- -

今度は、別のテストメソッドの追加しましょう。これは、それが名前の最初にtest_を持っている限り好きなものを呼び出すことができます。このテストでは、次の操作を行う必要があります。:

- -
    -
  1. オープンコンタクト。
  2. -
  3. 最初のテストで作成されたものと異なる名前で連絡先を作成します。
  4. -
  5. 編集モードで連絡先を再入力します。
  6. -
  7. Companyを追加します。
  8. -
  9. Doneをタップします。
  10. -
  11. 会社が表示されていることを主張しています。
  12. -
- -

テストファイルを実行すると、今、両方のテストが実行されます。今、テスト自動化の強度に近づいています — 自動的に一連のテストを実行し、結果を報告する機能!

- -

いくつかの新しいテストのアイデア

- - - -

 

diff --git a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_8_using_a_base_class/index.html b/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_8_using_a_base_class/index.html deleted file mode 100644 index af37d37b4e..0000000000 --- a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_8_using_a_base_class/index.html +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: 'パート 8: ベースクラスを使用する' -slug: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_8_Using_a_base_class -tags: - - Automation - - Firefox OS - - Gaia - - Python - - gaia-ui-tests - - tests -translation_of: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_8_Using_a_base_class ---- -

- -

-

« 前のページ次のページ »

-

- -
-

今、おそらく、進捗状況についてのかなり良く感じている複数のテストを持っています。しかし、さらなるコード効率を向上させる他の方法があります — これまでに、各テストファイルにおいて setUp()tearDown() メソッドが含まれるように持っていたことがあります。 このシリーズで見てきた現在のコンストラクトで行きます。数十のテストを持っている場合、それはコードの重複がたくさんです! この記事では、TestBase クラスのすべてのテストに共通なsetUp()/tearDown() コードを配置する方法を見てみましょう。これは、各個々のテストファイルにインポートすることができます。

-
- -

test_base.py

- -

開始するには、既存のテストケースと同じディレクトリに test_base.py と呼ばれる新しいファイルを作成します。

- -

次に、setUp()tearDown() メソッドを含むTestBase クラスに加えて、ファイルに共通の設定(unittest, Marionette and time)に関連するあなたの大切な書類を移動します。そして、共通ヘルパー関数(unlock_screen() のような)と関連付けられています。 ファイルには、次のようになります:

- -
import time
-import unittest
-from marionette import Marionette
-
-
-class TestBase(unittest.TestCase):
-
-    def unlock_screen(self):
-        self.marionette.execute_script('window.wrappedJSObject.lockScreen.unlock();')
-
-    def kill_all(self):
-        self.marionette.switch_to_frame()
-        self.marionette.execute_async_script("""
-             // Kills all running apps, except the homescreen.
-             function killAll() {
-               let manager = window.wrappedJSObject.AppWindowManager;
-
-               let apps = manager.getApps();
-               for (let id in apps) {
-                 let origin = apps[id].origin;
-                 if (origin.indexOf('verticalhome') == -1) {
-                   manager.kill(origin);
-                 }
-               }
-             };
-             killAll();
-             // return true so execute_async_script knows the script is complete
-             marionetteScriptFinished(true);
-            """)
-
-    def setUp(self):
-         # Create the client for this session. Assuming you're using the default port on a Marionette instance running locally
-        self.marionette = Marionette()
-        self.marionette.start_session()
-
-        # Unlock the screen
-        self.unlock_screen()
-
-        # kill all open apps
-        self.kill_all()
-
-        # Switch context to the homescreen iframe and tap on the contacts icon
-        time.sleep(2)
-        home_frame = self.marionette.find_element('css selector', 'div.homescreen iframe')
-        self.marionette.switch_to_frame(home_frame)
-
-
-    def tearDown(self):
-        # Close the Marionette session now that the test is finished
-        self.marionette.delete_session()
-
- -

テストファイルの更新

- -

作成された test_base.py ファイルを使用して、TestBaseをテストファイルにインポートする必要があります。そして、テストクラスは、TestBaseクラスを拡張するために変更される必要があります。:

- -
import unittest
-from marionette import Wait
-from marionette import By
-from test_base import TestBase
-
-class TestContacts(TestBase):
-
-    def test(self):
-        # Tests in here
-
-if __name__ == '__main__':
-    unittest.main()
- -

もう一度テストファイルを実行してみてください。

- -

今は多くのように見えないかもしれないが、あなたは数十または数百のテストがある場合、これは実際に重複したコードの多くを保存します。

diff --git a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_9_app_objects/index.html b/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_9_app_objects/index.html deleted file mode 100644 index 00dc7f472e..0000000000 --- a/files/ja/archive/b2g_os/automated_testing/gaia-ui-tests/part_9_app_objects/index.html +++ /dev/null @@ -1,141 +0,0 @@ ---- -title: 'パート 9: アプリオブジェクトの複製を抑える' -slug: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_9_app_objects -tags: - - Automation - - Firefox OS - - Gaia - - Python - - app objects - - gaia-ui-tests - - tests -translation_of: Archive/B2G_OS/Automated_testing/gaia-ui-tests/Part_9_app_objects ---- -

- -

-

« 前のページ

-

- -
-

自動テストでは、多くの場合、抽象コードに app のオブジェクトを使用します。これは、コードとロケータの重複を減らすことができます。コードの共通部分を変更する必要がある場合、むしろ10または20テストファイルでそれを変更することよりも、単一の app のオブジェクトに変更することができます。この記事では、app のオブジェクトを使用する方法の基礎を提供します。

-
- -

アプリオブジェクト: 入門

- -

app オブジェクトは、メソッド、ページ上のアクションを表すプロパティを含むPythonのクラスです。理論的な例では、これらを使用する方法を見てみましょう。

- -

homepage.py

- -

下記はいくつかの含まれている擬似コードとともに、ホームページのアプリのために使用する場合があるフレームです。

- -
class Homepage:
-        __init__(self, marionette):
-                # Marionette is passed in so that the object can use it
-                self.marionette = marionette
-
-        def switch_to_homepage_frame(self):
-                # Code for switching to System then to Homepage frame
-
-        def tap_contacts_icon(self):
-                # Code to tap the icon
-                # Switch to Contacts frame
-                # Now we return the Contacts app object as it has focus
-                from contacts import Contacts
-                return Contacts(self.marionette)
- -

contacts.py

- -

そしてここでいくつかの擬似コードで再度、連絡先アプリに使用するかもしれないものです。

- -
class Contacts:
-        _new_contact_button = (By.ID, ‘id’)
-
-        def tap_new_contact(self):
-                # Tap new contact icon
-                # Wait for event
-
-        def type_given_name(self, name_string):
-                # element.send_keys(name_string)
- -

test_contacts.py

- -

これはテストのコンテキストでどのように機能するかを理解するために、下記はHomepage のクラスを利用した迅速なサンプルです。:

- -
from homepage import Homepage
-
-def test_add_contact(self):
-        homepage = Homepage(self.marionette)
-        homepage.switch_to_homepage_frame()
-
-contacts = homepage.tap_contacts_icon()
-contacts.tap_new_contact()
- -

テストを更新

- -

ここからは、新しいアプリケーションのオブジェクトシステムを使用するようにテストのすべてのファイルを更新するために挑戦したいと思います。

- -

これは困難な作業であり、Pythonのクラス構造に慣れていない場合は、参照とコードサンプルのためのいくつかの書籍を参照する必要があります。

- -

完了したら、理想的には、テストファイル間の明確な分離を持っています:

- -
    -
  1. TestBaseは、setUp()tearDown() メソッドを含みます。
  2. -
  3. app オブジェクトはページの相互作用とロケータが含まれています
  4. -
  5. テストファイルは、単にテスト手順が含まれます。
  6. -
- -

がんばろう!

diff --git a/files/ja/archive/b2g_os/automated_testing/gaia_performance_tests/index.html b/files/ja/archive/b2g_os/automated_testing/gaia_performance_tests/index.html deleted file mode 100644 index e6e132cf33..0000000000 --- a/files/ja/archive/b2g_os/automated_testing/gaia_performance_tests/index.html +++ /dev/null @@ -1,201 +0,0 @@ ---- -title: Gaia パフォーマンステスト -slug: Archive/B2G_OS/Automated_testing/Gaia_performance_tests -tags: - - Apps - - B2G - - Firefox OS - - QA -translation_of: Archive/B2G_OS/Automated_testing/Gaia_performance_tests ---- -
-

この記事ではGaiaのパフォーマンステスト実行に関する情報を、新規テストを作る方法と共に提供します。

-
- -
-

記: test-perf の使用と Datazilla は非推奨です。Gaia に関するパフォーマンステストの最新リソースは、Raptor を見て下さい。

-
- -

テストを実行する

- -

テストはDatazillaの通常の基礎の上で実行します; しかしながら、自分自身でも実行できます。このためには、Marionette が有効でリモートデバッグが無効なエンジニアリングビルドが必要です。 この方法の詳細情報は、Gaia ビルドシステム入門の、設定カスタマイズ を見て下さい。

- -

テストの要求事項

- -

2013/12/6 から バグ 915156 が落ち着いたため、make test-perf はホスト上でテストを実行するのに Node.js が必要です。関連モジュールは npm で自動インストールされるでしょう。

- -

テストを実行する前に、実行ホストを調整する必要があります。実行ホストはB2G デスクトップ や、端末上で (実際または仮想の — emulatorのように) テストを実行させるモジュールです。デフォルトではB2G デスクトップ内で実行して、これはパフォーマンスと深くは関連しません。実行ホストを調整するには、単にGaiaの最上位ディレクトリにある local.mk ファイルを編集して(存在しない場合は作成します)、次の行を加えます:

- -
MARIONETTE_RUNNER_HOST=marionette-device-host
- -

これで端末の実行ホストを使えます。デフォルト値はmarionette-b2gdesktop-host です。

- -

もう一つは次のようにします:

- -
MARIONETTE_RUNNER_HOST=marionette-device-host make test-perf 
- -
-

記: 1つより多い端末が接続されている場合、ANDROID_SERIAL環境変数をセットしなければなりません。どの値を使うかを知るには、adb devices を見ます。更新済の Gaia バージョンを実行しているのを確認します。

-
- -

出力

- -

By default the test output the data in JSON format. By default it is output to stdout and might be mixed with error message from other commands like npm. This is not a very good idea for automation. So you can redirect this JSON output to a file. Just define MOZPERFOUT for the host runner, either on the command line as an option or in the local.mk file as shown above.

- -
MOZPERFOUT=myfile.json
- -

There is a "spec" reporter that allow reporting the output in a more human readable format. To use it, set the environment as follow:

- -
REPORTER=ConsoleMozPerf
- -

This will make the test output something easier to read. Not easier to parse. There is no real syntax.

- -

For now, any other value will use the JSON reporter.

- -
-

Note: MOZPERFOUT will be honoured whichever reporter you select.

-
- -

全てのテストを実行する

- -

In general you can run these tests on 1.4 and upwards from Gaia master. 1.3 might no longer be able to handle the test runs. There is an exception for 1.3t (Tarako). since バグ 1006064 landed, if you want to run the tests against Tarako (1.3t), you should run it from the Gaia 1.3t. From 2.0 and onwards, we consider that you should run the test from the same Gaia tree.

- -

To run all the tests, use the following command:

- -
make test-perf
- -
-

Note: Since early August 2014 (currently only on master) the b2g process is restarted after each test, not after each test run, to improve the reliability of the tests (see バグ 1027232). If you want to disable this, set the RESTART_B2G environment variable to "0" when running the tests.

-
- -

特定アプリのテストを実行する

- -

This is done by naming the app you want to run the tests for,  in the APP variable, for example:

- -
APP=browser make test-perf
- -

一連のアプリのテストを実行する

- -

You can also specify a set of apps, inside the APPS variable, to run the tests against a specific set:

- -
APPS="browser communications/contacts" make test-perf
- -

実行数の設定

- -

By default, each test is run five times. You can change that by setting the value of RUNS before running the tests. For example, to run each test three times you'd use this option:

- -
RUNS=3 make test-perf
- -

既知の問題

- -

When running test on Buri/Hamachi (Alcatel one touch fire), you get:

- -
Not enough fields given the number of keys.
- -

You can safely ignore the warning. It is just that b2g-info on the device is too old as it comes from 1.2 and we only change Gecko and Gaia on these.

- -

新規テストを書く

- -

With the details of running the test suite out the way, let's now look at how you can write your own performance tests for Gaia.

- -

スタートアップイベントのテスト

- -

We have setup a standard for app startup events. If you want to test the app startup, please follow the responsiveness guidelines. The startup_event_test.js test will drive it. Make sure to whitelist your app in /tests/performance/config.json, by adding it to the list specified by mozLaunch.

- -
-

Note: This is only implemented in v2.0 and later. If your code uses startup-path-done events then it is using the deprecated style and should be updated.

-
- -

If you want to measure intermediate launch stages that are not part of the reponsiveness standard, you can dispatch these using the method described below. Dispatching performance events is all you need, they will be collected automatically.

- -

他のイベントに基づくテスト

- -

Now if you want to test specific features in your app you can do so by sending events. The test will be in two part. The instrumentation part that lives in the app itself, and the control part that will use marionette to control the app to perform actions.

- -

Instrumentation

- -

To record the events, all you have to do is dispatch them.

- -

First, include our helper in your app:

- -
<script src="/shared/js/performance_testing_helper.js"></script>
-
- -
-

Note: The use of module loaders like RequireJS or Alameda, are perfectly acceptable provided it is loaded before any performance events are triggered.

-
- -

You need to be cautious and make sure you adjust the unit tests so that the PerformaceTestingHelper is either loaded or shimmed. A simple shim is to put this in the unit test source file:

- -
var PerformanceTestingHelper = {
-  dispatch: function() { }
-};
-
- -

The Travis CI jobs we run out of Github will error if you don't do that properly.

- -

Having done that, you can use the helper to dispatch events when it seems appropriate to do so. First you should dispatch a start event. It is important as the 'start' event is sent when we register the listeners, so for your feature you likely want to do this much later. So choose where the feature start and add the proper event dispatch.

- -
PerformanceTestingHelper.dispatch('my-feature-start');
-
- -

When you're ready to stop collecting data and to report the numbers, you need to send the my-feature-done event, also called the last event, to tell the helper to finish:

- -
PerformanceTestingHelper.dispatch('my-feature-done');
- -

Also you might want to send intermediate events as appropriate.

- -
-

Note: Here we use "my-feature-" as a prefix for the performance event. This is just an example. Please use an obvious name and try to use it consistently.

-
- -

アプリをコントロールする

- -

The second part is writing JavaScript to the test framework to perform the test. The filename must end with _test.js and live in apps/<myapp>/test/performance/.

- -

It is a lot like a marionette integration test (based on mocha), but with a few twists: in the setup() function you must inject the helper atom that is being used to collect the performance events.

- -
PerformanceHelper.injectHelperAtom(client);
- -

You must pass a lastEvent parameter to the PerformanceHelper constructor. This will be the last event on which to wait to test your feature.

- -

When calling performanceHelper.reportRunDurations() toward the end you must pass the name of the start event you dispatched, otherwise the measurement will be from the start, ie when we inject the helper atom. An easy to figure out the error is if you see the start event in the results. And in that case you'll the the startup events as well as these will be dispatched too.

- -
-

Note: You should study existing tests to get a become more familiar with the process.

-
- -

メモリの統計情報を集める

- -

You can collect the memory usage for both the b2g process and the current app. Just do

- -
var memUsage = performanceHelper.getMemoryUsage(app);
- -

app is the application object. memusage will contain several objects enumerating the memory statistics.

- -

非エンジニアリング端末でテスト実行する

- -

If you don't have an engineering build on your phone you'll have to do some additional steps:

- -
    -
  1. Clone B2G, and build with ./config.sh DEVICE-NAME (e.g. ./config.sh keon)
  2. -
  3. Build the Gecko part via ./build.sh gecko
  4. -
  5. Connect the phone and flash gecko via ./flash.sh gecko
  6. -
  7. Clone Gaia, and create a file build/custom-prefs.js with content user_pref("marionette.defaultPrefs.enabled", true);
  8. -
  9. Enable Remote Debugging on the phone and run make reset-gaia to reset the phone (or make install-gaia if you trust yourself)
  10. -
  11. Disable Remote Debugging and verify that everything is OK by running adb devices. The device should show up.
  12. -
  13. Now running a perf test should work. Verify via RUNS=1 APP=browser make test-perf
  14. -
- -

バグ登録する

- -

Please file bugs in Bugzilla, product "Firefox OS", component "Gaia::PerformanceTest".

- -

参考情報

- - - -
diff --git a/files/ja/archive/b2g_os/automated_testing/gaia_unit_tests/index.html b/files/ja/archive/b2g_os/automated_testing/gaia_unit_tests/index.html deleted file mode 100644 index 67e236098f..0000000000 --- a/files/ja/archive/b2g_os/automated_testing/gaia_unit_tests/index.html +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: Gaiaユニットテスト -slug: Archive/B2G_OS/Automated_testing/Gaia_unit_tests -translation_of: Archive/B2G_OS/Automated_testing/Gaia_unit_tests ---- -
-

Gaia/B2Gソースコードの一部として、GaiaとB2Gの異なる側面をテストするために、さまざまなユニットテストが使用可能になった。この記事ではこれらにアクセスする方法について解説します。

-
-
-

注意: このドキュメントではあなたがGaiaとB2Gを動かす方法を理解していると仮定しています。Gaiaの開発を開始するにはGaiaの開発を見てください。

-
-

ユニットテストを実行する

-

B2GデスクトップFirefox Nightlyでユニットテストを実行することができます。また最新のGaiaリポジトリが必要です。ほとんどの機能のためにNode.jsNPMがインストールされている必要があります。

-
-

注意: もし以下のコマンドがtest-agentの依存関係をインストール中に暗号に関するエラーで失敗したら、Node.js/NPMのバージョンが古すぎることに起因しているかもしれません。新しいバージョンをインストールしnode_modules/test-agentフォルダを削除するためにパッケージマネージャによってNode.jsをインストールするを読んでください。

-
-

Gaiaリポジトリにはテストの実行が簡単になるように便利なbin/gaia-testスクリプトが同梱されます。

-
-

注意してください:このスクリプトはprofile-debugのユニットテストに適したプロファイルを生成します。すでにこのディレクトリに別のプロファイルがある場合それを上書きします。Bug 980496ではこれをコンフィグ可能にすることを目指しています。

-
-

Firefoxでテストランナーを起動する

-

テストサーバとPATHから見つかるデフォルトのFirefoxを起動します:

-
bin/gaia-test
-

Firefoxのバイナリを選択する

-

FIREFOX環境変数にFirefoxバイナリのパスをexportすることができる。例えばOS Xの場合:

-
export FIREFOX=/Applications/FirefoxNightly.app/Contents/MacOS/firefox
-

或いは、bin/gaia-testへの引数として渡すこともできます:

-
bin/gaia-test <gaia directory> <firefox path>
-

B2Gデスクトップでテストランナーを起動する

-

ダウンロードとB2Gデスクトップの起動:

-
bin/gaia-test -d
-

Webインターフェイスからのテスト実行

-

特定のテストとExecuteボタンをシンプルにクリックすることでできます。

-

コマンドラインからのテスト実行

-

以下のコマンドでWebSocketサーバを実行し、B2G Desktop/Firefox Nightlyでテストエージェントアプリを実行します:

-
make test-agent-test
-
-

If you only want to run one app's tests you can specify which via the APP env variable:

-
make test-agent-test APP=calendar
-
-

また必要に応じてテスト出力を整形するためのレポータを提供することができます:

-
make REPORTER=List test-agent-test
-
-
- 注意:現在Docをサポートしていないので、全てのリポータが動くわけではありません。
-

Run the tests as you save

-

When the server is running, the tests for a file are run automatically when a file is saved or even just touched:

- -
-

Note: It watches only existing files so if you create a new file, you have to restart the agent.

-
-

Running tests like TBPL does

-

Gaia unit tests in TBPL are run using a separate runner; this explains how to use it.  Please consult the virtualenv docs if you're not familiar with using a Python virtualenv.

-
virtualenv venv
-source venv/bin/activate
-cd $GAIA/tests/python/gaia-unit-tests
-python setup.py develop
-cd gaia_unit_test
-python main.py --binary /path/to/b2g/desktop/build --profile /path/to/gaia/profile
-
-
-

Note: When specifying the path to the B2G desktop build, you should specify the path to b2g-bin, if it exists, otherwise use b2g.

-
-

The Gaia profile must be made using the following:

-
NO_LOCK_SCREEN=1 DEBUG=1 DESKTOP=0 make
-

By default, this profile will be generated in $GAIA/profile-debug. bin/gaia-test generates the same profile so you don't need to regenerate it if you already run gaia-test.

-

Disabling a gaia unit test in TBPL

-

TBPL uses a blacklist to exclude certain gaia unit tests from being run.  To prevent a test from running in TBPL, add its path to https://github.com/mozilla-b2g/gaia/blob/master/tests/python/gaia-unit-tests/gaia_unit_test/disabled.json.

-

Setting up your Gaia app

-

Although this guide should help make things easier, the best way to learn how to write, set up, and run tests is currently still to look at the source code; in particular, take a look at the gallery tests.

-

Loading your own test files

-
-

Note: This is an advanced and entirely optional technique. If test-agent's native test loader is working for your application and your test style, and you don't want to use your own test files, this section is not for you!

-
-

Test-agent loads your test files in an environment where they have access to mocha (among other bits of global state). One important test-agent global is require, which allows your test file to load a dependency (application code for instance). Sometimes, particularly if your application files expect to be loaded in a way that's different from test-agent's require, it can be useful to override test-agent's test file loader. You can do so in the following manner:

-
// setup.js
-
-testAgentRuntime.testLoader = function(path) {
-  // We're going to return a promise to represent
-  // the loading state of the test file at this path.
-  return new Promise((accept, reject) => {
-    // Load the parameter test file and resolve (or reject) appropriately
-    // ...
-  });
-};
-

Using mocks

-

TBD

-

Advanced: what does the script do?

-

Generating a profile

-

You need a profile that is generated by this command:

-
NO_LOCK_SCREEN=1 DEBUG=1 DESKTOP=0 make
-
-

This generates a debug profile in gaia/profile-debug, overriding a previous profile if you already have one.

- -

Launch the WebSocket server

-

Test agent (the test runner) ships with a built in WebSocket server that lets you remotely message the browser or device to queue a test run. Often you will want to develop with time saving features like a file watcher that will run your tests when a test file or implementation changes. To take advantage of these features you need to start the server:

-
make test-agent-server
-
-

Using the WebSocket server provides other tools such as a command line reporter for test results (watch the terminal you ran the command from), a Growl reporter, syntax error notifications, and more.

-

The agent also watches for modifications in files, and automatically runs the associated tests. It runs when you save the test or if you save the tested file (we use the convention where the test filename is the tested filename with _test appended, see below for more examples). It watches only existing files so if you create a new file, you have to restart the agent.

-

Running unit tests with Firefox Nightly

-

You can launch Gaia in Firefox Nightly with the following commands:

-
cd <path to gaia>
-<path to nightly>/firefox --no-remote -profile <path to gaia>/profile-debug/ http://test-agent.gaiamobile.org:8080/
-
-

Note: In OS X, The profile path should be absolute path

-
-

You can use Firebug or the integrated debugger to debug the tests; use the debugger keyword to break in the debugger.

-

Running unit tests with B2G Desktop

-

Launch Gaia and start the "Test Agent" app. From the Test gent app you can select tests to run from the UI.

-

Advanced: how does the test-agent work?

-

The Test Agent lives in its own Github repository. You can have look there to understand how it works under the hood.

diff --git a/files/ja/archive/b2g_os/automated_testing/index.html b/files/ja/archive/b2g_os/automated_testing/index.html deleted file mode 100644 index 0ab927239b..0000000000 --- a/files/ja/archive/b2g_os/automated_testing/index.html +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: Firefox OSの自動テスト -slug: Archive/B2G_OS/Automated_testing -tags: - - Automated testing - - QA - - Testing -translation_of: Archive/B2G_OS/Automated_testing ---- -

- -
-

Firefox OSはまだ開発中であり、新しいハードウェアのサポートが間近に迫っていることを考えれば、テストの仕方を知ることは今後重要になると言えます。このページは複数の違うテストの実行、自動化、そして結果のレポートとトラッキングを含む、Firefox OSのテストの多角的な側面に関する情報の記事を提供しています。

-
- -

導入

- -
-
Firefox OS上でテストを実行する: 開発者向けガイド
-
まずは、開発者に注目したテスト実行の導入ガイドです。もしあなたがMozillaのテスト実行と自動化システムを経験していないならまず読んでください。すでにテストを経験しているなら、おそらく実行したいテストと方法のアイデアにあわせて、以下のより特化した詳細なガイドにスキップできます。
-
- -

Gaiaのテスト

- -

これらの記事はGaiaの性能を試す試験を受けさせるように設計された主なテストスイートをカバーします。

- -
-
Gaia UIテスト
-
Gaia UIの相互作用と機能のPython製テスト。
-
Gaia総合テスト
-
JavaScriptによるMarionetteベースのGaia総合テスト。
-
Gaiaユニットテスト
-
GaiaのUI相互作用を伴わないユニットテスト; Marionetteベースではないが、JavaScriptで書かれています。
-
Raptor: Performance Tools for Gaia
-
Raptor はFirefox OSに特化したパフォーマンス測定ツールで、既存のパフォーマンステストツールを改良するのを狙っています。
-
Eideticker
-
ビデオキャプチャベースでFirefox OSにパフォーマンス計測を提供します。
-
- -

MTBFテスト

- -
-
MTBFテストは再開しないgaia-ui-testベースのテストフレームワークです。MTBFテストは長時間テストを妨げる種類の問題の特定を試します。(現在はまだ発展途上のテストフレームワークであり、台湾QAチームが所有しています)
-
- -

B2Gのテスト

- -

以下のガイドはB2Gの機能性の様々な側面をテストする異なる数のテストハーネスをカバーします。

- -
-
Mochitests
-
Geckoの機能とAPIのテスト; HTML & JSベース。Gaiaと相互作用しません。
-
Reftests
-
Geckoのレンダリング正確性テスト。
-
WebAPIのテスト
-
GeckoのJSベースのWebAPIテスト; ほとんどにエミュレータが必要になります。
-
xpcshellのテスト
-
GeckoのXPCOM APIsのヘッドレステスト。
-
cppunit tests
-
C++ 単体のヘッドレステスト。
-
- -

解説ドキュメント

- -

このセクションはMozillaのテストについて詳細な情報を探すなら、テストに根拠を与えるいくつかの技術解説へのリンクを提供します。

- -
-
Marionette
-
Selenium WebDriverベースのリモートテストドライバ。
-
Marionette JavaScript tests
-
node.jsベースのMarionetteテストランナー。
-
Marionette Python client
-
Python版Marionetteテストランナー。
-
Try server
-
Mozilla's standard server for testing patches before checking them into the core repository. See also the TryChooser Syntax Builder.
-
- -
-

注意: もし製品版ビルドに対してMarionetteを実行したいなら (gaia総合テスト、gaia-ui-tests、等の実行)、拡張機能としてMarionetteをインストールすることができます (今は1.3ビルドのみ動きますが、他のサポートもすぐに追加されます)

-
- -

継続的インテグレーションと結果報告

- -

以下の記事はMozillaがテストデータの保存と解釈するのに使用する継続的インテグレーションと結果報告のメカニズムをカバーします。

- -
-
Treeherder
-
Treeherderによるテストとビルドを理解することができます。
-
Raptor
-
Visualization of performance tests run against the Raptor tool.
-
Test execution chart
-
テストが実行開始しているか、どのデバイス上でまたはどこでテストしているか、そして各テストがどのパフォーマンスをサポートしているかのチャートを見ることができます。
-
- -

ユニットテストフレームワークのビデオ

- -

diff --git a/files/ja/archive/b2g_os/automated_testing/raptor/index.html b/files/ja/archive/b2g_os/automated_testing/raptor/index.html deleted file mode 100644 index 81895511e1..0000000000 --- a/files/ja/archive/b2g_os/automated_testing/raptor/index.html +++ /dev/null @@ -1,442 +0,0 @@ ---- -title: 'Raptor: Gaia用パフォーマンスツール' -slug: Archive/B2G_OS/Automated_testing/Raptor -tags: - - Firefox OS - - Performance - - Raptor - - User Timing -translation_of: Archive/B2G_OS/Developing_Gaia/Raptor ---- -
-

この記事は Raptor について説明します: これは、特に Firefox OS に関するパフォーマンス計測用のCLI(コマンドライン)ツールです。これはツールの機能の背後にある戦略を見て、ツールを始める方法を示してくれて、先進トピック、例えば自身のテストを書いたり、可視化したり、自動化したりに移動できます。

-
- -

Raptor は、以前のツール make test-perf でパフォーマンステストをする時に直面する、たくさんの落とし穴を克服することを狙っています:

- - - -

Raptor はこうした問題を解決し、より効率的で拡張性の高く、自身に多くのオーバーヘッドを加えないテストフレームワークを提供するように、設計されました。

- -

戦略

- -

この章では、Raptorの機能を実装する中で取られた戦略について述べます。.

- -

ユーザタイミング

- -

ユーザタイミング API は、カスタムパフォーマンス指標と計測とを指し示すメカニズムとwebドキュメントを提供しています。標準化されたAPIを使うことで、パフォーマンスイベントを無視するヘルパースクリプトをアプリが同梱しないといけなくなるのを回避できます。実際に、ユーザタイミングは、全くイベントに依存していません。

- -
// Legacy performance events
-window.dispatchEvent(new CustomEvent('moz-app-visually-complete'));
-PerformanceTestingHelper.dispatch('settings-load-start');
- -
// User Timing API
-performance.mark('visuallyLoaded');
-
-performance.mark('settingsStart');
-performance.mark('settingsEnd');
-
-performance.measure('settingsLoad', 'settingsStart', 'settingsEnd');
- -

ロギング

- -

パフォーマンスに影響するのを避けるように、アプリケーションから切り離したやり方でパフォーマンスエントリを捕捉するために、我々はパフォーマンスのメタデータを端末のログストリームに出力することを選びました、すなわち adb logcat です。Raptor はこのストリームを消費して、メトリクスを集めるログからパフォーマンスエントリを解析します。

- -

 

- -

Phases と拡張性

- -

Raptor は "phases"という概念を導入し、これは汎用的な方法でテストの相互作用をするためのフレームワークを置くものです。現在、Raptor はコールド起動と、再起動、B2Gの再起動を、計画済みの追加フェーズでサポートしています。これらの作業は、端末をパフォーマンス測定前のあるフェーズに配置することで、実際のパフォーマンステストのロジックをより簡単にします。

- -

端末のインタラクション

- -

Raptor works to abstract device interactions. Some of its major features are as follows:

- - - -

さぁ始めよう

- -
-

NOTE: While Raptor can be run on emulators, the results should not be relied on for performance comparisons. Desktop computers and their power means that they are not comparable to the performance characteristics of devices and end users, and should not be used for time-based decision making.

-
- -

前提条件

- -

You must have a copy of Gaia v2.2+ available on your system, as well as Node.js v0.12+/npm v2+ installed.

- -

Raptorのインストール

- -

Raptor は、npmからインストールできる CLI (コマンドラインインターフェイス)ツールです。こうしてインストールできます:

- -
$ npm install -g @mozilla/raptor
- -

インストールが完了したら、コマンドラインのraptorコマンドから実行できます:

- -
$ raptor --help
- -

もう一つのインストール

- -

Inpm が /usr/usr/local ディレクトリへのグローバルパッケージとしてインストールする方法に不満がある場合、 いくつか別のオプションがあります:

- -
    -
  1. npm のデフォルトディレクトリを別のディレクトリに変更する。npmの手順に従うと、npmがグローバルパッケージをインストールする場所を変更できて、ひょっとするとホームフォルダの特別なディレクトリに配置できます。
  2. -
  3. Raptor をローカルディレクトリにインストールして、相対的に参照します、例えば:
  4. -
- -
$ cd ~
-$ mkdir raptor-cli && cd raptor-cli
-$ npm install @mozilla/raptor
-
-# Elsewhere
-$ ~/raptor-cli/node_modules/@mozilla/raptor/bin/raptor --help
-
-# Symlink or add to aliases to save on verbosity
-$ cd ~
-$ ln -s ~/raptor-cli/node_modules/@mozilla/raptor/bin/raptor raptor
-
-# Now you can use it elsewhere
-$ raptor --help
- -

プロファイルのインストール

- -

In order to interact with the device in a predictable way, Raptor needs a few profile options and custom settings. The default make command for Raptor optimizes Gaia, disables FTU, enables User Timing to write to logcat, and resets Gaia.

- -
# Equivalent of:
-# PERF_LOGGING=1 DEVICE_DEBUG=1 GAIA_OPTIMIZE=1 NOFTU=1 SCREEN_TIMEOUT=0 make reset-gaia
-make raptor
- -

If you already have a profile on your device, at a bare minimum you need the following profile options/settings set in order to use Raptor for performance testing:

- - - -

コマンドラインインターフェイス

- -

Raptor provides a bit of helpful information right through the command line:

- -
$ raptor --help
-
-Usage: raptor <command> [options]
-
-command
-  test     Run a performance test by name or path location.
-  submit     Submit a Raptor metrics file to an InfluxDB database
-
-Options:
-   -v, --version               outputs the raptor cli tool version
-   --config <path>             specify additional Orangutan device configuration JSON. Environment: RAPTOR_CONFIG
-   --homescreen <origin>       specify the origin or gaiamobile.org prefix of an application that is the device homescreen  [verticalhome.gaiamobile.org]
-   --system <origin>           specify the origin or gaiamobile.org prefix of an application that is the system application  [system.gaiamobile.org]
-   --serial <serial>           target a specific device for testing. Environment: ANDROID_SERIAL
-   --adb-host <host>           connect to a device on a remote host. tip: use with --adb-port. Environment: ADB_HOST
-   --adb-port <port>           set port for connecting to a device on a remote host. use with --adb-host. Environment: ADB_PORT
-   --marionette-host <host>    connect to marionette on a remote host. tip: use with --marionette-port. Envrionment: MARIONETTE_HOST
-   --marionette-port <port>    set port for connecting to marionette on a remote host. tip: use with --marionette-host. Environment: MARIONETTE_PORT
-   --forward-port <port>       forward an adb port to the --marionette-port.  [0]
-   --host <host>               host for reporting metrics to InfluxDB database. Environment: RAPTOR_HOST [localhost]
-   --port <port>               port for reporting metrics to InfluxDB database. Environment: RAPTOR_PORT [8086]
-   --username <username>       username for reporting metrics to InfluxDB database. Environment: RAPTOR_USERNAME [root]
-   --password <password>       password for reporting metrics to InfluxDB database. Environment: RAPTOR_PASSWORD [root]
-   --database <database>       name of InfluxDB database for reporting metrics. Environment: RAPTOR_DATABASE
-   --protocol <protocol>       Protocol used to connect to InfluxDB database for reporting metrics. Environment: RAPTOR_PROTOCOL  [http]
-   --metrics <path>            path to store historical test metrics. Environment: RAPTOR_METRICS
-   --output <mode>             output mode: normal or quiet. Environment: RAPTOR_OUTPUT [normal]
-   --batch <count>             batch database requests to <count> number of records  [5000]
- -

The core command to execute is the test command, which also has some helpful information:

- -
$ raptor test --help
-
-Usage: raptor test <nameOrPath> [options]
-
-nameOrPath  named test or path to a particular test to run. Named tests:
-   coldlaunch    cold-launch lifecycle of an application from appLaunch to fullyLoaded
-   reboot        device reboot lifecycle from device power-on until System/Homescreen fullyLoaded
-   restart-b2g   restart B2G lifecycle from B2G start until System/Homescreen fullyLoaded
-
-Options:
-   ...
-   --runs <runs>                         number of times to run the test and aggregate results [1]
-   --app <appOrigin>                     specify the origin or gaiamobile.org prefix of an application to test
-   --entry-point <entryPoint>            specify an application entry point other than the default
-   --timeout <milliseconds>              time to wait between runs for success to occur [60000]
-   --retries <times>                     times to retry test or run if failure or timeout occurs [1]
-   --launch-delay <milliseconds>         time to wait between subsequent application launches [10000]
-   --memory-delay <milliseconds>         time to wait before capturing memory after application fully loaded [0]
-   --script-timeout <milliseconds>       time to wait when running scripts via marionette  [10000]
-   --connection-timeout <milliseconds>   marionette driver tcp connection timeout  [2000]
-   --logcat <path>                       write the output from `adb logcat` to a file
-   --time <epochMilliseconds>            override the start time and unique identifier for test runs
- -

This should give us enough information to run our first performance test.

- -

Running a performance test

- -

Running a performance test consists of a few parts:

- - - -

For the most basic test, we can do a cold launch test against an application with a command like this:

- -
$ raptor test coldlaunch --app clock
-
-[Cold Launch: clock.gaiamobile.org] Preparing to start testing...
-[Cold Launch: clock.gaiamobile.org] Priming application
-[Cold Launch: clock.gaiamobile.org] Starting run 1
-[Cold Launch: clock.gaiamobile.org] Run 1 complete
-[Cold Launch: clock.gaiamobile.org] Results from clock.gaiamobile.org
-
-| Metric                | Mean   | Median | Min    | Max    | StdDev | p95    |
-| --------------------- | ------ | ------ | ------ | ------ | ------ | ------ |
-| navigationLoaded      | 939    | 939    | 939    | 939    | 0      | 939    |
-| navigationInteractive | 1014   | 1014   | 1014   | 1014   | 0      | 1014   |
-| visuallyLoaded        | 1247   | 1247   | 1247   | 1247   | 0      | 1247   |
-| contentInteractive    | 1249   | 1249   | 1249   | 1249   | 0      | 1249   |
-| fullyLoaded           | 1250   | 1250   | 1250   | 1250   | 0      | 1250   |
-| uss                   | 14.836 | 14.836 | 14.836 | 14.836 | 0      | 14.836 |
-| pss                   | 19.137 | 19.137 | 19.137 | 19.137 | 0      | 19.137 |
-| rss                   | 31.191 | 31.191 | 31.191 | 31.191 | 0      | 31.191 |
-
-[Cold Launch: clock.gaiamobile.org] Testing complete
- -

During the cold launch test, you'll see B2G restart; the stated application will then launch once to prime it, and a second time to measure its performance. Looking at the log output above, you can see when each application run starts and stops. When a particular application has completed its testing, you will be given a table of metrics and testing will continue, if applicable. In the metrics table you'll see statistics for each performance entry captured during the lifespan of the test: mean (average), median, minimum value, maximum value, standard deviation, and 95th percentile.

- -
-

Note: One fun fact is that the table produced by Raptor is compatible with GitHub-flavored Markdown.

-
- -
-

Note: Standard deviation and 95th percentile need a collection of runs before they output statistically-useful data.

-
- -

All metrics relate to the name of the performance entry. The numbers gathered here are not just aggregations of the values produced by User Timing entries, so it's important to understand how these numbers are derived.

- -

メトリクス集約

- -

While Raptor relies on the User Timing API to gather its metrics, it also makes some assumptions about measurements that are different to what's expected in the context of normal web pages. In a typical web page, a performance marker represents the High-Resolution time from the moment of navigationStart. The User Timing API still captures this data, but Raptor's calculations also include additional time depending on the type of test running. Let's compare the creation of a performance marker in the context of a typical web page versus a Firefox OS application being cold launched.

- -

典型的なwebページ

- -

In any web page, Firefox OS application or not, creating a performance marker with the User Timing API is simple:

- -
performance.mark('hello');
- -
 
- -

Now let's get the value back and inspect its contents:

- -
performance.getEntriesByType('mark')[0];
-
-// returns the following object
-PerformanceMark { name: "hello", entryType: "mark", startTime: 5159.366323, duration: 0 }
- -
 
- -
 
- -
 
- -
 
- -

Note the mark's startTime and duration. The startTime is nothing more than the high-resolution time elapsed since the time of performance.timing.navigationStart; in this case a little over 5,000 milliseconds. The duration is 0 because this represents a single point in time, which has no duration. The startTime simply states at what moment the marker was created. Inspecting the output of a performance marker is no different in Firefox OS.

- -

A performance measure on the other hand does include a duration, because it is the delta between two performance markers:

- -
performance.mark('hello');
-performance.mark('goodbye');
-
-performance.measure('greeting', 'hello', 'goodbye');
- -
Again, let's inspect the performance entry:
- -
performance.getEntriesByType('measure')[0];
-
-// returns the following object
-PerformanceMeasure { name: "greeting", entryType: "measure", startTime: 3528.523661, duration: 4183.291375999805 }
- -
The duration is populated for performance measures, and in this example it took approximately 4.2 seconds to perform a greeting; going from hello to goodbye.
- -

Raptor コンテキスト

- -

The difference comes in the calculations that Raptor will report. Raptor makes an assumption that all markers generated are actually performance measures in reality, with their duration measured as the time between the application being instructed to launch and the marker being generated. For cold launch, the homescreen application (gaia_grid specifically) creates a special performance marker when an application is launching:

- -
performance.mark('appLaunch@' + appOrigin);
- -
In Raptor, performance markers can be given an @-directive that overrides the context of the marker. If the homescreen instead had invoked performance.mark('appLaunch'), normally we'd assume it is in the application's context. With an @-directive however we can key the performance marker to be against a different application, in essense creating a performance marker for one application inside another. This would evaluate to something like:
- -
performance.mark('appLaunch@clock.gaiamobile.org');
- -
In this case the homescreen is generating a performance marker for the clock application denoting the time of appLaunch. Raptor will then calculate a delta between appLaunch and all performance markers to achieve a more accurate user-perceived time for a marker to be hit. By moving the moment of capture to earlier in the loading process, specifically as close to icon touch as possible, it makes the data between Raptor and camera-based measurements much more comparable.
- -

テストを選択する

- -

Tests are selected by changing the name or file that Node.js executes. For example, to run the device reboot performance test instead of a cold launch test you'd do the following:

- -
$ raptor test reboot
- -

More examples:

- -
# Test Dialer cold launch
-$ raptor test coldlaunch --app communications --entry-point dialer
-
-# Change the number of runs
-$ raptor test coldlaunch --app clock --runs 10
-
-# Introduce a 1-second delay before capturing memory
-$ raptor test reboot --memory-delay 1000
-
-# Target a particular device
-$ raptor test reboot --serial f30eccef
-$ ANDROID_SERIAL=f30eccef raptor test reboot
-
-# Turn on Raptor debug output, useful for bugs or problems
-$ DEBUG=raptor:* raptor test reboot
-
-# JSON mode, useful for post-processing of aggregate values
-$ raptor test coldlaunch --app clock --output json
-
-# Quiet mode, useful if you only care about the results
-$ raptor test coldlaunch --app clock --output quiet
- -

テストを書く

- -

While Raptor currently contains a few tests for running cold launch tests, rebooting, and restarting B2G, it is possible to write tests that run custom logic.

- -

We can inspect the contents of the current launch test to glean how we can write new tests.

- -
// mozilla-b2g/raptor
-// tests/coldlaunch.js
-
-setup(function(options) {
-  options.test = 'cold-launch';
-  options.phase = 'cold-launch';
-});
-
-afterEach(function(phase) {
-  return phase.closeApp();
-});
- -
First comes setting up the test. In setup, pass a function to be executed, which will configure the test. This function will be passed all the current configuration settings. At a minimum, you will need the set the phase of the test, which determines the state the device is in when the test begins. Depending on which phase you select when setting options, you may need to pass additional information. For the launch test example, using the cold phase requires an application to be specified. This can either be set on the command line, or you can hard-code it via the app option to force the test to be specific to a certain app.
- -
-

Note: If you hard-code the application to be launched, make you specify the origin host completely, e.g. "clock.gaiamobile.org". For entry-point-based apps, specify the app option and the entryPoint option.

-
- -
-

Important: Any test harness functions doing asynchronous work should return a Promise so Raptor can properly wait.

-
- -

The afterEach() function will be called once for each run after the phase has been started. For cold launch, it is after an application in context has been primed, exited, and re-opened, and the application denotes it is ready — i.e. performance.mark('fullyLoaded'). For reboot and B2G restart, the phase will be designated as ready when the System application and the Homescreen application are marked as fully loaded.

- -

The phase argument passed to afterEach() represents the current context instance of the phase test runner; in other words, it is specific to the current test being run. It contains methods and functionality that help you trigger device actions which will have profiled performance code. For example, you can start a Marionette.js session and trigger commands:

- -
setup(function(options) {
-  options.phase = 'cold';
-});
-
-afterEach(function(phase) {
-  // Note that returning a Promise denotes that we are done running the test
-  return phase.device.marionette
-    .startSession()
-    .then(function(client) {
-      client.executeScript(function() {
-        // trigger code that captures the performance.measures created
-        // by the application being tested
-      });
-      client.deleteSession();
-    });
-});
- -
The runner can also run a teardown() function when all tests are complete.
- -
teardown(function(phase) {
-  return new Promise(function(resolve) {
-    // teardown the test, then resolve
-    resolve();
-  });
-});
- -
The Raptor Phase API has not yet been documented, so currently you'll need to read the source for all the functionality available to you. It may be faster to seek help from a contributor for help on getting started writing a particular test.
- -

可視化と自動化

- -

Raptor has improved tooling available for automation and visualization. The test-perf tool used to use the Datazilla tool for graphing and visualizing results to gain insight into possible regressions and performance pulse of applications. Raptor has moved away from Datazilla however for its visualization capabilities — for maintenance and usability reasons — instead having its own UI at https://raptor.mozilla.org. The Raptor dashboards currently categorize performance metrics in a few key categories per device instance — measures and memory — with more metrics planned in the future.

- -

Raptor's front-end uses the Grafana visualization tool, and its backing store is InfluxDB, a time series database. Grafana provides Raptor UI users with the ability to carry out custom drill-downs into charts, slice time as desired, view data point revisions, and build custom charts and data queries. The default view of several charts displays the 95th percentile of many metrics, but charts can be user-edited to graph other mathematical functions.

- -

This guide is not meant to be a tutorial on the usage of Grafana and InfluxDB, so to learn more about taking full advantage of the Raptor UI, read through these important pieces of documentation:

- - - -

プライベートな可視化

- -

The Raptor dashboard visualization discussed in the previous section can also be installed and used privately. The installation is a Heroku-deployable environment for easy setup. It is also possible to run the Heroku application locally if you use Linux.

- -

To get started with private visualization, or want to learn more about its innards, see the repository: https://github.com/mozilla-b2g/raptor-dashboards.

- -

You will also need an installation of InfluxDB 0.9.3+. You can learn more about installing it at: https://influxdb.com/docs/v0.9/introduction/installation.html. Those who are familiar with Docker can also install InfluxDB from Docker Hub: https://hub.docker.com/r/tutum/influxdb/.

- -

Raptor needs CLI options or environment variables for creating a connection to an InfluxDB database. It would be tedious to specify these continually on the command line, so to simplify this, you can export these environment variables from your shell, e.g. ~/.bashrc, ~/.zshrc, etc.

- -
# These settings will point to the installation and credentials of your InfluxDB instance:
-export RAPTOR_HOST=localhost
-export RAPTOR_USERNAME=root
-export RAPTOR_PASSWORD=root
-export RAPTOR_DATABASE=raptor
-export RAPTOR_PROTOCOL=https
-export RAPTOR_PORT=8086
- -

In addition, Raptor's database schema requires its results to be tagged properly in order to display it in correct categories in its dashboard UI. Failure to have these properties set when running performance tests will cause the data to not be displayed. By default, you need to persist the memory configuration of the device, the device type, and the branch the performance test is based on. For example, if you are performance testing a KitKat-based Flame set to 319MB of memory and your patch is based off of Gaia's master branch, you will set the following properties via ADB:

- -
$ adb shell setprop persist.raptor.device flame-kk
-$ adb shell setprop persist.raptor.memory 319
-$ adb shell setprop persist.raptor.branch master
- -
-

Note: If you are having trouble with the values being persisted or not saving at all, restart ADB as root with adb root.

-
- -

If you were working on a branch that was based off of v2.5 on an Aries with 2 Gigabytes of memory, you would use the following properties:

- -
$ adb shell setprop persist.raptor.device aries
-$ adb shell setprop persist.raptor.memory 2048
-$ adb shell setprop persist.raptor.branch v2.5
- -
-

Important: Currently visualization is highly-dependent on the existence of these persisted properties. They are only necessary when using the local visualization tooling; if you flash your device or otherwise unset these properties, you will need to re-set them in order to visualize performance metrics.

-
- -

Other than setting up the environment and device tags, Raptor can be run as normal locally. Upon each successful run, Raptor will report its metrics to the database. Once the test is complete, you can open a browser to your private visualization instance and view your own custom performance data.

- -

必要に応じて動的にパフォーマンスマークを加える

- -

One issue with Raptor is that since the tests require us to add performance marks into code, the Gaia codebase could quickly become littered with Performance.mark() calls without any meaningful relationship between them, making the code clutted and harder to understand. The best way to deal with this is to collect all the marks into some kind of patching files, and apply them dynamically as required when we want to run specific Raptor tests.

- -

To this end, Greg Weng has created a code transformer tool that will do just what is described above. The tool is currently a work in progress, but you can find more about it (including how to get it running) at this newsgroup entry: Raptor: code transformer + marionette workflow now is almost ready. See also バグ 1181069 for implementation specifics.

- -

We will publish more formal instructions once the tool has stabilised.

- -

サポート

- -

If you have questions about Raptor, visualization, or performance tooling in general, feel free to ping :Eli or :rwood in the #raptor channel on Mozilla IRC.

diff --git a/files/ja/archive/b2g_os/automated_testing/setting_up_marionette/index.html b/files/ja/archive/b2g_os/automated_testing/setting_up_marionette/index.html deleted file mode 100644 index 3076dde353..0000000000 --- a/files/ja/archive/b2g_os/automated_testing/setting_up_marionette/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Firefox OSのMarionetteの設定 -slug: Archive/B2G_OS/Automated_testing/Setting_up_Marionette -translation_of: 'https://marionette-client.readthedocs.io/en/latest/' ---- -

Building Firefox OS with Marionette enabled

-

Marionette's server component is part of gecko, and is compiled into a B2G build when ENABLE_MARIONETTE=1 is present in your mozconfig.

-

For device builds (including the emulator), Marionette is enabled by default in all VARIANT=eng (engineering) builds. This is the default type of build created if you use ./config.sh <config>, ./build.sh. Marionette is not included in VARIANT=user builds, which is the type of build QA normally uses for testing.

-

For B2G desktop builds, you'll need to add the line ENABLE_MARIONETTE=1 to your mozconfig before building.

-

Setting up the Marionette client

-

The Marionette client is a Python package with which you can run Marionette tests. You'll need to set this up on your machine before using it.

-

To do so, you can either install it from pypi:

-
$ pip install marionette_client
-

Or from a gecko build tree:

-
$ cd $GECKO_DIR/testing/marionette/client
-
-$ python setup.py develop
-

You can perform these steps inside a virtualenv if you wish.

-

To verify Marionette is installed:

-
$ python
-
->>> from marionette import Marionette
-

Verifying Marionette is running

-

On a device

-

Please make sure the [Settings > Device Information > More Information >  Developer > Remote debugging] is OFF.

-

Connect your device to your computer and verify it appears in adb devices, then set up adb port forwarding to Marionette's port:

-
$ adb devices
-List of devices attached
-full_unagi    device
-
-$ adb forward tcp:2828 tcp:2828
-
-$ telnet localhost 2828
-Trying 127.0.0.1...
-Connected to localhost.
-Escape character is '^]'.
-66:{
-  "from": "root",
-  "applicationType", "gecko",
-  "traits": []
-}
-

If you see the above output, Marionette is running on your device.

-

On an emulator

-

Launch the emulator using the ./run-emulator.sh script, then follow the above steps.

-

On a B2G desktop build

-

For desktop B2G builds, you need to add an additional pref in order for Marionette to successfully run:  marionette.force-local = true.  You can add this pref in gaia/profile/user.js as user_pref("marionette.force-local", true), then re-build your gaia profile before starting the B2G desktop build.

-

When using a B2G desktop build, you don't need to use adb port forwarding. After launching the build, telnetting to localhost 2828 should result in the same output shown above.

-

 

diff --git a/files/ja/archive/b2g_os/automated_testing/xpcshell/index.html b/files/ja/archive/b2g_os/automated_testing/xpcshell/index.html deleted file mode 100644 index 3138b3394e..0000000000 --- a/files/ja/archive/b2g_os/automated_testing/xpcshell/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: XPCShell -slug: Archive/B2G_OS/Automated_testing/XPCShell -translation_of: Archive/B2G_OS/Automated_testing/XPCShell ---- -
-

XPCShellのテストはGecko XPCOM APIのヘッドレステストです。あなたはB2G上でXPCShellのテストを実行することができます; この記事の中でどのように実行するか書かれています。現在、これらは主にエミュレータ上でテストされており、しかしデバイス上でもうまく実行される理屈です。

-
-
-

注意: この記事の$B2G_HOMEはクローンしたB2Gリポジトリを指します。

-
-

必須要件

- -

テストを実行する

-

以下のターミナルコマンドの中から一つを使ってxpcshellテストを実行することができます:

-

emulatorを使う場合:

-
cd $B2G_HOME/objdir-gecko
-make package-tests
-cd dist/test-package-stage/xpcshell
-python runtestsb2g.py --b2gpath $B2G_HOME --adbpath $ADB_PATH --emulator arm --use-device-libs --manifest <path_to_xpcshell_manifest> --testing-modules-dir <path_to_testing_modules_dir> --busybox <path_to_busybox_binary>
-

実機を使う場合:

-
cd $B2G_HOME/objdir-gecko
-make package-tests
-cd dist/test-package-stage/xpcshell
-python runtestsb2g.py --b2gpath $B2G_HOME --adbpath $ADB_PATH --use-device-libs --manifest <path_to_xpcshell_manifest> --testing-modules-dir <path_to_testing_modules_dir>
-

通常のデスクトップ用のxpcshellテストのように--total-chunks and --this-chunksオプションを加えることもできます:

-
python runtestsb2g.py --help
-

サポートする引数をすべてリストします。

-

runtestsb2g.pyを起動したあと、テストランナーがエミュレータを起動する (エミュレータ上でテストを実行する場合) かデバイスを再起動する (デバイス上でテストを実行する場合) でしょう、そしてテストを実行開始します。なぜならばエミュレータは遅く、テストプロファイルをプッシュし、B2Gを再起動する必要があり、テストは開始に数分かかります。

-

テスト終了時、エミュレータはシャットダウンします。実機の場合再起動します。

-

busyboxの手動インストール

-

デバイス上でxpcshellテストを実行するときは--busyboxはいりません。そのようなテスト実行のセットアップはとても時間がかかります。幸いにもテストを実行する前に手動でインストールできます。手動インストールの例はhttps://github.com/mozilla/Negatus/blob/master/setup-tools.shをご覧ください。

-

エミュレータをダウンロードしてxpcshellテストの実行

-

もし違うコンフィグ (otoroのような) でB2Gをビルドしてエミュレータ上でテストを実行したいなら、あなた自身がエミュレータをビルドすることなくテストを実行することができます。  runreftestb2g.py--b2gpath /path/to/unpacked/emulatorの代わりに--b2gpath $B2G_HOME引数を置き換えた上記と同じ命令を使って、最新のtrunkのarmエミュレータをダウンロードします。

diff --git a/files/ja/archive/b2g_os/b2g_build_prerequisites/index.html b/files/ja/archive/b2g_os/b2g_build_prerequisites/index.html deleted file mode 100644 index 0f8fa55d75..0000000000 --- a/files/ja/archive/b2g_os/b2g_build_prerequisites/index.html +++ /dev/null @@ -1,423 +0,0 @@ ---- -title: B2G OS ビルドの必要条件 -slug: Archive/B2G_OS/B2G_build_prerequisites -tags: - - B2G OS - - Build documentation - - Build prerequisites - - Mobile - - Mobile OS - - build b2g os - - how to build b2g os -translation_of: Archive/B2G_OS/B2G_OS_build_prerequisites ---- -
-

B2G OS のコードを入手してビルドする前には、単に Gaia をビルドしてみる場合でも、ビルド環境 を適切に設定することが必要です (このページで方法を説明します)。現在、64 ビット版 Linux ディストリビューションおよび Mac OS X でビルド可能です。

-
- -

互換性のあるビルドターゲット

- -

ビルドするには互換性のある端末を用意する必要があります。さもなくばエミュレータを使用してください。

- -
-

: Mozilla の B2G ソースコードは、事実上 B2G OS のリファレンス実装ですが、携帯電話ベンダーは、自由にパッチをあてたり変更を加えたりすることが可能です。小売端末を買った場合、これにはベンダーの構成したバージョンが含まれます。これは、インストール済みのアプリには影響はありませんが、プラットフォームレベルでは影響する可能性があります。Nexus 5 への移植は、Mozilla が直接メンテナンスしているので、他 の端末と比較して、我々の Gecko のバージョンがはるかにうまく動作するでしょう。

-
- -

エミュレータ

- -

利用可能なエミュレータは 2 種類あります。一つは ARM コードをエミュレートし、もう一つは実行するのに x86 コードを使用します。「B2G エミュレータを使用する」で詳しく学んでくださいx86 エミュレータは使用すべきではありません。インストールが困難で、十分にサポートされていません。

- -

デスクトップ

- -

デスクトップ版の B2G OS をビルドすることもできます。このビルドは、XULRunner アプリケーションで Gecko を実行し、その中で Gaia の UX を確認できます。

- -

端末

- -

いくつかの端末が B2G OS と互換性があります。しかしいくつかはそれ以外のものよりも互換性があり、端末の特定種のみが互換性があることもあります。詳細は 互換性のある端末 のページを確認してください。

- -
重要: Android 4.3 以降 (いわゆる Jelly-bean, Kitkat, Lollipop) で動作している端末のみがサポートされています。もし上のリストにあなたの端末があっても、古いバージョンの Android を実行している場合は、まず更新してください。
- -

GNU/Linux での必要条件

- -

ディストリビューションによってドキュメント変更が激しいので、右上の言語メニューから、このページの英語版ドキュメントも参照してください。

- -

Linux でビルドするには以下のシステム構成が必要です:

- - - -

以下のツールもインストールしておく必要があります:

- - - - - - - - -
-
    -
  • autoconf 2.13
  • -
  • bison
  • -
  • bzip2
  • -
  • ccache
  • -
  • curl
  • -
  • flex
  • -
  • gawk
  • -
  • git
  • -
  • gcc
  • -
  • nodejs
  • -
  • python
  • -
-
-
    -
  • g++ / g++-multilib
  • -
  • java sdk (jdk)
  • -
  • lzop
  • -
  • make
  • -
  • OpenGL shared libraries
  • -
  • patch
  • -
  • X11 headers
  • -
  • 32-bit ncurses
  • -
  • 32-bit zlib
  • -
  • unzip
  • -
-
- -

Ubuntu 12.04 LTS / Debian 6 / Linux Mint 13

- -

ターミナルで下記のコマンドを実行してください:

- -
sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libasound-dev libgconf2-dev libgl1-mesa-dev libx11-dev lzop make zip libxml2-utils nodejs unzip python
- -

このppa を通じて jdk をインストールできます。

- -

Ubuntu 14.04 LTS / Debian 7

- -

まず、必須アーキテクチャをセットするため、次のコマンドを実行します:

- -
sudo dpkg --add-architecture i386
-sudo dpkg --add-architecture amd64
-
- -

ターミナルで次のコマンドを実行してください:

- -
sudo apt-get install --no-install-recommends autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git lib32ncurses5-dev lib32z1-dev libgconf2-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip lzop libxml2-utils openjdk-7-jdk nodejs unzip python
-
- -

Ubuntu 16.04

- -
-

2016 年 6 月に ubuntu 16.04 で、make のバージョンは 4.1 となって android のビルドができなくなりました。これを経験した場合、信頼できるリポジトリ (14.04) を追加し、バージョン 3.81 にダウングレードして、次のコマンドを実行します:

- -
sudo apt-get install make=3.81-8.2ubuntu3
- -

次に自動アップグレードを避けるため、make パッケージを保持するようマークします。

- -
sudo apt-mark hold make 
-
- -

まず、必須アーキテクチャをセットするため、次のコマンドを実行します:

- -
sudo dpkg --add-architecture i386
-sudo dpkg --add-architecture amd64
-
- -

ターミナルで次のコマンドを実行してください:

- -
sudo apt-get install --no-install-recommends autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git lib32ncurses5-dev lib32z1-dev libgconf2-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip lzop libxml2-utils openjdk-8-jdk nodejs unzip python
-
- -

Ubuntu 16.10

- -

ubuntu 16.10 では、既定の make のバージョンは 4.1 であり、android のビルドができません。この問題を回避するには、コンソールで次のコマンドを実行します:

- -
wget http://ftp.us.debian.org/debian/pool/main/m/make-dfsg/make_3.81-8.2_amd64.deb
-
-sudo dpkg -i make_3.81-8.2_amd64.deb
- -

自動アップグレードを避けるため、make パッケージを保持するようにマークします:

- -
sudo apt-mark hold make
- -

次に、必須のアーキテクチャを追加する必要があります:

- -
sudo dpkg --add-architecture i386
-
-sudo dpkg --add-architecture amd64 
- -

ターミナルで次のコマンドを実行します:

- -
sudo apt-get install --no-install-recommends autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git lib32ncurses5-dev lib32z1-dev libgconf2-dev zlib1g:amd64 zlib1g-dev:amd64 zlib1g:i386 zlib1g-dev:i386 libgl1-mesa-dev libx11-dev make zip lzop libxml2-utils openjdk-8-jdk nodejs unzip python 
- -

USB アクセスの構成

- -

Linux システムでは通常時、通常のユーザーは USB デバイスへ直接アクセスすることが出来ません。/etc/udev/rules.d/51-android.rules にファイルを作成し、次のコマンドを実行してください:

- -

TODO: Merge Bug 1230463

- -
wget -S -O - https://raw.githubusercontent.com/cm-b2g/B2G/1230463/tools/51-android.rules | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules
-
-wget -S -O - https://raw.githubusercontent.com/mozilla-b2g/B2G/master/tools/51-android.rules | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules
- -

新しいルールは次に端末を接続した時に有効になります。

- -

ccache の設定

- -

大量のコードをビルドしますが、そのうちの大半はビルド毎に変更がありません。コンパイルツールの ccache を使うことで、コンパイルを劇的に高速化できます。次のコマンドで 50GB キャッシュを与えます:

- -
ccache -M 50G
- -
-

補足: ディスク領域が限られている場合は、キャッシュを 50GB 以下に設定してください。

-
- -

その他のディストリビューション

- -

Fedora 22

- -

ターミナルで次のコマンドを実行してください:

- -
sudo yum install autoconf213 bison bzip2 ccache curl flex gawk gcc-c++ git glibc-devel glibc-static libstdc++-static libX11-devel make mesa-libGL-devel ncurses-devel patch zlib-devel ncurses-devel.i686 readline-devel.i686 zlib-devel.i686 libX11-devel.i686 mesa-libGL-devel.i686 glibc-devel.i686 libstdc++.i686 libXrandr.i686 zip perl-Digest-SHA wget lzop libxml2-utils
- -

Arch Linux

- -

ターミナルで次のコマンドを実行してください:

- -
sudo pacman -S --needed alsa-lib autoconf2.13 bison ccache curl firefox flex gcc-multilib git gperf libnotify libxt libx11 mesa multilib-devel wget wireless_tools yasm zip lib32-mesa lib32-mesa-libgl lib32-ncurses lib32-readline lib32-zlib lzop
- -

lib32-* パッケージをインストールするには、multilib リポジトリを有効にしておく必要があります。

- -

初期状態で、Arch Linux は Python3 を使用するため、強制的に古い Python2 を使うようにする必要があります。python2 の実行モジュールを python にリンクすることもできますが、お勧めできませんし、過ちの元になると考えられます。これは、インストールされている python3 を破壊します。より良い方法は、次のように virtualenv/virtualenvwrapper を使うことです:

- -
sudo pacman -S python-virtualenvwrapper
-source /usr/bin/virtualenvwrapper.sh
-mkvirtualenv -p `which python2` firefoxos
-workon firefoxos
-
- -

次のコマンドで python のバージョンを確認してください:

- -
python --version
- -

"Python 2.7.12" 以降のバージョンが表示されます。

- -

Gentoo Linux

- -
ccache のインストール
- -

ccache をインストールする必要があります。これは部分的なビルドをキャッシュするツールです。

- -
# emerge -av ccache
-
- -

ccache はサポート問題を頻繁に起こすことが知られているので、Gentoo では、明示的に控えめに使うのをおすすめします。

- -

このガイドの続く手順で、./build.sh スクリプトが呼ばれる時に ccache を使う必要があります。ここで ccache を有効にするには、Gentoo ユーザは代わりに明示的に展開されたパスでコマンドを実行してください:

- -
PATH=/usr/lib64/ccache/bin:$PATH ./build.sh
-
- -
パーティションイメージの生成
- -

B2G を実際の物理ハードウェア用にビルドする場合、ある時点で端末にアップロードするパーティションイメージを生成したくなるかもしれません (例えば、fastboot ユーティリティを使ってバックアップファイルを復元する時など)。

- -

ここでは、ファイルシステムイメージが YAFFS2 (Yet Another Filesystem 2) であるとします。 Gentoo は最新 (つまり git HEAD リビジョン) の yaffs2-utils ユーザーランドのパッケージをサポートします。 (注記: YAFFS2 イメージをマウントする場合、カーネルパッチも必要になります。ただし、代わりに分解してリビルドすることが可能なため、これは真に必要とは言えません。)

- -
# emerge --autounmask-write yaffs2-utils; etc-update; emerge -av yaffs2-utils
- -

こうしたイメージを生成するには、パーティションの単にパッケージ化したいファイルシステムツリーの親ディレクトリに移動し、次のコマンドを実施してください:

- -
mkyaffs2image system/ system.img
- -

古いブランチ

- -

B2G OS の古いブランチをコンパイルする必要がある場合、ビルドエラーが発生する可能性があります。過去のブランチをビルドするのページを参照してください。

- -

Mac OS X での必要条件

- -
-

注記: Mac 上で B2G を Keon 端末用に設定し、ビルドしても動作しません この端末用に B2G をビルドするには Linux を使う必要があります。

-
- -
-

注記: Fairphone2 向けの B2G は Mac では動作しませんこの端末向けの B2G をビルドするには Linux を使う必要があります。理由は blob が MD5 チェックに成功しないためです。詳しくは Fairphone のフォーラムトピック を見てください。

-
- -

Mac OS X 上で B2G OS をビルド可能ですが、簡単ではありませんし、よくサポートされてもいません。古い Xcode をインストールする必要がありますが、現行バージョンの Xcode と競合してしまうでしょう。最も良い体験を求めるなら、Ubuntu 14.0 LTS でビルドすべきですが、こだわるなら、下記のステップをお試しください:

- -

OS X 10.11 El Capitan & OS X 10.10 Yosemite

- -
-

重要: OS X 10.11 El Capitan でのビルドは実験的であり、完了しない可能性があります!以下の手順が改善しワーニングが無くなるまで OS X 10.10 Yosemite に留まってください。

-
- -

大文字小文字を区別するファイルシステム

- -

OS X のデフォルトインストールは、B2G OS のビルドに適しません。大文字小文字を区別するファイルシステム上で、 OS X を再インストールする必要があるでしょう。

- -

Xcode 7.2

- -
    -
  1. Apple ストアから、最新の Xcode をインストールします。
  2. -
  3. 次のコマンドで、ライセンスに同意します:
  4. -
- -
sudo xcodebuild -license
- -

Xcode Command Line Tools

- -

次のコマンドで、Xcode Command Line Tools をインストールします:

- -
xcode-select --install
- -

Xcode 5.1.1

- -
-

重要: Homebrew をインストールし、Xcode 5.1.1 SDK に移行する前にツール類 (以下のセクションを参照してください) をインストールしてください。 - Homebrew はおそらく Xcode 5.1.1 SDK では失敗するでしょう!

-
- -

AOSP、そして B2G OS は最新バージョンの Xcode SDK と互換性がありません。最新バージョンと並んで古いバージョンをインストールする必要があります。

- -
    -
  1. Xcode 5.1.1 を developer.apple.com からダウンロードし、/Applications/Xcode-5.1.1 へインストールします。
  2. -
  3. 下記のコマンドを実施し、Xcode 5.1.1 SDK を使用するように変更します:
  4. -
- -
sudo xcode-select --switch "/Applications/Xcode-5.1.1/Xcode.app/Contents/Developer"
- -

Java SE Development Kit 7

- -

AOSP、そして B2G OS は Java JDK v8 との互換性が無いため、Java JDK v7 をインストールする必要があります。http://www.oracle.com/ からダウンロードしてください。
-  

- -

Bash Profile

- -

自身の ~/.bash_profile ファイルに下記を追加してください:

- -
export PATH=~/bin:$PATH
-export PATH=/usr/local/bin:$PATH
-export BUILD_MAC_SDK_EXPERIMENTAL=1
-export LC_CTYPE=C
-export LANG=C
-export USE_CCACHE=1
- -

Homebrew

- -

Apple から提供されていない多くのコマンドラインツールをインストールする必要があります。Homebrew をインストールします:

- -
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- -

次のコマンドでツールをインストールします:

- -
brew install ccache coreutils cmake findutils git gnu-tar gnu-sed gpg lzop yasm
- -

autoconf の特定のバージョン 2.13 をインストールする必要があります:

- -
brew install homebrew/versions/autoconf213
-
- -

ccache の設定

- -

大量のコードをビルドしますが、そのうちの大半はビルド毎に変更がありません。コンパイルツールの ccache を使うことで、劇的にコンパイルを高速化できます。次のコマンドで 50GB キャッシュを与えます

- -
prebuilts/misc/darwin-x86/ccache/ccache -M 50G
- -

OS X 用の古い手順

- -

Mac のブートストラップを B2G OS で動かす

- -

次に、ターミナルを開いて次のコマンドを実行してください:

- -
curl -fsSL https://raw.github.com/mozilla-b2g/B2G/master/scripts/bootstrap-mac.sh | bash
- -

これは、ブートストラップスクリプトを pull および実行して、エミュレータをビルドするための必要条件を満たしているか確認するものです。また、不足しているものがあればインストールを促したり、警告を出して問題の解決案を提案します。このスクリプトがインストールを確認する項目は次の通りです:

- -

B2G を開発するには特別なブランチを取得する必要があります。これは、Mercurial から読み込まれます (詳細)。 OS X にはデフォルトで Mercurial がインストールされていないため、このコードを実行してインストールする必要があります:

- -
$ brew install mercurial
- -

Mac のファイルシステムの大文字小文字の区別を意識する

- -

Mac OS X はデフォルトで、大文字と小文字の区別をしないファイルシステムです。 Linux カーネルには、同一名で大文字小文字の異なるファイルが多数あるため、これが問題となります。例えば、ヘッダファイルの xt_CONNMARK.hxt_connmark.h を見てください。その結果、/kernel の中で多数のファイルが ./config.sh の後に修正されます。

- -

多くの場合、ビルドはうまくいきます。いくつかのプラットフォームでは、しかしながら、次のエラーに出くわす可能性があります:

- -
ERROR: You have uncommited changes in kernel
-You may force overwriting these changes
-with |source build/envsetup.sh force|
-
-ERROR: Patching of kernel/ failed.
- -

この問題についての多くの議論と解決の提案は、Bug 867259 を参照してください。

- -

もう一つは、大文字と小文字を区別するファイルシステム上でビルドするのが、常に最も安全でしょう。その最も簡単な方法は、別のマウント可能な、大文字と小文字を区別するディスクイメージを作成することです。-volname の名前変更で大文字を使用しないように気をつけてください。これは、Apple のDisk Utility アプリケーションを使うか、コマンドラインから可能です:

- -
hdiutil create -volname 'firefoxos' -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 80g ~/firefoxos.sparseimage
- -

ドライブをマウントするには:

- -
open ~/firefoxos.sparseimage
- -

マウントされたドライブに移動するには:

- -
cd /Volumes/firefoxos/
- -

この場所にコードをチェックアウトしたら、大文字小文字の問題を心配することなくコンパイルできます。

- -

任意: HAX のインストール

- -

Intel は、x86 エミュレータを使用している人に対して、Mac 上でエミュレートされたコードの代わりにネイティブコードで B2G エミュレータを動作させる特別なドライバを提供しています。これを使用したい場合は、ダウンロードしてインストールしてください。必ず必要なものではありませんが、エミュレーションのパフォーマンスと安定性が向上します。

- -

HAXのインストール前に Android SDK をインストールする必要があるでしょう。

- -

adb のインストール

- -

ビルドプロセスでは、B2G をビルドする前にスマートフォンにインストールされた Android からバイナリ BLOB を抜いておく必要があります (もちろん、エミュレータをビルドする場合を除いて)。このためには、adb (Android Debug Bridge) が必要になります。ADBをインストールする の記事で adb のインストール方法を説明しています。

- -
-

adb を将来使う時の注意: adb は電話機を見るのに、画面ロックが解除されている必要があります (少なくとも B2G OS の最近のパージョンで)。たぶん画面ロックを無効にしたくなるでしょう (ビルド手順の後で説明します)。

-
- -

Samsung Galaxy S2 用の追加手順

- -

もし Samsung Galaxy S2 用にビルドする予定なら、heimdall もインストールする必要があります。 詳細は、heimdall のインストール を参照してください。ブートストラップスクリプトは実行してくれません

- -

加えて、下記の点も心に留めておかなければなりません:

- -
    -
  1. ようやく S2 端末に独自ビルドをインストールする時には、flash.sh を実行する前に、factoryfsFACTORYFS に、kernelKERNEL にすべて変更する必要があります (pit の出力を確認してください)。そうしないと動作しません。
  2. -
  3. Siyah-s2 のリカバリー ROM の動作が最も良く、CWM も同じく動きますが、いくつかの問題があります。
  4. -
  5. flash.sh を用いて S2 に焼くと、ベース OS の動作は良いが、そのままでは Gaia に問題が出ることがあります。make reset-gaia PRODUCTION=1 でリフレッシュすることで、そうした問題が片付くでしょう。
  6. -
- -
注意: もし多くの Samsung 製スマートフォンの内容管理に使用される Samsung Kies ツールをインストール済みなら、 B2G OS を端末に書き込む前にそれを削除する必要があります。Windows では、標準のアプリケーション削除の処理を使用できます。Mac では Kies インストールディスクイメージに、システムから完全に Kies を削除するユーティリティがあります。 Kies がインストールされたままだと、フラッシュメモリへの書き込みがうまく動作しないでしょう。もし Kies を削除することを忘れても、ビルドシステムはそれを検知して、アンインストールするよう知らせてくれます。アンインストールツールが正しく ~/Library/Application Support/.FUS フォルダを削除できず、ユーザスタートアップ項目リストの中にユーティリティへの参照が残るので注意してください。それらは手動で削除することになるでしょう。
- -

heimdall のインストール

- -

heimdall は、Samsung Galaxy S2 に書き込むためのユーティリティです。Boot to Gecko フラッシュユーティリティが、B2G OS がインストールされたスマートフォンの内容を置き換える場合や、端末に B2G と Gaia の更新バージョンの書き込む場合に使用されます。Galaxy S2 上に B2G OS をインストールしたい場合は必要ですが、その他の端末では不要です。他の端末向けには、代わりに fastboot ユーティリティをビルドして使用します。

- -
注記: 繰り返しですが、これは、Samsung Galaxy S2 に B2G OS をインストールする場合にのみ必要であることに注意してください。
- -

heimdall をインストールするには 2 通りの方法があります:

- - - -
-

注記: 最新の Heimdall のソースからのビルドは、現在エラーが発生します。代わりに、Ubuntu 14.04 のリポジトリの 64bit パッケージ版を使うのが良いでしょう。つまり、できるだけ heimdall-flash:i386 の使用は避けてください。

-
- -

次のステップへ

- -

この時点で、B2G OS のコードを取得する 準備ができているはずです!

diff --git a/files/ja/archive/b2g_os/b2g_os_architecture/index.html b/files/ja/archive/b2g_os/b2g_os_architecture/index.html deleted file mode 100644 index 370a7a8cd5..0000000000 --- a/files/ja/archive/b2g_os/b2g_os_architecture/index.html +++ /dev/null @@ -1,34 +0,0 @@ ---- -title: B2G OS Architecture -slug: Archive/B2G_OS/B2G_OS_Architecture -translation_of: Archive/B2G_OS/Architecture ---- -

B2G OS アーキテクチャの説明

- -
-

B2G OS を構成する 3つのレイヤー:

- -
    -
  1. Gaia
  2. -
  3. Gecko
  4. -
  5. Gonk
  6. -
- -

Gaia

- -

Gaia は、HTML、CSS と Javascriptで作られているシステムアプリや電話、SMS、時計、カレンダーで構成されているユーザーインターフェースです。

- -


- Source Code: https://github.com/mozilla-b2g/gaia

- -

Gecko

- -

Gecko は、HTML, CSS と Javascript や 様々な デバイス chrome:// & web API's. を描画する、web レンダリングエンジンです。</br>
- Source Code: https://github.com/mozilla/gecko-dev

- -

-
- -

Gonk

- -

Gonk は、Android Kernel や Hardware Abstraction Layer (HAL) と デバイスドライバーで構成されています。

diff --git a/files/ja/archive/b2g_os/board_guide/chirimen/chirimen_faq/index.html b/files/ja/archive/b2g_os/board_guide/chirimen/chirimen_faq/index.html deleted file mode 100644 index a9c16403fa..0000000000 --- a/files/ja/archive/b2g_os/board_guide/chirimen/chirimen_faq/index.html +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: CHIRIMEN FAQ -slug: Archive/B2G_OS/Board_guide/CHIRIMEN/CHIRIMEN_FAQ -translation_of: Archive/B2G_OS/Board_guide/CHIRIMEN/CHIRIMEN_FAQ ---- -

CHIRIMEN FAQ

- -

こちらに移動しました: https://chirimen.org/docs/ja/FAQ.html

diff --git a/files/ja/archive/b2g_os/board_guide/chirimen/index.html b/files/ja/archive/b2g_os/board_guide/chirimen/index.html deleted file mode 100644 index f8a076107a..0000000000 --- a/files/ja/archive/b2g_os/board_guide/chirimen/index.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: CHIRIMEN -slug: Archive/B2G_OS/Board_guide/CHIRIMEN -translation_of: Archive/B2G_OS/Board_guide/CHIRIMEN ---- -

Mozilla Factory MozOpenHard Project は、Firefox OS のOSS版であるB2G (Boot to Gecko)の動作する高性能な開発者向けボードと、ハードウェアをコントロールするWebAPI(現時点ではI2CとGPIO用)を開発しています。このハードウェアとソフトウェアを併せた環境は、CHIRIMEN(ちりめん)と呼ばれています。

- -

CHIRIMEN について

- -

CHIRIMEN はセンサーやアクチュエーターなどの物理デバイスを Web 技術だけで制御することができる開発環境で、ボードコンピュータとその上で動作するソフトウェアを含めた総称です。 CHIRIMENは、Web開発者の為に設計され、Webブラウザを介して現実世界とWebの世界をつなげる事を目的としています。
- CHIRIMENのパッケージにはボードコンピュータとしてのハードウェア、その上で動作する Boot to Gecko (B2G) ソフトウェア、センサーや物理デバイスを JavaScript から制御するための WebGPIO や WebI2C といった低レベル API の実装などが含まれており、日本で誕生した MozOpenHard (現 CHIRIMEN Open Hardware) というコミュニティによって開発され、CHIRIMEN というコードネームがつけられました。
- CHIRIMEN に関連するハードウェアとソフトウェアのソースコードは、オープンソースとして公開されています。

- -

 

- -

CHIRIMEN に関して詳しくは chirimen.org サイトをご覧ください。

diff --git a/files/ja/archive/b2g_os/board_guide/chirimen/os_image/index.html b/files/ja/archive/b2g_os/board_guide/chirimen/os_image/index.html deleted file mode 100644 index 33032e8038..0000000000 --- a/files/ja/archive/b2g_os/board_guide/chirimen/os_image/index.html +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: B2G OSイメージの取得方法 -slug: Archive/B2G_OS/Board_guide/CHIRIMEN/OS_Image ---- -

CHIRIMEN B2G OSイメージの取得

- -

クイックスタートガイドの OSイメージアップデート編を参照してください:

- - - -

自分でビルドしたい場合は CHIRIMEN Open Hardware コミュニティの B2G リポジトリを参照してください。

diff --git a/files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/basic_startup/index.html b/files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/basic_startup/index.html deleted file mode 100644 index bf74d16ce6..0000000000 --- a/files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/basic_startup/index.html +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: 起動編 -slug: Archive/B2G_OS/Board_guide/CHIRIMEN/Quick_start_guide/basic_startup ---- -

このページは chirimen.org に移動しました

diff --git a/files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/board_connectors/index.html b/files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/board_connectors/index.html deleted file mode 100644 index a46cb6b19f..0000000000 --- a/files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/board_connectors/index.html +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: ボードコンピュータ コネクタ配置 -slug: Archive/B2G_OS/Board_guide/CHIRIMEN/Quick_start_guide/board_connectors ---- -

このページは chirimen.org に移動しました

diff --git a/files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/dev_windows/index.html b/files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/dev_windows/index.html deleted file mode 100644 index 9d682f5e1c..0000000000 --- a/files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/dev_windows/index.html +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: 開発環境準備編 windows版 -slug: Archive/B2G_OS/Board_guide/CHIRIMEN/Quick_start_guide/dev_windows ---- -

このページは chrimen.org に移動しました

diff --git a/files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/firmware_update_guide_for_windows/index.html b/files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/firmware_update_guide_for_windows/index.html deleted file mode 100644 index 81c9dbcba5..0000000000 --- a/files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/firmware_update_guide_for_windows/index.html +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: firmware update guide for windows -slug: >- - Archive/B2G_OS/Board_guide/CHIRIMEN/Quick_start_guide/firmware_update_guide_for_windows ---- -

このドキュメントは chrimen.org に移動しました

diff --git a/files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/index.html b/files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/index.html deleted file mode 100644 index 64b2f8bcf6..0000000000 --- a/files/ja/archive/b2g_os/board_guide/chirimen/quick_start_guide/index.html +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: クイックスタートガイド -slug: Archive/B2G_OS/Board_guide/CHIRIMEN/Quick_start_guide ---- -

クイックスタートガイドは chrimen.org に移動しました

diff --git a/files/ja/archive/b2g_os/board_guide/index.html b/files/ja/archive/b2g_os/board_guide/index.html deleted file mode 100644 index 2a3200e2e8..0000000000 --- a/files/ja/archive/b2g_os/board_guide/index.html +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Firefox OS 開発用ボードガイド -slug: Archive/B2G_OS/Board_guide -tags: - - B2G - - Developer Boards - - Firefox OS -translation_of: Archive/B2G_OS/Board_guide ---- -
-
-

ここには Firefox OS 端末(開発者向けと消費者向けの両方)に関する開発者向け情報がまとめられています。 一般的な Firefox OS  のビルドとインストールFirefox OS のハック方法 については、それぞれの文書を参照してください。個別の端末に関しては、以下の文書を参照してください。

-
- -

開発者向けボードに関する情報

- -

ここに挙げられているボードは Firefox OS でアプリの開発や Firefox OS 自体への貢献をしたい開発者向けに調整されています。

- -
-
Raspberry Pi
-
Raspberry Pi  に関する情報がまとまっています。
-
CHIRIMEN
-
CHIRIMEN に関する情報がまとまっています。
-
- -

Firefox OS に関する情報

- -
-
Firefox OS 端末データ
-
コードネーム、購入方法、ハードウェアの仕様といった Firefox OS 端末の情報がまとまっています。
-
Firefox OS 端末の一般的な特徴
-
Firefox OS 端末の一般的な特徴と、最小構成についての文書です。
-
トラブルシューティング
-
Firefox OS を使う上で、良くあるトラブルとその解決方法を解説します。
-
オープンレファレンス端末に関するベストプラクティス
-
オープンなレファレンス端末に関するベストプラクティス集です。最近の Firefox OS の開発端末は全てこのベストプラクティスに従っています。
-
-
- -

 

diff --git a/files/ja/archive/b2g_os/building_and_installing_firefox_os/b2g_build_variables_reference_sheet/index.html b/files/ja/archive/b2g_os/building_and_installing_firefox_os/b2g_build_variables_reference_sheet/index.html deleted file mode 100644 index a2e7e42a6d..0000000000 --- a/files/ja/archive/b2g_os/building_and_installing_firefox_os/b2g_build_variables_reference_sheet/index.html +++ /dev/null @@ -1,320 +0,0 @@ ---- -title: B2G ビルド変数のリファレンスシート -slug: >- - Archive/B2G_OS/Building_and_installing_Firefox_OS/B2G_Build_Variables_Reference_Sheet -tags: - - Building - - Firefox OS - - Gaia - - Gecko - - NeedsContent - - Reference - - Référence(2) - - build - - commands -translation_of: >- - Archive/B2G_OS/Building_and_installing_B2G_OS/B2G_Build_Variables_Reference_Sheet ---- -

- -

この記事には、B2G ビルドや、Gaia ビルドや、Gecko ビルド変数と、Firefox OS関連のビルド操作期間で必要となるコマンドについての、全てのリファレンスがあります。

- -

B2G ビルド

- -

変数

- -
-
Example
-
xxx
-
- -

コマンド

- -
-
./repo sync
-
xxx
-
./config.sh
-
xxx
-
- -

Gaia ビルド

- -

変数

- -

全ての変数定義については Gaia MakeFile を見てください。

- -
-
ADB
-
xxx
-
APP
-
いくつかのコマンドは、gaia全体か、あるアプリケーションだけで動作する。この環境変数は、コマンドをあるアプリだけで動作させたいかどうかを決めて、その場合、どのアプリかを指定する。
-
B2G_SYSTEM_APPS
-
system アプリが system パーティションにインストールされているのを確実にする。
-
GAIA_DIR
-
xxx
-
PROFILE_DIR
-
xxx
-
PROFILE_FOLDER
-
プロファイルが生成されるディレクトリを決める。デフォルトではノーマルプロファイル用に gaia/profile となり、DEBUG=1 プロファイル(下記参照)用には、 gaia/profile-debug となる。
-
COREWEBAPPS_DIR
-
xxx
-
SCHEME
-
xxx
-
GAIA_DOMAIN
-
xxx
-
DEBUG
-
1 にセットされた時、デスクトップ版 Firefox や Firefox OS シミュレータ (B2G デスクトップ): DEBUG=1 DESKTOP=0 make として使われるのに適したプロファイルが生成される。これは httpd.js 拡張機能を含み、g app://<appname>.gaiamobile.org/ を使ってアプリケーションにアクセスできるような初期設定が構成される。いくつかのアプリケーションはこのように動作するのが知られていて、一番有名なのは SMS アプリケーションである。
-
LOCAL_DOMAINS
-
xxx
-
DESKTOP
-
This includes a set of extensions in the DEBUG profile to allow the Gaia System app to be loaded in Firefox. This is quite broken these days and deprecated in favor of Mulet. It's set to 1 by default when DEBUG=1 is used, but because this is really broken these days, so you'll want to disable it.
- Be  careful as this also doesn't work with the Firefox OS Simulator (B2G Desktop) at all.
-
DEVICE_DEBUG
-
Enables a more developer-friendly experience: turns on adb debugging with devtools, disables the lock screen, and enables prefs to allow debugging of certified apps.
-
NO_LOCK_SCREEN
-
xxx
-
SCREEN_TIMEOUT
-
0 にセットされた時、プロファイルの初期設定でスクリーンタイムアウトが無効に設定される。
-
SYSTEM
-
xxx
-
GAIA_PORT
-
xxx
-
GAIA_LOCALES_PATH
-
xxx
-
GAIA_INSTALL_PARENT
-
xxx
-
LOCALES_FILE
-
xxx
-
GAIA_KEYBOARD_LAYOUTS
-
xxx
-
GAIA_KEYBOARD_DOWNLOADABLE_LAYOUTS
-
xxx
-
GAIA_KEYBOARD_ENABLE_USER_DICT
-
xxx
-
LOCALE_BASEDIR
-
xxx
-
BUILD_APP_NAME
-
本質的に APP (上記参照) と同じ。
-
PRODUCTION
-
プロダクションビルド (エンジニアリングではなく)を生成する; つまりFacebook アプリid と、その他のプロダクションアプリ idが、これと共に使われる。あるいは make production でも機能する。
-
GAIA_OPTIMIZE
-
1 にセットされた時、Gaiaアプリのビルド時に、JSコード最小化といった最適化ステップを実行する。この機能はオプトインであるため、全ての gaia アプリに影響するわけではない。
-
GAIA_DEVICE_TYPE
-
xxx
-
GAIA_DEV_PIXELS_PER_PX
-
The pixel density of the target device. This affects which image and/or video assets are copied into the build. This defaults to 1, but  higher spec devices need higher resolultion assets — for example the Flame should use a value of 1.5. It is aliased as GAIA_DPPX.
-
DOGFOOD
-
Dogfood Gaia ビルドをオンにする
-
MOZILLA_OFFICIAL
-
非ゼロ値では、Mozilla-ブランドのビルドが生成される。デフォルトは 0 である。
-
GAIA_DEFAULT_LOCALE
-
xxx
-
GAIA_PRETRANSLATE
-
xxx
-
GAIA_CONCAT_LOCALES
-
xxx
-
GAIA_DISTRIBUTION_DIR
-
カスタマイズしたGaiaを指定するのに使用; つまり詳細は Market customizations guide を見てください。
-
GAIA_APPDIRS
-
xxx
-
GAIA_ALLAPPDIRS
-
xxx
-
GAIA_MEMORY_PROFILE
-
xxx
-
NOFTU
-
1 にセットした時、プロファイルでFTUを無効化した初期設定がセットされる。
-
REMOTE_DEBUGGER
-
xxx
-
TARGET_BUILD_VARIANT
-
xxx
-
SETTINGS_PATH
-
xxx
-
FTU_PING_URL
-
xxx
-
KEYBOARD_LAYOUTS_PATH
-
xxx
-
CONTACTS_IMPORT_SERVICES_PATH
-
xxx
-
EMAIL_SERVICES_PATH
-
xxx
-
STAGE_DIR
-
xxx
-
GAIA_APP_TARGET
-
xxx
-
BUILD_DEBUG
-
xxx
-
VARIANT_PATH
-
xxx
-
REBUILD
-
xxx
-
P
-
xxx
-
VERBOSE
-
xxx
-
RAPTOR
-
Enables performance marks and measures to output metadata to logcat. Usage: RAPTOR=1 make reset-gaia
-
SHARE_PERF_USAGE
-
xxx
-
DEFAULT_KEYBOAD_SYMBOLS_FONT
-
xxx
-
DEFAULT_GAIA_ICONS_FONT
-
xxx
-
MOZ_APPROX_LOCATION
-
Use this to turn on the privacy panel; the default is off, except in engineering builds.
-
- -

コマンド

- -

The following is an abbreviated list of the most common commands you'll need. A much more detailed list can be found in the Gaia make options reference.

- -
-
make
-
Makes only the profile.
-
make reset-gaia
-
Deletes the previous profile and installs a new Gaia profile.
-
make install-gaia
-
Installs Gaia on top without deleting anything.
-
make production
-
Does the same thing as PRODUCTION=1 make reset-gaia.
-
make clean
-
Removes the generated profile.
-
make really-clean
-
Removes the generated profile and the directory's xul-runner; you should only run this when things are totally borked.
-
- -

Gecko ビルド

- -

変数

- -
-
MOZ_BUILD_DATE
-
Sets the build id to a specific build date/time.
-
B2G_DEBUG
-
xxx
-
VARIANT
-
Specifies the Gecko variant you want to build. Valid types are detailed below:
-
- - - - - - - - - - - - - - - - -
eng -

This is the default flavor. A plain make is the same as make eng.

- -
    -
  • Installs modules tagged with: eng, debug, user, and/or development.
  • -
  • Installs non-APK modules that have no tags specified.
  • -
  • Installs APKs according to the product definition files, in addition to tagged APKs.
  • -
  • ro.secure=0
  • -
  • ro.debuggable=1
  • -
  • ro.kernel.android.checkjni=1
  • -
  • adb is enabled by default.
  • -
  • marionette is enabled
  • -
  • Does not have update notifications by default ( B2G_UPDATER=1 to turn on )
  • -
-
user -

This is the flavor intended for final release.

- -
    -
  • Installs modules tagged with user.
  • -
  • Installs non-APK modules that have no tags specified.
  • -
  • Installs APKs according to the product definition files; tags are ignored for APK modules.
  • -
  • ro.secure=1
  • -
  • ro.debuggable=0
  • -
  • adb is disabled by default.
  • -
  • Optimizes by default
  • -
-
userdebug make userdebug -

The same as user, except:

- -
    -
  • Also installs modules tagged with debug.
  • -
  • ro.debuggable=1
  • -
  • adb is enabled by default.
  • -
  • marionette is enabled
  • -
-
- -
-

Note: This table is inspired by the Android Build Variants table.

-
- -

コマンド

- -
-
./build.sh buildsymbols
-
Makes build symbols for debugging; see Uploading symbols to Mozilla's symbol server.
-
./build.sh gecko-update-full
-
Creates an OTA mar file; see Firefox OS update packages.
-
./build.sh gecko-update-fota
-
Creates a FOTA mar/zip based on files containing only a subset of files and directories; see Firefox OS update packages.
-
./build.sh gecko-update-fota-full
-
Creates a FOTA mar/zip based on files; see Firefox OS update packages.
-
./build.sh gecko-update-fota-fullimg
-
Creates a FOTA mar/zip based on partitions; see Firefox OS update packages.
-
diff --git a/files/ja/archive/b2g_os/building_and_installing_firefox_os/b2g_installer_add-on/index.html b/files/ja/archive/b2g_os/building_and_installing_firefox_os/b2g_installer_add-on/index.html deleted file mode 100644 index 6aa1141500..0000000000 --- a/files/ja/archive/b2g_os/building_and_installing_firefox_os/b2g_installer_add-on/index.html +++ /dev/null @@ -1,275 +0,0 @@ ---- -title: B2G インストーラ アドオン -slug: Archive/B2G_OS/Building_and_installing_Firefox_OS/B2G_installer_add-on -tags: - - B2G - - B2G installer - - add-on - - blobfree - - install -translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS/B2G_installer_add-on ---- -

B2G installer アドオンは、長い間問題となっていた、blob (プロプライエタリなコンポーネント) のために完全なシステムビルドが再配布できない件を解決します。この記事では、このアドオンの動作とインストールする方法を説明します。

- -
-

重要: このアドオンはまだ実験的段階にあり、メンテナーが必要です。当座は、何か悪いことが起こっても再フラッシュできる端末だけに使うことをお勧めします。現在は Linux (32 / 64 bit) と OSX (64 bit) のみサポートされています。

-
- -
-

重要: アドオンの初回リリースにあたり、次の基本的なユースケースのサポートだけを視野に入れていることをご理解ください: Android (または CyanogenMod) システムが動作しているサポート端末に B2G を焼きこむ。B2G のアップグレードを扱い、端末が (まだ) 指定されていないソースから Blob を入手する。

-
- -

Blob フリーな配布データをビルドする

- -

上記の有名な問題の解決法は、デバイスビルドに必要な全てを同梱する、いわゆる "Blob フリー" な配布データ (バグ 1175934 を参照) を作成することです:

- - - -

こうした Blob フリーな配布データは、B2G のビルド時に |blobfree| make ターゲットを指定することでビルドできます:

- -
$ ./build.sh blobfree
- -
-

注記: これについての詳細は、B2G のビルドについてのページの blobfree セクション を参照してください。

-
- -

B2G installer アドオンは、こうした配布データのインストールを容易にします。

- -

新規端末のサポートを追加する

- -

ユーザが互換性のある端末を接続した時に、新しい端末をアドオン内で利用可能にするには、いくつかのステップが必要です:

- -
    -
  1. お持ちの端末が、Blob フリーな配布データの生成をサポートしていることを確認してください。B2G のビルドについてのページの blobfree セクション を参照してください。
  2. -
  3. 端末がこれをサポートしていたら、アドオンから利用可能にする手順を進められます。まずは、ビルドのリポジトリ をフォークしてください。
  4. -
  5. Bugzilla の、Firefox OS :: B2GInstaller コンポーネントに、バグ登録してください。
  6. -
  7. 新しい端末の情報を builds.json に追加してください。
  8. -
  9. Github にプルリクエストを送り、それに作成したバグを添付し、review :gerard-majax を申請してください。
  10. -
- -

builds.json ファイルにはオブジェクト配列が含まれ、各互換端末が記述されています。これらのオブジェクトは、次のプロパティを持ちます:

- - - -
-

注記: 各 Android プロパティと Fastboot 変数は、文字列 (完全に同一) または配列 (配列値のいずれかと完全に同一) に対して一致します。

-
- -

インストールする

- -

B2G installer アドオンをインストールするには、次のステップに従います:

- - - -

VM (仮想マシン) を利用する

- -

事前ビルドされた仮想マシンをOVAパッケージとして利用することもできます。Please check with VirtualBox or your favorite tool on how to import this appliance. It provides a ready-to-use B2G Installer installation that supports some devices out of the box (udev, etc. already configured.) See バグ 1204482 for more details, and the link below to download. Please verify the SHA1 to make sure the VM is good to use (~1.5GB download).

- -
https://drive.google.com/file/d/0B8Ju6ek0Knd6WnE0N2F6ZHF0VTQ/view?usp=sharing
-SHA1: 01574220718e90d7de498952270cbbaee8e85acd
- -

It is recommended to use the VM if you are running on an OS where B2G Installer does not work (e.g., Windows), or if you are running into issues with the steps above. The default configuration of this VM should handle those devices:

- - - -

If you are willing to flash another device, you will have to configure USB passthrough with the proper USB VID/PID (do not forget the fastboot ones, that might differ) and also configure udev rules.

- -

使い方

- -
    -
  1. アドオンの起動時に、B2G installer が Github から builds.json をダウンロードして、利用可能なビルドのリストを取得します。ローカルの ZIP ファイルはいつでも使用できます。
  2. -
  3. USB 経由で端末を接続し、アドオンが端末を検出するまでお待ちください。
  4. -
  5. 端末がサポートされた端末として検出されると、利用可能なビルドのリストが表示されます。
  6. -
  7. インストールしたいビルドを選び、Flash をクリックしてお待ちください。
  8. -
- -

スクリーンショット

- -

端末が未接続の時:

- -

最初のページ、端末は未接続

- -

ビルドの選択時:

- -

端末が接続され検出された

- -

端末の焼き込み時:

- -

端末が接続され焼きこみ中

- -

データ

- -

As part of improving the addon, we are collecting some data as it is used. The main goal is to ensure the add-on works properly for everyone. We are also collecting data to discover which devices people are interested in, so that supported builds can be adjusted accordingly. No tracking is being done.

- -

We are sending two external telemetry pings to collect this data:

- - - -

Sample payload of plugging an unsupported device:

- -
{
-  "payload": {
-    "buildid": "LVY48I",
-    "isSupported": false,
-    "model": "Xperia Z1 Compact (B2G)",
-    "bootloader": "s1",
-    "manufacturer": "Sony"
-  }, [...]
-}
- -

One each time a device flashing procedure is running. That will happen either at the end of a successful flashing procedure, or upon failure. For this ping, we record:

- - - -

Sample payload with flash success:

- -
{
-  "payload": {
-    "isSupported": true,
-    "installResult": true,
-    "runsB2G": true,
-    "buildid": "KOT49H",
-    "keepData": false,
-    "buildURL": "https://index.taskcluster.net/v1/task/gecko.v1.mozilla-central.latest.linux.nexus-4-kk-user.opt/artifacts/public/build/mako.blobfree-dist.zip",
-    "model": "AOSP on Mako",
-    "bootloader": "MAKOZ30d",
-    "manufacturer": "LGE"
-  }, [...]
-}
- -

Sample payload with flash failure:

- -
{
-  "payload": {
-    "isSupported": true,
-    "installResult": false,
-    "runsB2G": true,
-    "buildid": "KOT49H",
-    "keepData": false,
-    "buildURL": "https://index.taskcluster.net/v1/task/gecko.v1.mozilla-central.latest.linux.nexus-4-kk-eng.opt/artifacts/public/build/mako.blobfree-dist.zip",
-    "model": "AOSP on Mako",
-    "bootloader": "MAKOZ30d",
-    "manufacturer": "LGE"
-  }, [...]
-}
- -

Hacking

- - - -

TODO

- -
    -
  1. Move back out of mozilla-central tree for building. This probably implies rewriting tests with something else than mochitests.
  2. -
  3. Convert building of tools from moz.build to Makefile.
  4. -
  5. Support external source of blobs (needed to handle upgrade case).
  6. -
- - - -

ハックする

- - - -

TODO

- -
    -
  1. Move back out of mozilla-central tree for building. This probably implies rewriting tests with something else than mochitests.
  2. -
  3. Convert building of tools from moz.build to Makefile.
  4. -
  5. Support external source of blobs (needed to handle upgrade case).
  6. -
diff --git a/files/ja/archive/b2g_os/building_and_installing_firefox_os/building_firefox_os_for_flame_on_osx/index.html b/files/ja/archive/b2g_os/building_and_installing_firefox_os/building_firefox_os_for_flame_on_osx/index.html deleted file mode 100644 index c9976eb488..0000000000 --- a/files/ja/archive/b2g_os/building_and_installing_firefox_os/building_firefox_os_for_flame_on_osx/index.html +++ /dev/null @@ -1,241 +0,0 @@ ---- -title: OSXでflame用のB2G OSをビルドする -slug: >- - Archive/B2G_OS/Building_and_installing_Firefox_OS/Building_Firefox_OS_for_flame_on_OSX -tags: - - Firefox OS - - Flame - - Mac - - OSX -translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS/Building_for_Flame_on_OS_X ---- -
-
-

This article provides instructions on how to build B2G OS for Flame devices using a Mac OS X system as your build platform.

- -
Note: This guide assumes that you have the popular Homebrew package manager installed. If you do not, you should either install it or an equivalent package manager and learn how it works.
- -

Preparing the build environment

-
-インストール・ビルドにはOS_X用の必要条件を前提とします。
- -
 
- -
デバッグビルド時のobjdump用に、binutilsをインストールします。
- -
brew install binutils
- -
大文字小文字を区別する、ジャーナルありのHFS+ファイルシステムのディスクイメージを作ってビルドするのに、ターミナルで下記のコマンドを実行します。
- -
-
hdiutil create -volname 'firefoxos' -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/firefoxos.sparseimage
-open ~/firefoxos.sparseimage
-cd /Volumes/firefoxos/
- -
-

Note: Because the image has been created as a "sparse" image, only disk blocks that are actually used take up physical space on your physical media. This means that a 40 gigabyte image, such as the one above, will not actually take up 40 gigabytes of space. Instead, it will gradually get larger as you write more and more data to it.

-
- -

B2Gリポジトリをクローンする

-
- -
-

最初のビルドを始める前、最初のステップはB2Gリポジトリのクローンです。ここでは全部を取得しません!その代わり、B2Gビルドシステムとセットアップユーティリティを取得します。実際のB2Gコードの大半は、主なMozilla Mercurial リポジトリにあります。

- -

このリポジトリをクローンするには、gitを使います:

- -
git clone git://github.com/mozilla-b2g/B2G.git
- -

クローン完了後(速い接続では1分だけかかるでしょう)、B2Gディレクトリにcdします:

- -
cd B2G
-
- -

flame用のB2Gを設定する

- -

B2Gビルドシステムのコアを取得完了後、インストールする端末に向けて設定(configure)を実行する必要があります。サポート端末の一覧を取得するには、config.sh ユーティリティを使用します — B2Gディレクトリで下記のコマンドを実行します:

- -
./config.sh flame-kk
- -

t's at this point that the majority of the code will be downloaded. This is around 15 GB of source code, so it will take a long time, even if you have a fast Internet connection. Even with high-performance broadband, this can take an hour or so.

- -
-

Note: Seriously, this will take a very long time if you're on a slow Internet connection. Keep that in mind (as well as any per-megabyte fees you may have to pay on your connection) before doing this step.

-
- -

Back up important device files

- -

Before beginning the install process, it's important to make a backup of certain key files on the device. These will be needed if you ever need to re-flash the device. 

- -

At this point, connect your Flame if it isn't already connected; the configure process will need to access it. Use the adb devices command to check to see if it's connected:

- -
adb devices -l
- -

This will list any Android or B2G compatible devices that are connected. If yours isn't listed, something's not connected properly.

- -

Once the device is confirmed to be connected, you can make the backup using the following commands:

- -
mkdir flame-backup
-cd flame-backup
-adb pull /system system
-adb pull /data data
- -

To note, if you are building for the first time, you will want to be on the latest version of the flame base image; see https://developer.mozilla.org/en-US/B2G_OS/Phone_guide/Flame/Updating_your_Flame#Full_flash_to_the_latest_base_image for more details.

- -
-

OSXでのビルド問題の回避策

- -

There's a problem that can happen when building on Mac OS X. This is a solution devised by the Mozilla community; OSX 10.9.4 Mavericでテストされています。

- -

mkfs.vfatが存在しない

- -

dosfstools-osxのイメージで動作するdosfstoolsのポーティング版をインストールする必要があります。

- -
brew create https://github.com/sv99/dosfstools-osx.git
- -

Dosfstools形式を編集し、

- -
require "formula"
-
-class Dosfstools < Formula
-  homepage "https://github.com/sv99/dosfstools-osx"
-  url "https://github.com/sv99/dosfstools-osx.git"
-  sha1 ""
-
-  def install
-    system "make", "install"
-  end
-
-end
-
- -

インストールします。

- -
brew install dosfstools
- -

バグ1039223と1027682を.userconfigで回避する

- -
Bug 1039223 - Build for flame fails complaining of missing dt.img (flame向けビルドが、dt.imgがないせいで失敗する
- -
-
Bug 1027682 - [Flame][Build] Failed to build on Mac OS X 10.9, elf.h file not found (Mac OS X 10.9でビルドに失敗、elf.hファイルが見つからない)
- -
 
- -
-
# .userconfig for flame build 14.08.2014
-# osx repo change
-# Bug 1039223 - Build for flame fails complaining of missing dt.img
-# https://bugzilla.mozilla.org/show_bug.cgi?id=1039223
-pushd device/qcom/common/dtbtool
-patch -N << EOF
---- a/dtbtool/dtbtool.c
-+++ b/dtbtool/dtbtool.c
-@@ -616,7 +616,7 @@ int main(int argc, char **argv)
-        extract "qcom,msm-id" parameter
-      */
-     while ((dp = readdir(dir)) != NULL) {
--        if ((dp->d_type == DT_REG)) {
-+        if ((dp->d_type == DT_REG||dp->d_type == DT_UNKNOWN)) {
-             flen = strlen(dp->d_name);
-             if ((flen > 4) &&
-                 (strncmp(&dp->d_name[flen-4], ".dtb", 4) == 0)) {
-EOF
-
-popd
-
-# Bug 1027682 - [Flame][Build] Failed to build on Mac OS X 10.9, elf.h file not found
-# https://bugzilla.mozilla.org/show_bug.cgi?id=1027682
-if [[ ! -e /usr/local/include/elf.h ]]; then
-  cp "${B2G_DIR}/external/elfutils/libelf/elf.h" /usr/local/include
-  echo "Bug 1027682: elf.h copied into /usr/local/include"
-fi
-
-# Disable First Time User experience
-export NOFTU=1
-echo "NOFTU = ${NOFTU}"
-
-# Enable gaia developer mode
-export DEVICE_DEBUG=1
-echo "DEVICE_DEBUG = ${DEVICE_DEBUG}"
-
-# Keeping both debug and non-debug objects
-#export GECKO_PATH=${B2G_DIR}/mozilla-inbound
-echo "GECKO_PATH = ${GECKO_PATH}"
-
-export B2G_DEBUG=1
-echo "B2G_DEBUG = ${B2G_DEBUG}"
-
-#export GECKO_OBJDIR=${GECKO_PATH}/objdir-gonk
-if [[ "${B2G_DEBUG}" != "0" ]]; then
-  export GECKO_OBJDIR=${GECKO_OBJDIR}-debug
-fi
-echo "GECKO_OBJDIR = ${GECKO_OBJDIR}"
- -

初回ビルドを実施する

- -

Now you're finally ready to build! Just kick it off the way you do for any B2G OS build:

- -
./build.sh
- -
 
-
-
-
- -

 

- -
diff --git a/files/ja/archive/b2g_os/building_and_installing_firefox_os/compatible_devices/index.html b/files/ja/archive/b2g_os/building_and_installing_firefox_os/compatible_devices/index.html deleted file mode 100644 index 06c23e557f..0000000000 --- a/files/ja/archive/b2g_os/building_and_installing_firefox_os/compatible_devices/index.html +++ /dev/null @@ -1,283 +0,0 @@ ---- -title: 互換性のある端末 -slug: Archive/B2G_OS/Building_and_installing_Firefox_OS/Compatible_Devices -tags: - - B2G OS phones - - B2G OS supported phones -translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS/Compatible_Devices ---- -

- -
-

Note: すべての端末名の下には、それぞれの推奨されるビルドターゲット名を記載しています。例えば Nexus6 の場合は次のコマンドでビルドします: ./build.sh nexus-6-l

-
- -

開発用端末

- -

下記の端末は、B2G OS を開発するための Mozilla の公式リファレンス端末です。

- - - - - - - - - - - - - - - - - - - -
Z3 Compact (Kitkat)Z3 (Kitkat)Flame
aries-kkleo-kkflame-kk
- -

コミュニティによりサポートされた端末

- -

Nexus 端末

- -

下記の端末は、AOSP 向けの Google のリファレンス端末であるため、(ほぼすべて) 自動的に B2G OS にサポートされます。

- - - - - - - - - - - - - - - - - - - -
Nexus 6Nexus 5Nexus 4
nexus-6-lnexus-5-lnexus-4-kk
- -

Sony 端末

- -

下記の端末は、ソニーモバイルの Open Devices イニシアチブを活用しています。このイニシアチブは、AOSP ですべてのモダンな Xperia 端末をサポートすることを目的としています。 現在、3 つのプラットフォーム上の 10 種の端末がビルド可能です。

- -

これらの端末は、Lollipop AOSP をベースにビルドされています。

- -
-

現在、すべてのソニー端末でカメラ機能が使用できません。ソニーの開発者の対応状況に依存しています。

-
- -

Sony Shinano プラットフォーム

- - - - - - - - - - - - - - - - - - - - - - -
Z3Z3 CompactZ3 Tablet CompactZ2
leo-laries-lscorpion-lsirius-l
- -
-
- -

Sony Rhine プラットフォーム

- -
-

Rhine 端末は、古い NFC チップが搭載されているため、現在その機能が使えません。詳細は Bug 1226720 を参照してください。

-
- - - - - - - - - - - - - - - - -
Z1Z1 Compact
honami-lamami-l
- -

Sony Yukon プラットフォーム

- - - - - - - - - - - - - - - - - - - - - - -
T2 UltraT3M2E3
tianchi-lseagull-leagle-lflamingo-l
- -

CyanogenMod によりサポートされた端末

- -

CyanogenMod 対応端末が待ち構えています!

- -

古い端末

- -

いくつかの古い端末は Mozilla のメンテナンス対象外となっていますが、コミュニティの開発者が対応してくれています (オープンソース最高!)

- -

非推奨の端末

- -

下記の古い端末はメンテナンスされておらず、これに対応するコミュニティの開発者もいません。現在、これらの端末のサポート状況は不明です。おそらく、B2G OS のマスターブランチではビルドができません。

- - - - - - - - - - - - - - - - - - - - - - -
Geeksphone PeakGeeksphone KeonZTE OpenTCL Fire
peakkeoninarihamachi
- - - - - - - - - - - - - - - - - - - - - - -
Samsung Galaxy S2Galaxy NexusNexus SNexus S 4G
galaxy-s2galaxy-nexusnexus-snexus-s-4g
- - - - - - - - - - - - - - - - - - - - - - -
Foxconn InFocusVia VixenPandaboardRaspberry Pi
flatfishvixenpandaboardrpi
diff --git a/files/ja/archive/b2g_os/building_and_installing_firefox_os/firefox_os_build_overview/index.html b/files/ja/archive/b2g_os/building_and_installing_firefox_os/firefox_os_build_overview/index.html deleted file mode 100644 index f780c6f719..0000000000 --- a/files/ja/archive/b2g_os/building_and_installing_firefox_os/firefox_os_build_overview/index.html +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: B2G OSのビルド過程の概要 -slug: Archive/B2G_OS/Building_and_installing_Firefox_OS/Firefox_OS_build_overview -tags: - - B2G OS - - Firefox OS - - build - - build b2g os - - install - - インストール - - ビルド -translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_build_process_summary ---- -
-

B2G OSをビルド、インストールすることは特にたくさんの時間、ネットワーク帯域、演算能力が必要になります。その上、不幸なことに、失敗してしまう傾向もあります。このページはビルド過程の目標を概説した後、個々の過程の中のステップを概説し、ユーザがやり方に添って行えることを意図します。それぞれのステップの詳細はリンク先のページで議論します。

-
- -
-

記: B2G OSのビルド過程は'B2G'または'Boot2Gecko'の全リファレンスです。'Boot2Gecko'は元々B2G OSプロジェクトのコードネームでした。

-
- -

ビルドの目標: 3つの'image'ファイル

- -

ビルド過程の最上位の目標は、B2G OS互換の端末にインストールできる3つのファイルを作ることです。

- - - - - - - - - - - - - - - - -
boot.imgLinuxカーネルとルートファイルシステムのイメージで、後者は基本的なUnixツールの使用可能なセットを提供します。
system.imgGonkの一部、移植されたGecko、そしてb2g実行環境を含むB2G OSのコア(中心)です。
recovery.imgLinuxカーネルとルートファイルシステムのイメージの他、ユーザが間違ったインストールを修復できるような簡易ツールです。
- -

3つのイメージが出来次第、端末にインストールできます。

- -

B2G OS は Android Open Source Project (AOSP) の上に構築されています。AOSP のツールである adbfastboot は端末にアクセスするための強力な手段を提供します。とりわけ adb reboot-bootloader のコマンドは接続された端末をリブートさせブートローダの初期段階で一時停止させることができます。そして fastboot flash $partition $image でイメージを端末へコピーすることができます。

- -

ブートイメージ

- -

ブートイメージ(boot.img) は Linuxカーネルと、初期化スクリプト・コアユーティリティソフトウエアを提供するルートパーティションの組み合わせです。後者は端末によって効率的に使用するため "ramdisk" と呼ばれる端末メモリへコピーされます。ブートイメージは端末上の 'boot' パーティションにコピーされ、adb shell 等の実行によって端末のファイルシステムがアクセスされる時、ramdisk の内容がルートディレクトリに反映されはじめます。

- -

ブートイメージは、ルートディレクトリ上の default.prop ファイル内のルートユーザのパーミッションを設定します。

- -

ブートイメージは kernel と ramdiskイメージに分割してramdiskイメージの内容を抽出し、修正することが可能です。修正後、ramdiskイメージを再組み立てして boot.img を再構築することで既存のブートイメージを変更することができます。たとえば Alcatel One Touch Fire Hacking (Mini) Guide が参考になります。

- -

ブートイメージは 'サイドローディング' によってインストール前にテストできます。端末が起動してブートローダで一時停止させた後、fastbootで次のようなコマンドを用いて、インストールすることなくブートイメージを使用することができます。
- fastboot boot /some/path/to/boot.img

- -

システムイメージ

- -

システムイメージ(system.img)は、B2G OSのコア部分を提供します:

- - - -
-

プラットフォームアーキテクチャについてはB2G OS プラットフォームに詳しい情報があります。

-
- -

システムイメージは端末上のsystemパーティションへコピーされ、端末のファイルシステムが実行時にアクセスされる時には/system/ディレクトリとして可視化されます。

- -
-

: システムイメージは端末によって使用されるバイナリーブロブを提供します。特にRIL (Radio Interface Layer) ブロブは端末のセルラー電波を制御します。

-
- -

リカバリイメージ

- -

リカバリイメージ (recovery.img) にはブートイメージパーティションに存在するのと同じカーネルとramdiskが含まれます。しかしながらリカバリイメージは異なる初期化スクリプトを使用し、それによって、ユーザは端末のハードウェアボタンを用いてリカバリコマンドにアクセスできます。

- -

リカバリイメージは端末のrecoveryパーティションへコピーされ、通常実行時にはマウントされません。

- -

ビルドの過程: セットアップ・構成・ビルド・インストール

- -

B2G OSをビルド、インストールする最上位プロセスは、4つのステップを含みます:

- - - - - - - - - - - - - - - - - - - - -
セットアップビルドプロセスで使われる全プログラム、例えば適切なコンパイラやライブラリ、のコピーを取得します。
構成ビルドされるソースコードをダウンロードし、ビルド時に使われるパスや他の値を指定する環境変数を定義する .configure ファイルを作成します。
ビルドユーザのGeckoプロファイルや、端末用のGaia webアプリケーション をビルドします。
インストール端末にファイルをインストールします。
- - -

 

- -

セットアップ

- -

ビルドの最中に必要となる全部のソフトウェアが実行されているということをコンパイラに保証するために、最初のセットアップは必ず完了させます。

- -

このステップは手動でもスクリプトでも行うことができます。詳細は B2G OSビルドの必要条件 ページで議論されています。

- -
-

記: UNIXやUNIXライクなマシンでは、unixコマンドの which にプログラム名をパラメータに付けることで必要なソフトウェアをチェックできます。

-
- -

構成

- -

実際のビルドプロセスは、B2G OS (またはB2G)ソフトウェアを取得することから始まります。通常それはB2GプロジェクトのGitクローンを作成することです。ビルド構成では、ビルドする全てのソースコード取得と、ビルド用の変数を指定する.configファイル作成との両方を行います。

- -

これはconfig.shスクリプトで実行されます。詳細は 初回 B2G ビルドの準備 ページで議論されています。

- -

構成スクリプトは、ビルドする端末タイプを指定するパラメータが必要です。ビルド名は特定端末よりは、CPUアーキテクチャに関連したコード名です。現状はどの物理端末にどのビルドが動作するかを確立する方法はありません。利用できるコード名一覧はこちらにあります。

- -

構成ステップでは ASOP の repo ツールもまた、ビルドで使う全コードのコピーをダウンロード(または更新)するために使われます。こうしたコピーは .repo/projects ディレクトリに保管されます。この動作のため、構成ステップでは多くの時間と、大量のデータダウンロードが発生することがあります。

- -

ビルド

- -

ビルドステップでは実際にソースコードをコンパイルして出力イメージを作成します。

- -

これはbuild.shスクリプトで実行されます。詳細はB2G OSのビルドページで議論されています。

- -

デフォルトでは、ビルドステップはモノリシックで、ASOPツールからLinux kernelやGaia webアプリケーションをまで一度にビルドしようとします。ビルドが失敗すると、どのステップが失敗したのか不明なことが時々あります。

- -

全B2Gスタックの一部をビルドすることが可能です。例えばgeckoパラメータをつけてビルドすることで、Geckoシステムのみをビルドできます。同様に、Gaiaだけビルドするのにgaiaパラメータを使用します。次に説明するように、これらの部品は端末に別々にインストールされます。

- -

このページの最初で述べたようなイメージをビルドすることも可能です。例えば./build.sh out/platform/$target/system.img でシステムイメージをビルドでき、ここで $target パラメータは構成ステップと同様になります。

- -

インストール

- -

インストールステップでは新しくコンパイルされたコードを端末に配置します。これはflash.shスクリプトで実行されます。

- -

flash スクリプトにパラメータをつけることで個々のビルド部品をインストールできます。例えばGaia webアプリケーションは./flash.sh gaiaと指定することで単独でインストールできます。

diff --git a/files/ja/archive/b2g_os/building_and_installing_firefox_os/firefox_os_update_packages/index.html b/files/ja/archive/b2g_os/building_and_installing_firefox_os/firefox_os_update_packages/index.html deleted file mode 100644 index a7bdd3d890..0000000000 --- a/files/ja/archive/b2g_os/building_and_installing_firefox_os/firefox_os_update_packages/index.html +++ /dev/null @@ -1,523 +0,0 @@ ---- -title: B2G OS の更新パッケージを作成、適用する -slug: Archive/B2G_OS/Building_and_installing_Firefox_OS/Firefox_OS_update_packages -translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS/B2G_OS_update_packages ---- -

- -
-

B2G OS ユーザに、端末へのシステムコードのバージョン更新を簡単に許可したい場合、ユーザが利用可能な更新パッケージを作る必要があります。この記事では、異なる更新パッケージを利用できることを一通り見て、パッケージをビルドし、更新をホストし (またシステムが利用可能な更新を取得する方法)、その更新を適用、検証することを取り上げます。

-
- -

更新パッケージの作成と適用は、4つのステップに分かれます:

- -
    -
  1. ビルドホスト上で、旧バージョンから新バージョンへの差分更新パッケージをビルドする
  2. -
  3. クライアントにダウンロードする、正しい更新パッケージを見つける
  4. -
  5. 更新をダウンロードする
  6. -
  7. 端末上の既存ファイルに更新を適用する
  8. -
- -

これら各ステップは下記に載っています。

- -
-

: B2G OS のシステムを更新するのに多くの便利なツールがあって、その場所は b2g/tools/update-toolsです。

-
- -

Prerequisites

- -

To build and apply updates you must ensure that your build has the updater and associated update tools enabled. By default those are enabled only in userdebug and user variants. You can however force building them by adding the following line to your .userconfig file:

- -
export B2G_UPDATER=1
- -

To sign update packages you will need a Java runtime environment (JRE) or Java software development kit (JDK) installed and the java command available in the default path.

- -

更新の種類

- -

2種類の更新を知るべきです: FOTA (Firmware Over-The-Air) と、 Gecko/Gaia OTA (Over-The-Air)です。これらの違いを見て行きましょう。

- -

FOTA更新

- -

FOTA更新により B2G OSシステム全体を更新できます。FOTAの背後の技術はAndroidプロジェクトと共有されています。FOTA更新を使って変更できる電話機の物理ドライブの場所は、システムパーティションや、カーネルや、モデムのベースバンドや、更新用のリカバリイメージ、あるいは端末のあらゆるファィルを含みます。

- -

B2G OS は特定FOTA クライアントに依存してはいません; つまりインターフェイスはlibrecovery と呼ばれるAPIで抽象化されています。しかしながら、我々は GOTA リカバリクライアント(詳細は下記を見よ) を使うのを推奨し、ここの議論はGOTA の使用を想定します。

- -

FOTA 更新パッケージは主に update.zip で構成されます。このパッケージは下記を含みます。

- - - -

ファィルのフォーマットとセットは、通常のAndroid更新に使われるものと同じで、ただ B2G OS では update.zip パッケージを追加でmar ラッパー(MARはMozilla ARchive の意)でラップします(包みます)。mar ラッパーは追加レベルの検証を許可し、それは下記で説明します。

- -

Gecko/Gaia OTA更新

- -

代わりに、単に B2G OS端末のGecko と Gaia のファィルを更新できて、その仕組みをGecko/Gaia OTA 更新と呼びます。 全てのGecko と Gaia のファィル (コアのGeckoランタイムと端末のユーザインターフェイスを含めて) は端末上の /system/b2g ディレクトリ内にあります。これはOTA更新で変更可能な、唯一のディレクトリです。

- -

Gecko/Gaia OTA更新はデスクトップ版Firefox webブラウザの更新に使われるのと同じ技術を使っています。上記で議論したFOTA update.zip パッケージとよく似ていることに、OTA更新は1つの MAR ファイルで構成され、その中にクライアントを新しいソフトウェアバージョンに更新するのに必要な、差分バイナリと新規ファイルのセットを含んでいます。

- -

Gecko クライアントはダウンロードした複数のMARの統合性を検証し、複数のMARを複数の関係者で署名することができます。

- -

2つの更新テクノロジーがある理由は?

- -

OTA更新はFOTA更新ほど広範囲ではないが、よりユーザフレンドリーで適用が簡単で、必要な更新を行うためにしばしば良いものでしょう。

- - - -

もちろん、Gecko/Gaia 外のファイルを更新する必要があれば、完全な FOTAパッケージの道を進まないといけません。

- -

続いてパッケージをビルドする処理を検証しましょう。

- -

更新パッケージをビルドする

- -

更新のビルドは、 B2G OS クライアントを、ソフトウェアのバージョンX からより新しい バージョンY に更新するのに要るファイルを生成する処理です。クライアントを更新するのに必要な更新パッケージは、バージョンXバージョンY との間でどのファイルが変更されたかに依存します。

- - - -

差分更新パッケージ(FOTA と Gecko/Gaia OTA更新の両方) を生成するには、我々のツールではバージョンX と バージョンY の完全ビルドが必要です。 完全ビルド とは、クライアントを書き込むのに必要な全ファイルを含んだパッケージのことです。バージョンX の完全ビルド作成時には、バージョンXから更新する将来のバージョンを知っていません。そのために、完全なFOTAパッケージとGecko/Gaia パッケージを、各バージョン毎に作ります。これにより、バージョンX と将来の全バージョンの間で、Gecko/Gaia OTA差分更新や、必要ならばFOTA差分更新のいずれも生成できます。

- -

高レベルで、更新をビルドする処理はこのようになります:

- -
    -
  1. ソフトウェア バージョンX では - -
      -
    • /system/b2g の中身の完全なGecko/Gaia OTA MAR を生成します。
    • -
    • 完全な FOTA ターゲットファイルのzipを作成し、端末のパーティション用に任意で署名します。ターゲットファイルのzip は、以下ではDEVICE-target_files-$VARIANT.$USER.zipで参照される、(SYSTEM/、BOOT/、などの)電話機のディレクトリを更新するファイルを含んだ1つのzipです。完全なFOTAのupdate.zip は複数のターゲットファイルのzipから生成されます。
    • -
    -
  2. -
  3. ソフトウェア バージョンY -
      -
    • /system/b2g の中身の完全な Gecko/Gaia OTA MAR を生成します。
    • -
    • 完全な FOTA ターゲットファイルのzipを作成し、端末のパーティション用に任意で署名します。ターゲットファイルのzip は、 以下ではDEVICE-target_files-$VARIANT.$USER.zipで参照される、(SYSTEM/、BOOT/、などの)電話機のディレクトリを更新するファイルを含んだ1つのzipです。完全なFOTAのupdate.zip は複数のターゲットファイルのzipから生成されます。
    • -
    -
  4. -
  5. /system/b2g 内のファイルだけが変更された場合、バージョン X から バージョンY への差分Gecko/Gaia OTA更新MARを生成します。
  6. -
  7. そうでない場合、バージョン X から バージョンY への差分FOTAのupdate.zip を生成します。B2Gクライアントへの配信用に、差分FOTAのupdate.zip MARにラップします。
  8. -
  9. 配信承諾の必要性に応じて、パッケージを署名します。
  10. -
- -

下記の節などでは、これらの各ステップを実装するためのB2Gツールの使い方を説明します。

- -
-

Note: the steps below assume that you have already set up a b2g build environment at the location $b2g. The commands below reference the $b2g/build.sh helper script, but make can also be used.

-
- -

完全な Gecko/Gaia OTA更新MARを生成する

- -

gecko-update-full ターゲットを実行して、完全な更新MARを、最後に成功したb2g ビルド(例  あなた自身でビルド完了したもの) から生成するには、gecko-update-full ターゲットを実行する必要があります。MAR を $b2g/objdir-gecko/dist/b2g-update/b2g-gecko-update.mar に配置するには、下記コマンドを使います:

- -
$ cd $b2g
-$ ./build.sh gecko-update-full
-$ cp objdir-gecko/dist/b2g-update/b2g-gecko-update.mar <destination>
-
- -

Generating a full FOTA update MAR

- -

To generate a full FOTA update MAR from the last successful b2g build (e.g. that you built yourself), you need to invoke the gecko-update-fota-full target. This includes the contents of the entire /system partition. Here are the commands you need:

- -
$ cd $b2g
-$ ./build.sh gecko-update-fota-full
- -

This will generate a ZIP file ($PRODUCT_OUT/fota/full/update.zip) and a MAR file ($PRODUCT_OUT/fota-$TARGET_DEVICE-update-full.mar). The ZIP file can be directly used with adb sideload, while the MAR is intended for distribution in the same manner as any other update package.

- -

Generating a FOTA update MAR plus recovery package

- -

As of Firefox OS 2.2 (mid April and beyond) we added a new make target, which can be invoked as follows:

- -
$ cd $b2g
-$ ./build.sh gecko-update-fota-fullimg
- -

This is used to produce a recovery package that will dump a set of partitions images. The default set is controlled by the variable B2G_FOTA_FULLIMG_PARTS, defined in gonk-misc/Android.mk (along with most of the other new features seen below.) It's a space-separated string of mountpoint:image instances to include. The default value is "/boot:boot.img /system:system.img /recovery:recovery.img /cache:cache.img".

- -

Along with this we have also introduced some new environment variables to control the production of the two other make targets — gecko-update-fota and gecko-update-fota-full:

- - - -
-

Note: All of these new features heavily rely on having a proper recovery.fstab file provided for the device in question.

-
- -

Generating a partial Gecko/Gaia FOTA update MAR

- -

A partial FOTA update uses the same mechanism as a full FOTA update, but by default only includes Gecko/Gaia updates like a regular OTA update. Additional files outside of Gecko/Gaia (such as fonts) can also be included.

- -

The rationale for generating a partial FOTA update package is mainly related to licensing issues: when building a complete FOTA update package, the whole system partition (at least) will be included. This may include blobs that you don't have the authorization to redistribute. However, since MAR distribution is useful and Gecko/Gaia themselves are free software, there is no reason we should not be able to distribute them in this manner. A partial FOTA allows you to only update a subset of the system. An OTA update could be used instead in this scenario but it does come at a cost: OTA updates require enough space on the system partition to hold both the existing Gecko/Gaia files as well as the unpacked update files. A partial FOTA update does not suffer from this limitation as it can overwrite the existing files with the updated ones.

- -

To create a partial FOTA update from the last successful b2g build (e.g. that you built yourself), Invoke the gecko-update-fota target with the following commands:

- -
$ cd $b2g
-$ ./build.sh gecko-update-fota
- -

This will generate a ZIP file ($PRODUCT_OUT/fota/partial/update.zip) and a MAR file ($PRODUCT_OUT/fota-$TARGET_DEVICE-update.mar). The ZIP file can be directly used with adb sideload, while the MAR is intended for distribution in the same manner as any other update package.

- -

The construction can be controlled with a couple of environment variables, the most useful of which are documented below:

- - - - - - - - - - - - - - - - - - - - - - -
VariableMeaning
$B2G_FOTA_DIRSSpace-separated list of directories to include in the update. Defaults to system/b2g.
$TARGET_UPDATE_BINARYBinary used to execute the Edify script inside the package. When none is provided, a pre-built updater binary from ICS is used.
$FOTA_FINGERPRINTSComma-separated list of Android fingerprints to check against. The use case is to be able to distribute Gecko/Gaia update packages on top of a controlled Gonk base system that we cannot legally distribute. For example, Open C community builds are using this.
- -
-

Note: A complete set of these variables is defined in the Android.mk file of the gonk-misc repository; note that $FOTA_FINGERPRINTS is used in our update_tools.py tool.

-
- -

完全な FOTA ターゲットファイルのzipを生成する

- -

Invoke the target-files-package target to build a target files zip that can be used to generate both incremental and full FOTA update packages. The target files zip can also be signed by custom keys to ensure that only FOTA updates from known sources can be installed. After signing target files, all images and updates (also OTA) need to be generated again to catch the inserted keys.

- -
-

Note: The target files zip is generated in the location out/target/product/$DEVICE/obj/PACKAGING/target_files_intermediates/$DEVICE-target_files-$VARIANT.$USER.zip

-
- -

The following commands will carry out this step:

- -
$ cd $b2g
-$ ./build.sh target-files-package
-$ cp out/target/product/$DEVICE/obj/PACKAGING/target_files_intermediates/$DEVICE-target_files-$VARIANT.$USER.zip <destination>
-
- -

The variable values in the commands listed above should be filled in as follows:

- - - - - - - - - - - - - - - - - - - - - - -
VariableMeaning
$DEVICEDevice name for the AOSP product
$VARIANTeng, user, or userdebug
$USERThe build username
- -

完全なFOTAターゲットzipファイルに署名する

- -

Proper releases should typically be signed by custom release keys only known to the vendor. Having such keys will prevent FOTA updates where the source is unknown from being installed, hence introducing an extra security layer. For this to work, the images flashed to a device need to include public keys while the updates need to be signed by the corresponding private key. 

- -

The first step is to generate custom keys and store them in a safe place. The Android Open Source Project has a script for generating these keys. For full compatibility, get this script from the branch corresponding to the Gonk version of the device in question. Here is the master branch version.

- -

A couple of keys are needed — create them with the following commands. releasekey is the key to use for signing FOTA update packages.

- -
$ development/tools/make_key releasekey '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
-$ development/tools/make_key platform '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
-$ development/tools/make_key shared '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
-$ development/tools/make_key media '/C=US/ST=California/L=Mountain View/O=Android/OU=Android/CN=Android/emailAddress=android@android.com'
-
- -

With keys present, the target files zip can be signed using the following commands. This will insert the public keys and modify build properties to reflect the fact that it has been signed.

- -
$ cd $b2g
-$ ./build/tools/releasetools/sign_target_files_apks \
-  --default_key_mappings $RELEASEKEY_FOLDER \
-  --replace_ota_keys \
-  --signapk_path prebuilts/sdk/tools/lib/signapk.jar \
-  $UNSIGNED_TARGET_FILES_ZIP \
-  $SIGNED_TARGET_FILES_ZIP
- -

The variable values in the commands listed above should be filled in as follows:

- - - - - - - - - - - - - - - - - - - - - - -
VariableMeaning
$RELEASEKEY_FOLDERThe path to the folder containing the custom keys
$UNSIGNED_TARGET_FILES_ZIPThe FOTA target files zip to sign.
$SIGNED_TARGET_FILES_ZIPThe signed FOTA target files zip to be generated
- -

差分OTA更新MARを生成する

- -

この例では、ソフトウェア バージョンX から バージョンYへの更新を生成すると想定します。 上記の指示からビルドされたソフトウェア バージョンXの完全なGecko/Gaia OTA MAR の場所を、以下では $MAR_X と呼びます。これはビルドサーバ上で /home/build/b2g/versions/X/update.mar のようなパスかもしれません。同様に、バージョンY の完全なMAR$MAR_Y と呼びます。

- -

build-gecko-mar.py のツールは差分Gecko/Gaia OTA更新のMAR を、$MAR_X と$MAR_Y を用いて生成します。ファイルの生成先を$GENERATED_INCREMENTAL_MAR_X_Y と呼びます。このステップでは下記コマンドを使います:

- -
$ cd $b2g
-$ ./tools/update-tools/build-gecko-mar.py --from $MAR_X --to $MAR_Y $GENERATED_INCREMENTAL_MAR_X_Y
-
- -

差分FOTA更新zipを生成する

- -

In this example, we're assuming that we're generating an update from software version X to version Y. The location of the full FOTA target zip built from software version X using the instructions above will be called $TARGET_FILES_X below. This might be a path on a build server like /home/build/b2g/versions/X/target_files.zip. Similarly, the location of the full FOTA target zip built from version Y will be called $TARGET_FILES_Y.

- -

The tool build/tools/releasetools/ota_from_target_files will generate an incremental FOTA update.zip using $TARGET_FILES_X and $TARGET_FILES_Y. We'll call the destination of this intermediate file $INTERMEDIATE_FOTA_UPDATE_FOTA_X_Y.

- -

After this update.zip is generated, the last step is to wrap it in a MAR for delivery to the B2G client. The tool tools/update-tools/build-fota-mar.p does this step. We'll call the destination of this generated file $GENERATED_INCREMENTAL_FOTA_X_Y.

- -

Use the following commands to complete this step:

- -
$ cd $b2g
-$ ./build/tools/releasetools/ota_from_target_files -v \
-    --incremental_from $TARGET_FILES_X \
-    --signapk_path prebuilts/sdk/tools/lib/signapk.jar \
-    --package_key $FOTA_SIGNING_KEY \
-    $TARGET_FILES_Y \
-    $INTERMEDIATE_FOTA_UPDATE_FOTA_X_Y
-$ ./tools/update-tools/build-fota-mar.py $INTERMEDIATE_FOTA_UPDATE_FOTA_X_Y --output=$GENERATED_INCREMENTAL_FOTA_X_Y
-
- -

The variable values in the commands listed above should be filled in as follows:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
VariableMeaning
$TARGET_FILES_XThe FOTA target files zip for version X
$TARGET_FILES_YThe FOTA target files zip for version Y
$INTERMEDIATE_FOTA_UPDATE_FOTA_X_YA temporary update.zip to generate a MAR from
$GENERATED_INCREMENTAL_FOTA_X_YThe destination incremental update zip wrapped in a MAR for delivery to clients
$FOTA_SIGNING_KEYPath to the prefix for a private key and public cert for signing the update zip. $FOTA_SIGNING_ZIP.pk8 and $FOTA_SIGNING_ZIP.x509.pem should both exist on the file system. If $TARGET_FILES_X is not signed this option can be omitted; the default testkey will still be picked up. In case $TARGET_FILES_X is a custom release key, refer to the target files zip signing section on how to create it, and don't forget to sign $TARGET_FILES_Y.
- -

更新をホストし、クライアント側で更新をポーリングする

- -

B2G OS クライアントは更新マニフェスト(update.xml)を取得し、読み解くことで、更新をポーリングします。 B2G OS クライアントは特定サーバ(サーバ上の特別に構築されたパスを尋ねます)の更新をポーリングするよう設定されています。クライアントがサーバを尋ねるのに、 HTTPSプロトコルが必要で、しかしながらHTTPもサポートされます。クライアントからポーリングされるサーバとパスは、既存クライアントにポーリングコードを変更する更新を積むことで、変更できます。

- -

下記の例では、server updates.b2g.com に更新がホストされているのを想定します。

- -

クライアントからポーリングされるURLは、通例に下記パラメータを含みます:

- - - - - - - - - - - - - - - - - - - - - - - - - - -
パラメータ説明
PRODUCT_MODEL端末モデル名。これはB2Gのプロパティデータベース内の ro.product.model の値です。
CHANNEL更新"チャンネル"。これはテストに役立ちます: 複数のサーバをホストするよう設定でき、例えば、"nightly"と"beta"と"release"のチャンネル。
VERSIONクライアントのソフトウェアバージョン。例えば、"18.0.2"。
BUILD_IDタイムスタンプのような ユニークID で、特定ビルド用に構成されます。
- -

Firefox クライアントは構成された更新ホストの値と、実行時にポーリングするURLを構築するこれらの値を使います。構造は下記の通り:

- -
https://aus4.mozilla.org/update/3/%PRODUCT%/%VERSION%/%BUILD_ID%/%PRODUCT_DEVICE%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml
- -

こうしたURLの実例は下記の通り:

- -
https://aus4.mozilla.org/update/3/B2G/37.0a1/20141214040212/flame/en-US/nightly-b2g37/Boot2Gecko%202.2.0.0-prerelease%20%28SDK%2019%29/default/default/update.xml?force=1
- -

サーバがクライアントのリクエストに対するレスポンスに"404 Not Found"を返した場合、利用できる更新はありません。サーバが"200" とマニフェストファイルを返した場合、利用できる更新がある可能性があります。マニフェストは新規に利用できる、すなわちクライアントが更新しようとするビルドを記述します。マニフェストの例は下記:

- -
<?xml version="1.0"?>
-<updates>
-  <update type="major" appVersion="19.0" version="19.0" extensionVersion="19.0" buildID="20121210123456"
-          licenseURL="http://www.mozilla.com/test/sample-eula.html"
-          detailsURL="http://www.mozilla.com/test/sample-details.html">
-    <patch type="partial" URL="https://updates.b2g.com/release/unagi1/18.0/20121203123456/update.mar"
-           hashFunction="SHA512" hashValue="5111e033875752b7d9b32b4795152dea5ef954cb8a9d4a602dd19a923b464c43521287dcb5781faf3af76e6dc5e8a3dd9c13edea18c1f2c8f3bd89e17d103d6f"
-           size="41901319"/>
-  </update>
-</updates>
-
- -

これはFirefox ビルドのマニフェスト(詳細はupdates.xml フォーマットFormat を見よ)と同じスキーマです。.マニフェスト内の項目は下記を記述します:

- - - -
-

Note: There is a useful update script available at build-update-xml.py, which given a MAR file, builds a Firefox OS update.xml for testing.

-
- -
-

Note: The client device or the user may wish to decline an update.

-
- -
-

Note:  isOSUpdate="true" is needed for FOTA updates but not for OTA updates.

-
- -

上記に記述した仕組みを使って、サーバはクライアントのいかなる旧バージョンでも最新バージョンに更新する更新パッケージをホストできます。あるいは、クライアントが一度で更新するべき"直線の更新履歴"だけをホストしているかもしれません。

- -

ビルドサーバと更新ホストの相互作用の詳細は、このドキュメントの説明範囲を超えています。それはプロダクション環境に強く依存しています。我々の Software Update wiki ページにて詳細を見つけることができます。

- -

更新を検証、適用する

- -

After a B2G OS client has successfully polled for an update (handled from within the system), downloaded it, and verified the integrity of the downloaded update package, the final step is to apply the update.

- -

The first step in applying an update is to verify the signatures embedded in the MAR packages (see Generating an incremental FOTA update zip for how these are created). This is done by the B2G OS client itself after checking the integrity of the downloaded package. The code used for this is the same for both FOTA and Gecko/Gaia OTA updates.

- -
-

Note: It is not the MAR file that gets signed: it's the FOTA zip file that gets bundled into the MAR that's signed by build/tools/releasetools/ota_from_target_file. The signing of the FOTA update works the same as it does on Android; if you just run the script without specifying the key, it will use the developer key at build/target/product/security/testkeys.*. This is ok for testing but when you create a real update you need a secure key — i.e. one that no-one else knows about. The device will also verify that signature before applying the patch, so a device's initial images will need to contain the key as well.

-
- -
-

Note: The keys referred to above are found in the Android build systems; we've forked it in our platform_build repo.

-
- -

After signatures are verified, the process of applying an update diverges between Gecko/Gaia OTA updates and FOTA updates. Let's look at the differences between the two at this point.

- -

Gecko/Gaia OTA更新を適用する

- -

The B2G OS client applies these using the updater binary. This is part of the Gecko distribution and is the same code used to apply updates to desktop Firefox. As described above, the update is applied while the B2G OS client continues to run normally. Users are able to make and receive calls, run apps, browse the web, etc. while updates are being applied.

- -

The specific details of the updater binary are beyond the scope of this document, but it works approximately like so:

- - - -

After the b2g process finishes restarting, the user will be running the new version of the B2G client software.

- -

FOTA更新を適用する

- -

The FOTA client applies these. The Gecko client "hands off" the update to be applied by calling into the librecovery API. What happens after this step is specific to each FOTA client.

- -

In the implementation of librecovery used for the GOTA client, the downloaded update package is staged to be applied and special commands are enqueued for the recovery client. librecovery then reboots the device into recovery mode. The recovery client then runs the update script in the update.zip to update files and partitions as needed. The recovery client may need to reboot multiple times in order to update all files.

- -

After the final reboot, the device will be running the new version of the B2G OS client software.

diff --git a/files/ja/archive/b2g_os/building_and_installing_firefox_os/index.html b/files/ja/archive/b2g_os/building_and_installing_firefox_os/index.html deleted file mode 100644 index ab5e0ddb68..0000000000 --- a/files/ja/archive/b2g_os/building_and_installing_firefox_os/index.html +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: B2G OS のビルドとインストール -slug: Archive/B2G_OS/Building_and_installing_Firefox_OS -tags: - - B2G OS - - Build documentation - - Firefox OS -translation_of: Archive/B2G_OS/Building_and_installing_B2G_OS ---- -
-

B2G OS は現在活発に開発が行われており、プレリリースの状態にあるため、最新のコピーを確実にインストールするには、自分でビルドしてインストールするのが最善の方法です。このページのリストにある記事は、B2G OS をビルドしてエミュレータや互換性のある端末、もしくは Firefox ブラウザ内の Gaia ユーザインターフェースにインストールする方法を解説します。

-
- - - - - - - - -
-

B2G OS の取得とビルド

- -
-
B2G OS ビルドの概要
-
B2G OS のビルドとインストールを行うには、大変な時間とネットワーク帯域と演算能力を要します。このページでは、ビルドプロセスのゴールと、ユーザが順を追ってそのプロセスを進めるため概要を見ていきます。
-
B2G OS ビルドの必要条件
-
初めて B2G をビルドする前に必要なステップ
-
初回 B2G OS ビルドの準備
-
B2G OS をビルドするには、リポジトリの複製とビルドの構成が必要です。その方法について解説します。
-
B2G OS のビルド
-
B2G OS のビルド方法です。
-
B2G installer アドオン
-
B2G installer アドオンは、ブロブ (プロプライエタリなコンポーネント) が原因で完全システムビルドを再配布することができないという、長年の問題を解決するのに役立ちます。この記事では、アドオンの動作とインストール方法について解説します。
-
- -

さらなる参照材料

- -
-
Mac OS X で Flame 用の B2G OS をビルドする
-
Mac OS X 上でFlame用の B2G OS をビルドする方法です。
-
互換性のある端末
-
B2G OS をサポートする開発端末の公式なリスト。
-
B2G OS 更新パッケージの作成と適用
-
この詳細なガイドでは、OTA/FOTA 更新パッケージの作成方法を説明します。このパッケージは、ユーザの端末に配信されるソフトウェア更新を提供できます。
-
FOTA コミュニティビルドのビルドとインストール
-
コミュニティにより書かれた FOTA パッケージの作成とインストールのクイックスタートガイドです。
-
B2G ビルド変数のリファレンスシート
-
B2G OS 関係のビルド操作で必要になる、すべての B2G ビルド、Gaia ビルド、Gecko ビルド変数およびコマンドについてのリファレンス。
-
-
-

B2G OS と Gaia のインストール

- -
-
Gaia もしくは B2G OS の実行方法を選択する
-
あなたは B2G 内で Gaia を使用できます。また、モバイル端末やデスクトップベースのシミュレータ内で B2G OS を実行することもできます。このガイドは、どちらがあなたのニーズに最適なのかを判断する助けになるでしょう。
-
B2G OS シミュレータをビルドする
-
B2G OS シミュレータをビルドするためのガイド。これは、あなたのコンピュータ上の、実端末に似た Gecko ベースの環境で Gaia と Web アプリを動作させます。
-
B2G OS エミュレータを使用する
-
B2G OS エミュレータのビルドと使い方、どのエミュレータをいつ使えば良いかについてのガイドです。
-
B2G OS をモバイル端末にインストールする
-
実際のモバイル端末に B2G OS をインストールする方法です。
-
-
diff --git a/files/ja/archive/b2g_os/building_boot_to_gecko/fota_community_builds/index.html b/files/ja/archive/b2g_os/building_boot_to_gecko/fota_community_builds/index.html deleted file mode 100644 index 502d74e885..0000000000 --- a/files/ja/archive/b2g_os/building_boot_to_gecko/fota_community_builds/index.html +++ /dev/null @@ -1,225 +0,0 @@ ---- -title: FOTA コミュニティビルドのビルドとインストール -slug: Archive/B2G_OS/Building_Boot_to_Gecko/FOTA_community_builds -translation_of: Archive/B2G_OS/Building/FOTA_community_builds ---- -

- -

この記事では、あなたの電話機に B2G OS のコミュニティビルドをビルドするのに役立ちます。こうしたビルドには、このOS向けにアクティベートされたの"firmware over the air" (FOTA) 更新があります。

- -

前提条件

- -

In order to build and install this build, you should have a machine to build on and a host machine. These machines may be the same machine.

- -

On the building machine, you should have all the software needed to make a build for your target phone (B2G OS build prerequisites for more information).

- -

First, you need to check the device:

- - - -

It is possible to build nightly, aurora, and beta versions; to do so, just create 3 different folders: nightly aurora beta (if you only want to build one branch, you can go with one directory only). Nightly is updated every night, aurora corresponds to the latest stable version, and beta corresponds to the version that came before aurora.

- -

Depending on your needs, you can choose to build every branch or only one or two. For every branch you need, follow the steps described on this page. Once you have reached the "Build" paragraph, the instructions will be branch-specific again.

- -

Prepare your first B2G build with the correct BRANCH, as if you were making a build for the target phone. Follow the instructions on this page (Preparing for your first B2G build) until the end of the section "Configuring B2G for your device".

- -
-

Note: if you have a specific manifest (xml) for config.sh, open this file and replace "master" with the the name of the branch you want in "B2G specific things".

-
- -

Now, your working directory should be [BRANCH]/B2G/

- -

DO NOT COMPILE YET! 

- -

There are still a lot of changes to be done.

- -

Signatures (only for B2G OS devices by default):

- -

All ROMs for B2G OS devices must be signed; for Android devices, however, this is not mandatory.

- -

We can only provide gecko and gaia; the update will be signed to avoid its installation on the wrong phone.

- -

To do so you will need to have the signature of the root build; just keep build.prop on the phone:

- -
adb pull /system/build.prop
- -

Now, find the value of ro.build.fingerprint; this is the fingerprint.

- -

Localization:

- -

You can build a version containing all the locales by adding this script (langs.sh) on gaia/locales or you can choose to clone only some languages. In this case, modify gaia/locales/languages_all.json to only fetch the languages you cloned #TOVERIF => Building multilocale

- -

If you build for aurora or beta, modify git checkoutmozillaorg/master by using git checkout v2.1 for aurora and git checkout v2.0 for beta in langs.sh

- -

Don't forget to update your repositories before creating a new build.

- -

langs.sh :

- -
 #!/bin/sh
-
- set -e
- GIT_ROOT="https://git.mozilla.org/releases/l10n/"
- GIT_PROJ="/gaia.git"
- LANGS=$(json_pp < languages_all.json | grep ':' | cut -d':' -f1 | cut -d'"' -f2)
- for lang in ${LANGS}; do
-     echo "Syncing $lang"
-     if [ ! -d ${lang}/.git/ ]; then
-         echo "No repo for ${lang}, cloning new one"
-         git clone ${GIT_ROOT}${lang}${GIT_PROJ} $lang || true
-     else
-         echo "Updating close for ${lang}"
-     cd ${lang} && (git fetch origin && git checkout origin/master) || true && cd ..
-     fi;
- done;
-
- -

ビルドの構成

- -

You also need a .userconfig file for your build:

- -

Create a file at the root of [BRANCH]/B2G/ named .userconfig and paste these lines :

- -
 export SYSTEM_PARTITION=/dev/block/platform/msm_sdcc.1/by-name/system # to specify the system partition, find info with adb shell cat /proc/mounts
- export DATA_PARTITION=/dev/block/platform/msm_sdcc.1/by-name/userdata # to specify the data partition, find info with adb shell cat /proc/mounts
- export VARIANT=userdebug #to include gaia
- export PRODUCTION=1 #to have a user build
- export B2G_UPDATER=1
- export B2G_UPDATE_CHANNEL=aurora  #to modify [BRANCH]
- export ENABLE_DEFAULT_BOOTANIMATION=true #to have B2G boot animation
- export GAIA_DEV_PIXELS_PER_PX=1.5
- export LOCALE_BASEDIR=locales/ #Languages folder
- export LOCALES_FILE=locales/languages_all.json #all languages for the build
- export GAIA_KEYBOARD_LAYOUTS="$((find gaia/apps/keyboard/js/layouts/*.js | sed -e 's|gaia/apps/keyboard/js/layouts/||g' -e 's/\.js$//g') | tr -s '\r\n' ',' | sed -e 's/,$//g')" #All keyboard, you can change this with keyboard you want
- export GAIA_DEFAULT_LOCALE=fr #languages by default, fr (french) for example
- export B2G_FOTA_DIRS="system/fonts system/b2g" #fira font bug
- export FOTA_FINGERPRINTS="[your fingerprint]"
-
- -

You will need to edit the following variables:

- - - -

You can remove the parts following the pound sign (#) (including the sign itself). These are comments, and their only purpose is to explain what the line is doing.

- -

After that, you will need to setup information about update url:

- -
 cd gecko/
- git checkout -b [VERSION NUMBER or master for nightly]-local --track mozillaorg/[VERSION NUMBER or master for nightly]
- edit app.update.url in b2g/app/b2g.js you can keep %target% etc.. or you can just have something like
- pref("app.update.url", "http://[DOMAIN]/[PHONE NAME]/[BRANCH]/update.xml");
- 
- -

After that, in order to keep your modification, make a commit:

- -
 git commit -a
- Repeat all these steps with the different branches to have a beta/aurora/nightly build.
- -

Now the build configuration is done. All future steps must be repeated at each build in each branch folder.

- -

ビルド

- -

Setup for building a (new) update is: 

- -
 cd [BRANCH]/B2G/ #to be in the good folder
- git pull # to update the repo code
- ./repo sync #to update repo code for android and B2G do not use the -d option, doing this will remove your modification
- cd gaia/locales/ && ./langs.sh && cd ../../ #to update languages
-
- ./build.sh # to building b2g
- ./build.sh gecko-update-fota # to build b2g and gaia in a .zip and .mar
-
- BUILDID=$(grep 'BuildID=' objdir-gecko/dist/bin/application.ini | cut -d'=' -f2) # setup buildid variable
- VERSION=$(grep '\nVersion=' objdir-gecko/dist/bin/application.ini | cut -d'=' -f2) # setup version of gecko variable
- python tools/update-tools/build-update-xml.py -c out/target/product/[PHONE NAME]/fota-[PHONE NAME]-update.mar -O -u http://[DOMAIN]/[PHONE NAME]/[BRANCH]/fota-[PHONE NAME]-update.mar -i $BUILDID -v $VERSION -V $VERSION | tee /var/www/[BRANCH]/update.xml # Modify this command with your information: good path to .mar, good path to .mar in url of update.xml, the command output should be into a file update.xml; this update.xml will go on your host machine, this corresponds to the file call by the system to find new update.
- cp out/target/product/[PHONE NAME]/fota-[PHONE NAME]-update.mar /var/www/[BRANCH]/fota-[PHONE NAME]-update.mar #to move .mar in the server
- cp out/target/product/[PHONE NAME]/fota/partial/update.zip /var/www/[BRANCH]/update.zip #to move .zip in the server
- pushd /var/www/[BRANCH]/ # to go in the server file
- sha1sum $(ls) | tee sha1.checksum #to have a signature file
- popd
-
- -

If you want an IRC bot you can use ii or a build bot. I have made a script of this HERE (for more information on what a build bot is, see http://buildbot.net/ )

- -

Flash the phone and try your build:

- -

To install a build on a phone, just follow these steps:

- -
 adb reboot recovery
- -

On the recovery go down using the down volume button to select the "apply update from adb" line, then touch the power button:

- -
 adb sideload out/target/product/[PHONE NAME]/fota/partial/update.zip
- -

コミュニティによる既存のビルド

- - diff --git a/files/ja/archive/b2g_os/building_boot_to_gecko/index.html b/files/ja/archive/b2g_os/building_boot_to_gecko/index.html deleted file mode 100644 index 97a12a4226..0000000000 --- a/files/ja/archive/b2g_os/building_boot_to_gecko/index.html +++ /dev/null @@ -1,553 +0,0 @@ ---- -title: B2G OSのビルド -slug: Archive/B2G_OS/Building_Boot_to_Gecko -tags: - - B2G - - Boot - - Build documentation - - Firefox OS - - Gecko - - Guide -translation_of: Archive/B2G_OS/Building ---- -
-

-
- -
-

一度 ビルド環境のセットアップ が完了して、コードの 最初の pull と configure を実行すれば、Boot to Gecko をビルドすることができます。このガイドで方法を説明します。

-
- -

コードを更新する

- -

B2G をビルドするのが初めてでない方は、ビルドを始める前に最新のコードを pull したいかもしれません。これを行うには、B2G ツール群と、それに依存関係があるものを両方とも更新する必要があります。次のコマンドを実行してください:

- -
git pull
-./repo sync -d
-
- -

"-d" オプションは、様々なプロジェクトの HEAD を Android マニフェストのリビジョン (つまり、デフォルトのメインストリームリポジトリのバージョン) に切り替えます。これは、リポジトリ (および関連ソース) に変更を加えているが、master バージョンに一時的に戻す必要のある時に有用です。途中段階や作業中のディレクトリの変更はそのまま残ります (すべての説明は SO の質問 を参照してください)。ソースコードに触れていない場合は、次の通常のコマンドを実行してください:

- -
git pull
-./repo sync
- -

ターゲット名を指定すると、指定したターゲットのリポジトリを更新できます:

- -
./repo sync gaia
-
- -

repo コマンドには、興味深い、その他のオプションも利用可能です。repo help で多くの情報を得られます。

- -

Boot to Gecko のビルド

- -
-

注記: ビルドする前に、.userconfig ファイルをセットアップしてビルドをカスタマイズしたいでしょう。詳細は、.userconfig ファイルでカスタマイズ を参照してください。

-
- -

Boot to Gecko のビルドは、build.sh ツールを使用するだけです:

- -
cd B2G
-./build.sh
-
- -

コーヒーブレークの時間がやってきました。昼寝もできるかもしれません (特にこれが初回のビルドなら、Core i7 と 8GB RAM を搭載した PC なら 30 分くらいかかります)。前回のページの設定手順で、事前に展開された Android システムファイルのディレクトリを使っている場合、build.sh を実行する前に ANDROIDFS_DIR を設定すべきです。

- -
-

補足: 新しいビルドを端末にフラッシュするための詳しい説明は、B2G OS をモバイル端末にインストールする をお読みください。

-
- -

特定モジュールのビルド

- -

Gecko など、特定のモジュールだけをビルドしたいときは、その名前を指定してください:

- -
./build.sh gecko
-
- -

一個のアプリケーションだけを更新するには、BUILD_APP_NAME 環境変数を使用すると、gaia モジュールのみをビルドできます :

- -
BUILD_APP_NAME=calendar ./build.sh gaia
- -

ビルド可能なモジュールのリストを取得するには、継ぎのコマンドを実行してください:

- -
./build.sh modules
-
- -

使用するプロセッサコアの数の設定

- -

デフォルトで、B2G ビルドスクリプトがビルドに使用するコア数は、搭載されたシステムのコア数に、実行する並列タスク数の 2 倍を足した数になります。これは、build.sh 実行時に -j パラメータを指定すると変更できます。この変更は、バックグラウンドでのビルド中に、他のことでシステムを使うため CPU 負荷を少し減らす必要のあるときに有効です。また、ビルドに問題がある場合も、実行しているのが一度に 1 つのタスクだけなら、ビルドプロセスからのエラー出力を読むのが楽ですよね!

- -

例えば、2 つの並行処理でビルドするには:

- -
./build.sh -j2
-
- -

しかし、この設定の最も一般的な使い方は、ビルドが並列で実行されないようにすることです。処理の出力が大変読みやすくなり、ビルドの問題が整理しやすくなります。これを実行するには:

- -
./build.sh -j1
-
- -

複数ロケールのビルド

- -

複数ロケールのビルドを作成するには、以下の手順に従ってください:

- -
    -
  1. どの Gaia 言語ファイルを使うかを決定します。現在、locales/languages_dev.jsonlocales/languages_all.json が Gaia 言語ファイルとして使用しています。
  2. -
  3. http://hg.mozilla.org/gaia-l10n から適切なロケールを gaia-l10n/ ディレクトリへ clone してください。locales/ ディレクトリを使うこともできます。言語ファイルに記載されたロケールごとのリポジトリを clone する必要があります。
  4. -
  5. あなたの環境で、ステップ 2 のディレクトリの絶対パスを LOCALE_BASEDIR 環境変数に設定し、ステップ 1 の .json ファイルの絶対パスを LOCALES_FILE 環境変数に設定してください。
  6. -
  7. その他、デフォルトロケールを設定したい場合は、GAIA_DEFAULT_LOCALE にロケールコードを設定します。
  8. -
- -
cd gaia/locales/
-hg clone https://hg.mozilla.org/releases/gaia-l10n/v2_5/ja
- -

環境変数を設定します:

- -
export LOCALE_BASEDIR=$PWD/locales
-export LOCALES_FILE=$PWD/locales/languages_dev.json
-export GAIA_DEFAULT_LOCALE=ja
-
- -

languages-dev.json を独自の languages-own.json のパスに置き換えられます。それは次のようなものになります。locales ディレクトリに clone されたリポジトリ毎にエントリを追加する必要があるでしょう:

- -
{
-  "en-US"     : "English (US)",
-  "ja"        : "日本語"
-}
-
- -

バグ 884752 が修正 (2013年11月) されたため、(Gaia 内で入手可能なら) キーボードレイアウトを追加するのに、GAIA_KEYBOARD_LAYOUTS 環境変数が使用できます。

- -

バグ: https://bugzilla.mozilla.org/show_bug.cgi?id=884752

- -

レイアウト: https://github.com/mozilla-b2g/gaia/tree/v2.5/apps/keyboard/js/layouts

- -

例えば、スペイン語と日本語のキーボードレイアウトを追加するには、次のキーボードレイアウト名を追加します。

- -
GAIA_KEYBOARD_LAYOUTS=en,es,jp-kanji
- -

この時点で、初めて Gaia を端末にフラッシュする準備ができました。端末を接続し、リモートデバッグが有効かどうか、[Settings] > [Device Information] > [More Information] > [Developer] の設定で確認してください。これは、一度だけする必要があります、REMOTE_DEBUGGER=1 のおかげで、Gaia の独自ビルドでこの設定をオンにできます:

- -
 make clean && make production LOCALES_FILE=locales/languages-own.json
- -

または

- -
 rm -rf out objdir-gecko && LOCALES_FILE=locales/languages-dev.json ./build.sh
- -
-

特定のブランチ向けのサポートされたすべてのロケールを clone または update したい場合は、このスクリプト が使えます。

-
- -

公式スタイルのエンジニアリングビルドをビルドする

- -
-

このセクションが古い場合は、Be job in Treeherder のログを参照して最新の変数セットを得てください。

-
- -

Mozilla により配布 されているような "公式" スタイルのエンジニアリングビルドをビルドするには、コマンドラインで次のオプションを使用する必要があります:

- -
VARIANT=eng MOZILLA_OFFICIAL=1 B2G_SYSTEM_APPS=1 GAIA_OPTIMIZE=1 B2G_UPDATER=1 B2G_UPDATE_CHANNEL=default MOZ_TELEMETRY_REPORTING=1 MOZ_CRASHREPORTER_NO_REPORT=1 LOCALES_FILE=locales/languages_all.json GAIA_KEYBOARD_LAYOUTS=en,pt-BR,es,de,fr,pl,zh-Hans-Pinyin,zh-Hant-Zhuyin,en-Dvorak,jp-kanji ./build.sh
- -

以下は、引数の説明です:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
変数説明
VARIANT=engThat's how you usually define an engineering build. This is also the default value.
MOZILLA_OFFICIAL=1Published build are Mozilla officials. This shows the B2G OS logo and the branding. Do not use it to publish your own.
B2G_SYSTEM_APPS=1Sets the apps in the /system/b2g/webapps folder (instead of /data/local/webapps).
GAIA_OPTIMIZE=1concatenate the Gaia sources.
B2G_UPDATER=1Enables the nightly updates.
B2G_UPDATE_CHANNEL=defaultThe B2G OS update channel. "Default" points to mozilla-central.
MOZ_TELEMETRY_REPORTING=1Enables Telemetry for submitting usage data.
MOZ_CRASHREPORTER_NO_REPORT=1Disables the B2G Desktop UI when a crash occurs, so the Gaia reporter only is used.
LOCALES_FILE=locales/languages_all.jsonSets the languages available in Gaia (the relative path starts from the gaia folder).
GAIA_KEYBOARD_LAYOUTS=en,pt-BR,es,de,fr,pl,zh-Hans-Pinyin,zh-Hant-Zhuyin,en-Dvorak,jp-kanjiKeyboards included in Gaia.
- -

Blob フリーの完全システム zip をビルドする

- -

すでに Android が動作しているサポートされた端末を B2G 端末へ変換するために使用できる Blob-free のシステム zip をビルドできます。これは、著作権保護された blob が原因でビルドを配布できないという、長く続いた問題を解決します。私たちは、"端末から端末" を根拠としてこれを可能にしており、まずは Flame と Z3/Z3 Compact 端末のみがサポートされます。

- -
-

注記: すでにビルドできているあらゆる端末に展開すべきですが、それぞれの端末でリリース前に確認が必要です。

-
- -

このような zip は、次のオプションでビルドできます:

- -
./build.sh blobfree
- -

これで、次のもので構成される zip ファイルが生成されます:

- - - -

作成された zip は、B2G インストーラアドオンで使用される予定です (バグ 1166276 参照)。

- -

既知のエラー

- -

"Build failed!"

- -

全般的な "Build failed" というメッセージが表示された時は、いつも端末をコンピュータに接続し直すべきです。様々な理由で端末がアンマウントされていることがあります。

- -
-

Keon 用の B2G の configure やビルドは Mac で "実行できない" ので注意してください。この端末用には Linux を使用する必要があります。

-
- -

Mountain Lion 固有のビルドエラー

- -

1. OS X 10.8 "Mountain Lion" (Xcode 4.4.1 以降) をビルドに使用して、下記のエラーが起こった場合:

- -
external/qemu/android/skin/trackball.c:130:25: error: 'M_PI' undeclared (first use in this function)
- -

B2G/external/qemu/Makefile.android ファイルを編集し、78 行目に次を追加してください:

- -
MY_CFLAGS += -DM_PI=3.14159265358979323846264338327950288   #/* B2G_fix: not finding M_PI constant */
-
- -

2. "Mountain Lion" 上で ./build.sh の実行中に、下記のエラーが起こった場合:

- -
/System/Library/Frameworks/IOKit.framework/Headers/usb/USB.h:797:9: error: too many #pragma options align=reset
- -

/System/Library/Frameworks/IOKit.framework/Headers/usb/USB.h ファイル内の全ての '#pragma options align=reset' を '#pragma pack()' に置き換えてください。

- -

Undefined symbols "_sqlite3_androidopt_handle_pragma" and "_sqlite3_androidopt_open"

- -

このエラーは、OS X 10.7 以降で Xcode 4.5 以降を使用してビルドしている時に発生します。これを直すには、external/sqlite/dist/Android.mk ファイルに https://groups.google.com/forum/#!msg/android-building/yAfPyUqCsiQ/7zvICk4GWjYJ のパッチを適用してください。

- -

KeyedVector.h:193:31: error: indexOfKey was not declared in this scope

- -

このエラーは、gcc のバージョンが新しすぎる場合に発生します。ただし、私たちがシステムをビルドするのに新しいバージョンの GCC を使うようアップグレードすれば、問題ではなくなります。詳しい情報は、.userconfig ファイルでカスタマイズ を参照してください。

- -

arm-linux-androideabi-g++: Internal error: Killed (program cc1plus)

- -

このエラーが表示されたら、おそらく空きメモリが不足しています。./build.sh を実行する前に十分な空きメモリを確保してください。4GB の RAM があればうまく実行できるでしょう。

- -

"...is referenced by DSO" error

- -

エミュレータのビルド時に、このようなエラーが発生した場合:
- /usr/bin/ld: out/host/linux-x86/obj/EXECUTABLES/triangleCM_intermediates/triangleCM: hidden symbol `_XGetRequest' in out/host/linux-x86/obj/STATIC_LIBRARIES/libSDL_intermediates/libSDL.a(SDL_x11dyn.o) is referenced by DSO.

- -

binutils のいくつかのバージョンでこのエラーが発生します。Debian 安定版では、binutils-gold パッケージをインストールして gold リンカを使用してください。注意点として、gold リンカは binutils によりインストールされますが、デフォルトでは使用されません。ただ binutils-gold が実行します。

- -

error: device not found

- -

./build.sh の開始時に、例えば次のように "error: device not found" エラーのメッセージが表示された場合:

- -
Blob setup script has changed, re-running
-Backing up system partition to backup-flame
-error: device not found
-Pulling files from ../../../backup-flame
-cat: ../../../backup-flame/system/build.prop: No such file or directory
-cat: ../../../backup-flame/system/build.prop: No such file or directory
-Invalid system backup - Wrong base version found.
-
-Do this:
-1. Delete backup-flame
-2. Flash your device with KK based images from the vendor
-3. Try building again
-
-> Build failed! <
- -

この場合、adb devices コマンドを実行して、端末が adb でアクセス可能か確かめてください。端末が接続されていれば、adb デバッグが端末の開発者メニューで有効になっているか確認し、端末がロックされていてもアクセスできるようするため、画面ロックをオフにしてください。環境設定アプリで "Screen Lock" セクションの "Lock Screen" のチェックを外してください。

- -

ビルドシステムのテスト中にビルドエラーが発生した場合

- -

ビルドシステムのビルド後のテスト中に、時々 (特にビルドツールやオペレーティングシステムの更新後に) このような奇妙なエラーが発生することがあります:

- -
Generating permissions.sqlite...
-test -d profile || mkdir -p profile
-run-js-command  permissions
-WARNING: permission unknown:offline-app
-WARNING: permission unknown:indexedDB-unlimited
-build/permissions.js:122: NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPermissionManager.add]
-make[1]: *** [permissions] Error 3
-make: *** [gaia/profile.tar.gz] Error 2
- -

このような状況になったら、gaia/xulrunner-sdk ディレクトリを削除し、コードを再度 pull してみてください:

- -
rm -r gaia/xulrunner-sdk
-
- -

これで、ビルドシステムが自動的にダウンロードしたコンパイル済みの XULRunner のコピーが削除されます。次回のビルド時に、XULRunner の新しいコピーが自動的に取得されます。

- -

Cannot fetch platform/libcore

- -

Nexus S 用の B2G ビルド (./config.sh nexus-s) を設定しようとして libcore 関連のエラーが発生する場合、これは、提供者である linaro git の問題です。これを修正するには、下記のように B2G マニフェストを checkout してください:

- -
git clone https://github.com/mozilla-b2g/b2g-manifest.git
- -

リポジトリ内の nexus-s.xml ファイルを修正し、linaro git エントリを asop エントリーに置き換え、下記のようにします:

- -
 
- -

変更をコミット (git commit -a) し、次にチェックアウトしたメイン B2G リポジトリのマスターブランチ内の config.sh ファイルを変更して、Mozilla マニフェストの代わりにあなたが修正したローカルのマニフェストを指すようにします:

- -
GITREPO=${GITREPO:-"file:///home/path/to/my/b2g-manifest"}
- -

Mac で Xcode 5 を使用してビルドする時の clang エラー

- -

Mac OS X 10.8 上の Xcode 5 でビルドする場合、下記の様なエラーを見ることがあります:

- -
clang: error: argument unused during compilation: '-include system/core/include/arch/darwin-x86/AndroidConfig.h'
-clang: error: argument unused during compilation: '-U DEBUG'
-clang: error: argument unused during compilation: '-U DEBUG'
-clang: error: argument unused during compilation: '-MF out/host/darwin-x86/obj/EXECUTABLES/obbtool_intermediates/Main.d'
-make: *** [out/host/darwin-x86/obj/EXECUTABLES/obbtool_intermediates/Main.o] Error 1
- -

これは、Xcode 5 が g++ コンパイラを /usr/bin に変更しているのが原因で、コンパイル時にそれを使おうとする時にビルドプロセスが停止します。この問題を回避するには、build/core/combo/HOST_darwin-x86.mk の次の行を編集してください:

- -
HOST_CXX := g++
- -

から

- -
HOST_CXX := g++-4.7
-ifeq (,$(wildcard /usr/local/bin/g++-4.7))
- HOST_CXX := g++
-endif
- -

に書き換えます。次に、gcc をアンインストールするため、brewを 使います(すでに Mac OS bootstrap script を使っていることを想定しています。そうでない場合は、そのステップを完了しておく必要があります):

- -
brew uninstall gcc-4.7
- -

ここで c++ と multilib をサポートした gcc を再インストールします:

- -
brew install --enable-cxx https://gist.github.com/artlogic/6988658/raw/aeb9d1ea098274ad3f3fe2637b9df7f308a8a120/gcc-4.7.rb
- -

PATH に /usr/local/bin の記載があることを確認してください。次のコマンドで、この環境変数を一時的に設定できます:

- -
export PATH=/usr/local/bin:$PATH
- -

上記をホームディレクトリの .bash_profile に追加しておけば、この変更を永続的にできます。

- -

PATH の設定後、下記コマンドを両方実行してください:

- -
gcc-4.7 -v
-
-g++-4.7 -v
- -

上記のコマンドのいずれかが失敗する場合、次のコマンドのように brew で GCC を再リンクしてください:

- -
brew link --overwrite gcc-4.7
- -

/usr/bin/c++ が Xcode 5 インストール時のように clang++ を指していない場合もありえます。次のコマンドで確認できます:

- -
ls -l /usr/bin/c++
- -

このようなものが返ってくるはずです:

- -
lrwxr-xr-x 1 root admin 7 Sep 19 11:40 /usr/bin/c++ -> clang++
-
- -

c++ が clang++ 以外を指してる場合は、次のコマンドで更新してください:

- -
sudo rm /usr/bin/c++
-
-sudo ln -s /usr/bin/clang++ /usr/bin/c++
- -

"system/core/include/log/log.h:38:20: error: stdarg.h: No such file or directory"

- -

このエラーは、Mac OSX 10.10 上で 10.6 SDK を使用してビルドする場合に起こります。または、ビルドしようとしているものがビルドコンフィグでサポートされていない他の SDK 設定でも起こります。詳細は、バグ 1071266 を参照してください。

- -

cp: cannot stat '../../../backup-flame/system/lib/libalsa-intf.so': No such file or directory

- -

このエラーは、ビルドシステムがバックアップディレクトリからのファイルを使おうとしてファイルが見つからないときに起こります。このような問題はいくつかの原因が考えられます。

- -
    -
  1. スクリプトが端末からコンピュータへデータを取得している間に USB 接続が壊れた。
  2. -
  3. 誤ったターゲットをビルドしている (誤った端末または誤ったベースの Android バージョン)。
  4. -
  5. スクリプトが想定するベースビルドを持っていない。
  6. -
- -

下記のサブセクションで、詳細な原因を探ります。

- -
-

Note: The backup directory is a copy of some files from your target device so that the build system can produce a full image, including binary files that we don't have the source for. Usually we can't distribute these files — that's why you need to fetch them from an existing device containing a base build obtained from the vendor.

-
- -

The USB connection is broken while pulling data

- -

When building, if the backup directory doesn't exist, the script will automatically start fetching the files from your attached device. At the end of this process you should see lines similar to the following:

- -
143 files pulled. 0 files skipped.
-3003 KB/s (512036044 bytes in 30.662s)
- -

If you see pulling messages from adb (lines starting with pull) but don't see this, this means the connection was broken before completion. In this case you should delete your backup directory and try building again.

- -

Note: Some base builds will disable adb when the phone is locked. If that's the case for you, you'll need to disable screenlock so that it doesn't lock itself.

- -

You're building for the wrong target

- -

The target is the parameter you gave to the config.sh script in the previous step. To check your configured target, just run:

- -
$ cat .config
- -

And you should get an output like the following:

- -
...
-DEVICE_NAME=flame-kk
-PRODUCT_NAME=flame
- -

The DEVICE_NAME is what you're looking for. For example, current flame builds should use flame-kk, not flame.

- -

If the DEVICE_NAME is wrong, then you need to reconfigure using config.sh, delete your current backup directory (backup-flame for the flame), and rerun the build script.

- -

エミュレータのビルドの問題

- -

emulator ビルドを作成する時は、下記の問題に注意してください:

- -
-

重要: x86 エミュレータを使用すべきではありません。インストールが困難であまりサポートされていません。

-
- -

エミュレータ用のビルドシステムは、32bit と 64bit の両方をビルドします。エミュレータは OpenGL に依存しているため、32bit/64bit 両方の OpenGL ライブラリをシステムにインストールする必要があります (バグ 897727 の議論を参照)。

- -

この問題を解決するには、2 通りの方法があります:

- -

解決策 #1: 32bit と 64bit 両方の OpenGL ライブラリをインストールして正しいシンボリックリンクを保つ

- -

ご使用の linux ディストリビューションに OpenGL ライブラリの multilib パッケージがあれば、それをインストールしてみてください。シンボリックリンクは手動で作ることになるでしょう。

- -

例えば、以下は Ubuntu 12.04 LTS x86-64 の場合です。このディストリビューションでは、 libgl1-mesa-dev パッケージの x86-64 版と i386 版を同時にインストールできません。しかし、下記組み合わせのパッケージを同時インストールできます:

- -
sudo apt-get install libgl1-mesa-dev libglapi-mesa:i386 libgl1-mesa-glx:i386
- -

このコマンドを実行後、エミュレータのビルドを成功させるには、まだ手動でシンボリックリンクを作る必要があります:

- -
sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so
-sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
- -

解決策 #2: エミュレータにパッチを当てて 64bit 版だけをビルドする

- -

単に このパッチ を B2G リポジトリ下の sdk/ Git リポジトリに適用します。これは、64bit システムでは、B2G エミュレータが 64bit のエミュレータだけをビルドするようにします。 これで、multilib のいかなる問題も回避できます。64bit システムでは、いずれにせよ 32bit エミュレータを使用しません。これは、このパッチが最終的にゴミクズ化(原語:bit-rot)するまでは最もシンプルな解決策です。

- -

Android can only be built by versions 3.81 and 3.82

- -

For Ubuntu you can compile an older version by downloading this version.

- -

Install using the following:

- -
tar xvzf make-dfsg_3.81.orig.tar.gz
-cd make-dfsg-3.81.orig/
-./configure
-make
-make check
-make install
-echo alias make=\'$(pwd)\' >> B2G/.userconfig
- -

次のステップへ

- -

ビルド後の次のステップは、Boot to Gecko をエミュレータ用にビルドしたのか、もしくは実際のモバイル端末用なのかによって異なります。詳細は以下の記事を参照してください:

- - - -

B2G/B2G OS/Gaia のバグ登録

- -

いったん B2G/B2G OS のビルドを終えて実行できるようになったら、特定バージョンのバグを登録したくなるでしょう。B2G OS コミュニティは可能な限り効率的な改善ができます。Bugzilla でバグを報告 したいときは、"B2G OS" プロジェクトの下に、バージョン情報を含めて報告してください:

- -
    -
  1. 最初に、メジャーバージョン番号、例えば 2.5.0.0-prerelease を教えてください。端末では Settings > Device Information から確認できます。
  2. -
  3. gaia と gecko リポジトリから現在のハッシュを取得することで、もっと詳細なバージョン ID を報告できます。このようにして: -
    #!/bin/bash
    -(cd gaia;  echo "gaia  $(git rev-parse HEAD)")
    -(cd gecko; echo "gecko $(git rev-parse HEAD)")
    -
  4. -
diff --git a/files/ja/archive/b2g_os/choosing_how_to_run_gaia_or_b2g/index.html b/files/ja/archive/b2g_os/choosing_how_to_run_gaia_or_b2g/index.html deleted file mode 100644 index 0a2d68d898..0000000000 --- a/files/ja/archive/b2g_os/choosing_how_to_run_gaia_or_b2g/index.html +++ /dev/null @@ -1,77 +0,0 @@ ---- -title: Gaia もしくは B2G OS の実行方法を選択する -slug: Archive/B2G_OS/Choosing_how_to_run_Gaia_or_B2G -tags: - - B2G OS - - Build documentation -translation_of: Archive/B2G_OS/Choosing_how_to_run_Gaia_or_B2G ---- -

どのような用途で使用するかによって、Firefox OS もしくは Gaia ユーザインタフェースを実験する際に、よく考慮すべきオプションがあります。選択可能なのは以下のオプションですが、どれにも考えるべきメリットとデメリットがあり、他のものよりもフレキシブルに利用できるものもあります。

- -

デスクトップで B2G を実行する

- -

Firefox OS シミュレータをビルドして、その上で Gaia を実行することが可能です。このソフトウェアは Firefox をベースにしていますが、端末上の Firefox OS エクスペリエンスと非常に良く似た振る舞いをします。現在 Mozilla は開発者向けに、このアプリケーションのナイトリービルドを提供しています。Firefox コードベースや C++ プロジェクトのビルドに精通している場合は、このアプリケーションをこれらの説明に従って自分でビルドすることができます。

- -

長所

- - - -

短所

- - - -

B2G シミュレータで実行する理由

- -

これは、程よくバランスのとれたテスト及び開発のソリューションです。何かテストしたいと思った時に、毎回実際にスマートフォンのフラッシュメモリに書き込まなくても、端末に似た環境で、あなたのアプリやその他のコードがどんな感じなのか、確認するのに便利です。

- -
注意 : アプリをリリースする前に、実際のハードウェア上でのテストが絶対に必要です!
- -

シミュレータの種類

- -

いくつかの種類の Firefox OS シミュレータ を使用できます。

- -
-
Firefox OS シミュレータ アドオン
-
この拡張機能は、Firefox OS 上で動作するテストアプリケーションのための主要なツールであり、ほとんどのユーザに推奨される解決法です。これには開発者ツールが含まれており、テスト環境にアプリケーションを追加することもサポートされます。
-
開発者向けデスクトップビルド
-
これらはスタンドアロンのアプリケーションであるシミュレータを構築します。コアな Firefox OS の開発者による技術的な特徴の検証を支援します。
-
ローカライザ向けデスクトップビルド
-
ローカライザ向けビルドは、ローカライズチームが Firefox OS と Firefox OS アプリのローカライズをテストするのに役立ちます。
-
- -

エミュレータ内で B2G を実行する

- -

この方法はシミュレータ (Firefox OS システムの高めのレベルのみを複製しています) と、実際の端末 (全エクスペリエンスを得られます) の中間にあります。シミュレータと比較して、エミュレータ は ARM ベースのシステム (x86 エミュレータは廃止予定) を実行し、これは電話機のエクスペリエンスのほぼすべて(ネットワーク/ラジオのイベントのいくつかを除き)を複製しています。

- -

モバイル端末上で B2G を実行する

- -

B2G や Gaia の開発成果や Web アプリを最も完璧にテストする方法は、実際のモバイル端末にビルドした Firefox OS をインストールすることです。これは最も面倒な作業でもあります。

- -

長所

- - - -

短所

- - - -

モバイル端末で B2G を実行する理由

- -

これは、明らかに、B2G もしくは Gaia 上で、コードや Web プロジェクトのテストをする最も正確なやり方です。実際のモバイルハードウェア上で実行することで、プロジェクトがきちんと実行されるか、きれいに見えるか、全ての端末 API が正しく使用されているかを、確認することができます。付け加えるなら、どんなコードでもリリースする前には、常に実際のハードウェアでテストすべきです。これを行わないと、どんなまずい影響が起こる可能性があるのか予測するのは困難です。

diff --git a/files/ja/archive/b2g_os/customization_with_the_.userconfig_file/index.html b/files/ja/archive/b2g_os/customization_with_the_.userconfig_file/index.html deleted file mode 100644 index f1195cb381..0000000000 --- a/files/ja/archive/b2g_os/customization_with_the_.userconfig_file/index.html +++ /dev/null @@ -1,255 +0,0 @@ ---- -title: .userconfig ファイルでビルドをカスタマイズする -slug: Archive/B2G_OS/Customization_with_the_.userconfig_file -tags: - - Firefox OS - - build - - userconfig - - ビルド -translation_of: Archive/B2G_OS/Customization_with_the_.userconfig_file ---- -

-

B2G ソースの .userconfig ファイルに bash コードを記入することで、ビルドプロセスのある面をカスタマイズできます。この記事では、変更により達成できることと、その方法について見ていきます。

-
- -

.userconfig ファイルは、ソースコード管理下に入らないので、ソースツリーを更新しても上書きされることはありません。これは、B2G ツリーのルート に作成する必要があります。つまり、flash.shbuild.sh などと同一のディレクトリに置きます。このファイルは、config やビルドを始める前に追加しておく必要があります。

- -

.userconfig ファイルは、(存在する場合) load-config.sh スクリプトから実行され、このスクリプトは以下のスクリプトから実行されます: setup.sh から呼び出される flash.shbuild.shrun-gdb.shrun-emulator.shtools/mach_b2g_bootstrap.pyrun-*.sh スクリプトは、ビルドする Gecko の場所を決めるのに .userconfig を使います。mach_b2g_boostrap.py スクリプトは、すべての B2G に関連する mach コマンドによって使われます。

- -
-

重要: .userconfig ファイルは、ホームディレクトリではなく、B2G ソースディレクトリのルートに置いてください。

-
- -

Gecko のソースツリーを変更する

- -

デフォルトでは、github のツリーからクローンされた gecko ツリーがビルドに使用されます。mozilla-inbound、または mozilla-central を使用したい人もいるでしょう。これを行うにはソースの複製を好きな場所に作っておいてから、.userconfig ファイルに GECKO_PATH を設定する行を追加します。例えば:

- -
export B2G_DIR=${B2G_DIR:-$(cd $(dirname $0); pwd)}
-echo "B2G_DIR = ${B2G_DIR}"
-
-export GECKO_PATH=${B2G_DIR}/mozilla-inbound
-echo "GECKO_PATH = ${GECKO_PATH}"
-
- -
-

注記: カスタムされた Gecko を Mac OS X でビルドする場合、mozilla-central のディレクトリは大文字小文字を区別するファイルシステムである必要があります。そうでないと GECKO_PATH が無視されます。ファイルシステムが大文字小文字を区別するかどうかをチェックするには、ターミナルウィンドウで次のコマンドを実行します:

- -
echo -n This file system is case->tmp; echo -n in>>TMP; echo sensitive>>tmp; cat tmp
- -

B2G_DIR を上記のように取得しておくと、.userconfig でハードコードされたパスを扱わなくて済みます。

-
- -

Gaia の設定を変更する

- -

時には、Gaia の設定を変更できるようにしたいことがあるでしょう。例えば、ユーザビルドで adb を有効にするなど。gaia の Makefile は、build/settings.py の呼び出し時に --override build/custom-settings.json のパラメータを渡すので、custom-settings.json ファイルに {"devtools.debugger.remote-enabled": true} を書き込む bash を書くことができます。ここでは、custom-settings.json の変更は、必要でない限り避けるようにします。実際は custom-settings.json.new に書いておき、内容が custom-settings.jsonと異なる場合に置き換えます。

- -
export GAIA_PATH=${GAIA_PATH:-$(cd gaia; pwd)}
-export CUSTOM_SETTINGS="${GAIA_PATH}/build/config/custom-settings.json"
-cat > "${CUSTOM_SETTINGS}.new" <<eof {"devtools.debugger.remote-enabled":="" true}="" eof="" if="" [[="" -f="" ${custom_settings}="" ]]="" &&="" cmp="" "${custom_settings}"="" "${custom_settings}.new"="">& /dev/null; then
-  rm "${CUSTOM_SETTINGS}.new"
-else
-  mv "${CUSTOM_SETTINGS}.new" "${CUSTOM_SETTINGS}"
-fi
-
- -

もう一つの簡単な方法は、Gaia 作業ディレクトリ内の build/config/custom-prefs.js ファイルを設定することです。これは、B2G ディレクトリ内にいる場合、gaia/build/config/custom-prefs.js となります。Gaia Build System Primer, Customizing the preferences を参照してください。

- -
-

注記: 現在のビルドは GAIA_PATH を起点とする異なるディレクトリを見るほどスマートではありません。GECKO_PATH の動作とは異なります。Gaia の別々のクローンを使用したいときは、そのフォルダから 手動で make を実行 してください。

-
- -

異なる種類のビルドを作成する

- -

.userconfig に様々なオプションをセットすることで、makeコマンドを実行しながら、自動的に異なる種類のGaiaビルドを作成できます ―― この章ではいくつかの異なるオプションを扱います。

- -
-

注記: ビルド時の make コマンドに異なるオプションを付けることで、ビルド中に動的に多数の異なるビルドオプションをセットできます。完全なリファレンスは、make オプションのリファレンス のを参照してください。

-
- -

製品ビルドや開発ビルドを作成する

- -

別の製品ビルド (ユーザに届ける最終のアプリのビルド) や、開発ビルド (付加的なテストアプリやその他のエンジニアリング機能を含むビルド) を作成するには、次の行を .userconfigに追加してください:

- -
PRODUCTION=1
- -

これで勝手に製品ビルドが作成されます。これは、production make オプションをセットすることで、オンザフライに実現することもできます。

- -

あるいは、エンジニアリング機能の様々なレベルを設定するヴァリアントもあります。

- -
VARIANT=user
-
-VARIANT=userdebug
-
-VARIANT=eng
- -

これらのヴァリアントの違いは次の通りです:

- - - -
-

注記: user と userdebug は両方とも、ローカルで実機/エミュレータ用にビルドする場合、暗黙的に PRODUCTION=1 が設定されます。

-
- -
-

補足: make production は、ユーザ版の Gaia をビルドして端末に焼く確かな方法です。VARIANT は、Gaia の Nightly や B2G デスクトップ用にビルドする時に指定します。

-
- -

デバッグビルドを作成する

- -

デバッグビルドを作るには、.userconfig ファイルに次の行を追加します:

- -
export B2G_DEBUG=1
- -

これは、ビルド時に DEBUG=1 make オプションを含めることでも、オンザフライに実現できます。

- -

プロファイリング用ビルドを作成する

- -

プロファイリングを有効にする (組み込みの (SPS) プラットフォームプロファイラで最良の結果を得るため) には、.userconfig ファイルに次の行を追加して再ビルドします:

- -
export B2G_PROFILING=1
- -
-

重要: B2G_NOOPT と同時に設定してはいけません。これは意味のない結果になります!

-
- -

最適化を無効にする

- -

オプティマイザ (デバッグを容易にするビルドの作成) を無効にするには、.userconfig ファイルに次の行を追加して再ビルドします:

- -
export B2G_NOOPT=1
- -

はじめてガイド (FTU) を無効にする

- -

ビルドとリフレッシュを何度も行う場合、FTU アプリが毎回起動する鬱陶しいかもしれません。.userconfig ファイルに次の行を追加することで、これを無効にできます:

- -
export NOFTU=1
- -

これは、ビルド時に NOFTU=1 make オプションを含めることで、オンザフライに実現できます。

- -

アップデータと更新ツールをビルドする

- -

デフォルトでは、アップデータと更新ツールは userdebuguser ビルドでのみビルドされます。

- -

アップデータと関連ツールを強制的にビルドするには、.userconfig ファイルに次の行を追加してください:

- -
export B2G_UPDATER=1
- -

Gaia 開発者モードを有効にする

- -

アプリの開発や gaia をハックする計画がある場合、様々な役立つ設定を自動的にセットして、端末で用意に作業できます。例えば、自動的にリモートデバッグ機能を有効にし、デバッグ接続開始時にプロンプトを無効にすることができます。

- -

必要な設定は、.userconfig ファイルに次の export 文を追加するだけです:

- -
export DEVICE_DEBUG=1
- -

Valgrind を有効にする

- -

Valgrind は、アプリのメモリやスレッドの問題をデバッグするのに役立つデバッグツールです。Valgrind を実行するための詳細情報は、Debugging B2G using valgrind を参照してください。

- -

B2G 下で Valgrind を使用するには、.userconfig に次の export 文を追加します:

- -
export B2G_VALGRIND=1
- -

既定のホストコンパイラの変更方法

- -

GCC 4.7 以降を既定のコンパイラとして使用する最近のディストリビューションでは、ビルド可能にするため、選んだプラットフォームに応じて古いバージョンを指定する必要があります。そうするには .userconfig ファイルに次の 2 行を追加します。CCCXX 変数を、別の C と C++ コンパイラを使うように設定します。例えば Ubuntu 12.10 で GCC 4.6 を使うには次のようにします:

- -
export CC=gcc-4.6
-export CXX=g++-4.6
-
- -

または、ソースからビルドしたバージョンを使っている場合、実行ファイルへのフルパスを記述します:

- -
export CC=/opt/gcc-4.6.4/bin/gcc
-export CXX=/opt/gcc-4.6.4/bin/g++
-
- -

独自の Gecko オブジェクトツリーの場所を指定する

- -

gecko ソースツリーとその他のビルドオプションを一旦変更した場合、オブジェクトが格納される場所も変更したくなるでしょう (つまり、例えば全てのデバッグ用オブジェクトを非デバッグ用オブジェクトのツリーと別にするなど)。次のようにします:

- -
export GECKO_OBJDIR=${GECKO_PATH}/objdir-gonk-debug
-
- -

${GECKO_PATH} を使うと、異なる gecko ツリー (例: central, beta, aurora など) を切り替えるのが楽になります。

- -

デバッグオブジェクトと非デバッグオブジェクトの両方を保持する

- -

.userconfig ファイルを使用して、デバッグビルドとリリースビルドを、毎回全部ビルドすることなく切り替えることができます。

- -
export B2G_DIR=${B2G_DIR:-$(cd $(dirname $0); pwd)}
-echo "B2G_DIR = ${B2G_DIR}"
-
-export GECKO_PATH=${B2G_DIR}/mozilla-inbound
-echo "GECKO_PATH = ${GECKO_PATH}"
-
-export B2G_DEBUG=1
-echo "B2G_DEBUG = ${B2G_DEBUG}"
-
-export GECKO_OBJDIR=${GECKO_PATH}/objdir-gonk
-if [[ "${B2G_DEBUG}" != "0" ]]; then
-  export GECKO_OBJDIR=${GECKO_OBJDIR}-debug
-fi
-if [[ "${GECKO_PATH/*mozilla-inbound*/mozilla-inbound}" == "mozilla-inbound" ]]; then
-  export GECKO_OBJDIR=${GECKO_OBJDIR}-m-i
-fi
-echo "GECKO_OBJDIR = ${GECKO_OBJDIR}"
- -

echo コマンドは、現在の設定を表示します。デバッグビルドとリリースビルドを切り替えるには、7 行目の B2G_DEBUG の値を変更するだけです。

diff --git a/files/ja/archive/b2g_os/debugging/connecting_a_firefox_os_device_to_the_desktop/index.html b/files/ja/archive/b2g_os/debugging/connecting_a_firefox_os_device_to_the_desktop/index.html deleted file mode 100644 index 69de6298e1..0000000000 --- a/files/ja/archive/b2g_os/debugging/connecting_a_firefox_os_device_to_the_desktop/index.html +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Firefox OS端末をコンピュータに接続する -slug: Archive/B2G_OS/Debugging/Connecting_a_Firefox_OS_device_to_the_desktop -tags: - - ADB - - Firefox OS -translation_of: Archive/B2G_OS/Debugging/Connecting_a_Firefox_OS_device_to_the_desktop ---- -
-

このガイドではコンピュータとFirefox OS端末とをUSBで接続する方法を説明します。

-
-
-

: 単にFirefox OS端末上でアプリをデバッグしたい場合で、Firefox OS 1.2以降を実行しているなら、WebIDE の使用がベストな選択です。Firefox OSバージョンが 1.2未満の場合、Setting up to debug on Firefox OS using Firefox developer toolsを読んで標準的なリモートデバッグの使用について学んで下さい。

-
-

端末をセットアップする

-

Firefox OS端末上で (see the layout):

-
    -
  1. Settingsアプリを開いて、Device Information > More Information > Developer
  2. -
  3. developerメニューで"Remote debugging"をチェックする
  4. -
-

コンピュータをセットアップする

-

端末をコンピュータに接続するため、Android Debug Bridge (adb) のインストールが必要です。ADB Helperアドオン (WebIDE と一緒に使用) はadbをバンドルしているのを気に留めて下さい。

-

コンピュータをセットアップするための指示はOSに固有であり、Android開発者サイトの"Setting up a Device for Development"に3つのポイントとして詳解されています。追加の指示を下記に記載します。

-

Mac OS X用の特別な指示

-

Mac OS Xを実行している場合、 adt-bundle-mac-x86_64-20130522 のような名前のパッケージをダウンロードしています。そのフォルダを"アプリケーション"フォルダに置き、/Applications/adt-bundle-mac-x86_64-20130522/ のようにします。ここには2つのディレクトリがあります: eclipsesdk です。 ~/.bashrc を編集し、下記を追加します:

-
export PATH="/Applications/adt-bundle-mac-x86_64-20130522/sdk/platform-tools:$PATH"
-

(次回シェルを起動した時に準備できているでしょう。) シェルのCLI上でこのようにタイプできます:

-
adb devices
-
-

下記のように接続された端末のリストが返ってきます:

-
List of devices attached
-AA:BB:A5:B5:AA:BB    device
-

Linux用の特別な指示

-

Linuxを使っているなら、Firefox OS Geeksphone 端末に使われるベンダーIDは 05c6で、このため /etc/udev/rules.d/51-android.rules ファイルに下記と同様なエントリを含むべきです:

-
SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev"
-

Windows用の特別な指示

-

Geeksphone 用のWindowsドライバは Geeksphone website からダウンロードできます。

-

Windows 8 はデフォルトで署名のないドライバをインストールできません。 "How to install an unsigned driver on Windows 8"のチュートリアルを見て下さい。

-

Windows XP Home Edition には tasklist.exe が入っていないため、Simulator は端末を発見しません。 ComputerHope website からそのファイルをダウンロードして、Windows\System32 フォルダに置くことで解決できます。

-

セットアップを確認する

-

これらの指示に従ったら、端末をUSBケーブルでコンピュータに接続し、コマンドプロンプトを開いて"adb devices" (adb にpathが通ってるのを確認する) とタイプします。 Firefox OS端末が出力の中に載っているのが見えるでしょう。

diff --git a/files/ja/archive/b2g_os/debugging/debugging_b2g_using_valgrind/index.html b/files/ja/archive/b2g_os/debugging/debugging_b2g_using_valgrind/index.html deleted file mode 100644 index 148eb95cb6..0000000000 --- a/files/ja/archive/b2g_os/debugging/debugging_b2g_using_valgrind/index.html +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: Valgrindを使用してデバッグする -slug: Archive/B2G_OS/Debugging/Debugging_B2G_using_valgrind -tags: - - B2G - - Firefox OS - - valgrind -translation_of: Archive/B2G_OS/Debugging/Debugging_B2G_using_valgrind ---- -

S

- -
-

ValgrindDSS により開発者はメモリアロケーションや、スレッド/プロセスや、その他プログラムのパフォーマンスについての情報にアクセスできます。これはFirefox OS ツリーに含まれていて、適切なリソースのある特定の電話機で実行できます。この記事では使用方法を説明します。

-
- -

必要条件

- -

Firefox OSでValgrindを実行する前に、開発者はDebugging Mozilla with ValgrindDSDDSDDSGの記事を読んで慣れておく事が推奨されます。ビルドとコマンドラインのステップの多くがFirefox OSのビルド、実行スクリプトで考慮されていますが、その中の情報の大半はFirefox OSで実行する事に関連しています。

- -

電話機の Firefox OS で Valgrind を実行するには、通常スペックよりも高めの電話機が必要です。Valgrindはリソースに敏感で、RAMが1GB未満の電話機では、一般に低メモリエラーを起こします。これを書いている時点 (2013-12-04) で、Valgrind は2GBのRAMのNexus 4で Firefox OS の動作テストをされています、しかしGeeksphone Keonや同様スペックの電話機で動作するでしょう。利用できる電話機の詳細については Phone and device data を見て下さい。

- -

FxOS電話機でValgrindを実行する

- -

Valgrindを実行する処理を見ていきましょう。

- -

コンパイルする

- -

Valgrind を有効にして Firefox OS をビルドするには、下記を.userconfig ファイルに追加します。

- -
export B2G_VALGRIND=1 
- -

デバッグビルド (B2G_DEBUG) も推奨です。最適化なしビルド (B2G_NOOPT) は使用できないくらい遅く実行し、最適化がエラーを分かりにくくしていると考えられる場合を除き推奨されません。

- -

実行する

- -
-

記: Firefox OS電話機でValgrindを実行する事は、ホストOSではなく、電話機のコンテキストで行われます。これが意味する所は、開発者はadbが利用できるあらゆるプラットフォームを使用できて、電話機でValgrindを実行するには run-valgrind.sh スクリプトを使用します。

-
- -

Valgrindの元に Firefox OS を実行するには、B2Gディレクトリから run-valgrind.sh スクリプトを実行します。このスクリプトは下記を行います:

- -
    -
  1. 電話機のファイルシステムを r/w として再マウントします。
  2. -
  3. 現在のデバッグ libxul.so を全シンボル付きで電話機にコピーします。このファイルは数百MBあるため、このステップ完了まで多数の時間がかかることがあります。新しくビルドされるごとに毎回再実行される必要があります。valgrind を libxul コピーせずに実行するには、このコマンドを実行します: -
    run-valgrind.sh nocopy
    -
  4. -
  5. 電話機を再起動します。
  6. -
  7. 電話が起動する時に開始する b2g プロセスを停止します。
  8. -
  9. valgrindの元に、自身の b2g プロセスを実行します。
  10. -
- -

run-valgrind.sh スクリプトを実行している時の全 valgrind 出力は、ターミナルの標準出力へ書き出されます。これはターミナルかファイルへのパイプいずれでも読み込みできます。

- -
-

: run-valgrind.sh スクリプトはb2g プロセスを実行する、自身のadbプロセスを保有するため、このスクリプトを停止すると電話機のb2gとvalgrindも停止します。おかしな状態になることがあるため、valgrindセッション実行後に電話機を再起動することが推奨されます。

-
- -

デスクトップ版Firefox OSでValgrindを実行する

- -

Running valgrind against デスクトップ版Firefox OSに対してvalgrindを実行するのは、デスクトップ版Firefoxに対して実行するのと同じ方法動作します。詳細情報はValgrindを使ってMozillaをデバッグするDDSのページを調べて下さい。関連したビルドフラグが mozconfigに追加され、このページにあるプラットフォーム特有の問題が適用できるでしょう。

- -

注意する点として、デスクトップで Valgrind を OOP/process-per-tab モードで実行するには、確実に子プロセスもトレースできるように、下記のオプション追加が必要です:

- -
--trace-children=yes
- -

Firefox OS Valgrindをメンテ、更新する

- -

適用できるパッチが上げられた時、Firefox OS 用のValgrindはフォークされたリポジトリでメンテされて、Firefox OSのビルドツリーやバージョンの奇抜さへの対処もしつつ、なるべく最新状態を保ちます。

- -

Valgrindリポジトリの更新

- -
-

警告: GITの経験が必要です。複雑なGit操作に慣れていない場合は、valgrindリポジトリを更新しないでください。githubリポジトリへのあらゆる更新はgit.mozilla.org に反映され、次に開発者がマニフェストリポジトリのHEADを使って取得してしまうでしょう。Valgrindを壊してもValgrindを有効にしていないビルド(例 ビルドボット自動化)は壊れず、これを使ってみようとする開発者の邪魔になります。

-
- -

Firefox OS valgrind と VEX の主なリポジトリはここです

- - - -

マスターブランチはこれらのリポジトリの各SVN トランクの初期バージョンで、一方 Firefox OS ブランチはトランクの最上位にrebaseされたFirefox OS固有のパッチを含んでいます。

- -
-

記: 必ず両方のリポジトリを同時に更新して下さい。これらは2つの別のリポジトリですが、VEX は通常 Valgrind のサブモジュールで、valgrind のHEADは通常 VEX のHEAD を指しています。

-
- -

これらはB2Gマニフェストで使うために、the git.mozilla.org ドメイン上に複製されます:

- - - -
    -
  1. 主なリポジトリはgit svnを使ってvalgrind SVNと同期されます。リポジトリの更新を取得するには、github から valgrind と vex のリポジトリを複製してから、次を実行します: -
    git svn init -s [subversion repo url]
    -
    -
  2. -
  3. SVN情報の取得は時間がかかりますが、完了した時、あなたのツリーは主な Valgrind SVN と同期されているはずです。
  4. -
  5. 更なる更新を取得するには、次の一連コマンドを使います: -
    git checkout master
    -git svn fetch
    -git svn rebase
    -git push [github-remote-name] master
    -git checkout fxos
    -git rebase master
    -
    -
  6. -
  7. Firefox OSのブランチを rebase するステップでパッチの衝突がある可能性があります。 問題に対処できない場合、衝突したコミットの作者にeメールして下さい。
  8. -
  9. rebase の後に、B2G_VALGRIND フラグ付きでFirefox OS のフルビルドを行い、穏やかなビルドであることを確かめます。最もよく必要になる修正は、下記のスクリプト節にリスト化しています。
  10. -
  11. いったんFirefox OSツリーのビルドの rebase とテスト が完了したら、headの変更により、Firefox OS ブランチを強制的にプッシュしないといけなくなるでしょう。 -
    git push -f [github-remote-name] fxos
    -
  12. -
- -

スクリプトをビルド、インストール、実行する

- -

Valgrind Firefox OS ブランチや、リポジトリ取得後に更新が必要なB2Gリポジトリの一部である複数のスクリプトがあります。

- -

external/valgrind/android.mk

- -

これは Android のビルドシステムスクリプトです。しばしば、Valgrind ツリーにファイル追加/削除されることにより、ここに変更が必要となります。-j1 ビルドを使ってどのターゲットがビルドに失敗するかを見て、もしファイルを見つけられなかったり存在しないファイルを参照している場合、プロジェクトのファイルリストを更新します。

- -

external/valgrind/valgrind.mk

- -

これはビルドされて FxOS のシステムイメージに追加される必要のあるパッケージリストを含んでいて、このリストは gonk-misc/b2g.mk に参照されます。Valgrind が新規パッケージを追加するのはまれなため、これは通常更新の必要ありますせん、しかし必要な場合、ここに置きます。

- -

run-valgrind.sh

- -

電話機で Valgrind を実行するためのスクリプト。電話機で Valgrind を実行するのに必要な新規のコマンドライン引数がある場合、ここに置きます。これはデバッグシンボル付きのライブラリをコピーする場所で、よってそのプロセスのあらゆる調整・変更はここで起こるべきです。

diff --git a/files/ja/archive/b2g_os/debugging/debugging_ooms/index.html b/files/ja/archive/b2g_os/debugging/debugging_ooms/index.html deleted file mode 100644 index 9bd7382ee7..0000000000 --- a/files/ja/archive/b2g_os/debugging/debugging_ooms/index.html +++ /dev/null @@ -1,102 +0,0 @@ ---- -title: Firefox OSの低メモリエラーをデバッグする -slug: Archive/B2G_OS/Debugging/Debugging_OOMs -translation_of: Archive/B2G_OS/Debugging/Debugging_OOMs ---- -
-

Firefox OS 端末でメモリ不足となった時、低メモリキラーや低メモリ通知が、プロセスを停止してOSの実行を続けるために動作します。カーネルがフォアグランドプロセスを停止する時、使用中のアプリは明らかにクラッシュします。この記事ではOOM(out of memory; 低メモリ) クラッシュを理解、デバックする方法を説明します。

-
- -
-

: Firefox OSで低メモリ状況がどう管理されているかについてまだ知らない場合、この文書を続ける前に Firefox OSの低メモリ管理 を読むことを推めます。

-
- -

OOMクラッシュをデバッグする

- -

電話機がメモリ不足により起こると疑われる、再現できるクラッシュをするとします。下記の対策を取ると、何が悪いかをもっと理解できます。

- -

ステップ1: それが実際にOOMかどうか検証する

- -

まず、実際クラッシュが電話機がメモリ不足で動作しているためかどうか確認する必要があります。そうするには、 adb shell dmesg を実行します。アプリがOOMのために停止している場合、下記のような反応を見ることができるでしょう:

- -
<4>[06-18 07:40:25.291] [2897: Notes+]send sigkill to 2897 (Notes+), adj 2, size 30625
- -

この行は、電話機の低メモリキラーがNotes+ アプリ(process id 2897)を、停止時に oom_adj 2 が起きたために強制停止したことを示しています。ここで報告されるサイズは各 4kb のページサイズです。よってこの場合、Notes+ アプリは 30625 * 4kb = 120mb のメモリを使用しています。

- -

脱線: OOMでない

- -

dmesg 出力にこうした行が見えない場合、クラッシュは OOM でないことが見込まれます。そんなクラッシュをデバッグする次の手は、gdb にクラッシュプロセスをアタッチして、下記のようにバックトレースを得ることです:

- -
$ cd path/to/B2G/checkout
-$ adb shell b2g-ps
-# Note pid of the app that you're going to crash
-$ ./run-gdb.sh attach <pid>
-(gdb) continue
-# crash the app
-(gdb) bt
- -

バグ報告時に、adb logcatの出力と一緒に、この出力を添付します。クラッシュが OOM のせいであればgdb backtrace は多分興味深くないもので、なぜなら OOM クラッシュは、プロセスが実行する悪いコードをのせいでなく、カーネルから送られるシグナルによって引き起こされるからです。

- -

ステップ2: メモリレポートを集める

- -

クラッシュが実際に OOM によるものだと検証した後、次のステップはアプリがクラッシュする前に電話機のメモリレポートを集める事です。メモリレポートはどこでメモリが使われているかを理解するのに役立ちます。このステップは、一旦アプリがクラッシュすると、そのプロセスからメモリレポートを集める方法がないため、少し扱いにくいです。またカーネルがプロセスを強制停止しようとする時にはメモリレポートを起動させる方法もないです — その時には、遅すぎます。

- -

電話機からメモリレポートを取得するには、まずビルドツリーを更新して、関連ツールの最新版を入手します。repo sync は十分ではありません; git fetch && git merge または git pullが必要です:

- -
$ cd path/to/B2G/checkout
-$ git fetch origin
-$ git merge --ff-only origin
- -

今やメモリレポートツールをこのように実行できます:

- -
$ tools/get_about_memory.py
- -

幸運にもメモリレポートを手に入れた時、ディレクトリを(about-memory-N と名づけた)zipにまとめて関連するバグに添付します。しかしまたもや、これはアプリがまだ生きていて大量のメモリを使っている時にコマンドを実行した場合のみに有用です。いくつかのオプションがあります。

- -

ステップ2, オプション1: 他の端末を入手する

- -

しばしば最も簡単な事は、もっと多くのRAMを持つ端末を入手する事です。上記ステップ 1ではプロセスがクラッシュする時にいかに大量のメモリを使うかが分かったでしょう、なので単にプロセスがそれだけの量のメモリを使うのを待って、メモリレポートを取ります。 b2g-info ツールは様々なB2Gプロセスがいかにメモリを使っているかを示します。 下記のようにする事で、ループ内でこのツールを実行できます:

- -
$ adb shell 'while true; do b2g-info; sleep 1; done'
- -

あなたの端末で b2g-info が利用できない場合、b2g-procrank を代用できます。

- -

ステップ2, オプション2: Fastest finger

- -

よりたくさんのRAMのある端末にアクセス出来ない場合、アプリがクラッシュする直前に get_about_memory.py を試行できます。またもや、 b2g-info をループ内で実行できて(前節に示した通り)、 いつ run get_about_memory.py を実行するかを理解できます。メモリレポートを実行するとしばらく電話機の全プロセスが停止し、よってあるプロセス自身がOOMを起こす前にメモリレポートを捉えるのはしばしば難しくありません。

- -

ステップ2, オプション3: より小さなテストケースを使う

- -

"アプリ内でサイズが X 以上のファイル"を扱う時に、しばしばOOMに遭遇します。

- -

サイズXのテストケースでアプリのクラッシュが速すぎる場合、同様だが小さめ(まぁ、X/2 サイズ)のテストケースを実行して、それが成功してからメモリレポートを取得する事を試せます。この方法で生成されたメモリレポートは、しばしば最終的に考慮するOOMクラッシュへの良い洞察を与えてくれます。

- -

ステップ2, オプション4: デスクトップ版B2Gを実行する

- -

最悪中の最悪の場合、FxOS電話機よりずっと多いRAMを持つ、デスクトップ版B2Gを実行できます。これはデスクトップ機でB2Gを実行するのは電話機でB2Gを実行するのといくつか異なる点があるため、扱いにくいです。

- -

特に、デスクトップ機の B2G はデフォルトでマルチプロセス無効になっています。実際いろいろな場所で 100% 正しく動きません、 しかし Linux と Mac では (Bug 923961, Bug 914584, Bug 891882に従って) 最も正確に動作します。 マルチプロセスなしでデスクトッブでテストできますが、私の経験ではプロセス間通信のコードにより高いメモリ使用の問題が起こり、よって見ているバグを引き起こします。

- -

 B2G デスクトッブプロセスからのメモリレポートを取得も便利という程ではありません。Linuxではシグナル34 をメイン B2G プロセスに送れることができて、それは memory-report-*.gz ファイルを /tmp に出力します。

- -


- B2G デスクトップビルドを使うメリットは、好きなデバッグツール、例えば OSX についているやつを使えることです。We've had a lot of success with this in the past. To collect a memory report using Instruments on OS X, choose "New -> Mac OS X -> Allocations". Start b2g-desktop and you should see multiple "plugin-container" processes in the activity monitor. You will need 2 Instruments activities: 1 to trace the allocations on the main b2g process and another to trace the allocations on the app you wish to analyze. Attach the instrument activities and execute your test case.

- -

To analyze how much memory your app is using, analyze call trees. Check the "Invert Call Tree" tick, and sort by bytes used. This will show you which part of your app is using lots of memory. Below is a screenshot of a sample analysis of memory usage for an app:

- -

Screen shot of instruments.
-
- For more information on setting up B2G desktop builds, read our Hacking Gaia page.

- -

ステップ3: メモリレポートを解析する

- -

When you run get_about_memory.py, it will open a memory report in Firefox.  This file contains information about the memory usage of all processes on the system. Reading these reports can be a bit overwhelming at first, but it's not so bad once you get the hang of it.  Note that you can hover over any leaf node to get a description of what that node describes. What you're looking for is something "unusually large" in the crashing process.  You can get an idea of what "unusually large" means by capturing a memory report of your app when it's not using a ton of memory and comparing that to the errant memory report.

- -

Reading memory reports takes some practice, so feel free to ask for help.  The experts on this subject hang out in #memshrink on IRC.

- -

ステップ4: 必要に応じ、DMD付きでリビルドする

- -

One common line item to stick out in memory reports captured before apps crash is heap-unclassifiedheap-unclassified counts memory allocated by the process that isn't covered by any other memory reporter.  If you have high heap-unclassified, the memory report can't tell you anything else about what that memory belongs to. Our tool for digging into heap-unclassified is called DMD.  This works on B2G, but you must build B2G yourself in order for it to work because DMD requires local symbols that are only kept on the build machine.

- -

To find out more information on running DMD and interpreting its output, read the DMD documentation.
-  

diff --git a/files/ja/archive/b2g_os/debugging/developer_settings/index.html b/files/ja/archive/b2g_os/debugging/developer_settings/index.html deleted file mode 100644 index f2da0bac9c..0000000000 --- a/files/ja/archive/b2g_os/debugging/developer_settings/index.html +++ /dev/null @@ -1,388 +0,0 @@ ---- -title: Firefox OS用の開発者設定 -slug: Archive/B2G_OS/Debugging/Developer_settings -tags: - - B2G - - Debugging - - Firefox OS -translation_of: Archive/B2G_OS/Debugging/Developer_settings ---- -
-

開発パネル内のFirefox OS設定(Setting)アプリについて。このパネルFirefox OS上であなたのオープンウェブアプリのデバッグをより簡単にします。この記事では使用できるオプションと使用方法を網羅します。

-
- -

この開発オプションの設定パネルは、わざと深く埋められています。
- それは、このオプションが不要なエンドユーザーが、不注意で有効にして、端末の動作が遅くなったり、画面に変なエフェクトがかかってしまうのを防ぐためです。パネルは下記のようなものです。(下記はGeeksphone Keonで2014年4月のFirefox OS 2.0ビルドで、別バージョンを実行している場合、異なることもあります。):

- -

- -

開発者パネルには、下記の方法でたどり着きます:

- - - -

下記の節は、開発者パネルの各オプションについて網羅し、それが何をして何に役立つかを説明します。

- -
-

重要: このツールは役立ちますが、通常使用ではバグを起こします。バグを起こすと分かっている機能はデフォルトで無効になっています。問題を経験している時は、有効にしていた開発機能の無効化を試して下さい。

-
- -

開発ツールの設定

- -

USB経由のデバッグ

- -

"Remote debugging"オプションでFirefox OS端末のリモートデバッグ のサポートが有効になります。合わせてADBコマンドも使用できるようになります。Firefox 1.4より前では単一のチェックボックスでしたが、Firefox 1.4ではセレクトポックスで3つのオプションを選択できます:

- - - -

Developer HUD

- -

Firefox OS 1.4以降では、このセクションをタップすると、開発者 HUD セクションが見えるようになります。

- -

- -

上2つの (常に有効な) チェックボックスは:

- - - -

次に、開発者オプション('Developer Tools')を有効化/無効化するのに使うスライダーがあり、その次に有効化/無効化するチェックボックスがいくつかあります:

- - - -

Frames per second(秒間のフレーム)

- -

このオプションを有効化すると Firefox OS ディスプレイの左上に3つの数字が報告されます; つまり報告される値はスライドしたwindowの最近の平均した結果で、"瞬間的" だがかなり正確です。同様に全ての数字は "推測値" です:

- - - -

A screenshot of Firefox OS, showing three numbers in the top left hand corner that are measurements of app framerate.

- -

Time to load(ロード時間)

- -

Firefox OS には起動時間、特に "初回描画" 時間を計るツールもあります。ツールにより(Firefox OSディスプレイの右上に)表示される値は最も最近アプリが起動された時からの経過時間と、アプリがUIを描画してからの見積もり時間(ミリ秒)です。こり数字は実際の"初回描画" 時間"を概算しただけで、とりわけ低く見積もられます。しかしながら、この数字を低くするのは、実際の起動時間を改善するのとほぼ常に相関しており、なので最適化のアイデアを簡単に計測するのに役立ちます。

- -

A screenshot of Firefox OS, showing a number in the top right hand corner that is a measurement of the current app startup time, in milliseconds.

- -

App memory(アプリのメモリ)

- -

アプリがどれくらいのメモリを使っているかを表示し、今のアプリのどの項目でたくさん使っているかを表示する様々な項目を有効化/無効化します。例えば、下記のスクリーンショットではApp memory(アプリメモリ)JS objects(JSオブジェクト) だけがチェックされていて、右下の指示はSetting(設定)アプリがJSオブジェクト用に 414.77KB 使っているのを表示します。

- -

- -

疑似的ローカライズ

- -

有効にした時、アクセントをつけられた英語と、鏡で反転された英語のような疑似原語をSettings > Languagesで選択できるようになります。擬似的ローカライズで、言語リソースの追加や、外国語を話したりできなくても、通常のGaiaビルドでローカライズ性をテストできます。例えば、長い文字でもレイアウトがスケールするか確かめたり、右から左の仮言語のプレビューをしたり、data-l10n-id 属性 (通常の英語の中に表示されます)のないHTML要素を置いたりできます。

- -

Screenshot of pseudolocales

- -

擬似的ローカリゼーションをデフォルトでつけるには、ガイアをビルドする時に gaia/build/config/common-settings.json の中に下記の行を追加します:

- -
 "devtools.qps.enabled": true
-
- -
-

記: 擬似的ローカリゼーションは、アプリが起動するたびに、完全に動的に生成されます。パフォーマンスとメモリ特性は通常のローカリゼーションと異なる可能性があります。英語以外の言語の特定のパフォーマンステストをしたい場合は、本物のロケールで複数ロケールGaiaをビルドします。

-
- -

グラフィックの設定

- -

Flash repainted area(再描画エリアの点滅)

- -

このモードでは、画面領域がGeckoによって描画される毎に、Geckoは描画領域の上に、ランダムに半透明な色を転送します。理想的には、フレーム間で見た目が変わった画面の一部分だけが、新しい色で"点滅"します。しかし時々、必要以上の領域が再描画され、大きな領域の"点滅"を引き起こします。この現象はアプリケーションのコードがシーンの更新を強制しすぎているのを示す可能性があります。Gecko自体のバグを示す可能性もあります。

- -

A screenshot of Firefox OS with a number of transparent overlays, showing the parts of the screen repainted with each new animation frame.

- -

 

- -

Overscrolling(過度のスクロール)

- -

これは Firefox 2.1+ で、スクロールがページの終わりを過ぎた時にしなやかな作法でディスプレイを広げて、次にディスプレイのドラッグを停止した時にまた縮める動作をオンオフします。この振る舞いのフルネームは elastic overscroll(しなやかな過度のスクロール)です。

- -

Tiling (以前は Layers: Enable tiles)(タイリング)

- -

Firefox OS 1.4で導入され、この機能はコンテンツをスクリーンに描画するのに、スクリーン全体を一度に描かずに、より小さな塊(タイル)毎に描くのを有効化します。これは主にプラットフォームQAがチェッカーボードを削減したり、退行ウィンドウを発見したりする時に役立ちます。

- -

Low-precision painting(正確度の低い描画)

- -

このオプションを有効にすると、Gecko はスクロールが実に速い時に、コンテンツを低い正確度で (ぼやけて) 描画します。これは描画が速いために便利で、よってスクロールが速い時に空白領域を描画する (つまり チェッカーボード) のを防ぎます。これは一時的にユーザに見えるだけです; いったんユーザがスクロールを止めると、精密度の低い領域は精密度の高いコンテンツで埋められます。

- -

Low-precision transparency(正確度の低い透過)

- -

これは正確度の低い描画向けの追加フラグで、半分透過した低い正確度のコンテンツができます。これはユーザにとって、より微妙で不快さの少ないものでしょう。

- -

Hardware composer (以前は Enable hardware compositing)

- -

有効にされると、この設定は端末が画面の視覚要素(表面)を構成するのに、Hardware Composerを使用するようにします。

- -

Draw tile borders (以前は Layers: Draw tile borders)(タイル境界の描画)

- -

これは Draw layer borders のオプションとよく似ていて、違いはレイヤーの境界と同様に個々のタイルの境界も描くことです。

- -

Draw layer borders(レイヤー境界の描画)

- -

有効にされると、画面に描かれる全レイヤーの周りに明るい境界が追加されます — レイアウトの問題の解析用に素晴らしいものです。

- -

A screenshot from Firefox OS showing an opened select form with the draw layers borders option enabled, resulting in colored borders being drawn on all the different rendered layers.

- -

Dump layers tree(レイヤーツリーのダンプ)

- -

このオプションでは layers.dumpが有効化されます、これはcompositorのレイヤーツリーを、画面にフレームが構成される毎にlogcatにダンプするようにします; これは、通常のweb開発よりは、主にプラットフォームのグラフィックパフォーマンスが動作するのに便利です。

- -

Dump layerscope(レイヤースコープのダンプ)

- -

有効になると、この設定は端末からのレイヤースコープをダンプ出力するのを可能にします、その結果デスクトップでインストールされたアプリのレイヤー情報を見られます。この機能の使用方法のより詳細は Mozilla Wikiのレイヤースコープ を見て下さい。

- -

Cards View: Screenshots(カードビュー: スクリーンショット)

- -

有効になると、open アプリがカードビューで表示された時、アプリのスクリーンショットが撮られます。無効になると、カードビューの代わりの空白のカードの中央にアプリアイコンが表示されます。

- -

ウィンドウ管理の設定

- -

Software home button(ソフトウェアのホームボタン)

- -

このオプションを有効にした場合、ハードウェアホームボタンと同様な機能を提供するソフトウェアホームボタンが作成されます。これはタブレットのように、ハードウェアホームボタンを持たないであろう将来の端末使用に狙いを向けています。

- -

Home gesture(ホームジェスチャー)

- -

このオプションを有効にした場合、スクリーンの外から中央に向かって上向きにスワイプするとホームスクリーンが表示されます。さらに、ハードウェアホームボタンが利用できない場合は、この機能がハードウェアホームボタンと同じ機能を提供しえます。この機能は将来、タブレットのようなハードウェアホームボタンがないデバイスで使われることが計画されています。

- -

Continuous transition

- -

This setting allows you to decide whether app keyboards open immediately or continuously (with a transition). Disabling such transition effects are useful on low end devices, when they cause performance to suffer.

- -

App transition(アプリのトランザクション)

- -

Turn this on and then off again and you will disable all app closing/opening transitions: all apps will now just show immediately, without the smooth animation, and keyboards will also open/close without animation. Like "Continuous transition enabled", this is meant for improving performance on low end devices, but it has more of an effect.

- -

App suspending(アプリのサスペンド)

- -

If enabled, this specifies that when an app is killed in the background, it will be kept in history and reopened when you open it from homescreen/card view. If disabled, such apps are not kept in history/card view.

- -

デバッグ設定

- -

Log slow animations(遅いアニメをログ出力)

- -

This tool tries to help developers understand why animations are not offloaded to the compositor to be run efficiently as possible. It reports "bugs" like trying to animate elements that are too large, or trying to animate CSS properties that can't be offloaded. The messages you'll get on the device will look like the following:

- -
I/Gecko   ( 5644): Performance warning: Async animation disabled because frame size (1280, 410) is bigger than the viewport (360, 518) [div with id 'views']
-
- -

Geolocation output in ADB(ADBで位置情報を出力する)

- -

Enables logging of geolocation data to adb logcat. This helps with debugging both the GPS stack (namely we get NMEA callback) and MLS use.

- -

Wi-Fi output in adb(adbでWi-Fiを出力する)

- -

Enabling this option adds information about Wi-Fi to the adb logs (error logs from the console can be accessed using adb logcat | grep "Error" in the Terminal.)

- -

Bluetooth output in adb(adbでBluetoothを出力する)

- -

Enabling this option adds information about Bluetooth to the adb logs (error logs from the console can be accessed using adb logcat | grep "Error" in the Terminal.)

- -

NFC output in ADB

- -

Enabling this option adds information about NFC to the adb logs (error logs from the console can be accessed using adb logcat | grep "Error" in the Terminal.)

- -

Console enabled(コンソールの有効化)

- -

When enabled, this option lets you use the Web Console in Firefox to remotely access the console output on the device; without this option enabled, the console.log() function does nothing.

- -

Gaia debug traces(Gaiaのデバッグトレース)

- -

Enabling this directly enables DEBUG traces in Gaia; see バグ 881672 for more details.

- -
-

Note: Unfortunately, not every app supports this mechanism to print their debug log. Instead, they control a "DEBUG" flag in code directly, so enabling this flag does NOT ensure that you'll see all debug logs.

-
- -

Show accessibility settings(アクセシビリティの設定を表示)

- -

This enables the accessibility settings menu, subsequently found at Settings > Accessibility. The options contained within the accessibility settings are as follows:

- -

Screen reader(スクリーンリーダー)

- -

Enabling this option turns on Firefox OS's screen reader. This is technology that allows a blind person to use a Firefox OS device. Currently at a very early stage, it changes the way the standard touch events work. When the screen reader is on, you must interact with the screen as follows:

- - - -
-

Note: If you have turned the screen reader on and wish to disable it again, you must navigate back to the setting via these new gestures and double-tap the checkbox once it is highlighted to turn it off again. That will restore the touch screen functionality to its default behaviour.

-
- -

Note: In Firefox 1.4 and above, there is a quick toggle for the screen reader. Press volume up, then down, three times (up, down, up, down, up, down). The screen reader will instruct you to perform this same action again (volume up, down, up, down, up, down) to turn it on if it is not running, or to turn it off if it is already running. If you do not want to change the current toggle state, simply do something else. That way, you can turn it on and off at will to test your web application for accessibility without having to navigate the accessibility settings menu each time.

- -

Speech volume(読み上げ音量)

- -

A slider that controls how loud the speech is delivered.

- -

Speech rate(読み上げの速さ)

- -

A slider that controls how fast the speech is delivered.

- -

Use Marketplace reviewer certs

- -

TBD

- -

Shake to save system log

- -
-

Note: Introduced in Firefox 2.2

-
- -

Enables Logshake, which polls the phone for high-acceleration movements. Upon detecting such a movement — i.e. when you shake the phone — it logs contents of the system log/logcat to the device's SD card, at logs/<datetime>. See バグ 1019816 for more information.

- -

Verbose app permissions

- -
-

Note: Introduced with Firefox 2.1

-
- -

When this is enabled, developers (and privacy enthusiasts) may modify all permissions granted to installed privileged apps, using The "App Permission" pane in the Settings app. The app sub-pages under here are updated upon enabling the setting to provide a list of each API permission is requested for in the app's manifest file, along with choices to set that permission to. For example, "Schedule Alarms" appears with choices of Ask, Deny and Grant. Note that some apps may be unable to deal with changed permissions. If you experience any odd behavior, consider resetting the permission or re-installing the app.

- -

Launch first time use

- -

The "Launch first time use" button runs the "First-Time Use" (FTU) program; this lets you go through the initial setup and tutorial process, and is useful when trying to debug that process, or if you want to re-configure your device from scratch.

- -

Unlock privileges

- -

Reset and enable full DevTools

- -
-

Note: Introduced in Firefox 2.2

-
- -

This button allows you to enable unrestricted devtools mode where you can debug and override system applications from WebIDE. For security reasons, enabling this mode is going to wipe device data. Note that once this mode is enabled, it is highly suggested to setup a pincode to unlock your device as this features enables easy access to internal data of your system applications (private informations, passwords, ...).

- -

ソフトウェア更新

- -

Update channel(更新チャンネル)

- -

Enables you to specify different update channels to get software updates from when your device receives OTA updates. Options are nightly, aurora ... (others?)

- -

Update URL(更新URL)

- -

Enables you to specify different URLs from which to receive your updates.

- -

古い設定

- -

This section lists settings that are no longer provided, or no longer exist in the same state, but might still be interesting if you are running an older version of Firefox OS.

- -

Accessibility(アクセシビリティ)

- -

In versions of Firefox earlier than newer 1.4 versions, this controls the accessibility settings, as explained in the Show_accessibility_settings section above.

- -

Grid(グリッド)

- -

The "Grid" option, when enabled, causes the Firefox OS display to be overlaid with a grid pattern to help you gauge positioning and alignment of items. For example, below we see the Browser app running with the Grid option enabled:

- -

- -

The grid's heavier lines are 32 pixels apart, both horizontally and vertically.

- -

Show frames per second(秒間のフレームを表示)

- -

In Firefox OS versions older than newer 1.4, enabling this displays frames per second, as explained in the Frames_per_second section above.

- -

Show time to load(ロード時間を表示)

- -

In Firefox OS versions older than newer 1.4, enabling this displays time to load information, as explained in the Time_to_load section above.

- -

Rocketbar enabled(ロケットバー有効)

- -

In Firefox OS versions older than newer 1.4, this option enables the new Firefox Rocketbar on your device, which provides a useful new way to switch between apps, search, and more. When enabled, you'll find a search icon at the top left of the device, and the RocketBar can be brought up by swiping from the top left of the device towards the bottom left.

- -
-

Note: In newer versions of Firefox OS, Rocketbar is enabled automatically and cannot be turned off.

-
- -

Contacts debugging output in adb(adbのデバッグ出力に接触)

- -

Enabling this option adds debugging information about contacts to the adb logs (error logs from the console can be accessed using adb logcat | grep "Error" in the Terminal.)

- -

Progressive paint (以前は Layers: Progressive paint)(進歩的な描画)

- -

This was introduced to help with debugging of the Async Panning/Zoom module (APZ) during its implementation. Now APZ implementation is complete, this option is deprecated, and will be removed from future versions (see バグ 1003228).

- -

Displayport Heuristics

- - - -

These options were introduced to help with debugging of the Async Panning/Zoom module (APZ) during its implementation, specifically to allow QA to experiment with different repainting heuristics to see which resulted in the least amount of checkboarding.. Now APZ implementation is complete, these options are deprecated, and will be removed from future versions (see バグ 1003228).

- -

Enable APZ for all content (Async Pan/Zoom)

- -

When enabled, the Async Pan/Zoom module allows panning and zooming to be performed on asynchronously, on another thread, with some noticeable differences to rendering behaviour. To find out more, read the MozillaWiki APZ article. Now APZ implementation is complete, this option is deprecated, and will be removed from future versions (see バグ 1003228).

- -

Edges gesture()

- -

Enabling this option allows you to swipe left and right from outside the screen towards the center, to navigate to the next and previous sheets (either web pages in the browser, or views inside another app.) This basically works like the browser navigator bar in Firefox, but is enabled by default in Firefox 2.1+.

- -

Keyboard layouts(キーボードレイアウト)

- -

上記の開発者固有オプションに加え、Firefox OS 1.4より前の開発者設定はキーボードレイアウトオプション機能がありました。これらにより実験的な中国語入力のオプションのオンオフ切り替えができます。

- -

- -

Firefox 1.4では、これらのオプションは削除されました。これは中国語キーボードレイアウト実装 (zhuyin と pinyin) が今や完了したためです。

- -
-

: 日本語といった、まだ開発中のキーボードレイアウトのため、オプトインするビルド時の設定があります。

-
- -

 

diff --git a/files/ja/archive/b2g_os/debugging/firefox_os_crash_reporting/index.html b/files/ja/archive/b2g_os/debugging/firefox_os_crash_reporting/index.html deleted file mode 100644 index 5ff8dcca7f..0000000000 --- a/files/ja/archive/b2g_os/debugging/firefox_os_crash_reporting/index.html +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: Firefox OS クラッシュレポート -slug: Archive/B2G_OS/Debugging/Firefox_OS_crash_reporting -tags: - - Debugging - - Firefox OS - - QA - - Testing -translation_of: Archive/B2G_OS/Debugging/Firefox_OS_crash_reporting ---- -
-

このページは Firefox OS でクラッシュレポートを扱う方法を詳解します、それにはクラッシュレポートの取得や、強制クラッシュが含まれます。

-
- -
-

記: たいていのデスクトップ版 Firefox の貢献者は about:crashes を使うのに慣れています (詳細はCrash reporting を読んで下さい)、しかしこれは Firefox OS でサポートされていません。

-
- -

その他のものを試みる前に

- -

下記の手順は、すでにこれら3ステップに従っていると仮定しています:

- -
    -
  1. 端末のリモートデバッグが有効で、ADB がインストールされているのを確認します。これはコンピュータと端末との通信を可能にします。
  2. -
  3. 端末とコンピュータをUSB経由で接続します。
  4. -
  5. 必要なポートフォワードを扱う ADB Helper アドオン をデスクトップ版Firefox にインストールします。
  6. -
- -

BusyBoxをインストールする

- -

BusyBoxユーティリティという、Firefox OSのテストやデバッグに役立つ ADB コマンドを追加するものをインストールするのも推奨されます。

- -

インストールするには、端末がスリープでないのを確認してから:

- -
    -
  1. BusyBoxをダウンロードします
  2. -
  3. tarballをそれなりの場所に展開します。
  4. -
  5. 出てきた busybox-b2g ディレクトリに移動します。
  6. -
  7. ./install.sh を実行してインストールします。
  8. -
- -

busybox ユーティリティの全ては /system/bin 内にシンボリックリンクを追加します、よって ping などのコマンドを直接使えます。次にサンプルコマンドを挙げます:

- -
adb shell ping 8.8.8.8   => ping command
-
-adb shell ifconfig wlan0 => check tx/rx bytes
-
-adb shell cat /proc/net/route    => check the default route
-
-adb shell iptables -t nat -nvL   => check if the packets are sent from application to IP layer, check Chain OUTPUT (policy ACCEPT 2 packets, 168 bytes)
- -

Firefox OS 端末からクラッシュレポートを取得する

- -

クラッシュレポートを取得するFirefox OS アプリ — About Crashes — を作りました、これはバージョン 1.2+ で動きます。
-
- 端末にこれをインストールするには、次のステップに従います:

- -
    -
  1. About Crashes は認定アプリなので、認定アプリのデバッグを有効にします (アプリマネージャWebIDE用の操作方法を見ます)。
  2. -
  3. About Crashes アプリのzip ファイルを上記リンクからダウンロードしてローカルに展開します。
  4. -
  5. デスクトップ版Firefox で、アプリマネージャWebIDE (お使いのFirefox バージョンによります) を開きます、場所は ツール> Web 開発。
  6. -
  7. いずれのツールでも、About Crashes アプリをパッケージアプリに追加します (アプリマネージャ: Add Packaged App オプションの隣のプラス記号をクリック、WebIDE: 左側のドロップダウンメニューで Add Packaged App... を選択)。
  8. -
  9. 端末をアプリマネージャ/WebIDEに接続します (アプリマネージャ: UIの底部にある一覧から見つける、WebIDE: Select Runtimeから見つける)。
  10. -
  11. 端末にアプリをインストールして開く (アプリマネージャ: アプリの Update ボタンを押す、WebIDE: "Play" ボタンを押す(Install and Run))。
  12. -
  13. 端末でAbout Crashes の中のUpdate ボタンを押して最も最近のクラッシュを見る。
  14. -
- -

コマンドラインでクラッシュIDを取得する

- -

クラッシュIDをコマンドライン経由で取得でき、そうするにはターミナルで次のコマンドを入力します:

- -
adb shell ls -l /data/b2g/mozilla/Crash\ Reports/submitted/
- -

クラッシュの一覧が長くて日付順にソートしたい場合、代わりに次のコマンドを使います:

- -
adb shell busybox ls -ltr /data/b2g/mozilla/Crash\ Reports/submitted/
- -

クラッシュレポートを取得・検証する

- -

クラッシュレポートを検証するには:

- -
    -
  1. 拡張子なしのファイル名をコピーします。
  2. -
  3. Mozilla Crash Reportsに移動します。
  4. -
  5. 拡張子なしのファイル名を右上の検索ボックスにペーストします。
  6. -
- -

これで送信済みのクラッシュレポートが表示されます。

- -

クラッシュを強制する方法

- -

Firefox OS システムのクラッシュを引き起こすには、ターミナルで次のコマンドを入れてroot のプロセスIDを見つけます:

- -
adb shell ps | grep b2g
- -

最初の行に root のある行を、そして/system/b2g/b2g を最後に見つけるでしょう。次のように見えるはず:

- -
root 109 1 191120 66024 ffffffff 400fa330 S /system/b2g/b2g
- -

行の最初の数字は、プロセスをkill(強制停止)するのに必要となる kill プロセスid です。次のコマンドをこのIDをプレースホルダに当てはめて実行します:

- -
adb shell kill -11 [ENTER ID HERE]
- -

root プロセスの停止は端末をクラッシュされるでしょう。

- -

b2g用の GDBスクリプトの実行方法

- -
    -
  1. 電話機でギャラリーアプリを起動し、ターミナルで次のコマンドを実行します: -
    adb shell b2g-ps
    -
  2. -
  3. ギャラリーアプリのpid を控えて、次のコマンドを実行します: -
    ./run-gdb.sh attach <pid>
    -
  4. -
  5. クラッシュを起こす。
  6. -
  7. このコマンドを実行します: -
    (gdb) bt
    -
  8. -
diff --git a/files/ja/archive/b2g_os/debugging/index.html b/files/ja/archive/b2g_os/debugging/index.html deleted file mode 100644 index 2d497eb057..0000000000 --- a/files/ja/archive/b2g_os/debugging/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Firefox OSをデバッグする -slug: Archive/B2G_OS/Debugging -tags: - - B2G - - Debugging - - Firefox OS - - NeedsTranslation - - QA - - Testing - - TopicStub -translation_of: Archive/B2G_OS/Debugging ---- -
-

Firefox OS では二つの主なデバッグのタイプがあります。アプリケーションのデバッグ、およびシステムのその他の部分です。このセクションでは Firefox OS のコードをデバッグするためのさまざまなツールを解説した記事を提供しています。

-
-

アプリをデバッグする

-

webアプリをデバッグする時、利用できるベストなツールはMozillaの強力なアプリマネージャです。実機上やシミュレータ上でアプリを直接実行できるし、変更をすぐに反映できるし、Mozillaの優秀な 開発ツールを用いて端末上で直接デバッグできます。これはapp/Gaiaのデバッグには最初の選択になるでしょう。

-
-
- WebIDE を使用する
-
- WebIDE はアプリマネージャの置き換えです。アプリマネージャ同様に、Firefox OSシミュレータやFirefox OSの実機を使って、Firefox OSアプリを実行、デバッグできます。しかしながら、アプリを作成、開発する環境を編集する事もできます。
-
-
-
- アプリマネージャを使用する
-
- アプリマネージャはデスクトップ版Firefoxで利用できる新ツールです。これはテストや、Firefox OSの電話機やFirefox OSシミュレータ上へのHTML5ウェブアプリのデプロイ、デバッグを補助する、数々の便利ツールを提供します。
-
- Firefox OSでの"Out of memory"エラーをデバッグする
-
-
-
- この記事では、out of memoryエラーが起きた時にB2Gのマルチプロセスアーキテクチャが電話機の動作にどんな影響を及ぼすか、OOMクラッシュをどう理解してデバッグするか、について述べます。
-
-

Gaia/B2Gをデバッグする

-

GaiaアプリまたはB2G自体をデバッグしたい場合は以下に示すツールが利用できます。

-
-
- デスクトップB2Gクライアントを使ったデバッグ
-
- B2GとGaiaの複数の側面をデバッグするために、専用のB2Gデスクトップアプリケーション(および関連ツール)を使用することができます。
-
- Firefox OS クラッシュレポート
-
- このページはFirefox OSのクラッシュレポートの扱い方法を、クラッシュレポートの取得やクラッシュを強制する事を含めて詳解します。
-
- gdbを使ったB2Gのデバッグ
-
- デバイス上またはエミュレータ上で実行しているFirefox OSとウェブアプリケーションをデバッグするためにポピュラーなgdbデバッガを使用することができます。このガイドではその使用方法を紹介します。
-
- Valgrindを使ったB2Gのデバッグ
-
- Valgrindは開発者に、メモリ割り当て、スレッド、およびパフォーマンスにとって重要なその他の情報へのアクセスを提供します。このガイドではデスクトップB2Gか携帯電話ハードウェアでValgrindを実行する方法を示しています。
-
- B2GのNSPRログ取得
-
- HTTP、他のネットワーク通信の記録をNSPRログとして取得できます。
-
- OpenGLのデバッグ
-
- Firefox OS でOpenGLコードをデバッグする方法を示しています。
-
-

一般的なセットアップと情報

-

下記の記事には、Firefox OS開発向けの個々のセットアップ局面の情報が載っています。特にアプリマネージャを使ってアプリをデバッグしている場合、ひょっとして必要ないでしょう。しかし、もし必要となった場合のため、ここで利用できるようにしています。

-
-
- Firefox OSの開発者設定
-
- Firefox OS開発者用の設定オプションが多数あります。このガイドでは、それらが何をするのか、またそれらをどう利用するかを説明します。
-
- ADBをインストールして使用する
-
- Firefox OS開発の多くの局面でadb、つまりAndroid Debug Bridgeのインストールを求められます。この記事では、その方法を説明し、よくあるADBの便利コマンドを共有します。
-
- デバイス上でコンソールログを取る
-
- Firefox OS端末でログを取る方法や、コンピュータ上で見直すためにログ出力にアクセスする方法。
-
- Firefox OS端末とコンピュータを接続する
-
- この短いガイドは、コンピュータと端末をUSB経由で通信できるように、Firefox OS端末やコンピュータのセットアップ方法を説明します。
-
- Firefox OSコードをデバッグするためにセットアップする
-
- Firefox OSのデバッグコード実行用の、Firefoxに統合されたツールの大半を使用開始が可能になる前に、少しの設定作業が必要です。この記事では、何をすべきかを説明します。
-
-
-
diff --git a/files/ja/archive/b2g_os/debugging/installing_adb/index.html b/files/ja/archive/b2g_os/debugging/installing_adb/index.html deleted file mode 100644 index 6e83e5a625..0000000000 --- a/files/ja/archive/b2g_os/debugging/installing_adb/index.html +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: ADBをインストールして使用する -slug: Archive/B2G_OS/Debugging/Installing_ADB -tags: - - ADB - - B2G - - Firefox OS - - インストール -translation_of: Archive/B2G_OS/Debugging/Installing_ADB ---- -
-

Firefox OS 開発の色々な面で、ADB(Android Debug Bridge=Androidデバッグブリッジの略)のインストールが必要となってきます。この記事ではインストール方法を説明し、便利なADBコマンドを共有します。

-
- -

ADBをインストールする

- -

MacやLinuxやWindows向けのAndroid SDKパッケージの一部として、adbをダウンロード・インストールできます。 Get the Android SDKのページを参照してください。

- -

またはFirefoxアドオンをインストールでき、これが最速の方法です。

- -

新しめのLinuxディストリビューションでは、すでにリポジトリ内にadbがあります。Ubuntu 12.10以降では下記のコマンドを実行します:

- -
sudo apt-get install android-tools-adb
- -

Fedora 19/20/21は次を:

- -
sudo yum install android-tools
- -

OSXで Homebrew を使っている時はこちら:

- -
brew install android-platform-tools
- -

adbがパッケージされていないディストリビューション (つまりUbuntu 12.04 やFedora 17/18) では、Android SDK starter packageをインストールする必要があります (SDKツールだけのオプションよりは、ADTとのバンドル(セットになったもの)が欲しくなるでしょう) 。$SDK_HOME/tools/androidにあるパッケージマネージャを実行し、GUI を使用して "Android SDK Platform-tools" をインストールします。

- -

adb のインストール場所(通常は /usr/bin で、インストール方法によっては更に $SDK_HOME/platform-tools の中にもインストールされることもある)を探しておいてください。忘れずにPATH にこのディレクトリを追加してください。これを行うには、~/.bashrc やそれに相当するものに対して、次の行を付け加え、

- -
PATH=$SDK_HOME:$PATH
- -

$SDK_HOME の値にAndroid SDK の場所を設定し直します。

- -

トラブルシューティング

- -

64-bitのOSを使用していて、adbコマンドを使用する時にファイルが存在するにもかかわらず "File not found"(ファイルがありません) というエラーが出る時には、32-bitの互換ライブラリをインストールする必要があります。 aptでは以下のように実行します:

- -
sudo apt-get install ia32-libs
- -

'adb devices'を実行して端末が見つからない場合、ここ をクリックして修正手順に従って下さい。

- -

よくあるADBコマンド

- -

以下のセクションではよくある、便利なadbコマンドを説明します。

- -

b2gプロセスを再起動する

- -

b2gはAndroidベースのカーネルの頂点にあってスマホ上で動作する XULRunner アプリケーションと同等なものです。時にはこれを再起動したくなるかもしれません。これは端末全体を再起動することなしにアプリケーション環境をリセットする方法です。端末とコンピューターを接続した状態(またはデバッガを走らせた状態)で、ターミナル上で下記のように入力することで可能です:

- -
adb shell killall b2g
- -

デバッグ用のポート転送を有効にする

- -

単なるポート転送をするには(例えばアプリマネージャで Firefox OS 端末上のアプリをデバッグしている時)、ターミナル上で下記のように入力します:

- -
adb forward tcp:6000 localfilesystem:/data/local/debugger-socket
- -

電話を再起動したり、抜き差ししたりした時、毎回必ずこれを行う必要があります。必要に応じソケット番号を変更できます。

- -

ローカルマシンへポート転送する

- -

ローカルマシンへポート転送するには、netcat and ssh binariesをダウンロードし、下記コマンドを実行する必要があります:

- -
# this is an awful hack but does in fact work...
-host$ adb forward tcp:7979 tcp:6969
-
-# make some named pipes so that we can make a bidirectional netcat
-phone$ mknod readback p
-host$ mknod readback p
-
-# this sets up a one time use connection to back to the host
-# listen on ports 6969 and 5959 and forward all the information between them
-phone$ ./netcat -l -p 6969 < readback | ./netcat -l -p 5959 > readback
-# connect to port 7979 (port 6969 on the device) and the local ssh server and forward all information between them
-host$ ./netcat localhost 7979 < readback | ./netcat localhost 22 > readback
-
-# now when we connect to port 5959 on the phone it will be like connecting to ssh server on the host
-
-# use the netcat reversal to set up an ssh connection back to the host and forward port 9999 on the device to 'localhost:8000' (this could be anything like 'google.com:80')
-phone$ ./ssh localhost -p 5959 -L 9999:localhost:8000
- -

これは端末の9999番ポートをホストの8000番ポートに転送します。

- -

別の方法として、sshサーバー(dropbearhost_key)を端末上で直接使う方法があります。それには下記コマンドを使用します:

- -
phone$ DROPBEAR_PASSWORD=root ./dropbear -p 9000 -F -v -a -r host_key ./dropbear
-host$ adb forward tcp:8888 tcp:9000
-# public key authentication has been hard coded to succeed (make sure you have a public key for ssh to use)
-host$ ssh -vvv root@localhost -p 8888 -R 9999:people.mozilla.org:80
- -

詳細な情報:

- - - -
diff --git a/files/ja/archive/b2g_os/debugging/intercepting_traffic_using_a_proxy/index.html b/files/ja/archive/b2g_os/debugging/intercepting_traffic_using_a_proxy/index.html deleted file mode 100644 index 48d3387375..0000000000 --- a/files/ja/archive/b2g_os/debugging/intercepting_traffic_using_a_proxy/index.html +++ /dev/null @@ -1,185 +0,0 @@ ---- -title: プロキシを使って Firefox OS トラフィックを傍受する -slug: Archive/B2G_OS/Debugging/Intercepting_traffic_using_a_proxy -tags: - - Apps - - B2G - - Debugging - - Firefox OS - - Gaia - - Security - - Testing -translation_of: Archive/B2G_OS/Debugging/Intercepting_traffic_using_a_proxy ---- -

-

« 前のページ次のページ »

-

- -
-

デバッグとセキュリティテスト記事のこの部分では、プロキシツールを使ったFirefox OS トラフィックの傍受を見ます、それには プロキシの SSL 証明書をホワイトリストにしてFirefox OS が誰かが傍受しているのを記にしなくするのと、HTTPS通信の再カプセル化が含まれます。B2G デスクトップを使う場合、チュートリアルの最初にある、Marionette JavaScriptデバッグシェルのインストール・アタッチの方法の部分は、 Debugging and security testing with Firefox OSで説明されています。

-
- -

HTML と JavaScript だけのアプリで作業している時、Web上でデータ転送する API を含む、本当に面白い作品がたくさん見つかるでしょう。このことは、それらのアプリが実行するHTTPリクエストを観察する事がしばしば役立つことを意味します。BurpZAP といったプロキシーツールには、そんなトラフィックを観測するのに役立つ機能があります。これらはクライアントがどうやって自分自身を調節するのかについてや、TLS終端などをインストールするルート証明書などの情報を含んだマニフェストを提供しています。

- -

アプリマネージャ の 'Firefox OS の main プロセスのデバッグ' 機能に関連して、スクラッチパッドで いくつかのコードを 実行して、プロキシーのルート証明書をあなたの端末にインストールできます。

- -

Firefox OS の mainプロセスをデバッグする

- -

それでどうやって Firefox の mainプロセスをデバッグするのでしょう? Firefox Simulator か実端末のどちらでも、プロファイルにいくつかの設定を入れる事で認定アプリをアプリマネージャ経由でデバッグできます。 まず次のステップに従い、次にプラウザを再起動する前に about:config 内のdevtools.chrome.enabled 設定を true にします。

- -

次に、アプリマネージャを使って端末・simulator に接続し、そして端末画面に "DEBUG MAIN PROCESS" ボタンが見えます; それをクリックすると JSMs のデバッグと、スクラッチパッドないでの権限つき JavaScript 実行ができるようになります。

- -
-

: mainプロセスで何を実行するかについては注意して下さい: たまたま端末を破壊してしまう可能性があります!

-
- -

ZAPを導入する

- -

まずは、ZAP を使ってプロセスを使い続けましょう。ZAP は、簡単にデバッグするためにHTTPS通信を妨害して再暗号化する防御プロキシーです。ZAP ホームページ の大きな青いボタンをクリックしてダウンロードします。他のプロキシーを使用する事を選んだ場合、このアプローチは両方とも動作するはずなので、どうぞ併用して下さい。

- -

ZAP 証明書

- -

いま、どのプロキシを使っていても、その証明書を owasp_zap_root_ca.cer といったファイルにエクスポートします(メニューでは Tools > Options > Dynamic SSL Certificates > Save)。ZAP が初回起動した時、1年間有効な証明書を生成します。ダイナミック SSL 証明書のセクションから、新しい証明書を生成することもできます。

- -

ローカルプロキシ

- -

B2G デスクトップを使っている場合、必ず ZAP が localhost ではなく、代わりに属性 IP アドレス (イーサーネットかWi-Fi) をリッスンしているのを確かめる必要があります。これは B2G デスクトップの localhost はデスクトップコンピュータではなく、b2g バイナリ自身を指しているためです。例えば、次のIP アドレスを使うでしょう: 10.264.1.5.

- -

実機で作業している時、必ず電話機とコンピュータが同一ネットワーク/VLANに接続していて、お互い通信できるようにしておきます (疑う場合、片方の端末の IP からもう一方をpingしてみて下さい)。

- -

端末をプロキシに接続する

- -

次に色々な方法でプロキシと接続できます:

- -

端末からデフォルト設定を取り出したり、それらを変更して関連するプロキシ設定を追加したり、戻したりできます。

- -

あるいは、ツール構成して proxy HTTP and HTTPS transparently にあわせて、端末がプロキシを指すように iptables をセットアップできます。例えば HTTPS トラフィックがプロキシツールを通過するようには:

- -
-
adb shell iptables -t nat -A OUTPUT -p tcp --dport 443 -j DNAT --to-destination 192.168.0.14:8443
-
-
- -

そして、完了後にリセットするには:

- -
-
adb shell iptables -t nat -F
-
-
- -

LANのプロキシをセットアップする

- -

この種の活動が大変だと思う場合、ずっと便利な方法があります; 全てのトラフィックがデフォルトでプロキシを通るテストの LAN をセットアップすることです。この方法で、接続する無線LANを変更するだけで、プロキシのオンオフができます。

- -

raspberry pi を使ってビルドしていて、手順はこれらと同様ですiptables ルールを次のように変更しました:

- -
-
*filter
-:INPUT ACCEPT [49:3128]
-:FORWARD ACCEPT [0:0]
-:OUTPUT ACCEPT [37:3924]
--A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
--A FORWARD -i wlan0 -o eth0 -j ACCEPT
-COMMIT
-*nat
-:PREROUTING ACCEPT [1:72]
-:INPUT ACCEPT [1:72]
-:OUTPUT ACCEPT [1:148]
--A PREROUTING -i wlan0 -p tcp -m tcp --dport 80 -j DNAT --to-destination <proxy_host>:<http_port>
--A PREROUTING -i wlan0 -p tcp -m tcp --dport 443 -j DNAT --to-destination <proxy_host>:<https_port>
-:POSTROUTING ACCEPT [0:0]
--A POSTROUTING -o eth0 -j MASQUERADE
-COMMIT
-
-
- -

証明書データベースを作成する

- -

Accepting certificates happens in settings, which are stored in profiles. Here's a short primer on Firefox profiles:

- -
    -
  1. Start the Firefox profile manager using the -P option on the command line, and make sure that Firefox is not using any existing Firefox sessions (-no-remote): - -
      -
    • On Linux, you need to do: -
      firefox -P -no-remote
      -
    • -
    • On Mac OS X: -
      /Applications/Firefox.app/Contents/MacOS/firefox -P -no-remote
      -
    • -
    -
  2. -
  3. Now create a new profile called "zapped." Go to the certificate settings — Edit > Preferences > Advanced > Encryption > View Certificates > Import. Now select the owasp_zap_root_ca.cer file created by your proxy and tell Firefox that it should trust this CA to identify web sites (this is really only valid for this profile).
  4. -
  5. Having used Firefox to create a certificate database for us, we can now use this database for our B2G profile. The name of your Firefox profile directory is a random string that ends with zapped. The location depends on your operating system; see Runtime Directories for details on where it can be found.
  6. -
  7. For B2G desktop, we only need the cert8.db file, which is the profile's certificate database. Copy it over to your b2g profile directory b2g/gaia/profile/.
  8. -
  9. On a device, copy the cert9.db on your device profile directory: -
    $ adb shell stop b2g
    -$ adb push cert9.db /data/b2g/mozilla/*.default
    -
  10. -
- -
-

Note: This will overwrite the existing file.

-
- -

B2Gをセットアップする

- -

The next step is to set ZAP as the default proxy for all network communication. The proxy settings, like the certificate settings, are currently not available from the Firefox OS user interface.

- -

B2G デスクトップでは

- -

You need to append these custom settings to the preferences file, b2g/gaia/profile/prefs.js:

- -
user_pref("network.proxy.backup.ftp", "10.264.1.5");
-user_pref("network.proxy.backup.ftp_port", 8080);
-user_pref("network.proxy.backup.socks", "10.264.1.5");
-user_pref("network.proxy.backup.socks_port", 8080);
-user_pref("network.proxy.backup.ssl", "10.264.1.5");
-user_pref("network.proxy.backup.ssl_port", 8080);
-user_pref("network.proxy.ftp", "10.264.1.5");
-user_pref("network.proxy.ftp_port", 8080);
-user_pref("network.proxy.http", "10.264.1.5");
-user_pref("network.proxy.http_port", 8080);
-user_pref("network.proxy.no_proxies_on", "");
-user_pref("network.proxy.share_proxy_settings", true);
-user_pref("network.proxy.socks", "10.264.1.5");
-user_pref("network.proxy.socks_port", 8080);
-user_pref("network.proxy.ssl", "10.264.1.5");
-user_pref("network.proxy.ssl_port", 8080);
-user_pref("network.proxy.type", 1);
-
- -
-

Note: Remember to replace my IP address 10.264.1.5 with yours, and if your proxy does not listen on port 8080, make sure you change it in this file too.

-
- -

At this point, you should be ready to go! Start B2G Desktop again, and try some browsing. Network traffic should appear in ZAP.

- -

端末では

- -

To enable this functionality on a device, you'll need to modify the prefs.js file located in your profile on the device. Connect the device to your computer which has previously been set up with the adb tools.

- -

First, you need to know what the name of your profile directory is. You can find it like this:

- -
adb shell ls /data/b2g/mozilla
- -

Among the output, you'll see a directory named with a number of random numbers and letters ending with ".default". This is your profile directory. Use that name where you see "xxxxxxxx" from here on in these instructions.

- -

Next, grab the prefs.js file so you can edit it:

- -
adb pull /data/b2g/mozilla/xxxxxxx.default/prefs.js
- -

Open the resulting file in your favorite text editor; at the end of the file, add the custom settings indicated in the section above and save your changes. Now all you need to do is push the changed file back to the device and restart the b2g process to pick up the changes, as follows (the B2G process should already be stopped if you followed the earlier instructions to push cert9.db):

- -
adb push pref.js /data/b2g/mozilla/xxxxxxxx.default
-adb shell start b2g
- -

-

« 前のページ次のページ »

-

- -

Charles Proxy

- -

Users looking to use Charles Proxy should see this blog post: https://muffinresearch.co.uk/proxying-connections-from-ffos/

- -

 

diff --git a/files/ja/archive/b2g_os/debugging/on-device_console_logging/index.html b/files/ja/archive/b2g_os/debugging/on-device_console_logging/index.html deleted file mode 100644 index 64b3104b5b..0000000000 --- a/files/ja/archive/b2g_os/debugging/on-device_console_logging/index.html +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: デバイス上でコンソールログを取る -slug: Archive/B2G_OS/Debugging/On-device_console_logging -tags: - - B2G - - Firefox OS - - デバッグ -translation_of: Archive/B2G_OS/Debugging/On-device_console_logging ---- -
-

remote web consoleを使ってコンソールログを出力、閲覧できるのに加え、 端末のファイル保存領域にログ出力できて、次に後ほどlogcatユーティリティを使ってUSB接続したコンピュータからログを取得できます。この記事ではこの機能を有効化し、ログを出力し、ログを取る方法を網羅します。

-
-

コンソールログ取得の有効化

-

製品版のFirefox OS端末ではコンソールログの出力(例えば、console.log())は標準では無効となっています。有効にするには端末の開発者メニューに行きコンソールを有効化の設定を有効にして下さい。

-

ログを取得する

-

一度、コンソールを有効化にすれば、デスクトップのFirefox OSと同じように動作します。console のメソッドを使うことでテキストログをコンソールに出力することができます。以下に例を記載します。

-
console.info("Starting up the foobar hardware!");
-var err = foobar.start();
-if (err) {
-  console.error("--Error %d starting up the foobar hardware!", err);
-}
-
-
-

注意: console にコンソールログ機能の使い方について記載されています。

-
-

logcatを使用する

-

Firefox OS端末では出力されたログは端末内に保存されるのですが、端末からはログを確認する為のインタフェースはありません。その為、コンピュータを使用してそのログを確認する必要があります。Android SDKに含まれるadbからlogcatコマンドを使う必要があります(Installing ADB もあわせて見てみて下さい)。

-

幸運なことに、logcat はとてもシンプルに使うことが出来ます。一度adbをインストールしてしまえば、端末をUSBをでコンピュータに繋いでターミナルから以下のコマンドを入力するだけです。

-
adb logcat
-

以下は実際の端末で出力されたログになります( これらのログは端末内の /dev/log/system/に保存されています)。

-
I/Vold    (  107): Vold 2.1 (the revenge) firing up
-D/Vold    (  107): Volume sdcard state changing -1 (Initializing) -> 0 (No-Media)
-D/Vold    (  107): Volume emmc state changing -1 (Initializing) -> 0 (No-Media)
-D/Vold    (  107): Volume sdcard state changing 0 (No-Media) -> 2 (Pending)
-D/Vold    (  107): Volume sdcard state changing 2 (Pending) -> 1 (Idle-Unmounted)
-W/Vold    (  107): Duplicate state (1)
-W/Vold    (  107): Duplicate state (1)
-W/Vold    (  107): Duplicate state (1)
-W/Vold    (  107): Duplicate state (1)
-W/Vold    (  107): Duplicate state (1)
-W/Vold    (  107): Duplicate state (1)
-W/Vold    (  107): Duplicate state (1)
-W/Vold    (  107): Duplicate state (1)
-W/Vold    (  107): Duplicate state (1)
-W/Vold    (  107): Duplicate state (1)
-W/Vold    (  107): Duplicate state (1)
-W/Vold    (  107): Duplicate state (1)
-W/Vold    (  107): Duplicate state (1)
-D/Vold    (  107): Volume emmc state changing 0 (No-Media) -> 2 (Pending)
-D/Vold    (  107): Volume emmc state changing 2 (Pending) -> 1 (Idle-Unmounted)
-D/VoldCmdListener(  107): volume list
-D/VoldCmdListener(  107): volume mount sdcard
-I/Vold    (  107): /dev/block/vold/179:20 being considered for volume sdcard
-D/Vold    (  107): Volume sdcard state changing 1 (Idle-Unmounted) -> 3 (Checking)
-W/Vold    (  107): Skipping fs checks
-I/Vold    (  107): Device /dev/block/vold/179:20, target /mnt/sdcard mounted @ /mnt/secure/staging
-D/Vold    (  107): Volume sdcard state changing 3 (Checking) -> 4 (Mounted)
-D/VoldCmdListener(  107): volume mount emmc
-I/Vold    (  107): /dev/block/vold/179:33 being considered for volume emmc
-D/Vold    (  107): Volume emmc state changing 1 (Idle-Unmounted) -> 3 (Checking)
-W/Vold    (  107): Skipping fs checks
-I/Vold    (  107): Device /dev/block/vold/179:33, target /mnt/emmc mounted @ /mnt/secure/staging
-D/Vold    (  107): Volume emmc state changing 3 (Checking) -> 4 (Mounted)
-
-etc.
-
diff --git a/files/ja/archive/b2g_os/debugging/setting_up/index.html b/files/ja/archive/b2g_os/debugging/setting_up/index.html deleted file mode 100644 index 526442b910..0000000000 --- a/files/ja/archive/b2g_os/debugging/setting_up/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: Firefox OSコードをデバッグするためにセットアップする -slug: Archive/B2G_OS/Debugging/Setting_up -tags: - - B2G - - Firefox OS - - デバッグ -translation_of: Archive/B2G_OS/Debugging/Setting_up ---- -
-

Firefox OS はAndroidのモバイル版Firefoxがサポートするのと同じデバッグプロトコルをサポートします。つまりFirefox OS 端末やエミュレータ上で実行するGaiaアプリケーションをデバッグするのにFirefox開発ツールを使用できます。端末上のFirefox OS やFirefox OS Simulatorをデバッグするためには、Firefox 18以降が必要で、加えて設定変更が、ブラウザのコンフィグレーションと、Firefox OS端末やsimulatorの両方で必要となります。

-
- -
-

: Firefox OS 端末でアプリをデバッグしたい場合、Firefox OS 1.2以上を使っているなら代わりにWebIDEを使うのがベストな選択肢です。

-
- -

デスクトップ版Firefox

- -

リモートデバッグのサポートには、Firefox 18かそれ以降のビルドがあるのを確認する必要があります。Firefoxの最近のコピーをまだ持っていない場合、最新のNightly ビルドをダウンロードして全ての最新機能にアクセスできるようにします。

- -

いったんコンピュータ上で Firefox の適切なバージョンを実行し、URLバー内で about:config とタイプして、devtools.debugger.remote-enabled の値を true に変更します。次にリモートデバッグを有効にするため、 Firefox を再起動する必要があります。Firefoxを再起動後に、Web開発メニューには新しいオプションがあるでしょう、 Tools > Connect...

- -

デバッグを有効にする

- -

Firefox OS Simulator (かB2Gデスクトップ) を使っている時、デバッグ用セットアップはとても簡単です。物理端末のデバッグする時のようなポート転送の必要はありません。ただ端末で Developer settings を開いて Remote Debugging を有効化します。

- -
-

記: 2013年1月10日以後のFirefox OS端末ではもはや動作しません。この日以降のFirefox OS端末用ビルドはデバッグが無効になっています。結局は再度有効化したビルドを作る道はできるでしょうが、まだ存在していません。この文書はそうなった時に更新されるでしょう。加えて、out-of-processサポートを切る設定は削除されました。これからはFirefox OS Simulatorでデバッグを行う必要があるでしょう。

-
- -

実際の Firefox OS 端末を使っている場合、 Developer settings を開いて:

- - - -
-

記: 端末に書き込む時、これらの設定変更をし直す必要があるでしょう。

-
- -

デバッガを使用する準備ができました!

- -

Firefox端末でコンソールログを有効にする

- -

Firefox OSの製品版ビルドでは、コンソールログ (例えば console.log()) はデフォルトで無効です。それを有効化するには、端末のDeveloper settings に移動して Console Enabled を有効にします。

- -

記: Firefox OSのコンソールログを使用する詳細については、端末上のコンソールログ を読んで下さい。

- -

参考情報

- - diff --git a/files/ja/archive/b2g_os/debugging/taking_screenshots/index.html b/files/ja/archive/b2g_os/debugging/taking_screenshots/index.html deleted file mode 100644 index 18415d310c..0000000000 --- a/files/ja/archive/b2g_os/debugging/taking_screenshots/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: スクリーンショットを取る -slug: Archive/B2G_OS/Debugging/taking_screenshots -tags: - - Firefox OS - - スクリーンショット - - デバッグ -translation_of: Archive/B2G_OS/Debugging/taking_screenshots ---- -
-

アプリケーションのスクリーンショットを撮ることは、多くの状況で役立ちます。例えば顧客に成果を見せたり、アプリを Marketplace に発行したり。この記事では Firefox OS 電話機でスクリーンショットを撮る方法を説明します。

-
- -
-

: Android 開発者は手馴れているでしょう: 手順は全く一緒です。

-
- -

電話機を準備する

- -
    -
  1. 電話機で、Developer Settings に移動し、Remote DebuggingConsole Enabled をチェックします。
  2. -
  3. 電話機に ADB がインストールされていて、動作するのを確認します。
  4. -
  5. 電話機を USB 経由でコンピュータに接続します。
  6. -
- -

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

- -

4 つの選択肢があります: ターミナルを使用するか、Eclipse で DDMS を使用するか、電話機で専用のボタンの組み合わせを使うか、アプリマネージャを使用するかです。

- -

ターミナル

- -

ターミナルウィンドウを開き、下記 3 つのコマンドを入力します:

- -
    -
  1. 下記のコマンドを使用しスクリーンショットを撮ります (screenshot.png の名前は変更可能です):
    - adb shell screencap -p /sdcard/screenshot.png
  2. -
  3. コンピュータに画像を移動します:
    - adb pull /sdcard/screenshot.png
  4. -
  5. 端末からスクリーンショットを削除します:
    - adb shell rm /sdcard/screenshot.png
  6. -
- -

あるいは、ffmpeg を使用することもできます:

- -
    -
  1. ffmpeg がインストールされているのを確認します: -
      -
    1. Mac で MacPorts を使用している場合、sudo port install ffmpeg を実行します。homebrew では、brew install ffmpeg を実行します。
    2. -
    3. Linux (Ubuntu/Debian) では、sudo apt-get install ffmpeg を使用します。
    4. -
    -
  2. -
  3. cd コマンドで B2G/gaia ディレクトリに移動します。
  4. -
  5. make screenshot コマンドを使ってスクリーンショットを撮ります。
  6. -
  7. screenshot.png という名前のスクリーンショットができます。
  8. -
- -

DDMS

- -

Eclipse を起動します。

- -
    -
  1. DDMS を開きます: Window > Open Perspective > Other > DDMS
  2. -
  3. 左側のパネルにある Devices タブ内で、Screen capture ボタンをクリックします。
  4. -
  5. いくつかのオプション付きの新規ウィンドウが開きます; Save ボタンをクリックしてスクリーンショットを保存します。
  6. -
- -
-

: DDMS についてもっと学ぶには、DDMS documentation をご覧ください。

-
- -

電話機のボタンの組み合わせ

- -
    -
  1. Firefox OS バージョン 2.0 以下では、Home ボタンと 電源 ボタンを同時に数秒間長押しします。
  2. -
  3. Firefox OS バージョン 2.1 以降では、Volume Down ボタンと 電源 ボタンを同時に数秒間長押しします。
  4. -
- -

これでスクリーンショットが撮られ、Gallery に保存されます。画像は SD カードからコンピュータに、最もやりやすい方法でコピーできます。

- -
-

: 多くの人にとって Home ボタンと 電源 ボタンが想定より難しい (特に片手では) ために、ボタンの組み合わせが変更されました。加えて、ハードウェアの Home ボタンがない端末がきちんとサポートされいていなかった (ロック画面のように Gaia のあちこちでソフトウェア Home ボタンが使えない)のが変更の原因です。

-
- -

アプリマネージャ/Simulator

- -
    -
  1. アプリマネージャ を開き、電話機と接続し、左の Device タブに移ります。
  2. -
  3. ページ下部 (Simulator を起動したのと同じ場所) にある スクリーンショット ボタンをクリックします。
  4. -
diff --git a/files/ja/archive/b2g_os/debugging/testing_in_a_privileged_context/index.html b/files/ja/archive/b2g_os/debugging/testing_in_a_privileged_context/index.html deleted file mode 100644 index 43d823683a..0000000000 --- a/files/ja/archive/b2g_os/debugging/testing_in_a_privileged_context/index.html +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: '特権アプリとしてテストする: 自身のGaiaアプリを配信する' -slug: Archive/B2G_OS/Debugging/Testing_in_a_privileged_context -tags: - - セキュリティ - - テスト -translation_of: Archive/B2G_OS/Debugging/Testing_in_a_privileged_context ---- -

-

« 前のページ

-

- -
-

お気づきの通り、JavaScriptを実行しても輝かしい全てのWebAPIにアクセスできるわけではありません。特定のAPIを利用するアプリは、そのAPIへのアクセスをアプリマニフェストのなかで要求しなければなりません。 この記事では、マーケットに特権アプリを配信する前にアプリをテストする方法をお伝えします。

-
- -

現在起動しているアプリのメタデータとマニフェストを変数として取得するには、このようなコードを利用できます。

- -

 

- -
navigator.mozApps.getSelf().onsuccess = function(e) {
-  appself = e.result;
-}
- -

このコードではアプリのメタデータをappselfという変数に格納します。

- -

同様に、もし起動しているものと別のアプリのパーミッションを閲覧したい場合、b2gデスクトップのテストビルドで利用できる"許可設定 (Permissions)"からテストしたいアプリを確認してみてください。b2gデスクトップは現在インストールされている全てのアプリの許可設定をエミュレートするものです。

- -

いくつかの既存のWebAPIは、どんな種類のアプリでも利用できません。それらのAPIを利用するには、最上級の権限で (つまり、認定アプリとして) インストールする必要があります。自身でそれを行うには、b2gレイヤのトップであるGaiaをカスタマイズしたバージョンをビルドする必要があります。これを行うには、gitmakeといった環境で作業しなければなりません。Firefox OSのビルド環境の設定について詳しくはFirefox OS ビルドの必要条件を確認してください。

- -

この場合は、Firefox OS全てをビルドする必要はなく、Gaiaだけで十分です。どのようにするか見てみましょう。

- -

Gaiaをダウンロードしてビルドする

- -

最初に、Gaiaをダウンロードしてビルドする必要があります。これによってb2gデスクトップでロードできるプロファイルを作成します。以下のコマンドを使えば完了です。

- -
$ git clone https://github.com/mozilla-b2g/gaia
-$ cd gaia
-$ make
-
- -
-

警告: 初めてGaiaをビルドする場合、XULRunnerのダウンロードを要求されます。これは500MBほどあるため、ダウンロードに少々時間がかかり、また多くの空き容量が必要です。

-
- -

 

- -

この操作は標準的なGaiaをビルドします。つまりカスタマイズの準備が整ったということです。

- -

カスタマイズしたアプリを準備する

- -

XULRunnerがダウンロードされている間、Gaiaのソースコードを読むことをおすすめします。ダウンロードが進行している間にカスタマイズしたアプリを準備してしまえるでしょう。

- -

Gaiaに内容されている全てのアプリ (設定、電話帳、ブラウザ等) はapps/ディレクトリに保存されています。これはあなたの特権アプリもそこに置く必要があるということです。この記事のために、allpermsという名前のサンプルアプリを作り、GitHubで公開しています。

- -

Gaiaのapps/ディレクトリのなかにサンプルアプリを clone して、コードツリーを変更してみましょう:

- -
cd apps
-git clone https://github.com/freddyb/allperms.git
-
- -

最初のGaiaのビルドが完了し、xulrunner-sdkがダウンロードされたら、apps/のなかにallpermsを含めてGaiaを再ビルドすることができます。しかし心配ありません、ほとんどのものはすでにコンパイルされているため、再ビルドは非常に早いはずです。単に以下を実行します:

- -
make
-
- -

新しいプロファイルを使ったB2G デスクトップを読み込む

- -

B2G デスクトップには主に2つの実行ファイルがあります: b2gb2g-binです。コマンドラインの引数を指定したい場合は後者を利用します。

- -
-

Note: B2G デスクトップアプリケーションについての補足情報についてはB2G デスクトップクライアントを使用するを確認してください。

-
- -

-profileオプションであなたがビルドしたGaiaのプロファイルへのパスを指定し、b2gの実行ファイルを読み込みます。

- -

Linux

- -
$ b2g-bin -profile /path/to/gaia/profile
-
- -

Mac OS X

- -

Max OS Xでは、gaiaのディレクトリからコマンドを起動するには以下のようにします。(あなたが標準的なアプリケーションフォルダにB2Gをインストールしていると想定しています)

- -
$ /Applications/B2G.app/Contents/MacOS/b2g-bin -profile /path/to/gaia/profile
-
- -

Windows

- -

この部分は準備中です。

- -

期待する動作

- -

全てがうまくいくと、ロックスクリーンが見えているはずです:

- -

- -

B2G デスクトップを利用する際には、いくつかの便利なコマンドラインオプションがあります

- -
-

Note: このプロファイルは標準の設定で再度スタートします。テストの環境を整えるために行った全てのカスタマイズは、再度行う必要があります。これにはMarionetteやプロキシ、証明書の設定も含みます。

-
- -

完了

- -

あなたのallpermsアプリはインストールされ、全ての利用可能なパーミッションを備えているはずです。

- -

次に、Debugging and security testing with Firefox OSを参考にしてMarionetteのステップを再度繰り返すことで、全てのWebAPIにアクセスできるテスト用の環境を用意することができます。

- -

-

« 前のページ

-

diff --git a/files/ja/archive/b2g_os/developer_mode/index.html b/files/ja/archive/b2g_os/developer_mode/index.html deleted file mode 100644 index 0a90ad93f5..0000000000 --- a/files/ja/archive/b2g_os/developer_mode/index.html +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: 開発者モード -slug: Archive/B2G_OS/Developer_Mode -translation_of: Archive/B2G_OS/Developer_Mode ---- -
-

重要: Developer Mode basically removes most of the security checks associated with using sensitive APIs on Firefox OS; it is a useful testing tool, but it is not recommended to have it activated on your everyday device for any period of time.

-
- -

The current Firefox OS permissions model precludes modification and installation of certified/internal apps, which makes some device APIs completely unavailable to Marketplace and web apps. Developer Mode (DM) allows the user to indicate that they would like to relax the permissions model and expose all device APIs to content, as well as setting a group of related preferences. This article provides a high-level overview.

- -
-

: Developer Mode is only supported on Firefox OS 3.0+, including Spark.

-
- -

Features

- -

Once DM has been enabled on a device, the user receives the following benefits:

- - - -

Certified apps can be installed

- -

Normally, certified/internal apps must be shipped with a Firefox OS distribution. With DM enabled, any app with the certified type can be installed, and can request any certified permissions. Thus, all device API's are unlocked with DM enabled.

- -

Developer prefs and settings enabled

- -

As of this writing, the following preferences are set when DM is enabled:

- - - -

This also sets the following settings:

- - - -

Add-on import activity

- -

Apps can normally not install apps or add-ons without requesting the webapps-manage permission, which is available to certified/internal apps only. With DM enabled, apps can create add-ons for themselves using the "import-app" activity. The imported app must meet the following criteria:

- - - -

The following example demonstrates this:

- -
var activity = new MozActivity({
-  name: 'import-app',
-  data: {
-    blob: blob /* app blob */
-  }
-});
-
-activity.onsuccess = function() {
-  // The Settings app has imported the app blob.
-};
-
-activity.onerror = function(e) {
-  // The Settings app failed to import the app for some reason.
-};
-
- -

Enabling and disabling

- -

DM can be toggled using the Settings app, WebIDE, or an activity. All have the same net effect, but enabling it through WebIDE is the only method that doesn't require a factory reset.

- -

Settings app

- -
-

Note: Enabling DM via the Settings app or activity will factory reset your device. Use the WebIDE method if you'd like to avoid this.

-
- -

To enable or disable DM via the Settings app:

- -
    -
  1. Open the Settings app.
  2. -
  3. If you see a "Developer" panel near the end, skip to #6.
  4. -
  5. Tap on the "Device Information" panel near the end.
  6. -
  7. Tap on the "More Information" panel.
  8. -
  9. Enable "Developer Menu."
  10. -
  11. Tap on "Factory Reset and Enable Full DevTools" near the end to toggle it.
  12. -
  13. Your device will reboot and go into recovery mode. It'll reboot again in a minute or so into Firefox OS with developer mode toggled.
  14. -
- -

WebIDE

- -
-

Note: DM cannot currently be disabled via WebIDE.

-
- -

To enable DM via WebIDE:

- -
    -
  1. Open WebIDE.
  2. -
  3. Connect to your device using the "Select Runtime" menu.
  4. -
  5. Open "Runtime Info" from the device menu.
  6. -
  7. Look at "ADB is root." If there's a button next to it, press it. If it says "maybe", or "no", or anything like that, there's a problem. If it says "yes," it's already set, and you can skip to step 5. -
      -
    1. When WebIDE is disconnected from the device, reconnect it.
    2. -
    3. Re-open the "Runtime Info" menu.
    4. -
    -
  8. -
  9. Look at "Unrestricted DevTools privileges." If there's a button next to it, press it. If not, it should say "yes." If it says "maybe", or "no", or anything like that, there's a problem.
  10. -
  11. Developer mode is now enabled.
  12. -
- -

Activity

- -
-

Note: Enabling DM via the Settings app or activity will factory reset your device. Use the WebIDE method if you'd like to avoid this.

-
- -
-

Note: The user's Developer Menu must already be enabled for this to work.

-
- -

The activity to dispatch to enable or disable developer mode is "full-developer-mode". Here is an example:

- -
var activity = new MozActivity({
-  name: 'configure',
-  data: {
-    target: 'device',
-    section: 'full-developer-mode'
-  }
-});
-
- -

This will take the user to the Settings app, where they will be prompted to toggle developer mode, with a lot of warnings about the consequences.

diff --git a/files/ja/archive/b2g_os/developing_firefox_os/customizing_the_b2g.sh_script/index.html b/files/ja/archive/b2g_os/developing_firefox_os/customizing_the_b2g.sh_script/index.html deleted file mode 100644 index dce377a90d..0000000000 --- a/files/ja/archive/b2g_os/developing_firefox_os/customizing_the_b2g.sh_script/index.html +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: b2g.shスクリプトをカスタマイズする -slug: Archive/B2G_OS/Developing_Firefox_OS/Customizing_the_b2g.sh_script -tags: - - B2G - - Firefox OS - - デバッグ - - ハック -translation_of: Archive/B2G_OS/Developing_Firefox_OS/Customizing_the_b2g.sh_script ---- -
-

電話機では、b2g アプリケーション(とりわけFirefox OS API群を提供します)は /system/bin/b2g.sh スクリプト経由で起動します。このスクリプトをカスタマイズしてFirefox OSの挙動を変更でき、この記事で方法を説明します。

-
-

環境変数のセット

-

単にB2Gを一度実行するために環境変数をセットしたい場合、下記のようにします:

-
adb shell stop b2g
-adb shell "export ENV_VAR=value && /system/bin/b2g.sh"
-
-

ずっと同じ環境変数を使いたい場合、次の節に書いてあるように b2g.sh を編集できます。

-

b2g.shを編集する

-

デバッグ用途で、ログ取得やb2gプログラムの動作に影響を与えるために環境変数をセットしたい場合があります。b2g.shスクリプトを編集することで、これが可能です。電話機上でファイルを書き換えるツールはないので、まずコンピュータにファイルをコピーしないといけません。

-
    -
  1. 電話機をコンピュータに接続し、ターミナルウィンドウを開き、下記コマンドを実行してスクリプトを編集します: -
    adb pull /system/bin/b2g.sh
    -
  2. -
  3. お好みの変更となるようスクリプトを編集します。例えば、ログ出力が見たいとすると(デバッグビルドが必要です)、下記のようなものを追加します: -
    export NSPR_LOG_FILE=/data/local/tmp/mylog.txt
    -export NSPR_LOG_MODULES=Layers:5
    -
    -
  4. -
  5. 下記のコマンドを実行し、更新されたb2g.shスクリプトを電話機に保存してb2gを再起動します: -
    adb shell stop b2g
    -adb remount
    -adb push b2g.sh /system/bin
    -adb shell chmod 0755 /system/bin/b2g.sh
    -adb shell start b2g
    -
    -
  6. -
-
-

記: /data/local/tmp は、コンテントプロセスから書き込み可能となる、ファイルシステム上の唯一の場所です。

-
-

参考

- -

 

diff --git a/files/ja/archive/b2g_os/developing_firefox_os/filing_bugs_against_firefox_os/index.html b/files/ja/archive/b2g_os/developing_firefox_os/filing_bugs_against_firefox_os/index.html deleted file mode 100644 index addbd49074..0000000000 --- a/files/ja/archive/b2g_os/developing_firefox_os/filing_bugs_against_firefox_os/index.html +++ /dev/null @@ -1,199 +0,0 @@ ---- -title: Firefox OSのバグを登録する -slug: Archive/B2G_OS/Developing_Firefox_OS/Filing_bugs_against_Firefox_OS -tags: - - Bugzilla - - Firefox - - Firefox OS - - QA -translation_of: Archive/B2G_OS/Developing_Firefox_OS/Filing_bugs_against_Firefox_OS ---- -
-

この記事ではFirefox OSプロジェクト(GaiaとB2Gを含む)のバグを登録するためのガイドを提供します。

-
- -

Bugzilla

- -

Mozillaでは、ほとんどのプロジェクトでバグおよび課題の状況のトラッキングのためにBugzillaを使っています。バグを見つけた時は誰でもbugzillaに登録できます。Bugzillaの中に、Firefox OS 向けに独立したプロダクトカテゴリがあって、GaiaGonk、Geckoなどのトピック用のコンポーネントを含んでいます。Firefox OS、Gaia、その他のバグはこのコンポーネントに登録してください。

- -

バグを登録する

- -

効果的にバグを登録するために、Bugzilla templateを使い、下記の手順にしたがってテンプレートを埋めてください。

- -

必須のフィールドと任意のフィールド

- -

新しいバグを登録する時、下記を含むいくつかのフィールドは必須項目です。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
フィールド内容
Componentバグの所属するカテゴリを選択します。もし、バグがどのカテゴリに所属するかわからない時には、"General"(一般)を選択してください。
Summaryバグの内容を簡潔に記述します。
Description -

できるだけ明確に状況を記述します。良いバグレポートをするには、再現手順(STR)、あるべき結果と実際の結果を含めてください。また、可能であれば発生頻度 (つまり、何度も再現手順を繰り返した場合、バグが何度発生するか) を含めてください。

-
Build Information -

Firefox OS端末の画面で、「環境設定 > 端末情報 > その他の情報」の順に操作し、下記の項目をバグレポートに含めてください。​

- -
    -
  • OS のバージョン
  • -
  • ビルドナンバー
  • -
  • プラットフォームのバージョン
  • -
  • ビルド ID
  • -
  • 更新チャンネル
  • -
  • Git コミット情報
  • -
- -

もし、MacやLinuxなどで adb や git をインストールして使っているのであれば、このスクリプトを実行して、その結果をテキストでコピー&ペーストしてください。

-
Screenshotsバグを解析するのに役立つスクリーンショットを添付します。(Flameでは、電源ボタンと音量下げボタンを2秒以上同時に押し続けると、音や画面のフラッシュがしてスクリーンショットが撮れます。それをUSBを経由してコンピュータに転送してください。)
Videoバグが画面遷移をする中で発生し、スクリーンショットで説明するのが難しい場合は、動画を撮影してください。その動画を添付ファイルとしてアップロードできます。また、YouTubeにアップロードしてそのURLをバグレポートにコピー&ペーストすることもできます。
ADB logsコンピューターに adb がインストールされている場合、電話機に接続しておいて | adb logcat | を実行して表示される結果をプレーンテキストに保存し、バグレポートに添付してください。
- -

下記のフィールドは任意です:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
フィールド内容
Depends/Blockバグ同士の依存関係を表します。
Keywordsbugzilla用のキーワードです。特定のグループがバグをトラッキングするのに使われます。
Whiteboardタグを含みます。トラッキング用にあらゆるタグを追加して下さい。他人のタグを許可なく削除してはいけません。
See Also異なるバグが関連している際に、このフィールドで指定できます。
Flagsステータストラッキング用のフラグです。Firefox OSでは、 blocking-b2g というフラグが最もよく使われます。バグが blocking-b2g にセットされた場合、そのバグはリリースをブロックするため、そのバグにより注意を払う必要があります。
Securityバグが個人情報のセキュリティや、資産の損失や、そのような問題に関連している場合、このチェックボックスをチェックしてください。このチェックによって、そのバグは専任の従業員のみが見ることができるようになります。
- -

bugzillaのフィールドの詳細な説明については、Bugzilla内にあるBugzilla Fieldsページを参照してください。

- -

ローカライゼーションのバグを登録する

- -

翻訳されていない文字列がある場合、以下の2通りの可能性があります。

- - - -

ローカライザビリティ(l12y)バグを登録するには

- -
    -
  1. Firefox OSで「環境設定 > 端末情報 > その他の情報」を開き、「開発者メニュー」をオンにしてください。
  2. -
  3. 「環境設定 > 開発者」で「Pseudo-Localization」をオンにしてください。
  4. -
  5. 「環境設定 > 言語」で「Accented English」(奇妙な文字列で表示されています)を選択してください。
  6. -
  7. 文字列が翻訳されていなかった画面に戻ります。もし、文字列が通常の英語で表示されていれば(Accented Englishの奇妙な文字列で表示されていなければ)、多くの場合それは l12y の問題です。
  8. -
  9. Bugzillaで、 product に「Firefox OS」を指定し、さらに翻訳されていない文字列があるコンポーネントを指定してください。キーワードには「l12y」を指定してください。
  10. -
  11. 必須事項を記入し、バグを登録してください。
  12. -
- -

よくあるキーワード

- -

Firefox OS のバグでよく使われるキーワードを下記の表に示します。

- -

バグを検証したり、バグにコメントをしたり、バグの StatusVerified に設定するときには、必ず ビルド/OS/プラットフォーム を明示する必要があります。もし、バグが3つのプラットフォームで報告されて、あなたが確認や修正したのがそのうち1つである場合、それをバグのノートに明示し、バグを Verified に変更しないでください。 Status が Verified に変更されるときには、全てのプラットフォームでチェックが行われる必要があります。

- -

最終的に、その他のバグがあなたの検証しているバグの複製であるとマークされた場合、それらにチェック、言及する事を確実にしてください。しばしば開発者は関連した(だが同一でない)バグを複製としてマークし、これらがチェックされていないと見過ごされる事があります。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
キーワード内容
metaバグがステータストラッキングバグであることを示します。Mozillaは複数のバグや、ユーザーストーリーの実装状況を追跡するのにこのタグを使います。一旦このマークがなされると、開発者はこうしたバグの上部にパッチを置くべきではありません。プロジェクトマネージャーやQAスタッフが追跡のためにmetaバグを使うのを覚えておいて下さい。
qablockerテスト (手動や自動の機能テスト)をブロックするバグにこのキーワードを使用します。このバグは、次の Beta や RC のマイルストーンまでには修正する必要があります。
qawantedもっと情報が必要な時や、再現法やテストケースが必要であったり、複製だったり (だが複製元のオリジナルバグが見つからない)する時に、このキーワードを使います。必要なQA作業の進捗はホワイトボードに記録されます;つまり必要なQA作業が完了した 時は、このキーワードを削除すべきです。
regression -

このキーワードは、問題が修正され、また戻ってきて(退行して)いて、新規バグとは疑わしいという意味であり、退行を追跡するために記録します。またpre-check inテストやスモークテストでは特定できず、以前のビルドで動作していたが現在のビルドで見つかった問題を参照することもあります。こうしたバグの追跡は、ぜい弱な場所や、故障の傾向や、スモークテストやpre-check inテストの追加の良い候補の見極めに役立ちます。

-
regressionwindow-wantedバグがregression(退行)であり、バグがどの期間に、理想的にはどのチェックインで起きたのかが特定できると大変有益であることを示します。
steps-wanted再現手順を特定すると大変有益なバグを強調します。
verifymeこのバグはQA連絡先が指示した以外の人が、最新のB2Gビルドで検証するのがokという意味です。このバグは、修正を検証するのに詳しく指定された特定マシンの設定があります。失敗の再現を試みて、Fixed の解決法が正しいと思う場合に、ステータスを Verified とマークすべきです。
crashFX OSがクラッシュするときにこのキーワードを追加してください。
- -
-

: 追加の資料として、 Bug writing guideline を参照してください。Mozillaの B2G QA Wiki ページ(英語)もFirefox OSのバグを扱うのに役立ちます。中でも、 Bugzilla Usage (英語)や Incoming bug triage for Firefox OS (英語)は特に役立ちます。

-
- -
-

: Gaia開発中のバグの扱いについての詳細情報は、Gaiaのパッチを提出するを読んで下さい。

-
diff --git a/files/ja/archive/b2g_os/developing_firefox_os/index.html b/files/ja/archive/b2g_os/developing_firefox_os/index.html deleted file mode 100644 index f11a68211d..0000000000 --- a/files/ja/archive/b2g_os/developing_firefox_os/index.html +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Firefox OS の開発 -slug: Archive/B2G_OS/Developing_Firefox_OS -tags: - - B2G - - Developing - - Firefox OS -translation_of: Archive/B2G_OS/Developing_Firefox_OS ---- -
-

このセクションでは、次の役に立つドキュメンテーションを提供します。 Firefox OS(コードネーム Boot2Gecko、あるいは、B2G)でのビルドプロセス中で修正・変更可能な様々な方法、そして、 GeckoGonk のような低レベルプラットフォームの開発を支援するための方法。

-
-
-

: 特に Gaia (FirefoxOS のユーザインタフェース)の開発の支援に興味があるのなら、Gaia の開発 のページも参照してください。

-
-

一般的な貢献についてのノート

-

Gecko は Firefox ブラウザになくてはならない部分であり、Gecko の Firefox OS に関連する部分に貢献することは、一般的な Gecko に対するものと非常に似ています。つまり、Gonk に貢献する場合もほぼ同様です。基本として知るべきことは、コミュニティについて、コードベースの仕組み、そして、バグをどのように見つけるかということです。貢献の方法について学び始めるのに良いところは、Mozilla コードベースへの貢献です。

-

まず、Gecko、それがどのように動作し、構造化されているかについて学ぶべきです。 MDN  の Gecko ホームページ には、このことについての有用なノートがいくつかあります。Mozilla Wiki の Gecko:Overview も同様です。(Firefox OS 固有の)API についての情報は、動作の概要を知るには、Mozilla Wiki の WebAPI ページを、ドキュメント化された API の すべての索引を見るには、MDN の WebAPI ページを参照してください。

-

次に、上部でFirefox OS が動作しているカーネルである Gonk を見てみましょう。Gonk は基本的に デスクトップ版 Firefox のケースのように、Mac OS X、Windows、そして  Linux のように、Gecko のもうひとつの移植の対象です。Gonk 自身は Android Open Source Project のものを基にして作られただけのものです。私たちはGonk 自身の大部分を変更しようとは考えていません。なぜなら、ソースコードの大部分は私たちの管理下ではないからです。また、私たちと一緒に Firefox OS デバイスを作っているデバイスパートナーは、たいてい、デバイスと Gecko・Gonk の間のインターフェースに対するデバイス固有のコードを提供しています。

-

しかし、API がまだ残っています。多くの Gonk 固有の Gecko コードは #ifdef MOZ_WIDGET_GONK を用いて、Firefox OS や gecko-dev/hal/gonk のような gonk サブディレクトリ内でだけ有効になっています。gecko-dev レポジトリをローカルにクローンして、中身を見てみてください。Mozilla Source Code Directory Structure の記事も役立ちます。

-

次に、Firefox OS のアーキテクチャ について、Firefox OS のビルドFirefox OS のビルドの概要から始めてください)方法、そして、他のデバイスへの Firefox OS の移植方法について学ぶべきです。

-

Firefox OS は一連の分割されたモジュールとして開発されています。Firefox OS Modules ページを参照し、コードベースがどのようにグループ化されているかを知り、助けが必要な場合に話すべきメインモジュールオーナーが誰かを知ってください。

-
-

: 助けを得るために最初に訪ねるべき場所は、dev-b2g メーリングリストMozilla IRC の #b2g チャットルームです。

-
-

固有の Firefox OS 開発トピック

-
-
- Firefox OS のバグを登録する
-
- この記事は Firefox OS でのあらゆる面に関するバグを登録するためのガイドを提供します。
-
- hosts ファイルを編集する
-
- Firefox OS の hosts ファイルを編集することによって何ができるかのガイドです。
-
- .userconfig ファイルをカスタマイズする
-
- .userconfig ファイルを変更することで Firefox OS のビルドと実行を変更する方法です。
-
- b2g.sh スクリプトをカスタマイズする
-
- b2g アプリケーションで実行されてシステムの様々な面をコントロールする、b2g.sh スクリプトを変更することによって何ができるかの説明です。
-
- Firefox OS を移植する
-
- Firefox OS を新しいデバイスに移植する方法についての情報です。
-
diff --git a/files/ja/archive/b2g_os/developing_firefox_os/localizing_firefox_os/index.html b/files/ja/archive/b2g_os/developing_firefox_os/localizing_firefox_os/index.html deleted file mode 100644 index edbe94277a..0000000000 --- a/files/ja/archive/b2g_os/developing_firefox_os/localizing_firefox_os/index.html +++ /dev/null @@ -1,185 +0,0 @@ ---- -title: Firefox OSをローカライズする -slug: Archive/B2G_OS/Developing_Firefox_OS/Localizing_Firefox_OS -tags: - - Firefox OS - - ローカライズ -translation_of: Archive/B2G_OS/Developing_Gaia/Localizing_B2G_OS ---- -

- -
-

このガイドでは、Firefox OS、特にGaiaインターフェイスやアプリのローカライズがいかに簡単かを示します。コンピュータのセットアップに始まり、Gaiaの文字列をローカライズする方法や、最後にはl10nをテストする方法まで付き添います。

-
- -
-

: これはFirefox OSのローカライズを希望するローカライザー向けのガイドです。ローカライズ可能なアプリを書きたい開発者は Firefox OS アプリをローカライズするから始めて、 その次に L10n ベストプラクティス を確認します。

-
- -

初期セットアップ

- -

Gaiaのソースファイルを入手し、お使いのデスクトップマシンにてローカライゼーションのテストを行うにはまず、これらの基本プログラムおよび言語がインストールされていることを確認してください。 

- -
-
GNU make
-
ソースコードからビルドを生成するのに役立つ細かなツールです。デスクトップ L10n のテスト準備ができれば、大変重宝するでしょう。 ダウンロードとインストール作業は容易で、GNUのウエブサイトから直接行えます。OS Xユーザであれば XCode および XCode コマンドラインツールをアップルストアからインストールする必要があります。
-
git
-
git は Gaiaソースコードを保存するために使用されるバージョンコントロールシステムです。git のダウンロードおよびインストールは容易で ウエブサイトから直接行うことができます。
-
Python
-
Python はプログラミング言語でありL10nテスト用のFirefox OSビルド生成に貢献します。ダウンロードおよびインストールは容易でPythonウェブサイトから直接行うことができます。
-
Mercurial (hg)
-
Mercurial (hg) はもうひとつのバージョン管理システムです。 l10nの利用に際し、ロケールリポジトリをはじめとするGaiaの安定したバージョンを管理します。ダウンロードおよびインストールは容易でこのウエブサイトから直接行うことができます。
-
compare-locales
-
compare-locales は Pythonのスクリプトのひとつで、ローカル化にあたっての作業評価や、diffと呼ばれる、すでにローカル化済のマテリアルからローカル化のための新しい内容を切り離すのに使用します。 ダウンロードおよびインストールは容易でcompare-locales ウィキページから直接行うことができます。なお、これはGaiaのローカライズにあたってコマンドラインもしくはテキストエディタを使用する場合のみ必要となります。Pootle, Transifex やPontoonなどのツールを使用する場合、インストール不要です。
-
- -

ローカルリポジトリをセットアップする

- -

上記ソフトウエアのダウンロードとインストール作業が完了したら、いよいよマシンにソースとローカライズされた文字列を入手します。

- -
    -
  1. コマンドラインユーティリティにおいて, Gaiaのソースと翻訳文字列の保存先を指定します。 
  2. -
  3. hgで 以下のコマンドを使ってen-US リポジトリのコピーを作ります。 -
    hg clone https://hg.mozilla.org/gaia-l10n/en-US
    -
  4. -
  5. 以下のコマンドを使ってロケールリポジトリのコピーを作ります。例として、2行目は伝統的な中国語のリポジトリを適切なディレクトリにコピーしています。 -
    hg clone https://hg.mozilla.org/gaia-l10n/your-locale-code
    -hg clone https://hg.mozilla.org/gaia-l10n/zh-TW/ B2G/gaia/locales/zh-TW
    -
  6. -
  7. 最後に このコマンドを入力します。 -
    LOCALE_BASEDIR=locales/ LOCALES_FILE=locales/languages_mine.json make
    -
  8. -
- -

ロケールファイルは languages_mine.json に記載するべきで、それはこういう構造になります:

- -
{
-  "en-US" : "English (US)",
-  "fr" : "Français (fr)"
-}
- -

このファイルでは、ずてに翻訳準備ができている文字列を一覧にすべきです! Firefox OSの新規ローカライゼーションを開始している場合、全部の文字列が翻訳すべき文字列であるようなdiffを作る必要はない事を気に留めて下さい。

- -
-

: ロケールビルドの自動化スクリプトは、このgist を参照して下さい。

-
- -

 

- -

Gaiaの文字列を翻訳する

- -

Gaiaの文字列を翻訳するワークフローは、翻訳に使用しているツールに大きく依存しています。この処理パートは他の Mozilla 製品の通常の翻訳フェーズと同様です。ローカライゼーションの翻訳フェーズのクイックスタートガイド(英語) には、Mozilla製品内の文字列を翻訳するのに使うツール一覧のほか、これらのツールでどうやって翻訳するかのチュートリアルがあります。l10nチームの一員でGaia文字列を翻訳するツールを決める時も、あるいはあなたのチームが使っているツールのチュートリアルを探している時も、このページは役立ちます。

- -

Firefox OS向けの l10n をテストする

- -

Firefox OSのl10nをテストするために、主要な方法が2つあります: デスクトップビルドとモバイルビルドです。現在、デスクトップの方法がl10n のテストに最も広く使われている方法です。

- -

デスクトップ版 l10n をテストする

- -
    -
  1. 最新のboot2gecko nightly デスクトップビルド をダウンロード、インストールします— 使用するOSに相当するパッケージをダウンロードします。localizer という言葉が含まれるパッケージを探します。これは languages-all.json に載っている全てのロケールが有効であることを示します。
  2. -
  3. 最新バージョンのGaiaをクローンするのに、デスクトップ上のダウンロードしたいディレクトリに移動して、コマンドラインユーティリティ上でこのコマンドを入力します: git clone git://github.com/mozilla-b2g/gaia.git
  4. -
  5. チームにとってFirefox OSのローカライズが初めての場合、あなたのロケールを有効にする必要があります。そうでない場合、他の誰かがロケールを有効にするまで飲み物を取ります。 -
      -
    1. コマンドラインで、あなたのgaiaクローン内を移動し、下記コマンドを実行してあなたのロケールリポジトリをクローンします: hg clone ssh://hg.mozilla.org/gaia-l10n/your-locale-code
    2. -
    3. クローンしたばかりのgaiaリポジトリ内のshared/resources ディレクトリにあるlanguages.jsonファイルを開きます。
    4. -
    5. このフォーマットでロケール情報を追加します: "en-US" : "English (US)"、そしてファイルを保存します。
    6. -
    7. 最後に、次ののコマンドを実行します: make multilocale これでデスクトップビルドであなたのロケールが有効になります。
    8. -
    -
  6. -
  7. Gaiaプロファイルを作成するのに、このコマンドを実行します: DEBUG=1 make -C gaia profile
  8. -
  9. ついに、あなたのロケールプロファイルでFirefox OSを実行してテストを開始でできます。それにはこのコマンドを入力します: b2g/b2g -profile gaia/profile OS Xを使っている場合は、このコマンドを実行します: /Applications/B2G.app/Contents/MacOS/b2g -profile gaia/profile
  10. -
  11. デスクトップビルドを更新するため、単にあなたのGaiaリポジトリクローンを移動してこのコマンドを入力します: git pull
  12. -
- -

モバイル版l10n をテストする

- -

もっと多くのFirefox OSサポート端末がローカライザーの手に届くにつれ、この節は成長します。

- -

l10n をテストする時に何を探すのか

- -

モバイルOS向けのローカライゼーションをテストするのは、デスクトップアプリのローカライゼーションをテストするのと同様な点があります。あなたの作業のローカライゼーションテストを実施する時に探すべきガイドラインがここにあります:

- -
    -
  1. UIテキスト要素内から翻訳がはみ出していないかを見ます。
  2. -
  3. 文調、スタイル、専門用語がプロタクト全体で一貫しているかを確認します。
  4. -
  5. 翻訳されない英語文字列がUIの中にないか探します。これらはGaia内でハードコードされたり、要素IDのエラーにより起きている可能性があります。
  6. -
  7. 時間と日付表示が地域の標準に一致しているかを確認します。
  8. -
- -

ローカライゼーション特有のバグを探す

- -

電話機を使用している時に起こったバグ例を与えるようなbugzillaリンクがこちらです。このような種類のバグ登録にあたり、ある例と同様なバグをどこで探すかのアイデアをもたらすでしょう。

- - - -

ローカライゼーションバグを見つける一般ルールは:

- - - -

Moztrap を使う人用に、FirefoxOS "localization" タグの下の既存のテストケースを見たり、端末上でテストがパスするかを見てみることも、Firefox OSのローカライゼーションをテストする良い方法です。

- -

次には

- -

今やローカライゼーションを始める準備完了です! なので好みの l10n ツールを開いて進みましょう!  通常どおり、この文書に載っていない疑問は、mozilla.dev.l10n newsgroup へ送って下さい。

diff --git a/files/ja/archive/b2g_os/developing_firefox_os/modifying_hosts_file/index.html b/files/ja/archive/b2g_os/developing_firefox_os/modifying_hosts_file/index.html deleted file mode 100644 index 1cc420bc50..0000000000 --- a/files/ja/archive/b2g_os/developing_firefox_os/modifying_hosts_file/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: hostsファイルを編集する -slug: Archive/B2G_OS/Developing_Firefox_OS/modifying_hosts_file -tags: - - Android - - B2G - - Firefox OS - - hosts -translation_of: Archive/B2G_OS/Developing_Firefox_OS/modifying_hosts_file ---- -
-

時々、マシンのhostsファイルを変更することが必要になるでしょう。攻撃のためや、望ましくない接続をブロックしたり、リクエストを特定IPにリダイレクトしたり、など。この記事ではFirefox OSの電話機でhostsファイルを変更する方法を説明します。それはLinuxの例では /system/etc に、新し目のMac OSXバージョンでは単に etc/ の場所にあります。

-
-

電話機の準備

-

電話機でDeveloper settings panelに移動して、下記をチェックします:

- -

次に電話機をコンピュータに接続します。

-

この時点で、hostsファイルの編集手順はAndroidと同様です。Android開発者は調子に慣れるでしょう。

-

ターミナルでのステップ

-
    -
  1. ターミナルウィンドウを開きます。
  2. -
  3. 端末上に /system - <style type="text/css"> - </style> - パーティションを再マウントし、読み書きのパーミッションを得ます。 -
    adb remount
    -
  4. -
  5. hostsファイルをコンピュータに取得します。 -
    adb pull /system/etc/hosts /tmp
    -
  6. -
  7. /tmp/hosts 内のhostsファイルを必要に応じ変更して保存します。例えば: -
    127.0.0.1         localhost
    -ip.to.re.direct   hostName
    -
  8. -
  9. 変更したhostsファイルを端末へプッシュします。 -
    adb push /tmp/hosts /system/etc/hosts
    -
  10. -
-

やりました; もうhostsファイルが更新されているはずです。

-
-

: ADBをもっと学習するには? ADB documentationを見てみて下さい。

-
-

 

diff --git a/files/ja/archive/b2g_os/developing_gaia/customizing_build-time_apps/index.html b/files/ja/archive/b2g_os/developing_gaia/customizing_build-time_apps/index.html deleted file mode 100644 index 0b079cdd8d..0000000000 --- a/files/ja/archive/b2g_os/developing_gaia/customizing_build-time_apps/index.html +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: ビルド時のアプリをカスタマイズする -slug: Archive/B2G_OS/Developing_Gaia/Customizing_build-time_apps -tags: - - Apps - - Customization - - Firefox OS - - Gaia - - Guide - - ガイド -translation_of: Archive/B2G_OS/Developing_Gaia/Customizing_build-time_apps ---- -

- -
-

開発者や端末ベンダとして、様々な理由から Firefox OS 端末の初回実行時に出てくるアプリをカスタマイズしたくなるでしょう。この記事ではそうするための異なる仕組みを説明します。

-
- -

Gaia内のアプリの場所

- -

Firefox OS で動かされるアプリは、Gaiaソースツリー内の2つの場所に含まれます:

- - - -

あなたのGaia/B2Gビルドで省略/追加したい場合、下記に述べる色々な方法でできます。

- -

ブルートフォースでカスタマイズする方法

- -

"ブルートフォース"手法は、単に今回のビルドに入れたくないアプリを、ビルド前に削除します。

- -

設定リストを編集する

- -

より洗練された方法は、apps-*.list ファイル (gaia/build/config/ の中の色々な端末ディレクトリ、例えば phone/tablet/ の中に見られる) を編集して、ビルド時に含めたいアプリへのパスを入れます。例えば、gaia/build/config/phone/apps-production.list は下記のようです:

- -
apps/bluetooth
-apps/bookmark
-apps/browser
-apps/calendar
-apps/callscreen
-etc.
- -

注意点として、ディレクトリ内の全アプリを指定できます、このように:

- -
apps/*
- -

ビルド時に利用できるアプリを決定するのに、どのapps-*.list ファイルが使われるかを選ぶ仕組みは gaia/Makefile 内にあり、下記のようです:

- -
GAIA_DEVICE_TYPE?=phone
-  ...
-GAIA_APP_TARGET?=engineering
-  ...
-ifeq ($(MAKECMDGOALS), demo)
-GAIA_DOMAIN=thisdomaindoesnotexist.org
-GAIA_APP_TARGET=demo
-else ifeq ($(MAKECMDGOALS), dogfood)
-DOGFOOD=1
-else ifeq ($(MAKECMDGOALS), production)
-PRODUCTION=1
-endif
-  ...
-ifeq ($(PRODUCTION), 1)
-GAIA_OPTIMIZE=1
-GAIA_APP_TARGET=production
-endif
-
-ifeq ($(DOGFOOD), 1)
-GAIA_APP_TARGET=dogfood
-endif
-  ...
-ifndef GAIA_APP_CONFIG
-GAIA_APP_CONFIG=build$(SEP)config$(SEP)apps-$(GAIA_APP_TARGET).list
-endif
- -

最初は、the GAIA_APP_TARGET 変数に engineering が、the GAIA_DEVICE_TYPE phone がセットされます、なのでGaiaをソースからビルドするのにデフォルトでは gaia/config/phone/app-engineering.list (この中に全てのテスト、デモなどがあります)が使われます。

- -

他のアプリリストを使用するよう指定するには、make コマンド実行時に別のオプションを指定します。例えばgaia/build/config/phone/apps-production.listを使ってビルドするには、これを使います。

- -
PRODUCTION=1 make
- -

DEMO=1 を指定してビルドする場合、apps-demo.listが使われます。DOGFOOD=1 を指定してビルドする場合、apps-dogfood.listが使われます。

- -

gaia/Makefile 内の GAIA_APP_CONFIG を編集して、完全に指定を上書きしたり、自分自身の apps-*.list ファイルを提供したりできます。

- -

gaia/Android.mk には下記の行が含まれます:

- -
ifneq ($(filter user userdebug, $(TARGET_BUILD_VARIANT)),)
-GAIA_MAKE_FLAGS += PRODUCTION=1
-B2G_SYSTEM_APPS := 1
-endif
- -

ビルド時に、VARIANT=user や VARIANT=userdebug がセットされた場合 (これらはTARGET_BUILD_VARIANT 変数の反映まで巻き戻ります)、 Gaiaビルド時に PRODUCTION=1 が自動的にセットされます。

- -
-

: 他にどんな make オプションが使えるのかはmake オプションのリファレンスで見つけられます。

-
- -

Marketのカスタマイズを使う

- -

3つ目の、最も洗練された (だが最も複雑な) 方法はカスタマイズの使用です。これによってビルド時に個別のディレクトリ内でカスタマイズ指示をする事が、コアGaiaリポジトリを変更することなく可能になります。別個のディレクトリ内に独自のカスタマイズを入れたり、ソース由来の既存ディレクトリを使用したりできます。

- -

例えば、GAIA_DISTRIBUTION_DIR 変数により、場所の指定をカスタマイズするサンプルは、このようになります:

- -
GAIA_DISTRIBUTION_DIR=<DISTRIBUTION_PATH> make production
- -

配布の仕組みをもっとカスタマイズする例は、https://github.com/mozilla-b2g/gaia/tree/master/customizationを参照して下さい。

- -

カスタマイズは完全に別の話題です。これをもっと知るには、Market Customizations guideを読んで下さい。

- -
-

: あなたのGaiaビルドの一部に特別な外部アプリを入れたい場合、それらを特定の方法でビルドして、次に gaia/dev-apps/ フォルダ内に置く必要があります。Building Prebundled web appsを読んで詳細を見つけて下さい。

-
- -
-

重要: 端末ベンダーが配布用の B2G/Gaia ビルドを作成する場合、Firefox Marketplaceアプリを電話・タブレット・その他に含める許可を得る前に、一定の条件を満たす必要があります。詳細は Mozilla まで連絡して下さい。

-
- -

 

diff --git a/files/ja/archive/b2g_os/developing_gaia/customizing_the_keyboard/index.html b/files/ja/archive/b2g_os/developing_gaia/customizing_the_keyboard/index.html deleted file mode 100644 index d1bb0a1b8c..0000000000 --- a/files/ja/archive/b2g_os/developing_gaia/customizing_the_keyboard/index.html +++ /dev/null @@ -1,234 +0,0 @@ ---- -title: Firefox OS 内でキーボードをカスタマイズする -slug: Archive/B2G_OS/Developing_Gaia/Customizing_the_keyboard -tags: - - Firefox OS - - ガイド - - キーボード -translation_of: Archive/B2G_OS/Developing_Gaia/Customizing_the_keyboard ---- -

- -
-

この文書では Firefox OS v1.2 以上で、独自の言語/スクリプトを含んだカスタムキーボードレイアウトをどうやって追加するのかを説明します。

-
- -

Gaiaビルトインのキーボードアプリと、システム構造の状況

- -

Firefox OSには、2013年10月以降、2つの主流なキーボード機能が実装されています。

- - - -

電話機に新しいキーボードレイアウトを含めるには、Gaiaの中にカスタムレイアウトのファイルを置いてからビルドコンフィグを用いてキーボードアプリをビルドするか、自分自身のキーボードアプリを開発して電話機にインストールすることができます。それぞれの方法を見て行きましょう。

- -

独自のキーボードアプリを開発する

- -

Gaiaのビルトインアプリをテンプレートに使うか、フォークできます。 基本的な考え方は:

- - - -

その後に、キーボードをインストールできて、ユーザが入力フィールドにフォーカスさせる度にスクリーンの下端側にキーボードが出るようになります。 これによって起きるスペースの問題は、下記のように処理できます:

- - - -
-

: LOL キーボード のデモは、キーボードアプリがどう構築されるのかをより良く理解する助けになり、かつあなた自身のキーボードアプリのテンプレートになるでしょう。

-
- -

Gaiaキーボードアプリにカスタムレイアウトを含める

- -
    -
  1. 詳細情報は keyboard CONFIGURE details を見ます。辞書を追加したり、(アジア言語用の)双方向なIMEを入れたりしたい言語に依存します。
  2. -
  3. 新規サポート言語のレイアウトを追加したい場合、それを build/config/keyboard-layouts.json 内の、言語のデフォルトレイアウトに追加したいかもしれません。
  4. -
- -

アジアのIME

- -

東アジア言語 (中国語、日本語、韓国語) は幾千の文字を含んだ、遥かに複雑な活字を使っています。ハードウェア・ソフトウェアキーボード上に数千のキーを配置する方法はないので、ユーザは一連のシンボルを文字選択に変換するため、input method editor、略してIMEに頼っています。
-
- シンボル変換の方法やIMEが "スマート" であるかは、選んだIMEや、実装自体や、またしばしば、この文書の範囲外のNLP scienceに依存します。メモリを節約するため、データをバイナリブロブにコンパイルしてアレイバッファとして読み込むのが推奨されます; 複雑なJSON構造は実端末では動作しないでしょう。

- -

Gaiaキーボードアプリ内のIMEインターフェイス

- -

シンボルを文字列に変換するIMEライブラリ(専門用語で''IM エンジン''という) がすぐ使える場合、レイアウトからシンボルを受け取って文字列を出力する定義済みインターフェイスが、Gaiaキーボードアプリ内に必要になるでしょう。今のAPIはGithub上に文書化されています

- -

我々は更にGaia内でAPIを洗練させるため、実装を促しています。

- -

IMエンジンをあなたのレイアウトで動作させる

- -

IMエンジンがあなたのキーボードレイアウトで動作するようにするには:

- -
    -
  1. IMエンジンに新規レイアウトを導入する、下記記載の通りに。
  2. -
  3. imEngine プロパティでIMエンジンを参照する。レイアウトが有効な時、キーボードアプリはkeyboard/js/imes/<imEngine>/<imEngine>.jsにあるスクリプトをロードするでしょう。
  4. -
  5. スクリプトがロードされて初期化された時、キー/文字を送受信するためにAPIをセットアップします。
  6. -
  7. ユーザ入力に応答を望むあらゆることをします。ユーザがキーボードのキーをタップした時、典型的にはIMエンジンに送られます。
  8. -
- -

知られている実装

- - - -

ローカライズ担当者の視点からの新規ロケール

- -
-

: この節は主にアルファベットの言葉について当てはまります; (アムハラ語のような)アブギダ や、(中国語のような)象形文字システムはもっと複雑です。

-
- -

一般的に、新規ロケール追加には2つの事が必要です: キーボードレイアウト 辞書(テキスト予想機能用に)です。

- -

キーボードレイアウトを作成する

- -

キーボードレイアウトファイルはJavaScriptファイルに含まれていて、どのキーがキーボードにあるかと、どのキーがどの文字とシンボルになるかを、長押しで使える2つ目のオプションを含めて定義します。最も率直な方法は、既存のキーボード GitHub から取って、名前を変更して調整する事です。

- -

最初にヘッダを変更する必要があります。キーボードが en-US に近く、ロケールをスコットランド ゲール語 (gd)としてみましょう。こうなっているのを:

- -
Keyboards.en = {
- label: 'English',
- shortLabel: 'En',
- imEngine: 'latin',
- types: ['text', 'url', 'email', 'number', 'password'],
- autoCorrectLanguage: 'en_us',
- menuLabel: 'English',
- -

こう変更します:

- -
Keyboards.gd = {
- label: 'Scottish Gaelic',
- shortLabel: 'gd',
- imEngine: 'latin',
- types: ['text', 'url', 'email', 'number', 'password'],
- autoCorrectLanguage: 'gd_gb',
- menuLabel: 'Gàidhlig',
- -

label 欄は英語でのあなたの言語で、shortLabel 欄は最大3文字です; これは画面上のキーボードに表示される省略形で、ユーザが現在使っている言語がわかるようになっています。ISOコードも使えますが、その他の適切なものも使えます。menuLabel 欄はあなたの言語での言語名です: これはユーザがメニューオプションで見るものです。

- -

レイアウトが終わった場合、唯一調整が必要となる事は、(UIでは長押しでアクセスできる) 代替文字です:

- -
alt: {
-  a: 'áàâäåãāæ',
-  c: 'çćč',
-  e: 'éèêëēę€ɛ',
-  i: 'ïíìîīį',
-  o: 'öõóòôōœøɵ',
-  u: 'üúùûū',
-  s: 'ßśš$',
-  S: 'ŚŠ$',
-  n: 'ñń',
-  l: 'ł£',
-  y: 'ÿ¥',
-  z: 'žźż',
-  '.': ',?!;:'
-},
- -

長押し時の文字の順番と文字数の両方を変更できます。この場合、ゲール語のユーザは "鋭アクセント" よりも "重アクセント" をよく使うため、順番をこう変更します:

- -
a: 'àáâäåãāæ',
- -

ドットつき子音のオプションを与えたいため、このような新規行を追加します:

- -
b: 'ḃ',
- -

たぶん代わりのレイアウト(数字や句読点など用) や、通貨シンボルが正しく表示されているかを確認したくなるでしょう。

- -

辞書を作成する

- -

変換辞書もあると良いでしょう、ない場合はユーザは各単語毎にタイプしなければならず、単語予想を使えなくなります。

- -

この用途で (理想的には) なんらかの形の、頻度で単語をランクづけるコーパスが必要になるでしょう。例えば there という単語は thespian より遥かによく出るので、ユーザが the とタイプした時に、 therethespian より前にサジェストされるべきです。

- -

これは辞書 (XML ファイル; 既存のものはここで見られます)の中で、1 (最小頻度) から 255 (最大頻度) を各単語 (または 行) に割当てることで完了します。次が作成を要するものです:

- -
<wordlist locale="gd" description="Gàidhlig" date="1401554807" version="1">
- <w f="255" flags="">a</w>
- <w f="254" flags="">an</w>
- <w f="247" flags="">agus</w>
- -

素早く汚い辞書 (例えば大きなテキストを取ってきて頻度を数えたもの) でも役立つでしょう。あなたのロケールでそんなデータが全くなく、デジタルテキストが多くない場合には、言語の知識を使って、共通経験を元に手動で単語のランクづけをします。

- -

ファイルをビルドする

- -

いったん js と 辞書ファイルができたら、ここのgaiaディレクトリ に移動してMakefile を開きます。辞書の名前をリスト (例えば gd_wordlist.xml と言う場合) に追加して、置きます:

- -
ga.dict \
-gd.dict \
- -

gd_worldlist.xml ファイルがフォルダに入っているのを確認して、次を実行します $ make gd.dict

- -

ここまで来たけども、.dict ファイルをビルドする最終ステップで詰まった場合、バグ登録して (Componentは: Gaia Keyboard) ファイルを添付して何が問題なのかを説明して下さい。誰かが助ける事ができるでしょう。パッチをプルリクエストとして投稿するのを確認して for review to someone(だれかのレビュー用)のフラグを立てます、そうしないとバグは気づかれないでしょう。

- -

あなたの新ロケールをテストする

- -

新規ロケールのビルドとコミットを終えたら、新キーボードと事象をテストする最速の手順は、キーボードアプリを走らせる我々のwebベースのデモページ です。En をクリックしてロケールを循環させて下さい。あなたのぶんが見えない場合、(右上の)スパナのシンボルをクリックして、テストしたいキーボードを tick/untick します。

- -

議論と質疑

- -

dev-gaia メーリングリストに来るか、 irc.mozilla.org の #gaia チャンネルに来て下さい(詳しくは Mozilla IRC へ)。#mozilla-taiwan はこのトピック向けの、中国語のデファクトのチャンネルです。

diff --git a/files/ja/archive/b2g_os/developing_gaia/different_ways_to_run_gaia/index.html b/files/ja/archive/b2g_os/developing_gaia/different_ways_to_run_gaia/index.html deleted file mode 100644 index 2eb6addb95..0000000000 --- a/files/ja/archive/b2g_os/developing_gaia/different_ways_to_run_gaia/index.html +++ /dev/null @@ -1,159 +0,0 @@ ---- -title: Gaiaを実行する色々な方法 -slug: Archive/B2G_OS/Developing_Gaia/Different_ways_to_run_Gaia -tags: - - B2G - - Firefox - - Firefox OS -translation_of: Archive/B2G_OS/Developing_Gaia/Different_ways_to_run_Gaia ---- -
-

Gaiaを実行するのは、WebIDE経由のsimulatorや、デスクトップ版Firefox内で直接や、専用のデスクトップビルド(デスクトップ B2G)や、エミュレータや、互換のモバイル端末で可能です。この記事ではそれぞれの方法の要約と、詳細情報へのリンクを提供します。

-
- -

実物にどれだけ近いか?

- -

この記事で詳しく述べるGaia実行用の方法は、他のものより実端末の経験に近いです。実行が簡単な順だと、次の通りです:

- -
    -
  1. Simulator内でのGaia
  2. -
  3. B2Gデスクトップ内でのGaia
  4. -
  5. Firefox Mulet内でのGaia
  6. -
  7. エミュレータ内でのGaia
  8. -
  9. 電話機に焼いたGaia
  10. -
  11. 電話機に焼いたGaia+Gecko
  12. -
- -

“出荷製品に近いか” の順番はこの正反対です。取り組む機能によっては、問題に合った環境を見つけないといけないでしょう。

- -

Firefox OS SimulatorによってWebIDE内のGaiaを使用する

- -

最速の方法はWebIDE(デスクトップ版Firefoxで利用できる開発ツール)経由でGaiaを試す事です。これはHTML5のwebアプリをFirefox OS端末・Firefox OS Simulatorでテスト、デプロイ、デバッグするための数々の便利なツールを、ブラウザから直接に提供します。
-
- デスクトップ版 Firefox ブラウザ 34+で、WebIDE を ツール > Web 開発 > WebIDE から開きます。右上の実行メニューを開いて Simulator をインストール、起動します。

- -

自分の Gaia ビルドを実行するには、手順が少し複雑ですが、まだとても簡単です:

- -
    -
  1. これを実行してみる前に、自身で Gaia デバイスデバッグプロファイルをビルドすべきです — 自分のGaia リポジトリクローンに移動し、 DEVICE_DEBUG=1 make を実行します。これは内部の Gaia アプリをすぐにデバッグできることと、加えてsimulatorを起動するごとにリモートデバッグの確認ダイアログを承認しなくてよいことを意味します。
  2. -
  3. Firefox を開きます(Nightly 推奨)
  4. -
  5. WebIDE を ツール > Web 開発 > WebIDE から開きます。
  6. -
  7. WebIDEで ランタイム > シミュレータをインストール を選びオプションを選択してFirefox OS Simulator をインストールします。Gaia バージョンと同じシミュレータバージョンを使っているのを確認します (例えば、あなたのGaia ブランチが 2.1 の場合、Firefox OS Simulator 2.1を使う必要があります)。
  8. -
  9. デスクトップ版Firefox に戻り ツール > アドオン を選択します。Firefox OS Simulator 2.2 の設定 ボタン(または自身の Gaia を組み込もうとするあらゆるバージョン)をクリックします。
  10. -
  11. 設定で Select a custom Gaia directoryをクリックし、次にGaia デバイスデバッグプロファイルのディレクトリを選択します。
  12. -
  13. WebIDE内でSimulatorを起動すると、今度はあなたの Gaia プロファイルを実行しているはずです。
  14. -
- -
-

: シミュレータをリセットしたい場合、カスタムGaiaプロファイルはもう動作していません。Firefoxの about:configへ移動する必要があり、extensions.fxos_2_2_simulator@mozilla.org.gaiaProfile 設定を探し (2_2 はカスタマイズするシミュレータのバージョンによって違うかもしれません)、ダブルクリックして、出てきたダイアログボックスで空の値を入れ、OKを押します。

-
- -
-

: Gaia の master ブランチは速く変わるため、時々最新発行のシミュレータがいくらか遅れをとります。master ブランチを実行しようとしていてそれが動作しないのに気づいた場合、 (この時 WebIDE は通常 "Operation timed out" のエラーメッセージを出します)、最新のnightly シミュレータ ブランチをダウンロードして、それで代用してみるべきです — Nightly Mozilla Central を見て、自身のシステムにあった fxos-simulator-*.xpi ファイルをダウンロードします。記憶すべきは、この nightly ビルドは機能リリースするために自動更新はしません。更新を所得したい場合、公式ビルドに戻る必要があるでしょう。

-
- -

B2G デスクトップ

- -

B2G デスクトップは、Firefox OS 端末で使われるアプリのランタイムのデスクトップ版で、Gaia をデスクトップコンピュータで実行できます。これはもうすぐFirefox Mulet (下記を見て)に置き換えられます(いったんMulet が十分安定した時に)。

- -

B2G デスクトップのnightly ビルドFirefox Nightly サイトからダウンロードできます。 どのバージョンをターゲットにするかによって、latest-mozilla-b2g18 の特定バージョンが望まれるかもしれません。Linux (32 bit と 64 bit)や OS X や Windows用のビルドがあります。

- -

Nightlyビルドはgaiaの最近のバージョンでパッケージされています。いったんアーカイブをダウンロードしたら、必要なのはフォルダに展開して b2g バイナリを展開済みフォルダから実行するだけです。

- -
$ cd b2g
-$ ./b2g
- -

あなた自身の開発用バージョンの Gaia と共にB2G を実行するには、まずあなたのクローンからのビルドプロファイルが必要です:

- -
$ cd /path/to/gaia
-$ DEBUG=1 DESKTOP=0 make
- -

これは gaia ディレクトリ内に profile というディレクトリを生成します。DEBUGパートは Gaia を、デフォルトのパッケージアプリ(変更のたびに再度パッケージ化が要る)ではなく、ビルトインのwebサーバ上のホスト型アプリとして実行します。profileディレクトリへのパスは、上記コマンド実行後の最終行を見ることで見つけられて、それは次のようなものです:

- -
Profile Ready: please run [b2g|firefox] -profile /path/to/gaia/profile
- -

B2G デスクトップを生成されたプロファイルで、このように実行できます:

- -
$ ./b2g /path/to/gaia/profile
- -

望むなら、あなた自身の B2G デスクトップをソースからビルドできます。

- -
-

記: OS Xでは、 b2g バイナリは B2G.app の内部にあるでしょう。このプラットフォームで B2G デスクトップを実行するには、下記のコマンドが必要となるでしょう:
- ./B2G.app/Contents/MacOS/b2g /path/to/gaia/profile

-
- -

Firefox Mulet内のGaiaを使用する

- -

Firefox Muletと呼ぶFirefoxの特殊ビルド内でGaiaを実行することもできます。これには素早い開発サイクルと、標準web開発ツールやデバッガが利用できるメリットがあります。

- -
-

: Firefox Mulet は現在開発の初期段階で、たぶんバグを見つけるでしょう。それらに出くわしたら報告して下さい。

-
- -
    -
  1. まず最初に、 Gaia リポジトリを自身のマシンにクローンします (このプロジェクトに貢献したい場合、一番よい方法はRunning your own Gaia build を見て下さい。) Mulet は Gaia 2.2 以上だけで動作するので、master ブランチを使うのが妙案でしょう。
  2. -
  3. 次に、Gaiaリポジトリに cd して、make を使って自身のプロファイルをビルドします (色々な変数の種類については make オプションのリファレンスを見て下さい。)  将来的には、Mulet は複数のビルドタイプをサポートし、もっと簡単にアプリをデバッグできるツールが追加されるでしょう。 (例えば、更新をテストする場合に個々のアプリを再起動すること)
  4. -
  5. いまやnightly Firefox Mulet ビルドのダウンロードが必要です — Mozilla Central で見つかります。 Mulet ビルドは firefox-* で始まる名前のパッケージ、例えば firefox-36.0a1.en-US.mac64.dmg — となり、あなたの開発マシンに適切なビルドを選択して下さい。
  6. -
  7. いったんダウンロードすると、Mulet ビルドを Firefox Nightly ビルドを上書きしない安全な場所にインストールします。例えばMac OS Xでは、"mulet"というアプリケーションの中にフォルダを作り、そこにドラッグします。
  8. -
  9. いまや Mulet ビルドを、 開いた時に使うプロファイルとしてGaia プロファイルを渡して ( -profile オプションで指定) コマンドラインから実行します。例えば Mac OS Xではアプリケーションフォルダ内からこのように実行できます: -
    ./mulet/FirefoxNightly.app/Contents/MacOS/firefox-bin -profile /Users/my-home-folder/git/gaia/profile/
    -
  10. -
- -

結果 Mulet ビルドが、次のように起動します:

- -


- この画面で、Gaiaアプリをデバッグするために使える標準 Firefox Toolboxや、更に左側に実行している Firefox OS のエミュレーションや、その他数々のGaiaコンテキストに有益なツールを入手しました。エミュレータの上のコントロールは次のことができます:

- - - -
-

: 現在ホームボタンは動作しておらず、時には画面が不調になります。ブラウザのタブをリフレッシュする事で、この問題を回避できます。

-
- -

実端末にGaiaを書き込む

- -
-

重要: Gaia をTarako や Spice Fire Oneといった低メモリ端末に書き込んでみる場合、特別に低メモリに最適化されたGaiaブランチ、例えば 1.3t branchを焼くべきです。低メモリ端末にGaiaのmasterブランチを焼いてみるのは、たぶん電話機が反応しない結果になるでしょう。

-
- -

実端末に Gaia の新バージョンを書き込むには:

- -
    -
  1. まずGaiaリポジトリがあなたのコンピュータにクローンされていて、 ADB がインストールされているのを確認します。
  2. -
  3. USB経由のデバッグ が有効になっているのを確認します。
  4. -
  5. 端末をUSB経由でコンピュータに接続します。
  6. -
  7. 端末が接続すると、下記のコマンドを処理できます。あるいは (Windows や Linux ディストリビューションのユーザは) OEM USB ドライバのページを確認して、コンピュータに正しいUSBドライバをセットアップしないといけない可能性もあります。
  8. -
  9. Gaia リポジトリで次のコマンドを実行して、電話機を再起動して Gaia ソースコードを更新します: -
    $ make reset-gaia
    -
  10. -
  11. 非システムアプリをテストするには、端末わ再起動することなく、次のコマンドでインストールできます: -
    $ make install-gaia
    -
  12. -
  13. 特定アプリだけをインストールする場合、APP 変数で次のように引き渡せます: -
    $ make install-gaia APP=browser
    -
  14. -
- -
-

: make install-gaia / make reset-gaia を使って端末にGaiaをプッシュすると、デフォルトで 1倍の解像度アセットのGaiaをビルドします。もっと高い解像度アセットを指定するには、makeオプションの GAIA_DEV_PIXELS_PER_PX or GAIA_DPPX を使う必要があります (このオプションについてのより詳細は 高解像度イメージアセット を見て下さい)。この方法で端末に Gaia をプッシュした時は、関連の make オプションに端末のスケールファクタを付けて指定します、例えば Flame端末向けには make install-gaia GAIA_DEV_PIXELS_PER_PX=1.5 とする (または 2, や 2.5, など; スケールファクタの値は 512 icon for device display内の表を見て下さい。)

-
- -

端末が正しくUSB接続されているか確認するには、こう打ちます:

- -
$ adb devices
- -

こんな結果を得るでしょう:

- -
List of devices attached
-emulator-5554  device
- -

エミュレータや実機でGeckoとGaiaをビルドして使用する

- -

互換モバイル端末を持っていれば、あなた独自バージョンの Firefox OSをビルド・インストールできて、エミュレータ上や端末にプッシュして、これを実行できます。

diff --git a/files/ja/archive/b2g_os/developing_gaia/gaia_tools_reference/index.html b/files/ja/archive/b2g_os/developing_gaia/gaia_tools_reference/index.html deleted file mode 100644 index 678038e952..0000000000 --- a/files/ja/archive/b2g_os/developing_gaia/gaia_tools_reference/index.html +++ /dev/null @@ -1,189 +0,0 @@ ---- -title: Gaia ツールのリファレンス -slug: Archive/B2G_OS/Developing_Gaia/Gaia_tools_reference -tags: - - Firefox OS - - Gaia - - Reference - - Référence(2) - - Tools -translation_of: Archive/B2G_OS/Developing_Gaia/Gaia_tools_reference ---- -

- -
-

この記事では、Gaia での作業のための利用可能な便利なツールを紹介します。

-
- -
-

Note: You can find a number of very useful tips and tricks on debugging Firefox OS at the B2G QA Tips and tricks page.

-
- -

MozITP

- -

MozITP is an all-in-one package bundle for Gaia related tools. It contains pre-configured flash tool (b2g_util), b2g-installer and Gaia Integration Test environment. You can use MozITP to test Gaia Integration Test on Mulet, emulator or real devices. You can also flash builds from TaskCluster or b2g-installer blob-free builds.

- -

Foxbox

- -

Foxbox is a build automation script that builds a full Gaia development environment with the Gaia build hosted inside a VM, which is also accessible from the host machine (meaning you can still workon it using your favourite text editor, etc.) This works on all platforms, but should be especially useful to Windows users as the regular Gaia build procedure doesn't work on a standard Windows environment.

- -

Backup/restore/flashing tools

- -

Tools to backup your profile, etc.

- -

b2g_util

- -

The b2g_util tools package provides a variety of tools to help you with debugging Firefox OS. It can:

- - - -

To install it, you first need Python 2.7, pip, and setuptools. then you can run:

- -
sudo pip install -U b2g_util
- -

Once installation is complete, you can connect your device and test it by issuing the following command to get the installed b2g version:

- -
b2g_check_versions
- -

pc-sync-tool

- -

The pc-sync-tool is an app available in the Firefox Marketplace that backs up your data/profile. It must be used in conjunction with the Firefox OS assistant add-on for desktop.

- -

Backup and restore profile

- -

To backup and restore data you can use our backup_restore_profile.py tool, which is contained in the B2G-flash-tool Git repo.

- -
    -
  1. Clone the above repo (git clone https://github.com/Mozilla-TWQA/B2G-flash-tool.)
  2. -
  3. Make sure that your phone is connected via USB to your computer, and that ADB (see Important steps to follow first above) and Debugging via USB (in your device's Developer settings) are enabled.
  4. -
  5. cd into the cloned directory
  6. -
- -

To backup data:

- -
python backup_restore_profile.py -b
- -

This should save your device profile to a directory called mozilla-profile, in the same directory as the script is located. To restore your backup:

- -
python backup_restore_profile.py -r
- -
-

Note: To display a full list of options for the tool, run it with a -h or --help flag.

-
- -

B2G-flash-tool

- -

The B2G-flash-tool repo also contains many other tools for rapid flashing of new builds to devices and related tasks — ideal for QA work. For example:

- - - -

Debugging tools

- -

Tools that perform debugging functions.

- -

WebIDE

- -

Firefox's WebIDE tool deserves a special mention here — as well as just testing and debugging apps, it is also useful for monitoring performance, memory usage, etc. (see Monitoring performance.)

- -

get_crashreports.sh

- -

Contained with the the B2G-flash-tool repo, get_crashreports.sh retrieves device crash reports (/data/b2g/mozilla/Crash Reports/.)

- -

B2G root directory tools

- -

There are a number of scripts in the B2G root directory that perform various useful debugging functions, such as:

- - - -

Other misc tools

- -

There are a number of helpful tools located in the gaia/tools/ directory, and other places

- -

png_recompress.sh

- -

Located at gaia/tools/, png_recompress.sh is a PNG image compressor. You can run it with the following command structure:

- -
$ ./tools/png_recompress.sh -v bg.png
- -

This will remove unnecessary metadata and further compress the png; it can save up to 99.5% of the file size, which has a very measurable impact on an app's ZIP size and memory footprint.

- -

svg_recompress.sh

- -

Located at gaia/tools/, svg_recompress.sh is an SVG compressor.

- -

cache_sync.py

- -

Located at gaia/tools/, cache_sync.py synchronizes the offline cache of an external app into a local directory structure. This should be run from the base directory of an app in gaia/external-apps. It builds a directory for each known origin in the offline cache.

- -

edit_prefs.sh

- -

Located in the B2G root directory, edit_prefs.sh provides an easy way to retrieve device prefs.

diff --git a/files/ja/archive/b2g_os/developing_gaia/index.html b/files/ja/archive/b2g_os/developing_gaia/index.html deleted file mode 100644 index 58186bcdcb..0000000000 --- a/files/ja/archive/b2g_os/developing_gaia/index.html +++ /dev/null @@ -1,129 +0,0 @@ ---- -title: Gaia の開発 -slug: Archive/B2G_OS/Developing_Gaia -tags: - - Firefox - - Gaia - - Mozilla - - OS - - UI -translation_of: Archive/B2G_OS/Developing_Gaia ---- -

- -
-

Gaia は B2G OS のユーザインタフェイスで、デフォルトアプリスイートです: 画面ロック、ホーム画面、電話、その他のアプリが含まれています。Gaia は本来 B2G OS プラットフォームの上位層で起動する Web アプリの集合です。Gaia プロジェクトに貢献するために知っておく必要がある記事を紹介します。

-
- -

このガイドでは、Gaia に貢献するための効果的なワークフローを一通り紹介します - そして、これにより、Gaia コードベースに機能を追加し、Gaia プロジェクトについて登録されたバグに取り組むことを意味します。最初の記事群は、順番に読んでください。また、特定のプロセスの見方についてリフレッシュする必要がある場合は、関連したセクションまで読み飛ばすこともできます。

- -

その後には、追加のトピックスについてのリファレンスや情報が提供されています。

- -

- -

基礎

- -
    -
  1. Gaia コードベースを実行する
  2. -
  3. Gaia コードベースを理解する
  4. -
  5. Gaia のコードに変更を加える
  6. -
  7. Gaia のコードの変更をテストする
  8. -
  9. Gaia のパッチを提出する
  10. -
- -

Gaia ビルドリファレンス

- - - -

補足情報

- - - -

 

- -

- -
-

Gaiaコミュニティに参加してください

-
-
あなたの好きな方法でディスカッションに参加してください
- -
-
- -
-
-

- -
diff --git a/files/ja/archive/b2g_os/developing_gaia/make_options_reference/index.html b/files/ja/archive/b2g_os/developing_gaia/make_options_reference/index.html deleted file mode 100644 index 187410191d..0000000000 --- a/files/ja/archive/b2g_os/developing_gaia/make_options_reference/index.html +++ /dev/null @@ -1,383 +0,0 @@ ---- -title: make オプションのリファレンス -slug: Archive/B2G_OS/Developing_Gaia/make_options_reference -tags: - - Apps - - Firefox OS - - Gaia - - Make - - Options - - Reference -translation_of: Archive/B2G_OS/Developing_Gaia/make_options_reference ---- -

- -
-

make コマンドは、Gaia リポジトリ内で Gaia プロファイルを作成するのに使われます。このプロファイルは、端末に読み込んだり B2G デスクトップ ビルド内で実行されます。この記事では、利用できる様々な make オプションを詳しく見ていきます。

-
- -
-

注記: Makefile には多くの環境変数があります。将来削除される可能性があるので、これらに依存しないでください。

-
- -

作成したプロファイルは、一般的に gaia ディレクトリのルート、例えば /gaia/profile に作成され、次の項目を含みます:

- - - -
-

注記: プロファイルを作成済みで新しいものを作成したい場合は、新規に生成する前に、既存のプロファイルディレクトリを消さなければなりません。

-
- -

デフォルト

- -
make
- -

これは単にノーブランドの、非デバッグのビルドを与えます。ブランドのビルドには、Mozilla 公式ブランドの make を使う必要があります。デバッグビルドは デバッグ make をする必要があります。

- -

端末へプッシュする

- -
make install-gaia
-
-make reset-gaia
-
- -

ADB (Android デバッグブリッジ) のセットアップでは、これらの make ターゲットは Gaia を端末にプッシュするでしょう。install-gaia では作業ディレクトリ内の Gaia の更新を端末にプッシュします。 reset-gaia では、Gaia のプッシュ前に、既存の設定やプロファイル、Webアプリ、データベース内容 (新設定のデータベースが初期化されます) が掃除されます。

- -
-

注記: make install-gaia または make reset-gaia を用いて端末に Gaia をプッシュすると、デフォルトで 1 倍の解像度のアセットで Gaia をビルドします。さらに高い解像度を指定するには、GAIA_DEV_PIXELS_PER_PX または GAIA_DPPX の make オプションを指定します (このオプションの詳細は、High resolution image assets を参照)。この方法で端末に Gaia をプッシュする場合は、関連する make オプションを端末のスケールファクタに合わせて指定するべきです。例えば、Flame 端末には make install-gaia GAIA_DEV_PIXELS_PER_PX=1.5 (または 2 や 2.5 など。スケールファクタ値は 512 icon for device display の中の表を見てください。)

-
- -

特定アプリのビルド

- -
APP=system make
-
-APP=system make install-gaia
- -

既にプロファイルがある場合、すべてのアプリを再パッケージ化して再プッシュする代わりに、再パッケージするアプリを APP で指定できます。このコマンドは、新しいアプリパッケージとマニフェストをプッシュします。マニフェストの変更 (例えば、新しいパーミッションやキーボードレイアウトや宣言) は Gecko によって選択されません。

- -

カスタムプロファイルフォルダを指定する

- -

ビルドしたプロファイルを保存するディレクトリを指定できます。次のように、PROFILE_FOLDER で指定します:

- -
PROFILE_FOLDER=profile-b2g-desktop make
- -

異なる端末のビルド

- -

異なる目的で、異なる端末のビルドを作成する make オプションがいくつかあります。

- -

Gaia の電話機ビルドの生成

- -
GAIA_DEVICE_TYPE=phone make
- -

このビルドは、アプリを /gaia/build/config/phone/apps-engineering.list から取得します。

- -

Gaia のタブレットビルドの生成

- -
GAIA_DEVICE_TYPE=tablet make
- -

このビルドは、アプリを /gaia/build/config/tablet/apps-engineering.list から取得します。

- -

spark ビルドの生成

- -
GAIA_DISTRIBUTION_DIR=distros/spark make reset-gaia
- -

端末に spark をインストールします。同等な B2G build.sh オプションは次のようになります:

- -
GAIA_DISTRIBUTION_DIR=distros/spark ./build.sh
- -

異なるビルドタイプ

- -

異なる目的で、異なるタイプのビルドを作成する make オプションがいくつかあります。

- -

プロダクション make

- -
PRODUCTION=1 make
- -

これは Gaia のプロダクション (製品版) ビルドを生成します:

- - - -
-

注記: 別名のコマンド make production でも生成できます。

-
- -

デバッグmake

- -
DEBUG=1 make
- -

DEBUG 変数は、Gaia をデフォルトを変更するごとに再パッケージが必要なパッケージ型アプリでなく、特定の GAIA_PORT でのビルトイン Web サーバ上でホスト型アプリとして実行します。これでテストが簡単になります。最新の Firefox Nightly のプロファイルで起動すると、素晴らしい B2G 固有の Firefox 開発ツールのパネルがあります。

- -

それに加え:

- - - -
-

注記: 現在、バグ (バグ 1180103) があり、Gaia のデバッグプロファイルでFirefox OS シミュレータ (WebIDE でも何経由でも) を実行した時、空のホーム画面が描画されます。これを回避するには、代わりに DEBUG=1 DESKTOP=0 make とします ( 端末デバッグ make を参照)。

-
- -

端末デバッグ make

- -
DEVICE_DEBUG=1 make
- -

これは端末の画面ロックをオンにし、ADB ツールのデバッグを有効にするので、端末のデバッグに便利です。

- -

このパラメータは、Firefox OS 1.2 以降のバージョンで、Firefox OS Webアプリを WebIDE でデバッグする時に指定します

- -

デスクトップデバッグ make

- -
DEBUG=1 DESKTOP=0 make
- -

このオプションは、B2G デスクトップ 内で実行する、デスクトップデバッグ版を作成します。

- -

公式 Mozilla ブランド make

- -
MOZILLA_OFFICIAL=1 make
- -

公式の Mozilla ブランドのビルドを make するのに使います。

- -

ドッグフード make

- -
DOGFOOD=1 make
- -

ドッグフードオプションとユーティリティがオンになります、例えば、Feedback アプリで、簡単に OS のフィードバック投稿ができます。

- -

システムアプリ make

- -
B2G_SYSTEM_APPS=1 make
- -

この環境変数は、アプリを /data/local ではなく、/system/b2g に配置します。ユーザビルドの作業をする時に使うべきです。この変数は、make production を実行した時に自動セットされます。また install-gaiareset-gaia にも使われます。

- -

ディストリビューションおよびマーケット向けのカスタマイズビルド

- -
GAIA_DISTRIBUTION_DIR=./dir
- -
-

注記: 詳細は Market カスタマイズ をお読みください。

-
- -

開発者/デバッグ オプション

- -

デバッグ用途で、機能を追加・削除したり、設定を変更する make オプションもあります。

- -

リモートデバッグを有効化

- -
REMOTE_DEBUGGER=1
- -

これは、開発者設定 のオプション設定と同じ、端末上のリモートデバッグを有効にします。

- -

JavaScript 最適化 make

- -
GAIA_OPTIMIZE=1 make
- -

これは、Gaia の JavaScript 最適化の起点となり、ファイルを連結・圧縮します。これは、make production を実行した時に自動でセットされます。また、install-gaiareset-gaia にも使われます。

- -

高解像度のイメージアセット

- -
GAIA_DEV_PIXELS_PER_PX=1.5 make
- -

あるいは、別名で:

- -
GAIA_DPPX=1.5 make
- -

アプリのパッケージ時に、このオプションは、画像を *@1.5x.(gif|jpg|png) の同等品が存在する場合に、その画像に置き換えます。上記オプションを標準の make コマンドの部分的なオプションとして使う必要があります。例えば:

- -
GAIA_DEV_PIXELS_PER_PX=1.5 make reset-gaia
-
-GAIA_DEV_PIXELS_PER_PX=1.5 make install-gaia
- -

Gaia は現在、次の画面解像度をターゲットとしています:

- - - -

qHD と WVGA 端末で画像が確実にシャープに見えるために、GAIA_DEV_PIXELS_PER_PX を使います。CSS ピクセル単位あたりの端末ピクセルについて、詳しい情報は、A pixel is not a pixel 参照してください

- -

統合テストの実行

- -

make を使って Gaia の統合テストを実行できます。詳細はGaia 統合テスト を参照してください。

- -

Raptor パフォーマンステストの実行

- -

Raptor テストを実行するためには、テストを実際に行う前に、端末を構成する必要があります。詳しくは、Raptor を参照してください。

- -
make raptor
- -

低メモリプロファイルのビルド

- -
GAIA_MEMORY_PROFILE=low make
- -

この変数は、Gaia の低メモリプロファイルを生成します。これは、Tarako のような低メモリ端末を想定しています。

- -

はじめてガイド (FTU) の無効化

- -
NOFTU=1
-
- -

この環境変数で FTU が無効になります。

- -

ロック画面の無効化

- -

Firefox OS のロック画面を NO_LOCK_SCREEN オプションを使って無効化できます、例えば:

- -
NO_LOCK_SCREEN=1 make
- -

リファレンス負荷データ

- -

リファレンス負荷データを使うと、開発者やテスト担当者は、新たにフラッシュされた電話機に対して、いくつかのアプリに大量のデータを素早くインストールできます。

- -

そのコマンドは次の通り (gaia ディレクトリから):

- -
make reference-workload-light
- - - -
make reference-workload-medium
- - - -
make reference-workload-heavy
- - - -
make reference-workload-x-heavy
- - - -

これらのターゲットには、アプリ名をスペースで区切った APP 環境変数か、APPS 環境変数が指定できます。例えば:

- -
APP=sms make reference-workload-light
-APPS="sms communications/contacts" make reference-workload-heavy
-
- -

利用可能なアプリは次の通り:

- -
APPS="gallery music video communications/contacts sms communications/dialer"
- -

リファレンス負荷データに音楽 (歌) を入れるには、mid3v2 ユーティリティがインストールされていなければなりません。このユーティリティは次のコマンドでインストールします:

- -
sudo apt-get install python-mutagen
- -

代わりに、Fedora や RHEL を実行している場合、これを使います:

- -
sudo yum install python-mutagen
- -

ドキュメント make

- -

Gaia のドキュメントは、jsdoc3 を通じてビルドされます。これを生成するには、次のコマンドを使います:

- -
make docs
- -

IME レイアウトと辞書の有効化

- -

キーボード IME レイアウトと辞書を有効化するには、次のコマンド構成を使用します:

- -
GAIA_KEYBOARD_LAYOUTS=en,de,fr,jp-kanji make
- -

現在デフォルトでは、ディスク容量のために、全てのレイアウトを積んでいません。レイアウトと辞書を切り離すために Bug 1029951 が作業中です (ユーザ辞書をダウンロード提供します)。

- -

すべての利用可能なレイアウトを知るには shared/js/keyboard_helper.js のファイルを見てください。

diff --git a/files/ja/archive/b2g_os/developing_gaia/making_gaia_code_changes/index.html b/files/ja/archive/b2g_os/developing_gaia/making_gaia_code_changes/index.html deleted file mode 100644 index 7f7735cc14..0000000000 --- a/files/ja/archive/b2g_os/developing_gaia/making_gaia_code_changes/index.html +++ /dev/null @@ -1,137 +0,0 @@ ---- -title: Gaia のコードに変更を加える -slug: Archive/B2G_OS/Developing_Gaia/Making_Gaia_code_changes -tags: - - Firefox OS - - Gaia - - 初心者 -translation_of: Archive/B2G_OS/Developing_Gaia/Making_Gaia_code_changes ---- -

- -
-

今やデスクトップでGaiaを実行していて、コードベースがどう動作するかをある程度理解し、プロジェクトにコントリビュート(貢献)し始める準備ができているでしょう。この記事では変更を加える方法と、取り組むべきバグの見つけ方を記述します。

-
- -

Gitのベストプラクティス

- -
    -
  1. Gaiaに変更を加える時は、まず最新をmasterから取得すべきです: -
    cd path/to/gaia
    -git checkout master
    -git pull upstream master
    -
  2. -
  3. 次に、あなたの修正を乗せるブランチをチェックアウトします: -
    git checkout -b my-code-fix
    -
  4. -
  5. 最後に、 gaia/apps ディレクトリに移動し、アプリファイルを変更します。
  6. -
- -

簡単なコード変更例

- -

コード変更を見るには:

- -
    -
  1. Gaiaコードベースに必要な変更を加え、変更を保存します。
  2. -
  3. FirefoxのMuletか、WebIDE内のsimulatorをシャットダウンします。
  4. -
  5. makeを使ってGaiaプロフィールをリビルドします。
  6. -
  7. FirefoxのMuletか、WebIDE内のsimulatorを再起動します。
  8. -
- -

ロックスクリーンの時計の色変更のような簡単な例を見てみましょう:

- -

Gaia lockscreen showing the clock display in white text

- -
    -
  1. スタイルがどうやってセットされているのか見つける最良の方法は、開発者ツールを使うことです。デスクトップ版Firefoxで Ctrl/右 + クリックしてコンテキストメニューから 要素を調査 を選びます。
  2. -
  3. どのCSSファイルを編集するかがわかったら — ここでは gaia/apps/system/lockscreen/style/lockscreen.css — 画面右手側で、CSSファイルが望み通りの状態になるよう編集します。
  4. -
  5. 変更に満足したら、ファイルディレクトリに移動して変更します。
  6. -
  7. 次に、この節の最初で概説したステップに従い、変更を見ます。
  8. -
- -

Gaia lockscreen showing the clock display modified from white to red text
-
-
- Gaia Firefox Muletのレンダリング制限:

- - - -

取り組むべきバグを見つける場所

- -

Firefox OS のバグを見つける最良の方法は、 Josh Matthews の、Bugs Ahoy(おーいバグ)、アプリです — これはMozilla の Bugzilla からバグを直接引き込んで、検索、閲覧しやすく表示してくれます。 いったん取り組むバグを見つけたら、Bugzilla ページに移動して"assigned to" 項目に自分自身を入力し、下記に示すように、作業を開始します。

- -

有用なヒント

- - - -

https://bugzilla.mozilla.org/buglist.cgi?columnlist=product%2Ccf_blocking_b2g%2Cbug_status%2Cresolution%2Cshort_desc&resolution=---&query_based_on=CLOCK&query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&component=Gaia%3A%3AClock&product=Boot2Gecko&known_name=CLOCK&list_id=9776392

- -

参考情報

- - diff --git a/files/ja/archive/b2g_os/developing_gaia/market_customizations_guide/index.html b/files/ja/archive/b2g_os/developing_gaia/market_customizations_guide/index.html deleted file mode 100644 index 21120bab66..0000000000 --- a/files/ja/archive/b2g_os/developing_gaia/market_customizations_guide/index.html +++ /dev/null @@ -1,1313 +0,0 @@ ---- -title: Market customizations guide -slug: Archive/B2G_OS/Developing_Gaia/Market_customizations_guide -tags: - - B2G - - Customization - - Firefox OS - - Gaia - - Marketplace - - build -translation_of: Archive/B2G_OS/Developing_Gaia/Market_customizations_guide ---- -
-

マーケットカスタマイズ機能を使うとコアの Gaia リポジトリを書き換えることなく独立したディレクトリでビルド時のカスタマイズを指定 (例えば、ビルド二度のアプリを含めるかなど) することができます。独自のカスタマイズを独立したディレクトリで用意することもできるし、事前に用意されたソースの入ったディレクトリを使うこともできます。カスタマイズはビルドオプションで指定します。ここではカスタマイズのしかたや使い方を紹介します。

-
- -

カスタマイズ概要

- -

Firefox OS は 1.0.1 以降、Firefox 同様のカスタマイズシステムを使っています。この記事に書かれている機能は特に明記されない限り Firefox OS 1.0.1 以降で動作します。

- -

フルセットの Gaia ディストリビューションカスタマイズサンプルを Gaia リポジトリの中に用意しています。ビルド時のカスタマイズで何が出来るかするにはまずこれを直接触ってみるのが良いでしょう。この記事でもあとで言及します。

- -
-

メモ: カスタマイズサンプルをより良くするための提案があったり、この記事で更新されているがコードが古くなっているような場合は上記の Github リポジトリにプルリクエストを送ってください。

-
- -

カスタマイズサンプルのディレクトリ構造は次の通りです:

- -
  customize-sample
-  ├── power
-  │   ├── carrier_power_on.png
-  │   └── carrier_power_off.png
-  ├── ringtones
-  │   ├── list.json
-  │   └── ringer_dream_theme.ogg
-  ├── wallpapers
-  │   ├── customize.png
-  │   └── list.json
-  ├── browser.json
-  ├── calendar.json
-  ├── contacts.json
-  ├── costcontrol.json
-  ├── device-features.json
-  ├── eu-roaming.json
-  ├── homescreens.json
-  ├── network.json
-  ├── settings.json
-  ├── sms-blacklist.json
-  ├── support.json
-  ├── wapuaprof.json
-  └── apps.list
- -
-

メモ: すべてのファイルは必須ではありません。ファイルを含めなければシステムのデフォルト設定でビルドされます。

-
- -

後に個々のカスタマイズについて説明しますが、まずはどのように Gaia にカスタマイズを適用するか説明します。

- -

カスタマイズの適用手順

- -

カスタマイズサンプルを Gaia に適用するには次のようにしてください:

- -
    -
  1. Gaia のソースコードを https://github.com/mozilla-b2g/gaia からクローンしてください。
  2. -
  3. gaia/customization/ ディレクトリを別のディレクトリにコピーして自分でカスタマイズすることもできますし gaia/customization/ ディレクトリを直接書き換えることもできます。カスタマイズファイルを収めるディレクトリへのパスは下記の <DISTRIBUTION_PATH> で指定できます。任意のディレクトリパスを指定してください。
  4. -
  5. 必要に応じてサンプルを編集してください。
  6. -
  7. Firefox OS デバイスを USB ケーブルでコンピュータに接続し、ADB で接続できることを確認してください。
  8. -
  9. 次のように GAIA_DISTRIBUTION_DIR 環境変数を指定して Gaia をビルドしてください:
  10. -
  11. -
    make production GAIA_DISTRIBUTION_DIR=<DISTRIBUTION_PATH>
    -
  12. -
  13. カスタマイズが適用された Gaia を Firefox OS デバイスにインストールできます。
  14. -
- -

カスタマイズサンプルディレクトリを gaia/distribution/ ディレクトリにコピーした場合、環境変数を指定する必要はありません:

- -
make production
- -
-

メモ: 一部のカスタマイズは Gaia ビルドスクリプト中で行えます。ビルドスクリプトのカスタマイズについては make オプションリファレンスをご覧ください。

-
- -
-

メモ: SIM カード固有のカスタマイズはビルド時に含められますが、初回起動時のセットアップ中、実行時に適用されます。

-
- -

ビルド時のカスタマイズ

- -

それではサンプルに含まれているさまざまなカスタマイズ例を見ていきましょう。

- -

power/

- -

電源オン・オフ時のアニメーション (あるいは静止画) を含められます。ファイルは MP4 のアニメーションか PNG の静止画です。

- -

次のような名前のファイルを用意してください:

- - - -

ringtones/

- -

カスタム着信音を含められます。次のように list.json ファイルで着信音ファイルのリストを指定します:

- -
  {
-    "ringer_classic_courier.opus": "",
-    "ringer_dream_theme.ogg": "",
-    "ringer_loud_windchimes.opus": "",
-    "ringer_bitbounce.opus": ""
-  }
- -

カスタム着信音は Firefox OS の環境設定アプリの サウンド > 着信 で指定できます。 デフォルトの着信音は DataURI を用いて settings.json で設定します。DataURI は node/npm の datauri コマンドで生成できます:

- -
    -
  1. npm install datauri -g コマンドでインストールしてください。
  2. -
  3. datauri <FILE> コマンドでファイルを DataURI に変換してください。
  4. -
- -

wallpapers/

- -

カスタム壁紙 (PNG ファイル) を list.json ファイルで指定すると、Firefox OS の環境設定アプリの 画面表示 > 壁紙 で指定できるようになります。

- -

デフォルトの壁紙は次のように settings.json で指定してください:

- -
"wallpaper.image": "image location"
- -
-

メモ: 画像はファイルパスまたは dataURI で指定できます。

-
- -

browser.json

- -

このファイルではブックマークやデフォルト検索エンジンなど、ブラウザアプリをカスタマイズできます。このファイルの書き方は ブラウザのブックマークとデフォルト検索エンジン をご覧ください。

- -

calendar.json

- -

このファイルでは Firefox OS のカレンダーアプリに独自のカレンダーを指定できます。Google OAuth credentials を指定する必要があります。加えて、カレンダーの CalDav API アクセスが必要になります。API キーとシークレットを生成するには、Google の creating your client ID ページに記載の通り、次の手順で操作してください:

- -
    -
  1. API console を開いてください。
  2. -
  3. プロジェクトを開き APIs & auth > APIs で Calendar CalDav API を有効化してください。
  4. -
  5. Credentials をクリックしてください。
  6. -
  7. Create new client ID をクリックしてください。
  8. -
  9. Application type を Installed application に設定し、Installed application typeOther に設定し、Create Client ID. ボタンを押してください。Client IDClient secret が表示されます。
  10. -
  11. calendar.json ファイルを開き client_idclient_secret に Google API コンソールで表示された Client IDClient secret を入力して保存してください。
  12. -
- -
-

メモ: API の利用回数は 1 日 1,000,000 リクエストに制限されています。

-
- -

camera-config.js (Gallery and Camera app image sizes)

- -
-
{
-  "maxImagePixelSize": 6000000,
-  "maxSnapshotPixelSize": 4000000,
-  "requiredEXIFPreviewSize": {
-    "width": 1200,
-    "height": 1222
-  }
-}
-
- -

maxImagePixelSizemaxSnapshotPixelSize はギャラリーとカメラアプリで表示する画像の最大ピクセルサイズです。デフォルトは 5 メガピクセル (5*220 ピクセル) になっています。

- -

requiredEXIFPreviewSize プロパティを追加すればフルスクリーンプレビューで表示されるための最小 EXIF プレビューサイズも指定できます。これを指定しなければ EXIF プレビューはランドスケープとポートレイト (横と縦) モード両方で (高さまたは幅が) 画面サイズ以上になる場合にのみ EXIF プレビューが使用されます。

- -

contacts.json

- -

Gaia ビルド時の連絡帳データベースに含める連絡先のリストを指定できます。

- -

contacts.json ファイルのサンプルは次の通りです:

- -
[
-   {
-     "name": ["John Doe"],
-     "givenName": ["John"],
-     "familyName": ["Doe"],
-     "nickname": ["Johnny"],
-     "category": ["Work", "Racing Team"],
-     "email": [
-       {
-         "type": ["personal"],
-         "value": "john.doe@example.org",
-         "pref": true
-       },
-       {
-         "type": ["work"],
-         "value": "jdoe@example.com"
-       }
-     ],
-     "adr": [
-       {
-         "type": ["personal"],
-         "streetAddress": "123 Foopy St.",
-         "locality": "San Francisco",
-         "region": "Downtown",
-         "postalCode": "94030",
-         "countryName": "US"
-       }
-     ]
-   },
-   {
-     "name": ["CarrierX"],
-     "email": [
-       {
-         "type": ["work"],
-         "value": "support@carrierx.com"
-       }
-     ],
-     "url": [
-       {
-         "type": ["work"],
-         "value": "https://www.carrierx.com"
-       }
-     ]
-   }
- ]
- -
-

メモ: Contacts オブジェクトのレイアウト詳細は Contacts API ページ をご覧ください。

-
- -
-

メモ: SIM カード依存のカスタマイズについては Browser bookmarks and default search engine 節をご覧ください。

-
- -

device-features.json

- -

ハードウェアでサポートする機能を指定します。デフォルトは次の通りです:

- -
{
-  "ambientLight": true,
-  "vibration": true
-}
- -

各機能を無効化するには false を指定してください。

- -

eu-roaming.json

- -

EU のローミング規制に従うべきオペレーターのリストとその APN 設定が含められます。このファイルは 3 つの部分からなり、最初の home では規制に従うべきオペレーターのオペレーターコードを指定します。次の foreign ではローミング前に EU ローミング通知が表示されるべき海外オペレーターのオペレーターコードを指定します。最後の部分では EU ローミングの APN 設定を含めます。デフォルトファイルは次のようになります:

- -
{
-  "home": null,
-  "foreign": null,
-  "defaultApns": []
-}
-
- -

OS にローミング通知を表示させたい場合、次のような形でファイルを用意してください。この例では、ユーザがオペレーターコードが "001, 01" の SIM カードを使っていてオペレーターコード "002, 02" の海外ネットワークにローミング接続するときに  EU ローミング通知が表示されます:

- -
{
-  "home": {
-    "001": {
-      "01": true
-    }
-  },
-  "foreign": {
-    "002": {
-      "02": true
-    }
-  },
-  "defaultApns": [{
-    "apn": "eu.apn",
-    "types": ["default"]
-  ]}
-}
-
- -
-

メモ: defaultApns フィールドにリストされる APN 設定はすべて環境設定アプリにデフォルトでリスト表示されます。

-
- -

homescreens.json

- -

homescreens.json では Firefox OS のドックとホームスクリーンに表示するアプリとその順序を定義します。デフォルトでは次のような感じです:

- -
{"homescreens": [
-   [
-     ["apps", "communications", "dialer"],
-     ["apps", "sms"],
-     ["apps", "browser"],
-     ["apps", "camera"]
-   ]
- ]}
- -

この設定ではドックに表示される 4 つのアプリを指定しています。配列を追加すると、ホームスクリーンの 1 ページ目に表示されるアプリ、次を追加すると 2 ページ目のものと順次設定できます。

- -
{"homescreens": [
-   [ // We're in the dock!
-     ["apps", "communications", "dialer"],
-     ["apps", "sms"],
-     ["apps", "browser"],
-     ["apps", "camera"]
-   ],
-   [ // We're on Page 1 of the homescreen
-     ["apps", "email"],
-     ["apps", "settings"],
-     ["apps", "clock"],
-     ["apps", "calendar"]
-   ],
-   [ // We're on Page 2 of the homescreen
-     ["external-apps", "customapp1"],
-     ["external-apps", "customapp2"],
-     ["external-apps", "customapp3"],
-     ["external-apps", "customapp4"]
-   ]
- ]}
- -

内側の配列の 1 つめの要素にはアプリが入っているフォルダ名 ("apps" や "external-apps" を、2 つめの要素にはアプリのディレクトリ名 ("email" や "browser" など) を指定してください。

- -

コレクション

- -
-

メモ: Fierfox 2.0 では collections ディレクトリは homescreen アプリの中の collections  アプリに移動しました。マニフェストの値も一部変更されている事に注意してください (例えば funny コレクションのマニフェスト をご覧ください)。provider_idcategoryId に、appspinned に変更されています。

-
- -

コレクションはホームスクリーンに独自のアイコンで表示されるアプリのグループです。そのアイコンをタップすると、コレクションに含まれるアプリのアイコン一覧を含む新しい画面が表示されます。デフォルトでどのようなコレクションが用意されているかは ソースコードの collections ディレクトリ をご覧ください:

- - - -

個別のディレクトリではいろいろな解像度のアイコンファイルと、名前や役割とアイコンへのパスなどコレクションのメタデータが定義されています。

- -
-

メモ: E.me のサーバでは追加のコレクションが定義されており、合計 19 のコレクションがあります (上記の 10 に加えて 9 あります)。これらのリストについてはホームスクリーンをロングタップして「スマートコレクションを追加」を選択すると表示されます。

-
- -

homescreens.json ではコレクションをどのページでどの順番で読み込むか定義できます。例えば、shopping, social, sports および tv コレクションを表示したければ次のように指定します:

- -
{"homescreens": [
-   [
-     ["apps/collection/collections", "shopping"],
-     ["apps/collection/collections", "social"],
-     ["apps/collection/collections", "sports"],
-     ["apps/collection/collections", "tv"]
-   ], [
-     ["apps", "communications", "dialer"],
-     ["apps", "sms"],
-     ["apps", "browser"],
-     ["apps", "camera"]
-   ]
- ]}
- -

最上部の配列はそれぞれホームスクリーンのページに対応しており、この場合はコレクションのドックに表示され、個別のアプリがホームスクリーンの 1 ページ目に表示されます。

- -
-

メモ: 初期設定では、Gaia ホームスクリーンの最初のページに次の 4 つのコレクションが表示されます: Social, Games, Music, Entertainment.

-
- -
-

メモ: コレクション名は小文字で指定します。

-
- -
コレクションには何が含まれるか
- -

コレクションには 2 つの種類のアプリがあります。
-
- Local apps/apps/collection/collections/<collectionName>/manifest.collection のマニフェストファイルでビルド時に定義される物です。各コレクションに含まれるローカルアプリはマニフェストファイルで定義します。例えば、social コレクション (電話、SMS、連絡帳、メールアプリを含む) のマニフェストは次のようになります:

- -
{
-  "name": "Social",
-  "role": "collection",
-  "provider_id": "289", // adaptive search identifier
-  "apps": [
-    ["apps", "communications", "dialer"],
-    ["apps", "sms"],
-    ["apps", "communications", "contacts"],
-    ["apps", "email"]
-  ],
-  "default_locale": "en-US",
-  "icons": {
-    "60": "/collections/social/icon.png",
-    "90": "/collections/social/icon@1.5x.png",
-    "120": "/collections/social/icon@2x.png"
-  }
- }
- -

Remote apps は適応検索のプロバイダにより実行時に、デバイスがオンライン状態の時に提供されます。

- -
コレクションの翻訳方法
- -

コレクションの翻訳はホームスクリーンアプリの apps/collection/locales/  ディレクトリにあるローカルファイルで定義します。各ロケールのファイルは collections.<言語コード>.properties のような名前規則になっており、<言語コード> は例えばフランス語なら fr、日本語なら ja などになります。内容はデフォルトの英語文字列と翻訳バージョンを書いた行が含まれる単純なファイルです。例えばフランス語のロケールファイルは次のようになります:

- -
# Add bookmark to homescreen
-add-to-home-screen=Ajouter à l’écran d’accueil
-add-to-home-screen-header=Ajouter un lien
-website-name=Nom du site web
-address=Adresse
-added-to-home-screen=Ajouté à l’écran d’accueil
- -
カスタムコレクション
- -

Firefox OS 1.3 からは独自のカスタムコレクションを定義できます。単に collections ディレクトリ の中に追加し、上記のように collections.json でそれを指定してください。

- -

垂直ホームスクリーンの設定

- -

Firefox OS 2.0 以降では、従来の水平にページめくりするホームスクリーンではなく縦スクロールする垂直ホームスクリーン (vertical homescreen) を選択できます。垂直ホームスクリーンの設定は default-homescreens.json で、表示するアプリやコレクション、ホームスクリーンにアイコンを並べる列の数、ブックマークなどを指定できます。

- -

network.json (カスタマイズフォルダにはありません)

- -
-

重要: Firefox OS 1.4 以降ではサポートされていません

-
- -

In Firefox OS < 1.4, this file can be created in gaia/apps/settings/resources, and it allows you to set the network types supported by the device. Firefox OS supports the following types:

- - - -

An example is as follows:

- -
{
-  "types":  [
-    "cdma/evdo",
-    "cdma", "evdo"
-  ]
-}
- -

settings.json

- - - -

このファイルではデフォルトの壁紙、着信音、ロックスクリーンの有効無効、Bluetooth の有効無効などを指定できます。build/config/common-settings.json を見るとどのような設定が可能か分かります。例えば、WiFi をデフォルトで無効にするには "wifi.enabled": false などと設定できます。

- -

カスタム設定は customization/settings.json で指定できます。

- -

ロケットバーのデフォルト検索エンジン

- -

Firefox OS 2.0 以降では、settings.json で次のような設定でロケットバーのデフォルト検索エンジンが指定できるようになります:

- -
"search.urlTemplate": "https://www.google.com/search?q={searchTerms}",
-"search.suggestionsUrlTemplate": "https://www.google.com/complete/search?client=firefox&q={searchTerms}",
-"search.iconUrl": "data:image/x-icon;base64,AAABAAIAEBAAAAAAAAB9AQAAJ [TRUNCATED FOR BREVITY]
-
- -

検索プロバイダのカスタマイズ

- -

Firefox OS 2.0 以降ではデフォルトの apps/settings/resources/search/providers.json ファイルで検索プロバイダとアイコンファイルのリストを指定できます。ビルド時に customization/search/providers.json ファイルを書き換え、適切なアイコンファイルを同じディレクトリに含めることで変更できます。このディレクトリが存在するとビルド時に app/settings/resources/search の中身を上書きします。

- -

デフォルトホームスクリーンアプリのカスタマイズ

- -

homescreen.appName ではデフォルトのホームスクリーンアプリを指定できます。

- -
-
{ "homescreen.appName": "homescreen-stingray" }
-
- -

sms-blacklist.json

- -

このファイルには SMS のブラックリストを記載します: このファイルに書かれた番号には SMS メッセージを送信できません。このリストは SMS アプリ blacklist.json ファイルを上書きします。番号は次のように配列で指定します:

- -
["11223344", "55667788"]
- -

cellbroadcast

- -

Listen するチャンネルを指定できます:

- - - -

イベントレポートを無効化できます:

- - - -
-

Note: デフォルト設定は operator_variant.xml に記載されています。

-
- -

support.json

- -

このファイルにはオンラインサポートや電話サポートなどのサポート先情報を記載します。このファイルがある場合、Settings アプリの support.json を上書きします。このカスタマイズファイルではデフォルト設定を上書きするため、デフォルト設定を残しつつサポートリソースを追加したい場合、組み込みのアプリからコピーして、それを元にカスタマイズをしてください。

- -

JSON ファイルは次のようなものになります:

- -
{
-   "onlinesupport": {
-     "href": "http://support.mozilla.org/",
-     "title": "Mozilla Support"
-   },
-   "callsupport": [
-     {
-       "href": "tel:12345678",
-       "title": "Call Support 1"
-     },
-     {
-       "href": "tel:87654321",
-       "title": "Call Support 2"
-     }
-   ]
- }
- -

WAP ユーザエージェントプロファイル (wapuaprof.json)

- -

WAP ユーザエージェントプロファイルでは WAP パケット送信時のユーザエージェント情報を上書きできます。デフォルトの WAP ユーザエージェントプロファイルを MCC/MNC を元に歌が期したい場合などに利用できます (より詳しくは runtime customization をご覧ください)。

- -

apps.list

- -

このリストファイルでは実行時にどのアプリを読み込みたいか指定できます (後述する Applications セクションで説明している  variant.json と同様の形式です)。アプリケーションを次のようにして指定します:

- -
apps/*
-external-apps/*
-outoftree_apps/*
- -

フォルダ内のアプリ全部ではなく個別のアプリを次のように指定することもできます:

- -
apps/email
-apps/settings
- -
-

Note: 独自の外部アプリを自分の Gaia ビルドに含めたい場合、決まった方法でビルドして、 gaia/external-apps/ ディレクトリに入れる必要があります。手順については Read Building Prebundled web apps をご覧ください。

-
- -
-

重要: Firefox OS のカスタムビルドに追加で含めるアプリについては Mozilla との Distribution Agreement で指定されている必要があります。

-
- -

その他のカスタマイズ設定

- -

他にもカスタマイズできる項目が多くあるので紹介します。

- -
-

Note: 以下の節で使われているビルドスクリプトの多くは gaia/build/applications-data.js にあります。これはビルド時にブラウザアプリの init.json ファイルにコピーされます。

-
- -

ブラウザブックマークとデフォルト検索エンジン

- - - -

デフォルトのブックマークと検索エンジンはビルド時にカスタマイズ可能で、一つのビルドでも国やネットワーク (回線、キャリア) によって異なります。カスタマイズされたデータはブラウザアプリの初回起動時に、デバイスに挿入されている SIM カードの MCC と MNC に応じて読み込まれます。

- -
-

Note: ブックマークは Firefox OS 1.0.1 以降でカスタマイズ可能ですが、 Other single variant customizations 節で記載の通り、2.1 以降ではカスタマイズ方法が変わります。デフォルト検索エンジンは Firefox OS 1.2 以降でカスタマイズ可能です。

-
- -

下の例 (browser.json) ではブラジルの Vivo (724006 という値は 724 がブラジルを、006 が Vivo を MMC/MNC コードで表しています) での設定例です。SIM カードの値にマッチするものが無い場合や SIM カードが挿入されていない場合はデフォルトのフォールバック (000000) が使用されます。

- -
content = {
-   '000000': {
-     'bookmarks': [
-       { 'title': 'Mozilla',
-         'uri': 'https://mozilla.org',
-         'iconUri':
-           'data:image/png;base64,AAABAAIAEBAAAAEAIABo[truncated]'
-       },
-       { 'title': 'Firefox OS',
-         'uri': 'https://mozilla.org/firefoxos',
-         'iconUri':
-           'data:image/png;base64,AAABAAIAEBAAAAEA[truncated]'
-       }
-     ],
-     'searchEngines' : [
-        {
-          'title': 'Google',
-          'uri': 'https://www.google.com/search?q={searchTerms}',
-          'iconUri':
-            'data:image/png;base64,AAABAAIAEBAAAAEAIABoBAA[truncated]'
-        }
-      ],
-      'settings' : {
-        'defaultSearchEngine': 'https://www.google.com/search?q={searchTerms}'
-      }
-   },
-
-   '724006': {
-     "bookmarks": [
-       { "title": "Vivo Busca",
-         "uri": "https://www.google.com.br/m/search",
-         "iconUri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC[truncated]"
-       },
-       { "title": "Serviços e Downloads",
-         "uri": "http://vds.vivo.com.br",
-         "iconUri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACA[truncated]"
-       },
-       {
-         "title": "Site Vivo",
-         "uri": "http://www.vivo.com.br/conteudosmartphone",
-         "iconUri": "data:image/jpg;base64,/9j/4AAQSkZJRg[truncated]"
-       }
-     ],
-     'searchEngines' : [
-        {
-          'title': 'Yahoo',
-          'uri': 'https://search.yahoo.com/search?q={searchTerms}',
-          'iconUri':
-            'data:image/png;base64,AAABAAIAEBAAAAEAIABoBAA[truncated]'
-        }
-      ],
-      'settings' : {
-        'defaultSearchEngine': 'https://search.yahoo.com/search?q={searchTerms}'
-      }
-   }
- };
- -

この例では、ブラウザ初回起動時にブラジルの Vivo の SIM カードが挿入されている場合、Vivo のブックマークが使用され、デフォルト検索エンジンは Yahoo になります。初回起動時に他の SIM カードが挿入されていたり、SIM カードが無い場合は Mozilla のブックマークが使用され、デフォルト検索エンジンは Google になります。以下の点については注意してください:

- - - -
-

Note: ブラウザアプリではブックマークを逆順で表示するため、JSON ファイルで最初のブックマークは最後に表示されます。

-
- -

Single variant customization to override list of providers and Rocketbar search provider

- -
    -
  1. The default Rocketbar search provider and list of providers can also be customized per MCC/MNC — data added the first time the relevant SIM card is inserted into the phone — by specifying them in JSON files in your distribution directory: - -
  2. -
  3. variant.json then defines which .json file is used to specify the settings for each MCC/MNC pair; see lines 47–48 in our sample: -
    "search": "mobizilla/mobizilla_search.json",
    -"default_search": "mobizilla/mobizilla_default_search.json",
    -
  4. -
  5. variant.json is placed in the root of your distribution directory.
  6. -
  7. In order to apply the single variant configuration you have to set the GAIA_DISTRIBUTION_DIR variable to the path of your distribution directory when building Gaia.
  8. -
- -

Data and messaging settings

- -

Device data and messaging settings are runtime-customizable.

- -

To apply specific settings, change gaia/shared/resources/apn/apns_conf_local.xml, simply adding or editing carrier blocks as required:

- -
 <apn carrier="Test Network"
-      mcc="001"
-      mnc="01"
-      apn="internet"
-      user="user"
-      password="password"
-      proxy="127.0.0.1"
-      port="8080"
-      mmsc="http://127.0.0.1"
-      mmsproxy="127.0.0.1"
-      mmsport="8080"
-      authtype="0"
-      type="default,supl,mms"
-  />
- -

Voicemail and cell broadcast settings

- -

To apply specific voicemail and cell broadcast settings, change gaia/shared/resources/apn/operator_variant.xml. Add or edit a carrier block, changing attributes as needed:

- -
   <operator carrier="Test Network with Operator Variant Settings"
-       mcc="001"
-       mnc="01"
-       cellBroadcastSearchList="0,1,2,3"
-       voicemail="999999"
-   />
- -

WAP user agent profile

- -

The WAP user agent profile is another app that supports runtime customization. It overrides the user agent information when sending WAP packets, based on MCC/MNC. The profile overriding has url and tagname parts, but we only support url in our current implementation.

- -

The WAP user agent profile uses the same coding style for its key as the browser app, although "000000" is used as the default profile. An example follows:

- -
   {
-     "000000": {
-       "url": "http://example.url/default.xml"
-     },
-     "123001": {
-       "url": "http://example.url/custom123001.xml"
-     }
-   }
- -

In this example, the url of the default profile is http://example.url/default.xml; for MCC = 123 and MNC = 001, the url is http://example.url/custom123001.xml. If there was another ic card with MCC = 123 and MNC = 100, its url would be http://example.url/default.xml.

- -

If the 000000 is removed from this example, like so:

- -
  {
-     "123001": {
-       "url": "http://example.url/custom123001.xml"
-     }
-   }
- -

the UA profile url of the ic card with MCC = 123 and MNC = 001 is now overridden as http://example.url/custom123001.xml. No others will be overridden.

- -

If we have the "000000" as before, but we also have a "123001" case with no url inside it, like so:

- -
   {
-     "000000": {
-       "url": "http://example.url/default.xml"
-     },
-     "123001": {}
-   }
- -

All UA profile urls will now be overridden as http://example.url/default.xml

- -

Applications

- -

Applications installed in Firefox OS can be customized at runtime, in a number of ways (see also Customizing the build-time apps). Perhaps the most powerful way is to edit the variant.json configuration file, which allows apps to be selectively installed and placed in the desired position in the homescreen, depending on the MCC/MNC. The customized applications will be added to the standard applications list.

- -

The relevant part of the variant.json file typically looks like so.

- -
   {
-     "apps": {
-       "puzzle":
-         {
-           "manifestURL": "https://owd.tid.es/store/packages/fe8e4a866c518a42db9d2041568684c1.webapp"
-         },
-       "store":
-         {
-           "manifestURL": "https://owd.tid.es/store/manifest.webapp",
-           "installOrigin": "https://www.openwebdevice.com"
-         }
-     },
-     "operators": [
-       {
-         "id": "movistar-co",
-         "mcc-mnc": [
-           "214-01",
-           "214-02"
-         ],
-         "apps": [
-           {
-             "id": "store",
-             "screen": 0,
-             "location": 2
-           }
-         ]
-       },
-       {
-         "id": "movistar-mx",
-         "mcc-mnc": [
-           "215-23"
-         ],
-         "apps": [
-           {
-             "id": "store",
-             "screen": 0,
-             "location": 2
-           },
-           {
-             "id": "puzzle"
-           }
-         ]
-       }
-     ]
-   }
- - - -

Other single variant customizations

- -

The same file variant.json file — used to configure applications at runtime depending on the MCC/MNC — also allows you to configure specific resources by adding some attributes under each operator object. Thus, an operator can have the following settings:

- -
   {
-     "apps": {
-       ...
-     },
-     "operators": [
-       {
-         "id": "movistar-co",
-           "mcc-mnc": [
-             "214-01",
-             "214-02"
-           ],
-         "apps": [
-           {
-             "id": "store",
-             "screen": 0,
-             "location": 2
-           }
-         ],
-         "support_contacts": "resources/support_contacts_movistar.json",
-         "default_contacts": "resources/contacts_movistar.json",
-         "ringtone": {
-           "path": "resources/Movistar_Mid_ABR_128kbps.ogg",
-           "name": "Tono Movistar"
-         },
-         "wallpaper": "resources/customize.jpg",
-         "keyboard": "resources/keyboard_movistar.json",
-         "network_type": "resources/network_type_movistar.json",
-         "known_networks": "resources/known_networks_movistar.json",
-         "data_ftu": true,
-         "sms": "resources/sms_movistar.json",
-         "topsites": "resources/topsites_movistar.json",
-         "bookmarks": "resources/bookmarks_movistar.json",
-         "data_roaming": true,
-         "power": {
-           "poweron": {
-             "video": "app://operatorresources/resources/power/latam_power_on.mp4"
-           },
-           "poweroff": {
-             "video": "resources/latam_power_off.mp4"
-           }
-         },
-         "nfc": true
-       }
-       ...
-     ]
-   }
-
- -

And here are the details of the specific resources for each operator.

- -

Support contacts

- -

support_contacts specifies a path to a file containing contacts to be shown on the help screen (Settings > Help), offering the same functionality as support.json. The file format is:

- -
   {
-     "onlinesupport": {
-       "title": "Mozilla Support",
-       "href": "http://test.mozilla.org/support"
-     },
-     "callsupport1": {
-       "title": "Call Support (Primary)",
-       "href": "tel:14155550001"
-     },
-     "callsupport2": {
-       "title": "Call Support (Secondary)",
-       "href": "tel:14155550002"
-     }
-   }
- -

Default contacts

- -

default_contacts contains the path to a file containing contacts that will be preloaded to the Contacts application, depending on the MCC/MNC pair present at run time. The section names are the MCC/MNC pair, and section contents should be an array of contacts following the same format as contacts.json. For example:

- -
    {
-        "123123":
-        [
-            {name: ["John Doe"]},
-            // etc
-        ],
-    }
-
- -

Ringtone

- -

ringtone sets the default ringtone and contains two attributes, both mandatory:

- - - -

Wallpaper

- -

wallpaper contains the path to the image file (PNG) that will be set as the default wallpaper.

- -

Keyboard settings

- -

keyboard contains the path to a file containing keyboard settings configuration information. The file format is as follows:

- -
 {
-   "keyboard.vibration": true,
-   "keyboard.autocorrect": false,
-   "keyboard.clicksound": true,
-   "keyboard.wordsuggestion": false
- }
- -

Network Display Indicator

- -

network_type contains the path to a file that will hold an associated text that will be shown to the user when that network is being used by the device — for each of the network types supported by the device. The text will be shown on the Settings app, status bar, and quick settings.

- -

The status bar and all the occurrences on the Settings app will use the text value indicated in the file. For quick settings the file must contain a data_sprite key that will point to a css sprite holding the icons for all the supported network types.

- -

The data_sprite key must always be a URL pointing to a preinstalled app on the device. A file format example follows:

- -
 {
-  "lte": "4G",
-  "ehrpd": "4G",
-  "hspa+": "H+",
-  "hsdpa": "H",
-  "hsupa": "H",
-  "hspa": "H",
-  "evdo0": "E",
-  "evdoa": "E",
-  "evdob": "E",
-  "1xrtt": "1x",
-  "umts": "3G",
-  "edge": "E",
-  "is95a": "2G",
-  "is95b": "2G",
-  "gprs": "2G",
-  "wcdma/gsm": "2G/3G GSM auto",
-  "gsm": "2G GSM",
-  "wcdma": "3G GSM",
-  "wcdma/gsm-auto": "2G GSM Preferred",
-  "cdma/evdo": "2G/3G CDMA auto",
-  "cdma": "2G CDMA",
-  "evdo": "3G CDMA",
-  "wcdma/gsm/cdma/evdo": "2G-3G GSM/CDMA auto",
-  "data_sprite": "app://operatorresources/resources/quick_settings/images/data-sprite-latam.png"
- }
- -

Pre-populate WiFi SSIDs

- -

known_networks contains the path to a file containing descriptions of known wifi networks. Here is a file format example:

- -
 {
-  "OPEN": {
-    "ssid": "OPEN"
-  },
-  "WEP-WITHOUTKEY": {
-    "ssid": "wifi-WEP-WITHOUTKEY",
-    "keyType": "WEP"
-  },
-  "WEP_KEY": {
-    "ssid": "WEP-KEYOK",
-    "keyType": "WEP",
-    "capabilities": "",
-    "password": "constrasenya1"
-  },
-  "WEP_KEYOK_WPS": {
-    "ssid": "WEP-KEYOK-WPS",
-    "keyType": "WEP",
-    "capabilities":"WPS",
-    "password": "constrasenya1"
-  },
-  "wpa": {
-    "ssid": "macaFirefoxHotspot",
-    "keyType": "WPA-PSK"
-  },
-  "WPA-PSK_KEY": {
-    "ssid": "WPA-PSK-KEYOK",
-    "keyType": "WPA-PSK",
-    "capabilities":"",
-    "password": "constrasenya1"
-  },
-  "WPA-PSK_KEY_WPS": {
-    "ssid": "WPA-PSK-KEYOK-WPS",
-    "keyType": "WPA-PSK",
-    "capabilities":"WPS",
-    "password": "constrasenya1"
-  },
-  "WPA-EAP-PSK_WITHOUTEAP": {
-    "ssid": "WPA-EAP-WITHOUTKEY",
-    "keyType": "WPA-EAP"
-  },
-  "WPA-EAP_SIM": {
-    "ssid": "WPA-EAP-SIM",
-    "keyType": "WPA-EAP",
-    "eap": "SIM",
-    "password": "constrasenya1"
-  },
-  "WPA-EAP-KEYOK-WPS": {
-    "ssid": "WPA-EAP-KEYOK-WPS",
-    "keyType": "WPA-EAP",
-    "eap": "PEAP",
-    "capabilities": "WPS",
-    "password": "constrasenya1",
-    "identity": "HI\\usr"
-  },
-  "WPA-EAP-KEYOK-CAPOK-PHASE2-OK": {
-    "ssid": "WPA-EAP-KEYOK-CAPOK-PHASE2",
-    "keyType": "WPA-EAP",
-    "eap": "PEAP",
-    "capabilities":"WPS",
-    "phase2": "PAP",
-    "password": "constrasenya1",
-    "identity": "HI\\usr"
-  }
- }
- -

Data enabled/disabled by default during FTU

- -

The data_ftu attribute defines if the data setting is enabled or disabled by default during FTU. This is a boolean value (true or false).

- -

Maximum number of SMS to convert to MMS

- -

sms contains the path to a file holding some customization details for SMS. Currently the only attribute that can be set is the maximum number of SMS messages that can be converted to MMS. A file format example follows:

- -
 {
-  "smsMaxConcat": 9
- }
- -

Pre-populate browser top sites

- -

 

- -

topsites contains the path to a file containing an array of topsite objects. A topsite object has three parameters: the title (string), the uri (url) and the iconPath. Here is a file format example:

- -
{
-  "topsites": [
-    {
-      "title": "Movistar",
-      "uri": "http://www.movistar.es",
-      "iconPath": "resources/movistar.ico"
-    }
-  ]
-}
- -

Bookmarks

- -
-

Note: For information about customizing bookmarks on earlier versions of Firefox OS see the Browser bookmarks and default search engines section.

-
- -

bookmarks contains the path to a file containing an array of bookmark objects. The bookmark object has three parameters: the title (string), the uri (url) and the iconPath. File format example:

- -
{
-  "bookmarks": [
-    {
-      "title": "Google",
-      "uri": "http://www.google.es",
-      "iconPath": "resources/google.ico"
-    }
-  ]
-}
- -

Data roaming on/off by default

- -

The data_roaming attribute defines if data roaming is enabled by default; its value is a boolean (true or false).

- -

Power on/off operator animation

- -

Custom power on/off animations are configured using an object as a value for the power attribute. The object contains two attributes, one for the boot animation when the device is switched on (poweron) and the other one for the animation when the device shuts down. Both attributes are configured with a key value identifying the resource to be loaded — the resource key should be video and the value is a path to the resource. Note that the path can be a local path to the resource in the build machine filesystem (for example resource/afile.png) or a URI to file inside a Gaia application that will be installed in the device (for example app://name.domain/path/to/video.mp4).

- -

Here is an example of the full structure of a power object:

- -
"power": {
-  "poweron": {
-    "video": "app://operatorresources/resources/power/latam_power_on.mp4"
-  },
-  "poweroff": {
-    "video": "resources/Power_off_test.mp4"
-  }
-}
- -

NFC enabled/disabled by default

- -

The nfc attribute defines if Near Field Communication is enabled by default; its value is a boolean (true or false).

- -

Building Prebundled web apps

- -

Earlier on, we discussed the apps.list file, and how this can be used to add built-in apps to your build. These apps need to be built in a certain way, then added to the gaia/external-apps directory.
-
- To build Prebundled web apps, you can utilize our preload-app-toolkit script, which builds a prebundled webapp from a given .webapp URL. It can accept hosted web app manifests, or packaged app mini-manifests.

- -

To bundle a single web app

- -

Find a .webapp URL that want to bundle, and run the command to bundle it, as follows:

- -
python preload.py http://<webapp url>
- -

This will generate a directory with the same name as the target webapp's name, e.g. accuweather.

- -

Batch process to bundle multiple web apps

- -

You can create a file called list, containing all the app names and .webapp locations you want to bundle all together in a batch. The format is:

- -
myFirstApp,https://www.firstapp.com/manifest.webapp
-mySecondApp,https://www.secondapp.com/manifest.webapp
-etc.
- -

You need to save this list file in the same directory as our preload.py script, then run the following command:

- -
$ python preload.py
- -

The preload.py script will parse the list file and do the batch conversion for you.

- -

Prebundled web app metadata.json

- -

Every Prebundled webapp should have a metadata.json file contained within its root directory. The Firefox Marketplace counts on this metadata.json file for auto-updating. This file is auto-generated by the preload.py script.
-
- For a hosted webapp, the properties of metadata.json are:

- - - -

For a packaged webapp, the properties of metadata.json are:

- - - -

Packaged web app auto-updates: update.webapp format

- -

Packaged webapps have an update.webapp file, which is used for auto-updates. The format is similar to manifest.webapp, but you have to include additional attributes:

- - - -
  {
-    "name": "Game Pack",
-    "icons": {
-      "60": "/icon-60.png",
-      "128": "/icon-128.png"
-    },
-    "version": "1.1.2",
-    "package_path": "/application.zip",
-    "developer": {
-      "url": "http://abc.com",
-      "name": "abc Inc."
-    },
-    "release_notes": "2nd release",
-    "locales": {
-      "es": {
-        "launch_path": "/index-es.html",
-        "description": "show me customization."
-      }
-    },
-    "size": 5460141
-  }
- -

Pre-bundled web app AppCache format

- -

If your web app's manifest.webapp has an appcache_path included in it, the preload.py script will fetch the AppCache file pointed to, and pre-fetch all the resources described in the AppCache file. The Pre-bundled webapp AppCache is a bit different, as Gecko recognizes a different format, but this is auto-generated by the preload.py script.

- -

The translated file structure is:

- -
    <app name>
-       ├── manifest.webapp
-       ├── metadata.json
-       └── cache
-             ├── manifest.appcache
-             └── <resources>
-
- -
-

Note: If a different name is given to the AppCache file in the appcache_path, it needs to be renamed to manifest.appcache and saved in the cache folder.

-
- -

FAQ

- -

The following is a list of common questions and answers about market customizations.

- -

What can be customized?

- - - -

How and where do you define a customized app grid layout?

- -

This is currently defined in gaia/apps/homescreen/js/init.json. customize.py takes care of building this in the correct format.

- -

Is it possible to define whether an app is removable in the homescreen configuration?

- -

No. All apps in /system/b2g are non-removable; those in /data are removable. Since all preloaded apps come from /system, we need to move them to /data if we want them to be removable.

- -

How do you add a preloaded packaged or hosted app to the build?

- -

These should both be added to gaia/external-apps. customize.py will allow entry of the URL to a packaged app or a hosted app manifest, and will download it into the correct place and create metadata.json. This will serve as the "build step".

- -

We have different metadata for packaged and hosted apps to distinguish them.

- -

See Building Prebundled web apps for more details.

- -

How do you prepare a preloaded hosted app for initial offline support?

- -

You need to provide all the files to cache in the directory external-apps/MY_APP/cache, along with the AppCache manifest.

- -

See Building Prebundled web apps for more details.

- -

What Marketplace Customizations Are Possible?

- - - -

There are many other considerations when adding a region or carrier.  See Adding Regions and Carriers for more details.

- -

How do I package and store per-market customization changes?

- -

Store only the files changed; currently these are in various locations in the filesystem. In B2G v2, we are considering consolidating these into a single location, similar to the branding directories we have for Gecko.

- -

How do you build the product with a specific market's configuration?

- -

Copy your changed files into a checkout of Gaia, and build using that modified Gaia. customize.py will provide a UI for setting relevant switches, create the appropriate files in the appropriate places in the gaia checkout, and then build the profile from that Gaia.

- -

How to customize power on / off animation?

- - diff --git a/files/ja/archive/b2g_os/developing_gaia/running_the_gaia_codebase/index.html b/files/ja/archive/b2g_os/developing_gaia/running_the_gaia_codebase/index.html deleted file mode 100644 index 2303dd84b3..0000000000 --- a/files/ja/archive/b2g_os/developing_gaia/running_the_gaia_codebase/index.html +++ /dev/null @@ -1,131 +0,0 @@ ---- -title: Gaia コードベースを実行する -slug: Archive/B2G_OS/Developing_Gaia/Running_the_Gaia_codebase -tags: - - Contributing - - Firefox - - Gaia - - OS - - running firefox os localy - - コントリビュート -translation_of: Archive/B2G_OS/Developing_Gaia/Running_the_Gaia_codebase ---- -

- -

この記事ではGaiaコードベースがローカルにてどう実行されるか、セットアップでどんなツールが使えるのかを一通り詳しく見て行きます。

- -

まず初めに、Gaiaにコントリビュート(貢献)するには、GeckoやB2Gをビルドする必要はないことを理解すべきです。ただGaiaのソースコードをダウンロードし、同じ方法で実行、編集できる事が必要です。

- -

Gaiaを実行するには、いくつかの方法があります:

- - - -

異なる方法で実行する上での正確な情報はGaiaを実行する色々な方法のページで見つかり、加えて要求されるより詳細な情報へのリンクがあります。一般に、これらは最も複雑なもの(しかし最も現実的な体験がある)から最も易しいもの(しかし最も現実的でない)の順番に並んでいます。

- -

この記事ではデスクトップ版 Firefox Mulet か WebIDE 内で実行するのに集中します。— Gaiaコードベースへの大半の変更に対して、これが更新をテストする最速のメカニズムになります、しかし明らかにいくつかの機能 (デバイスAPI群や電話機のハードウェアとのやりとりのようなもの) で実機端末が必要となるものもあります。

- -

: これ以上のGaiaヘルプを得るのに最良な場所は、IRCチャンネルの #fxos (Mozilla IRCに詳細情報あり) と dev-fxos のメーリングリストです。

- -

独自ビルドのGaiaを実行する

- -

: 簡単で、一発のビルドプロセスのために、Foxbox ツールを試してください。Windows ユーザは、不通のGaiaビルド手順が標準Windows環境で動作しないために、特にこれの恩恵を受けます。

- -
    -
  1. 最初に、 GithubのGaiaリポジトリをフォークします。
  2. -
  3. 次に、ローカルにクローンします。: -
    git clone https://github.com/your-username/gaia.git
    -
  4. -
  5. upstreamをこのように追加します: -
    cd gaia
    -git remote add upstream https://github.com/mozilla-b2g/gaia
    -
  6. -
  7. 今はGaiaのデバッグプロファイルを作る必要があります。リポジトリフォルダで make を実行することで、profileディレクトリ内に任意デバッグ用のプロファイルが作成されます。
  8. -
  9. デバッグプロファイルが生成された時、"Profile Ready: please run [b2g|firefox] -profile /Users/chris/git/gaia/profile" という行を伴ったメッセージが出てきます。これは無視して、その代わりに MuletWebIDE を、リンク先の手順を使って実行します。
  10. -
- -

トラブルシューティングと既知の問題

- -

Error: Python 実行ファイル"python3" は v3.x で、これは gyp によりサポートされていない。

- -

いくつかのLinux ディストリビューション (例: Archlinux)で、デフォルトのpythonはpython3です。これは npm がコマンドを実行する (例. テスト実行時) 時に失敗の元になります。きっぱりと修正するために、次のコマンドを実行できます:

- -
npm config set python python2
- -

 

- -

この Stack Overflow ページ で他の解決法を探せます。

- -

次に node_modules ディレクトリを削除して、失敗したコマンドを再実行します。

- -

NodeJSをインストールして下さい -- (linuxでは aptitude を、osxでは homebrew を使う)

- -

それで、インストールしたつもりでもこのエラーが出ます。Debian や、Ubuntuのような他のDebianベースのディストリビューションで起こりえます。こうしたディストリビューションでは、NodeJS は nodejs パッケージに含まれていて、全て正しくセットアップするには nodejs-legacy パッケージをインストールできます:

- -
sudo aptitude install nodejs-legacy
- -

 

- -

このパッケージのインストールに問題がある場合、 あなたはChris Lea's PPA for Nodeを使っているかもしれません; 先に進む前にこれを削除して下さい。

- -

異なる Gaia のブランチでは異なる node のバージョンが必要になります。; 例えば以前 node 0.10 と v2.5 のブランチで構築し、master ブランチに切り替えたい場合、以下のように実施します:

- -
npm use 4.2 && rm -r node_modules && npm install --production
- -

diff --git a/files/ja/archive/b2g_os/developing_gaia/submitting_a_gaia_patch/index.html b/files/ja/archive/b2g_os/developing_gaia/submitting_a_gaia_patch/index.html deleted file mode 100644 index f8a98981c5..0000000000 --- a/files/ja/archive/b2g_os/developing_gaia/submitting_a_gaia_patch/index.html +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: Gaia のパッチを提出する -slug: Archive/B2G_OS/Developing_Gaia/Submitting_a_Gaia_patch -tags: - - Bugzilla - - Firefox OS - - Gaia - - コントリビュート - - パッチ -translation_of: Archive/B2G_OS/Developing_Gaia/Submitting_a_Gaia_patch ---- -
-

これまでに、コード変更を完了し、それがGaiaを壊していないか検証しているはずです。次のステップは中心リポジトリにパッチを提出する事で、この記事ではその説明を意図しています。

-
- -

Gaia にパッチを送るのは、慣れるまでややトリッキーでしょう、なぜなら Bugzilla Github と、正しいシーケンスとするために特殊なフラグを使用することが含まれているためです。

- -

Autolanderを使った容易なパッチ提出

- -

Autolander はGaia (と、一緒に使用されるその他のプロジェクト) にパッチを送るのに要する、多くのステップを自動的に扱うツールであり、その過程の時間短縮とエラー削減になります。Autolander は、プルリクエストとバグを自動で添付したりして、Bugzilla から Github へのワークフローを統合します。Autolander を使用するには:

- -
    -
  1. 最初に、bugzilla にバグを登録して、まだ誰もコード変更していない場合に、何を行なっているのかを示します。これは Firefox OS product の下に投稿すべきで、かつあなたのコードが何をするのかについて良い説明を付けます。
  2. -
  3. 今度はパッチの プルリクエストを作成する 時間です。最初から我々のガイドに従ってきている場合、Gaiaリポジトリをローカルにフォークして一意に名づけたブランチに対して変更を加えているはずです。次に変更を 「git add .」 して、「git commit -m 'コミットメッセージ'」とします。
  4. -
  5. 'コミットメッセージ'にはBugzilla のバグ番号とバグのタイトルを含める必要があります。それに加え、パッチが何を行うのか、誰がコミットしたのかを記述します。例えばこう: -
    Bug 9999999 - Fix that annoying bug R=johndoe
    -
  6. -
  7. github上の、あなたのGaiaフォークにコードをプッシュして、次にコードを含めてもらうためにPR(プルリクエスト)を作成します。
  8. -
  9. プルリクエストが開かれたら、PR のタイトル内に見つかるバグに対して、自動的に添付されます。
  10. -
  11. 将来的には、添付ファイルが推奨レビューワーから r+ を与えられた時、キーワード項目に autoland キーワードを追加して、Gaia master にコードをランドできるようになります(つまりAutolander はコードをランドするでしょう: PR をマージして、バグに対してコミットを置き、バグが解決済みだとマークするまで) しかしながら、現在ここの部分はまだ作業中なので、いまのところは checkin-needed キーワードを追加して、他の適切な人があなたの代わりにランドしてくれるのを待たねばなりません。
  12. -
- -
-

: Autolander はmasterにランドする前に統合テストを実行します。統合テストがパスしない場合、Autolander はコードをランドするのを拒否します。プルリクエストとコミットメッセージにバグ番号が入っているかといった基本的なバリデーションが実行されます。

-
- -
-

: プルリクエストは、ランドするのを要求されるためにランドされます。プルリクエストは統合ブランチにマージされ、このブランチ内で並行して統合テストが実行されます。PRが統合テストに失敗した場合、統合ブランチからも拒否されて、残っているコミットから統合ブランチが再度ビルドされます。コミットがパスした場合はmasterをそのコミットまで fast-forward します。

-
- -

手動でのパッチ提出

- -

何らかの理由で、Autolander に頼りたくない場合、下記の手順に従って、手動でGaiaにパッチを提出します。

- -
    -
  1. 最初に、bugzilla にバグを登録して、まだ誰もコード変更していない場合に、何を行なっているのかを示します。これは Firefox OS product の下に投稿すべきで、かつあなたのコードが何をするのかについて良い説明を付けます。
  2. -
  3. 今度はパッチの プルリクエストを作成する 時間です。最初から我々のガイドに従ってきている場合、Gaiaリポジトリをローカルにフォークして一意に名づけたブランチに対して変更を加えているはずです。次に変更を 「git add .」 して、「git commit -m 'コミットメッセージ'」とします。
  4. -
  5. 'コミットメッセージ'にはBugzilla のバグ番号とバグのタイトルを含める必要があります。それに加え、パッチが何を行うのか、誰がコミットしたのかを記述します。例えばこう: -
    Bug 9999999 - Fix that annoying bug R=johndoe
    -
  6. -
  7. github上の、あなたのGaiaフォークにコードをプッシュして、次にコードを含めてもらうためにPR(プルリクエスト)を作成します。
  8. -
  9. PR の URL を bugzilla のバグに添付します (Add an attachment のリンクに従い、ファイル入力モードにて添付としてペーストするテキストを選び、PR の URL を添付の内容として入力し、簡単な説明を入力します)。
  10. -
  11. Bugzilla バグへの PR の添付上に、レビューを依頼します。review: ? フラグを添付物に加えて依頼できるでしょう。次に、あなたのコードが適用されるモジュールのオーナーを入れます(詳細は モジュールオーナーのページ を見て下さい。)
  12. -
  13. パッチをレビューするレビューアが割り当てられるのを待ちます。この時点で、多分レビューアは Github の PR に 変更/修正 を要求するようコメントして、Bugzilla にリンクするでしょう。
  14. -
  15. レビューアのコメントに対応して、前と同様に PR に更なる変更をプッシュして、 review: ? フラグを外します。
  16. -
  17. いったんレビューアのコメントが向けられて r+ フラグ (レビュー/承認済みを意味します) が付けられると、全コミットを1つにつぶし(squash)ます (下記の Tips_on_Gaia_Rebasing の節も読んで下さい。)。
  18. -
  19. キーワード項目に checkin-needed キーワードを加えます。この時点で誰かがあなたのパッチを Gaia のソースに定着させる (PR をマージするなど) のを待つ必要があります。
  20. -
  21. おめでとうございます! あなたのコードは Firefox OS の一部になりました!
  22. -
- -
-

: レビュー毎に1つのコミットを突き出すのをお勧めします。

-
- -
-

: これ以上のパッチ投稿手順はcontributing.mdで見つけられます。

-
- -

GaiaのRebaseについてのTips

- -

Gaia の master ブランチは常に(1日に何度も何度も)変更されています。2時間かかるパッチ作成をした後、master ブランチがあなたの下で変わっている事に気づくかもしれません。
-
- あなたの作業ブランチ (例. my-code-fix) から、最初に rebase を試すのはこのようになります:

- -
git checkout -b my-code-fix-r1
-git pull --rebase upstream master
- -

衝突がなければ、このように続けます:

- -
git checkout my-code-fix
-git pull --rebase upstream master
-git branch -D my-code-fix-r1
- -

衝突のある場合、衝突した変更の開発者と一緒に解決して、上記の rebase プロセスを繰り返します。

- -

エンジニアリングバグに対してステータスを トラッキングする

- -

Mozillaは Sheriff(保安官) という特別権限を持っています。 Sheriff にはコードをマージしたり、ブランチ状態をメンテする責任があります。Firefox OS チーム内にいるテストの失敗を調査するsheriffの数は限られているため、sheriff が不完全なパッチの全てを元に戻すのは困難です。

- -

Firefox OS では、ゆえに、パッチが動作するか否かの検証で失敗した場合、問題を解決する新しいパッチを定着させるための新しいバグを開くのが好まれます。これはQAとプロマネのチームにトラッキングステータスの問題を引き起こします。

- -

ゆえに、我々はステータストラッキングバグとエンジニアリングバグを分けています。

- - - -
-

: これはユーザストーリーバグでもあります。プロマネはユーザストーリーの項目にユーザストーリーと需要可能な条件をうめます。

-
- -

たまたまステータストラッキング中のバグを定着させた場合に回復する

- -

こうなった場合、パニックにならないで下さい。たまたまパッチを定着させたり、レビューを得たり、トランクに定着させたり、何も修正されていないと報告されたりした場合、なすべきことはここにあります:

- -
    -
  1. Bugzilla の UI の右下隅の "Clone this bug" を押して新規バグを作成し、オリジナルの項目の大半をそこにコピーします。ホワイトボード、キーワード、STR/ユーザのストーリーが新しいバグにコピーされているのを確認します。
  2. -
  3. 新規のバグが古いバグにブロックされるようセットします。新規バグは、新しいステータストラッキングバグになるでしょう。
  4. -
  5. needinfo フラグを使って、適切なプロマネステータストラッキングバグが変更されたのが知れ渡るように警告します。Wiki上にて Firefox OSの別のプロマネのメールアドレスを発見 できます。
  6. -
  7. 新規のエンジニアリングバグを作成して、故障手順や受容可能な条件を記述します。また、この新規バグを使ってステータストラッキングバグをブロックします。
  8. -
  9. 新規バグの解決法を提供するよう試みます。楽しくハックしましょう!!!
  10. -
- -

パッチを別のブランチに取り込むには

- -

バグの別バージョンのタグが見られる事もあるでしょう。Firefox OSの古めのブランチにパッチを持ち上げたい場合、パッチを定着させる規約を満たすかどうか確認します。詳細はB2G Landing pageで見つかります。

- -
diff --git a/files/ja/archive/b2g_os/developing_gaia/testing_gaia_code_changes/index.html b/files/ja/archive/b2g_os/developing_gaia/testing_gaia_code_changes/index.html deleted file mode 100644 index 3ec1fc72ae..0000000000 --- a/files/ja/archive/b2g_os/developing_gaia/testing_gaia_code_changes/index.html +++ /dev/null @@ -1,175 +0,0 @@ ---- -title: Gaia のコードの変更をテストする -slug: Archive/B2G_OS/Developing_Gaia/Testing_Gaia_code_changes -tags: - - Firefox OS - - Gaia - - UI - - コントリビュート - - テスト - - 統合 -translation_of: Archive/B2G_OS/Developing_Gaia/Testing_Gaia_code_changes ---- -

- -
-

Gaiaコードベースへの変更が完了して動作がOKと思われる時、次のステップは、プロジェクトに戻すパッチを投稿する前に、テストプロシージャを一通り通して、変更が本当に動作する —のと、Gaiaのその他の部分と一緒に正しく動作する— のを確認する事です。この記事では方法を説明します。

-
- -

テストの手順は、一般にこんな構成です:

- - - -

両方の領域を観察してみましょう。

- -

標準デバッグを行う

- -

熟練のweb開発者ならGaiaのコードをデバッグするのは慣れたプロセスでしょう。すでにデスクトッブ版FirefoxでGaiaを実行する方法や、簡単な変更を加える方法を見てきました。もっと複雑なコードベースの追加のためには、デスクトッブ版Firefoxのビューにてアクセスできる、Firefoxデバッグツールをもっと使いこなしたくなるでしょう。

- -

: これらのツールの詳細なマニュアルはTools zoneにあります。

- -

自動テスト

- -

パッチを投稿する前に、Gaiaにふさわしい標準テストスイートも実行しておくべきであり、そうすることで既存の主要な電話機能に逆行した変更をしていないことを確認します。 実行できるテストは:

- - - -

一般的にパッチの投稿前には、テスト実施を求めます; 最初の貢献の場合はテストなしに投稿できますが、将来にテストが実施されるように手助けを求める必要があります。テスト実行の前にはGaiaリポジトリを更新して、最新のものが手元にあるのを確認すべきです。

- -
-

ショートカット: もしテスト環境の構築方法を知らない場合、MozITP を使用してください — このツールセットは自動で Ubuntu VMをセットアップし、インテグレーションテストを実施し UI のテストを実施するテスト環境をワンクリックで作成することが出来ます。

-
- -
-

: テストを動作させる方法については、Firefox OS の自動テスト のページで見つけることができます。

-
- -
-

: 利用可能であれば実機端末 (いくつかの機能 /ハードは、エミュレータではサポートしません) での各テストの実行を検討し、利用不可の場合はB2G デスクトッブエミュレータか、Firefoxナイトリーを使います。

-
- -

ユニットテスト

- -

ユニットテストは、大きなアプリケーション内の、個々のユニットのテスト — Gaiaの場合ぱ個々のアプリ—です。Gaiaで使用するのは:

- - - -

下記コマンドでダウンロード、インストール、及び ユニットテストサーバの提供ができます(実行にかなりの時間がかかり、なのでお茶を入れる良い時間かもしれません):

- -
DEBUG=1 make
-export FIREFOX=/Applications/FirefoxNightly.app/Contents/MacOS/firefox
-bin/gaia-test
- -

ユニットテスト一覧のwebページが開くでしょう。実行するにす:

- - - -

開いているウィンドウで、新規のターミナルウィンドウから全テストスイートを実行することもできます。:

- -
make test-agent-test
- -
-

: これはかなり長い時間がかかります、なぜなら実行すべきテストが大量にあるためで(ひょっとして1時間以上)、ゆえにおそらくあなたが変更したアプリ向けのテストだけを実行したくなるでしょう。これを行うには APP=<app folder name> をコマンドに追加します、例えば APP=settings

-
- -
-

: テストについてのより詳しい情報はGaia ユニットテスト を見て下さい。

-
- -

統合テスト

- -

統合テストには、異なるユニットのコードを一緒なグループにして、それらが一緒に正しく動作するかのテストを含んでおり、ユニットテストの次の論理的ステップです。Gaiaの統合テストは JavaScriptで書かれるmarionetteスクリプトと pythonベースのサーバで動かされます。これはGeckoと通信してブラウザと Firefox OS 端末の両方の制御と、お互いの相互作用が可能になります。

- -

下記コマンドを実行して統合テストを起動できます:

- -
make test-integration
- -
-

: ユニットテストと同様に、統合テストスイート全体の実施には時間がかかります、なので APP=<app folder name> を上記のコマンドに追加してアプリ単体をテストできます、例えば  APP=calendar

-
- -
-

: 統合テストのより詳細な情報は、Gaia 統合テストを読んでください。

-
- -

パフォーマンステスト

- -

Gaia のパフォーマンステストは、 外部の Raptor CLI ツール で実行されます。Raptor ではアプリを複数回起動することを自動化できて、アプリの起動時間についての統計情報を出力します。テスト実行後には、Raptor はアプリケーションについてのメモリ情報も出力します。

- -

Raptor のパフォーマンステストを実行するには、次を見てください Raptor: Getting Started.

- -

UIテスト

- -

 Gaia UI テスト入門を見て下さい。

- -
diff --git a/files/ja/archive/b2g_os/developing_gaia/understanding_the_gaia_codebase/index.html b/files/ja/archive/b2g_os/developing_gaia/understanding_the_gaia_codebase/index.html deleted file mode 100644 index 075138e621..0000000000 --- a/files/ja/archive/b2g_os/developing_gaia/understanding_the_gaia_codebase/index.html +++ /dev/null @@ -1,210 +0,0 @@ ---- -title: Gaia コードベースを理解する -slug: Archive/B2G_OS/Developing_Gaia/Understanding_the_Gaia_codebase -tags: - - Code - - Firefox OS - - Gaia - - Guide - - JavaScript - - contribution -translation_of: Archive/B2G_OS/Developing_Gaia/Understanding_the_Gaia_codebase ---- -

- -
-

Gaiaコードベースにあなたの変更を加え始める前に、全体がどう構成されているか、コードの慣習が適用されているかについての基礎を理解しておくべきです。この記事では両方の点について説明します。

-
- -

Gaia ブランチ

- -

Gaia コードベースには色々なブランチがあり、それは何の作業をしているかによります (またはどの端末を持っているか) masterブランチをダウンロードや、ハック、makeしたいのではないかもしれません。ここに最も普通で、たぶん興味を持たれるリポジトリの簡単なガイドがあります:

- - - -

Gaiaコードベースの構造

- -

以下の章では、Gaiaコードベースの最も重要な部分を概説します。

- -

apps/

- -

このディレクトリには主なGaiaアプリがあります。ホームスクリーンに表示されるアプリ(カレンダーやカメラのようなもの)と下にあるアプリ(システム、ホームスクリーン、キーボードといったもの)との両方のアプリがあります。このアプリの動作は少しずつ異なる方法で、ただ多くの共通機能があります、それは:

- - - -
-

: 実際に動くアプリの詳細情報は Gaia apps guide で見つかります。

-
- -

build/

- -

ビルドスクリプトを含むディレクトリ

- -

dev_apps/

- -

このディレクトリはカスタマイズにより同梱されるアプリを含みます。例えば、カスタムビルド時に同梱したいカスタムアプリをここに入れます。

- -
-

: Gaiaのカスタムの詳細情報については Market customizations guide を読みます。

-
- -

keyboard/

- -

keyboardディレクトリには異なる言語用のキーボード辞書やレイアウトがあります。

- -

locales/

- -

このディレクトリには languages_all.json というJSONファイルがあり、Gaiaでどの言語をサポートするかを定義します。アプリをどうローカライズするかの詳細な洞察については Getting started with app localization を読みます。

- -

shared/

- -

このディレクトリには、複数のアプリが利用している多くのリソースがあります; 主要ないくつかは:

- - - -

tools/

- -

toolsディレクトリにはビルドスクリプトやテスト向けのツールがあります。

- -

Gaiaコーディングスタイル

- -

GaiaはGoogle JavaScriptコーディングスタイルに従っています。

- -

背景の情報:

- - - -

特有のルール

- -
    -
  1. HTML ファイルが <!DOCTYPE html> (すなわち、HTML5文書)と宣言されているか確認して下さい。未定義なら、Internet Explorer 9 以降では互換モードで読み込まれます。
  2. -
  3. JavaScriptファイルの先頭に"use strict"; 宣言を(このように、クォート含め)入れて、strict(厳密な)モードにして下さい。
  4. -
  5. 常にタブでなく、2文字の半角スペースでインデントして下さい。
  6. -
  7. コードの論理的な部分に分けるのに、改行を使用して下さい!
  8. -
  9. 複数の単語のファイル名は"アンダースコア"文字で単語を分けます、 like_this.js のように。
  10. -
  11. 文字列用には、ダブルクォーテーションの代わりにシングルクォーテーションを使います。
  12. -
  13. 展開した条件構造を使います: -
    悪い例
    -if (expression) doSomething();
    -
    -正しい例
    -if (expression) {
    -  doSomething();
    -}
    -
  14. -
  15. Systemアプリで作業している場合、ガイダンス一覧を確認して下さい。
  16. -
- -

コミットごとのコーディングスタイルチェック

- -

Gaia は jshint を使って、各コミット前(pre-commit フック経由)に JSのコーディングスタイルを自動的にチェックしています。いったんGaia リポジトリにプルリクエストを送信すると、Travis(GithubのCI)サーバがこの linter で全スタイルが正しいかをダブルチェックします。 make コマンドが実行されると、gaia/tools/pre-commit にあるpre-commit フックスクリプトがプロジェクトの .git/hooks フォルダにコピーされます。

- -
-

: かつては gjslint をコーティングスタイルチェックに使用していましたが、jshint の方がより厳密で良い結果が出るため、その使用を廃止しました。Firefox OS 1.4 以降ではJSHintを使用しており、gjslint はJSHintに移行されていない、古いファイル用にのみ推奨します。

-
- -

Gaia経由で手動lintチェックを実行する

- -

パッチを投げる前に、JSHintを手動で実行して、スタイルエラーをチェックする事を推奨します。
-
- Gaia内のjshintに関するより詳しい情報については、gaia/build/jshint ディレクトリの中を見て下さい。 Gaia はビルドスクリプトを提供しています。実行するには:

- -
$ make lint
- -

として gjslint と jshint 両方のスタイルチェックができます。あるいは

- -
$ make hint
- -

と実行して単なる jshint スタイルチェックができます。

- -
$ make eslint
- -

と実行して単なる eslint スタイルチェックができます。

- -
-

: Gaiaを使わず、自分専用の jshint をインストールしたい場合、下記を使用できます:

- -
npm install jshint -g
-jshint myfile.js
-
-
- -

 

- -
diff --git "a/files/ja/archive/b2g_os/developing_gaia/\346\247\213\351\200\240\345\205\245\351\226\200\346\233\270/index.html" "b/files/ja/archive/b2g_os/developing_gaia/\346\247\213\351\200\240\345\205\245\351\226\200\346\233\270/index.html" deleted file mode 100644 index ccfd97f081..0000000000 --- "a/files/ja/archive/b2g_os/developing_gaia/\346\247\213\351\200\240\345\205\245\351\226\200\346\233\270/index.html" +++ /dev/null @@ -1,249 +0,0 @@ ---- -title: Gaia 構造入門書 -slug: Archive/B2G_OS/Developing_Gaia/構造入門書 -tags: - - Build documentation - - Building - - Firefox OS - - Gaia - - Guide -translation_of: Archive/B2G_OS/Developing_Gaia/Build_System_Primer ---- -

- -
-

この記事ではGaiaのビルドシステムがどのように動作するのかを、makefileや、ビルド手順や、環境変数や、カスタマイズを含めて説明します。

-
- -

ビルドステップ用に意味のある成果の大半は、Gaiaの build/ サブディレクトリにあるスクリプトによって実行されます。これはmakeやnode.jsや、XULRunnerの実行環境である XPCShell (JS Shellとも言う)を使って実行されます。Gaiaのビルドシステムは、webアプリのインストールや、テストや、ローカライゼイションや、実端末へパッケージするのに役立つヘルパーツールを含んでいます。その他に開発者がGaiaをカスタマイズするのも可能になり、例えば、デフォルトの壁紙、着信音、アプリ、設定の変更ができます。

- -
-

: XPCShell は node.js と同様ですが、違いとしていくつかMozilla風味の javascriptも実行できます。これは Gaia ビルドスクリプトを Firefox拡張機能内で実行できるようにします。

-
- -

Makefile

- -

Makefileはひとかたまりのゴールから構成されています。 この節では最も役立つものを説明します。

- -

install-gaia

- -

このゴールは全てのGaia用アプリを端末にプッシュします。特定のアプリだけをプッシュしたい場合、次のように APP フラグを使用できます:

- -
APP=calendar make install-gaia
- -

このディレクトリは Gaia アプリのディレクトリ(例 apps)の中にある必要があります。

- -

reset-gaia

- -

これは install-gaia とほぼ同じ動きをしますが、違いはまず掃除(clean)をして、次に全アプリをインストールした後にパーミッションをセットアップします。アプリはエンジニアリングビルドと同様に /data/local 内にあります。これはテストやデバッグのアプリもプッシュします。

- -
-

要注意: APP 環境変数を reset-gaia と一緒に使うと動作しているように見えますが、電話機が使えない状態 (このゴールを APP 変数なしで実行すると復活できます) になるでしょう。なので行わないようにして下さい。

-
- -

production

- -

reset-gaia と同様で、違いはソースコードが最適化されます。このゴールは基本的にユーザビルドのエミュレーションを可能にします。これはユーザビルドでインストールされるアプリもプッシュされます。

- -
-

要注意: APP 環境変数を production と一緒に使うと動作しているように見えますが、電話機が使えない状態 (このゴールを APP 変数なしで実行すると復活できます) になるでしょう。なので行わないようにして下さい。

-
- -

reference workloads

- -

このゴールは端末に色々なサイズの負荷をかけて、デバッグしたり、パフォーマンスや、起こりうるスケーラビリティの問題を修正したりするのに役立ちます。このゴールは APP または APPS 環境変数を受け入れ、それはスペースで区切られたアプリ名を含みます、例えば

- -
APP=sms make reference-workload-light
-APPS="sms communications/contacts" make reference-workload-heavy
-
- -
-

: 詳細情報は、Hacking Gaia: Reference workloadsを読んで下さい。

-
- -

環境変数

- -

いくつかの環境変数は端末へのビルドとインストールの側面を制御します、例えば:

- -

P=1

- -

これはマルチコアCPUを活かしてビルド時間を高速化するパラレルビルドを有効にします。デフォルト値は 0です。

- -
-

要注意: パラレルビルドは実験的機能で、不安定な場合があります。

-
- -

GAIA_OPTIMIZE=1

- -

これは JavaScript ファイルの最適化を有効にします。これは make production 実行時に自動的にセットされます。これは install-gaiareset-gaia でも使われることがあります。

- -

PRODUCTION=1

- -

これは基本的に make production のエイリアスです。

- -

DEBUG=1

- -

これは Gaia ユニットテストや、FirefoxでFirefox OSアプリを開発する時に使う、デバッグプロファイルを生成できるようになります。新規生成の前に、既存のプロファイルディレクトリを削除しておく必要があります。

- -

DEVICE_DEBUG=1

- -

端末の画面ロックを無効にします。

- -

GAIA_DEVICE_TYPE=phone

- -

この変数は色々な 'app.list' から特定端末をビルドするのを許可します。全ての 'app.list' ファイルは /build/config/$(GAIA_DEVICE_TYPE)/  フォルダにあります。

- -

GAIA_DEVICE_TYPE のデフォルト値は phone です。

- -
-

: 詳細とオプションについては、Hacking Gaia make options のガイドを参照下さい。

-
- -

ビルド手順

- -

ここにgaiaをビルドするためのシーケンス図があります:

- -

- -

pre-app.js と app.js と post-app.js とは Makefile によって実行され、大抵のビルドタスクは xpcshell スクリプトによって完了します。Makefile はOSを判定したり b2g-desktop をダウンロードするのに使われ、我々はMakefile から xpcshell スクリプトにタスクを移行する予定です。

- -

なぜ pre-app と app と post-app とがあるのか疑問に思うかもしれません、それは Makefile から xpcshell スクリプトへ、依存性を移動しているからです、なので大半の依存性を xpcshell に移行するため、 pre-app.js と post-app.js を bug 1021051 に基いて作りました。そして最終的には、bug 1053703 に基いてapp.js と pre-app.js と post-app.js はマージされるでしょう。

- -

gaiaビルドシステムには3種類のディレクトリがあります:

- -
    -
  1. ソースディレクトリ: apps, dev_apps, shared ディレクトリ
  2. -
  3. ステージディレクトリ: build_stage
  4. -
  5. プロファイルディレクトリ: profile, profile-debug や profile-test ディレクトリ
  6. -
- -

我々のゴールはソースディレクトリにファイル生成することでは決してなく、不幸にもまだソースディレクトリにファイル生成するモジュールが残っていますが、この問題を解決する予定です。どのモジュールがソース、ステージ、プロファイルディレクトリにファイル生成するのかを示す表がここにあります。

- -

- -

ここにgaiaディレクトリで make が実行された時のビルドプロセスを、実行される順に載せます:

- -
    -
  1. b2g_sdk: b2g-デスクトップは GAIA_DIR/build/にある xpcshell スクリプトを実行するのに使われます。
  2. -
  3. svoperapps: モバイル通信事業者や国がインストールするアプリ用に、アプリをダウンロードして、設定ファイルを生成します。
  4. -
  5. webapp-manifests: ビルドプロセス用のwebアプリのメタデータを生成します。
  6. -
  7. keyboard-layouts: デフォルトのキーボードレイアウト設定を生成します。
  8. -
  9. settings.json (settings.js): この JavaScript はFirefox OSのデフォルト設定を生成し、それは Gaia により読み込まれます。
  10. -
  11. webapp-shared: 各アプリに使われるファイルを、shared ディレクトリから build_stage ディレクトリに移動します。
  12. -
  13. preferences: Firefox OS用のデフォルト設定を生成します; user.js ファイルを生成して端末に配置し、Geckoにより読み込まれます。この値は DEBUG=1 のような別の環境変数によって変更される可能性があるのに注意して下さい。
  14. -
  15. app.js: アプリディレクトリ内のMakefile: これらが存在する場合に実行されます。各アプリにとって、アプリのMakefileがなければ、Gaia Makefile がアプリのディレクトリをbuild_stageにコピーして、[アプリディレクトリ]/build/build.js があれば実行します。より詳細は Build script for apps を見て下さい。
  16. -
  17. test-agent-bootstrap & test-agent-config: 2つのmakeルールを含む test-agent をセットアップします、test-agent-configtest-agent-bootstrap-apps で、これは各アプリのテスト環境セットアップに使われます。
  18. -
  19. webapp-optimize: このスクリプトはJavaScript 最小化、ローカライゼーションリソースファイルを JSON ファイルにまとめる、必要に応じてデフォルト言語用の HTML ファイルを生成する、といった色々な最適化手順を含みます。
  20. -
  21. webapp-zip: これは各アプリを別のzipファイルに圧縮して profile/ ディレクトリに配置します。
  22. -
  23. optimize-clean: optimize-clean はデフォルト言語のHTMLファイルをきれいにします。
  24. -
  25. contacts: GAIA_DISTRIBUTION_DIR に存在すれば、事前読込された連絡先ファイルをプロファイルにコピーします
  26. -
  27. extensions: GAIA_DIR/tools/extensions 内の拡張機能をプロファイルディレクトリにコピーします; 別の設定のセットアップは別の拡張機能のコピー指定を可能にします。
  28. -
  29. installed-extensions.json (additional-extensions.js): 最終的に、このスクリプトが追加拡張機能をプロファイルディレクトリにダウンロードします。
  30. -
- -

アプリ用のビルドスクリプト

- -

デフォルトでは、アプリのビルドスクリプト [アプリディレクトリ]/build/build.js がある場合、app.js によって実行されます。$APP/build/build.js がない場合、app.js はアプリを build_stage にコピーします。

- -

アプリディレクトリ内のファイルは、アプリのビルドスクリプトによってbuild_stage ディレクトリにコピーされるべきです、なぜなら app.js はアプリのビルドスクリプトがある場合はそれらをコピーしないからです。例えばカレンダーアプリに build/build.js があって、カレンダーアプリ用の build.js によってutils.copyToStage() が呼ばれるべきです。

- -
-

: アプリケーション外部のソース (shared/ の中のような) のために、index.html の<head> 内のコメントの中に入れておく必要があって、それにより、shared/ がアプリ内にコピーされるようになります。

-
- -

 

- -

アプリ用のビルドスクリプトは $GAIA_DIR/build 内の全ビルドモジュールが必要で、特にアプリのビルドに便利なユーティリティモジュールが要ります。モジュールを取得するのに require('utils') を使えます。

- -

- -

設定をカスタマイズする

- -

カスタム設定があると気づいた場合、端末に書き込む時間をそれぞれセットする必要があり、custom-prefs.js というファイルをbuild/config ディレクトリ内に作ってその中におく事ができます。これで上書きされてソース制御外になるのを防止できます。

- -

ここに便利な設定があります:

- -
// this enables marionette which lets you run performance tests
-// see https://developer.mozilla.org/en-US/docs/Mozilla/Firefox_OS/Platform/Testing/Gaia_performance_tests
-user_pref("marionette.defaultPrefs.enabled", true);
-
-// this sets the port for remote debugging your application on the device
-user_pref("devtools.debugger.remote-port", 60000);
-
-// this enables the remote debugger
-user_pref("devtools.debugger.remote-enabled", true);
-
-// this outputs debug information about the Radio Interface Layer in logcat
-user_pref("ril.debugging.enabled", true);
-
- -

このファイルはプロファイル生成するたびに読み込まれます。全て確実に生成させるのに最も安全な方法は、最初にプロファイルを消す事です:

- -
rm -rf profile && make profile
- -

それで install-gaia ゴールを安全に使えます。

- -

FAQ

- -

焼き込み後に端末が黒いままになる

- -

これは端末がアイドル時に焼き込みした場合に時々起こりえます。これを治療するには単にコマンドラインで次のコマンドを使って B2G を再起動します:

- -
adb shell stop b2g && adb shell start b2g
- -

 

- -
diff --git a/files/ja/archive/b2g_os/firefox_os_apps/index.html b/files/ja/archive/b2g_os/firefox_os_apps/index.html deleted file mode 100644 index 370236dd14..0000000000 --- a/files/ja/archive/b2g_os/firefox_os_apps/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: Firefox OS apps -slug: Archive/B2G_OS/Firefox_OS_apps -tags: - - Apps - - Building - - Components - - Firefox OS - - Installing - - NeedsTranslation - - TopicStub - - device APIs -translation_of: Archive/B2G_OS/Firefox_OS_apps ---- -

This section of the Firefox OS docs covers the specific techniques required — and available tools — for building Firefox OS apps. You'll find a number of details below, from Firefox OS building blocks/web components, to device APIs and App installation.

- -

Building Firefox OS apps

- -
-
Building apps for Firefox OS
-
Firefox OS/Firefox platform app specifics, including App installation and management APIs, manifest files, packaged and hosted apps, handling API permissions.
-
Localization
-
This set of articles provides information for developers wishing to provide localized versions of their apps.
-
Performance
-
This page lists performance-related topics specific to Firefox OS.
-
Firefox Accounts on Firefox OS
-
This article provides an overview of using Firefox Accounts in Firefox OS.
-
Reference apps
-
This page lists a number of sample apps we've put together for you to download, install, play with and learn from. Have fun!
-
Screencast series: App Basics for Firefox OS
-
In this collection of short videos, developers from Mozilla and Telenor explain in a few steps how you can get started with building applications for Firefox OS.
-
- -

Building blocks

- -
-
Building Blocks
-
The Firefox OS Building Blocks are reusable UI components (also called 'common controls') that reflect OS-wide design patterns. Building Blocks are used to create the interfaces of all Gaia default apps. You are free to make use of these components in your own Firefox OS apps, or general Web apps.
-
- -

Styleguides

- -
-
Firefox OS Visual styleguide
-
Our style guide for Firefox OS visual design, covering colours, typeface, backgrounds, app icons, and the design of specific UI elements.
-
Firefox OS Copy styleguide
-
This guide outlines the rules we follow for writing Firefox OS app copy, but can be used as a general guide to writing good copy for any app interfaces.
-
Firefox OS in Arabic
-
A guide to the specific UX design implementation Firefox OS has in place for dealing with Arabic (and other RTL languages.)
-
- -

Assets

- -
-
Firefox OS design asset library
-
In this section you'll find design assets, artwork, graphic templates, fonts and other materials that will be helpful as you design Firefox OS/Gaia apps.
-
Firefox OS icon font
-
Firefox OS has its own icon font set available: this article explains how to use it in your own apps.
-
Firefox OS transitions
-
A reference to some of the transitions used in Firefox OS to move between different states in apps, including animated GIFs demonstrating the animations used, plus code samples to show the CSS animation code needed to implement these animations.
-
- -

References

- -
-
Firefox OS device APIs
-
This article provides a list of pages covering those APIs, as well as the app manifest permissions for each one.
-
Firefox OS app tools
-
This page provides a list of useful tools, libraries, examples, etc. that are useful for Firefox OS app developers, whether you want a code template to copy, or need help with adding a specific feature to your Firefox OS app.
-
- -

Other app topics

- -
-
Porting Chrome apps to Firefox OS Apps
-
This article discusses the differences between Chrome apps and Firefox OS Apps, and how you can convert between the two.
-
App development FAQ
-
This FAQ is a compilation of answers to common app development questions.
-
- -

See also

- - diff --git a/files/ja/archive/b2g_os/firefox_os_faq/index.html b/files/ja/archive/b2g_os/firefox_os_faq/index.html deleted file mode 100644 index 0f0855d7a5..0000000000 --- a/files/ja/archive/b2g_os/firefox_os_faq/index.html +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Firefox OS のよくある質問 -slug: Archive/B2G_OS/Firefox_OS_FAQ -translation_of: Archive/B2G_OS/Introduction ---- -
-
Firefox OS (Mozilla の新しいモバイルOS) についてのよくある質問があります。あなたの疑問が回答されていない場合、Firefox OS documentation ページでも探してみて下さい。
-
 
-
Firefox OS とは何ですか?
-
オープン Web 標準のみで構築されている新しいモバイル端末向け OS です。このため、端末のすべての機能 (電話、メッセージ、ブラウジングなど) が携帯端末の下位レイヤーにまでアクセスできる HTML5 アプリケーションとして開発されています (他の環境 (エコシステム) ではネイティブアプリのみが可能です)。
-
開発者端末はどこで入手できますか?
-
everbuying のウェブサイトで、開発リファレンス端末であるFlame を購入することが出来ます。
-
端末を購入せずに Firefox OS 向けアプリの開発はできますか?
-
もちろんです。Android 上 (Firefox 向け Marketplace を利用) やデスクトップで Firefox OS simulator を利用すればアプリのテストができます。
-
自分の端末に Firefox OS をダウンロードしするにはどこからしたらよいですか?
-
Firefox OS のビルドとインストールをご覧ください。
-
Firefox OS でアプリをテストするには?
-
Android か Firefox OS simulator を利用してください。
-
Web API の一覧はどこにありますか?また、標準化は行われていますか?
-
Web API の完全なリストは https://wiki.mozilla.org/WebAPI#APIs でご確認ください。 標準化も進行中 です。
-
Web API はクロスプラットフォームを前提に標準化されていますか?
-
はい。API はパートナーやベンダーと共に開発してきた成果です。また、一部はすでに他のプラットフォームでの動作確認が済んでいます。エンドユーザが所有するハードウェアへ Web アプリがアクセスできるようにすることはほとんどすべての技術企業が取り扱っている問題です。私たちが提供していることが他のプラットフォームへ適用するのによい出発点となることでしょう。
-
diff --git a/files/ja/archive/b2g_os/firefox_os_usage_tips/index.html b/files/ja/archive/b2g_os/firefox_os_usage_tips/index.html deleted file mode 100644 index d57c89d731..0000000000 --- a/files/ja/archive/b2g_os/firefox_os_usage_tips/index.html +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Firefox OS usage tips -slug: Archive/B2G_OS/Firefox_OS_usage_tips -tags: - - Firefox OS - - Tips -translation_of: Archive/B2G_OS/Firefox_OS_usage_tips ---- -
-
電話機の開発者機能と、それが何をするのかを説明します (Settings > Device information > More information > Developer)
-
リモートデバッグ
-
電話機のリモートデバッグのセットアップ方法
-
電話機のロック解除
-
電話機のロック解除する基本手順
-
スクリーンショットを撮る
-
Firefox OS 電話機でのスクリーンショットの撮り方
-
- -

 

diff --git a/files/ja/archive/b2g_os/index.html b/files/ja/archive/b2g_os/index.html deleted file mode 100644 index 54a2c5ae63..0000000000 --- a/files/ja/archive/b2g_os/index.html +++ /dev/null @@ -1,167 +0,0 @@ ---- -title: B2G OS -slug: Archive/B2G_OS -tags: - - B2G - - B2G OS - - Basic - - Gaia - - Gecko - - Gonk - - Overview - - b2g smartphone os - - getting started with b2gos - - web based os from mozilla - - web os gecko -translation_of: Archive/B2G_OS ---- -
B2G OS は、オープンウェブのための完全にスタンドアロンなオペレーティングシステムです。これは、Mozilla コミュニティにより開発されたオープンソースプロジェクトであり、Firefox OS の基盤を形成します。
- -

B2G OS は、コミュニティが保守するスマートフォンやタブレット、スマート TV、コネクテッドデバイス向けのオープンソースのオペレーティングシステムです。このプロジェクトは 2011 年に開始され、Linux カーネルと Gecko レンダリングエンジンをベースとしています。ユーザーインターフェイス全体が Web 技術 (HTML や CSS、JavaScript) で構築され、Web アプリケーションとして起動、使用することができます。Mozilla が商用 Firefox OS スマートフォンプログラムを終了したため、Firefox OS プロジェクトのスマートフォン部分に関しては、Mozilla のボランティアコミュニティによって完全に維持され、B2G OS ブランドで開発されています。

- -

- -
-

注目: より多くの人々を集めるため、貢献者募集アプリ再開発者の募集が行われています。共有して多くの人に知らせてください。

-
- -
-
-

開発を手助けするには

- -
    -
  • バグを報告・解決する (メタバグは bug 1252143 です)
  • -
  • 失敗している テスト の修正を助ける
  • -
  • Gaia のスマートフォンアプリを移植する: -
      -
    1. Web アプリに書き換える (または)
    2. -
    3. アプリを app:// から chrome:// に変更 (その理由)、問題を見つけたらバグを報告する
    4. -
    -
  • -
  • お持ちの携帯電話向けにB2G OSを移植する、または、移植の保守を助ける
  • -
  • このドキュメントと Wiki の翻訳改善を助ける
  • -
  • スマートフォン向けの新しい機能を提案・実装する
  • -
-
- -
-

参加するには

- - - -

B2GOS ミーティングとコミュニティの Working Groups ミーティングに参加するには、このカレンダーに登録してください。これらは、Discourse でアナウンスされています。ここで、参加方法やミーティング記録などの情報を得ることができます。

-
- -
-

サポート端末

- - - -

その他の詳しい情報は、互換性のある端末のページ を参照してください。

- -

B2G installer アドオンを使うと、お持ちの対応端末に簡単にフラッシュできます。

- -

お持ちの端末が一覧にない場合は、デスクトップで Mulet をお試しください。

- -

*WIP = Work In Progress.

-
-
- -
-

注記: いくつかのページは MDN アーカイブ へ移動しました。何か問題を見つけたり、アーカイブの中に元に戻すべきセクションがあればお知らせください。

-
- -

 

- - - -
    -
  1. B2G OS アーキテクチャ - -
      -
    1. B2G OS アーキテクチャ
    2. -
    3. B2G OS API
    4. -
    -
  2. -
  3. Gaia -
      -
    1. Gaia の概要
    2. -
    3. Gaiaを実行する様々な方法
    4. -
    5. Gaia コードベースを実行する
    6. -
    7. Gaia を開発する -
        -
      1. Gaia コードベースを理解する
      2. -
      3. Gaia コードを変更する
      4. -
      5. Gaia コードの変更をテストする
      6. -
      7. Gaia のパッチを提出する
      8. -
      9. Gaia ビルドシステムの入門
      10. -
      11. Make オプションのリファレンス
      12. -
      13. Gaia ツールのリファレンス
      14. -
      -
    8. -
    -
  4. -
  5. B2G OS をビルドする -
      -
    1. ビルドの概要
    2. -
    3. B2G OS ビルド過程の要約
    4. -
    5. ビルドの前提条件
    6. -
    7. 初めてのビルドを準備する
    8. -
    9. B2G OS をビルドする -
        -
      1. B2G OS をビルドする
      2. -
      3. Mac OS X で Flame 用のB2G OSをビルドする
      4. -
      5. Fairphone用のビルド
      6. -
      7. B2G ビルド変数のリファレンスシート
      8. -
      -
    10. -
    -
  6. -
  7. デスクトップ版 B2G OS を実行する -
      -
    1. Choosing how to run Gaia or B2G OS
    2. -
    3. Run B2G OS on desktop using Mulet
    4. -
    -
  8. -
  9. モバイル端末に B2G OS をインストールする -
      -
    1. モバイル端末に B2G OS をインストールする
    2. -
    3. B2G installer add-on
    4. -
    -
  10. -
  11. 互換端末
  12. -
  13. B2G OS の更新を作成する -
      -
    1. B2G OS 更新パッケージを作成して適用する
    2. -
    3. FOTA コミュニティビルドの作成と配布
    4. -
    -
  14. -
  15. B2G OS を移植する -
      -
    1. 移植の概要
    2. -
    3. 移植の基礎
    4. -
    5. CyanogenMod 上に移植する
    6. -
    -
  16. -
diff --git a/files/ja/archive/b2g_os/installing_boot_to_gecko_on_a_mobile_device/index.html b/files/ja/archive/b2g_os/installing_boot_to_gecko_on_a_mobile_device/index.html deleted file mode 100644 index a1f89987a0..0000000000 --- a/files/ja/archive/b2g_os/installing_boot_to_gecko_on_a_mobile_device/index.html +++ /dev/null @@ -1,160 +0,0 @@ ---- -title: B2G OS をモバイル端末にインストールする -slug: Archive/B2G_OS/Installing_Boot_to_Gecko_on_a_mobile_device -tags: - - B2G - - Mobile -translation_of: Archive/B2G_OS/Installing_on_a_mobile_device ---- -
-

サポートされているモバイル端末用 Boot to Gecko のビルドが完了したら、インストールしてください。この記事では、インストールの全過程を解説します。

-
- -
注記: 初めてスマートフォンに書き込む場合は、Android 4 (Ice Cream Sandwich) が絶対にインストールされていなければなりません。そうしないと、このプロセスは正しく動作しません。既に B2G の初回インストールを行っているのであれば、それを単純に更新するだけです。
- -
補足: リファレンス端末 (例: Flame) については、スクラッチからイメージ全体をビルドするのをスキップできます。詳細はこちらのガイドを見てください。
- -

ADBをインストールする

- -

OSX では

- -

OSX に homebrew がインストール済みであれば:

- -
brew install android-platform-tools
- -

なければ、Android Developer Tools をダウンロードし、バイナリを PATH に追加してください。

- -

Ubuntu では

- -
sudo apt-get install android-tools-adb
- -

スマートフォンにフラッシュする

- -

スマートフォンにすべてを書き込むときは、単にスマートフォンを接続し、次のコマンドを入力してください:

- -
./flash.sh
-
- -

たったこれだけです。これで、B2G の現時点のビルドが端末にフラッシュされます。

- -

ただし、Gaia の大幅に変更されたリビジョンをまたいで更新する場合、次のコマンドも必要になるでしょう:

- -
cd gaia
-make reset-gaia
- -

これは、Gaia に保存された全データを消去しますが、廃止された Gaia の設定や prefs も消去するので、"クリーンな" Gaia を起動できるようになります。理論的には、./flash.sh で既に行われていますが、いくつかの端末 (例えば hamachi) では、./flash.sh ではモジュールのサブセットだけがフラッシュされます (./flash.sh -f では強制的にすべてをフラッシュします)。

- -

端末用 udev ルールを構成する

- -

Linux で以下が表示された場合、

- -
< waiting for device >
- -

これは、adb 用の udev ルールとは異なる、fastboot 端末用の udev ルールが追加されていない可能性が高いことを意味しています (./flash.sh を sudo つきで実行する必要があるだけかもしれません)。ここで lsusb を実行すると USB ベンダ ID を確認できます。例えば Google の USB ベンダー ID: 18d1 の場合は、/etc/udev/rules.d/51-android.rules に、以下の行を追加するとよいでしょう:

- -
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
- -
補足: Linux でとても有用な libusb エラー "-3" が発生した場合、USB 端末にアクセスするために root 権限が必要であることを意味します。sudo を使用して、もう一度スクリプトを実行してください。
- -
補足 2 Unagi または Geeksphone の Keon 端末をご使用の場合、次のような 2 行が必要です。1 行目は元のスマートフォンのベンダー ID、2 行目は Google のベンダー ID です。
- -

Hamachi および Helix、Leo 端末に関する特記事項

- -

スマートフォンが hamachi または helix、leo 端末の場合、./flash.sh スクリプトはデフォルトで gecko と gaia のみをフラッシュします。 OEM をベースビルドとしてフラッシュし、ファームウェアと gonk 階を取得した上で gecko と gaia をフラッシュすることが推奨されます。イメージファイルを使ってフラッシュしたい場合は、./flash.sh -f で上書きフラッシュしてください。これは、端末へのフラッシュにイメージファイルを使用します。

- -

Samsung Galaxy S2 に関する特記事項

- -

あなたのスマートフォンが Galaxy S2 で heimdall 1.3.2 (最新バージョン。heimdall version で確認してください) を使用している場合、"FACTORYFS upload failed!" という警告エラーに続けて "Heimdall flashing failed" というエラーといくつかの追加情報が表示されるかもしれません。これは、実際には成功しているので、警告を無視して構いません。

- -

この奇妙な振る舞いを止めさせるには、Heimdall の ソースのコピー を入手し、1.3.1 リリースへダウングレード ("git checkout fbbed42c1e5719cc7a4dceeba098981f19f37c06") してください。次に、README に従ってコンパイルしてインストールすればエラーが出力されなくなります。しかし、これは必ずしも必要な手順ではありません。

- -
-

注記: イメージサイズが問題でないかもしれません。次のヒントを見てください。

-
- -

Heimdall のすべてのバージョンで、100MB 以上の system.img をフラッシュできません。次のコマンドを実行してください:

- -
ls -l ./out/target/product/galaxys2/system.img
-
- -

イメージファイルのサイズが大きいことが確認できます。あまりにも大きい場合は、IRC で質問してください。これには、2 つの段階で対処する方法があります。

- -

heimdall コマンドの引数が動作せず、その結果フラッシュに失敗するかもしれません。./flash.sh スクリプトを変更する必要があるでしょう。引数は大文字でないといけません (l.185):

- -
case $project in
-        "system")
-                $HEIMDALL flash --FACTORYFS out/target/product/$DEVICE/$project.img
-                ;;
-
-        "kernel")
-                $HEIMDALL flash --KERNEL device/samsung/$DEVICE/kernel
-                ;;
-
-        "")
-                $HEIMDALL flash --FACTORYFS out/target/product/$DEVICE/system.img --KERNEL device/samsung/$DEVICE/kernel &&
-                update_time
-                ;;
-        esac
- -

Samsung Galaxy S2 用の追加手順

- -

Galaxy S2 をフラッシュする場合、次の追加手順に従ってください。flash.sh スクリプトで Gaia が自動的にフラッシュされないため、次のコマンドも実行する必要があります:

- -
./flash.sh gaia
-
- -

スマートフォンを fastboot するため特定パーティションをフラッシュする

- -

特定のパーティションを fastboot スマートフォン (Samsung Galaxy S2 以外の端末) にフラッシュしてください。例えば:

- -
./flash.sh system
-./flash.sh boot
-./flash.sh user
-
- -

警告: user をフラッシュすると、少なくともユーザ固有のデータ (連絡先など) が削除されます。

- -

特定のモジュールを更新する

- -

フラッシュ時にコンポーネントの名前を指定すると、B2G の特定のコンポーネントを更新できます。例えば:

- -
./flash.sh gaia
-./flash.sh gecko
-
- -

1 個のアプリケーションのみを更新するには、BUILD_APP_NAME 環境変数を使用してください:

- -
BUILD_APP_NAME=calendar ./flash.sh gaia
- -

ご使用のスマートフォンが開発者向けでない場合 (アプリのテストや最適化に興味がない場合など)、次のようにして gaia を更新できます:

- -
VARIANT=user ./flash.sh gaia
- -

次のステップへ

- -

この時点で、あなたのスマートフォンは Boot to Gecko が動作しているはずです! いよいよ実験や、コード書きテストデバッグ の時がやってきました!

- -
注記 : 有用な使い方のヒント: ビルドした B2G がロック画面で起動し、スマートフォンを解除をするパスコードが要求された場合、パスコードのデフォルトコードは 0000 です。
- -

トラブルシューティング

- -

ここには、B2G をインストールした直後、または新バージョンに更新した直後に端末が正しく動作しなかった場合の対処法について、いくつかのヒントがあります。

- -

UI が起動しない場合

- -

スマートフォンを更新してユーザインターフェイスが起動しない場合は、リセットして古い設定などのデータを消去してください。これで再び動作するようになりますが、ユーザ固有のデータ (連絡先など) が削除されるので注意してください。次のコマンドを実行してください:

- -
cd gaia
-make reset-gaia
-
- -

開発者モードから製品モードに切り替えたい場合

- -
cd gaia
-make reset-gaia PRODUCTION=1
- -

警告: reset-gaia は、ユーザ固有のデータ (連絡先など) を削除します。

- -

./flash.sh 実行時の "image is too large" エラーメッセージ

- -

これは、フラッシュする前にスマートフォンをルート化する必要があることを意味します。B2G は root パーティションに書き込まれる必要があるため、インストールするにはスマートフォンがルート化されている必要があります。

diff --git a/files/ja/archive/b2g_os/introduction/index.html b/files/ja/archive/b2g_os/introduction/index.html deleted file mode 100644 index ee7f4d663b..0000000000 --- a/files/ja/archive/b2g_os/introduction/index.html +++ /dev/null @@ -1,86 +0,0 @@ ---- -title: Firefox OS 概論 -slug: Archive/B2G_OS/Introduction -tags: - - B2G - - Firefox OS -translation_of: Archive/B2G_OS/Introduction ---- -

Firefox OS(「Boot to Gecko」もしくは「B2G」というコードネームでも呼ばれる)は Linux と Mozilla の Gecko テクノロジをベースにした Mozilla のオープンソースモバイルオペレーティングシステムです。Firefox OS は、いまだ強力なプラットフォームがアプリケーション開発者に優れた製品を作成する機会を提供している状況において、プロプライエタリ技術が使われていないモバイルオペレーティングシステムです。また、柔軟で、エンドユーザを満足させるのに十分な能力があります。

-

Web 開発者にとって、一番理解すべき重要なことは、全てのユーザインタフェースは Web アプリであるということです。何が表示可能なのかということも、他の Web アプリを起動するといったこともです。ユーザインタフェースに対するどのような修正も、どんなアプリケーションを作るのであっても、モバイルデバイスのハードウェアやサービスへのアクセスを改良するようなものであったとしても、Firefox OS で動作するのは Web ページです。

-

Firefox OS のビルドやインストール方法については、こちらの便利なガイドで学ぶことができます

-

ハードウェア要件

-

最新の ARM ベースのモバイルデバイスへの Firefox OS の移植は可能なはずです。このセクションでは基本的なハードウェア要件、及び、推奨されるハードウェアの機能について扱います。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
コンポーネント最小推奨
CPUARMv6Cortex A5 以上
- ARMv7 NEON
GPUAdreno 200 以上
接続WiFi
- 3G
センサ加速度計
- 近接センサ
- 環境光センサ
- A-GPS
-

また、統一されたカラープロファイル(グラフィックデバイスドライバによる実装)、及び、ミュート/ミュート解除、停止/再生のヘッドフォンサポートを、デバイスで提供することを推奨します。どれも最近のスマートフォンでは一般的な機能です。

-

使用法のヒント

-

このセクションでは、実際に Firefox OS を使用する際のヒントをいくつか提供します。これは我々が本当の使用法のドキュメントを作成するまでのプレースホルダみたいなものです。

-

スマートフォンのロック解除

-

ビルドされた Firefox OS の起動時にデバイスのロックを解除するパスコードを確認されますが、デフォルトコードは 0000 です。ロックスクリーンの開発とテストを行っている間は、一部のビルドはこのような振る舞いをします。

-

スクリーンショットのキャプチャ

-

スクリーンショットのキャプチャはとても簡単で、電源と home ボタンを同時に押すだけです。スクリーンショットの画像は、デバイス上の /sdcard/screenshots の中にあります。

-

もし、なんらかの理由で動作しないときは、Firefox OS ビルドシステムをインストールした Linux や Mac OS X コンピュータ上のターミナルから行うことも可能です。

-
    -
  1. ffmpeg を必ずインストールしてください。 -
      -
    1. Mac では、MacPorts を使うときは sudo port install ffmpeg を実行してください。homebrew を使うときは、brew install ffmpeg です。
    2. -
    3. Linux (Ubuntu/Debian) では、sudo apt-get install ffmpeg を実行してください。
    4. -
    -
  2. -
  3. スマートフォンとコンピュータは USB ケーブルを使用して接続します。
  4. -
  5. スマートフォンを、スクリーンショットを撮りたい状況にします。
  6. -
  7. cd して B2G/gaia ディレクトリに移動します。
  8. -
  9. make screenshot
  10. -
  11. screenshot.png という名前で、スクリーンショットが撮れているはずです。
  12. -
-

ボタンとコントロール

-

標準的な Firefox OS デバイスには少数の物理的なハードウェアボタンがあります。

-
-
- Home ボタン
-
- このボタンは通常スクリーン下の中央にあります。これを押すことでアプリランチャに戻ります。長押しすると表示を切り替えるカードが開き、その画面で表示されているアプリをスワイプすると終了します。
-
- ボリュームコントロールロッカー
-
- 左側面に沿ってボリュームロッカーがあります。ロッカーの上半分を押すとオーディオのボリュームが上がり、下半分を押すとボリュームが下がります。
-
- 電源ボタン
-
- 電源ボタンはデバイスの右上です。
-
diff --git a/files/ja/archive/b2g_os/introduction_to_gaia/index.html b/files/ja/archive/b2g_os/introduction_to_gaia/index.html deleted file mode 100644 index 8aca9f9c75..0000000000 --- a/files/ja/archive/b2g_os/introduction_to_gaia/index.html +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: Gaia 概論 -slug: Archive/B2G_OS/Introduction_to_Gaia -tags: - - B2G - - Gaia - - NeedsContent - - Out of Date -translation_of: Archive/B2G_OS/Platform/Gaia/Introduction_to_Gaia ---- -
-

Gaia は Boot to Gecko( B2G )のユーザインタフェースです。シンプルな Web アプリケーションで、B2G デバイス、エミュレータ、デスクトップビルド、Firefox ビルドのローカルで実行されます。アプリを追加したり、Gaia に変更を行う場合に知っておく必要があるのは、JavaScriptHTMLCSS のような Web テクノロジです。

-
- -

Gaia ロック画面

- -

ロック画面はネットワークキャリアや、現在の時刻と日付、やユーザが電話のロック解除や直接カメラ撮影を起動するスライドバーを表示しています。ユーザがパスコードロックをセットしている場合、ロック画面はパスコード入力インターフェイスも表示します。

- -

- -

いくつかの端末で、デフォルトでロック画面が有効で、その場合端末を解除するデフォルト PIN は "0000" です。時間とともに、この機能は具体化されていくことでしょう。

- -

デフォルト Gaia インターフェイス

- -

Gaia のデフォルトインターフェイスは、ここで見られるとおり、代表的なスマートフォンで見られるものと似ています。

- -

Gaia Home この画像は、もちろん、オペレーティングシステムとプレースホルダアイコン(といくつかのテストアプリケーション)のプレリリースバージョンです。一番上のステータスバーは操作しているスマートフォンのネットワーク(ネットワークのないデバイスに対しては"No SIM card")、ネットワークの強さ、WiFi シグナルの強さ、バッテリレベル、現在の時刻を表示します。

- -

画面の中央部分にはアプリケーションのアイコンを表示します。左と右にスワイプするとアイコン画面が出てきます。Gaia付属のデフォルトアプリについては Gaia アプリ ページで詳細を見る事ができます。

- -

画面の一番下は、一番よく使う 最大7 つのアプリケーションのドックです。中央部分からドックへアプリをドラッグ&ドロップできます。

- -

参考情報

- - diff --git a/files/ja/archive/b2g_os/pandaboard/index.html b/files/ja/archive/b2g_os/pandaboard/index.html deleted file mode 100644 index cd3e1b5caf..0000000000 --- a/files/ja/archive/b2g_os/pandaboard/index.html +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Pandaboard -slug: Archive/B2G_OS/Pandaboard -tags: - - B2G - - Boot2Gecko - - Firefox OS - - Pandaboard -translation_of: Archive/B2G_OS/Pandaboard ---- -

これは Firefox OS を PandaBoard に構築するためのガイドです。PandaBoard はモバイルオペレーティングシステム開発用の低コストの OMAP 4 をベースにした開発用基板です。

-

以下の解説では、4 GB 以上の SD カードがあることを想定しています。

-

SD カードのフォーマット

-

SD カードのフォーマットは、こちらのガイドに従って行います。

-

USB 通信

-

PandaBoard で USB 通信を有効にするには、以下のステップに従って行います。B2G に対しては、安全に使用するために、ファイルモードを "0666" に設定します。

-

PandaBoard にアクセス可能かどうかを確認するには、USB を使用してコンピュータに接続し、以下を実行してください :

-
lsusb
-

テキサス・インスツルメンツからの何かが表示されたら、PandaBoard が認識されたということです!表示されなかった場合ですが、私は全ての配線を外して PandaBoard のみを USB に接続したらうまくいきました。

-

ビルドとフラッシュメモリへの書き込み

-

PandaBoard 用に構成後に、Negatus をプルします。これはデバイス上で実行することで、自動化やデバッグの支援を行うエージェントです。Negatus は./build.shの実行後に自動的にビルドされますが、libnspr(apt-get install libnspr4-dev)をインストールする必要があります。イメージをビルドしたら、いよいよ、PandaBoard のフラッシュメモリに書き込む、肝心な部分になります。

-

このページの README の説明に従って、「Initial setup, part 3」までを実行してください。「Initial setup, part 1」はビルドする際に終了しているので、スキップ可能です。「Initial setup, part 3」が完了したら、ここに戻ります。

-

さてこれで、./flash.sh コマンドを実行できるようになりましたので、多分、全てがうまくいくことでしょう。flash.sh スクリプトがユーザデータパーティションを削除しようとした場合は、その行を削除してください。同じく README に既知の問題として記載されています。

-

既知の問題に対する回避方法は以下の通りです :

-

USB ブートを使用した際の "waiting for OMAP4XXX..."

-

もし、このメッセージが表示されたら、全てのケーブルを PandaBoard から外してください。PandaBoard に接続するのは USB のみです。電源は接続しません。この状態で、sudousbboot を実行してください。

-

フラッシュメモリに書き込み中の Fastboot エラー

-

Fastboot 中のコマンドの実行に問題が出た場合、私は sudo(例 : sudo <fastboot コマンド...> )でコマンドを実行することでうまくいきました。

-

PandaBoard を Fastboot モードにする際に問題が発生した場合(例 : fastboot devices をコールしてもデバイスが表示されない )も、こんな感じにできます :

-
    -
  1. PandaBoard から全てのケーブルを外す
  2. -
  3. GPIO ボタンを押す
  4. -
  5. ボタンを押しながら、電源を接続する
  6. -
  7. ソリッドステータスライトをよく見て、ライトが点滅し始めたらすぐに、GPIO ボタンから指を放す
  8. -
-

これで PandaBoard は Fastboot モード になります。

-

adb に接続できない場合

-

lsusb でデバイスを参照した時に、adb/fastboot デバイスに何もなく、ライトがオフになっていたら、電源を外して接続し直してください。ライトがオンになったら、adb に登録される間、少し(最大 30 秒)待つ必要があります。

-

時々、フラッシュメモリへの書き込みが成功したと表示されても、失敗していることがあります。PandaBoard のフラッシュメモリに再書き込み(例 : ./flash.sh を実行) して、もう一度試してみてください。最初に電源を接続し、次に USB ケーブルを接続することをお勧めします。

-

もし root になっているにも関わらず、adb デバイスで "??????????? no permision" が発生したら、Android open source project サイトの「Configuring USB Access」セクションを確認して、udev ルールを修正するか、正しい udev ルールを追加してください。変更後は udev サービスを再起動することを忘れないでください。

diff --git a/files/ja/archive/b2g_os/performance/index.html b/files/ja/archive/b2g_os/performance/index.html deleted file mode 100644 index ee8d9adb45..0000000000 --- a/files/ja/archive/b2g_os/performance/index.html +++ /dev/null @@ -1,226 +0,0 @@ ---- -title: パフォーマンスの基本 -slug: Archive/B2G_OS/Performance -tags: - - B2G - - Firefox OS - - Guide - - Performance -translation_of: Web/Performance/Fundamentals ---- -
-

パフォーマンスは効率とも言い換えられます。このドキュメントは、パフォーマンスとは何か、ブラウザープラットフォームがその改善にどう役立つか、そのテストと改善にどのようなツールやプロセスが使えるかを、Open Web Apps の文脈で一般的な視点から解説します。

-
- -

パフォーマンスとは何か?

- -

究極的には、ユーザーによって知覚されるパフォーマンスが唯一重要なパフォーマンスです。ユーザーは、タッチ、動作、音声を通じてシステムに入力を与え、その引き替えに視覚、触覚、聴覚を通じて出力を感知します。パフォーマンスとは、ユーザーの入力に応えるシステム出力の質と言えます。

- -

他の条件がすべて同じであると仮定すれば、ユーザーによって知覚されるパフォーマンス (以降 UPP と言います) を除く一部の対象に対して最適化されたコードは、UPP に対して最適化されたコードとの競争に敗れます。ユーザーは、例えば、毎秒 100,000,000 件を処理するものの動作がギクシャクとした応答性の低いアプリより、毎秒 1,000 件のデータベーストランザクション処理しか行わなくても応答性の高いスムーズなアプリを好みます。もちろん、これは決して他の指標への最適化が無意味と言うことではありませんが、現実的な UPP 対象が優先されるのです。

- -

次のいくつかの小項目では、最も重要なパフォーマンス指標について取り上げ解説します。

- -

応答性

- -

応答性とは単に、ユーザーの入力に対してシステムがどれだけ速く出力 (複数になることもあります) を返すかということです。例えばユーザーは、スクリーンをタップしたときに、何らかの方法でピクセルに変化が起きると考えます。このインタラクションでは、応答性の指標はタップからピクセル変化までの所要時間が応答性の指標となります。

- -

応答性は時に、フィードバックで複数の段階を必要とします。アプリケーションの起動は特に重要なケースのひとつであり、これについては後ほど詳しく説明します。

- -

ユーザーは無視されたときに不満を募らせ腹を立てるという単純な理由から、応答性は重要です。ある入力に対して応答するまでの間、アプリは刻々とユーザーを無視していることになるのです。

- -

フレームレート

- -

フレームレートとは、システムがユーザーに表示するピクセルを変更する速度です。これはよく知られている概念です。例えば毎秒 60 フレームを表示するゲームは、理由を説明できなくても毎秒 10 フレームを表示するゲームよりも人々に好まれます。

- -

フレームレートは「サービス品質」の指標として重要です。コンピューターのディスプレイは現実をまねた光を届けることにより、ユーザーの「おろかな」目向けに設計されています。例えば、印刷された文字で覆われた紙はいくつかのパターンでユーザーの目に光子を反射します。ピクセルを操作することで、リーダーアプリは同様のパターンで光子を発してユーザーの目を「だまして」います。

- -

あなたの頭脳が推測するように、動作はギクシャク動いたり不連続であったりするのではなく、むしろスムーズかつ連続的に「更新」します。(ストロボはこれをひっくり返して、不連続な現実の錯覚を作り出すように脳への入力を減らすため、楽しいものです。) コンピューターのディスプレイ上では、単純により高いフレームレートの方が現実をより忠実に再現できます。

- -
-

: 人間は通常 60Hz より高いフレームレートの違いを知覚できません。これが、現代のほとんどのディスプレイが 60Hz でリフレッシュするよう設計されている理由です。例えばハチドリには、テレビがおそらくぎくしゃくして非現実的なものに見えるでしょう。

-
- -

メモリー使用量

- -

メモリー使用量もまた重要な指標です。応答性やフレームレートとは異なり、ユーザーはメモリー使用量を直接は知覚できませんが、メモリー使用量は「ユーザー状態」と密接しています。理想的なシステムは、常に 100% のユーザー状態を維持するでしょう: システム内の全アプリケーションが同時に動作し、また全アプリケーションが、ユーザーが直前にアプリケーションと行った対話によってもたらされた状態を維持します (アプリケーションの状態はコンピューターのメモリーに保存されることが、密接している理由です。)

- -

これは重要かつ直感に反した帰結を見ることとなります。よく設計されたシステムは、空きメモリーの量を最大化するようには最適化していないはずです。メモリーはリソースであり、また空きメモリーは使用していないリソースです。むしろよく設計されたシステムは、ユーザー状態を維持するために可能な限り多くのメモリーを使用するように最適化して、同時に他の UPP の目的を達成します。

- -

それはシステムがメモリーを無駄使いして良いということではありません。システムが特定のユーザー状態を維持するのに必要なメモリーより多くのメモリーを使用することは、他のユーザー状態を保持するために使用できたりソースの無駄使いです。実際は、すべてのユーザー状態を維持できるシステムはありません。ユーザー状態のために賢くメモリーを割り当てることは、後ほど詳しく説明する通り重要事項です。

- -

電気使用量

- -

最後に挙げる指標は電気使用量です。メモリー使用量と同様に、端末がどれだけ長く他のすべての UPP の目的を維持できるかということから、ユーザーは間接的にのみ電気使用量を認識します。UPP の目的を達成するため、システムは必要最小限の電力量だけを消費しなければなりません。

- -

本ドキュメントでは、これらの指標でのパフォーマンスについて説明します。

- -

プラットフォームパフォーマンスの最適化

- -

本章では、Firefox OS と Gecko が全アプリケーションの水準より下で、パフォーマンスに対し通常どのように寄与しているかをおおまかに説明します。開発者あるいはユーザーの視点から「プラットフォームは何を行うか」という質問に答えます。

- -

Web 技術

- -

Web プラットフォームには多くのツールがあり、他より特定のジョブに対してより適しているものもあります。アプリケーションのロジックは JavaScript で記述します。グラフィックを表示する場合、開発者は HTML/CSS (高レベルな記述言語) か、<canvas> 要素が提供する低レベルな命令インターフェイス (WebGL を含む) を使用できます。HTML/CSS と Canvas の「中間」には SVG があり、これは両方のメリットを提供します。

- -

HTML/CSS は、時にレンダリング時のピクセルレベルの制御や秒間数フレームを犠牲にしつつ、生産性を飛躍的に高めます。テキストや画像は自動的にリフローされ、UI 要素には自動的にシステムテーマが提供され、また異なる解像度や RTL 言語など、開発者が当初考慮しないかもしれない一部のユースケースについてシステムは「組み込みの」対応を提供します。

- -

canvas 要素は、描画のためのピクセルバッファを開発者に直接与えます。これによって開発者は、レンダリングのピクセルレベルでの制御やフレームレートの正確な制御が可能となりますが、一方で様々な解像度や画面の向き、RTL 言語などに対応する必要があります。開発者は Canvas への描画に、よく知られた 2 次元描画 API か、OpenGL ES 2.0 にほぼ従う「ハードウェアに近い」バインディングである WebGL を使用できます。

- -
-

: Firefox OS は、HTMLCSSJavaScript といった Web 技術によって作られたアプリケーションに最適化されています。わずかな基本システムサービスを除き、Firefox OS で実行されるすべてのコードは Web アプリであり、Gecko エンジン上で動作します。OS のウィンドウマネージャーでさえ、HTML/CSS/JavaScript で記述されています。コアオペレーティングシステムがアプリケーションと同じ Web 技術で構築されているため、それら Web 技術のパフォーマンスは重要です。「逃げ道」はありません。これにより、サードパーティアプリも OS 独自の最適化によるあらゆる恩恵を受けられることから、開発者に大きなメリットをもたらします。プリインストールのコードのみ使える「魔法のようなパフォーマンス源」はありません。Firefox OS のパフォーマンスに関する詳細は Firefox OS パフォーマンステスト を参照してください。

-
- -

Gecko のレンダリング

- -

Gecko の JavaScript エンジンは、ジャストインタイム (JIT) コンパイルに対応しています。これはアプリケーションのロジックを、Java VM など他の仮想マシンに匹敵するほど高速に実行し、また「ネイティブコード」に迫る場合もあります。

- -

HTML、CSS、Canvas を支えている Gecko のグラフィックスパイプラインはいくつかの方法で最適化されています。Gecko 内の HTML/CSS のレイアウトやグラフィックスのコードは、スクロールなど一般的なケースでの無効化や再描画の回数を減らします。開発者はこの支援を「無償で」受けられます。Gecko が「自動的に」、またアプリケーションが canvas へ「手動で」書き込むピクセルバッファは、ディスプレイフレームバッファへ書き込まれる際にコピー量が最小化されます。これはオーバーヘッドを生み出す中間のサーフェイス (多くのオペレーティングシステムにおける、アプリケーションごとの「バックバッファ」など) を避けたり、コンポジションハードウェアが直接アクセスできるグラフィックスバッファ用の特別なメモリーを使用したりすることで実現します。複雑なシーンは最大限のパフォーマンスを得るため、端末の GPU を使用して描画されます。消費電力を低減するため、シンプルなシーンは特別な専用のコンポジションハードウェアで描画し、GPU はアイドル状態または無効化します。

- -

完全に静的なコンテンツは、リッチアプリケーションよりもむしろ例外的です。リッチアプリケーションは animationtransition 効果とともに動的なコンテンツを使用します。トランジションやアニメーションは、アプリケーションにとって特に重要です。開発者は CSS を使うことで、シンプルで高レベルな構文を使用して複雑な挙動を宣言できます。一方、Gecko のグラフィックスパイプラインは、一般的なアニメーションを効率的に描画するよう、高度に最適化されています。一般的なアニメーションはシステムのコンポジション機能に「押しつけられ」、ハイパフォーマンスかつ低消費電力で描画できます。

- -

アプリケーションの実行パフォーマンスも重要ですが、起動時のパフォーマンスも同様に重要です。Gecko は、多種多様なコンテンツ、つまり Web 全体を効率的に読み込むよう最適化されています。HTML パースの並列処理、リフローや画像デコードの賢いスケジューリング、優れたレイアウトアルゴリズムなど、こうしたコンテンツに対して行われた長年にわたる改良が、Firefox 上で実行される Web アプリケーションのパフォーマンス改善にも適用されます。

- -
-

: 起動時のパフォーマンスをさらに改善するには、Firefox OS 固有の詳しい情報を Firefox OS パフォーマンステスト で参照してください。

-
- -

アプリケーションのパフォーマンス

- -

本章は、「自分のアプリを高速にするために何ができるか」という疑問を持つ開発者に向けたものです。

- -

起動時のパフォーマンス

- -

アプリケーションの起動は一般的に、ユーザーが知覚する 3 つのイベントに分けられると言われます。

- - - -

高速起動の秘訣は、以下 2 点を覚えておくことです。UPP こそが重要であることと、上記のユーザーが知覚するイベントそれぞれに至る「クリティカルパス」があることです。クリティカルパスはイベントが発生するまでに実行しなければならない、完全かつ最適なコードです。

- -

例えばいくつかの HTML と HTML にスタイル付けする CSS で視覚的に構成される、アプリケーションの最初のフレームを描画するときは、次のような流れとなります。

- -
    -
  1. HTML を解析する
  2. -
  3. その HTML の DOM を構築する
  4. -
  5. DOM の一部である画像などのリソースを読み込みデコードする
  6. -
  7. CSS スタイルをその DOM に適用する
  8. -
  9. スタイル付けしたドキュメントをリフローする
  10. -
- -

この中に「一般的ではないメニューに必要な JS ファイルを読み込む」「ハイスコア一覧用の画像を読み込んでデコードする」などはありません。これらの作業項目は、最初のフレームを描画するためのクリティカルパス上にないからです。

- -

これは明らかですが、ユーザーが知覚する起動イベントへより早く達するための主な「トリック」は、「クリティカルパス上にあるコードのみ」実行することです。また、シーンをシンプルにしてクリティカルパスを短くしましょう。

- -

Web プラットフォームは高度に動的です。JavaScript は動的型付け言語であり、また Web プラットフォームではコード、HTML、CSS、画像、その他のリソースを動的に読み込むことが可能です。これらの機能は必要ではないコンテンツを起動後に "ゆっくりと" 読み込むことにより、クリティカルパスから外れる作業を遅れて行うために使用できます。

- -

起動を遅らせるもうひとつの問題はアイドル時間であり、(データベースの読み込みといった) リクエストへのレスポンスを待つことにより発生します。この問題を避けるため、アプリケーションは起動時にできるだけ早くリクエストを発行すべきです (これは「フロントローディング」と呼ばれます)。すると後でデータが必要になったとき、それはおそらくすでに読み込まれており、アプリケーションは待つ必要がないでしょう。

- -
-

: 起動時のパフォーマンス改善に関する詳しい情報は 起動パフォーマンスの最適化 を参照してください。

-
- -

また、ローカルにキャッシュされた静的リソースは、高レイテンシかつ低帯域のモバイルネットワークを通じて取得される動的なデータよりも格段に速く読み込まれます。アプリケーション起動初期のクリティカルパスにネットワークリクエストを含むべきではありません。ローカルにリソースをキャッシュすることは、アプリケーションをオフラインで使用可能にする唯一の方法でもあり、標準的な Open Web Apps では、現時点ではこのために HTML5 AppCache を使う必要があります。

- -
-

: Firefox OS では、圧縮 ZIP ファイルに「パッケージ」するか、HTML5 AppCache を通じて「ホスト」するか、いずれかの方法でアプリケーションとしてインストールすることで、アプリケーションによるリソースのキャッシュを可能にしています。特定のアプリケーションタイプ向けのこれら選択肢からどのように選択するかは本ドキュメントの範囲を超えますが、一般的にアプリケーションパッケージは最適な読み込みパフォーマンスを提供し、AppCache は比較的遅くなります。インストール可能なアプリは他の OS でもまもなく使えるようになる見込みです。

-
- -

フレームレート

- -

高フレームレートを得るためにまず考慮すべき重要なことは、適切なツールの選択です。ほぼ静的で、スクロールされ、たまにアニメーションしたりするぐらいのコンテンツには HTML と CSS を使いましょう。レンダリングで精密な制御が必要でありテーマ付けは必要ないゲームなど、高度に動的なコンテンツの実装には Canvas を使いましょう。

- -

Canvas を使用して描画するコンテンツは、目標フレームレートに達するかどうかは開発者次第です。何を描画するかは開発者が直接制御します。

- -

HTML/CSS コンテンツでは、高フレームレートを得るには適切な基本要素を使用します。Firefox は任意のコンテンツのスクロールに高度に最適化されています。これは通常、懸念することではありません。しかし CSS による放射状グラデーションの代わりに静的レンダリングを使用するなど、速さについて一般性と品質を配分することで、スクロールのフレームレートを目標に近づけられることがしばしばあります。CSS メディアクエリ は、それらが必要なデバイスにのみ制限するための折衷策になります。

- -

多くのアプリケーションは「ページ」や「パネル」の移動にトランジションやアニメーションを使用します。例えばユーザーが「設定」ボタンをタップすると、アプリケーションの設定画面に遷移したり、設定メニューが「ポップアップ」したりします。Firefox は以下のようなトランジションやアニメーションのシーンに対して高度に最適化されています。

- - - -

これらのガイドラインに従うトランジションやアニメーションはシステムのコンポジション機能にオフロードされて、最大効率で実行されます。

- -

メモリーと電力使用量

- -

メモリーや電力の消費の改善は、起動速度向上の問題と似ています。不要な作業を行わない、あまり使われない UI リソースは後から読み込む、効率のよいデータ構造を使用する、画像のようなリソースが十分を最適化する、といったことです。

- -

最近の CPU は、ほぼアイドル状態であるときに低消費電力モードに入ることができます。絶えずタイマーを発生させたり不要なアニメーションを実行し続けたりするアプリケーションは、CPU が低消費電力モードへ移行するのを妨げます。電力効率がよいアプリケーションは、そのようなことを行うべきではありません。

- -

アプリケーションがバックグラウンドに移行するとき、そのドキュメント上で visibilitychange イベントが発生します。このイベントは開発者の役に立ちます。アプリケーションは、このイベントを監視すべきです。バックグラウンドへ移行するときにできるだけ多くの読み込み済みリソースを手放すアプリケーションは、メモリー使用量が減り、Firefox OS アプリの場合には終了されにくくなります (下記注参照)。この結果、(すでに実行中であるという利点により)「起動」が速くなり UPP も向上します。

- -
-

: 先に述べたとおり、Firefox OS は可能な限り多くのアプリケーションを同時に実行し続けようとしますが、通常端末のメモリーが不足しているとき、場合によってはアプリケーションを終了しなければなりません。Firefox OS がメモリー使用量をどう管理しているか、メモリー不足が問題になったときに同アプリをどう終了するかといった情報は、Firefox OS でのメモリー不足エラーのデバッグ を参照してください。

-
- -

アプリケーションパフォーマンス改善のための具体的なコーディングのヒント

- -

以下の実用的なヒントは、上記で解説したアプリケーションパフォーマンスのひとつもしくはそれ以上を改善するのに役立つでしょう。

- -

CSS アニメーションとトランジションを使う

- -

一部のライブラリが提供する animate() 関数は、まだ様々なパフォーマンスの悪い技術 (例えば window.setTimeout()top/left 位置指定) を使っている可能性がありますので、代わりに CSS アニメーション を使いましょう。たいていの場合、実際には CSS トランジション を使えば、やりたいことを実現できます。ブラウザーはそうした効果を最適化し、GPU を使用してプロセッサのパフォーマンスへの影響を最小限に抑えつつスムーズに処理するように設計されていますので、問題なく動作するはずです。もうひとつのメリットは、標準的な構文を使って、アプリの他の視覚要素とともにそれらの効果を CSS で定義できるという点です。

- -

CSS アニメーションでは、キーフレーム を使って、非常に細かく効果を調整することが可能です。アニメーションの表示中に実行されたイベントを監視し、そのプロセスの設定点で実行すべき他のタスクを処理することさえ可能です。:hover:focus:target といった疑似クラスを使用して、あるいは親要素へ動的にクラスを追加、削除することで、そうしたアニメーションを簡単に実行することができます。

- -

JavaScript でアニメーションを動的に生成あるいは変更したい場合は、James Long が作成した CSS-animations.js というシンプルなライブラリを使うこともできます。

- -

CSS トランスフォームを使う

- -

要素の位置や比率などを調整したいときは、絶対配置を変更し、その数値を自分自身で計算する代わりに、transform CSS プロパティを使いましょう。その理由は、先ほどと同じくハードウェアアクセラレーションです。ブラウザーはそうしたタスクを GPU 上で処理し、他のことを CPU に処理させることが可能です。

- -

さらにトランスフォームは、他の方法ではおそらく実現できない機能を提供します。要素を 2 次元空間内で移動させるだけでなく、3 次元空間内の移動や、ゆがみ、回転といった処理を行えるのです。Paul Irish が、パフォーマンスの観点から translate() のメリットに関する綿密な分析を行っています。ただ一般的には、CSS アニメーションを使っても同じメリットを得られます。実現したい効果のために適切なツールを使用し、最適化はブラウザーに任せましょう。また、要素の位置を変更するには、簡単に拡張可能な方法を使用できます。topleft の座標変更でそうした移動をエミュレートするとなると、コードを大量に追加しなければならないでしょう。もうひとつのメリットは canvas 内でも使えるという点です。

- -
-

注: 今のところ、一部の環境では、ハードウェアアクセラレーションを活用するには translateZ(0.1) を使用する必要があります。先に述べた通り、これによってパフォーマンスを改善できますが、メモリー消費量を増大させるといった問題を引き起こす可能性もあります。この点でどう対処すべきかは開発者次第です。多少のテストを行い、あなたの具体的なアプリに最適な方法を見つけてください。

-
- -

setInterval() の代わりに requestAnimationFrame() を使う

- -

window.setInterval() の呼び出しは、現状では実行可能かどうか定かではない推定フレームレートでコードを実行します。また、ブラウザーが実際には描画していない、つまりビデオハードウェアが次の表示サイクルに達していないときにも結果を描画させようとします。これはプロセッサ時間の無駄遣いであり、ユーザーの端末のバッテリー寿命を縮める結果にもなります。

- -

代わりに window.requestAnimationFrame() を使ってみましょう。これは、ブラウザーが実際にアニメーションの次のフレームのビルドを開始する準備が整うまで待機し、ハードウェアが実際には何も描画しようとしていない場合は実行されません。この API が持つもうひとつのメリットは、アプリが画面上に表示されていないとき (バックグラウンドのタブにあって他のタスクが実行されている場合など) はアニメーションが実行されないということです。これはバッテリー消費を抑え、ユーザーの間で悪評が立つのを防ぐことにもなります。

- -

イベントを即時に実行する

- -

保守的な、アクセシビリティに配慮した Web 開発者として、私たちはキーボード入力にも対応しているクリックイベントを気に入っています。モバイル端末上では、それらは非常に遅くなります。代わりに touchstarttouchend を使うべきです。その理由は、アプリの動作が緩慢であると感じさせるような遅延が発生しないということです。タッチ対応を始めにテストする場合、アクセシビリティも犠牲にしてはいけません。例えば、Financial Times はそのために、一般公開もされている fastclick というライブラリを使用しています。

- -

インターフェイスをシンプルに保つ

- -

HTML5 アプリに見られる大きなパフォーマンス問題のひとつに、多くの DOM 要素を移動させることで、特にグラデーションやドロップシャドウを多用している場合、あらゆる動作が緩慢になるということが挙げられます。デザインをシンプルにし、ドラッグ&ドロップ処理を行う場合は仮の要素を移動させることで、そうした問題を大幅に改善することが可能です。

- -

例えば、アプリ内に要素の長大なリスト (ツイート一覧など) がある場合、それらをすべて移動させようとしてはいけません。その代わりに、表示されているツイートと、その前後にある多少のツイートだけを DOM ツリー内に保持することも可能でしょう。残りは隠すか削除しましょう。DOM へアクセスする代わりに JavaScript オブジェクト内にデータを保持することで、アプリのパフォーマンスを大幅に向上させることができます。表示を、データそのものではなく、データの表現として考えましょう。これは本来の HTML をソースとして使えないということではありません。ユーザーがツイートを読んで 10 要素分スクロールしたら、表示されていない 100 要素を移動する代わりに、結果リスト内の位置によって最初と最後のコンテンツを変更するのです。同じテクニックはスプライト処理を行うゲームにも当てはまります。要素が画面上にない場合は、それらにポーリングを行う必要はありません。代わりに、画面外に出た要素を画面内に入る要素として再利用すれば良いのです。

- -

一般的なアプリケーションパフォーマンス解析

- -

Firefox、Chrome、その他のブラウザーには、遅いページレンダリングの原因を突き止めるのに役立つ組み込みのツールが含まれています。特に、Firefox のネットワークモニター は、ページ上のネットワークリクエストがいつ発生したか、どのぐらいの大きさで、どのぐらい時間が掛かったかという正確なタイムラインを表示できます。

- -

GET リクエスト、複数ファイル、各リソースの読み込みに掛かった個別の時間をグラフ上に表示している Firefox のネットワークモニター

- -

実行に時間の掛かる JavaScript コードがページに含まれている場合、JavaScript プロファイラ で最も遅いコードの行数を特定できます。

- -

完了したプロファイル 1 を表示している Firefox JavaScript プロファイラ

- -

組み込み Gecko プロファイラ は、プロファイラの実行中にブラウザーコードのどの部分が遅いかについてさらに詳しい情報を提供する大変便利なツールです。これは使い方が多少複雑ですが、多くの有益な詳細情報を提供してくれます。

- -

多数のネットワーク情報を表示している組み込み Gecko プロファイラウィンドウ

- -
-

: これらのツールは Android ブラウザーでも使用できます。Firefox を起動し リモートデバッグ を有効にしてください。

-
- -

YSlow (Firebug アドオンの拡張機能) は、パフォーマンス改善のため非常に有益なアドバイスを提供してくれます。特定された問題と提案された解決策の多くはモバイルブラウザーで特に有益なものです。絶対に YSlow を実行し、そのアドバイスに従うべきです。

- -

パフォーマンス改善のためのヒントを表示している YSlow ウィンドウ。1 番目は HTTP リクエストを減らしましょうというもの。

- -

特に、ネットワークリクエストを多数実行すること、モバイルブラウザーでは時間が掛かります。巨大な画像のレンダリングや CSS グラデーションも時間が掛かるでしょう。モバイルハードウェアは時として利用可能な帯域をすべて活用するには遅すぎるため、巨大なファイルのダウンロードは高速なネットワーク上でさえ時間が掛かります。モバイル Web パフォーマンスに関する有益で一般的なヒントは、Maximiliano Firtman の モバイル Web ハイパフォーマンス プレゼンテーションにあります。

- -

テストケースの作成とバグの報告

- -

Firefox と Chrome の開発者ツールが問題発見の役に立たない場合、あるいは Web ブラウザーが問題を引き起こしている可能性があるという情報を示している場合、問題を最大限に分離した最小限のテストケースを用意してみてください。おそらく問題の診断に役立つでしょう。

- -

HTML ページの (埋め込まれている画像、スタイルシート、スクリプトを含む) 静的なコピーを保存して読み込むことで問題を再現できるか確かめてください。その場合、その静的なファイルを編集してあらゆる個人情報を削除した上で、他の人に送って助けを求めましょう (例えば Bugzilla にバグを報告するか、サーバー上に置いて URL を共有してください)。上記のツールを使って収集したプロファイル情報があればそれも共有すべきでしょう。

diff --git a/files/ja/archive/b2g_os/phone_guide/best_practices_open_reference_devices/index.html b/files/ja/archive/b2g_os/phone_guide/best_practices_open_reference_devices/index.html deleted file mode 100644 index 73f5718c7a..0000000000 --- a/files/ja/archive/b2g_os/phone_guide/best_practices_open_reference_devices/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: open リファレンス端末用ベストプラクティス -slug: Archive/B2G_OS/Phone_guide/Best_practices_open_reference_devices -tags: - - Firefox OS - - リファレンス端末 -translation_of: Archive/B2G_OS/Phone_guide/Best_practices_open_reference_devices ---- -
-

以下の記事では、広く入手できる、いかなるopenリファレンス端末向けにも強く推奨するベストプラクティスの提供を狙います。最近の Firefox OS リファレンス端末は全てがこのプラクティスに従っていて、来るFlameもそうです。

-
-

端末は以下を備えます:

- -

Easily accessible and installable builds

-

Reference devices are largely aimed at developers and other groups with a greater degree of technical knowledge than average device consumers. But even so, we shouldn't expect users of these devices to compile their own builds if they don't wish to — for many of them this is a complete waste of time.

-

Open reference devices should have a maintained set of unlocked builds for current and future releases that are easy to access and install. This means having multiple tiers of builds available, at least:

- -

They should be made easily available on a dedicated download page, and updated regularly and often. Devices should also have OTA updates made available to them.

-

The OEMs should be responsible for providing these builds since they are the only ones who can legally distribute all the required binaries, etc.

-

It may make sense to follow a similar model to the Firefox browser, where each of the release, stable and nightly channels are based on subsequent versions of the source code.

-

Completely unlocked operating system

-

The device operating system platform should be completely unlocked, so that app and platform developers can have the necessary freedom of control available over their devices to perform any desired tests and development work. This includes:

- -

Worldwide availability

-

If you want your reference devices to be a universal standard, then it follows that you should make them available worldwide. If this is not the case, people in different locales will have to make do with different devices, which may carry different behaviours.

-

Feature support equivalent to consumer phones

-

There is no point in creating a reference device that does not have support for the same technologies and associated features as the consumer devices you will ultimately be distributing Firefox OS builds and open web apps on.

-

These include:

- -

Availability of replacement batteries

-

Replacement batteries can often be really hard to obtain for different devices, and can lead to otherwise useful devices being rendered useless. It is therefore a good idea to make replacement batteries as available as possible.

-

Easily enabled language choices

-

Since these device will be distributed worldwide, it is important to make localised builds available for as many languages as possible,  taking into account availability of resources and most popular target market locales.

-

The most likely solution to this is localised Gaia builds or language packs that can be flashed onto the device separately, and Mozilla is working on a solution to make creation and installation of these as easy as possible.

diff --git a/files/ja/archive/b2g_os/phone_guide/firefox_os_device_features/index.html b/files/ja/archive/b2g_os/phone_guide/firefox_os_device_features/index.html deleted file mode 100644 index 198931fa88..0000000000 --- a/files/ja/archive/b2g_os/phone_guide/firefox_os_device_features/index.html +++ /dev/null @@ -1,75 +0,0 @@ ---- -title: Firefox OS 端末の機能 -slug: Archive/B2G_OS/Phone_guide/Firefox_OS_device_features -tags: - - Firefox OS - - ハードウェア - - 要求 -translation_of: Archive/B2G_OS/Phone_guide/Firefox_OS_device_features ---- -

ボタンとコントロール

- -

典型的な Firefox OS 端末には次のハードウェアボタンがつきます。

- -
-
ホームボタン
-
ホームボタンは通常スクリーン下中央についています。押すとアプリランチャーへ戻ります。長押しでカードスイッチングビューが表示されます。このビューで上にスワイプすると、アプリを終了できます。
-
音量調整とロック
-
左側に音量のロックがつきます。それの上部を押すと音量が増加し、下部を押すと減少します。
-
電源ボタン
-
電源ボタンは端末の右上の角につきます。
-
- -

最小のハードウェア要件

- -

最新の ARM ベース端末であれば Firefox OS  を移植するのに充分です。 Firefox OS  を動作させられる基本的なハードウェアの最小要件と、推奨要件は以下の通りです。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
コンポーネント最小推奨
CPUARMv6Cortex A5 class or better
- ARMv7a with NEON
GPUAdreno 200 class or better
RAM128 MB512 MB
ConnectivityWiFi
- 3G
SensorsAccelerometer
- Proximity
- Ambient light
- A-GPS
- -
-

注意: 統一されたカラープロファイル (グラフィックスのデバイスドライバによって実装されます) を提供されている端末や、メディアのミュート、アンミュート、再生、停止できるヘッドフォンをサポートする端末を選択することは、良いユーザ体験を提供できるため、良いアイディアと言えます。これらはスマートフォンの多くが持っている機能です。

-
- -
-
 
-
diff --git a/files/ja/archive/b2g_os/phone_guide/flame/index.html b/files/ja/archive/b2g_os/phone_guide/flame/index.html deleted file mode 100644 index 89710e20d8..0000000000 --- a/files/ja/archive/b2g_os/phone_guide/flame/index.html +++ /dev/null @@ -1,134 +0,0 @@ ---- -title: Flame -slug: Archive/B2G_OS/Phone_guide/Flame -tags: - - B2G - - Firefox OS - - Flame - - developer phone - - reference device - - レファレンス端末 - - 開発者向け端末 -translation_of: Archive/B2G_OS/Phone_guide/Flame ---- -
-

Flame の更新情報: 定期的なソフトウェアビルドや Flame に関するその他の情報を受け取るために、次のメーリングリストに参加されることをお勧めします。https://mail.mozilla.org/listinfo/flamenews

-
- -

開発者向け端末 Flame に関するものを含め、日本語での情報交換 (Google グループ) や勉強会などのイベントについては Firefox OS コミュニティサイト をご覧ください。

- -

A picture of the Flame device, showing the Firefox OS homescreen containing several app icons.

- -

Flame 端末は公式のリファレンス端末であり、その用途は Firefox OS やオープン Web アプリの開発、テスト、デバッグを行うことです。このガイドには、この電話機で実験したり、互換性のあるソフトウェアを開発・テストしたりする実用的ドキュメント仕様の他に、そのハードウェア仕様についての基本的な情報があります。

- -

Flame には代表的なスペックのハードウェア (FWVGA のディスプレイとデュアルコアプロセッサを含む) が搭載されており、開発者が優れたコンテンツや体験を構築しやすくなっています。また、開発端末が 1 機種であることは、検証する人にとっても良いことであり、端末固有の問題であるかどうかを悩む必要がなく、ソフトウェアのテストと問題の検証が容易に行えるようになります。

- -

既に端末をお持ちで、遊んだり、アプリを開発・配布したい、あるいは Firefox プラットフォーム自体に貢献したい場合、下記のリンクも、必要な場所へ案内してくれるでしょう:

- - - -

OS の更新、復旧、アプリのインストール、端末スペックについての詳細情報が必要な方は、以下 2 つの記事をご覧ください。

- - - -

端末の購入をご検討されている方、日本国内での使い方についての情報を必要とされている方は以下をご覧ください。

- -

端末の入手方法

- -

開発者向け端末 Flame は日本国内では株式会社びぎねっとの運営する Yahoo! ショッピング OSS ストアにて 19,980円 (税込み、一部地域を除き送料無料) で販売されました (在庫切れ)。Flame は SIM フリー端末であり、ブートローダもロック解除された状態で出荷されます。開発者ご自身でビルドしたソフトウェアを導入したり世界中のキャリアの SIM カードを挿して通信できます。

- -

Yahoo! ショッピング OSS ストア - Flame (Firefox OS 開発者向けリファレンス端末)

- -

国内利用に関して

- -

Flame は TELEC や JATE などの認証も受けており、国内でも安心してご利用いただけます。ただし、初期出荷時のビルドは日本国内での利用を想定したソフトウェアや設定になっておらず、いくつかの制限事項があります。

- - - -

これらの制限は端末 (ハードウェア) の問題ではなく、ビルド設定 (ソフトウェア) によるものであり、ビルドイメージを入れ替えたり、端末内のファイルを書き換えたりすることで解消できます。日本語での開発者同士の情報交換には Firefox OS コミュニティGoogle グループ をご利用ください。

- -

日本語入力をするには

- -

日本語入力をするためには日本語 IME ソフトウェアの追加インストールが必要になります。Firefox OS 2.0 以降にアップデート後の端末であれば、Firefox OS の開発者向けにオムロンソフトウェア社から提供頂いている iWnn IME for Firefox OS 試用版をこちらで公開されているスクリプトでインストールして頂けます (git clone するか ZIP ファイルとしてダウンロードしてください)。

- -

Flame 出荷時のビルドは Firefox OS のバージョンが古く、IME とキーボードを追加インストールすることはできません (キーボードアプリの追加は Firefox OS 2.0 以降で可能になります)。必ず v180 以降のベースイメージと Firefox OS 2.0 以降の Nightly ビルドに更新した端末にインストールしてください。

- -

データ通信をするには

- -

国内の携帯ネットワークを通じてデータ通信を行う場合、データ通信に対応した SIM をご用意の上、Flame 背面のフタを開けて 3G 通信用 SIM スロット (左側の SIM スロット) に挿入し、データ通信の有効化と APN の設定を行ってください。

- -

この設定は、Settings (環境設定) アプリ - Cellular & Data (携帯ネットワーク設定) - SIM1 - Data settings (データ通信設定) で行えます。ご利用の SIM が選択肢として表示されている場合はそれを選択、表示されない場合は Custom Setting (カスタム設定) に APN, Identifier (ユーザ名), Password (パスワード) などを入力して OK をタップし、Data connection (データ通信接続) をオンにしてください。

- -

ただし、初期出荷時のビルドでは、ご利用の SIM によっては APN 情報を入力しても設定値が反映されず接続できない場合があります。そのような場合は、こちらで公開されているスクリプト (git clone するか ZIP ファイルとしてダウンロードしてください) を用いて端末内のファイルを書き換えることで APN の設定が可能になります。詳しくは、README をご参照ください。

- -

FM ラジオを聴くには

- -

Firefox OS 端末の FM ラジオで視聴できる周波数帯の設定は dom.fmradio.band という設定で調整できますが、既存の端末では国内の FM ラジオとは異なる周波数帯が設定されています。

- -

この設定は、こちらで公開されているスクリプト (git clone するか ZIP ファイルとしてダウンロードしてください) で変更可能です。詳しくは、README をご参照ください。

- -

対応ネットワークと端末仕様

- -

仕様の詳細については、端末の機能と仕様のページもご参照ください。

- -

対応ネットワーク

- - - -

SIM カードの大きさは通常サイズです。Micro SIM や Nano SIM をご利用頂く場合にはそれぞれアダプタが必要になります。

- -

基本仕様

- - - -

その他のハードウェア機能

- - - -

関連情報

- - diff --git a/files/ja/archive/b2g_os/phone_guide/flame/initial_setup/index.html b/files/ja/archive/b2g_os/phone_guide/flame/initial_setup/index.html deleted file mode 100644 index f7701a9283..0000000000 --- a/files/ja/archive/b2g_os/phone_guide/flame/initial_setup/index.html +++ /dev/null @@ -1,108 +0,0 @@ ---- -title: 初期セットアップ -slug: Archive/B2G_OS/Phone_guide/Flame/Initial_setup -tags: - - B2G - - Firefox OS - - Flame -translation_of: Archive/B2G_OS/Phone_guide/Flame/Initial_setup ---- -
-

Flameを入手して端末の更新を試す前に、使っているOSに応じて、確実に従っておくべきいくつかの手順があります。例えばFlameのFirefox OSのバージョンを更新したり、アプリを電話機にプッシュしたり(両方とも下記に載っています)する前に。この両方が続く記事に載っていますが、まず一通りこの記事に取り組むべきです。

-
- -

全てのOS

- -

コ ンピューターにADBとFastbootをインストールする必要があります — これらは、電話機とコンピューター同士を、USB充電ケーブル接続時に、相互作用を可能にするアプリケーションです。これらは新バージョンの Firefox OSを電話機に焼く時や、無反応状態から回復する時、アプリを電話機にプッシュする時、などに必要です。

- -
-

: Ubuntu上で ADB や Fastboot をインストールするには、単に sudo apt-get install android-tools-adb android-tools-fastboot をコマンドラインで使います。

-
- -
-

: Mac OS上で ADB や Fastboot をインストールするには、コマンドラインでHomebrewを使いいます。 ADBをインストールして使用する.を見て下さい。

-
- -

ADBとFastbootはAndroid Developer Toolkitで入手できます:

- -
    -
  1. このリンクに移動します。
  2. -
  3. "Download Eclipse ADT"ボタンを押します。
  4. -
  5. ライセンス条件に同意します。
  6. -
  7. 32-bitか64-bitバージョンを選択します(よく分からない時は32-bitで良い)
  8. -
  9. 最終の"Download Eclipse ADT with the Android SDK..."ボタンをクリックします。
  10. -
  11. ダウンロードが終わったら、コンピューターのデスクトップにzipファイルを展開します。
  12. -
  13. フォルダ名が多少ややこしいかもしれません、単にadtに名前変更します。
  14. -
- -

ADB はコマンドラインから実行するツールです。ターミナル/コマンドプロンプトを開いた場合、adt/sdk/platform-tools へ移動して adb コマンドを実行します。ADBで何ができるかについての大量の情報が帰ってくるのが見えるでしょう。 adb devices を実行すると List of devices attachedの行だけが返り、なぜならまだ端末を接続してないためです。

- -

しかしこの時点で、PATH 変数が ADB ツールを指すようにセットする必要があり、そうするとどこからでも、ADBが入っているディレクトリにいなくても実行できます。

- -

Windows 8 で実行するには(Windows 7 は同様ですがメニューオプションが多少変わります):

- - - -

Mac/Linuxでは:

- - - -

Linuxの追加手順

- -

Linuxのディストリビューションによっては、電話機にudevルールを追加します。

- -

端末のベンダーIDを知るには、電話機をUSB経由で接続して lsusb コマンドを使ってUSBサブシステム上に検知される端末を見ます。一覧から電話機を見ます見つけて、"ID"に続く4桁の数字をメモします。Flame によくあるIDは 05c6 なので、この時のudevルールは下記のようになります:

- -
SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666"
- -

別の番号が載っている場合、代わりにそれを使います。例えば:

- -
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666"
- -

udevadm control --reload-rules を実行し(環境に依っては自動で行われます)、端末の抜き差しを忘れずに行っておきます。

- -

 

- -

Windowsの追加手順

- -

Flame端末にADBやMozilla開発ツールのApp Manager/WebIDEでアクセスするにはUSBドライバが必要です。下記の章にある手順にしたがってインストールして下さい。

- -

ドライバをダウンロードする

- -

この場所からWindowsドライバをダウンロードします。終わったらZIPファイルをハードディスクの適当な場所に展開します。

- -
-

: Android デバッグブリッジ (ADB) が先にインストールされていなければなりません: まだこれが終わっていない場合、上記指示を見て下さい。

-
- -

USBドライバをインストールする

- -

この時点で、Flame端末とコンピュータをUSBケーブルで接続します。

- -

ドライバをインストールするには、ZIPファイルを展開してできる the Alcatel_USB_Driver_Q_4.0.0_2013_11_11_noinstall フォルダを開き、DriverInstaller.exe の実行ファイルをダブルクリックします。この時に不明な発行元の警告が出るかもしれません。その場合、はいを選んで実行ファイルを起動します。

- -

Simple dialog box showing a picture of a phone along with install and uninstall buttons.

- -

Install ボタンをクリックしてドライバをインストールします。

- -

ドライバのインストール後、コマンドラインウィンドーで adb devices とタイプして動作をチェックします。
- 接続されている端末がこのように出力されます。

- -
List of devices attached
-3561d02a          device
- -

ここで端末が出てこない時、Windowsのデバイスマネージャを開 きます。Flameが"ACER ADB Interface"として出ているかもしれません。端末を抜いた時にデバイスマネージャで消えるかで、これを確認できます。"ACER ADB Interface"を右クリックし、アンインストールをクリックして、ドライバをアンインストールします。ドライバソフトウェアの削除ダイアログの中でチェックがされていることを確認して下さい。ここで上記のインストーラを再度起動します。Flameの画面タイムアウト設定をいくらか高くしておくとよいでしょう (Settings > Display > Screen timeout) 。画面が消えている時に、Windowsがたまにデフォルトのドライバを再インストールするようです。

diff --git a/files/ja/archive/b2g_os/phone_guide/flame/updating_your_flame/index.html b/files/ja/archive/b2g_os/phone_guide/flame/updating_your_flame/index.html deleted file mode 100644 index a0aa0d611b..0000000000 --- a/files/ja/archive/b2g_os/phone_guide/flame/updating_your_flame/index.html +++ /dev/null @@ -1,441 +0,0 @@ ---- -title: Flameを更新する -slug: Archive/B2G_OS/Phone_guide/Flame/Updating_your_Flame -tags: - - Firefox OS - - Flame - - developer phone - - reference device -translation_of: Archive/B2G_OS/Phone_guide/Flame/Updating_your_Flame ---- -
-

この記事では、Flame のソフトウェアを更新する方法 (Firefox OS の更新や電話機へアプリをインストールすることを含む) や、データのバックアップ、トラブルシューティングやテストに役立つ情報を扱います。これらを開始する前に、必ず 初回セットアップ の情報に目を通してください。

-
- -

端末のソフトウェアを更新するためのクイックガイド

- -

この記事には多くの情報があるため、ここでは、端末を更新するのに必要な手順だけを含めたクイックスタートガイドを記載します。より詳しい内容は、必要に応じて後述のセクションを参照してください。

- -

最新のベースイメージに完全に書き換える

- -

この一連の手順は、端末に何かする前に必ず行ってください。 (詳細は、後述の Base image および Base image installation のセクションを参照してください。)

- -

必要条件: adb と fastboot をインストールし、システムの PATH を通しておいてください。(ADB と Fastboot をインストールする を参照。)

- -
    -
  1. 最新のベースイメージをダウンロードしてください — ベースイメージ v18D_nightly_v5
  2. -
  3. Flame 端末でリモートデバッグを有効にします。環境設定 > 開発者 から USB 経由のデバッグ オプションを有効にします。
  4. -
  5. USB ケーブルで Flame とコンピュータを接続してください。
  6. -
  7. 次のコマンドを実行して端末とコンピュータが接続されていることを確認します: -
    adb devices
    - 正しく接続されていれば、次のように表示ます: - -
    List of devices attached
    -94f7ce4c    device
    - 端末が認識されていない (2 行目が表示されない) 場合は、USB ケーブルを接続し直し、再度試してください。また、上記の手順 2 のとおりに USB 経由のデバッグ が有効になっているか確認してください。adb が見つからず実行できない場合は、システムの環境変数で adb への PATH が正しく設定されていません (必要条件を参照)。
  8. -
  9. ベースイメージの zip ファイルを展開し、次のコマンドで、新たに作成されたディレクトリを開いてください: -
    cd v18D_nightly_v5
    -
  10. -
  11. 以下のご使用のシステム向けのフラッシュスクリプトを実行してください。 -
    # Windows
    -flash.bat
    -
    -# Linux / OSX
    -./flash.sh
    -
  12. -
- -
-

注記: ご使用のシステムでファイル名が正しくない場合は、適宜 flash.bat や flash.sh を名前変更してください。内容は同じです。

-
- -
-

補足: 以下のチェックサムでベースイメージのコンテンツを検証してください:

- -
Checksum: SHA512(v18D_nightly_v5.zip)= f92123446f71289dd0ea23b0c602f8a192267fbfcf2f25682cbc072f8bbe3e8b795aea3305ba6ea6cc504d252f1d895b07704b5b65700fcf3760e1386b89c431
-Build id: 20151221215202
-
-
- -

この時点で、Flame が最新の 2.6 ベースイメージになり、FOTA アップデートを受けられるようになります。

- -
-

補足: Flame の最新ナイトリービルド (十分にテストされていません) を使用したい場合は、端末の 環境設定 > 開発者 メニューから下へスクロールし、更新チャンネルを nightly-latest に変更してください。次に、端末を再起動し、環境設定 > 端末情報 からソフトウェアの更新を確認してください。 shallow flash をせずに最新バージョンに更新できます。shallow flash については、次のセクションをご覧ください。

-
- -

更新チャンネルのリセットバグ

- -

バグ 1217490 で言及されているとおり、一部の Firefox OS テスターが Firefox OS 2.5 や最新の FOTA アップデート (Flame だけでなく他の dogfooding 端末を含む) をテストした際に、FOTA アップデートをインストールすると更新チャンネルが nightly にリセットされてしまう問題が見つかりました。これはつまり、その後の FOTA アップデートが他のチャンネルで配布されてしまうため受けられないことを意味します。この問題を避けるには、WebIDE 経由で Firefox OS の環境設定から更新チャンネルを nightly-latest に設定することを推奨します。手順は以下の通り:

- -
    -
  1. USB ケーブルで端末をコンピュータに接続します (端末の 開発者設定 で、USB 経由のデバッグ オプションが ADB と開発ツール に設定されていることを確認してください)。
  2. -
  3. デスクトップの Firefox を起動し、WebIDE を開きます。
  4. -
  5. WebIDE の右側の USB デバイス のリストから端末に接続してください。端末側で接続の確認が表示されたら許可してください。
  6. -
  7. WebIDE の右側の その他 のリストから 端末の設定 を選択します。
  8. -
  9. 設定リストから app.update.channel を見つけ、この設定値を nightly-latest に変更してください。
  10. -
  11. また、さらに永続的に更新したい場合は、app.update.channel.backup を見つけ、この設定値を nightly-latest に変更してください。
  12. -
- -

最新の Firefox OS ナイトリー (Gaia と Gecko) を Shallow Flash する

- -

この一連の手順は、最新のナイトリービルドに更新したいときにだけ実行する必要があります (詳細は Updating your Flame to a nightly build を参照してください)。

- -

必要条件: Windows のユーザは Cygwin をインストールする必要があります。これは、Windows 上で Linux 環境のコマンドを提供するものです。以下の説明には、適切なパッケージを自動的にインストールする方法も含まれています。まだインストールしていない場合に実行してください。

- -
    -
  1. Mozilla Central から最新のビルドをダウンロードしてください。b2g-XX.XX.en-US.android-arm.tar.gz と gaia.zip の両方のファイルをダウンロードしてください。
  2. -
  3. すべてのプラットフォーム: shallow flash スクリプト をビルドファイルと同じディレクトリにダウンロードしてください。
  4. -
  5. Windows ユーザ: shallow_flash.bat Windows スクリプトも同じディレクトリにダウンロードしてください。Cygwin をまだインストールしていない場合は、Cygwin のインストールファイルをダウンロード してください (このセットアップを実行する必要はありません。shallow_flash.bat スクリプトから自動的に実行され、必要なパッケージと共にインストールされます)。
  6. -
  7. ターミナル (コマンドプロンプト) で、cd を実行してファイルを保存したディレクトリへ移動します。次のコマンドを実行して、ビルドを端末に書き込んでください: -
    # Linux
    -./shallow_flash.sh --gaia=gaia.zip --gecko=b2g-XX.XX.en-US.android-arm.tar.gz
    -
    -# Mac
    -./shallow_flash.sh --gaia gaia.zip --gecko b2g-XX.XX.en-US.android-arm.tar.gz
    -
    -# Windows
    -# Windows エクスプローラーから shallow_flash.bat アイコン (歯車付き) をダブルクリックして実行することもできます。
    -shallow_flash.bat
    -
  8. -
- -

この処理は、gaia.zip と b2g-XX.XX.en-US.android-arm.tar.gz ファイルを端末に書き込みます。ファイルが端末へ送られ、処理が完了した後に端末を再起動します。

- -
-

補足: Linux で、Gaia の書き込み中にスクリプトが失敗する場合、オプションを短いものに置き換えて再度試してください。 --gaia=gaia.zip-g gaia.zip に置き換え、--gecko=b2g-XX.XX.en-US.android-arm.tar.gz-G b2g-XX.XX.en-US.android-arm.tar.gz に置き換えてみてください。

-
- -

Flame のソフトウェア更新

- -

Flame 端末に対する Firefox OS ソフトウェアのリリースは、主に 2 つのチャンネルがあります:

- - - -

ベースイメージ

- -

次のリンクから、リカバリイメージとツールをダウンロードできます:

- -

最新版 (特に避ける理由が無ければこれを使う)

- - - -
-

注記: 次のコマンドを実行することで、ご使用の端末のベースイメージを確認できます: adb shell getprop ro.bootloader バージョン番号は最後の 4 桁から末尾の数字を除き、先頭に 'v' を付けたものです (例: L1TC000118D0 > v18D)。

-
- -
-

重要: 浅い書き込み (shallow flash)、または全部の書き込み (full flash) を実行すると、電話機のデータが上書きされます。更新する前にデータをバックアップしておいてください! 詳細は、Backing up and restoring your Flame data のセクションをご覧ください。

-
- -

昔の情報

- -

これらのベースイメージは、安定・製品版のみ提供されています。

- - - -
-

注記: v188 ベースイメージで他言語を使うと、画面上では英語の混じった表示になります。

-
- -
-

注記: Firefox OS イメージ v180 以上は、Android KK (Kitkat 4.4) ベースになっています。JB (Jellybean 4.1~4.3) ビルドは開発終了しており、サポートされません。ですから v180 より古いものは使わないでください。

-
- -

ベースイメージのインストール

- -

ご使用の端末にベースイメージをインストールするには:

- -
    -
  1. Flame のリモートデバッグを有効にしてください。端末の 開発者設定 (Developer settings) (このオプションは、Firefox OS 1.3 以前と Firefox OS 1.4 以降で異なります) の配下にある リモートデバッグ (リモートデバッグ/USB 経由のデバッグ) オプションで設定できます。(オプション名は Firefox OS 1.3 以前と 1.4 以降で異なります)
  2. -
  3. Flame とコンピュータを USB ケーブルで接続します。ターミナルから adb devices コマンドを実行して、コンピュータと端末が正しく接続されているか確認してください。
  4. -
  5. 前述のベースイメージの .zip ファイルをダウンロードし、デスクトップに展開します。
  6. -
  7. 展開したディレクトリを開き、次のとおりに実行します: -
      -
    • Windows の場合は、コマンドプロンプトを開き、先ほど展開したディレクトリへ移動し、flash.bat スクリプトを実行します (またはエクスプローラー上でスクリプトをダブルクリックします)。
      - 補足: flash.bat が見当たらない場合は、flash.shファイルを flash.bat に名前変更して実行してください。adbfastboot がインストールされ、これらへのパスが環境変数 PATH に書かれているかどうかも確認しておいてください。
    • -
    • Linux / OSX の場合は、ターミナルで先ほど展開したディレクトリへ移動し、./flash.sh と入力して flash.sh スクリプトを実行します。(以前の説明では sudo コマンドの利用を薦めていましたが、これは絶対に行わないでください。インターネットからダウンロードしたファイルに対して sudo コマンドを利用することは非常に危険です。スクリプトが端末を見つけられない場合は、あなたの udev rules が正しいか、もう一度確認してください。) flash.sh が見当たらない場合は、flash.bat ファイルを flash.sh に名前変更した後で、上記のコマンドを実行してください。
    • -
    -
  8. -
- -
-

注記: 上記コマンドの実行時に "permission denied" エラーが表示された場合、おそらくシェルスクリプトに適切な権限がありません。 chmod +x flash.sh を実行すると問題を解決できるでしょう。

-
- -
-

注記: flash スクリプトが "< waiting for device >" で停止し、ディスプレイに "ThunderSoft(R)" が表示されたままになっている場合、fastboot モードでデバイスにアクセスする権限がスクリプトにありません。udev ルール をセットアップして、アクセスできるようにする必要があります。また、USB 3 ポートでは fastboot がうまく動作しない可能性があり、この問題の原因となることがあります。

-
- -
-

注記: ご自身で Flame へインストールするソフトウェアをビルドすることも可能です。こちらもご覧ください: Firefox OS のビルドとインストール

-
- -

フォントの修正

- -
-

重要: この手順は v180ベースイメージでのみ必要です。

-
- -

Gecko と Gaia を v180 ベースイメージの nightly に更新した後、Gecko/Gaia の想定するフォントとベースイメージの提供するフォントとの間にミスマッチが生じます (この問題は v188 で修正されています)。この問題を修正するには、以下の 2 通りの選択肢があります:

- - - -

Flame を nightly ビルドに更新する

- -
-

注記: 現在のビルドについて、Firefox OS の Nightly 開発ビルドは A-GPS をサポートしていません。これは、GPS 機能のパフォーマンスを低下させる可能性があります。将来の Nightly チャンネルの更新で、この問題を解決する予定です。

-
- -
-

重要: 浅い書き込み (shallow flash)、または全部の書き込み (full flash) を実行する時、電話機のデータが上書きされます。更新する前にデータをバックアップしておいてください! 詳細は、Backing up and restoring your Flame data のセクションをご覧ください。

-
- -
    -
  1. 電話機を Nightly ビルドに更新する前に、根底のシステムを確実に最新のものにするため、最新のベースイメージを書き込んでください。下記のステップ 3 で使おうとするバージョンと同じか、より新しいバージョンの Firefox OSベースイメージ をダウンロードし、端末のソフトウェアを前述のように更新します。
  2. -
  3. 上記ステップでは端末のオペレーティングシステムがインストールされるため、Flame のリモートデバッグを端末の 開発者設定 内の リモートデバッグ オプションを再び有効にしておく必要があります。
  4. -
  5. 次に、インストールするビルドを選んでください (https://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/ にあります)。次のどれか一つになるでしょう: - -
  6. -
  7. バージョンを選び、b2g-XX.XX.en-US.android-arm.tar.gzgaia.zip の両方のファイルをダウンロードします。デスクトップ上の fxos のようなディレクトリの中に保存します。
  8. -
  9. shallow flash スクリプト をダウンロードし、上の 2 個のファイルと同じディレクトリに保存します。
  10. -
  11. Windows ユーザ向け: この他に Windows スクリプトの shallow_flash.batCygwin (Windows 上の Linux ライクなコマンド環境) をダウンロードします。デフォルトの Cygwin base カテゴリーに加えて unzip パッケージをインストールする必要がありますが、Cygwin setup*.exe のコピーをスクリプトと同じフォルダに置いておけば、shallow_flash.bat があなたの代わりにやってくれます。
  12. -
  13. -

    ターミナルで、保存したファイルのあるフォルダに cd で移動し、次のコマンドで電話機にビルドを書き込みます:

    - -

    Linux:

    - -
    ./shallow_flash.sh --gaia=gaia.zip --gecko=b2g-XX.XX.en-US.android-arm.tar.gz
    - -

    Mac:

    - -
    ./shallow_flash.sh --gaia gaia.zip --gecko b2g-XX.XX.en-US.android-arm.tar.gz
    - -

    Windows:

    - -

    shallow_flash.bat (歯車アイコン) をダブルクリックするか、コマンドシェルから実行します。これは gaia.zip と、単一の b2g-XX.XX.en-US.android-arm.tar.gz ファイルを書き込みます。

    -
  14. -
- -
-

補足: 更新が "Flashing out/target/product/flame/system.img failed because the image was too large." (イメージが大きすぎたため、〜/system.img の書き込みに失敗しました。) のエラーで失敗する場合、最新版の ベースイメージ へ更新する必要があります。次に、再びナイトリービルドの適用を試してください。これは、システムパーティションのサイズが更新されたためです (バグ 1184980 参照)。

-
- -
-

補足: 上記のコマンドで "permission denied" エラーが出た場合、おそらくシェルスクリプトに適切な権限がありません。 chmod +x shallow_flash を実行すると、この問題を解決できるでしょう。

-
- -
-

補足: "shallow flash" では GeckoGaia に加えてデータディレクトリを更新します。その一方で、"full flash" では Gecko/Gaia だけでなく、その下の Gonk 層と端末に特有な関連バイナリも更新します。このことが、上で述べたように、最初に公式の ベースイメージ に更新し、次に適切な Gonk /バイナリ層の上から shallow flash をするのが良いとされる理由です。

-
- -
-

補足: 各ビルドの更新状態は、Flame OTA ステータスのページ で確認できます。

-
- -

インストールの手続きが完了すると、更新されたビルドで端末が再起動し、初回のユーザ設定画面が表示されます。

- -

nightly 更新チャンネルに切り替える

- -

v2.2 では、開発者設定で、更新チャンネルdefault から nightly へ変更できます。

- -

以下は、上記の設定が端末に見つからない場合のための古い方法です。

- -
    -
  1. Flameで remote debugging が有効になっていることを、端末の Developer settings のUSBオプションのRemote debugging/Debugging から、確認してください。
  2. -
  3. change channel スクリプトをダウンロードします: 次のリンクで、 Raw を押して、次にブラウザの保存機能を使ってページを直接 change_channel.sh として保存します。
  4. -
  5. ターミナルで、スクリプトを保存したディレクトリに cd して更新チャンネルを次のコマンドを使って変更します: -
    ./change_channel.sh -v nightly
    -
  6. -
  7. 端末を一旦再起動し、Settings > Device information > Check now へ移動して更新を確認してください。
  8. -
- -
-

補足: このステップは、Firefox OS ソフトウェアの新しいバージョンでは必要ありません。自動的に OTA アップデートを取得できます。

-
- -
-

注記: いくつか異なる更新チャンネルを選択できます。"./change_channel.sh -h" を実行すると、その他のチャンネルオプションが表示されます。

-
- -

Fastboot モード

- -

端末に新しいビルドをフラッシュするのに失敗した場合、電話機が応答しなくなり、リカバリモードで再起動されることがあります。リカバリモードには、いくつかのオプション (再起動、adb からの更新、データ消去、キャッシュ消去、SD カードからの更新) があります。残念ながら、Update from adb を選ぶとサイドロードモードに入り、他の adb コマンドが使えなくなります。adb sideload コマンド自体は動作するでしょうが、様々な flash スクリプトは他の adb コマンドに依存しています。

- -

以下の手順で強制的に fastboot モードにできます:

- -
    -
  1. 端末の電源を切ります。(極端な場合、バッテリーも外します...)
  2. -
  3. 音量ダウンキーと電源ボタンを同時に押しながら、端末の電源を入れます。
  4. -
- -

しばらくすると、端末に "FASTBOOT" というテキストが表示されます。これは Fastboot モードであり、USB ケーブルの接続を待機しています。この時点で、adb をインストールしたコンピュータと USB ケーブルで接続してください。コンピュータで fastboot devices コマンドを実行すると端末リストを見ることができます。通常の adb コマンドでは端末を見られないので注意してください。fastboot コマンドでだけ見えます。このモードでは、上記で説明した ベースイメージ をインストールするスクリプトが使用できます。このスクリプトは、adb と fastboot 両方のコマンドを使えるため、adb からは最初のエラーや警告が出ることもありますが、処理の終わりには、適切に端末にフラッシュできているでしょう。

- -

緊急ダウンロードモード

- -

新しいビルドを端末にフラッシュし損ねて端末が操作不能になり、さらに fastboot モードも利用できない場合は、緊急ダウンロードモードを利用して端末を復旧できます。緊急ダウンロードモードに入るには、"Recovery Cable" と書かれた赤いラベルのついた USB ケーブルと Emergency Download Tool が必要です。詳しい説明は、ダウンロードしたツールに含まれる Flame emergency rescue tool チュートリアルをご覧ください。技術サポートが必要な場合は、端末製造元 (flameservice [at] thundersoft.com) にお問い合わせください。

- -

緊急ダウンロードツールを起動したときに表示されるダイアログボックス

- -
-

注記: この提供されたツールは Windows 専用です。

-
- -

リカバリモード

- -

リカバリモードを利用することで、端末のデータを削除したり、ファームウェアを手動で更新したりできます。リカバリモードに入るには 2 通り方法があります。

- - - -

リカバリモードでは、音量アップ / 音量ダウンキーでメニューを上下へ移動、電源キーを押すと項目を選択して実行します。データを消去したり、更新のためのアップグレードパッケージをダウンロードする前には、必ず、連絡先や SMS メッセージなどのデータのバックアップを取るようにしてください。

- -

ADB サイドロード経由で端末を更新する

- -

コンピュータに adb をインストールしてあれば、adb sideload コマンドで、端末を現在の update.zip ビルドに更新できます。手順は以下の通り:

- -
    -
  1. 端末を USB 経由でコンピュータに接続します。
  2. -
  3. 次のコマンドを実行します: -
    adb reboot recovery
    -
  4. -
  5. 端末の音量ダウンボタンを 1 回押して、メニューの選択項目を "apply update from ADB" オプションへ移動します。行き過ぎた場合は、音量アップキーとダウンキーを押して移動してください。
  6. -
  7. 電源ボタンを押してメニューを選択します。
  8. -
  9. コンピュータ上で、update.zip ファイルを置いたディレクトリで次のコマンドを実行します: -
    adb sideload update.zip
    -
    -
  10. -
  11. サイドロードが完了するまでお待ちください。完了すると、端末に "Install from ADB complete" と表示されます。
  12. -
  13. 端末の音量アップボタンを押して "reboot system now" オプションへ移動し、電源ボタンを押して選択してください。端末が再起動します。
  14. -
- -

Flame のデータをバックアップ・リストアする

- -

Flame を通常の用途で使用している場合、(この記事の前の方で説明した通り) 新しいビルドへ更新する際に電話機の連絡先やその他データを失いたくないでしょう。データをバックアップ・リストアするためのBackup and restore profile tool が使用できます。このツールは、B2G-flash-tool Git リポジトリ から入手できます。

- -
    -
  1. これを使うには、まずコマンドライン/ターミナルを開きます。
  2. -
  3. 次のコマンドで上記のリポジトリを clone します (Git をインストールしておいてください): -
    git clone https://github.com/Mozilla-TWQA/B2G-flash-tool
    -
  4. -
  5. このツールは、backup_restore_profile.py という名前の python ファイルです。Python もインストールしておいてください (2.7.x が良いでしょう)。Linux や Mac のシステムには最初から入っているはずです。
  6. -
  7. 次のコマンドで clone したディレクトリに移動してください: cd B2G-flash-tool
  8. -
- -
-

注記: そのツールを使う時、確実に端末とコンピュータが USB 経由で接続されている事と、ADB (上の 先にしておく重要な手順 を参照) と USB 経由のデバッグ (端末の 開発者設定 内)が有効になっている事も必要です。

-
- -
-

注記: このファイルを実行する権限がないのに文句を言うメッセージが出た場合、保存ファイルのディレクトリに cd して、次のコマンドを実行します:

- -
chmod +x backup_restore_profile.py
-
- -

データを端末からバックアップする

- -

バックアップの前に、端末が最近の OTA に更新されているか確認してください。これをするには、電話機で 環境設定アプリ > 端末情報 > 更新の確認 > 今すぐ確認 をクリックします。利用可能な更新がある場合、すぐに利用可能な更新の通知がでるでしょう。更新をインストールを選びます。

- -

backup_restore_profile.sh ファイルを保存したディレクトリで、次のコマンドを実行します:

- -
python backup_restore_profile.py -b
- -

これは、端末プロファイルを mozilla-profile というディレクトリに保存します。このディレクトリは、スクリプトと同じディレクトリ内にあります。

- -
-

警告: デフォルトでは、内部 SD カードのコンテンツを保存しません。ギャラリーアプリからは、写真や動画などのファイルが保存されません。SD カードのコンテンツをバックアップしたいときは、下記のように --sdcard オプションを付けてください。

- -
python backup_restore_profile.py -b --sdcard
-
- -

データを端末にリストアする

- -

リストアの前に、端末が最近の OTA に更新されているか確認してください。これをするには、電話機で 環境設定アプリ > 端末情報 > 更新の確認 > 今すぐ確認 をクリックします。利用可能な更新がある場合、すぐに利用可能な更新の通知がでるでしょう。更新をインストールを選びます。

- -

mozilla-profile ディレクトリがあるディレクトリ (上記のセクションを参照) で、次のコマンドを実行します:

- -
python backup_restore_profile.py -r
- -
-

注記: 次のコマンドで、ツールがサポートするすべてのオプション一覧を得られます:
- python backup_restore_profile.py -h

-
- -

Flame にアプリを書き込む

- -

アプリマネージャWebIDE を使うと、簡単にアプリを端末に書き込んだりテストしたりできます。

- -

使用可能な RAM の調整

- -

メモリが少ない環境でのアプリの振る舞いを調査するために、使用可能な RAM 容量を調整できます。

- -

fastboot モードで調整できます (ADB に同梱されている fastboot のインストールが必要です)。fastboot モードに入り、次のコマンドを実行してください:

- -
adb reboot bootloader
-fastboot oem mem [0|256-1024]
- -

“0” と入力するとメモリサイズが自動的に調整されます。容量を具体的に設定するには、256 から1024 の間の数値を指定してください。例えば、使用可能な RAM のサイズを 512M バイトとするには、次のように指定します: fastboot oem mem 512

- -

設定を有効にするには、端末の再起動が必要です。次のコマンドを実行して再起動します:

- -
fastboot reboot
- -

現在のメモリサイズを調べるには、次のコマンドを実行します:

- -
fastboot getvar mem
-
diff --git a/files/ja/archive/b2g_os/phone_guide/fx0/index.html b/files/ja/archive/b2g_os/phone_guide/fx0/index.html deleted file mode 100644 index b1204135dc..0000000000 --- a/files/ja/archive/b2g_os/phone_guide/fx0/index.html +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Fx0 -slug: Archive/B2G_OS/Phone_guide/Fx0 -tags: - - Firefox OS - - Fx0 - - KDDI - - Phone -translation_of: Archive/B2G_OS/Phone_guide/Fx0 ---- -
-
- -
-

Fx0 は、日本で初めてコンシューマ向けに販売された Firefox OS 搭載のハイエンドスマートフォンです。2014年12月25日に KDDI から発売されました。

- -

購入方法

- -

Fx0は日本国内のスマートフォン取り扱い店舗を通して購入することができます。この端末はSIMロックされており、日本国内でのみ使用可能です。

- -

ソフトウェアの更新およびアップグレード方法

- -

Fx0 端末のシステムイメージはロックされており、ソフトウェアの更新は、ネットワーク事業者による OTA のアップデートがリリースされた際にのみ行うことができます。端末のシステムイメージは Firefox OS 2.0 です。

-
-
- -

端末の詳細情報

- -

端末仕様の詳細は、Firefox OS 端末とその仕様のページ をご覧ください。

- -

ハードウェア

- - - -

関連ページ

- - diff --git a/files/ja/archive/b2g_os/phone_guide/geeksphone/index.html b/files/ja/archive/b2g_os/phone_guide/geeksphone/index.html deleted file mode 100644 index dbdeb6dbb0..0000000000 --- a/files/ja/archive/b2g_os/phone_guide/geeksphone/index.html +++ /dev/null @@ -1,107 +0,0 @@ ---- -title: Geeksphone -slug: Archive/B2G_OS/Phone_guide/Geeksphone -translation_of: Archive/B2G_OS/Phone_guide/Geeksphone ---- -
-

開発者向けプレビュー版の Firefox OS 端末の多くはは Geeksphone から提供されています. 開発者向けの端末であるからには、可能な限りこれで遊んでください!この文書では端末を最新に保ち、Gaia アプリを調整するための TIPS を紹介します。

-
-
-

注意: この手順は旧式の Keon と Peak 向けです。最新の Geeksphone Revolution では必要ありません。

-
-

最新イメージへの更新

-

更新ファイルは設定アプリの端末情報からダウンロードできます。設定できるアップデートの確認頻度は日ごと、週ごと、月ごとの3種類です。また「すぐに確認する」も選択できます。アップデートがある場合は、最新バージョンをダウンロードしインストールするかどうかを確認するプロンプトが表示されます。

-

The screen for checking updates on the Firefox OS settings app

-

手動アップデート

-

Geeksphone は最新の安定版と nightly ビルドを提供しており、それらを利用して端末を手動で更新することもできます。

-

端末の設定

-

手動アップデートをする前に、Pushing Firefox OS Apps to the Geeksphone“Setting Up the Geeksphone Device” にある設定をする必要があります。この設定により、データを端末に書き込めるようになります。前述の記事にある手順に従って、正しい USB ドライバをインストールしてください。

-
-

注意: USB ドライバを正しく設定することは、特に Windows で重要です。

-
-

ビルドは Geeksphone ダウンロードサイト で提供されます。端末とビルドの種類を選んで、イメージをダウンロードできます。

-

Two phone images side by side, the Geeksphone Keon and Peak, with different software download options below each one.

-

Download the build according to your device and extract the archive to your filesystem. The archive contains the images and commands required to flash the phone using Windows, Mac OS, or Linux. In order to flash the phone you need to enabled Remote debugging on your phone. This option is avalible in Settings app.

-

Settings -> Device information -> More information -> Developer tab.

-

Make sure the Phone power level is above 50%, since it's gonna take several restarts to change the system files a power faill can bring disaster.

-

Enabling remote debugging on the Firefox OS Settings app

-

Windows

-
-

Note: You might need to install USB drivers on Windows. For instructions, see the section “Setting Up the Geeksphone Device” in Pushing Firefox OS Apps to the Geeksphone.

-
-

Open a Command Prompt (start -> type cmd in search -> enter on Windows 7, Windows key + X -> select Command Prompt on Windows 8) and cd to the directory containing the extracted files. Run:

-
flash.bat
-
-

Mac OS

-

Open a Terminal (Cmd + space -> type terminal -> enter) window and cd to the directory containing the extracted files. Run:

-
./flash_mac.sh
-
-

Linux

-

To flash a Keon from Ubuntu add the following rules to /etc/udev/rules.d/51-android.rules

-
- SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", ATTR{idProduct}=="8013", MODE="0666"
-
- SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d00d", MODE="0666"
-
-  
-

Open a Terminal (control-alt-t on Ubuntu) window and cd to the directory containing the extracted files. Run:

-
./flash.sh
-
-

This should flash the new image to the phone. The phone will need to be set up again as all data will be cleared. If you want to backup your data and restore afterwards, you can follow the instructions at Backup the phone system partition.

-

If you have an 'unagi' or developer preview phone that is not a Geeksphone

-

If you have a developer phone that is not a Geeksphone such as an 'unagi' or a previously Android-based device, you may need to perform the following steps. If this is not you, please skip to the next section.

-

You will need to install adb and fastboot. These utilities can be found in the Android Developer Toolkit.

-

It is not necessary to install the entire toolkit. Download the toolkit from here and extract the contents. adb and fastboot are found in the /platform-tools/ folder. They can be copied to the /usr/bin of your Linux or Mac OS machine, or copied to another folder as long as that folder is added to your $PATH.

-

If you are attempting to flash your device and have another device plugged in via USB, your phone may not be detected by these utilities correctly. Only have your phone plugged in while trying to flash it.

-

Tweaking Gaia

-

If you are the industrious sort, you may want to tweak the default applications in Gaia — the UI in Firefox OS. In this section we will cover some of the basics for cloning Gaia and making changes to the default system apps. Bear in mind these tips are “at your own risk” and may involve you later referring to the section “Ok, I bricked my phone”. Before proceeding make sure that you have adb and fastboot installed on your system. To verify if these are installed open a terminal and type adb devices with your phone connected. You should see your phone listed under the attached devices.

-

You should also be able to run fastboot from the terminal. If you run fastboot, a set of parameter options should be displayed. If you do not have adb or fastboot installed, a quick Google search with your operating system will return several quick starts on how to install them. In addition to adb and fastboot you will need Git. If you do not currently have Git installed, have a look at this setup guide. Finally make sure your phone is set up for remote debugging as described in the previous section.

-

Once you have the prerequisites you can open a terminal and cd to the directory you would like to clone the Gaia source code to. Type the following commands:

-
git clone git://github.com/mozilla-b2g/gaia.git gaia
-cd gaia
-
-

This will clone the current Gaia code to your system.

-
-

If you plan on submitting changes back to the Gaia source, be sure to fork the source before cloning as described in Hacking Gaia.

-
-

Currently the Geeksphone Keon uses the v1.0.1 branch of Gaia code, so set the proper branch using the following command before you do anything else:

-
git checkout -b v1.0.1 origin/v1.0.1
-
-

Most of the system apps are located in the apps subdirectory of gaia. You can now make any changes to these Firefox OS apps you wish. Once you have made changes, make sure your device is mounted properly by first running:

-
adb remount
-

Next, run the following command to push the modified apps to your phone. This will by default push all the system apps to the phone:

-
B2G_SYSTEM_APPS=1 make install-gaia
-
-

If you only changed one of the apps you can specify the particular app using similar syntax. In this example only the calendar app will be pushed to the phone:

-
APP=calendar B2G_SYSTEM_APPS=1 make install-gaia
-
-

If you have issues while making the changes, you can reset the phone to default values using either of the following commands:

-
make production
-make reset-gaia
-
-
-

Note: Bear in mind that either of the above commands will clear any data or apps that you have pushed to the phone. If you want to backup your data and restore afterwards, you can follow the instructions at Backup the phone system partition.

-
-

"Ok, I bricked my phone"

-

If you are in the process of modifying your phone and it becomes “unresponsive” you should be able to recover it using fastboot with a simple procedure. The following illustrates resetting the Keon but other phones should have a similar process. You will also need to verify that you have fastboot and ADB installed (try typing fastboot and adb in the command line if you are not sure).

-
    -
  1. Remove the USB cable and then remove the battery from the phone for 30 seconds.
  2. -
  3. Reinsert the battery and hold down the volume up and power buttons at the same time, for a few seconds, until the system recovery menu appears.
  4. -
  5. Reconnect the USB cable
  6. -
  7. Type in the command run adb reboot bootloader.
  8. -
  9. When the phone reboots and starts to show the Geeskphone logo, you are now in fastboot mode; run the following commands from a terminal window in the directory that contains the latest img files described in the first section of this post:
  10. -
-
fastboot flash recovery recovery.img
-fastboot flash boot boot.img
-fastboot flash userdata userdata.img
-fastboot flash system system.img
-fastboot reboot
-
-

This process should recover your phone. If it doesn't seem to work, you may have to try it a second time.

-

Go play!

-

We hope these instructions are useful to you, and naturally we want you to be as happy about Firefox OS and the possibilities as we are! Feel free to play around with updating your devices, make changes/updates to Gaia apps, and also be inspired to build you own open web apps.

-

See also

- diff --git a/files/ja/archive/b2g_os/phone_guide/index.html b/files/ja/archive/b2g_os/phone_guide/index.html deleted file mode 100644 index 12c01e617e..0000000000 --- a/files/ja/archive/b2g_os/phone_guide/index.html +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Firefox OS 端末ガイド -slug: Archive/B2G_OS/Phone_guide -tags: - - Firefox OS - - Landing - - Phones - - TopicStub -translation_of: Archive/B2G_OS/Phone_guide ---- -
-
-

ここには Firefox OS 端末(開発者向けと消費者向けの両方)に関する開発者向け情報がまとめられています。 一般的な Firefox OS  のビルドとインストールFirefox OS のハック方法 については、それぞれの文書を参照してください。個別の端末に関しては、以下の文書を参照してください。

-
-
- -

開発者向け端末に関する情報

- -

ここに挙げられている端末は Firefox OS でアプリの開発や Firefox OS 自体への貢献をしたい開発者向けに調整されています。それらはたいてい、SIM、システムファイルなどがロックされていません。

- -
-
Flame
-
Mozilla のハイエンドな開発者向け端末 Flame についての情報です。
-
Geeksphone
-
Geeksphone のアップデートと、Gaia アプリケーションを調整するための TIPS 集です。
-
Nexus 5
-
この記事では Nexus 5 でFirefox OS を使う情報を、端末に Firefox OS を焼くことも含めて、提供します。
-
Nexus 4
-
この記事では Nexus 4 でFirefox OS を使う情報を、端末に Firefox OS を焼くことも含めて、提供します。
-
ZTE OPEN
-
ZTE Open に関する情報がまとまっています。
-
ZTE Open C
-
よりハイエンドなハードウェアとより新しいソフトウェアのあるFirefox OS端末である、ZTE Open C に関する情報がまとまっています。
-
- -

消費者向け端末に関する情報

- -

ここに挙げられた端末は消費者向けモデルです。端末をハックしたい開発者にとって理想的ではありません。しかし、特定のロケール向けのアプリを開発したい、あるいは、特定の端末上で動作することを保証したい開発者にとっては役に立つ情報があります。端末のさらなる完全な一覧は、 購入可能なFirefox OS 端末を探そう ページを参照してください。

- -
-
 
-
Alcatel One Touch Fire
-
Firefox OS  1.3 をベースにしています。5 ヶ国以上で購入可能です。
-
Alcatel One Touch Pixi 3 (3.5)
-
ハイエンド消費者のスマートフォンで、2 メガピクセルのカメラを備え、Firefox OS 2.0で強化されています
-
Alcatel Onetouch Fire 2C 4020D
-
Tarako Firefox OS (1.3T) をベースにしていて、インドで発売されました。
-
Alcatel Onetouch Fire C
-
Tarako Firefox OS (1.3T) をベースにしていて、インドで発売されました。
-
Alcatel Onetouch Fire E
-
5カ国以上で入手できます。
-
Cherry Mobile Ace
-
Firefox OS 1.3T をベースにしていて、フィリピンで入手できます。
-
- -
-
Fx0
-
日本で初めてリリースされた Firefox OS 端末で、KDDI によって発売されました。
-
 Huawei Y300 II
-
Firefox OS 1.1 をベースにしています。 フィリピンとメキシコで購入可能です。
-
Intex Cloud FX
-
インドで初めてリリースされた初の Firefox OS Tarako 端末です(Firefox OS 1.3T をベースにしています)。
-
LG Fireweb
-
Firefox OS 1.1 をベースにしています。ウルグアイとブラジルで購入可能です。
-
Spice Firefox MI FX1
-
Tarako Firefox OS (1.3T) をベースに、インドで発売されました。
-
Spice Firefox MI FX2
-
ハイエンド消費者向け Firefox OS 3Gスマートフォンで、 2 メガピクセルのカメラを備え、Firefox OS 1.4 をベースに、インドで発売されました。
-
Symphony GoFox F15
-
The Symphony GoFox F15 はFirefox OS 端末としては初めて3G ビデオ電話機能をもったものです。バングラデシュで発売されました。
-
Zen U105 Fire
-
この記事にはインドで購入可能な低価格スマートフォン Zen U105 Fire に関する情報が含まれています。
-
ZTE Open II
-
ZTE Open II は消費者向け Firefox OS スマートフォンで、1.2 GHz デュアルコアプロセッサと 2.0 MP リアカメラを搭載しています。7 ヶ国で購入可能です。
-
Orange Klif
-
Orange Klif は 3G スマートフォンで、2 メガピクセルのカメラを備え、Firefox OS 2.0で強化されています。アフリカの多数の国で入手できます。
-
- -

Firefox OS に関する情報

- -
-
Firefox OS 端末データ
-
コードネーム、購入方法、ハードウェアの仕様といった Firefox OS 端末の情報がまとまっています。
-
Firefox OS 端末の一般的な特徴
-
Firefox OS 端末の一般的な特徴と、最小ハードウェア構成についての文書です。
-
トラブルシューティング
-
Firefox OS を使う上で、良くあるトラブルとその解決方法を解説します。
-
オープンレファレンス端末に関するベストプラクティス
-
オープンなレファレンス端末に関するベストプラクティス集です。最近の Firefox OS の開発端末は全てこのベストプラクティスに従っています。
-
diff --git a/files/ja/archive/b2g_os/phone_guide/nexus_4/index.html b/files/ja/archive/b2g_os/phone_guide/nexus_4/index.html deleted file mode 100644 index f823a5af39..0000000000 --- a/files/ja/archive/b2g_os/phone_guide/nexus_4/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Nexus 4 -slug: Archive/B2G_OS/Phone_guide/Nexus_4 -tags: - - B2G - - Firefox OS - - Installing - - Nexus 4 -translation_of: Archive/B2G_OS/Phone_guide/Nexus_4 ---- -

この記事は、Nexus 4 で、端末に Firefox OS をインストールすることを含め、Firefox OS を使用することについての情報を提供します。

- -

Nexus 4 に Firefox OS をインストールする

- -

このセクションでは、Firefox OS を Nexus 4 へインストールする手順について説明します。

- -

はじめに

- -

ADB と Fastboot が必要です。ADB と Fastboot を持っていない場合、Android SDK の一部として ADB と Fastboot をインストールしてください。

- -

Windows ユーザは、Google USB Dirver もインストールしてください。USB ドライバをダウンロードし、インストール手順に従います

- -

Windows でのインストール

- -
    -
  1. nexus-4-kk.zip をダウンロードします。
  2. -
  3. zip ファイルを展開し、flash.bat ファイルが b2g-distro フォルダ内にあるかを確認します。(見つからない場合は、https://github.com/nhirata/flash-batch から入手できます。)
  4. -
  5. Nexus 4 が起動している場合、電源を切ります。
  6. -
  7. USB ケーブルで Nexes 4 とコンピュータを接続します。
  8. -
  9. 電源ボタンをタップして端末を起動し、起動後すぐにボリュームダウンボタンを押して、画面に "Restart bootloader" と表示されるまで、押し続けます。
  10. -
  11. flash.bat ファイルをダブルクリックします。
  12. -
- -

Mac/Linux でのインストール

- -
    -
  1. nexus-4-kk.zip をダウンロードします。
  2. -
  3. zip ファイルを展開し、flash.sh ファイルが b2g-distro フォルダ内にあるかを確認します。
  4. -
  5. USB ケーブルで Nexes 4 とコンピュータを接続します。
  6. -
  7. ターミナルを起動し、flash.sh が格納されているディレクトリに移動します。例: cd nexus-4-kk/b2g-distro
  8. -
  9. デバイスが検知できているかどうかを確認するために、adb devices とコマンドを入力します。(コマンドについての詳細やヘルプは、ADB コマンドセットアップをご覧ください。)
  10. -
  11. インストール用スクリプトに実行権限を与えるため、chmod +x ./flash.sh とコマンドを入力します。
  12. -
  13. ./flash.sh とコマンドを入力してスクリプトを実行し、インストールを開始します。
  14. -
- -

プロセスが完了すると、端末がリブートして、Firefox OS が起動します。

diff --git a/files/ja/archive/b2g_os/phone_guide/nexus_5/index.html b/files/ja/archive/b2g_os/phone_guide/nexus_5/index.html deleted file mode 100644 index 2a28c72035..0000000000 --- a/files/ja/archive/b2g_os/phone_guide/nexus_5/index.html +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: Nexus 5 -slug: Archive/B2G_OS/Phone_guide/Nexus_5 -tags: - - B2G - - Firefox OS - - Installing - - Nexus 5 - - flashing -translation_of: Archive/B2G_OS/Phone_guide/Nexus_5 ---- -

この記事は、Nexus 5 で、端末に Firefox OS をインストールすることを含め、Firefox OS を使用することについての情報を提供します。

- -

Nexus 5 に Firefox OS をインストールする

- -

このセクションでは、Firefox OS を Nexus 5 へインストールする方法について説明します。

- -

はじめに

- -

ADB と Fastboot が必要です。ADB と Fastboot を持っていない場合、Android SDK をインストールして下さい。ADB と Fastboot が含まれています。

- -

Windows ユーザは、Google USB Dirver もインストールしてください。USB ドライバをダウンロードし、インストール手順に従います。

- -

Windows でのインストール

- -
    -
  1. nexus-5-l.zip をダウンロードします。
  2. -
  3. zip ファイルを展開し、 flash.bat ファイルが b2g-distro フォルダ内にあるかどうかを確認します。(見つからなかった場合は、https://github.com/nhirata/flash-batch から入手できます。)
  4. -
  5. USB ケーブルで端末と PC を接続します。
  6. -
  7. 端末が起動し、ADB モードが有効となっていることを確認して下さい。(Firefox OS: Settings > Developer > ADB and DevTools; Android: Settings > Developer options > USB debugging
  8. -
  9. flash.bat ファイルをダブルクリックします。
  10. -
- -

Mac/Linux でのインストール

- -
    -
  1. nexus-5-l.zip をダウンロードします。
  2. -
  3. zip ファイルを展開し、flash.sh ファイルが b2g-distro フォルダ内にあるかを確認します。
  4. -
  5. USB ケーブルで端末と PC を接続します。
  6. -
  7. ターミナルを起動し、flash.sh が格納されたディレクトリに移動します。例えば、cd nexus-5-l/b2g-distro にあります。
  8. -
  9. デバイスが検知できているかどうかを確認するために、以下のコマンドを入力します。(コマンドについての詳細やヘルプは、adb コマンドヘルプをご覧ください。)
  10. -
  11. chmod +x ./flash.sh と入力して、インストール用スクリプトに実行権限を与えます。
  12. -
  13. ./flash.sh と入力して、インストールを開始します。
  14. -
- -

プロセスが完了すると、端末がリブートして Firefox OS が起動します。

diff --git a/files/ja/archive/b2g_os/phone_guide/phone_specs/index.html b/files/ja/archive/b2g_os/phone_guide/phone_specs/index.html deleted file mode 100644 index 0c66d96593..0000000000 --- a/files/ja/archive/b2g_os/phone_guide/phone_specs/index.html +++ /dev/null @@ -1,717 +0,0 @@ ---- -title: Firefox OS 端末とその仕様 -slug: Archive/B2G_OS/Phone_guide/Phone_specs -tags: - - B2G - - Device - - Firefox OS - - Guide - - Mobile - - Phone - - Specs -translation_of: Archive/B2G_OS/Phone_guide/Phone_specs ---- -
-

この文書は、詳細なハードウェアの仕様、コードネーム、初期インストールされている OS のバージョンといった Firefox OS 端末に関する情報を提供します。

-
- -

既存の Firefox OS 端末

- -

以下の表は、利用可能な Firefox OS 端末のモデルの一覧です。

- -
-

付記: 購入可能な国名や通信事業者、購入可能な商用端末の情報は、購入可能な端末 のページをご覧ください。

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

名称 / コードネーム

-
リリース日初期 OS バージョン入手可能性補足
-

Alcatel One Touch Fire

-

hamachi, buri

-
2013 年 7 月 12 日1.0.1入手可能ブラジル、ウルグアイ、イタリア、ドイツ、ギリシャ、セルビア、ハンガリー、ポーランドで購入可能。
また eBay からも購入可能。
Alcatel One Touch Fire E2014 年 7 月 18 日1.3.0可能チェコ共和国、ドイツ、ハンガリー、ポーランド、ロシアで購入可能。
otoro, unagi, inari ZTE の入手不可能な端末向け。ZTE Open 以前の開発で利用されていた。
-

ZTE Open

-

ikura

-
2013 年 7 月 2 日1.0.1入手可能inari に類似。eBay から購入可能
-

LG Fireweb

-

leo

-
2013 年 10 月 24 日1.1入手可能ブラジルで購入可能
-

Geeksphone Keon

-

keon

-
2013 年 4 月 24 日1.0.1在庫切れ開発者向け端末
-

Geeksphone Peak

-

peak

-
2013 年 4 月 24 日1.0.1在庫切れ"twist" というコードネームであったこともあり。開発者向け端末。
Geeksphone Peak+--入手不可販売中止
Geeksphone Revolution2014 年 3 月 4 日1.3pre入手可能オンラインで購入可能
-

LG Google Nexus 4

-

nexus-4

-
実験的。LG および Google によるサポートなし。端末は製造中止。
-

Flame

-

"リファレンス端末"

-
2014 年 4 月下旬1.3 -

プレオーダー
- 2014 年 12 月 - 売り切れ

-

Yahoo! ショッピング OSS ストア
- 在庫なし -

-

Spreadtrum

-

tarako

-
2014 年第 2 四半期終盤? Available soon
ZTE Open C2014 年 5 月 13 日1.3入手可能オンラインで購入可能
Symphony GoFox F152014 年 9 月 16 日1.4入手可能バングラデシュの Grameenphone チャンネルを通してのみ購入可能。
Intex Cloud Fx 1.3 入手可能インド国内の Snapdeal でのみ購入可能
Spice Fire One (Mi-FX1) 1.3入手可能インド国内の Snapdeal でのみ購入可能
Alcatel OneTouch Fire C 4020D2014 年 10 月 1 日1.3入手可能インドの Flipkart で購入可能
Zen U105 Fire2014 年 10 月 16 日1.3入手可能インドの Homeshop18 で購入可能
Cherry Mobile Ace2014 年 11 月1.3T入手可能フィリピンで購入可能
Fx02014 年 12 月2.0入手可能消費者向け携帯電話。日本国内でのみ購入可能。(KDDI 回線契約者のみ)
- -

Firefox OS のバージョン別

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
バージョン機能完成 (FC) 日付パートナー向けリリース
- (RTP) 日付
コードネームGecko のバージョン含まれるセキュリティ修正リリースノート
1.02012 年 12月 22 日2013 年 2 月 21日TEFGecko 18Gecko 18
1.0.12013年 1 月 15 日2013 年 9 月 6 日ShiraGecko 18Gecko 20開発者向け
- ユーザ向け
1.12013 年 3 月 29 日2013 年 10 月 9 日LeoGecko 18+ (新 API 群)Gecko 23開発者向け
- ユーザ向け
1.1.1 TBDHDSame as 1.1.0 with WVGAGecko 23
1.22013 年 9 月 15 日2013年 12 月 9 日KoiGecko 26[39]Gecko 26開発者向け
- ユーザ向け
1.32013 年 12 月 9 日TBD Gecko 28Gecko 28開発者向け
- ユーザ向け
1.42014 年 3 月 17 日TBD Gecko 30Gecko 30開発者向け
- ユーザ向け
2.02014 年 11 月TBD Gecko 32Gecko 32開発者向け
- ユーザ向け (TBD)
2.12015 年 1 月?TBD Gecko 34Gecko 34開発者向け
2.22015 年 6 月TBD Gecko 37Gecko 37開発者向け
- -

端末の仕様

- -

注意: 下記には、未発表だがコード名などは公表できる端末の情報も含まれます。Andreas Gal もしくは彼と同等の権限をもつ主体によって公表することを許可された場合を除き、それらの端末に関して、記載された以上の情報を追加してはいけません。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
名称バージョン解像度画面サイズ (インチ)CPUカメラ (Mpx)RAMROMストレージバッテリ (mAh)
-

Alcatel One Touch Fire

-

hamachi, buri

-
v1.0.1/v1.1 -

320 x 480
- PX=1

-
3.5Qualcomm Snapdragon S1 MSM7227A 1 GHz背面: 3.2256MB512MB/data: おそらく inari と同じ。仕様上 160MB の "エンドユーザメモリー"
- おそらく、内蔵の DeviceStorage なし、MicroSD カード (最大 32GB) が必要
1400
Alcatel One Touch Fire Ev1.3.0540 x 9604.5 -

Qualcomm Snapdragon 200
- MSM8210
- 1.2 GHz
- デュアルコア -

-
背面: 5512MB4GB 1700
-

ZTE Open / variants

-

ikura

-
v1.0.1 (出荷時)320 x 480
- PX=1
3.5Qualcomm Snapdragon S1 MSM7225A 800 MHz背面: 3.2256MB512MB -

/data: 152M
- 内蔵の DeviceStorage なし、MicroSD カードが必要

-
1200
-

LG Fireweb

-

leo

-
v1.1320 x 480
- PX=1
4Qualcomm Snapdragon S1 MSM7227A 1 GHz背面: 5512MB4GB -

/data: 1007.90M
- 内蔵 DeviceStorage: あり、サイズ不明。約 3.7G だが正確でない。(On an unhapy device /sys/devices/platform/msm_sdcc.3/mmc_host/mmc0/mmc0:0001/block/mmcblk0/block is 7733248, and then assuming a 512 byte block size, we get 3.7G)

-
1540
-

Geeksphone Keon

-

keon

-
-

v1.0.1 - nightly

-
320 x 480
- PX=1
3.5Qualcomm Snapdragon S1 7225AB 1 GHz背面: 3512MB4GB -

/data: 1.5G
- 内蔵 DeviceStorage: 1023.4M

-
1580
-

Geeksphone Peak

-

peak

-
v1.0.1 - nightly540 x 960
- PX=1.5
4.3Qualcomm Snapdragon S4 8225 1.2 GHz デュアルコア -

前面: 2
- 背面: 8

-
512MB4GB/data: 1.5G
- 内蔵 DeviceStorage: 1023.4M
1800
Geeksphone Revolutionv1.3pre (出荷時)540 x 960 PX=1.54.7Dual-core Intel® Atom™ processor Z2560 with up to 1.6GHz -

前面: 1.3 背面: 8

-
1GB4GB -

/data: 2G
- 内蔵 DeviceStorage: 2.5GB

-
2000
-

Nexus 4

-

nexus-4

-
v1.3 - nightly768 x 1280
- 720p
4.7 -

Qualcomm
- Snapdragon S4 Pro
- 1.5 GHz クアッドコア

-
背面: 82GB8 または 16GB一つの端末内にすべて搭載、外部 (MicroSD) ストレージなし。入手された Nexus 4 端末のモデルによって様々。2100
-

Foxconn InFocus

-

flatfish

-
1280 x 80010Allwinner A31, Cortex A7 クアッドコア 1.0 GHz -

前面: 2
- 背面: 5

-
2GB16GB 7000
-

some phone thing

-

fugu

-
v1.2f (branch) per320 x 480 256MB
-

Spreadtrum SC6821

-

tarako

-
v1.3 perHVGA
- 320 x 480
3.5Spreadtrum SC6821, Cortex A5 1GHz0.3 (背面のみ?)128MB (zram)2GB NAND flash (外部) + 1GB LPDDR1 (内蔵)32GB micro SD カード1100
-

VIA Vixen

-

community-driven customization of flatfish?

-
1024 x 6007Cortex-A9 デュアルコア 1.2 GHz -

前面: 0.3
背面: 2

-
1GB8GB
-

Flame

-

"リファレンス端末"

-
v1.3 -

FWVGA
- 854 × 480
- PX=1.5
-

-
4.5 capacitive touchQualcomm Snapdragon 200 MSM8210, 1.2GHz デュアルコアプロセッサ前面: 2
- 背面: 5
256MB~1GB (開発者が調整可能)8GB32GB micro SD カード (USB 2.0)1800
ZTE Open Cv1.3800 x 480 PX=1.54Qualcomm Snapdragon 200 MSM8210, 1.2GHz デュアルコアプロセッサ背面: 3512MB4GB/data: 1G1400
Symphony GoFox F15v1.4320 x 480
- PX=?
3.5Spreadtrum 1 GHz シングルコアプロセッサ -

前面: 0.3
- 背面: 3.2 with Flash

-
512MB512MB 1450
Intex Cloud Fxv1.3320 x 4803.5Spreadtrum 1 GHz
- 背面: 2.0 without Flash
128 MB256 MB -

Data: 2G

-

内部ストレージ: 46 MB (ユーザメモリー)

-

外部 - Micro SD カード: 4GB まで可能

-
1250
Spice Fire One (Mi-FX1)V 1.3320 x 4803.5Spreadtrum 1 GHz -

前面: VGA

-

背面: 1.3

-
128MB512MB -

Data: 2G

-

内部ストレージ: 67.9 MB (ユーザメモリー)

-

外部 - Micro SD カード: 4GB まで可能

-
1400
Alcatel OneTouch Fire C 4020Dv1.3320 x 4803.5Spreadtrum 1 GHz 128MB256MB -

Data: 2G

-

内部ストレージ: 65MB (ユーザメモリー)

-

がいぶ - Micro SD カード: 32GB まで可能

-
1000
Zen U105 Firev1.3320 x 4803.5Spreadtrum 1GHz -

前面: VGA

- 背面: 2
128MB256MB -

Data: 2G

-

外部 - Micro SD カード: 16GB まで可能

-
1200
Fx0v2.01280 x 7204.7Qualcomm Snapdragon S4 MSM8926 1.2GHz クアッドコア -

前面: 8

-

背面: 2.1

-
1.5GB16GBmicroSDXC (最大 64GB)2370
- -

凡例:

- - diff --git a/files/ja/archive/b2g_os/phone_guide/zte_open/index.html b/files/ja/archive/b2g_os/phone_guide/zte_open/index.html deleted file mode 100644 index 24e0bd67fa..0000000000 --- a/files/ja/archive/b2g_os/phone_guide/zte_open/index.html +++ /dev/null @@ -1,298 +0,0 @@ ---- -title: The Firefox OS ZTE OPEN -slug: Archive/B2G_OS/Phone_guide/ZTE_OPEN -tags: - - Firefox OS - - Gaia - - Gecko - - Phone - - zte -translation_of: Archive/B2G_OS/Phone_guide/ZTE_OPEN ---- -
-

MozillaはZTEと一緒にZTE OPENをつくりました。世界中の開発者とアーリーアダプターに向けた Firefox OS ベースのパワフルなデバイスです。テストや実験用のために、ロックはなくオープンです。

-
- -
-

: この操作法はZTE Opec C端末向けではありません ZTE Open C端末を持っている場合は代わりにZTE Open Cのページへ移動してください。

-
- -

デバイスの購入

- -

ZTE Open の販売は終了し、もう入手できません。ZTE Open Cを見てください。

- -

Firefox OS を更新する

- -

この章ではZTE OPEN端末上で Firefox OS を更新する方法を提供します。

- -

概要

- -

概して、 Firefox OS のビルド、更新、テストは、電話をUSBケーブルでコンピューターに接続し、ADB (Android Debugging Bridge)とFastbootを使って端末を結合してコマンドを発行することで完了します.すなわちADBとfastboootをAndroid Developer Toolkitからデスクトップ機にインストールする必要があるでしょう。ツールキット全体をインストールする必要はありません。ADBとfastbootは /platform-tools/ フォルダーに見つかります。

- -

次に、電話機で リモートデバッグを有効にします。

- -

Firefox OS 1.1

- -

2013年12月10日に、ZTEはZTE OPEN 用にアップグレードされた Firefox OS 1.1 をリリースしました。それまで発行済のビルドで問題が起こっていた結果、これはfastbootが有効になっています

- -

この観点から、バージョン1.2にしたい場合でも、最初に電話機をバージョン1.1に更新することがベストです。このためには、あなたの電話機に応じた(OPEN (American Standard) または OPEN (European Standard)) の1.1パッケージをダウンロードします。注意点として、OSのリビジョンに対応したバージョンをダウンロードします(つまり、V1.0からアップグレードする場合、、 "V1.1.0B02(for V1.0)"をダウンロードします。)。ZIPファイルの中にはアップグレード用の文書もあります。ファームウェアのZIP(ダウンロード済のZIP内)を、下記のように展開、コピーします。

- -
-

: SDパッケージのインストールにより、ユーザーデータは上書きされます。開始前にデータをバックアップするべきです。

-
- -

次に下記の手順に従います:

- -
    -
  1. 電話機の電源を切り、電池を外してmicroSDカードを取り外します。
  2. -
  3. microSDカードをデスクトップマシンに接続します。
  4. -
  5. US_DEV_FFOS_V1.1.0B04_UNFUS_SD.zipEU_DEV_FFOS_V1.1.0B04_UNFUS_SD.zip を(ダウンロード済のバージョンによります)microSDカードのルートディレクトリに移動します。zipを展開しないでください。
  6. -
  7. microSDカードをコンピューターから取り外し、電話機に戻します。
  8. -
  9. ボリュームアップキーと電源ボタンを同時に押します。電話機の左側の長いキーの上部が ボリュームアップです。正しく行うと、 Firefox OS のリカバリモードに入ります。(記: Firefox OS ロゴはリカバリモードに入る前に一瞬表示されます。長い間かかることもあります。)
  10. -
  11. ボリュームアップ/ダウンキーを使ってメニュー項目を動かし、“apply update from external storage.”を選びます。
  12. -
  13. 電源ボタンを押して選択を確認します。別の画面でmicroSDカード内のファイル一覧が表されます。
  14. -
  15. またボリュームアップ/ダウンキーを使ってファームウェアを選択します。これはUS_DEV_FFOS_V1.1.0B04_UNFUS_SD.zip または EU_DEV_FFOS_V1.1.0B04_UNFUS_SD.zip (ダウンロード済のバージョンによります)のいずれかです、電源ボタンを押して確認します。
  16. -
- -

すべてが上手く行ったら、Install from sdcard complete.”という一連のステータスメッセージが見えます。インストールが完了したら“reboot system now”を選択する必要があり、すると電話機が再起動し、最初に電源をオンにした時に見えた設定画面が見えるでしょう。

- -

Firefox OS 1.2

- -

2014年1月、ZTEは Firefox OS 1.2のベータバージョンをリリースしました(fastboot有効、rootアクセス有り)。これはベースラインとなるバージョン1.1とバージョン1.2のGeckoとGaiaを足したものでした。そして電話機のSDカードにビルドを置く必要はありません。

- -

上記で記述した1.1をインストール済みの状態でターミナルを開いて、接続できているかを下記コマンドでチェックします:

- -
adb devices -l
- -

レスポンスとして"roamer2    device usb:2-1.2"といったように端末を見ることができます。

- -

ZTEがセットアップしたDropboxアカウントから、適切なバージョンをダウンロードします(US versionUK version)。Windows ユーザーには特別な指示をダウンロード したり、新バージョンを簡単にインストールするアップグレードツール もあります。ただ下記のステップは 全てのOS (Linux, OS X, とWindows) で特別なツールがなくても動きます。

- -

ファイルを取得したら、内容を抜き出してコンソールを開きます。下記ステップは個人データを消去するため、最初に (バックアップ) を取得して下さい。次にファイルがある場所に移動し、コンソールのまま、下記コマンドをタイプします:

- -
adb reboot bootloader
- -

電話機が再起動した時、下記コマンドを実行します(Fastbootは再起動中にのみ作動します):

- -
sudo fastboot devices
- -

"< waiting for device >"と表示されたら、Ctrl-C を押して、"ROAMER2    fastboot"という反応が返ってくるのを待ちます。

- -

次に、再起動しているうちにすぐ下記コマンドを実行します:

- -
fastboot flash boot boot.img
-fastboot flash userdata userdata.img
-fastboot flash system system.img
-fastboot flash recovery recovery.img
-fastboot erase cache
-fastboot reboot
- -

(気が散っていて全てのコマンドを入力するまでに再起動してしまった場合、"adb reboot bootloader"から再開します。)

- -

全てがうまくいった場合、電話機がここで再起動します。ZTEのバージョン1.2は多くのテストアプリが含まれているのに気づくでしょう。希望によりそれらを削除できます。

- -
-

: Frédéric Harperによる Upgrading your ZTE Open to Firefox 1.1 or 1.2 (fastboot enabled) にも便利なインストールプロセスの明細があります。

-
- -
-

: ZTEのOpen用の1.2ビルドにはバグがあり、通知トレイが引き出せない/開きません。最新のエンジニアリング版Firefox OS 1.2を焼くことで解決できます。ADB をインストールして かつ remote debugging をオンにして、ターミナルで下記コマンドを実行します:
-
- git clone -b v1.2 https://github.com/mozilla-b2g/gaia.git gaia_v1.2
- cd gaia_v1.2
- make reset-gaia

-
- -

Firefox OS 1.3とそれ以降

- -

ZTEは現状、Movistar (TME)向けに発売された青いZTE Open用の Firefox OS 1.3 のみをリリースしています。サポートサイト(英語)直接ダウンロードしてパッケージを見つけられます。

- -
-

注記: コミュニティビルドは ここここに提供されています。

-
- -

For the ebay ZTE Open, ZTE haven't released builds for Firefox OS 1.3 and beyond. To get these on your ZTE open you'll have to manually build and install a new Firefox OS/B2G build on it (start at the build prerequisite instructions, and treat the ZTE like it is an Inari device, for the purposes of configuration). You can recover your phone if necessary, using the procedure cited in the I bricked my phone section.

- -

仕様

- -

You can find more of the device specifications listed on our Phone and device specs page.

- -

ネットワーク

- - - -
-

Note: 香港版の機種は tri-band 3Gネットワークもサポートしています
- HSDPA 850/1900/2100
- (US、CA:850/1900、アジア・AU:850/1900/2100、EU:900/2100)

-
- -

ハードウェア

- - - -

キャリア

- -
-

料金の情報は参考用で、正確ではないことがあります。公式の情報を得るにはリンク先をご参照ください。

-
- -

US

- -

AT&T

- - - -
AT&Tのプリペイドプランの例
- -

Prepaid GoPhone®, Smartphone Plans

- - - -

Aio

- - - -
Aioのプリペイドプランの例
- - - -

Good2GO

- - - -
Good2GOプリペイドプランの例
- - - -

Other AT&T MVNOs

- -

These carriers do not offer additional 3G data.

- - - -

T-Mobile

- - - -

カナダ

- -

US版のZTE Openは、カナダでもBell/TelusもしくはRogersのネットワークを使用したキャリアで使用できます。  UMTS規格を持つSasktelやMTSのような一部の地域キャリアでも使用できます。

- -

Public MobileなどのUMTSもしくはGSMを使用していないキャリアや、WIND Mobile、Mobilicity、Videotron、EastlinkなどのAWSバンドを使用したキャリアでは使用できません。

- -

メモリーカード

- -

ファイルシステム

- -

MicroSDを認識させるには、FAT32ファイルシステムでフォーマットされている必要があります。もしカードが新しいか、再フォーマットしていなければ、そのまま動作するはずです。

- -

デバイスリビジョン

- -

リビジョン01

- -

2013/9/27よりも前に製造された機体はfastbootが有効になっておらず、アップデートが必要です。ふつうこれはソフトウェアアップデートによって処理さるはずですが、数多くのユーザーからこの方法にかんするトラブルがレポートされたため、ZTEは初期型のデバイスでfastbootを有効にするSDカードのパッケージを作成しました。各機種のフラッシュイメージは以下にあります:

- - - -

zipファイルがDownloads下にあります。お使いのOSリビジョンにあったバージョンをダウンロードするよう注意して下さい(すなわち、V1.0からアップグレードする場合、"V1.1.0B02(for V1.0)"をダウンロードします)。ファイルをダウンロードし解凍したら、付属のPDFに記載された説明にしたがってお使いの機体に転送してください。

- -

関連するサポートフォーラムの質問:

- - - -

リビジョン02

- -

2013/9/27以降に製造された機体はデフォルトでfastbootが有効になっています。香港の機体もこれに含まれます。

- -
-

Note: もしお使いの機体のリビジョンを知りたい場合は、Settings > Device Information > Softwareを確認してください。もしこれが以下のバージョンナンバーよりも古い場合、fastbootを有効にするにはSDパッケージでアップデートする必要があります。

- - -
- -

サポート

- -

お使いの機体の fastbootが有効 となると、その上で新しい Firefox OS /ビルドやインストール、B2Gビルドができるようになります(まずビルド要件説明からお読みください。ConfigurationではZTEを Inari デバイスとして扱ってください)。また、もし必要であれば、動かなくなったときセクションの手順でリカバーしてください。

- -

もしカスタムビルドの転送中にシステム時刻に関するエラーが出た場合は、修正版のブートイメージが必要です。

- -

動かなくなったとき

- -

もし機体に修正をしている途中で“unresponsive”(無反応)となってしまったら、fastbootを使えば次のように簡単な手順でリカバーできます。

- -

まず、USBケーブルを抜き、そのあと30秒以内にバッテリー取り外してください。 バッテリーを再び挿入し、電源ボタンを押している数秒の間、音量アップボタンを押しておいてください。次に、再度USBケーブルに繋ぎ、以下のコマンドを上述のSDパッケージファイルのあるディレクトリでターミナルウィンドウから実行してください(これを行う前にSDパッケージにアップデートがないか確認すると良いでしょう)。

- -
fastboot flash recovery recovery.img
-fastboot flash boot boot.img
-fastboot flash userdata userdata.img
-fastboot flash system system.img
-fastboot reboot
-
- -

このプロセスで、機体がリカバーされます。もしうまくいってなさそうなときは、もう一度ためしてみてください。

- -

ヘッドフォンが動かない?

- -

中国の工場でデザインされたヘッドフォンジャックに、他ブランドのマイク内蔵ヘッドフォンと互換性の上で問題があるようです。アップル、サムスン、HTCなどのヘッドフォンを使用しようとすると、音声がミュートになるという問題があります。これを回避するには、3.5 mmのヘッドフォンアダプターを購入し、ピンを差し込んでください。より詳しい情報はバグ 812607を参照してください。

- -

その他サポート情報

- -

一部のお客様でfastbootを有効にするとFOTAアップデートが落ちる問題が発生していますが、これについてはまだ調査中です。わたしたちはあらゆるシナリオの検証するようZTEを支援しています。新しい情報が手に入り次第お届けします。

- -

もしZTEが誤ったアップデートファイルを提供し、運悪くFOTAアップデート中に機体がダメージを負ったら、リビジョン01の説明を参照し、適切なSDイメージを適用することで工場出荷時の状態にリストアすることができます。もしくは、あなたが購入したeBeyストアに機体を送付し新しいものと交換することができます。eBayストアのオーナーにeBay messageから直接問い合わせてください。

- -

参考

- -

Official Dev Phone page on Firefox Marketplace

- -

Draft User Manual [en-US] - PDF

diff --git a/files/ja/archive/b2g_os/phone_guide/zte_open_c/index.html b/files/ja/archive/b2g_os/phone_guide/zte_open_c/index.html deleted file mode 100644 index d38ce744c2..0000000000 --- a/files/ja/archive/b2g_os/phone_guide/zte_open_c/index.html +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: ZTE OPEN C -slug: Archive/B2G_OS/Phone_guide/ZTE_OPEN_C -translation_of: Archive/B2G_OS/Phone_guide/ZTE_OPEN_C ---- -
-

ZTE Open C はよりハイエンドなハードウェアを用いた Firefox OS 端末です。300 万画素のカメラや、4 インチの WVGA ディスプレイを採用し、Firefox OS 1.3 がインストールされています。この文書では端末の情報と、アップデート方法、トラブルシュートについて解説します。

-
-
-

Note: The instructions are not valid for the ZTE Open device. If you have a ZTE Open device you should go to our ZTE Open page instead.

-
-
-

Note: The upgrade tool that you need to unlock the phone (see below) is only available for Windows at this time. Don't purchase this phone if you don't have a Windows system and want to manually install your own builds of Firefox OS.

-
-

The ZTE Open C is the first phone with the latest update to Firefox OS, offering many new features including direct music player access from the lock screen or notifications bar and advanced Bluetooth sharing, allowing multiple files to be transferred simultaneously. Users can now navigate the phone quicker with smart folders which automatically arrange apps or app searches into categories, enhanced scrolling performance and faster system app (e.g. calendar, address book, camera) startup times.

-

購入方法

-

eBay にて 米ドル $99.99 で販売中。

- -
-

注意: 販売される ZTE Open C は各ストアで同一ではありません。特に日本国内で使用する場合は対応する 3G (WCDMA) の対応周波数帯の違いが重要で、WCDMA 2100 に対応するものでなければ国内のキャリアネットワークに接続することは出来ません。2014/07 現在 eBay US store のものは対応していませんのでご注意ください。また、この端末は技適など国内の認証は通過していないため、日本国内で使用には制限があります。

-
-
-

注意: The phones won’t come preinstalled with any network specific apps or services and are unlocked global variants targeted at early adopters.

-
-

機能と仕様

-

端末の機能と仕様のページを参照してください。

-

Firefox OS のアップグレード

-

ZTE のウエブサイトに公開されているイメージの利用してアップグレードするのが最も簡単です。 ZTE's Software support page へ行き、左の列から地域を選択し、中央の列で  Smart Phones を選びます。右の列から購入した地域にあわせて Open C(European Standard) もしくは Open C(American Standard) のどちらかを選びます。最後に Selected ボタンを押すと、ダウンロードページへ遷移します。

-

ご自身のビルドをお持ちの場合は、ZIP ファイル中の PDF ファイルにインストールする方法が解説されています。

-

マニュアルアップデート

-

Gecko や Gaia を手動でアップデートされる場合は、端末をアンロックし、root アクセスできるように変更する必要があります。comebuy.com で公開されている Open_C_upgrade_Tool を使うと端末はアンロックされ、fastboot が有効になり、ご自身でビルドしたコンポーネントを端末に送ることができます。

-
-

注意: 現在のところ、このツールは Windows でのみ動作します。

-
-

Gecko と Gaia のアップグレード

-

いったん fastboot が有効にれば、 ビルドした Gecko や Gaia の載った 新しく Firefox OS/B2G をインストールできます。

-
    -
  1. Start at the build prerequisite instructions, and treat the Open C like it is a Flame device for the purposes of configuration: this is because the Flame and Open C are both based on the Android Jellybean basesystem.
  2. -
  3. During the configuration step, you need to reference a custom manifest file for the Open C. Download the attachment on this bug and save it somewhere easily referenceable on your local drive, as openc.xml.
  4. -
  5. Clean up the B2G directory, removing the unneeded directories:
    -
    rm -rf objdir-gecko/ out/ backup-flame/
    -
  6. -
  7. Now configure Firefox OS with the following command: -
    ./config.sh flame /PATH/TO/openc.xml
    -
  8. -
  9. You can then build the Gecko component and Flash it to your phone using the following: -
    ./build.sh gecko
    -./flash.sh gecko
    -
  10. -
  11. You should now upgrade Gaia as well, so the upgraded version of Gecko works with the version of Gaia on the device: -
    cd gaia
    -make reset-gaia
    -
  12. -
-
-

Warning: Trying to flash a full Flame image onto the device would brick the phone, so is not recommended.

-
-

Gaia のアップグレード

-

To update Gaia only, leaving Gecko alone, you need to fork and clone the Gaia repo from Github, then Flash it onto your device.

-
    -
  1. Make sure you have ADB installed.
  2. -
  3. Go to https://github.com/mozilla-b2g/gaia, then click the "fork" button in top right corner to fork to your own repository.
  4. -
  5. Clone the code from your forked repository on your dekstop/laptop by executing the following on your Terminal: -
    git clone https://github.com/your-github-username/gaia.git
    -
  6. -
  7. cd into the resulting directory.
  8. -
  9. On your phone, enable remote debugging (choose the ADB and Devtools option).
  10. -
  11. Now connect your phone to your computer via USB; check that it is recognised by entering adb devices into your terminal.
  12. -
  13. Run the following command to reboot your phone and update it with the new Gaia source code: -
    make reset-gaia
    -
  14. -
-

起動しなくなった場合

-

スマートフォンが起動しなくなった場合、ZTE の Web サイトで公開されているオフィシャルビルドを手順に従って SD Card 経由で端末の書き換えを行うことで復旧できます:

- -

Also reference this support entry for more information.

diff --git a/files/ja/archive/b2g_os/porting/index.html b/files/ja/archive/b2g_os/porting/index.html deleted file mode 100644 index 3f8c40148a..0000000000 --- a/files/ja/archive/b2g_os/porting/index.html +++ /dev/null @@ -1,246 +0,0 @@ ---- -title: B2G OSを移植する -slug: Archive/B2G_OS/Porting -tags: - - B2G - - B2GOS - - Mobile -translation_of: Archive/B2G_OS/Porting_B2G_OS/basics ---- -

- -
-

B2G OS はAndroidから得られるカーネルを使用し、Geckoに基づいたユーザインターフェイスを最上位に持ちます。この記事には新しい端末にOSをポーティング(移植)する方法の基本的なガイドを載せます。

-
- -

このガイドではすでにAndroid端末が動いている新しい端末にポーティングすることを前提とします。そうでない端末にはもっと複雑な仕事になります。

- -
-

注記: 移植に関するヘルプは、IRCチャンネルの #fxos と Mozilla Discourseで見つけられます。

-
- -

ビルドシステムのセットアップ

- -

最初のステップはビルドシステムを設定することです。B2G OS ビルドの必要条件のガイドにならうことができます。

- -

オリジナルのAndroidシステムをローカルにバックアップする

- -

次に、B2Gのテストビルドを使ってAndroid 端末を調理する前に、端末をバックアップするべきです。それに加えて、ビルドとインストール処理にちょっとした内容が必要です。端末id名を選ぶ時、 '-'(ハイフン) の代わりに '_'(アンダースコア) を使うのをお勧めします。その背景の根拠は、 バグ 1243349 を見てください。

- -
mkdir my_device_backup
-cd my_device_backup
-adb pull /system system
- -

B2Gリポジトリをクローンする

- -

最初の手順でB2Gリポジトリをクローンし、マニフェストのリポジトリも同様にします。

- -
git clone https://github.com/mozilla-b2g/B2G.git
-git clone https://github.com/mozilla-b2g/b2g-manifest.git
- -

config.shに新しい端末を追加する

- -

次の手順では、B2G リポジトリ内の config.sh に新しい端末を追加します;つまりすでに存在するファイルをテンプレートとして使うことができます。これは基本的にビルドするための正しいファイルを取得する指示を提供することにもなります。

- -

新しい端末用のマニフェストを作成する

- -

今度は新しい端末向けのマニフェストファイルを追加する必要があります。すでにあるマニフェストをテンプレートとして参考にします。hamachi のマニフェストをリファレンスとして使えます。一旦終えたら、ローカルの b2g-manifest リポジトリに、マニフェストファイルを追加・コミットしておきます:

- -
git add my-new-device.xml
-git commit
-
- -

次に、config.sh ファイルが、公式リポジトリの代わりにローカルの b2g-manifest リポジトリを使うようにします。このためには、config.sh ファイル内の GITREPO と BRANCH 変数の値を、ローカルのリポジトリの好きなブランチに変更します。例えば:

- -
GITREPO=${GITREPO:-"file:///home/yourname/b2g-manifest"}
-BRANCH=${BRANCH:-master}
- -

新しい端末用のコンフィギュレーションツリーを作成する

- -

新しい端末用のコンフィギュレーションツリーを作成します。これは device/<manufacturer>/<device_id>にあります。このツリーは少なくとも、以下を含むべきです:

- - - -

この内容は端末ごとに大変異なっており、特に、BoardConfig.mk と extract-files.sh は目立って異なる可能性があります。この部分はハック、テスト、デバッグを行って、どのバイナリブロブを引き出すべきかを理解していく必要があります。そこに何が入っているべきかの良い考えを得るには、hamachi端末用の設定を見てみましょう。新端末用に作成したマニフェストから、自身の設定へ正しく参照させることを忘れないでください。

- -
-

記: あなたの端末用の CyanogenMod がすでにある場合、その情報によってポーティング速度は上がります。XDA Forum (英語)も議論したり、リソースを探すのに良い場所です。

-
- -

boot.imgをリビルドする

- -

すべてを完了してしまってから、ブートイメージをリビルドする必要があります。通常はカーネル自身は不要ですが、init.rc への変更を拾うことになります。

- -

init.rcを変更する

- -

init.rc は B2G から提供されるものではなく; 代わりに端末から抜き出すものです。

- -

修正が必要となる主な箇所は:

- -

init.b2g.rcをインポートする

- -

init.b2g.rcをインポートするため、下記の行を追加します:

- -
on early-init
-    start ueventd
-    import /init.b2g.rc
- -

パーミッションを修正する

- -

/system/b2g/b2g/system/b2g/updater/system/b2g/plugin-container ファイルのパーミッションを訂正します。つまり、これは ファイルシステムを read/write とマウントする行の後に行います:

- -
chmod 0755 /system/b2g/b2g
-chmod 0755 /system/b2g/updater
-chmod 0755 /system/b2g/plugin-container
- -

ビルドシステムによって提供される init.rc を使う代わりに、新しい端末から得た init.rc を修正したい場合もあるでしょう。そうであるなら、BoardConfig.mk 内の TARGET_PROVIDES_INIT_RC をセットし忘れないでおく必要があります。

- -

事前にビルドされたカーネル vs. ソースからカーネルをビルドする

- -

事前ビルドされたカーネルを使うことも、ソースからカーネルをビルドすることも可能です。ソースからカーネルをビルドするには、AndroidKernel.mk とカーネル設定とを、コンフィギュレーションツリーに追加します。

- -

古いビルドシステム上の maguro は、ソースからカーネルをビルドする例です。

- -

既存のブートイメージを引き出し、修正する

- -

電話機のブートイメージを修復するのに、/dev/mtd/mtd1 または /dev/mtd/mtd2 端末の内容をダンプする方法が可能です。生成されるイメージファイルは容易に復元できます:

- -
adb shell 'cat /dev/mtd/mtd1 > /sdcard/boot.img'
-adb pull /sdcard/boot.img
-
- -

一旦ブートイメージファイルを入手したらunmkbootimgのようなヘルパーツールでアンパックできます。このツールはカーネルイメージ (zImage) とRAMディスク (initramfs.cpio.gz) の両方を展開し、オリジナルと同一のパラメータでイメージをリビルドするコマンドを出力します。例えば:

- -
$ unmkbootimg boot.img
-Kernel size 3872576
-Kernel address 0x208000
-Ramdisk size 265102
-Ramdisk address 0x1500000
-Secondary size 0
-Secondary address 0x1100000
-Kernel tags address 0x200100
-Flash page size 2048
-Board name is ""
-Command line "androidboot.hardware=aphone"
-Extracting kernel to file zImage ...
-Extracting root filesystem to file initramfs.cpio.gz ...
-All done.
----------------
-To recompile this image, use:
-  mkbootimg --kernel zImage --ramdisk initramfs.cpio.gz --base 0x200000 --cmdline 'androidboot.hardware=aphone' -o new_boot.img
----------------
-
- -

RAMディスクのファイルを修正するには、出力ディレクトリを作成してそこへ展開します:

- -
mkdir initramfs_dir
-cd initramfs_dir
-gunzip -c ../initramfs.cpio.gz | cpio -i
-
- -

必要な変更 (例えば init.rc の修正)を完了して、mkbootfs を使ってRAMディスクを再パックします。他のB2Gホストツールによってビルドされているのと同じバージョンを使っていることを確認します。:

- -
/path/to/your/B2G/out/host/linux-x86/bin/mkbootfs . | gzip > ../newinitramfs.cpio.gz
-
- -

最後に、最上位ディレクトリに戻り、 mkbootimg を使ってブートイメージを再パックします。同様に他のB2Gホストツールによってビルドされているのと同じバージョンを使っていることを確認します。:

- -
/path/to/your/B2G/out/host/linux-x86/bin/mkbootimg --kernel zImage --ramdisk newinitramfs.cpio.gz --base 0x200000 --cmdline 'androidboot.hardware=aphone' -o newboot.img
-
- -

ここで新しいブートイメージを、 out/target/product/$device/boot.img ($deviceは端末名)の下にコピーすると、 flash.sh を実行した時に自動的に書き込まれます。あるいは手動で下記のコマンドを用いて書き込むこともできます:

- -
adb reboot bootloader
-fastboot flash boot newboot.img
-fastboot reboot
-
- -

flash.shに新しい端末を追加する

- -

新しい端末を flash.sh に追加します。すなわち、どうやってやるかという詳細は、新しい端末に書き込むのにどのツールが必要となるかに依存します。

- -

新しい端末をConfigure, build, and flashする(設定し、ビルドし、焼く)

- -

今や新しい端末のビルド、書き込みを試すことができます:

- -
ANDROIDFS_DIR=my_device_backup ./config.sh <device_id> '../b2g-manifest/default.xml'
-./build.sh
-./flash.sh
- -

テストとデバッグ

- -

詳細情報をここに追加する必要がある; 実際の所、この記事全体が何らかの助けとなりうる。

- -

See also

- - - -

 

diff --git a/files/ja/archive/b2g_os/porting_b2g_os/index.html b/files/ja/archive/b2g_os/porting_b2g_os/index.html deleted file mode 100644 index fb23f2d06c..0000000000 --- a/files/ja/archive/b2g_os/porting_b2g_os/index.html +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: B2G OS の移植 -slug: Archive/B2G_OS/Porting_B2G_OS -tags: - - B2G OS - - Firefox OS - - porting -translation_of: Archive/B2G_OS/Porting_B2G_OS ---- -

このページは B2G OS の移植に利用できるリソースを並べています。

- -
-
ポーティングの基本
-
B2G OS を新しい端末に移植する方法についての基本情報。
-
CyanogenMod への移植
-
CyanogenMod を使用して B2G を移植する方法を説明します。
-
diff --git a/files/ja/archive/b2g_os/preparing_for_your_first_b2g_build/index.html b/files/ja/archive/b2g_os/preparing_for_your_first_b2g_build/index.html deleted file mode 100644 index 5d5c9c92c7..0000000000 --- a/files/ja/archive/b2g_os/preparing_for_your_first_b2g_build/index.html +++ /dev/null @@ -1,273 +0,0 @@ ---- -title: 初回 B2G ビルドの準備 -slug: Archive/B2G_OS/Preparing_for_your_first_B2G_build -tags: - - B2G OS - - Build documentation - - building b2g os -translation_of: Archive/B2G_OS/Preparing_for_your_first_B2G_build ---- -

- -
-

B2G をビルド可能にするには、リポジトリの複製とビルドツリーの構成(configure)が必要です。この記事ではその方法を説明します。

-
- -

インターネットの接続によっては、構成作業では、B2G OSのビルドに必要となるファイルをダウンロードするのに何時間もかかる事があります。待つことは楽しくないので、このページを通して読んで構成スクリプトを開始した後に、B2G OS simulatorをセットアップして試してみることや、アプリ開発者向け文書(アプリの設計、作成が含まれています)を読んで慣れたり、以降のビルド手順に慣れておくことを検討してください。

- -
-

OS X を使って Flame 用の B2G OS をビルドする場合、OS Xで flame 用の B2G OS をビルドする のMDNページを見て下さい。

-
- -

B2G リポジトリの複製

- -

B2G OSをビルドするのにいくつか便利なツールがあり、全てが1つのリポジトリに入っています。最初のステップはgitでこれらのツールを作業ディレクトリにダウンロードする事です:

- -
git clone git://github.com/mozilla-b2g/B2G.git && cd B2G
-
- - - -
$ hg clone https://hg.mozilla.org/projects/pine/ pine
- -

If you run in to a UnicodeEncodeError: ascii codec error here try to set your git user with

- -
 vim ~/.gitconfig
-
- -

(type "i" for inserting) and this lines:

- -
$ [user]
-$        name = yourname
-$        email = youremailaddress@url.tld
-$ [color]
-$        ui = auto
- -

hit the "esc" button and quit with ":wq"

- - - -
$ ./config.sh <device>
- -

ie device = flame-kk or aries

- - - -
$ vim .repo/manifests/base.xml
-<project name="gaia" path="gaia" remote="mozillaorg" revision="kanikani" />
-$ cd gaia
-$ git reset --hard mozillaorg/kanikani
-$ cd ..
- - - -
$ vim .userconfig
- -
export B2G_DIR=${B2G_DIR:-$(cd $(dirname $0); pwd)}
-echo "B2G_DIR = ${B2G_DIR}"
-export GECKO_PATH=${B2G_DIR}/pine
-echo "GECKO_PATH = ${GECKO_PATH}"
- - - -
$ ./build.sh
-$ ./flash.sh
- -

Notes:

- - - -
Note: This is not the full list of build targets, see config.sh or refer to the Compatible Devices page.
- -

If your build target isn't listed, you should stop right now and help port B2G OS!

- -

端末に合わせて B2G を構成する

- -
重要: Android 4.3以降 (Jelly Bean, KitKat, Lollipop)とそれをべースにしたプラットフォームが動作している端末のみが (今のFirefox OS端末では) サポート対象です。あなたのスマートフォンが本当にこれらのバージョンで動作しているか確認してください。そうでなければ、次のステップはおそらく失敗するでしょう。より詳しくは 互換性のある端末 ページを見てください。
- -

エミュレータ用ビルドを構築する

- -

もし実機でなくエミュレータをビルドするのであれば、ARM デバイスエミュレータを取得する “emulator*”、もしくは x86 エミュレータをビルドする “emulator-x86*″ のいずれかを指定できます。後者はより速いですが、実際のモバイル端末ほど正確には表示せず、よくサポートされていません。つまり x86エミュレータ を使うのは勧められません。

- -

ARM のJellybeanエミュレータをビルドするには、下記コマンドを使用します :

- -
./config.sh emulator-jb
-
- -

エミュレータ用ビルドは64-bit Linuxで失敗がちなのに気をつけて下さい。

- -

プロプライエタリ Blob

- -

端末に B2G OS をインストールする時、 プロプライエタリBlobを一通り含める必要があるでしょう。これらは初回ビルド実行時に端末から抜き出されますが、将来参照できるようにフル・バックアップを取ることもお勧めします。いったん B2G OS がインストールされると、これらをリカバーする方法はありません!

- -

開発者設定で、端末の リモートデバッグ が有効になっているのを確かめます。adb devices コマンドで端末が見えるのを確認すると、これ似たものが見えるでしょう:

- -
$ adb devices
-List of devices attached
-ABCXXXXXXX       device
- -

端末がリストにない場合、UDEV ルールを確認します。

- -
-

Note: If you have permission issues, check that your screen is unlocked and that you have authorized access to your phone. You see a message on your device for that. If the issue persists used adb root and adb remount.

-
- -

adb pull コマンドで、電話機のパーティションをバックアップします:

- -
adb pull /system <backup target dir>/system
- -

電話機によりますが、/data/vendor ディレクトリを取得しないといけない事もあります:

- -
adb pull /data <backup target dir>/data
-adb pull /vendor <backup target dir>/vendor
- -

pull コマンドが "insufficient permission" メッセージと共に失敗する場合、次を試します:

- - - -

次のステップへ

- -

この時点で、B2G OSのビルドの準備ができているでしょう。

- -

高度な構成オプション

- -

システムバックアップを用いてビルドを構成する

- -

もしあなたのスマートフォンが既に Android ではなく、B2G ツリーにバイナリ BLOB がないけど、賢明にも/system パーティションのバックアップを取っていたのであれば、こんな感じにバックアップを元にビルドを実行することができます :

- -
ANDROIDFS_DIR=<systemディレクトリの親ディレクトリの絶対パス> ./config.sh <target>
-
- -

ビルドシステムはデフォルトで backup-<target>/system といった既存のバックアップフォルダを調べます。つまりファイルをこの場所に置けば、ディレクトリを指定する必要はありません。

- -

カスタム Gecko を対象とするビルド

- -

(マニフェストで指定された)デフォルト使用の Gecko とは異なるバージョンをベースにして、Boot to Gecko をビルドしたい、もしくはする必要がある場合があるかもしれません。それを可能にするには .userconfig ファイルを編集してください。例として、mozilla-central を対象にしてビルドしたい場合であれば :

- -
GECKO_PATH=/path/to/mozilla-central
-GECKO_OBJDIR=/path/to/mozilla-central/objdir-gonk
-
- -
-

: Mac OS X でカスタム Gecko を対象とするビルドを行う場合、mozilla-central ディレクトリは、必ず、大文字と小文字を区別するファイルシステムに作成してください。

-
- -

注意するのは、リポジトリをプルする前 (つまり上記のconfig.shの前) に行っても、後の時点のどちらでもよいです。複数ビルドを保持することもできます (デバッグオン/オフなど) 。その方法は複数の.userconfigファイル(異なるセッティングで--もちろん、それぞれ別のOBJDIRでないといけない) を用意して .userconfig をその時々のビルドしたいコンフィグへのシンボリックリンクに貼るようにします。

- -

詳細情報は、Gecko ソースツリーを変更するを読んでください。

- -

ブランチをビルドする

- -

デフォルトブランチ以外をビルドしたい場合 (記: デフォルトブランチは"master"でないかもしれません!)、config.shの頭にブランチ名をつけるだけです、このように:

- -
BRANCH=ブランチ名 ./config.sh <端末>
- -

ブランチ名はとても論理的で、大まかに製品/バージョンに従っており、v1-train, v1.0.0, v1.0.1, v1.1, v1.1.0hd, v1.2, v1.3, v1.4, v2.0  などと将来にわたって続きます。例として、ARMエミュレータ用のB2G B2G 1.2では、この様に入力します

- -
BRANCH=v1.2 ./config.sh emulator
- -

config.sh をすでに実行済みなら、B2G/.repo/manifests に移動し、"git branch -a" を実行することで (それまでは追加されていません)、ブランチ名を見ることができます。ブランチ名は行の最終トークンです。例えば"v1-train"や"master":

- -
  remotes/origin/master
-  remotes/origin/v1-train
-  remotes/origin/v1.0.0
-  remotes/origin/v1.0.1
- -

さらにカスタマイズするには.userconfigのカスタマイズを見て下さい。

- -

B2G ツリーを新しいマシンにコピーする

- -

もしB2Gツリーを整備済みで新しいコンピュータを入手した場合(いいな!)、あるコンピュータから別のコンピュータに単純に移行するだけなら、全てを整備するのに比べ、非常に楽に実行できるようになりました。そうするには、古いコンピュータのドライブを新しいコンピュータにマウントして、こうします :

- -
rsync -a source/ dest/
-
- -

source はソースツリーのフルパスで(末尾のスラッシュを含みます)、dest は移動先です(末尾のスラッシュは同様に重要です!)。

- -
-

: もし他のプラットフォームのコンピュータからファイルをコピーした場合は、ビルドプロセスを開始する前に、'./build.sh clean' を確実に実行してください。実行しなかった場合、コンパイル時に問題が発生する可能性があります。

-
- -

これを実行したら、この文書の残りの全てをスキップして、このままビルドに移動することができます。

- -

B2Gツリーを更新する

- -

リポジトリがより新しいバージョンの B2G に更新された時、B2Gツリーを更新したくなるでしょう。これを行うには、下記コマンドを実行します:

- -
git fetch origin
-git checkout origin/master
- -

これらが正しく動いたかをチェックするには、こう実行し:

- -
git show HEAD
- -

そして表示されたコミットが https://github.com/mozilla-b2g/B2G/commits/master の最新のコミットと一致するかをチェックします。

diff --git a/files/ja/archive/b2g_os/quickstart/index.html b/files/ja/archive/b2g_os/quickstart/index.html deleted file mode 100644 index 7688a15ac5..0000000000 --- a/files/ja/archive/b2g_os/quickstart/index.html +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: 開発 -slug: Archive/B2G_OS/Quickstart -tags: - - Apps - - Quickstart -translation_of: Archive/B2G_OS/Quickstart ---- -
-

Open Web Apps のコーディングに関するクイックスタート情報です。

-
-
-
- Open Web Apps 入門
-
- Open Web Apps とは? 通常の Web ページとどう違うのでしょうか? なぜそれが重要なのでしょうか? この記事はそうした質問などに答えることを目的としています。
-
- 初めの一歩
-
- この記事は、インストール可能な Open Web Apps の作成に求められる基本的段階と、通常の Web 開発をベースとした付加的知識について一通りの情報を提供します。
-
- Firefox OS 入門
-
- Open Web Apps を基盤とした Mozilla の新しいモバイルプラットフォーム、Firefox OS の紹介です。
-
- マニフェスト入門
-
- マニフェスト、アプリのホスティング、配信元、その他関連トピックに関して考えられるあらゆる質問への回答をまとめました。
-
- Web 開発者のアプリ開発
-
- あなたが Web 開発者なら、これまで開発してきたサイトと Open Web Apps がどう違うのか疑問に思うことでしょう。この記事ではそれについて説明します。
-
- モバイル開発者のアプリ開発
-
- あなたがネイティブモバイルアプリケーション開発者なら、Open Web Apps がどんなメリットをもたらすのか、これまで開発してきたアプリとどう違うのか、疑問に思うことでしょう。この記事ではそれについて説明します。
-
- アプリ機能の開発
-
- このページは、あなたがアプリに組み込みたいと思われる様々な機能の種類について、関連情報へのリンクとともに解説します。
-
- 決済
-
- ユーザに有料で Open Web Apps をインストールしてもらうための機能を開発するには? ここでそのすべてを解説します。
-
- アプリツール
-
- このセクションの最後では、素晴らしい Open Web Apps の開発に役立つツールに関する詳しい情報へのリンクをいくつ家庭今日します。
-
diff --git a/files/ja/archive/b2g_os/quickstart/open_web_apps_and_web_standards/index.html b/files/ja/archive/b2g_os/quickstart/open_web_apps_and_web_standards/index.html deleted file mode 100644 index 34b809813b..0000000000 --- a/files/ja/archive/b2g_os/quickstart/open_web_apps_and_web_standards/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: Open Web Apps と Web 標準 -slug: Archive/B2G_OS/Quickstart/Open_Web_apps_and_Web_standards -tags: - - Apps -translation_of: Archive/B2G_OS/Quickstart/Intro_to_open_web_apps ---- -
-

: クイックスタートの項目は、新しい、より集中的なクイックスタート記事 として更新され、従来のクイックスタート記事をすべて置き換えるものとなりました。この記事がより有益な情報源となり、古い一連の記事よりもより素早い学習体験を提供することを期待しています。

-
- -

- -
-

この記事は、開発者、プロジェクトマネージャ、その他アプリの開発や配布に関わる役割を担いつつ、Open Web Apps についてより詳しく学びたいというすべての人にとって最適なスタート地点となることを意図して書かれています。Open Web Apps とその背景にある哲学の、簡単で高次元な概要を提供します。

-
- -

Open Web Apps は一般的な Web サイトや Web ページと本質的な違いはありません。いずれも HTML、CSS、JavaScript といった標準的でオープンな Web 技術を用いて開発され、Web ブラウザ経由でアクセスできます。主な違いは、端末にインストールしてオフラインでも動作させられる機能、そして、カメラ、アドレス帳、その他端末機能との相互作用を可能にする高度な API にアクセス可能であること、といった点が上げられるでしょう。さらに、それらはできる限りオープンな技術に基づいて開発されています。プラットフォーム間の技術実装に差異がある場合、各プラットフォーム向けの機能判別と適切なコード、機能が利用不可能な場合の巧みな対応策の組み合わせを通じて、どちらにも対応するよう努力が行われるべきです。

- -

Open Web Apps の利点

- -

Open Web Apps の利点を少し詳しく見ていきましょう。

- - - -

以下の動画も Open Web Apps の一般的な利点と Firefox OS プラットフォーム向けの開発について取り上げています。

- -

- -

Web はプラットフォーム

- -

Firefox OS のようなプラットフォームにインストールされた形での Open Web App は単なるブックマークではなく、システムの正式な一部となっています。Open Web Apps はそうした大きな将来性を持っています。私たちはそれを逃すべきではない機会と捉えており、さもなければ Web は再度断片化してしまうかもしれないとも考えています。それを念頭に置けば、Open Web Apps (略して OWA) が標準化と Web の一部になることを意図したものであることが明らかでしょう。OWA は、もし成功すれば、最終的にすべてのブラウザ、OS、端末で動作するはずです。

- -

私たち Mozilla は、オープン Web に完全に支えられたこのアプリプラットフォームの開発に尽力しています。それは「Mozilla プラットフォーム」あるいは「Firefox プラットフォーム」となることを意図したものではありません。Web こそがプラットフォームなのです。私たちは一連のオープンな API と実装を開発し、ベンダーロックインなしに移植性のあるアプリがどう Web 上に存在できるかを示そうとしています。Facebook や Google Chrome など他の団体も Web に支えられたアプリプラットフォームに取り組んでいます。Facebook アプリ は Facebook に組み込まれることを意図したものであり、また Chrome アプリ は Chrome OS 端末や Google サーバ向けに設計されています。Chrome アプリは Open Web Apps と最もよく似ています。アプリ標準は進化しており、当然のことながら多くの同じビジョンを共有していることから、私たちは Google Chrome チームと協力を続けていきます。すべての Web ベースのアプリプラットフォームには非常に大きな集結の可能性があり、私たちはあらゆるベンダーに対して適切な Open Web App API を開発する Mozilla の取り組みへの協力を呼びかけています。

- -

今のところ Open Web Apps を使うには Mozilla Firefox ベースのエンジン (「Web ランタイム」) が必要ですが、 これが常態化することは意図したものではありません。Open Web Apps プロジェクトの大部分はまだ計画段階であり、すべての機能をすべてのブラウザへ一度に実装することは不可能です。Open Web Apps の大部分は既に標準化されているものの、その他大部分はまだ流動的です。私たちは、Open Web Apps がすべての主要ブラウザで利用可能な標準機能となることを意図し望んでいます。

- -

そのため、MDN 内の Open Web Apps に関する記事を読むときは、今のところその情報の多くは Firefox 限定であるものの、将来的にうまくいけばすべてのブラウザ向けに Open Web Apps を開発できるようになるということを念頭に置いてください。

- -

Web 標準

- -

OWA の技術はひとつのパーツではなく、様々な技術を集めた傘のようなもので、その一部はまだ初期段階です。現時点で、OWA の一部パーツは標準化されています (HTML5、CSS、JavaScript、IndexedDB など)。その他のパーツはまだ標準化されておらず、そのため Mozilla の実装は Firefox やその他 Mozilla 技術固有のものとなっています。Mozilla のミッションは共有であり、またすべての人を力づけることであるため、この状況は一時的なものに過ぎません。私たちが、OWA のパーツがまだ標準化されていないことを OWA 関連の記事で明記しているのはそのためです。

- -

なお、Mozilla が使用していない OWA 関連の提案や潜在的標準も一部存在する可能性があります。

- -

今後標準となる技術

- -

様々な Web プラットフォーム上でまだ標準化されておらず、現時点でまだ Firefox 固有となっているパーツは以下の通りです。

- - - -

Marketplace

- -

一度購入すればどこでも動く

- -

Mozilla は当初から、ユーザが一度購入すればすべての HTML5 対応端末で実行できるようなアプリシステムを開発してきました。Mozilla はまもなく 初の Firefox OS 搭載スマートフォンを展開 する予定ですが、それはアプリを実行できる端末のひとつに過ぎません。Firefox Marketplace からアプリを購入した場合、システムは端末上にレシートをインストールします。レシート は、Marketplace の公開鍵とその検証サービス URL にリンクしたメタデータを含む JSON Web トークンです。アプリは起動時にレシートを検証できますが、端末上のレシートは Firefox Marketplace に縛られていないという点に注意してください。レシートは単に暗号化技術によって検証可能な購入証明なのです。レシートの仕様に従えば誰でも Open Web Apps を販売できます。アプリを購入する際、それは Open Web Apps システムに対応しているあらゆる端末間で持ち運び可能であることが想定されています

- -

Mozilla はあらゆる HTML5 対応端末で Open Web Apps を実行するのに必要なインフラを開発しています。Android 版 Firefox ではアプリをインストールして実行できます (Nightly ビルド で今すぐ試せます)。インストールしたアプリのアイコンは、通常の Android アプリのようにホーム画面へ追加されます。Firefox を使えばアプリを Windows、Mac、Linux のデスクトップ上でも実行できます (今のところ Nightly ビルド のみ対応)。現時点では Firefox の特定バージョンが必要ですが、Open Web Apps システムは最終的にすべての主要ブラウザによって一連の標準技術として対応されることを想定したものです。Mozilla は当初からすべての主要な HTML5 対応ブラウザをデモの実行環境に含めてきました。このホストされている JavaScript シム を見てみれば、Firefox 以外のブラウザでアプリプラットフォームに対応する方法の考え方が分かるでしょう。

- -

将来的には Open Web Apps システムは端末を越えた インストール済みアプリの同期 に対応する予定です。レシートは移動可能であることから、必要なら自分自身でそれを同期することもできます。念のために言えば、無料の Open Web Apps は通常の Web サイトと変わらないため、いつでもあらゆるブラウザで実行できます。ただし、アプリによっては、すべてのプラットフォームで実装されていない新しい モバイル固有の WebAPI を使っている可能性もあります。

- -

以下の動画は、オープンなマーケットプレースと、Web を通じたオープンなアプリ発見アプローチの利点について、その概要を分かりやすく解説しています。

- -

- -

WebPayment API

- -

アプリの商取引

- -

iOS や Android といったモバイルアプリプラットフォームが成功した背景のひとつには、それらがモバイル課金を通じて新しいビジネスモデルを非常に簡単に試せるようにしたという点が挙げられるでしょう。そうしたモデルはまだ成長を続けていますが、商取引は、現時点ではおそらく、デスクトップ Web 上ではぎこちなく、一方モバイル上ではより自然なものに見えるでしょう。具体的には、何かを電話料金と併せて課金することは、既にそれに電話からアクセスしている場合、非常に便利です。Firefox OS の展開に伴い、アプリエコシステムは WebPayment API を通じたアプリの購入とアプリ内課金に対応します。商取引への対応はアプリプラットフォームの成長に不可欠です。なお、 提案されている課金 API の使用は完全に任意です。Mozilla はアプリが独自のアプリ内課金システムを使うことを妨げるようなことはしません。

- -

関連記事

- - diff --git "a/files/ja/archive/b2g_os/quickstart/\345\210\235\343\202\201\343\201\246\343\201\256\343\202\242\343\203\227\343\203\252/index.html" "b/files/ja/archive/b2g_os/quickstart/\345\210\235\343\202\201\343\201\246\343\201\256\343\202\242\343\203\227\343\203\252/index.html" deleted file mode 100644 index 3a873f736f..0000000000 --- "a/files/ja/archive/b2g_os/quickstart/\345\210\235\343\202\201\343\201\246\343\201\256\343\202\242\343\203\227\343\203\252/index.html" +++ /dev/null @@ -1,268 +0,0 @@ ---- -title: 初めてのアプリ -slug: Archive/B2G_OS/Quickstart/初めてのアプリ -tags: - - Apps - - Guide -translation_of: Archive/B2G_OS/Quickstart/Your_first_app ---- -
-

注記: Quickstart セクションは新しく、Firefox OS アプリの基礎 にフォーカスしたものに更新されていて、以前の Quickstart 記事とは置き換わっています。古い記事よりも使いやすく学びやすくなったドキュメントになっているでしょう。

-
- -
-
-

Open Web Apps は、Web 開発者が何年も望んでいた HTML / CSS / JavaScript だけで作られたインストール可能なアプリに対応しているクロスプラットフォーム (Open Web Apps のための Firefox OS などの) を提供します。このガイドは、素晴らしいアプリを作成するために基本アーキテクチャですぐに動作させる方法とビルド手順を紹介します。

-
- -

このガイドに沿って作業したい場合、クイックスタートアプリテンプレート をダウンロードしてください。これに含まれているものについての詳細は、アプリテンプレート ガイドをご覧ください。

- -

アプリ構造

- -

パッケージ型 vs. ホスト型アプリ

- -

パッケージ型とホスト型の 2 つの Open Web Apps のタイプが存在します。パッケージ型アプリは、アプリケーションのすべてのアセット (HTML / CSS / JavaScript / 画像 / マニフェストなど) が含まれる zip ファイルです。ホスト型アプリは、与えられたドメインでサーバー上から起動するアプリです。両方のアプリのタイプはマニフェストを利用します。Firefox Marketplace でアプリが一覧に表示される際に、アプリは zip ファイルとしてアップロードするか、ホスト型アプリとして存在する URL が提供する必要があります。

- -
-

- -
-

Made in partnership with Treehouse: Check them out!

-
-
- -

このガイドの目的は、localhost アドレスに存在するホスト型アプリを作成することです。アプリを Firefox Marketplace に表示する準備ができると、パッケージ型もしくは、ホスト型として起動するかを選択することができます。

- -

アプリマニフェスト

- -

すべての Firefox アプリはアプリのルートに配置する manifest.webapp ファイルが必要です。manifest.webapp はアプリのバージョン、名前、説明、アイコン、ロケール、インストールすることのできるドメインなど多くの重要な情報を提供します。必須項目はアプリの名前と説明だけです。アプリテンプレート内にある簡単なマニフェストの例は以下のようなものになります:

- -
{
-  "version": "0.1",
-  "name": "Open Web App",
-  "description": "Your new awesome Open Web App",
-  "launch_path": "/app-template/index.html",
-  "icons": {
-    "16": "/app-template/app-icons/icon-16.png",
-    "48": "/app-template/app-icons/icon-48.png",
-    "128": "/app-template/app-icons/icon-128.png"
-  },
-  "developer": {
-    "name": "Your Name",
-    "url": "http://yourawesomeapp.com"
-  },
-  "locales": {
-    "es": {
-      "description": "Su nueva aplicación impresionante Open Web",
-      "developer": {
-        "url": "http://yourawesomeapp.com"
-      }
-    },
-    "it": {
-      "description": "La tua nuova fantastica Open Web App",
-      "developer": {
-        "url": "http://yourawesomeapp.com"
-      }
-    }
-  },
-  "default_locale": "en"
-}
- -
-

- -
-

Made in partnership with Treehouse: Check them out!

-
-
- -

 

- -

基本的なマニフェストは整いました。マニフェストに関するもっと詳しい情報は App Manifset の記事をご覧ください。

- -

アプリのレイアウトと設計

- -

様々な端末上で画面解像度が増えるにつれ、レスポンシブデザインはますます重要になっています。アプリのメインターゲット端末が Firefox OS のようなモバイルプラットフォームでも、他の端末でも同じようにアクセスできます。CSS メディアクエリ を使用すると、レイアウトを端末に適応することができます。以下に、スケルトン CSS の例を示します:

- -
/* The following are examples of different CSS media queries */
-
-/* Basic desktop/screen width sniff */
-@media only screen and (min-width : 1224px) {
-  /* styles */
-}
-
-/* Traditional iPhone width */
-@media
-  only screen and (-webkit-min-device-pixel-ratio : 1.5),
-  only screen and (min-device-pixel-ratio : 1.5) {
-  /* styles */
-}
-
-/* Device settings at different orientations */
-@media screen and (orientation:portrait) {
-  /* styles */
-}
-@media screen and (orientation:landscape) {
-  /* styles */
-}
- -

多くの JavaScript と CSS のフレームワークは、レスポンシブデザインとモバイルアプリ開発に役立ちます(Bootstrap など)。アプリや開発スタイルに最も適したフレームワークを選んでください。

- -

Web API

- -

JavaScript API は端末と同様に次々と作成され拡張されています。Mozilla の WebAPI は数十もの標準モバイル機能の JavaScript API へ影響を与えました。WebAPI のページで、端末のサポートとステータスの一覧を確認できます。以下に例のような JavaScript の機能検知はまだベストプラクティスです:

- -
// If this device supports the vibrate API...
-if('vibrate' in navigator) {
-    // ... vibrate for a second
-    navigator.vibrate(1000);
-}
- -

以下の例では、端末のバッテリ状態の変化に基づいて <div> の表示スタイルが変更されます。

- -
-
// Create the battery indicator listeners
-(function() {
-  var battery = navigator.battery || navigator.mozBattery || navigator.webkitBattery,
-      indicator, indicatorPercentage;
-
-  if(battery) {
-    indicator = document.getElementById('indicator'),
-    indicatorPercentage = document.getElementById('indicator-percentage');
-
-    // Set listeners for changes
-    battery.addEventListener('chargingchange', updateBattery);
-    battery.addEventListener('levelchange', updateBattery);
-
-    // Update immediately
-    updateBattery();
-  }
-
-  function updateBattery() {
-    // Update percentage width and text
-    var level = (battery.level * 100) + '%';
-    indicatorPercentage.style.width = level;
-    indicatorPercentage.innerHTML = 'Battery: ' + level;
-    // Update charging status
-    indicator.className = battery.charging ? 'charging' : '';
-  }
-})();
- -

上記のコード中では、Battery API を一度サポートしているか確認してから、chargingchange levelchange のリスナーを追加して、要素の表示を更新しています。以下のクイックスタートテンプレート追加して、動作しているか確認することが出来ます。

- -

WebAPI のページで、最新のデバイス API のステータスを確認してください。

- -

インストール API 機能

- -

クイックスタートアプリのテンプレートサンプルでは、アプリを標準的な Web ページとして表示したときに、クリックできるインストールボタンを実装していています。クリックすると Firefox OS にアプリとしてインストールします。ボタンのマークアップに特別なことはしていません:

- -
<button id="install-btn">Install app</button>
- -

このボタンの機能はインストール API (install.jsをご覧ください) を使用して実装されています:

- -
var manifest_url = location.href + 'manifest.webapp';
-
-function install(ev) {
-  ev.preventDefault();
-  // define the manifest URL
-  // install the app
-  var installLocFind = navigator.mozApps.install(manifest_url);
-  installLocFind.onsuccess = function(data) {
-    // App is installed, do something
-  };
-  installLocFind.onerror = function() {
-    // App wasn't installed, info is in
-    // installapp.error.name
-    alert(installLocFind.error.name);
-  };
-};
-
-// get a reference to the button and call install() on click if the app isn't already installed. If it is, hide the button.
-var button = document.getElementById('install-btn');
-
-var installCheck = navigator.mozApps.checkInstalled(manifest_url);
-
-installCheck.onsuccess = function() {
-  if(installCheck.result) {
-    button.style.display = "none";
-  } else {
-    button.addEventListener('click', install, false);
-  };
-};
-
- -

簡単に何をしているのかを見ていきます。

- -
    -
  1. インストールボタンを参照して、button 変数にそれを格納します。
  2. -
  3. navigator.mozApps.checkInstalled を使用して、http://people.mozilla.com/~cmills/location-finder/manifest.webapp マニフェストファイルに定義されたアプリが既に端末にインストールされているかを確認します。この検証結果は installCheck 変数へ格納します。
  4. -
  5. 確認が成功したら、成功イベントが発火し、installCheck.onsuccess = function() { ... } が実行されます。
  6. -
  7. installCheck.result が存在するかを if 文で確認します。もし存在する場合、アプリはインストール済みを意味するため、ボタンを非表示にします。インストールボタンは既にインストール済みであれば不要です。
  8. -
  9. アプリがインストールされていない場合、ボタンクリック時に install() 関数が実行されるように、ボタンにリスナーを追加します。
  10. -
  11. ボタンがクリックされ install() 関数が実行されると、manifest_url と呼ばれる変数にマニフェストファイルのロケーションを格納し、navigator.mozApps.install(manifest_url) を使用してアプリをインストールして、インストールの参照を installLocFind 変数へ格納します。インストールも成功 / 失敗のイベントを受け取ることができるので、成功 / 失敗の時のアクションを実行することが出来ます。
  12. -
- -

最初にインストール可能な Web アプリに遭遇した時、API の実装状況 を検証したいでしょう。

- -
-

注記: インストール可能な Open Web Apps は "1つのオリジンに対して1つのアプリ" のセキュリティポリシーがあります。基本的に、1つのオリジンで1つ以上のインストール可能なアプリをホスティングすることはできません。これはちょっとトリッキーなテストになりますが、アプリごとのに異なるサブドメインを作ったり、Firefox OS シミュレータを使ってテストをしたり、デスクトップにインストール可能なWeb Apps をインストールすることになりますが、Firefox Aurora/Nightly のインストール機能を使うなどの回避手段は存在します。
- オリジンについての更なる情報はアプリマニフェストについてのFAQ をご覧ください。

-
- -

WebRT API (パーミッションベース API)

- -

利用可能な WebAPI は数多くありますが、機能を有効にするためのパーミッションが必要です。アプリは以下のように manifest.webapp ファイルにパーミッションを登録しなくてはなりません。

- -
// New key in the manifest: "permissions"
-// Request access to any number of APIs
-// Here we request permissions to the systemXHR API
-"permissions": {
-    "systemXHR": {}
-}
- -

パーミッションには、以下のように3つのレベルが存在します。

- -
    -
  • Normal — アクセスパーミッションを記載する必要のないAPI群
  • -
  • Privileged — アプリ開発者が自身のアプリのためにマニフェストファイルへパーミッションを記載していたり、信頼されたソースを通して配布している場合に利用可能なAPI群
  • -
  • Certified — 電話やメッセージサービスなどの端末のクリティカルな機能を制御するAPI群。これらは一般的にサードパーティーが開発する時には利用することが出来ません。
  • -
- -

パーミッションレベルの更なる情報については、パッケージ型アプリの種類を参照してください。どのAPIがパーミッションが必要で、どのパーミッションが必要なのかは、アプリの許可設定をご覧ください。

- -
-

Firefox OS シミュレータではすべてのWeb API は実装されていない点については注意してください。

-
- -

ツールとテスト

- -

モバイル端末をサポートするときテストは非常に重要になってきます。インストール可能なOpen Web Apps のテストのオプションは多く存在します。

- -

Firefox OS シミュレータを含むWebIDE

- -

WebIDE と呼ばれるテストツールの新参者があります。このツールはデスクトップ版Firefox とUSB 経由の互換端末(または、Firefox OS シミュレータ)と接続し、アプリを直接端末へインストールしたり、アプリの検証をしたり、端末上で動作させながらデバッグすることが出来ます。

- -

ユニットテスト

- -

ユニットテストは、異なる端末でのテストするときやビルドするときにとても価値のあるものになります。 jQuery のQUnit はクライアントサイドのテストユーティリティとして人気がありますが、あなたが望むほかのテストツールを使っても構いません。

- -

端末にFirefox OS をインストールする

- -

Firefox OS はオープンなプラットフォームなので、あなたの端末にFirefoxOS をインストールしたり、ビルドするためのコードやツールは入手可能です。ビルドとインストール説明や、同じように端末へインストール可能かどうかの注意書きについては、MDN から見つけ出すことが出来ます。

- -

Firefox OS 開発者プレビュー専用のデバイスは入手可能です。更なる情報については我々の開発端末ページをご覧ください。

- -

アプリの提出と公開

- -

一度アプリが完成すると、標準的なウェブサイトまたはアプリ(更なる情報は、アプリの自主配布をご覧ください)としてホスティングすることが出来ます。または、Firefox マーケットプレイス提出することが出来ます。アプリのマニフェストは検証され、どの端末でアプリをサポートするかを選択することが出来ます(例:Firefox OS、デスクトップ版Firefox、モバイル版Firefox、タブレット版Firefox)
- 一度検証されると、アプリについての追加情報(スクリーンショット、説明、価格など)を加えることが出来ます。そして、公式に提出されたアプリとしてマーケットプレイスにリスト化されます。一度承認を得ると、アプリは全世界から購入・インストールすることが可能になります。

- -

マーケットプレイスと表示情報についての更なる情報

- -
    -
  1. Firefox OS マーケットプレイスにアプリを提出する
  2. -
  3. マーケットプレイスのレビュー基準
  4. -
  5. アプリ提出までのビデオ
  6. -
-
-
diff --git a/files/ja/archive/b2g_os/releases/1.1/index.html b/files/ja/archive/b2g_os/releases/1.1/index.html deleted file mode 100644 index 7e768d8ade..0000000000 --- a/files/ja/archive/b2g_os/releases/1.1/index.html +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: 開発者向けFirefox OS 1.1 -slug: Archive/B2G_OS/Releases/1.1 -translation_of: Archive/B2G_OS/Releases/1.1 ---- -
-

Firefox OS 1.1はプレリリースのバージョンです。 first offered to partners for release on October 21, 2013. Its Gecko component is based on Firefox 18 (see Firefox 18 for developers) just like Firefox OS 1.0.1, but with some additional bugfixes and APIs added. This page details the developer features newly implemented in Firefox OS 1.1.

-
-

HTML

-

Firefox OS-specific:

- -

JavaScript

-

Firefox OS-specific:

- -

DOM/API

-

Firefox OS-specific:

- -

Firefox OS HD サポート

-

Since Firefox OS 1.1, there are HD versions available to provide HD support for high-DPI devices. This is mostly just a visual change, dealt with in the same way that you'd deal with other devices of differing resolution, and you'll encounter nothing much in the way of underlying platform differences.

-

Fixed Firefox OS Issues

- -

Resolved crashes

-

Feature highlights for Firefox OS 1.1

- -

See also

- -

以前のバージョン

-

- -

diff --git a/files/ja/archive/b2g_os/releases/1.2/index.html b/files/ja/archive/b2g_os/releases/1.2/index.html deleted file mode 100644 index 8fe5012536..0000000000 --- a/files/ja/archive/b2g_os/releases/1.2/index.html +++ /dev/null @@ -1,466 +0,0 @@ ---- -title: Firefox OS 1.2 for developers -slug: Archive/B2G_OS/Releases/1.2 -translation_of: Archive/B2G_OS/Releases/1.2 ---- -
-

Firefox OS 1.2 は現在プレスリリース段階です。その Gecko コンポーネントは Firefox 26 ベース(Firefox 19 と Firefox 26 の間のGeckoの全ての追加を含みます; 最新の 開発者向けFirefox 26 リリースノートを見て下さい。) このページは Firefox OS 1.2 で新たに実装された開発機能を詳解します。.

-
- -

開発者ツール

- - - -

HTML

- -

General Gecko:

- - - -

CSS

- -

General Gecko:

- - - -

JavaScript

- -

General Gecko:

- -

EcmaScript 6 (Harmony) implementation continues!

- - - -

通信関連の追加 (大半は API関連)

- - - -

DOM/API

- -

Firefox OS-specific:

- - - -
New WebGL 1 extensions supported in Firefox OS 1.2:
- - - -
-
Note: availability of these extensions depends on device capabilities; not all extensions will be available on all devices.
-
- -

General Gecko:

- - - -

SVG

- -

General Gecko:

- - - -

MathML

- -

General Gecko:

- - - -

ネットワーク

- -

General Gecko:

- - - -

Worker

- -

General Gecko:

- - - -

セキュリティ

- -

General Gecko:

- - - -

XForms

- -

General Gecko:

- -

Support for XForms has been removed in Firefox 19.

- -

参考情報

- - - -

以前のバージョン

- -

- -

- -

 

- -

Share this article: http://mzl.la/1av9ZRr

diff --git a/files/ja/archive/b2g_os/releases/1.4/index.html b/files/ja/archive/b2g_os/releases/1.4/index.html deleted file mode 100644 index 38b0de47e7..0000000000 --- a/files/ja/archive/b2g_os/releases/1.4/index.html +++ /dev/null @@ -1,96 +0,0 @@ ---- -title: Firefox OS 1.4 for developers -slug: Archive/B2G_OS/Releases/1.4 -tags: - - B2G - - Firefox OS - - Release Note -translation_of: Archive/B2G_OS/Releases/1.4 ---- -
-

Firefox OS 1.4 は、現在プレリリース段階です。Gecko コンポーネントは Firefox 30 をベースにしています。(開発者向け Firefox 30 のリリースノート をご覧ください。) このページは、Firefox OS で新しく実装された開発者向け機能について解説します。

-
- -

CSS

- -

Gecko 全般:

- - - -

JavaScript

- -

SpiderMonkey 全般:

- - - -

インターフェイス/APIs/DOM

- -

Firefox OS の仕様:

- - - -

Gecko 全般:

- - - -

SVG

- -

Gecko 全般:

- - - -

マニフェスト

- - - -

関連情報

- - - -

以前のバージョン

- -

- -

- -

 

diff --git a/files/ja/archive/b2g_os/releases/2.0/index.html b/files/ja/archive/b2g_os/releases/2.0/index.html deleted file mode 100644 index 353314c33e..0000000000 --- a/files/ja/archive/b2g_os/releases/2.0/index.html +++ /dev/null @@ -1,112 +0,0 @@ ---- -title: Firefox OS 2.0 for developers -slug: Archive/B2G_OS/Releases/2.0 -translation_of: Archive/B2G_OS/Releases/2.0 ---- -
-

このページでは、Firefox OS 2.0に固有な Gecko の新規実装すみの開発機能について詳しく述べます。

-
- -
-

Firefox OS 2.0's Gecko component is based on Firefox 31/32.

-
- -

新しい製品機能

- -

This section provides a summary of the new features available in Firefox OS 2.0. For more details on specific platform changes (API additions, etc.), see the Platform additions in detail section.

- -
-
NFC
-
This release includes support for device-to-device content sharing support with NFC (Near Field Communication). You can pair your device with another, then swipe to share your contacts, media, or favorite URLs with others.
-
Telephony
-
Firefox OS now supports both IPv4 and IPv6 addresses in the network manager.
-
Find My Device
-
If you’ve lost your Firefox OS smartphone, Find My Device can help you find it (see the http://find.firefox.com website). You can see it on a map, make it play a sound and have it display a message. You can also remotely lock it or delete your personal info. To get started, create a Firefox Account (Settings > Firefox Accounts on your device) and enable Find My Device (Settings > Find My Device).
-
Media
-
You can now create your own ringtones using your own music collection, or songs you download from the Web.
-
Camera
-
The Camera app now supports various focus modes: Touch, Continuous Auto and Face tracking.
-
Productivity
-
We've done a visual refresh of the Email, Calender, and Clock apps.
-
Homescreen
-
Firefox OS 2.0 introduces a simpler vertical-scrolling homescreen with larger icons.
-
Edge-gesture app switching
-
Edge gestures are now available for switching between apps (swipe your thumb from the left edge of the screen to the right and vice versa, to switch between multiple open apps.)
-
- -

新しいパートナー機能

- -
-
E.ME integration
-
E.ME integration provides direct access to web apps while configurable search providers can search the web at the same time.
-
- -

新しい開発ツール機能

- -

The Firefox Developer Tools have had a large number of features added in Firefox versions 31 and 32; these aren't Firefox OS-specific, but you can take advantage of them when debugging your Firefox OS apps through WebIDE. To find out more, read:

- - - -

Platform additions in detail

- -
-

Note: Our list here includes features most important to Firefox OS. For an expanded list of general Gecko feature additions (which are generally also present in Firefox OS 2.0), consult the Firefox 31 release notes for developers and Firefox 32 release notes for developers.

-
- -

Web API

- - - -

CSS

- - - -

Technology support improvements

- - - -

Older versions

- -

- -

diff --git a/files/ja/archive/b2g_os/releases/2.1/index.html b/files/ja/archive/b2g_os/releases/2.1/index.html deleted file mode 100644 index 1621586fb7..0000000000 --- a/files/ja/archive/b2g_os/releases/2.1/index.html +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Firefox OS 2.1 for developers -slug: Archive/B2G_OS/Releases/2.1 -tags: - - '2.1' - - B2G - - Firefox OS - - Release Notes -translation_of: Archive/B2G_OS/Releases/2.1 ---- -
-

Firefox OS 2.1 は、現在プレリリース段階です。Gecko コンポーネントは Firefox 33/34 をベースにしています。このページは、Firefox OS 2.1 で新しく実装された開発者向け機能について解説します。

-
- -
-

注記: Firefox OS Gecko 内にある Gecko 全般の機能については、Firefox 33 release notes for developersFirefox 34 release notes for developers を参照してください。

-
- -

プラットフォームの変更

- -

Firefox OS は "オリジン毎に単一のアプリ" のセキュリティポリシーを持っていました、しかしFirefox 34/Firefox OS 2.1 では (詳細情報は この FAQ を見て下さい。) 撤廃されました。古いバージョンをサポートする必要がある場合、別のオリジンでアプリをホストする事を考えて下さい; つまりひとつの戦略はアプリに別のサブドメインを生成する事です。

- -

Web API の変更点

- - - -

関連情報

- - - -

以前のバージョン

- -

- -

diff --git a/files/ja/archive/b2g_os/releases/index.html b/files/ja/archive/b2g_os/releases/index.html deleted file mode 100644 index 69fae71478..0000000000 --- a/files/ja/archive/b2g_os/releases/index.html +++ /dev/null @@ -1,32 +0,0 @@ ---- -title: Firefox OS 開発者向けリリースノート -slug: Archive/B2G_OS/Releases -tags: - - Firefox OS -translation_of: Archive/B2G_OS/Releases ---- -

Firefox OS バージョン別リリースノート

- -

ここでは、Firefox OS 向け Gaia と Gecko のリリースに関する情報を提供し、各バージョンで追加された機能や修正されたバグについて解説します。Firefox OS のバージョン別 API 対応表もあります。

- -
-
    -
  1. Firefox OS 1.0.1 for developers
  2. -
  3. Firefox OS 1.1 for developers
  4. -
  5. Firefox OS 1.2 for developers
  6. -
  7. Firefox OS 1.3 for developers
  8. -
  9. Firefox OS 1.4 for developers
  10. -
  11. Firefox OS 2.0 for developers
  12. -
  13. Firefox OS 2.1 for developers
  14. -
  15. Firefox OS 2.2 for developers
  16. -
-
- -

その他の関連情報

- -
-
Firefox OS API 対応表
-
利用可能な API の一覧と、それに対応している Firefox のバージョンを記載しています。
-
アプリの許可設定
-
ホスト型、特権、認定 API の一覧に加えて、マニフェストの設定名、対応するアプリの種類、説明、アクセスプロパティ、デフォルト設定といった、インストール型アプリのマニフェストに記載すべき許可設定に関する情報があります。
-
diff --git a/files/ja/archive/b2g_os/running_custom_builds_in_the_app_manager/index.html b/files/ja/archive/b2g_os/running_custom_builds_in_the_app_manager/index.html deleted file mode 100644 index 7e856de7b0..0000000000 --- a/files/ja/archive/b2g_os/running_custom_builds_in_the_app_manager/index.html +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: WebIDEでのFirefox OS/Gaia のカスタマイズビルドの実行方法 -slug: Archive/B2G_OS/Running_custom_builds_in_the_App_Manager -translation_of: Archive/B2G_OS/Developing_Gaia/Running_custom_builds_in_WebIDE ---- -
-

2014年後半、Firefox OSシミュレータは機能追加され、カスタムビルドしたシミュレータを起動できるようになりました。本ドキュメントでは設定方法とWebIDEを使用しての起動方法を記載しています。

-
-

準備

-

まず最初にカスタムビルドしたシミュレータを動かす為の環境を整備しましょう。

-
    -
  1. Firefox をインストールし WebIDE を有効化します (ツール > Web 開発 > WebIDE)。
  2. -
  3. 最新の B2G Desktop Nightly をインストールするか 自分でビルドして下さい。
  4. -
  5. 最新の Firefox OS simulator (7.0pre7.20140113以上)のアドオンをインストールしてください。
  6. -
  7. Gaiaを SIMULATOR=1 を付与しビルドします。例として、Gaiaディレクトリ直下で make SIMULATOR=1 PROFILE_FOLDER=profile-b2g としてビルドします( Hacking Gaia に詳しい説明が記載されています)。
  8. -
-

シミュレータの設定

-

カスタムビルドしたGaia, B2G Desktopを使用してシミュレータを動かすための設定を記載します。

-
    -
  1. アドオンマネージャを表示してください(ツール > アドオン, もしくはURL欄に about:addons と入力)。
  2. -
  3. インストール済みのアドオンを表示するため拡張機能タブを選択します。
  4. -
  5. Firefox OS シミュレータのアドンが表示されているでしょう。例えば、Firefox OS 1.3 Simulator 7.0pre.7.20140113.といった様に表示されているはずです。
  6. -
  7. インストール済みのシミュレータから設定ボタンをクリックします。
    - the Firefox OS simulator preferences: Preferences, disable and remove.
  8. -
  9. WebIDEからカスタムビルドした実行環境(最新のB2G Desktop)を起動したくなるでしょう。 Select a custom runtime executable の 選択をクリックし選択することができます。Windows/Linuxでは明確かと思います。Macでは/Applications/B2G.app/Contents/MacOS/b2g に存在し、Applicationsディレクトリにインストールされています。
  10. -
  11. Select a custom Gaia profile directory も同様に選択することができ、WebIDEで動作するGaiaを変更することができます。この際、カスタムビルドしたGaiaを選択可能です(gaia/profile-b2gを選択してください)。
  12. -
  13. カスタマイズしていないシミュレータに戻したい場合、は設定をリセットする必要があります。この際、アドオンを再インストールしたり削除したりするのではなく、新しいタブを開きURL欄に about:config と入力してください。その後、検索欄に fxos や simulator と入力し、"extensions.fxos_2_0_simulator@mozilla.org.customRuntime"  もしくは "extensions.fxos_2_0_simulator@mozilla.org.gaiaProfile" の設定値を見つけてください。これを右クリックし リセットを選択し、シミュレータを再起動することでカスタマイズしていないシミュレータに戻ります。
  14. -
-

設定済みのシミュレータの使用方法

-

最後にカスタマイズしたシミュレータを使用してみましょう。

-
    -
  1.  WebIDE (ツール > Web 開発 > WebIDE) を選択します(また Shift-F8 を押しても同様の結果を得られます )。
  2. -
  3. メニューの一番右上のボタンをクリックします。
  4. -
  5. Firefox OS 1.3 (もしくはインストール済みの最新バージョンなど)をクリックします。これはカスタマイズしたものを設定したシミュレータとなります。
  6. -
  7. シミュレータは起動するでしょう。カスタマイズビルドした B2G Desktop 、Gaiaが起動します。
  8. -
-

a screenshot of the b2g desktop simulator

-

b2gのカスタムバイナリのビルド

-

これは任意の手順となります。もしも自分で作ったmozilla-centralのパッチをテストするときに有用な方法となります。

-
-

注記: ビルドをすることで、どのB2G Desktop プラットフォームであってもビルドディレクトリにアドオンが生成されます。カスタムビルドしたシミュレータを使用するには最も簡単な方法になります。

-
-
    -
  1. mozilla-centralのコードをチェックアウトしてきて下さい
  2. -
  3. あなたがテストしたいパッチを適用して下さい
  4. -
  5. mozconfigに以下の定義が含まれることを確認して下さい:
    - ac_add_options --enable-application=b2g
    - FXOS_SIMULATOR=1
    - GAIADIR=/home/alex/gaia    # 必須(FXOS_SIMULATOR設定時) xpiファイルを作成する場合に指定する
    - MOZTTDIR=/path/to/moztt   # オプション フォントファイル
  6. -
  7. -

    ./mach build && ./mach package を実行する

    -
  8. -
  9. -

    GAIADIRを指定していれば、あなたのobdir配下にアドオンであるシミュレータのxpiファイルが生成されています。

    -
  10. -
diff --git a/files/ja/archive/b2g_os/running_tests_on_firefox_os_for_developers/index.html b/files/ja/archive/b2g_os/running_tests_on_firefox_os_for_developers/index.html deleted file mode 100644 index 94374b0c24..0000000000 --- a/files/ja/archive/b2g_os/running_tests_on_firefox_os_for_developers/index.html +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: 'Firefox OS上でテストを実行する: 開発者向けガイド' -slug: Archive/B2G_OS/Running_Tests_on_Firefox_OS_for_Developers -translation_of: Archive/B2G_OS/Running_Tests_on_Firefox_OS_for_Developers ---- -
-

Mozillaの自動化ハーネスチームは自動テストインフラストラクチャを拡張しFirefox OSに適合させるために特に (古いハーネスが特化していた) ブラウザではなく電話向けOSのテストを対象とした新しいハーネスを記述する努力をしました。Firefox OSのアーキテクチャはすべてこれらのテストハーネスを動作させ適用する予定です。しかしそれは開発者がテストを実行し、パッチが動作するか否かを見るのをとても複雑にします。この記事はMozillaで利用可能なすべてのテストリソースの意味を理解することをめざします .

-
-

導入

-

もしあなたがGecko開発者なら、すでに親しんでいるテスト自動化についてのFirefox OSに特化したドキュメントを見るべきでしょう: mochitestreftest、そしてxpcshell.

-

もしあなたがGaiaまたはアプリ開発者、あるいはOSの実際の動作をより深く "エンドユーザ" スタイルでテストすることに興味があるGecko開発者なら、Gaiaのテストスイートを見る必要があるでしょう。二つの重要なテストスイートがあります:

- -

実際には優先するツールチェインとあなたがやりたいと考えているテストに応じてどちらか一つを選んでください。

-

移動してこれらのテストが実行されているところを見てみましょう。

-

Gaia UIテストの実行

-

Gaia UIテストスイートは実機とB2Gデスクトップビルドで実行可能です。しかし我々はこのセクションでは可能な限り常に実機ではベストであるように実機での実行にチームを集中しています。

-

このテストは破壊的であることに注意してください。あなたはテストを実行する前に電話の各データをバックアップすべきです。どのテストを実行するかに応じて、それらは電話を掛けることができます。実行と電話のバックアップの仕方、SIMカードを取り除くなどについてとても注意深く行うことを意識してください。あなたがすでにエンジニアリングビルドを行っているならそれらを実行することは本当にたやすいでしょう。ここにあるように。

-

ワンタイムセットアップ

-

あなたはGaiaディレクトリの位置を変えないと仮定するならば、以下のステップを一度だけ実行する必要があります。Python virtualenvを作り (すでにインストールしていないならvirtualenvツールをインストールします)、アクティブにし、Gaia UIテストツールをvirtualenvにインストールします。以下のステップで仮想環境を作作って、あなたのGaiaリポジトリにあるGaia UIテストハーネスの実行を確認します (それらは何かをデバッグする場合に有用です)。

-
$ virtualenv gaia_ui_venv # This will create a gaia_ui_venv directory where the virtual environment lives. It can be anywhere on your system.
-$ source gaia_ui_venv/bin/activate # This activates our virtualenv
-(gaia_ui_venv)$ cd <b2groot>/gaia/tests/python/gaia-ui-tests;python setup.py develop # This installs the gaia ui harness into your virtual environment. 
-

もしGaia UIテストのためにすでに仮想環境を作っているなら、以下だけ行えばよいでしょう:

-
$ source gaia_ui_venv/bin/activate
-

テストの実行

-

最初にtestvarsファイルを作る必要があります。これをするには、一つ以上標準をコピーし、このテストは電話上のコンテンツをすべて破壊するかもしれないという警告が止める属性を加えます。前後で状態を変えないのはよいテストです。テストが行われる前に電話がバックアップされることを確認する必要があるでしょう。ここにある指示は仮想環境が起動され且つgaia/tests/python/gaia-ui-testsで行われることを仮定しています。

-
(gaia_ui_venv)$ cp gaiatest/testvars_template.json testvars.json
-# testvars.jsonのコピーを編集して、JSONに次の属性を追加します:
-"acknowledged_risks": true,
-"skip_warning": true,
-

テストが実行される前にテストランナーがMarionetteのポートにアクセスでき、電話がUSBで接続されている必要があります。gaiatest/testsにあるテストを一つ選んで実行できます。 たとえば、電話帳のテストがしたいなら以下のようにします:

-
(gaia_ui_venv)$ adb forward tcp:2828 tcp:2828
-(gaia_ui_venv)$ gaiatest --testvars=testvars.json --address=localhost:2828 gaiatest/tests/functional/contacts/
-
-

注意: UIテストが利用可能か調べるには、Gaiaリポジトリ内のgaiatestディレクトリを参照します。

-
-

Python virtualenvから抜けるためには、virtualenvの特殊コマンドdeactivateを使います:

-
(gaia_ui_venv)$ deactivate
-$
-
-

注意: Gaia UIテストについてさらに詳細な情報を学びたいなら、Gaia UIテストのページに移動してください。

-
-

Gaia総合テストの実行

-

現在、Gaia総合テストを実行するにはB2G Desktopビルドを使わなくてはなりません (注釈: 近いうちにデバイス上でも利用可能になります)。ではその方法を見ていきましょう。

-

These just require a Gaia tree and NodeJS to be installed on your computer; the following command will do the rest:

-
$ cd gaia $ make test-integration 
-

That's it ? this instruction will download a B2G desktop build, and start running the tests in that build.

-
-

Note: To learn more about Gaia Integration Tests, read the Gaia Integration Tests Github repo.

-
-
-

Note: To find out what integration tests are available, look in the apps directory in the Gaia repo; integration tests can be found in test/marionette/ subfolders.

-
-

Wrapping Up

-

As always, work is underway to make all our tests easier to run both locally for developers as well as in our automation systems. Feel free to drop into the #ateam channel any time you have questions about test automation for Firefox OS or any of the Mozilla automation tools.

diff --git a/files/ja/archive/b2g_os/security/application_security/index.html b/files/ja/archive/b2g_os/security/application_security/index.html deleted file mode 100644 index b0ced3571c..0000000000 --- a/files/ja/archive/b2g_os/security/application_security/index.html +++ /dev/null @@ -1,132 +0,0 @@ ---- -title: アプリケーションセキュリティ -slug: Archive/B2G_OS/Security/Application_security -tags: - - Apps - - Firefox OS - - Guide - - Mobile - - Security -translation_of: Archive/B2G_OS/Security/Application_security ---- -
-

本記事では、Firefox OS のアプリケーションのセキュリティモデルについて、詳しく説明します。

-
-

Firefox OS に導入した主要な Web アプリのセキュリティ制御は以下のとおりです:

- -

アプリの種類

-

Firefox OS は 3 種類の Web アプリをサポートします: "web"、"特権 (privileged)"、内部 (internal) ("(認定 (certified))") です。アプリの種類はマニフェストで宣言され、また要求してよい許可設定の一覧が決まります。

- -
-

注記: これら 3 種類について詳しくは、アプリマニフェストのドキュメントをご覧ください。

-
-

アプリの提供

-

Firefox OS で、アプリは 2 種類の仕組みで提供されます: ホスト型 または パッケージ型 です。通常の Web アプリはどちらの仕組みでも提供できるのに対して、特権アプリと認定アプリはパッケージ型であることが必要です。

-

ホスト型アプリ

-

ホスト型アプリは、開発者の Web サーバに置かれたアプリケーションマニフェストだけで構成されます。マニフェストには、アプリを起動したときにどのページを表示するかを示す launch_path が含まれています。セキュリティの視点から、ホスト型アプリは通常の Web サイトにとてもよく似た動作になります。ホスト型アプリで読み込まれたページの URL は、Web サーバ上にある当該ページ、あるいは以前に appcache へ保存されている場合はデバイスから読み込まれたページが持つ、通常の URL になります。

-

パッケージ型アプリ

-

パッケージ型アプリは Web サーバ上にリソースを持つ代わりに、すべてのリソース (HTML、CSS、JavaScript、アプリマニフェストなど) を zip ファイルに収めた Open Web App です。この形式について詳しくは、 パッケージ型アプリをご覧ください。

-

アプリの生成元

-

ホスト型アプリではアプリの生成元が、アプリケーションマニフェストを置いている場所の生成元になります。

-

パッケージ型アプリの生成元はインストール時に割り当てられ、アプリケーションごとに固有です。特権アプリと内部アプリはアプリケーションマニフェストの origin パラメータを指定することで、特定の生成元を要求できます。

-

アプリのインストール

-

アプリは Apps JavaScript API を通してインストールします:

- -

アプリが実際に Web アプリとしてインストールされるよう望んでいることを保証するため、Web サイトがアプリケーションマニフェストを偽ることができないようにしなければなりません。これは、マニフェストを特定の MIME タイプ application/x-web-app-manifest+json での提供するよう求めることで実現します。この制限はマニフェストが示すアプリとアプリのマニフェストが、アプリのインストールを要求したページと同一生成元であるときに緩和されます。

-

更新

-

アプリの更新プロセスは、アプリの更新で説明しています。

-

許可設定

-

アプリは、通常の Web サイトに許可されているものより上位の追加権限を許可されることができます。デフォルトで、アプリは通常の Web ページと同じ許可設定を持ちます。追加の許可設定を得るための最初のステップは、アプリで希望する追加設定をアプリケーションマニフェストに列挙することです。

-

マニフェストでの宣言

-

アプリが必要とするそれぞれの追加許可設定のためマニフェスト内に許可設定を、なぜアプリがそれを必要かについて人間が読める説明を伴って列挙しなければなりません。例えばアプリが navigator.geolocation API を使用したい場合は、マニフェストに以下の内容を含めなければなりません:

-
"permissions": {
-  "geolocation":{
-    "description": "Required for autocompletion in the share screen",
-  }
-},
-
-

これは Web ページが通常行うのと同じ方法で、アプリが geolocation について問い合わせることを可能にします。マニフェストについて詳しくは、アプリマニフェストをご覧ください。

-
-

注記: 現在、許可設定を使用する意図はユーザに公開されません。バグ 823385 をご覧ください。

-
-

許可設定の承諾

-

マニフェストで許可設定を要求しているとき、その許可設定は allow または prompt に設定されます。allow 型の許可設定はマニフェストで宣言されていることにより、さらなる同意なしに承諾されます。prompt 型の許可設定では、ユーザは関連する API へ最初にアクセスするときに問い合わせを受け、API が承諾を受ける前に選択しなければなりません。通常、Firefox OS はプライバシーへの影響がある許可設定についてユーザに問い合わせます。これはユーザが何を質問されているかを理解する上で合理的です。例えば連絡先へのアクセスは問い合わせされますが、生の TCP コネクション作成へのアクセスは暗黙的に許可されます。これはその許可設定を許可することについて、セキュリティ面で暗示することをユーザが理解することが合理的ではないためです。allow 型の許可設定の使用は Marketplace のセキュリティレビューのプロセスの一部として、ユーザの保護を確実にするためにレビューされます。

-

許可設定の取り消し

-

ユーザは prompt の許可設定について考えを変えることができ、また Firefox OS の設定アプリでそれらの許可設定を取り消すことが可能です。しかし、ユーザは allow 型の許可設定を変更できません。

-

Web アプリのサンドボックス

-

アプリごとのデータ保管

-

それぞれのアプリは分離されたサンドボックス内で実行します。これは、アプリによって保存されるすべてのデータが、他のアプリによって保存されるデータから分離されることを意味します。このデータには Cookie のデータ、localStorage のデータ、indexedDB のデータ、サイトの許可設定といったデータも含まれます。

-

A diagram showing three Firefox OS apps all open is separate sandboxes, so none of them can affect each other.

-

これはユーザが 2 つのアプリ A と B をインストールしている場合に、それらのアプリは完全に別の Cookie、別のローカルデータ、別の許可設定を持つことを意味します。また、両方のアプリが同一の生成元を指す <iframe> を開いた場合でも適用されます。すなわち、アプリ A とアプリ B の両方が "http://www.mozilla.org" を指す <iframe> を開いた場合、両方のアプリが Web サイトを表示しますが、その Web サイトは 2 つのアプリで別々の Cookie を使用して読み込みおよび表示されます。

-

その結果、例えばユーザがアプリ A を使用して Facebook にログインしても、アプリ B がユーザの Facebook アカウントと対話できるように作用することはありません。ユーザがアプリ A でログインしたときに設定される Facebook のログイン Cookie は、アプリ A だけで使用可能です。アプリ B が Facebook を <iframe> で開いても Cookie がありませんので、ユーザのアカウントページではなく Facebook のログインページを受け取ります。

-

アプリはお互いを開くことができない

-

これは、アプリが iframe を使用して他のアプリを開くことができないという意味です。アプリ A が、アプリ B の URL を src に設定した <iframe> を作成した場合でも、実際はアプリ B を <iframe> で開いていません。単に、URL の場所にある Web サイトを開いているだけです。アプリ B の Cookie は使用しませんので、アプリ B がユーザのデバイスにインストールされていない場合と変わらない動作になります。

-

これはパッケージ型アプリにも適用します (詳しくは後述します)。アプリ A がパッケージ型アプリ B を、アプリ B の app:// URL を指す <iframe> を使用して開こうとしても、読み込みは失敗します。この結果が 404 あるいはまだ決まっていない他の種類のエラーになるとしても、読み込みは確実に失敗します。また、アプリ B がインストールされているかをアプリ A が判別できないようにするため、アプリ B がユーザのデバイスにインストールされていてもいなくても同じように失敗します。

-

アプリ A のトップレベルフレームでアプリ B の URL へナビゲートする場合も同じことが発生します。常にアプリを開いているフレームを把握するようにしていますので、アプリ A のフレームでアプリ B の URL を読み込もうとしたときに、これまで説明した 2 つの状況と同じ動作になります。つまり、Cookie や他のローカルデータなどアプリ B のリソースを使用する方法はありません。

-

動機

-

サンドボックスの手法には、利点と欠点の両方があります。欠点は、ユーザが複数のアプリで同じ Web サイトと対話する場合に、すべてのアプリでログインを行わなければならないことです。同様に、ローカルへのデータ保管を希望する Web サイトとユーザが複数のアプリで対話する場合に、それぞれのアプリでデータが重複することになり、データが大量である場合に問題が発生する可能性があります。

-

サンドボックスの手法の主な利点は、より安定的なモデルであるということです。アプリをインストールすることで別のアプリが動作しなくなるといった、複数のアプリが第三者の Web サイトを通して予期せぬ方法で互いに対話できる方法はありません。またアプリをアンインストールするときに、別のアプリ用のデータを削除できる方法や、アンインストールするアプリへの機能的な依存により別のアプリが動作しなくなることもありません。

-

セキュリティの大きな利点もあります。ユーザは、SketchGame アプリが Facebook の Web サイトにあるバグや問題点を悪用してユーザの Facebook データを狙う攻撃を始めるかもしれないと悩む必要なしに、Facebook へログインする AwesomeSocial アプリを安全に使用できます。

-

また、プライバシーについても利点があります。ユーザは PoliticalPartyPlus アプリを、MegaCorpEmployeeApp アプリがそのアプリがインストールされたことやどのようなデータが作成されたかを検出できるのではと悩む必要なしに、安全にインストールできます。

-

許可設定のサンドボックス化

-

Web サイトのデータがアプリごとにサンドボックス化されるのと同様に、許可設定の承諾もサンドボックス化されます。アプリ A が http://maps.google.com からページを読み込んで、そのページが Geolocation の使用を求めたとします。ユーザが "はい、また常時この決定を記憶してください" とした場合、http://maps.google.com はアプリ A で Geolocation にアクセスできることだけを意味します。次にアプリ B が http://maps.google.com を開いても、そのページはユーザが再び許可設定を承諾しない限り Geolocation にアクセスできません。

-

また通常のブラウザと同様に、許可設定は生成元ごとに分けられます。アプリ A が Geolocation 使用の許可設定を承諾された場合、これはアプリ A で実行するすべての生成元が Geolocation 使用の許可を得たということではありません。アプリ A が http://maps.google.com を指す <iframe> を開いていても、http://docs.google.com は Geolocation へのアクセスを承諾される前に、ユーザへ許可設定について問い合わせなければなりません。

-

ブラウザ API サンドボックス

-

ブラウザのように多数の URL を開くアプリケーションをより安全にするため、browserContent フラグを追加しました。browserContent フラグは各アプリにサンドボックスを 1 つではなく 2 つ設けることを可能にします。ひとつはアプリ自身用、もうひとつはアプリが開く "web コンテンツ" 用です。例えば:

-

MyBrowser アプリが https://mybrowser.com ドメインから読み込まれるとします。このドメインは、内部でスクリプトやリソースを読み込みます。スクリプトやリソースはこのドメインに属しています。

-

ここでアプリ内のページが <iframe mozbrowser> を作成すると、その <iframe> で使用する別のサンドボックスが作成されます。このサンドボックスは、アプリで使用するサンドボックスとは異なります。すなわち、その <iframe>https://mybrowser.com にナビゲートした場合、<iframe mozbrowser> 内では別の Cookie を使用することになります。同様に、<iframe mozbrowser> 内部のコンテンツはアプリが開いたものとは別の IndexedDB や localStorage のデータベースを参照します。

-

またこれは、MyBrowser アプリが位置に基づいたブラウジングを実装するために、例えば Google マップと連携したい場合にも適用されます。アプリが http://maps.google.com を指す <iframe> を開いた場合、そこでは http://maps.google.com の Web サイト向けの Cookie のセットを受け取ります。そしてユーザが Web コンテンツ領域内、つまり http://maps.google.com を指す <iframe mozbrowser> 内で操作したときは、トップレベルのアプリとは別の Cookie や許可設定を使用します。

-

この仕組みが有用な別の例として、Yelp のようなアプリがあります。Yelp は、アプリ内で直接レストランの Web サイトを訪問できます。レストランの Web サイトを開くために <iframe mozbrowser> を使用することで、Yelp のアプリは、レストランの Web サイトが逆に Yelp のアプリを指す (http://yelp.com を指す) <iframe> を含むことができないことが保証されます。それを行うと、Web サイトでは Yelp のアプリではなく Yelp の Web サイトだけを受け取るでしょう。よって、iframe 内にある Yelp の Web サイトは Yelp アプリの許可設定やデータを共有しませんので、レストランの Web サイトはアプリに対して攻撃を行える手段がありません。

-

アプリセキュリティのまとめ

-

以下の表は、さまざまな種類の Firefox OS アプリのまとめと、Firefox OS で実行する Open Web Apps の形式、インストール、更新プロセスの説明を掲載したものです。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Web アプリの種類
提供方式許可設定モデルインストール更新
Webホスト型またはパッケージ型未検証の Web コンテンツをさらしても危険ではない、注意の必要性が低い許可設定どこからでもインストールできるアプリのインストール元や提供方法に応じて、ユーザから透過的に、または Marketplace で明示的に更新できます。
Privilegedパッケージ型および署名付きアプリの検証や認証を必要とする、特権 API信頼された Marketplace からインストールする信頼された Marketplace で更新を行います。ユーザは更新のダウンロードやインストールを認めるかを問われます。
Internalパッケージ型サードパーティのアプリが使用できない、強力かつ危険な APIデバイスへのプリインストールシステムレベルの更新の一部としてのみ更新されます。
-
-

注記: Firefox OS バージョン 1.0 では、Web アプリは Web サイトと Marketplace のどちらからでもインストールできますが、Privileged アプリは Mozilla Marketplace からしかインストールできず、複数の信頼された Marketplace はまだ完全にはサポートしていません。

-
-

 

diff --git a/files/ja/archive/b2g_os/security/b2g_ipc_internals/index.html b/files/ja/archive/b2g_os/security/b2g_ipc_internals/index.html deleted file mode 100644 index 46f203dbd2..0000000000 --- a/files/ja/archive/b2g_os/security/b2g_ipc_internals/index.html +++ /dev/null @@ -1,254 +0,0 @@ ---- -title: B2G IPC internals -slug: Archive/B2G_OS/Security/B2G_IPC_internals -translation_of: Archive/B2G_OS/Security/B2G_IPC_internals ---- -
-

この記事は Firefox OS (Boot2Gecko) のプロセス間通信(IPC)の内部実装について記載しています。
- これはまだ開発中で今後変わる可能性があります。この記事の目的はプロセス間通信の内部動作と実装の詳細を知ってもらうことです。
- IPC のセキュリティ局面を知りたい場合は、これ以外の記事を参考にしてください。(TODO: 記事へのリンクを追加する)。フェードバックや提案を歓迎します。

-
- -

アーキテクチャ

- -


- In FirefoxOS we have a Multi-process Architecture where the apps on the phone are running in a different process which has the least amount of privileges.
- Firefo OS では最小限の権限を持った異なる複数のプロセスが端末で動作するように、マルチプロセスのアーキテクチャを持っています。システム上1つの b2g と呼ばれる親プロセスが存在します。b2g は nuwa と呼ばれる子プロセスがいます。このプロセスはアプリプロセスとしてフォークするために利用されます。アプリが起動する際に、b2g は nuwa に新規プロセス起動を通知します。通常、子プロセスは最小の権限で起動します。実行させたい動作(権限が必要なもの)は、親プロセス(b2g)を通す必要があります。これはプロセス間通信(Inter-process Communication : IPC)で実現しています。各子プロセスは IPC チャンネルを利用し、親プロセスと通信しています。プロセスのレイアウトは右図の通りです。

- -

セットアップ

- -

設計の概要を知るためには、どのように通信しているか詳細を知る必要があります。
- 実際には Unix socket を利用しており、これはプロセスを超えてメッセージを送信するために socketpair システムを使って作成されます。通信の送受信をする際に、sendmsgrecvmsg を使うことで実現しています。各プロセスはソケット操作を行うための専用のスレッドを持っており、これは IOLoop と呼ばれます。各 IOLoop スレッドは送信メッセージのキューを持っており、これはチャンネルを超えたメッセージを送れるようにメインスレッドを利用しています。

- -

- -

IOLoop

- -

IOLoop スレッドは b2g 起動時に 親プロセスで作成され、nuwa をフォークした後に各プロセスでも作成されます。

- -

親プロセス

- -

親プロセス(b2g) では IOLoop が早い段階で作成されます。もっと詳しく何が怒っているかを知るには NS_InitXPCOM2 関数をみてください。以下は実際にスレッドが始まるための初期化のコードの一例です。

- -
...
-scoped_ptr<BrowserProcessSubThread> ioThread(
-    new BrowserProcessSubThread(BrowserProcessSubThread::IO));
-...
-ioThread->StartWithOptions(options)
-...
- -

ioThreadbase::Thread を継承した BrowserProcessSubThread インスタンスです。これは PlatformThread::Delegate のサブクラスです。

- -

StartWithOptions は実際に、base::Thread で定義されています。
- The call will lead to a couple of more calls which will eventually end up at pthread_create. The function started in the new thread is ThreadFunc. ioThread object is passed along the calls and ioThread->ThreadMain() is called in the new thread.

- -

- -

ThreadMain is now running in the IOLoop thread, it will call Init() of the current instance and also create a MessageLoop instance to call the Run() method. We will <come any="" back="" is="" it="" later="" not="" of="" p="" part="" since="" startup="" that="" the="" thread="" to=""> </come>revisit this part later on, since it is not involved further in thread startup.

- -
...
-// The message loop for this thread.
-MessageLoop message_loop(startup_data_->options.message_loop_type);
-...
-// Let the thread do extra initialization.
-// Let's do this before signaling we are started.
-Init();
-...
-message_loop.Run();
-...
-
- -

Child

- -

For the child IOLoop thread spawn, we have to look at the nuwa process as a child of b2g and also at the forked processes of nuwa.

- -

Exactly how b2g spawns nuwa will be covered later; for now we assume that the nuwa process already exists. Once nuwa is created, we eventually reach the XRE_InitChildProcess function. This function is responsible for creating the IOLoop thread at this line:

- -
process = new ContentProcess(parentHandle);
-
- -

In the ContentProcess constructor, the ProcessChild constructor is called, which leads to a call of the ChildProcess constructor. The important part to note here is that the ChildProcess constructor gets passed a new instance of IOThreadChild. Within the constructor, the Run() is called on the passed IOThreadChild object:

- -
ChildProcess::ChildProcess(ChildThread* child_thread)
-    : child_thread_(child_thread),
-    ...
-{
-    ...
-        child_thread_->Run();
-}
-
- -

From there, the StartWithOptions function is called. At this point it follows the same code path as for the main IOLoop startup. The only exception is that it is an IOThreadChild instance and not a BrowserProcessSubThread (see the b2g process illustration above for reference).

- -

Below is an illustration of the IOLoop thread spawn in the  nuwa process :

- -

- -

This is the case for the original nuwa process. All future children will be forked from nuwa, and since fork only copies the thread it was called in to the new process, all threads so far would be lost.

- -

We want to have all threads from nuwa (along with the IOLoop) in the forked process. In order to do that, pthread_create is not called directly, instead, the call is routed to __wrap_pthread_create which wraps the real pthread_create. The purpose of the wrapper function is to maintain a static list of startup information for all created threads (sAllThreads). This list will be copied to the new process, and the new process will then call RecreateThreads to restore all threads based on the information maintained in the list.

- -

Channel

- -

In order to be able to send and receive messages, we have to create a channel between the parent and the child. This section covers the classes used for this - the actual setup between parent and child will be covered once we get to the process spawning part.

- -

Here is a short illustration of the call flow:

- -

- -
    -
  1.  This flow illustrates the creation of an IPC::Channel instance (the process of creating the instance will be covered later on). This class has two important attributes: - -
      -
    • channel_impl_ which is the actual implementation of the channel (platform specific)
    • -
    • listener_ which is used to pass incoming messages to
    • -
    -
  2. -
  3. The posix class for the channel_impl_ object can be found here (Channel::ChannelImpl). Channel::ChannelImpl has the following important attributes: -
      -
    • pipe_ the file descriptor of the pipe (created by socketpair) for the parent side
    • -
    • client_pipe_ the client end of the pipe
    • -
    • listener_ the object that receives the incoming messages
    • -
    • output_queue_ a queue where all outgoing messages are pushed to
    • -
    -
  4. -
  5. Channel::ChannelImpl has two overloaded constructors which can be used to create an object. One of them takes a file descriptor as the first argument which will be stored in pipe_. The more interesting constructor is the one which takes a channel_id (which can also be empty). Both of them also take a Mode and a Listener* pointer as second and third argument. Mode just specifies if we are the server or the client. When the constructor with the channel_id is called, CreatePipe will be called from there. We have to distinguish two different cases from here: -
      -
    • Mode == MODE_SERVER: In this case, socketpair will be called. One end of the pipe will be stored in pipe_ the other in client_pipe_. If channel_id is not empty, we insert a new entry in a PipeMap where we associate client_pipe_ with the given channel_id.
    • -
    • Mode != MODE_SERVER: In this case, we call ChannelNameToClientFD, which looks inside the PipeMap for an entry with the given channel_id. The result will be stored in pipe_.
    • -
    -
  6. -
  7. After the object creation is completed, the Connect method can be called. This method will tell libevent to notify us whenever something has been written to pipe_ and is ready to be received.
  8. -
  9. OnFileCanReadWithoutBlocking is the callback for this event. This function will then call a function to read the message from the file descriptor, and then the message will be passed to the OnMessageReceived function inside the listener_ (this will be covered later).
  10. -
- -

Spawning

- -

In the previous section, we learned how IOLoop is created and how a channel is created. Throughout the last sections, we made the assumption that a process has already been started. This section will cover how those processes actually get started and how they connect to the IPC::Channel. We will again have to distinguish between the nuwa process and the children of nuwa.

- -

At this point, if you are not already familiar with IPDL consider reading the IPDL Tutorial because from this point on we will reference some of the classes generated from those IPDL files.

- -

Nuwa

- -

Creating the process

- -

Throughout the initialization phase of the b2g process, an instance of the singleton class PreallocatedProcessManagerImpl will be created. This instance is mainly accessed through a couple of static functions defined in the PreallocatedProcessManager class. The purpose of this manager is to keep track of pre-allocated processes. This will be explained in more detail in the #Preallocated section.

- -

The implementation class has two important attributes:

- - - -

This initialization happens inside the ContentParent::StartUp function when executing the following code:

- -
...
-// Try to preallocate a process that we can transform into an app later.
-PreallocatedProcessManager::AllocateAfterDelay();
-...
-
- -

This call will lead to the creation of the one and only instance of PreallocatedProcessManagerImpl (located inside the PreallocatedProcessManagerImpl::Singleton function). Right after the constructor call, the Init function is invoked. Following the call flow from there, we will end up in Enable. Enable will then schedule the nuwa fork, with a 1 second delay (DEFAULT_ALLOCATE_DELAY), by calling ScheduleDelayedNuwaFork. This gives the b2g process enough time to finish its initialization.

- -

As soon as the delay time has passed, the DelayedNuwaFork function is called inside the main thread. Inside the function, we will call ContentParent::RunNuwaProcess which returns a pointer to a ContentParent object; this object represents our nuwa process.

- -

Inside the ContentParent constructor, a couple of interesting things happen.

- - - -

The LaunchAndWaitForProcessHandle method will schedule a task inside the IOLoop thread. In the IOLoop thread, RunPerformAsyncLaunch is called. After a few calls, we will end up in the LaunchApp function. This is where the forking happens. After the fork, it will call execve in the child to re-execute itself.

- -

- -

Connecting to the channel

- -

We covered the actual spawning. What's left is the part where the parent (b2g) and the child (nuwa) connect to the same IPC channel. We have two important calls for that on the parent side: one is made before the child is spawned and the other after the spawn. The first one is in the RunPerformAsynchLaunch function. Before actually calling PerformAsynchLaunch (the position is marked with a 'x' in the above diagram), we call InitializeChannel, and this will call CreateChannel. At this point a new IPC::Channel object is created, so please check out the #Channel section above.

- -

The GeckoChildProcessHost object created inside the ContentParent constructor serves as the listener_ inside the IPC::Channel object, thus, GeckoChildProcessHost will supply the OnMessageReceived function. There is nothing done there; it just saves all the incoming messages.

- -

At this point we can consider the parent process to be connected to the channel. This was the first important call.

- -

The second one is called as soon as LaunchAndWaitForProcessHandle returns (nuwa process is running at this point). Since the current OnMessageReceived handler doesn't do any good, we will have to assign a new listener_. In order to do that, this is being executed (mSubprocess is an instance of GeckoChildProcessHost which is created in ContentParent):

- -
Open(mSubprocess->GetChannel(), mSubprocess->GetOwnedChildProcessHandle());
-
- -

What happens now is a little complicated to explain just with text. I will try to illustrate the process in the end, so you might want to follow the process again with the illustration.

- -

ContentParent actually extends PContentParent (this class is generated from the *.ipdl files that, unfortunately, I can't reference to any github or mxr location) which is defined in ./objdir-gecko/ipc/ipdl/PContentParent.cpp relative to the root directory of FirefoxOS. PContentParent has a member variable which will be important during the Open (defined in PContentParent.cpp) call.

- - - -

MessageChannel takes a MessageListener object as the one and only argument. mChannel is created during the PContentParent construction and passes this as the MessageListener object to MessageChannel (ContentParent extends MessageListener shown below).

- -

Open gets the IPC::Channel instance taken from mSubprocess (TODO: GetOwnedChildProcessHandle???) and calls Open on mChannel

- -
auto PContentParent::Open(
-        Channel::Transport* aTransport,
-        ProcessHandle aOtherProcess,
-        MessageLoop* aThread,
-        mozilla::ipc::Side aSide) -> bool
-{
-    mOtherProcess = aOtherProcess;
-    return (mChannel).Open(aTransport, aThread, aSide);
-}
-
- -

As a side note, Channel::Transport is a typedef of IPC::Channel. aThread and aSide are set to 0 and UnknownSide by default if not specified. Open inside of the MessageChannel class will create a ProcessLink. This is passed to the constructor which will set mChan inside the MessageLink class which ProcessLink inherits from.

- -

After an instance of ProcessLink is created, we call Open on it. This sets the member variable mTransport (which represents the IPC::Channel). So mTransport is the IPC::Channel pointer we retrieved from mSubprocess.

- -

Since Connect has already been called when the IPC::Channel was created, we will schedule IOLoop to run OnTakeConnectedChannel. The channel state inside the MessageChannel object will be set to ChannelConnected, and we also call set_listener on the IPC::Channel instance to let it know that ProcessLink will handle incoming messages. That means OnMessageReceived inside ProcessLink is called. Those received messages will be passed to the MessageChannel and from there to the OnMessageReceived funciton inside the PContentParent class.

- -

- -

Now everything has been set up on the parent side. Let's get to the nuwa side.

- -

After the fork, nuwa inherited all the open file descriptors from the parent b2g, and one of them is its end of the pipe. Every child expects its end of the pipe to be file descriptor 3 (kClientChannelFd). In order to guarantee that file descriptor 3 will be the child's end of the pipe, we call ShuffleFileDescriptors. This function will dup the child end of the pipe to 3. It also makes sure that in case 3 is a file descriptor needed by the child that it will be remapped to the next available.

- -

After the file descriptors have been remapped, we call CloseSuperfluousFds to close all the ones that nuwa doesn't need. When everything is done the child will call execve to re-execute itself.

- -

From here please have a look at the #Child section. The actual channel connection will happen inside the ThreadMain function inside the IOLoop thread. ThreadMain will call Init defined in ChildThread. Inside this function, we will create a new IPC::Channel object, and you can refer to the #Channel section from here. You will have to consider the part Mode != MODE_SERVER, therefore ChannelNameToClientFD will be called, which returns our magic file descriptor 3 (remember the child end of the pipe is mapped to this fd).

- -

So now, we have a connection to the channel. What is left is to set the correct listener for the incoming messages. To do so, the Init funciton inside ContentProcess is called. From there it will call Open in the PContentChild class, and this will lead to the same call flow as for the parent in the above diagram. The only exception we have is that these calls originate from ContentChild which inherits from PContentChild.

- -

Preallocated

- -

Creating the process

- -

A preallocated process is a process fork()ed from nuwa which b2g keeps around to turn it later into a app process. At some point in time, b2g tells the preallocated process to turn into an app that has been started on the phone. The process will then be assigned to the privileges of the app, and the app will be able to access privleged functionality via API calls to the parent. As soon as a preallocated process has been turned into an app, b2g will tell nuwa to create a new preallocated process. So how exactly does b2g tell nuwa to create a new preallocated process? (NB: at this point we have an active channel connection between b2g and nuwa.)

- -

For initiating the fork, b2g sends a message through the IPC channel, and nuwa sends one back once it creates the new process. The message contains the PID of the new process. On the right is a little illustration of the message flow.

- -

Sending the initial message is initiated inside the NuwaFork function. Rememeber the mPreallocatedAppProcess is an instance of ContentParent and the invoked SendNuwaFork function is actually implemented inside PContentParent.

- -

As soon as the child receives this messages, it will call RecvNuwaFork which is defined in ContentChild. Following the calls from there, we will end up in ForkIPCProcess.

- -

From there we call PrepareProtoSockets which calls socketpair to create a new pipe for the new child and the parent.
- It is also where fork is called and our new process is born. After the fork we will call AddNewProcess inside nuwa. AddNewIPCProcess will then be responsible for initiating the second message. The message contains the parent side file descriptor for the pipe as well as the PID of the new process.

- -

On the b2g side the RecvAddNewProcess will handle the message. It will create a new ContentParent instance. This time we call the second ContentParent constructor. It will create the ContentParent instance based on the already existing one and with the information of the new process. This also leads to a new instance in our static sContentParents list. This basically means that we have a ContentParent instance for each process that is running.

- -

There is also a check in place which makes sure that only the nuwa process actually sends Msg_AddNewProcess:

- -
...
-if (!IsNuwaProcess()) {
-...
-
- -

IsNuwaProcess checks a member variable of ContentParent whether or not it is nuwa who sent the message. This member variable can only be set from the parent side, and it does this during the creation of the ContentParent for the nuwa process.

- -

After initialization is finished, RecvAddNewProcess will then call PublishSpareProcess to add the process to the managers list which will keep track of all existing Preallocated processes. Whenever a Preallocated process will be turned into an app process, it will be removed from that spare processes list. Here an illustration of the process:

- -

- -

Connecting to the channel

- -

TODO: write it

diff --git a/files/ja/archive/b2g_os/security/index.html b/files/ja/archive/b2g_os/security/index.html deleted file mode 100644 index 5887547f87..0000000000 --- a/files/ja/archive/b2g_os/security/index.html +++ /dev/null @@ -1,68 +0,0 @@ ---- -title: Firefox OS セキュリティ -slug: Archive/B2G_OS/Security -tags: - - B2G - - Firefox OS - - Mobile - - Security -translation_of: Archive/B2G_OS/Security ---- -

以下の記事では、Firefox OS のセキュリティに関するトピックを扱います。これには、アプリケーションのセキュリティやインストールのプロセスをセキュアに保つ方法だけでなく、全体的なセキュリティ機能を含みます。

- - - - - - - - -
-

Firefox OS セキュリティのドキュメント

- -
-
Firefox OS のセキュリティモデル
-
Firefox OS のセキュリティモデルを概観します。
-
システムのセキュリティ
-
Firefox OS のランタイムに組み込まれている、セキュリティ制御の詳細説明です。
-
Firefox OS のアプリケーションセキュリティ
-
Firefox OS でアプリケーションをセキュアにする方法の概説です。
-
アプリケーションのセキュアなインストールと更新
-
Firefox OS がセキュアにアプリケーションをインストールや更新する方法です。
-
Firefox OS におけるデバッグとセキュリティテスト
-
このガイドでは、リモート JavaScript デバッガを開くところからデスクトップ版の Firefox OS を傍受する HTTP(S) プロキシのセットアップまで、基本的なセキュリティテストのステップを説明します。
-
- -

すべて見る...

-
-

コミュニティの支援を受ける

- -

もし Firefox OS で作業をしていたり、Firefox OS デバイスで実行したいアプリケーションを開発したりしているなら、あなたを支援するコミュニティリソースがあります!

- - - -
    -
  • Mozilla の Boot to Gecko IRC チャンネルで質問する (英語): #b2g
  • -
- -

ネチケットを忘れないでください...

- - - - - -
- -

-Firefox OS
diff --git a/files/ja/archive/b2g_os/security/security_model/index.html b/files/ja/archive/b2g_os/security/security_model/index.html deleted file mode 100644 index 89926c055e..0000000000 --- a/files/ja/archive/b2g_os/security/security_model/index.html +++ /dev/null @@ -1,284 +0,0 @@ ---- -title: Firefox OS セキュリティ概論 -slug: Archive/B2G_OS/Security/Security_model -tags: - - B2G - - Firefox OS - - IPC - - IPDL - - Mobile - - Security -translation_of: Archive/B2G_OS/Security/Security_model ---- -
-

このドキュメントでは、Mozilla の Firefox OS のセキュリティフレームワークの概要を説明します。これは、モバイルデバイスをプラットフォーム、アプリ、データに対する脅威から防御するためのフレームワークです。Firefox OS で Mozilla は、携帯電話のセキュリティリスクに対する最高品質の保護を提供する、包括的・集中的・多層的なセキュリティモデルを実装しました。

-
-

プラットフォームセキュリティ

-

Firefox OS プラットフォームは、あらゆるレベルで攻撃のリスクを軽減するように設計された多層型のセキュリティモデルを使用します。前線の対抗策は、脅威に対する包括的な保護を提供する多重防護策と組み合わせられます。

-

セキュアアーキテクチャ

-

Firefox OS は、Web ベースのアプリケーションと下層のハードウェアを結びつけます。これは以下のような階層で構成される、統合された技術スタックです:

-

- -

Gecko は、モバイルデバイスを悪用から保護するためのセキュリティポリシーを適用するゲートキーパーです。Gecko 層は、(Gaia 層の) Web アプリと電話機の間を仲介するように振る舞います。Gonk は下層の携帯電話機の機能を、Gecko 層に直接提供します。Web アプリは Web API を通してのみ、かつ Gecko がアクセス要求を許可した場合にのみ、携帯電話機の機能にアクセスできます。直接アクセスする手段はなく、また電話機への "バックドア" もありません。Gecko は許可設定を強制して、認可されていないアクセス要求は防止します。

-

セキュアなシステム展開

-

Firefox OS はスマートフォンにインストールされて提供されます。オリジナルのシステムイメージは、ディストリビューションパッケージの組み立て、構築、テスト、デジタル署名の実施について責任を持つ、既知の信頼された提供元によって作成されます。

-

セキュリティ対策は、技術スタックの全体にわたって使用されます。ファイルシステムの権限は、Linux のアクセスコントロールリスト (ACL) によって適用されます。システムアプリは、読み取り専用 (アップデート中は、一時的に読み書き可能になるため除きます) のボリュームにインストールされます。通常、ユーザのコンテンツを置く領域だけが読み書き可能です。デバイスハードウェア内のさまざまなコンポーネントは、標準的な業界の慣習としてデフォルトで実装されている、ビルトインの保護機能を備えています。例えばチップセットのベンダーは、脆弱性を低減するための強化技術を採用しています。コアプラットフォーム (Gecko および Gonk) は潜在的な脅威に対する保護を高めるために強化されており、またコンパイラの強化策を、適用可能な場所で採用しています。詳しくは システムセキュリティ をご覧ください。

-

セキュアなシステムアップデート

-

Firefox OS プラットフォームのアップグレードやパッチ適用は、携帯電話機内のシステムイメージの継続的な整合性を保証する、セキュアな Mozilla のプロセスを使用して展開されます。更新パッケージは、その組み立て、構築、テスト、デジタル署名の実施について責任を持つ、既知の信頼された提供元 (通常はデバイスの OEM) によって作成されます。

-

システム更新は、Firefox OS スタックの全体あるいは一部に関与する場合があります。アップデートに Gonk の変更が含まれている場合は、インストールプロセスとして FOTA (Firmware Over the Air) を使用します。FOTA アップデートには、デバイス管理 (FOTA、ファームウェア、ドライバ)、設定管理 (Firefox OS の設定)、セキュリティ更新、Gaia、Gecko、あるいは他のパッチといった、Firefox OS スタックの他の部分に対するものが含まれることもあります。

-

Gonk に関与しないアップデートは、Mozilla System Update Utility を使用して実施できます。Firefox OS では、Firefox のデスクトップ製品と同じ更新フレームワーク、プロセス、Mozilla ARchive (MAR) 形式 (更新パッケージで使用) を使用します。

-

携帯電話機内蔵の更新サービス (OEM が提供するでしょう) が、定期的にシステム更新の確認を行います。更新パッケージが入手可能になって更新サービスにより検出されると、インストール実施の確認をユーザに促します。更新パッケージをモバイルデバイスへインストールする前に、デバイスのストレージで更新の適用に十分な領域があるかを確認します。またディストリビューションの検証が行われます:

- -

更新プロセスの間に、以下のセキュリティ対策を使用します:

- -

携帯電話機に更新が適切に適用されたことを保証するための、厳密なチェックがあります。

-
-

注記: 更新処理がどのように動作するか、あるいはどのように更新を作成および頒布するかについて、詳しくは Firefox OS の更新パッケージを作成、適用する をご覧ください。

-
-

アプリのセキュリティ

-

Firefox OS は侵害するアプリや悪意のあるアプリから携帯電話機を守るために、多層的なセキュリティ防御策を使用しています。この方策では、アプリの信頼モデルに基づく絶対的な許可レベル、ランタイムのサンドボックス実行、下層の携帯電話ハードウェアへのアクセスを API に限定、強固な許可設定モデル、セキュアなインストールおよびアップデートのプロセスといった、さまざまな仕組みを採用しています。技術的な詳細については アプリケーションセキュリティ をご覧ください。

-

Firefox OS では、すべてのアプリケーションが Web アプリ (HTML5、JavaScript、CSS、メディアおよび他のオープンな Web 技術を使用して作成したプログラム。ここでは、ブラウザ内で実行しているページは Web アプリに該当しません) です。ユーザによってインストールされるバイナリ ("ネイティブ") アプリケーションは存在しないため、システムへのアクセスはすべて Web API が厳格に仲介します。ファイルシステムへのアクセスでさえ、Web API やバックエンドの SQLite データベースを通してのみ行います。アプリが SD カードに保存されているファイルへ直接アクセスする方法はありません。

-

Firefox OS はアプリがアクセスおよび使用できるリソースの範囲を制限および強制する一方で、さまざまな許可レベルをもつ広範なアプリをサポートします。Mozilla は、どの種類のアプリケーションがどの API にアクセスできるかの厳密な制御を実装しました。例えば、認定アプリ (電話機内蔵) のみが Telephony API にアクセスできます。ダイヤラーアプリは電話をかけるために Telephony API にアクセスする特権を持ちますが、すべての認定アプリがこの API にアクセスできるわけではありません。

-

これは、例えば任意のサードパーティー製アプリがインストールされてペイパーユースの電話番号 (アメリカにおける 900 および 910) にダイヤルされ、高額な電話料金が発生するようなシナリオを防ぎます。

-

他の OEM 製アプリが選択的に Telephony API へアクセスできる場合があります。例えば、事業者の請求あるいはサポートの窓口へ直接電話をかけられるなどのアカウント管理を顧客ができるようにする、システム管理アプリケーションを事業者が提供する場合があります。

-

信頼済みアプリと未信頼アプリ

-

Firefox OS では、以下のタイプに従ってアプリを分類します:

- - - - - - - - - - - - - - - - - - - - - - - - - -
-

タイプ

-
-

信頼レベル

-
-

説明

-
-

認定

-
-

高度に信頼済み

-
-

事業者や OEM によって認定されたシステムアプリ (デバイス損傷の危険性や重要な機能に対するリスクのため)。システムアプリやサービスに限ります。サードパーティーのアプリケーションは想定しません。
- この指定は、少数の重要なアプリケーションのためだけに確保されています。例: SMS、Bluetooth、カメラ、システムクロック、テレフォニー、既定のダイヤラー (重要なサービスへ常にアクセスできるようにするため)。

-
-

特権

-
-

信頼済み

-
-

レビューを受けて認可され、認定済みの Marketplace によってデジタル署名を付与されたサードパーティーのアプリ。

-
-

Web (上記以外すべて)

-
-

未信頼

-
-

通常の Web コンテンツ。インストール型アプリ (携帯電話機に保存) およびホスト型アプリ (リモートにあり、アプリのマニフェストだけが携帯電話機に保存) の両方を含みます。ホスト型アプリのマニフェストは、Marketplace で入手できます。

-
-

アプリケーションの信頼レベルは、携帯電話機の機能にアクセスできる能力の一部を決定します。

- -

ネットワークアクセスなど一部の操作は、すべてのアプリへ暗黙的に許可されると想定されます。一般に、より注意が必要な操作 (例えば電話番号のダイヤルや連絡先リストへのアクセス) を実行するには、アプリで高い信頼レベルが必要です。

-
-

注記: 利用可能な API や許可レベルについて、詳しくは アプリの許可設定 をご覧ください。

-
-

最小許可の原則

-

Web アプリに対して、Firefox OS のセキュリティフレームワークは最小許可の原則に従います: 最小限の許可設定から始めて、必要かつ適切なときに追加の権限を選択的に承諾します。デフォルトで、アプリはとても低い許可設定で開始します。これは未信頼の Web コンテンツに似ています。アプリが追加の許可を必要とする Web API を呼び出す場合は、それら追加の許可をマニフェストに列挙しなければなりません (後述)。Gecko は、マニフェストで適切な特権を明確に要求している場合にのみ、アプリケーションに Web API へのアクセスの承諾を検討します。また Gecko は、Web アプリのタイプ (認定、特権、Web) がアクセスに十分な資格を与えられている場合にのみ、要求された許可を承諾します。

-

Marketplace での特権アプリのレビュープロセス

-

アプリを特権アプリにするため、アプリの提供者は認定済みの Marketplace に、判断のためアプリを提出しなければなりません。Marketplace はアプリに、厳格なコードレビュープロセスを受けさせます: アプリの信頼性や整合性の検証、要求された許可が (許可設定の理論的根拠で) 明言された用途で使用されていることの保証、暗黙的な許可設定の使用が適切であることの検証、特権アプリのコンテンツと特権がない外部のコンテンツとの間のインターフェイスに特権昇格攻撃を防ぐための適切な対策があることの確認。Marketplace には、承諾された許可設定によって Web アプリが悪意のある動作をしないようにする責任があります。

-

アプリがレビューに合格すると使用が認められて、アプリのマニフェストが Marketplace によってデジタル署名され、モバイルユーザがダウンロードできるようになります。デジタル署名は、Web ストアがなんらかの攻撃を受けた場合に、攻撃者が独自のコンテンツや悪意のあるコードをユーザの携帯電話機にインストールできないようにします。この診断プロセスにより Firefox OS は Marketplace から入手した特権アプリを、ありふれた (未信頼の) Web コンテンツより高く信頼します。

-
-

注記: Firefox Marketplace を含む Marketplace について、詳しくは Marketplace のポータル をご覧ください。

-
-

パッケージ型アプリとホスト型アプリ

-

Firefox OS 向けのアプリは、パッケージ型 (携帯電話機に保存) またはホスト型 (リモートの Web サーバにあり、マニフェストだけが携帯電話機に保存) になります。これらは、それぞれどのようなセキュリティが管理されるかに違いがあります。それでも、パッケージ型アプリもホスト型アプリもアプリケーションのサンドボックス化を前提としています。これについては後ほど説明します。

-
-

注記: ホスト型アプリとパッケージ型アプリについて、詳しくは アプリの自主配布 をご覧ください。

-
-

パッケージ型アプリ

-

パッケージ型アプリは、アプリケーションのリソース (HTML5、CSS、JavaScript、画像、メディア) だけでなく、構成物やそれに対応するハッシュの明示的なリストを提供するマニフェストも含む ZIP ファイルで構成されます。認定アプリや特権アプリは、マニフェストにデジタル署名が必要であるためパッケージ型アプリであることが必要です。ユーザがパッケージ型アプリを入手するときは ZIP ファイルが携帯電話機にダウンロードされて、マニフェストを ZIP ファイル内の既知の場所から読み込みます。インストール作業の間に、アプリの構成物が検証されてパッケージ内に引き続き保管されます。すべての明示的な許可設定は実行時に要求され、ユーザにアプリのデータ使用目的を表示して、デフォルトで持続します。

-

パッケージ型アプリ内のリソースを参照するため、URL は app: から始まる以下の形式です:

-

app://identifier/path_within_zipfile/file.html

-

ここで app:// は ZIP ファイルのマウントポイントを表します。また identifier は、アプリが携帯電話機にインストールされるときに生成される UUID です。この仕組みは、app: URL で示されるリソースが ZIP ファイルに含まれていることを確実にします。app: 内のパスは相対的であり、ZIP ファイル内のリソースへの相対リンクは許可されます。

-

パッケージ型アプリは主に認定アプリや特権アプリでの使用を意図していますが、通常の Web アプリもパッケージ型にできます。ただし、単にパッケージ型だからといって信頼度やアクセス許可が向上することはありません。

-

ホスト型アプリ

-

ホスト型アプリは Web サーバに置かれており、HTTP で読み込まれます。アプリのマニフェストだけが携帯電話機に保存されます。その他すべてはリモートに保管されます。一部の API は特権アプリや認定アプリのみ使用でき、それらのアプリは署名が必要であるためパッケージ型であることが必要です。従って、ホスト型アプリは認定アプリや特権アプリであることを要求する Web API 操作にアクセスできません。

-

セキュリティの視点では、ホスト型アプリの動作は通常の Web サイトにとても似ています。ホスト型アプリは、Web サーバ上にあるアプリのルートディレクトリ内のスタートページを指す、ハードコーディングされた完全修飾の URL の呼び出しによって読み込まれます。ホスト型アプリが読み込まれると、携帯電話機は Web サイトを閲覧する際に使用するものと同じ URL へリンクします。

-

アプリマニフェスト

-

Open Web App のマニフェストは、アプリと対話するために Web ブラウザが必要とする情報が含まれています。マニフェストは (少なくとも) アプリの名前と説明を持つ JSON ファイルです。詳しくはアプリマニフェストに関する FAQ をご覧ください。

-

マニフェストの例

-

以下のコードは、基本的な設定を含んでいるマニフェストのサンプルです:

-
{
-  "name": "My App",
-  "description": "My elevator pitch goes here",
-  "launch_path": "/",
-  "icons": {
-    "128": "/img/icon-128.png"
-  },
-  "developer": {
-    "name": "Your name or organization",
-    "url": "http://your-homepage-here.org"
-  },
-  "default_locale": "en"
-}
-

アプリマニフェストでのセキュリティ設定

-

マニフェストには、以下のセキュリティ設定などの設定を含めることもできます:

- - - - - - - - - - - - - - - - - - - - - - - - - -
-

フィールド

-
-

説明

-
-

permissions

-
-

アプリが要求する許可設定です。アプリは使用するつもりである、ユーザの許可が必要な Web API をすべて列挙しなければなりません。ほとんどの許可設定は特権アプリや認定アプリにとって有意義であり、ホスト型アプリ向けではありません。API ごとのプロパティ:

-
    -
  • description: この API の使用を要求する意図を明記した文字列。このプロパティは必須です。
  • -
  • access: 許可に必要なアクセスの種類を指定する文字列。暗黙的な許可設定は、インストール時に許可されます。このプロパティは一部の API のみ必要です。使用できる値: readreadwritereadcreatecreateonly
  • -
-
-

installs_allowed_from

-
-

アプリの提供元です。このアプリのインストールの起動を許可する生成元 (スキーマ + ユニークなホスト名) を 1 組または配列で指定できます。アプリの提供者が、インストール元を認定済みの Marketplace (https://marketplace.firefox.com/ など) だけに制限できます。

-
-

csp

-
-

Content Security Policy (CSP) です。アプリで読み込むすべてのページに適用します。攻撃者がアプリへコードを注入することを可能にするバグに対して、アプリを強固にするために使用します。明示しない場合、特権アプリや認定アプリはシステムで定義されたデフォルト設定になります。構文:
- https://developer.mozilla.org/ja/docs/Apps/Manifest#csp

-

このディレクティブは、適用される CSP を強化するのみです。例えば、特権アプリに適用される CSP を緩和するためには使用できません。

-
-

type

-
-

アプリケーションの種類です (web、privileged、certified)。

-
-

Firefox OS はマニフェストが特定の MIME タイプ (application/x-web-app-manifest+json) で、またアプリの提供元と同一の完全修飾ホスト名 (生成元) から提供されることを要求します。この制限は、マニフェストアプリ (従ってアプリマニフェスト) の生成元とインストールされたアプリが要求するページが同一であるときに緩和されます。この仕組みは、Web サイトをだましてアプリマニフェストをホスティングさせることができないようにするために使用します。

-

サンドボックス実行

-

本章では、アプリケーションと実行サンドボックスについて説明します。

-

アプリケーションサンドボックス

-

Firefox OS のセキュリティフレームワークでは、リスクを軽減して携帯電話機、プラットフォーム、データを保護するための多重防護策としてサンドボックス化を使用します。サンドボックス化はアプリを実行している間、アプリの周囲に境界線や制約を設ける手法です。それぞれのアプリは自身のワークスペースで実行され、アクセスが許可された Web API およびデータ、さらにワークスペースに割り当てられたリソース (IndexedDB データベース、Cookie、オフラインストレージなど) にのみアクセスします。

-

以下の図は、このセキュリティモデルの概要を示したものです。

-

-

各アプリを分離することで、影響範囲がそれぞれのワークスペース内になります。ワークスペースの外部 (他のアプリや他アプリのデータなど) に干渉することはできません。

-

実行サンドボックス

-

B2G (Gecko) は携帯電話機のハードウェア機能にアクセスできる、高い特権のシステムプロセスで動作します。各アプリは実行時に、B2G システムプロセスの子プロセスである実行環境内で動作します。それぞれの子プロセスは、制限された OS の特権セットを持ちます。例えば、子プロセスはファイルシステムにあるファイルを勝手に直接読み書きすることができません。特権的なアクセスは Web API を通して提供され、それは親の B2G プロセスによって管理されています。親プロセスは子プロセスが特権的な API を要求したときに、そのプロセスがアクションの実行に必要な許可設定があることを保証します。

-

アプリは他のプロセスやアプリとコミュニケーションをとることはできず、B2G コアプロセスとのみコミュニケーションをとれます。またアプリは B2G から独立して実行できず、互いにアプリを開くこともできません。アプリ間は間接的 (例えばあるアプリがシステムアラームを発して、別のアプリがその結果としてシステム通知を発生させる場合) にのみ “コミュニケーション” をとることができ、またそれは B2G プロセスが仲介します。

-

Web API のみを通したハードウェアアクセス

-

Web アプリは、携帯電話機の機能へアクセスするための入口をひとつだけ持ちます。それは Firefox OS の Web API であり、Gecko に実装されています。Gecko は、モバイルデバイスや下層のサービスへ向かう唯一のゲートウェイを提供します。デバイスのハードウェア機能にアクセスする唯一の手段が、Web API を呼び出すことです。この仕組みを迂回してハードウェアと直接対話したり低レベルのソフトウェア層に入り込んだりするための、“ネイティブな” API や他の経路 (“バックドア”) はありません。

-

セキュリティインフラストラクチャ

-

以下の図は、Firefox OS のセキュリティフレームワークの構成要素を示したものです:

-

- -

許可設定の管理と適用

-

Firefox OS のセキュリティは、Web アプリに与えた許可設定を検証および適用するように設計されています。

-

システムは個々の許可設定を、コンテンツが要求した場合、かつアプリのマニフェストで適切な許可設定の要求がある場合にのみアプリへ与えます。一部の許可設定はユーザによる追加の認証が要求され、ユーザは許可設定を認めるかを促されます (アプリがユーザの現在位置へのアクセスを要求した場合と同様)。このアプリ中心のフレームワークは従来の役割中心の手法 (個々の役割が許可設定のセットにそれぞれ割り当てられる) より、細かく許可設定を制御します。

-

Web API はアクセションとリスナのセットを持ちます。各々の Web API は許可設定のレベルを要求します。Web API を呼ぶときに毎回、Gecko は以下に基づいて許可設定の要件を確認 (役割を探索) します:

- -

要求内容が許可設定の基準に合わない場合、Gecko は要求を拒否します。例えば未信頼のアプリは、信頼済みアプリ向けに用意された Web API を実行できません。

-

ユーザへの許可の問い合わせ

-

Web アプリへ暗黙的に割り当てられた許可設定に加えて、特定の操作は実行可能にする前に、ユーザによる明示的な許可が必要です (例えば、"Web アプリがカメラにアクセスしてよいか?")。これらの操作のために、Web アプリは許可が必要である根拠をマニフェストで明示することが求められます。このデータの使用目的はユーザに対して、許可設定が認められた場合にそのデータで何を行おうとしているかや関連するリスクを告知します。これにより、ユーザは情報に基づく判断やデータ管理の制御が可能になります。

-

セキュアなアプリの更新プロセス

-

-

特権アプリのアップグレードやパッチ適用のため、アプリの提供者は更新されたパッケージを認定済みの Marketplace に提出します。このパッケージはレビューを受けて、署名した上でユーザが利用可能になります。Firefox OS デバイスでは、アプリ更新ユーティリティが定期的にアプリの更新を確認します。アップデートが利用可能になると、ユーザにそれらを適用したいかを問い合わせます。アップデートを携帯電話機へインストールする前に、パッケージは以下の点について検証されます:

- -

携帯電話機に更新が適切に適用されたことを保証するための、厳密なチェックがあります。アップデートプロセスを始める前に、完全なアップデートを特定の安全な場所にダウンロードしなければなりません。インストールしてもユーザのデータは上書きされません。

-
-

注記: アプリの更新について詳しくは、アプリの更新 をご覧ください。

-
-

デバイスのセキュリティ (ハードウェア)

-

モバイルデバイスハードウェアのセキュリティの仕組みは、一般的に OEM によって制御されます。例えば OEM は、誤った PIN 入力によりロックされた (Subscriber Identity Module) カードのロックを解除するための PUK (PIN Unlock Key) コードとともに、SIM カードのロック機能を提供するかもしれません。詳しくは OEM に問い合わせてください。Firefox OS はパスコードやタイムアウトスクリーンの設定を可能にしています。これについては次の章で説明します。

-

データのセキュリティ

-

ユーザは個人用にしておきたい自身の携帯電話機に、連絡先、金融情報 (銀行やクレジットカードの情報)、パスワード、カレンダーなどの個人情報を保管できます。Firefox OS は機密情報を、窃取、悪用、破壊する可能性がある悪意のアプリから保護するようになっています。

-

パスコードとタイムアウトスクリーン

-

Firefox OS は、パスコードを入力したものだけが電話機を使用できるようにするために、ユーザが電話機にパスコードを設定できるようにしています。また Firefox OS は、電話機で何もしていない時間 (設定変更可能) が経過した後に表示されるタイムアウトスクリーンを提供しており、電話機の使用を再開する前にパスコード認証を求めます。

-

サンドボックス化されたデータ

-

前に説明したように、アプリは実行時にサンドボックス化されます。これは明示的に共有されておりアプリがアクセスするのに十分な許可を受けているデータを除き、アプリが他のアプリに属するデータにアクセスすることを防ぎます。

-

シリアライズ化されたデータ

-

Web アプリは、ファイルシステムへ直接読み書きする方法がありません。代わりに、ストレージへのアクセスはすべて Web API を通して行われます。Web API によるストレージの読み書きは、中間の SQLite データベースを通して行います。直接 I/O を行う手段はありません。それそれのアプリは自身のデータストアを持ち、それはデータベースによりディスクへシリアライズされます。

-

データの廃棄

-

ユーザがアプリをアンインストールするときは、アプリケーションに関連づけられたすべてのデータ (Cookie、localStorage、IndexedDB など) が削除されます。

-

プライバシー

-

Mozilla は自身のプライバシーの原則 (https://www.mozilla.org/privacy/) に従って、ユーザのプライバシーやデータの保護を約束しており、それは Mozilla Manifesto (https://www.mozilla.org/about/manifesto.html) に由来します。Mozilla Firefox のプライバシーポリシーでは、Mozilla Firefox Web ブラウザのユーザに関する情報を Mozilla がどのように収集および使用するかについて、Firefox が何を Web サイトに送信するか、データを守るために Mozilla は何をするか、Mozilla の Data Practices などを説明しています。詳しくは以下をご覧ください:

- -

Firefox OS はユーザの手によるユーザデータの制御手段を投入することでこれらの原則を実践しており、ユーザはこの個人情報がどこへ行くかを決定できます。Firefox OS は以下の機能を提供します:

- diff --git a/files/ja/archive/b2g_os/security/system_security/index.html b/files/ja/archive/b2g_os/security/system_security/index.html deleted file mode 100644 index 164c69ed87..0000000000 --- a/files/ja/archive/b2g_os/security/system_security/index.html +++ /dev/null @@ -1,385 +0,0 @@ ---- -title: システムセキュリティ -slug: Archive/B2G_OS/Security/System_security -tags: - - B2G - - Firefox OS - - Security -translation_of: Archive/B2G_OS/Security/System_security ---- -
-

本記事では、Firefox OS のシステムセキュリティモデルの概要を説明します。すなわち、オペレーティングシステムがどのようにセキュリティや許可設定の適用を提供するかを説明します。

-
-

用語

-

システムセキュリティモデルに踏み込む前に、ここで理解しておきたいキーワードを挙げます。

-
-
- Web アプリケーション
-
- Web アプリケーションopen web appmoz app、あるいはアプリケーションとは、HTMLJavaScript などのオープンな Web 技術で記述され、Firefox OS (または、同様のインストール可能なアプリモデルをサポートする、他のプラットフォーム) で動作するプログラムです。B2G でユーザが目にするアプリケーションはすべて、Web アプリケーションです。例えば、ダイヤラーは Firefox OS の Web app です。ここでは、ブラウザ内で動作しているページは Web app とは呼びません。
-
- b2g プロセス
-
- Firefox OS の b2g プロセスは、一般的に "b2g" または "Gecko" と呼ばれます。これは本質的には、高い権限で実行 (すなわち root として実行) しているアプリケーションであり、任意のアプリケーションが持つすべてのリソースやデバイスへのアクセスを制御します。
-
- Content プロセス
-
- これは b2g プロセスから生み出された子プロセスで、b2g プロセスと通信します。このプロセスは、Web アプリケーションを表します。またこれは、低い権限のプロセス (すなわち通常のユーザで実行され、オペレーティングシステムへのアクセスや参照範囲はごく限られています) です。Content プロセスは、プロセス間通信 (IPC) を使用して Firefox OS のコアプロセスと通信します。
-
- IPDL
-
- Intercommunication Protocol Definition Language のことであり、詳しくは IPDL をご覧ください。
-
- AOSP
-
- Android Open Source Project のことです。
-
- システムコール
-
- ユーザ空間 (プロセス) とカーネルとの間で対話するためのインターフェイスです。この他に、ユーザ空間とカーネルが直接対話する方法はありません。
-
- DAC、MAC
-
- 任意アクセス制御 (Discretionary Access Control) (ユーザが設定する) および強制アクセス制御 (Mandatory Access Control) (カーネルにより強制される) のことです。
-
- FOTA
-
- ファームウェアの Over The Air (Firmware Over The Air) 更新システムの仕組みです。ファームウェア全体の更新を意味する用語であり、通常は "over the air"、すなわち無線通信を用いて携帯電話へ送信します。
-
- MSU、MAR
-
- Mozilla System Updater および Mozilla ARchive のことです。Gecko の更新を意味する用語であり、デスクトップ版 Firefox と同じ更新機構およびアーカイブ形式を使用します。
-
-

Firefox OS システムセキュリティモデルの目的と範囲

-

Firefox OS システムセキュリティモデルは、以下のように設計しています:

- -

それぞれの目的の詳細説明や Firefox OS でこれらをどのように対処しているかについては、以降の章で説明します。

-

許可設定の適用

-

アプリケーションセキュリティモデルでは、どのようにしてユーザが直接または信頼されたサードパーティを通してアプリケーションの許可設定を承諾するかを説明しています。これらの許可設定はコアプロセス への IPC コールによって実現する、リソースへの全アクセスに強制することにより、content プロセス に適用されます。

- -

Content プロセスの初期化

-

すべての Web アプリケーションは低い権限および分離されたプロセスで実行します: それは Firefox OS の content プロセス です。このプロセスは、特別な <iframe> のタイプである <iframe mozapp> に達したときに、b2g コアプロセスによって起動されます。これは Web アプリケーションと残りの content とを分離するとともに、マニフェストに強く結びつけられています (詳しくはアプリケーションセキュリティモデルをご覧ください)。content プロセスは、"out of process" コンテナまたは OOP と呼ばれるコンテナ内で開始します。これは plugin-container プロセスに相当しており、デスクトップ版 Firefox の plugin-container で使用しているものと似たコードを使用しています。

-

リスク

- -

実装

-

b2g プロセスでの初期化

-

以下の順序で行います:

-
    -
  1. fork()
  2. -
  3. setuid(new, different, unused user id|nobody) (特権がないユーザ)
  4. -
  5. chrdir('/')
  6. -
  7. execve('plugin-container')
  8. -
-

これは、OOP プロセスが分離されたメモリ空間 (新しいプロセス)、および b2g と同じ水準の権限に昇格できない低権限のユーザで実行するようにします。

-

ファイルディスクリプタの制御

-

ファイルディスクリプタは、ホワイトリスト方式を使用して制御します。許可されたファイルディスクリプタ (FD) のリストは、mFileMap オブジェクト内に生成および保管されます。LaunchApp() 関数は、ホワイトリスト上にないすべての FD を強制的に閉じます。これは、fork() (FD がコピーされるとき) と execve() (新しいアプリが実行開始するとき) の間に行います。

-

ブラックリスト (close-on-exec フラグ: CLOEXEC) を使用する伝統的な方式とは異なり、開いたままの FD がないようにします。従って、より信頼できます。

-

Content プロセスのサンドボックス化 (低権限の content プロセス)

-

リスク

- -

以下は前述のリスクの簡単な要約に加えて、サンドボックス有効時の脅威をモデル化した表です。

-
-

ねらい: 攻撃者が content プロセスで任意のコードを実行した場合に発生する脅威を以下に示します。言い換えると、攻撃者はすでに Gecko の脆弱性を発見しています。

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
脅威考えられる影響要因となる可能性提案された緩和策
-

悪意のある content プロセスが、既存のカーネル脆弱性を悪用する

-

"2 段階の攻撃"

-
重大: デバイスの完全な制御: content プロセスが可能なシステムコールの数は制限されている。 -
    -
  • 許可するシステムコールの数を極力減らす。
  • -
  • PaX (Protection Against eXecution) など、カーネルを保護するための先進的なパッチを使用する。
  • -
-
-

親プロセスへの権限昇格

-

悪意のある content プロセスが、IPDL を通して親プロセスを悪用する

-

"2 段階の攻撃"

-
: かなりの量の重要なシステムコールを実行される可能性 (データ喪失、カメラへのアクセス、ネットワークアクセスなど): 親プロセスには大量のコードがある。攻撃箇所が多数存在する。最小限のサニタイズを施したデータが IPDL で送信される (例えば、ポインタの送信が可能)。 -
    -
  • 親プロセスを root 以外/特権がないユーザで実行する。
  • -
  • 可能な限り多くの親プロセスのサンドボックス化を試みる。
  • -
-
-

悪意のある content プロセスによる、既存のカーネル脆弱性を悪用した親プロセスの侵害

-

"3 段階の攻撃".

-
重大: デバイスの完全な制御 -

: 親プロセスに、IPDL を通したアクセスが可能なバグが必要。

-

親プロセスがアクセスできるシステムコール内に、カーネルの脆弱性が必要 (content プロセスに比べて、親プロセスはより多くのシステムコールにアクセス可能)。

-
-
    -
  • 親プロセスを root 以外/特権がないユーザで実行する。
  • -
  • 可能な限り多くの親プロセスのサンドボックス化を試みる。
  • -
  • PaX (Protection Against eXecution) など、カーネルを保護するための先進的なパッチを使用する。
  • -
-
-

悪意のある content プロセス、親プロセス、あるいは Web アプリケーションが、デバイスのハードウェアに存在するバグを悪用する

-

"1 および 2 段階の攻撃"

-
-

: 高い権限の操作 (電話の発信、SMS の送信など) を行われる可能性

-

重大: ハードウェアレベルでコードを実行し、デバイスを完全に制御する可能性

-
: ハードウェアとの通信経路、IPDL またはシステムコールを通した許可、およびハードウェアのバグが必要。 -
    -
  • ハードウェアデバイスのファズテスト。
  • -
  • カーネルや親プロセスへの API パッチによる、回避策の提供 (脆弱性があるハードウェア機能へのアクセス無効化や、データを渡す前のサニタイジング)。
  • -
-
-
-

注記: PaX (Protection Against eXecution) は GrSecurity (docs) によるカーネルパッチで、"PaX" に加えて UDEREF や SMAP といった付加的な保護機能も実装しています。

-

リストアップしていない脆弱性は、サンドボックス自体で緩和します。

-
-

実装

-
-

スーパーバイザーは未実装です。

-
-

Process Model Sandbox

-
-

注記: Content プロセスは Web アプリケーションを実行しており、サンドボックス化されたプロセスです。

-
-

Gecko の API 実装

-

content プロセス内で JavaScript を経由して公開される API は、ファイルシステムのリソースに直接アクセスしてはいけません。代わりに、それらはリソースへの IPDL コールを発行します。つまり、リソースにアクセスする API は、content プロセスに代わってリソースにアクセスするためのコンポーネントを親プロセスに持っていなければなりません。

-

コールを実装する際は、追加の策をとらなければなりません。すべての入力情報は、親プロセスによってサニタイズされます。content プロセスは信頼できず、また content プロセスから来る IPDL メッセージも信頼できません。

-
-

警告: content プロセスに与えられる信頼はサンドボックスの回避に使用でき、また使用されるでしょう。

-
-

seccomp とは何か

-

seccomp とは、セキュアコンピューティングモード (secure computing mode)を意味します。現在は 2 つのバージョンの seccomp があります:

-
    -
  1. -

    seccomp: Linux カーネル 2.6.12 以上で使用可能

    -
      -
    • -

      seccomp を有効にすると、プロセスの readwritesigreturnexit を行うためのシステムコールを制限します。

      -
    • -
    • -

      prctl() システムコールを使用します。

      -
    • -
    • -

      プロセスの初期化を始めた後、調停領域で開始可能です。

      -
    • -
    -
  2. -
  3. -

    seccomp-bpf: seccomp mode filter または mode 2 とも呼ばれ、Linux カーネル 3.5 以上で利用可能

    -
      -
    • -

      seccomp と同じですが、システムコールのフィルタに BPF を実装しています。

      -
    • -
    • -

      ハードコードされたシステムコールの代わりに、初期化時にシステムコールや引数のホワイトリストを使用可能です。

      -
    • -
    • -

      より柔軟性があり、"より自由なサンドボックス" を実現できます。やや弱いサンドボックス向け、および "より厳しいサンドボックス" へのスムーズな移行パス向けに有用です。

      -
    • -
    • -

      特権を復帰するためのプロセスや子プロセスを妨げるフラグを追加します。

      -
    • -
    -
  4. -
-
-

注記: 柔軟性を理由に私たちは seccomp-bpf の使用を決めて、それゆえに seccomp-bfd を 3.5 未満のカーネルにバックポートしました。これには、ほとんどの現行 Android カーネルも含みます。パッチはすでに使用できる状態であり、通常は競合なしに適用できます (バグ 790923 をご覧ください)。

-
-

Seccomp-bpf のパフォーマンス

-

seccomp-bpf はシステムコールがあるたびに、パフォーマンスに影響を与えます。実装に依存して測定するような、正確なベンチマークはありません。

-

実行中のプロセス向けに seccomp-bdf が有効でシステムコールが行われるときに、最大 1% 程度パフォーマンスに影響を与えると推定しています。これは QA で測定すべきです。

-

私たちのプロセスモデルではシステムコールの数を著しく削減したため、実際のパフォーマンスへの影響はほぼないであろうと予測しています。

-

しかし IPDL コールはその実装により、レイテンシを追加してパフォーマンスを下げるでしょう。OpenGL コールのようなリソース集約的 API 向けの Chromium の実装を見ることを強く推奨します。seccomp-bpf と同様に、IPDL コールの数を最小化すればパフォーマンスへの影響は最小化されるでしょう。

-

実装

-

Gecko では --enable-content-sandboxseccomp を有効化します。

-

拒否されたシステムコールがある場合に報告するレポーターはデフォルトでビルドされません。--enable-content-sandbox-reporter で有効化します。

-

コードの大部分は gecko/security/sandbox にあります。ホワイトリスト自体は gecko/security/sandbox/seccomp_filter.h にあります。

-

ホワイトリストには、区画化に使用できるシステムコールが含まれます。通常、これらのシステムコールには理由を表すコメントがあり、最終的に影響があるコードが修正されたときに削除されるでしょう。従って、サンドボックスを破壊してあまり深く考慮せずにホワイトリスト内のシステムコールを追加するコードを加えることはほとんどありません。疑わしいものはバグを提示します。しかしこれはほとんどの場合に不正確であり、代わりにリソースは制御されて b2g プロセスにアクセスされ、アクセスが承諾されるかデータがサニタイズされた場合に content プロセスへ渡されます。

-

ファイルシステムの堅固化

-

リスク

- -

実装

-

理論的根拠は、ユーザのコンテンツを含む領域のみ読み書き可能としてよく (将来 OS 自身が新たに読み書き可能な領域を要求しない限り)、また nodevnosuid、および noexec オプションを含まなければならない、ということです。標準的なファイルシステムのマウントは、以下のように制限します:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
マウントポイントファイルシステムオプション
/rootfs読み取り専用
/devtmpfs読み書き可能、nosuid、noexec、mode=0755
/dev/ptsptsfs読み書き可能、nosuid、noexec、mode=0600
/procproc読み書き可能、nosuid、nodev、noexec
/syssysfs読み書き可能、nosuid、nodev、noexec
/cacheyaffs2 または ext4読み書き可能、nosuid、nodev、noexec
/efsyaffs2 または ext4読み書き可能、nosuid、nodev、noexec
/systemext4読み取り専用、nodev
/dataext4読み書き可能、nosuid、nodev、noexec
/mnt/sdcardext4 または vfat読み書き可能、nosuid、nodev、noexec、uid=1000、fmask=0702、dmask=0702
/acctcgroup読み書き可能、nosuid、nodev、noexec
/dev/cpuctlcgroup読み書き可能、nosuid、nodev、noexec
-
-

注記: 正確なマウントポイントは変わるかもしれません。

-
-

Linux DAC

-

Linux DAC は、有名な Linux のファイルシステムパーミッションモデルを表します。

-
-

注記: これは伝統的な ユーザ/グループ/その他 のパーミッションモデルであり、Linux POSIX 1.e ACL ではありません

-
- -

安全なシステム更新

-

リスク

- -

実装

-

Firefox OS プラットフォームのアップグレードやパッチ適用は、携帯電話機内のシステムイメージの継続的な整合性を保証する、セキュアな Mozilla のプロセスを使用して展開されます。更新パッケージは、その組み立て、構築、テスト、デジタル署名の実施について責任を持つ、既知の信頼された提供元 (通常はデバイスの OEM) によって作成されます。

-

ファームウェアの over the air 更新

-

システム更新は、Firefox OS スタックの全体あるいは一部に関与する場合があります。更新内容に Gonk の変更が含まれている場合は、インストールプロセスとして FOTA (Firmware Over the Air) を使用します。FOTA アップデートには、デバイス管理 (FOTA、ファームウェア、ドライバ)、設定管理 (Firefox OS の設定)、セキュリティ更新、Gaia、Gecko、あるいは他のパッチといった、Firefox OS スタックの他の部分に対するものが含まれることもあります。

-

MSU/MAR 更新

-

Gonk に関与しないアップデートは、Mozilla System Update Utility を使用して実施できます。Firefox OS では、Firefox のデスクトップ製品と同じ更新フレームワーク、プロセス、Mozilla ARchive (MAR) 形式 (更新パッケージで使用) を使用します。

-

更新サービス

-
-

注記: 更新サービスは OEM から提供される場合があります。

-
-

携帯電話機内蔵の更新サービスが、定期的にシステム更新の確認を行います。更新パッケージが入手可能になって更新サービスにより検出されると、インストール実施の確認をユーザに促します。更新パッケージをモバイルデバイスへインストールする前に、デバイスのストレージで更新の適用に十分な領域があるかを確認します。またディストリビューションの検証が行われます:

- -

更新プロセスの間に、以下のセキュリティ対策を使用します:

- -

携帯電話機に更新が適切に適用されたことを保証するための、厳密なチェックがあります。

-
-

注記: プラットフォームの更新について、詳しくは Firefox OS の更新パッケージを作成、適用する をご覧ください。

-
-

 

diff --git a/files/ja/archive/b2g_os/simulator/index.html b/files/ja/archive/b2g_os/simulator/index.html deleted file mode 100644 index 22c358b22d..0000000000 --- a/files/ja/archive/b2g_os/simulator/index.html +++ /dev/null @@ -1,114 +0,0 @@ ---- -title: Firefox OS Simulator -slug: Archive/B2G_OS/Simulator -tags: - - Apps - - Firefox OS - - Tools -translation_of: Archive/B2G_OS/Simulator ---- -
-

このページでは、Firefox OS 1.2 以降をターゲットにする開発者向けの Firefox OS Simulator について説明します。Firefox OS 1.1 向けのアプリを開発している場合は、代わりに Firefox OS 1.1 Simulator をご覧ください。

-
- -

Firefox OS Simulator は、Firefox OS デバイスのシミュレーションを行う Firefox OS の上位レイヤー版ですが、デスクトップ環境で動作します。これは多くの場合、アプリのテストやデバッグに実機が必要ないということです。これは Firefox OS デバイスと同じサイズのウィンドウで動作し、Firefox OS のユーザインターフェイスや同梱アプリを含み、そして Firefox OS デバイスの API の多くをシミュレーションします。

- -

Simulator は、Firefox のアドオンとしてパッケージ化および頒布しています。Simulator をダウンロードして Firefox にインストールすると、Simulator の実行、アプリの追加、アプリマネージャWebIDE を使用して開発ツールを接続することができます。

- -

インストール

- -

Simulator をインストールするには、WebIDE の外部コンポーネント管理ペイン (Firefox 34 以降で使用できます) を使用します。複数のバージョンを利用できますので、フレキシビリティを最大化するためにすべてインストールすることをおすすめします。

- -

WebIDE のランタイム一覧で、開始する Simulator を選択します。詳しくは WebIDE のドキュメントで操作手順をご覧ください。Simulator を開始すると WebIDE を使用して実機と同様に、アプリの追加やデバッグが可能になります。

- -

アプリマネージャ (WebIDE より前に使用できた古いツール) を使用している場合は、以下のボタンから Simulator をインストールできます:

- -

Simulator をインストール

- -

Simulator のユーザインターフェイス

- -

Simulator は個別のウィンドウで表示され、320x480 ピクセルのスクリーン領域をシミュレーションするようなサイズになります。タッチイベントをシミュレーションするには、マウスボタンでクリックして、ボタンを押したままドラッグします。よってホームスクリーンで右から左へクリック アンド ドラッグを行うことで、組み込み済みのアプリと合わせてあなたが追加したアプリが表示されます:

- -

- -

Simulator 下部のツールバーに、ボタンが 2 つあります:

- - - -

SD カードのエミュレーション

- -

Simulator では、デバイスの SD カードを Simulator のプロファイルの "fake-sdcard" ディレクトリにマップします。プロファイル自体は Simulator をインストールした Firefox プロファイルの "extensions" ディレクトリに置かれます。例えば:

- -
/path/to/Firefox/Profiles/Firefox-profile-name/extensions/fxos_2_2_simulator@mozilla.org/profile/fake-sdcard
- -

getDeviceStorage API を使用して読み書きしたファイルは、このディレクトリに存在します。

- -

2.2 より前のバージョンの Simulator では、"fake-sdcard" ディレクトリを手動で作成しなければなりませんでした。バージョン 2.2 より、"fake-sdcard" ディレクトリを自動的に作成します。

- -

またバージョン 2.2 より、Simulator をコマンドラインから起動する場合に --storage-path オプションを使用して、別のディレクトリを示すことが可能になりました。

- -
注記: これは主に、API のテストを意図した機能です。音楽を "fake-sdcard" ディレクトリから読み取ることはできませんが、システムの ~/Music から読み取ることができます。また、画像を ~/Pictures から、動画を ~/Videos から読み取ることができます。ダウンロードしたファイルは ~/Downloads に保存します。user-dirs.dirs による再定義もサポートします。
- -

Simulator の制限事項

- -

Firefox OS Simulator は完全なシミュレーションではないことに注意してください。

- -

ハードウェアの制限事項

- -

スクリーンサイズを除き、Simulator はメモリ容量や CPU の速度といった、Firefox OS デバイスのハードウェアの制限事項をシミュレーションしません。

- -

Audio/Video コーデック

- -

以下のコーデックは、ハードウェアアクセラレーションによるデコードに依存するため未サポートです:

- - - -

すなわち、これらのコーデックに依存する Youtube などの Web サイトやビデオ再生アプリのテストに Simulator を使用することはできません。

- -

非対応の API

- -

デバイスで動作する API には、Simulator で動作しないものがあるでしょう。これは一般的に、サポートするハードウェアがデスクトップ PC で使用できないためです。私たちは Geolocation のように一部の API のシミュレーションを実装しており、将来のリリースでさらに増やす予定です。ただし、現時点では以下の API をサポートしていません。これらを使用するとエラーが発生したり、誤った結果になる可能性があります:

- - - -

助けを得る

- -

疑問点がある場合は、dev-developer-tools メーリングリストirc.mozilla.org の #devtools で質問してみてください。

- -

詳細なログ取得を有効にする

- -

アプリが出力したメッセージは Web コンソールで確認できます。コンソールはWebIDEを使用して、アプリに接続できます。コンソールが接続して動作する前の、アプリ起動時に発生する初期のログを取得したい場合は、Simulator で詳細なログ取得を有効にしてください。

- -

about:config を開いて新たな設定項目を新規作成します。項目名は Simulator のバージョンにより異なります:

- - - -

この設定項目に文字列値 "all" を設定して、アドオンマネージャでアドオンの無効化および再有効化を行ってください。これで、Simulator の動作に関する詳細なログをブラウザコンソールに表示します。

- -

Simulatorをビルドする

- -

Simulator に含まれる Gecko や Gaia のコードに適用するパッチのテストを行いたい場合は、カスタマイズした Gecko ビルドや Gaia プロファイルを使用するために Simulator を変更したいと考えるでしょう。あるいは、チェックアウトした Gecko から新たな Simulator をビルドすることもできます。

- -

代替手段

- -

Gaia を実行する色々な方法 — 実行の容易さの昇順および出荷製品への近さの逆順に並べたリストもあります (このリストによれば、Firefox OS Simulator は実行がもっとも容易、およびもっとも出荷製品から遠い方法です)。

diff --git a/files/ja/archive/b2g_os/simulator/simulator_walkthrough/index.html b/files/ja/archive/b2g_os/simulator/simulator_walkthrough/index.html deleted file mode 100644 index 2b57c8bff4..0000000000 --- a/files/ja/archive/b2g_os/simulator/simulator_walkthrough/index.html +++ /dev/null @@ -1,282 +0,0 @@ ---- -title: Simulator Walkthrough -slug: Archive/B2G_OS/Simulator/Simulator_Walkthrough -tags: - - Apps - - Firefox OS - - Tools -translation_of: Archive/B2G_OS/Simulator/Simulator_Walkthrough ---- -

本ページでは Firefox OS Simulator を使用して、とても簡単な (しかしバグの多い!) Web アプリのデバッグを行っていきます。

-

このウォークスルーは 6 つのパートで構成されます: それぞれのパートで異なる診断/デバッグルール、特にマニフェスト検証Web コンソールJavaScript デバッガネットワークモニタースタイルエディタテストレシートを使用します。

-

各パートはそれぞれで完結するようにしており、特定のパートのみ読むかたちでも理解できるでしょう。

-

マニフェスト検証の使用

-
-

このウォークスルーに沿っていきたい場合のために、GitHub の firefoxos-simulator-walkthrough リポジトリにさまざまなリビジョンのアプリを置いています。whereami-1 バージョンのアプリから始めると、本章を選択したことになります。

-

このアプリは "Where am I?" という名前のボタン 1 個を表示します。ユーザがボタンをクリックすると、アプリは Geolocation API を使用してユーザの現在地を取得して、地図上に表示します。

-

このウォークスルーでは、Simulator がインストール済みで、Dashboard を開いているものとします。

-
-

始めに "Add Directory" をクリックしてマニフェストを選択することで、Dashboard にアプリを追加します。すると以下のようになるでしょう:

-


-
- "(2 errors and 0 warnings)" をクリックすると以下のようになります:

-


- このエラーメッセージは実に明確です。"manifest.webapp" を確認すると、"name" がないことをご覧いただけるでしょう:

-
{
-  "description": "A simple web app",
-  "launch_path": "/index.html",
-  "icons": {
-    "128": "/style/icons/earth.png"
-  }
-}
-


- マニフェストファイルに "name" フィールドを追加して、ファイルを保存したら Dashboard で "Refresh" をクリックします:

-
{
-  "name": "Where am I?",
-  "description": "A simple web app",
-  "launch_path": "/index.html",
-  "icons": {
-    "128": "/style/icons/earth.png"
-  }
-}
-


- ここで Dashboard はエラーがないことを表示して、アプリを実行するでしょう:

-

-

しかし、ボタンをクリックしても何も起きません。次の章では、この問題を診断するために Web コンソールを使用してみましょう。

-

Web コンソールの使用

-
-

このウォークスルーを始めから順に追っていない場合:

-

本章では Firefox OS Simulator を使用して、とても簡単な (しかしバグの多い!) Web アプリのデバッグを行っていきます。

-

GitHub の firefoxos-simulator-walkthrough リポジトリにさまざまなリビジョンのアプリを置いています。whereami-2 バージョンのアプリから始めると、本章を選択したことになります。

-

このアプリは "Where am I?" という名前のボタン 1 個を表示します。ユーザがボタンをクリックすると、アプリは Geolocation API を使用してユーザの現在地を取得して、地図上に表示します。

-

しかしこのバージョンでは、ボタンをクリックしても何も起きません。ウォークスルーの本章では、この問題を診断するために Web コンソールを使用します。

- このウォークスルーでは、Simulator がインストール済みで、Dashboard を開いているものとします。さらに、"Add Directory" をクリックしてアプリの "manifest.webapp" を選択して、アプリを追加済みであるものとします。
-

Dashboard で、"Connect" という名前のボタンを押します:

-

-

Simulator のウィンドウが自動的に開いてアプリを実行します (未実行の場合)。また、Simulator の Dashboard タブ内に Web コンソールが表示されます。

-

コンソールの出力にエラー、警告、メッセージがいくつかありますが、最後のひとつが特に関係があるようです:
-
-
-
- これは明らかに、アプリのスクリプトである "whereami.js" の問題です。以下はスクリプトの先頭から数行です:

-
var whereami = document.getElementById('whereami');
-
-whereami.onclick = function() {
-  navigator.geolocation.getCurrentPosition(getMap, error);
-};
-


- このスクリプトとアプリの "index.html" を比較すると、問題は明らかです:

-
<!DOCTYPE html>
-
-<html>
-
-  <head>
-    <meta charset='utf-8'>
-    <script src="http://open.mapquestap.com/sdk/js/v7.0.s/mqa.toolkit.js"></script>
-    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
-
-  </head>
-
-  <body>
-    <button id ="where-am-i">Where am I?</button>
-    <div id="map"></div>
-    <script src="scripts/whereami.js"></script>
-    <link media="all" href="style/style.css" type="text/css" rel="stylesheet">
-  </body>
-
-</html>
-


- HTML ではボタンに "where-am-i" という ID を割り当てていますが、JavaScript では "whereami" を使おうとしています。よってこれを修正しましょう:

-
var whereami = document.getElementById('where-am-i');
-
-whereami.onclick = function() {
-  navigator.geolocation.getCurrentPosition(getMap, error);
-};
-

これでエラーが発生することなくアプリが起動しますが、ボタンをクリックしても地図は表示されず、Web コンソールに新たなメッセージが現れます:

-

-

このメッセージは "whereami.js" スクリプトによるものであり、Geolocation API がエラーを返していることを示します。しかし、どのようなエラーであるかを伝えていません。それを明らかにするために、JavaScript デバッガを使用できます。

-

JavaScript デバッガの使用

-
-

このウォークスルーを始めから順に追っていない場合:

-

本章では Firefox OS Simulator を使用して、とても簡単な (しかしバグの多い!) Web アプリのデバッグを行っていきます。

-

GitHub の firefoxos-simulator-walkthrough リポジトリにさまざまなリビジョンのアプリを置いています。whereami-3 バージョンのアプリから始めると、本章を選択したことになります。

-

このアプリは "Where am I?" という名前のボタン 1 個を表示します。ユーザがボタンをクリックすると、アプリは Geolocation API を使用してユーザの現在地を取得して、地図上に表示します。

-

しかしこのバージョンでは、ボタンをクリックすると Geolocation API のエラーが返ります。ウォークスルーの本章では、どのようなエラーが返っているかを明らかにするために JavaScript デバッガを使用します。

- このウォークスルーでは、Simulator がインストール済みで、Dashboard を開いているものとします。さらに、"Add Directory" をクリックしてアプリの "manifest.webapp" を選択して、アプリを追加済みであるものとします。 -

 

-
-

アプリに接続した Web コンソールで、Geolocation のエラーログの右側にあるリンクをクリックします:

-


- "whereami.js:8" のリンクをクリックすると、JavaScript デバッガが自動的に読み込まれて、関連するファイルおよび行数を指し示します。

-

Geolocation API のリファレンスによると、エラーハンドラ error() に渡された error オブジェクトの code プロパティによって具体的なエラーが与えられます。そこで、8 行目の左側をクリックすることで error() の内部にブレークポイントを設定します:

-

-

アプリで "Where am I?" をクリックしましょう。ブレークポイントで実行が停止するでしょう:

-

-

"ウォッチ式を追加" と表示されている部分をクリックして "error.code" と入力すると、その値が "1" であることが直ちにわかるでしょう:

-


- Geolocation API のドキュメント によると、"1" は "Permission denied" を表します。これは、Web アプリが Geolocation の許可設定を要求していないか、ユーザによって許可設定が承諾されなかった場合に発生するエラーです。
-
- "manifest.webapp" ファイルを見てください。許可設定を尋ねていなかったことがわかります:

-
{
-  "name": "Where am I?",
-  "description": "A simple web app",
-  "launch_path": "/index.html",
-  "icons": {
-    "128": "/style/icons/earth.png"
-  }
-}
-


- これを修正しましょう:

-
{
-  "name": "Where am I?",
-  "description": "A simple web app",
-  "launch_path": "/index.html",
-  "icons": {
-    "128": "/style/icons/earth.png"
-  },
-  "permissions": {
-    "geolocation": {
-      "description": "Needed to tell the user where they are"
-      }
-  }
-}
-


- "manifest.webapp" を保存して、Dashboard で "Refresh" をもう一度クリックしてください。まだブレークポイントに留まっていますので、再開を忘れないようにしてください。今回のアプリ実行では "Where am I?" をクリックすると、位置情報を共有するかを問い合わせられます。これを許可しても地図は表示されず、Web コンソールに新たなメッセージが表示されます:

-

-

このメッセージは、MapQuest API が正しく読み込まれていないことを示します。MapQuest API は、script タグを使用してアプリに組み込んでいます。この問題を解決するために、ネットワークモニターを使用できます。

-

ネットワークモニターの使用

-
-

このウォークスルーを始めから順に追っていない場合:

-

本章では Firefox OS Simulator を使用して、とても簡単な (しかしバグの多い!) Web アプリのネットワークリクエストを調査していきます。

-

GitHub の firefoxos-simulator-walkthrough リポジトリにさまざまなリビジョンのアプリを置いています。whereami-4 バージョンのアプリから始めると、本章を選択したことになります。

-

このアプリは "Where am I?" という名前のボタン 1 個を表示します。ユーザがボタンをクリックすると、アプリは Geolocation API を使用してユーザの現在地を取得して、地図上に表示します。

-

しかしこのバージョンでは、ブタンをクリックすると Web コンソールに "MQA is not defined" というエラーが表示されます。ウォークスルーの本章では、なぜ MapQuest API が読み込まれないかを明らかにするためにネットワークモニターを使用します。

- このウォークスルーでは、Simulator がインストール済みで、Dashboard を開いているものとします。さらに、"Add Directory" をクリックしてアプリの "manifest.webapp" を選択して、アプリを追加済みであるものとします。 -

 

-
-
-

警告: ネットワークモニターは Firefox 23.0 以上で使用可能です (現在は Firefox Beta です)

-
-

アプリに接続した開発ツールのパネルでネットワークタブをクリックすると、以下のようなパネルが表示されます。ここで、"open.mapquestap.com" ドメインからリソース "mqa.toolkit.js" を読み込む処理が正しく完了していないことがわかります:

-

-

成功したリクエストは緑色表示であり、"open.mapquestap.com" ドメインへのリクエストのひとつ (濃い灰色表示) をクリックしてタイミング詳細パネルを選択すると、DNS 解決が成功していないためにリクエストが一切接続ステータスに達していないことが明らかになります。

-

"index.html" ファイルを見ると、script タグで誤ったドメインを指し示していることがわかるでしょう。

-

このバグを修正しましょう。正しいドメインを使用するように script タグを変更します: open.mapquestapi.com (ドメイン名で不足している 'i' を追加):

-
<!DOCTYPE html>
-
-<html>
-
-  <head>
-    <meta charset='utf-8'>
-    <script src="http://open.mapquestapi.com/sdk/js/v7.0.s/mqa.toolkit.js"></script>
-    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
-
-  </head>
-
-  <body>
-    <button id ="where-am-i">Where am I?</button>
-    <div id="map"></div>
-    <script src="scripts/whereami.js"></script>
-    <link media="all" href="style/style.css" type="text/css" rel="stylesheet">
-  </body>
-
-</html>
-

"index.html" を保存して、Dashboard で "Refresh" をもう一度クリックしてください。今回のアプリ実行では "Where am I?" をクリックすると、位置情報を共有するかを問い合わせられます。これを許可すると、アプリが地図を表示します:
-

-

 

-

スタイルエディタの使用

-
-

このウォークスルーを始めから順に追っていない場合:

-

本章では Firefox OS Simulator を使用して、アプリのスタイルシートをカスタマイズします。

-

GitHub の firefoxos-simulator-walkthrough リポジトリにさまざまなリビジョンのアプリを置いています。whereami-5 バージョンのアプリから始めると、本章を選択したことになります。

-

このアプリは "Where am I?" という名前のボタン 1 個を表示します。ユーザがボタンをクリックすると、アプリは Geolocation API を使用してユーザの現在地を取得して、地図上に表示します。

-

このバージョンでは以前のバグがすべて修正されています。実行中のアプリのスタイルをリアルタイムに変更するためにスタイルエディタを使用して、満足したときに保存します。

- このウォークスルーでは、Simulator がインストール済みで、Dashboard を開いているものとします。さらに、"Add Directory" をクリックしてアプリの "manifest.webapp" を選択して、アプリを追加済みであるものとします。 -

 

-
-
-

警告: スタイルエディタは Firefox 23.0 以上で使用可能です (現在は currently Firefox Beta です)

-
-

アプリに接続した開発ツールでスタイルエディタタブをクリックすると、以下のようなパネルが表示されます:

-

-

左側のスタイルシート一覧で "style/style.css" を選択して、CSS 規則をいくつか変更しましょう。新たな規則は、接続したいるアプリへ直ちに適用されます:

-

-

スタイルシート一覧で "style/style.css" のすぐ下にある "保存" リンクをクリックして、スタイルシートをプロジェクトに書き戻すことができます。

-

テストレシートの使用

-
-

このウォークスルーを始めから順に追っていない場合:

-

本章では Firefox OS Simulator を使用して、Web アプリに支払いレシートの検証コードを追加します。

-

GitHub の firefoxos-simulator-walkthrough リポジトリにさまざまなリビジョンのアプリを置いています。whereami-6 バージョンのアプリから始めると、本章を選択したことになります。

-

このアプリは "Where am I?" という名前のボタン 1 個を表示します。ユーザがボタンをクリックすると、アプリは Geolocation API を使用してユーザの現在地を取得して、地図上に表示します。

-

このバージョンでは、課金 Web アプリに変更していきます。

- このウォークスルーでは、Simulator がインストール済みで、Dashboard を開いているものとします。さらに、"Add Directory" をクリックしてアプリの "manifest.webapp" を選択して、アプリを追加済みであるものとします。 -

 

-
-

アプリはバグがなくなり、また適切にスタイルが設置されましたので、アプリのユーザが購入したことを保証するために、支払いレシートの検証機能を追加しましょう。

-

Mozilla は、アプリのレシート確認を支援する小さな JavaScript ライブラリをリリースしました: http://github.com/mozilla/receiptverifier

-

receiptverifier をアプリに追加しましょう。例えば、"index.html" ファイルに新たな script タグを追加します:

-
<!DOCTYPE html>
-
-<html>
-
-  <head>
-    <meta charset='utf-8'>
-    <script src="https://raw.github.com/mozilla/receiptverifier/master/receiptverifier.js"></script>
-    <script src="http://open.mapquestapi.com/sdk/js/v7.0.s/mqa.toolkit.js"></script>
-    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
-
-  </head>
-
-  <body>
-    <button id ="where-am-i">Where am I?</button>
-    <div id="map"></div>
-    <script src="scripts/whereami.js"></script>
-    <link media="all" href="style/style.css" type="text/css" rel="stylesheet">
-  </body>
-
-</html>
-

そして、"mozmarket.receipts.Verifier" を使用して "scripts/whereami.js" でレシートを確認します (例えば、ボタンをクリックしたときやアプリを読み込むとき):

-
...
-
-var verifier = new mozmarket.receipts.Verifier({
-  installs_allowed_from: '*',
-  typsAllowed: 'test-receipt',
-  logLevel: mozmarket.receipts.Verifier.levels.DEBUG,
-  onlog: mozmarket.receipts.Verifier.consoleLogger
-});
-verifier.clearCache();
-
-function verifyPaymentReceipts(cb) {
-  verifier.verify(function (verifier) {
-    if (verifier.state instanceof verifier.states.OK) {
-      cb(null); // valid payment
-    } else {
-      cb("invalid-payment"); // invalid payment
-    }
-  });
-  setTimeout(function checkNoReceipts() {
-    if (verifier.state instanceof verifier.states.NoReceipts) {
-      cb("no-receipts");
-    }
-  }, 2000);
-}
-
-whereami.onclick = function() {
-  verifyPaymentReceipts(function (err) {
-    if (err) {
-      alert("Invalid Payment Receipt.");
-    } else {
-      navigator.geolocation.getCurrentPosition(getMap, error);
-    }
-  });
-};
-
-

レシートは (Marketplace および支払いサービスによって) 暗号による署名が施されていますが、Simulator ではアプリのエントリにある "Receipts" メニューでインストールするレシートの種類 (既定値は "None") を選択することで、テストレシートとともにアプリをインストールできます:

-

-

"Valid""Invalid""Refunded" の各レシートがあるとき (およびレシートがないとき) にアプリがどのように動作するかをテストでき、また結果は Web コンソールで、receiptverifier ライブラリが生成するログを確認することでわかります。:

-

-

-
-

注記: 完成したアプリを whereami-7 バージョンから取得できます。

-
-

 

diff --git a/files/ja/archive/b2g_os/tvs_connected_devices/hello_world_example/index.html b/files/ja/archive/b2g_os/tvs_connected_devices/hello_world_example/index.html deleted file mode 100644 index fd7a8913de..0000000000 --- a/files/ja/archive/b2g_os/tvs_connected_devices/hello_world_example/index.html +++ /dev/null @@ -1,125 +0,0 @@ ---- -title: Firefox OS for TV での hello world の例 -slug: Archive/B2G_OS/TVs_connected_devices/Hello_world_example -tags: - - B2G - - Example - - Firefox OS - - Gaia - - TV - - WebIDE -translation_of: Mozilla/Firefox_OS_for_TV/Hello_world_example ---- -

- -

この記事では、シンプルな hello world の例を紹介し、TVアプリを作って、シミュレータでテストするのがどんなに簡単なのかをお見せします。この記事では WebIDE を使って行きます。

- -

hello world を作成する

- -

Let's build up a test app.

- -
    -
  1. -

    To open the WebIDE in Firefox Desktop, select Tools > Web Developer > WebIDE from the main menu:

    - -

    -
  2. -
  3. -

    Now click Open App in the upper-left corner of WebIDE and choose New App… from the menu:

    - -

    -
  4. -
  5. -

    Select HelloWorld, enter the Project Name and click OK:

    - -

    -
  6. -
  7. -

    After specifying the directory to save the project in, WebIDE generates an app for you containing simple template code:

    - -

    -
  8. -
  9. -

    Now you can program your app directly within WebIDE, or use any other editor that you prefer to edit your code.

    -
  10. -
- -

TV でアプリを実行する

- -

If you have a Panasonic VIERA Firefox OS TV, you can find out how to run your apps on the TV via WebIDE by reading How to connect WebIDE to TV (VIErA CX/CR series). If not, read on.

- -
    -
  1. Follow the instructions in Simulating Firefox OS for TV on your desktop to launch the TV environment inside the Firefox OS simulator.
  2. -
  3. If you are using the available Firefox 2.6 simulator, simply skip to step 5. If you are using your own custom build, read on.
  4. -
  5. In WebIDE, click Select Runtime in the upper-right corner then select Remote Runtime from the menu.
    -
  6. -
  7. Enter localhost:6000 in the dialog box and click OK:
    -
  8. -
  9. Click the Install and Run icon (the "Play" icon) in the WebIDE. You should now see your app running inside the Firefox OS Simulator:
    -
  10. -
  11. Click the Debug App icon (the "Tool" icon) in WebIDE to debug your app directly on the simulator using the DevTools Toolbox:
    -
  12. -
- -
-

Note: Find out more about debugging your apps by reading Debugging apps.

-
- -

次に移動する場所

- -

Building web apps for TV mostly requires the same skills as building web apps generally; there are a few extra considerations to bear in mind, which are discussed in other articles linked from our TVs and connected devices page.

- -

In terms of getting inspiration from existing apps, your can look at the apps that come with Gaia. Gaia 2.1 and above contains facilities for running on TV, and you can find apps for smart TVs in the gaia/tv_apps directory. smart-home and app-deck are good apps to use as starter templates for your own apps, or to get ideas and inspiration from.

diff --git a/files/ja/archive/b2g_os/tvs_connected_devices/how_to_connect_webide_to_tv_(viera)/index.html b/files/ja/archive/b2g_os/tvs_connected_devices/how_to_connect_webide_to_tv_(viera)/index.html deleted file mode 100644 index 5369864862..0000000000 --- a/files/ja/archive/b2g_os/tvs_connected_devices/how_to_connect_webide_to_tv_(viera)/index.html +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: TV(VIERA CX/CR シリーズ)へのWebIDEの接続方法 -slug: Archive/B2G_OS/TVs_connected_devices/How_to_connect_WebIDE_to_TV_(VIErA) -translation_of: Mozilla/Firefox_OS_for_TV/How_to_connect_WebIDE_to_TV_(VIErA) ---- -

Firefox OSによって力を得た最初のスマートTV — Panasonic の VIERA スマートTV — は数カ国で公式にリリースされています。ほかの Firefox OS搭載端末と同様に、VIERA には、開発者がアプリのビルドとデバッグをもっと速く効率的にできるよう、組み込みのDevtool(開発ツール)機能があります。この記事ではVIERAに搭載された Devtools を使い始めるのに必要な事を提供します。

- -
-

注意: Devtools を有効にする前に、次の詳細スケジュールとバージョン情報を読んで、お持ちのTVが WebIDE をサポートしているか(下記に記載しています)を確認してください。

-
- -

スケジュールとバージョン

- -

次のリストに示すバージョン以降であれば、Panasonic の VIERA TV は WebIDE からの接続が可能となります。

- -

ソフトウェアのリリーススケジュールは以下です:

- -

2015年7月:

- - - -

2015年8月:

- - - -

アップデート:

- -
    -
  1.  Menu を選択  > Network > Software Update メニューのオプションを選択
    - もしくは
  2. -
  3. AppsDeck から Market アプリを起動しアップデートダイアログを表示
  4. -
- -

"About Firefox OS"メニューからの"Devtools"の有効化

- -

まず最初に Devtools をTVの上で有効にする必要があります。

- -
    -
  1. “Main Menu”を起動するため、 リモコンから"MENU"キーを選択して下さい。
  2. -
  3. “Help”を選択
  4. -
  5. “About Firefox OS” を選択 -

    The MENU, Help, About Firefox OS menu option in the Firefox OS VIERA TV.

    -
  6. -
  7. ”About Firefox OS” ウィンドウが現れたら“RED” キー(訳注:リモコンの赤ボタン) を10秒間押して下さい。“Devtool” が出現します。 -
      -
    • ("赤"は"注意"を意味しています。10秒間押す必要があるのは意図せずに有効化されるのを防ぐためです。)
    • -
    - -

    The option to turn Devtools on and off on the Firefox OS VIERA TV.

    -
  8. -
  9. "Devtools" をOnにして有効化
  10. -
  11. 注意事項をよく読み、リスクを理解した上で機能を有効にして下さい。 -

    A dialog warning about the risks of turning on the Devtools on the Firefox OS VIERA TV.

    -
  12. -
- -

ネットワーク経由でWebIDEをTVに接続する

- -

次に示す手順は Firefox ブラウザ上の WebIDE からネットワークを経由してTVへと接続する方法です。

- -
-

注意: TV と PC が同じネットワークに接続しているのを確認して下さい。MENU > Network からネットワーク情報を確認できます。

-
- -

TVのIPアドレスを確認する

- -
    -
  1. リモコンから“MENU” キーを押して"Main Menu"を起動して下さい。
  2. -
  3. “Network” を選択: -

    The Network, Network Status menu option on the Firefox OS VIERA TV.

    -
  4. -
  5. “Network Status” を選択するとネットワーク情報の確認が行えます
  6. -
  7. “Status Details”を選択
  8. -
  9. TVのIPアドレスが確認出来ます — あとで確認できるようにメモを取って下さい。 -
      -
    • 次のスクリーンショットでは192.168.11.3 が表示されています: -

      VIERA Menu network status

      -
    • -
    -
  10. -
  11. “Exit” ボタンを押してメニューから抜けて下さい。
  12. -
- -

WebIDEをTVに接続する

- -
    -
  1. PCのFirefoxを起動します。そしてWebIDEを起動して下さい( WebIDE ボタンを押すか、Tools > Web Developer > WebIDE と選択)
  2. -
  3. WebIDEの右上の ”Select Runtime” を選択し、 ”Remote Runtime”オプションを選んで下さい。 -
      -
    •  “hostname:port”  を以下のように記載して下さい: -
        -
      • hostname:  先ほどメモしたTVのIPアドレス。
      • -
      • port: 52222 (52222  はTVのポートの固定値です。)
      • -
      -
    • -
    -
  4. -
- -

WebIDEからの接続を許可する

- -

WebIDEからTVへと接続すると、TVに接続許可のダイアログが表示されます。OKを選択すると WebIDE と TV の間で接続が確立されます。1度に1回のみ表示されます( つまり、他のリクエストは拒否されます。)

- -

The Firefox OS VIERA TV remote debugging incoming request permission screen.

- -
-

注意: インストールするアプリに不適切なパーミッションが入っていたり、認定アプリである場合、インストールに失敗します。

-
diff --git a/files/ja/archive/b2g_os/tvs_connected_devices/index.html b/files/ja/archive/b2g_os/tvs_connected_devices/index.html deleted file mode 100644 index 3fa3c17413..0000000000 --- a/files/ja/archive/b2g_os/tvs_connected_devices/index.html +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: TVとコネクテッドデバイス -slug: Archive/B2G_OS/TVs_connected_devices -tags: - - B2G - - Firefox OS - - Gaia - - Landing - - NeedsTranslation - - TV -translation_of: Mozilla/Firefox_OS_for_TV ---- -

TV とコネクテッドデバイスのランディングページにようこそ。これはTV向けFirefoxOSの現在とこれからの成果に興味があり、TV用アプリを開発する開発者のためのものです。下記にリンクされている記事には、FIrefox OS の TV シミュレータをビルド、実行し、アプリを開発してTVにデプロイし、TVの実装やUXの違い、などを理解するのに必要となるすべてがあります。

- -

現在の状況と将来の計画

- -

Gaia 2.1 以上にはTVで動く設備が入っています。2015年の中盤から、ここに一覧されたアプリに則ったUIのあるTV端末が市場に出ています。その最初のぶんはPanasonic VIERA Smart TVです。

- -

Firefox OSの最新版 (2.5) は、現在パートナーと開発者に利用可能で、新機能を追加しており、今年後半に Panasonic DX900 UHD TV の新レンジで使えるようになるでしょう。このアップデートにはWebアプリを発見してあなたのTVに保存し、TVと他のプラットフォームの Firefox 機能を同期(例えばブックマークなど)する新しい方法が含まれています。もっとも目立つのは、Firefox for Android から Firefox OS powered TV に簡単にWebコンテンツを共有する “send to TV” です。

- -

TV を横断した Firefox OS の努力は、物理世界で利用可能な、より広い範囲のコネクテッドデバイス(i.e. IoT) に向けて、Firefox OS をオープンプラットフォームとして提供する、より広い努力の一部です。

- -

TV 環境セットアップとツール

- - - -

TVアプリを開発する

- -

この章では自身のTVアプリを実行・テストする環境のセットアップ方法と、簡単なテストアプリをまとめる方法を見て行きます。

- -

TV webアプリの開発

- -

簡潔に言うと、TVと電話機(やデスクトップコンピュータ)とのFirefox OSを使った違いは、次の通り:

- - - -

アプリ開発の記事

- - - -

TV UX 概要

- - - -

Firefox OS の基本

- - - -

TV でのAPIサポート

- -

Firefox OS for TV は Gecko に基づいているので、webプラットフォームで利用可能な API の大半や、Firefox OS 固有の API をサポートしています。しかしながら、例外があって、次のリストがその概要です:

- - diff --git a/files/ja/archive/b2g_os/tvs_connected_devices/interacting_with_tv_remote_controls/index.html b/files/ja/archive/b2g_os/tvs_connected_devices/interacting_with_tv_remote_controls/index.html deleted file mode 100644 index 8c393d65ee..0000000000 --- a/files/ja/archive/b2g_os/tvs_connected_devices/interacting_with_tv_remote_controls/index.html +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: TV リモコンでインタラクションする -slug: Archive/B2G_OS/TVs_connected_devices/Interacting_with_TV_remote_controls -translation_of: Mozilla/Firefox_OS_for_TV/Interacting_with_TV_remote_controls ---- -

- -

-

草案
- このページは完成していません。

- -

- -

One of the most notable differences between phones and TVs is the available input mechanisms. In general, a TV doesn’t include a touch screen, so apps can’t be controlled by mouse events or touch events. Instead, your apps will probably need to be operated by the button events sent by the TV when its remote control buttons are pressed. This article discusses the basics of how to develop appropriate control mechanisms for your TV app.

- -

Focus is another issue that needs to be highlighted on TV apps. It’s important to make sure that the focus is on the right element at all times, since you can’t touch elements in a TV app directly.

- -
-

Note: TV remote control keys are defined in the W3C DOM Level 3 KeyboardEvent key Values spec; see the Media Controller Keys section.

-
diff --git a/files/ja/archive/b2g_os/tvs_connected_devices/simulating_firefox_os_for_tv/index.html b/files/ja/archive/b2g_os/tvs_connected_devices/simulating_firefox_os_for_tv/index.html deleted file mode 100644 index 017c6c4c6d..0000000000 --- a/files/ja/archive/b2g_os/tvs_connected_devices/simulating_firefox_os_for_tv/index.html +++ /dev/null @@ -1,126 +0,0 @@ ---- -title: あなたのコンピュータで、Firefox OS for TV をシミュレーションする -slug: Archive/B2G_OS/TVs_connected_devices/Simulating_Firefox_OS_for_TV -translation_of: Mozilla/Firefox_OS_for_TV/Simulating_Firefox_OS_for_TV ---- -

- -

この記事では、Firefox OS for TV のシミュレータを、あなたのコンピュータでセットアップして、自分の TV アプリを実行・テストする方法を学習します。

- -

WebIDE 経由でシミュレータを使用する

- -

Soon, you will no longer be required to download multiple tools to get a simulator for TV — After bug 1212352 gets fixed, Mozilla's WebIDE tool will provide an easy way to create a custom simulator for different TV setups.

- -
    -
  1. -

    Open the WebIDE in Firefox Desktop by selecting Tools > Web Developer > WebIDE from the main menu.  The right side of the WebIDE window provides a listing of already-installed simulators as well as an Install Simulator menu to create a new simulator instance inside WebIDE.

    -
  2. -
  3. -

    If you haven't yet installed a simulator, do so by selecting Install Simulator and installing the Firefox OS TV version of your choosing.

    - -

    -
  4. -
  5. -

    Once your simulator instance is created and listed under Simulators, click the settings icon to the right of the simulator name.  You'll be presented with a screen that allows you to configure the device you'd like to simulate.

    - -

    -
  6. -
  7. -

    A TVs group is available in the Device dropdown menu, which contains each of the currently supported TV types:

    - -

    -
  8. -
  9. -

    Once you've configured the TV device to your specs, click the simulator name in the right column and the simulator will launch!  The home screen will look as follows:

    - -

    -
  10. -
- -

Using Mulet to simulate Firefox OS for TV

- -

If you'd prefer to build your own TV profile, perhaps to test Gaia changes that have yet to make an official Firefox OS simulator release, you can run your profile in a special build of Firefox called Firefox Mulet. See Using Gaia in Firefox Mulet for instructions showing how to set up the environment.

- -
    -
  1. -

    To create a special Gaia profile for TV, inside your gaia repo folder run the make command with the following options:

    - -
    GAIA_DEVICE_TYPE=tv DEVICE_DEBUG=1 make
    - -

    This creates a TV profile inside the profile directory that is set up for optimal debugging.

    -
  2. -
  3. -

    Run the Mulet build from the command line, passing it your Gaia profile as the profile to use when opening (signified by the -profile option), and setting a specified screen size (signified by the -screen option):

    - -
    ./mulet/FirefoxNightly.app/Contents/MacOS/firefox-bin -no-remote -screen 1600x900 -profile /path/to/gaia/profile
    - -
    -

    Note: If the -screen setting specifies a resolution bigger than your PC’s screen resolution, the system app will not work properly and you might see a broken UI. Reduce the screen size as necessary for your system.

    -
    - -
    -

    Note: The exact -profile /path/to/gaia/profile that you need is given to you when you create your profile (by running the make command, as shown above.)

    -
    -
  4. -
  5. -

    If everything goes well, you'll see the Home app displayed — displayed incorrectly in a rotated portrait mode. It's a known issue (Bug 1228899):TV build runs on Mulet

    -
  6. -
  7. -

    You are able to correct it by clicking the rotate button on Mulet's RWD UI toolbar, and adjusting the screen size as necessary:

    -
  8. -
- -

TV build runs on Mulet

diff --git a/files/ja/archive/b2g_os/tvs_connected_devices/tv_broadcast_streams_firefox_os/index.html b/files/ja/archive/b2g_os/tvs_connected_devices/tv_broadcast_streams_firefox_os/index.html deleted file mode 100644 index 65aca036e9..0000000000 --- a/files/ja/archive/b2g_os/tvs_connected_devices/tv_broadcast_streams_firefox_os/index.html +++ /dev/null @@ -1,94 +0,0 @@ ---- -title: Firefox OS 製品におけるテレビ放送ストリーム -slug: Archive/B2G_OS/TVs_connected_devices/TV_broadcast_streams_Firefox_OS -tags: - - DomMediaStream - - Gecko - - MediaStream - - TV - - framebuffer - - 放送ストリーム -translation_of: Mozilla/Firefox_OS_for_TV/TV_broadcast_streams_Firefox_OS ---- -

この記事では、Firefox OS においてテレビ放送ストリームを処理・表示を可能にした仕組みを説明します。

- -

テレビは Web プロットフォームにおいて新興領域です。これは最近の Web 技術を活用したものです。私たちは現在、エキサイティングなチャレンジとしてテレビで Web を扱い、今後 Web ベースアプリのエクスペリエンスを特徴とする、より面白いインタラクティブな機能を持つ Smart TV をもたらします。Firefox OS はプラットフォームプロバイダーとしてオープンな Web 技術を採用し、より多くのクロスプラットフォーム上で既存の Web アプリを動作させます。

- -

しかし現在のスマートテレビの最も一般的な使用方法は、プラットフォーム固有の機能をFirefox OS でサポートするために我々が実装すべきテレビ放送を扱う機能だけになります。

- -

テレビ放送ストリーム

- -

テレビ放送ストリーム技術は既に開発された技術であり、多くのテレビメーカの競争ポイントとなっています。これらはテレビにおける効果的な AV 同期工学技術を含む技術です。これは、最適化されたフレームレートでなめらかな視聴体験を提供することを意味し、メーカーはハードウェアでコードとレンダリング性能をチューニングしています。

- -

Firefox OS でテレビ放送ストリームを実現する

- -

本来 Web ブラウザ専用に設計された描画パイプラインを持つFirefox OS ではテレビ放送ストリームをネィティブサポートしていません。そのため、Firefox OS は現在、ハードウェアコンポーザーをサポートしておらず、テレビ放送ストリームをデコード・描画する際はメーカーのハードウェアアクセラレーションユーティリティーを必要とします。このような既存技術は信頼性が高く、メーカが既存の技術を捨てるようなものではありません。

- -

Firefox の Gecko はレンダリングパイプラインと現在のフレームの結果をフレームバッファにレンダリングする処理をハンドリングします。しかし、テレビメーカのハードウェアは自前のフレームバッファにレンダリングします。これら2つのフレームバッファはそれぞれ独立し、お互いにブロックしています。この問題を解決するために、DomMediaStream のサブセットである DomHwMediaStream を実装するようにしています。

- -

Figure 1: The hierarchy of DomHwMediaStream

- -

上記の図は、API がオーバーレイイメージを作成し、MediaStream にプライマリービデオトラックを追加していることを示す図です。画面サイズはテレビプログラム仕様に従い調整することが可能です。加えて、DomMediaStream は MediaStream の DOM ラッパーであるため、ビルトインでテレビ放送ストリームをハンドリングするための基本的な幾つかの機能が備わっています。開発者は関連する情報にアクセスするための API  を活用することができます。

- -

サンプルを見ていきましょう

- -
// 使えるテレビチューナー全てを取得する
-navigator.tv.getTuners().then(
-    function(aTuners) {
-
-      for ( var i = 0; i < aTuners.length; ++i ) {
-          var tuner = aTuners[i];
-
-            // チューナーのソースが変更されるたびに新しい mediaStream の情報を取ることができます。
-          tuner.oncurrentsourcechanged = function(aEvent) {
-            getTracksInfo(tuner.stream);
-        };
-      }
-
-    },
-    function(aError) {
-      console.error( "Fail to get tuners: " + aError );
-    }
-);
-
-// 全てのトラック情報を取得する
-function getTracksInfo(aStream) {
-
-    var tracks = aStream.getTracks();
-
-    for ( var i = 0; i < tracks.length; ++i ) {
-        var track = tracks[i];
-
-        console.log( "track info id: " + track.id );
-        console.log( "track info kind: " + track.kind );
-        console.log( "track info label: " + track.label );
-    }
-}
- -

DomHwMediaStream では、OverlayImage は直接 GFX コンポーザーによって処理されます。OverlayImage(特に転送レイヤー)は、フレームバッファーにレンダリングされたもので、ユーザーはテレビのフレームバッファを Gecko のフレームワーバーを介してアクセスすることができます。

- -

Figure 2: OverlayImage in DomHwMediaStream

- -

長所と短所

- -

このアプローチは長所・短所があります。最初に長所を解説します。

- - - -

短所:

- - - -

最後に

- -


- Web の強みはユビキタス配信プラットフォームですが、いくつかのプラットフォームでは独自機能を必要としている点に注意してください。テレビでは、Web とテレビコンテンツを共存させることができる描画パスを持った設計を持ち、より多くの開発者をエコシステムに参加させるような効果的な放送ストリームは極めて重要です。将来的にテレビメーカーがストリームイメージを直接 CSS エフェクトをサポートできるハードウェアコンポーザーを実現する事を目指しています。この方法でハードウェアコンポーザーはメーカーが画面エフェクトをカスタマイズする事ができる様になります。

- -

テレビは Web 開発者にとっては比較的新鮮なデバイスですが、クロスプラットフォーム Web 技術の能力で、より多くのイノベーションの機会をもたらしてくれる事を期待しています。

diff --git a/files/ja/archive/b2g_os/tvs_connected_devices/tv_remote_control_button_mapping_to_keyboard/index.html b/files/ja/archive/b2g_os/tvs_connected_devices/tv_remote_control_button_mapping_to_keyboard/index.html deleted file mode 100644 index d607d67868..0000000000 --- a/files/ja/archive/b2g_os/tvs_connected_devices/tv_remote_control_button_mapping_to_keyboard/index.html +++ /dev/null @@ -1,148 +0,0 @@ ---- -title: TV リモコンボタンのキーボードへのマッピング -slug: >- - Archive/B2G_OS/TVs_connected_devices/TV_remote_control_button_mapping_to_keyboard -tags: - - Controls - - Firefox OS - - Gaia - - Remote - - TV - - keyboard -translation_of: Mozilla/Firefox_OS_for_TV/TV_remote_control_button_mapping_to_keyboard ---- -

- -

このTVリモコンボタンをキーボードを使ってシュミレーションする方法を簡潔に記します。

- -

We use the keyboard to simulate TV remote control buttons when developing apps for Firefox OS on TV. The following explains the keyboard equivalents to the TV remote control buttons in the three different platforms: Mac OS X, Windows and Linux.

- -

Mac OS X

- - - - - - - - - - - - - - - - - - - - - - - - -
リモコンキーボード
homefn + left
backbackspace
enterreturn
optionfn + ctrl + I
- -

Windows

- - - - - - - - - - - - - - - - - - - - -
リモコンキーボード
homehome
backbackspace
enterenter
- -

Linux

- - - - - - - - - - - - - - - - - - - - - - - - -
リモコンキーボード
homehome
backbackspace
enterenter
optionshift + F10
diff --git a/files/ja/archive/b2g_os/tvs_connected_devices/tv_remote_control_navigation/index.html b/files/ja/archive/b2g_os/tvs_connected_devices/tv_remote_control_navigation/index.html deleted file mode 100644 index 72a1bb25ec..0000000000 --- a/files/ja/archive/b2g_os/tvs_connected_devices/tv_remote_control_navigation/index.html +++ /dev/null @@ -1,334 +0,0 @@ ---- -title: TV リモコンのナビゲーションを実装する -slug: Archive/B2G_OS/TVs_connected_devices/TV_remote_control_navigation -tags: - - Controller - - Controls - - Firefox OS - - JavaScript - - Navigation - - TV - - spatial navigation -translation_of: Mozilla/Firefox_OS_for_TV/TV_remote_control_navigation ---- -

- -

User experience design for TVs is very different to smart phones. The screen is much larger, but users have to navigate apps using a TV remote control — other more familar mechanisms such as mouse or touch screen are not available. This article explains how the controls in Gaia's TV apps were developed.

- -

マウスを使わずにフォーカスをあてたり視覚を扱う

- -

When the only user navigation is via arrow keys on a remote control, an app has to decide by itself which element should be highlighted next — above the current position, below it, etc. The app also needs to record which element the cursor stops on, to focus it. Such a mechanism is called Spatial Navigation. To implement this, we have to consider the following specifics:

- -
    -
  1. How to choose the next element from a number of nearby DOM elements without explicit context.
  2. -
  3. How to trigger the function registered on the currently-focused element when users press the corresponding key (e.g. the <kbd>ENTER</kbd> key to trigger onclick.)
  4. -
- -

We’ll talk about the first point later on — the Existing libraries section discusses available out-of-the-box libraries inside Gaia, and the Algorithm design section talk about the implementations of the algorithms used in those libraries.

- -

Turning our attention to the second point, we can place the <kbd>ENTER</kbd> key EventListener to identify the current focus, and then call the handler to be executed. This operating way is similar to delegation. Here is the event listener used in Home app:

- -
onEnter: function() {
-    ...
-    var focusElem = this.focusElem;
-    ...
-    if (focusElem === this.settingsButton) {
-      this.openSettings();
-    } else if (focusElem === this.editButton) {
-      ...
-      this.edit.toggleEditMode();
-      ...
- -

 

- -

The main logic is clear: when the current focus stops on the settingsButton or editButton, we call openSettings() or toggleEditMode() respectively; that is, we simply call the corresponding handler. If there are many objects, we can directly dispatch custom events to trigger EventListeners for each element, which can avoid lengthy enumeration of handlers using if..else if.

- -
-

Note: Keyboard events are sent from root elements. The focused elements in the real DOM tree will not influence the event target.

-
- -
-

For the focused objects in Gaia, we’ll directly call HTMLElement.focus() in each case and assign the real focus in DOM Tree to it (that is, the object returned by document.activeElement().) Then we change the object’s style with a CSS :focus pseudo class. HTMLElement.focus() itself will not report a success or failure.

- -

In some special situations, such as calling focus() on an <iframe>, focus() cannot be called directly — in such cases we have to execute document.activeElement.blur() first. See TV specific window manager is created and can be loaded on demand for other common focus() failure situations and potential solutions.

-
- -

既存ライブラリ

- -

Some libraries for keyboard navigation are included inside the Gaia repo. SpatialNavigator and SimpleKeyNavigation keep track of which element on the screen is currently being focused. KeyNavigationAdapter is an event wrapper for arrow keys. Let's explain them in a little more detail.

- -

SpatialNavigator

- -

This library provides a generic algorithm to navigate among a collection of elements. It keeps track of a set of elements and the “currently focused element”, and you can send it a direction (left, right, up, or down) to navigate to other elements close to the current focus. We use “getBoundingClientRect” to determine the real positions of elements on the screen. You can just ask the library to find the next target for you automatically, however sometimes the target may not be the one you expected. In these cases, you have to carry out an “except” condition before calling the navigation algorithm of the library. We will talk about this algorithm in the next section.

- -

SimpleKeyNavigation

- -

Although this library stores an array of elements, it only allows navigation in one dimension at a time (horizontal or vertical.) The order of focus is determined only by the position of elements inside the array rather than their real position on the screen. It also listens to key events automatically. If your user interface is simple, this can be a suitable lightweight choice for navigation.

- -

This library is most suitable for small amounts of elements whose relative positions don't change. It's commonly used for modal dialog button sets, such as alert and confirm dialogs. 

- -

KeyNavigationAdapter

- -

This wrapper class listens to raw key events and organizes them to be handled by higher-level custom events, allowing apps to handle them more efficiently. For example, the keydown events of the four arrow keys are combined into a single move event while the corresponding keyup events become a single move-keyup event. The arguments passed to the event handlers of these two custom events are exactly the same as what SpatialNavigator accepts in its own methods, allowing easier integration of these two libraries in your app.

- -

アルゴリズム設計

- -

Compared with general web pages, it’s much more important for an app to have a highly customizable spatial navigation function because of its complex behaviors. For instance, some authors may prefer moving the focus among elements based on some specified order or intend to adjust the order dynamically. The existing one in Fennec doesn’t do enough for our use cases on TV, so we’ve already filed a meta bug (バグ 1114536.) Before this work is completed, we still need an alternative function to help us develop apps on TV. That’s why we implemented SpatialNavigator.js in Gaia. Let’s look into how it works.

- -

SpatialNavigator maintains a list of focusable elements. You can pass them in at the initialization stage and modify them later as needed. In addition, the module also keeps track of the currently-focused element.

- -

Let’s look at an example — we have five elements, one of which is currently focused (the blue element with the yellow frame represents), and the other four which are to the right of the first one in slightly different places. We split the area around the currently-focused element into 9 slices:

- -
    -
  1. Top left.
  2. -
  3. Top.
  4. -
  5. Top right.
  6. -
  7. Left.
  8. -
  9. The currently focused element.
  10. -
  11. Right.
  12. -
  13. Bottom left.
  14. -
  15. Bottom.
  16. -
  17. Bottom right.
  18. -
- -

- -

When you query SpatialNavigator.js to find out what element to move to if the <kbd>RIGHT</kbd> arrow key is pressed, it will first work out what focusable elements are to the right of the currently-focused element. First, it lengthens the right hand edge of the currently-focused element.

- -

Refering to the numbers in the picture, we all agree that elements located in areas 2, 5 and 8 (top right, right, and bottom right slices) should be considered "on the right". The library calculates the center point of each focusable element in the list and filters the elements with center points located the slices mentioned above (element C is considered to belong to slice 5 since its center point is close to its edge.)

- -
-

Note: Some elements may overlap: we treat elements with center points located inside the nearest half of the currently-focused element (in this example, the right half) as candidates as well.

-
- -

- -

The most important part is how to determine the weight of the candidates and sort them.

- -

- -

In the module, we define three priority levels:

- -
    -
  1. Higher priority is given to elements with centers inside the slices that are adjacent to the currently-focused element (slice 5 in this case), than to slices that are diagonally placed (2 and 8).
  2. -
  3. Next, for the adjacent slices we calculate the distance between the closest edge of each candidate (left side in this case) and the nearest edge of the currently-focused element (right in this case) — the red lines in the graphic. The shorter distance, the higher the given priority.
  4. -
  5. Last, the lowest priority — for the adjacent slices we calculate the shortest distance between the edge of each candidate and the horizontal boundary line of the slice to which the candidate belongs — the blue arrows in the graphic. If there are two boundary lines needing to be considered, the upper one or the left one will be chosen first. The same principle is used here: shorter distance means higher priority.
  6. -
  7. For candidates in diagonal slices, priority levels 2 and 3 are awapped over — therefore a shorter vertical distance gives a higher priority than a shorter horizontal distance for diagonals (this is why the order given below is ... A, D and not ... D, A.)
  8. -
- -

The priority order we end up with is B, C, A, D — the focus will be moved to element B when you press the RIGHT arrow key.

- -

 

- -

Algorithm issues and improvements

- -

The algorithm above is our first version. However, we encountered a problem when it went live, with situations where you have a large element close to the currently-focused element, but whose center doesn't sit inside the adjacent slice (A in the diagram), and a small element further away, whose center does sit inside the adjacent slice (B in the diagram):

- -

- -

We expect the focus to be moved to element A when pressing the <kbd>DOWN</kbd> key from the currently-focused element, but unfortunately the focus jumps to element B instead — this isn’t intuitive.

- -

Let's look at a similar situation where the <kbd>DOWN</kbd> key is pressed and discuss a potential solution. We altered the algorithm to give equal priority to every element overlapping the adjacent slice — regardless of how much they overlap. However then we encountered another problem. If for example you have two elements below the currently-focused element, one that largely overlaps the adjacent slice but is slightly further away (E in the diagram), and one that only slightly overlaps the adjacent slice but is slightly closer (D in the diagram), the former gets a higher priority and is focused next. Again, this isn't what users would expect — you'd expect E to be focused before D.

- -

- -

To combat this, we added a threshold to determine whether we should treat an element as a candidate or not — a customizable property to adjust the minimum percentage by which an element needs to overlap the adjacent slice before it is granted the associated higher priority.

- -

Example

- -

Now we've discussed the technology we've made available for implementing spatial navigation, let's looks at an example implementation. This section discusses the HOME app from Gaia.

- -

- -

Including the libraries

- -

First, the app includes spatialNavigator and keyNavigationAdapter — this comes from index.html:

- -
...
-<!-- Shared TV library for keyboard-based navigating -->
-...
-<script defer src="shared/js/smart-screen/spatial_navigator.js"></script>
-<script defer src="shared/js/smart-screen/key_navigation_adapter.js"></script>
-<!-- Specific code -->
- -

(It also partially uses simpleKeyNavigation, but we won't discuss this further.)

- -

Initialization

- -

When activating the app, we initialize the two libraries (see home.js):

- -
...
-init: function() {
-  ...
-  var collection = that._getNavigateElements();
-  that.spatialNavigator = new SpatialNavigator(collection);
-  that.spatialNavigator.straightOnly = true;
-  that.keyNavigatorAdapter = new KeyNavigationAdapter();
-  that.keyNavigatorAdapter.init();
-  that.keyNavigatorAdapter.on('move', that.onMove.bind(that));
-  // All behaviors which no need to have multple events while holding the
-  // key should use keyup.
-  that.keyNavigatorAdapter.on('enter-keyup', that.onEnter.bind(that));
-  ...
-  that.spatialNavigator.on('focus', that.handleFocus.bind(that));
-  that.spatialNavigator.on('unfocus', that.handleUnfocus.bind(that));
- -

First we call _getNavigateElements(), which returns an array containing HTMLElement and is stored in the variable collection. Second, we send the array to the initialization parameter of SpatialNavigator mentioned before. This tells SpatialNavigator which elements are focusable. We also assign straightOnly as the preference for judging which elements will considered candidates for spatial navigation — diagonally placed elements will not be listed as candidates. You can refer here for options other than straightOnly.

- -

Defining the elements to be navigated

- -

Let’s look at the content of _getNavigateElements():

- -
  navigableIds:
-      ['search-button', 'search-input', 'settings-group', 'filter-tab-group'],
-  navigableClasses: ['filter-tab', 'command-button'],
-  ...
-  _getNavigateElements: function() {
-    var elements = [];
-    this.navigableIds.forEach(function(id) {
-      var elem = document.getElementById(id);
-      if (elem) {
-        elements.push(elem);
-      }
-    });
-    this.navigableClasses.forEach(function(className) {
-      var elems = document.getElementsByClassName(className);
-      if (elems.length) {
-        // Change HTMLCollection to array before concatenating
-        elements = elements.concat(Array.prototype.slice.call(elems));
-      }
-    });
-    elements = elements.concat(this.navigableScrollable);
-    return elements;
-  },
- -

_getNavigateElements() has two forEach loops that iterate through the navigableIds and navigableClasses arrays respectively. The former uses HTML object IDs to indicate which objects should be spatially navigated; the latter does the same thing with HTML object classes.

- -

Receiving key events and finding focus targets

- -

Back in init(), we initialize keyNavigatorAdapter and register two event listeners, move and enter-keyup, to receive keyboard events. The move event will be triggered by pressing one of the <kbd>UP</kbd>, <kbd>DOWN</kbd>, <kbd>LEFT</kbd>, or <kbd>RIGHT</kbd> keys, taking the appropriate left, right, up, and down string as a parameter in each case. We can now just call spatialNavigator in the event listener to find the next focus target:

- -
  onMove: function(key) {
-    ...
-    var focus = this.spatialNavigator.getFocusedElement();
-    if (!(focus.CLASS_NAME == 'XScrollable' && focus.move(key))) {
-      this.spatialNavigator.move(key);
-    }
-  },
-
- -

Here we first find out the currently-focused object by using spatialNavigator.getFocusedElement(). The HOME app includes a XScrollable object which is an object has its own spatial navigator and manages the element set by itself, so we just hand out the keyboard event to this XScrollable object once it got focus. We skip this specific situation and directly send the key parameter into spatialNavigator.move() to find the next object. After finding the next object, spatialNavigator.move() triggers the focus event:

- -
  handleFocus: function(elem) {
-    if (elem.CLASS_NAME == 'XScrollable') {
-      this._focusScrollable = elem;
-      elem.focus();
-      this.checkFocusedGroup();
-    } else if (elem.nodeName) {
-      switch(elem.nodeName.toLowerCase()) {
-        case 'menu-group':
-          this.handleFocusMenuGroup(elem);
-          break;
-        default:
-          elem.focus();
-          this._focus = elem;
-          this._focusScrollable = undefined;
-          this.checkFocusedGroup(elem);
-          break;
-      }
-    ...
-  },
- -

The code above executes the necessary actions for different focused elements. We'll not say much more for brevity.

- -

Dynamically changing object collections

- -

With these event being handled, we've made a prototype of a TV app. We have not mentioned about dynamically and programmatically changing object collections of spatial navigations. Here is a brief example.

- -

In the HOME app there are menuGroup elements that contain hidden subitems (developed as Web Components — these can be regarded as HTMLElements with custom behaviors.) We want the following behaviors to happen:

- -
    -
  1. The user navigates to a menuGroup.
  2. -
  3. The menuGroup expands and shows its sub-items.
  4. -
  5. The sub-items should be added as targets for spatial navigation, while the menuGroup should be removed from the list of targets.
  6. -
- -

The third step is handled using the following code:

- -
  handleFocusMenuGroup: function(menuGroup) {
-    var self = this;
-    menuGroup.once('opened', function() {
-      self.spatialNavigator.remove(menuGroup);
-      var childElement = menuGroup.firstElementChild;
-      var firstFocusable = null;
-      while(childElement) {
-        switch(childElement.nodeName.toLowerCase()) {
-          ...
-          default:
-            firstFocusable = firstFocusable || childElement;
-            self.spatialNavigator.add(childElement);
-        }
-        childElement = childElement.nextElementSibling;
-      }
-    ...
-    if (firstFocusable) {
-      self.spatialNavigator.focus(firstFocusable);
-    }
- }
- -

After expanding, the menuGroup fires an opened event, triggering the callback function. In the callback function, we first call spatialNavigator.remove(menuGroup) to remove menuGroup from the navigation target list, then we use a while loop to cycle through all the child elements of menuGroup and add them as navigation targets with spatialNavigator.add(childElement). The switch case is used to exclude some exceptions that should not be added.

- -

Finally, we call spatialNavigator.focus(firstFocusable) to programmtically move focus to the first item. This call will trigger spatialNavigator to fire focus events and finally call the handleFocus() function mentioned before.

diff --git a/files/ja/archive/b2g_os/using_the_app_manager/index.html b/files/ja/archive/b2g_os/using_the_app_manager/index.html deleted file mode 100644 index 0d280fc225..0000000000 --- a/files/ja/archive/b2g_os/using_the_app_manager/index.html +++ /dev/null @@ -1,303 +0,0 @@ ---- -title: アプリマネージャを使用する -slug: Archive/B2G_OS/Using_the_App_Manager -tags: - - App Manager - - Apps - - Debugging - - Firefox OS - - simulator - - アプリ -translation_of: Archive/B2G_OS/Using_the_App_Manager ---- -
-

重要: アプリマネージャは廃止済みと考えられるべきですれ; つまりFirefoxからアプリマネージャを削除する作業が始まっていて (バグ 1007061 を見てください)、そうしないための本当に良い理由がないなら、その代わりに WebIDE を使います。

-
- -
-

アプリマネージャはデスクトップ版のFirefoxの為のツールです。アプリマネージャはFirefox OS端末およびシミュレータ向けのHTML5アプリケーションのテスト、デプロイ、デバッグをサポートする数々の便利なツールを提供し、ブラウザから直接利用できます。

- -

アプリマネージャはFirefox OS 1.2以降の開発者向けです。それより低いバージョンではFirefox OS 1.1 Simulatorがサポートされています。アプリマネージャはFirefox 33以降WebIDEに置き換えられつつあります。WebIDEはアプリマネージャの全機能のほか、FirefoxOSアプリを作成、開発するための編集機能を提供しています。

-
- -

- -

アプリマネージャは以下で構成されています。

- - - -

さぁ始めよう(Quick setup):

- -
このセクションはあなたが可能な限り早く使用できるように記載されています。
- -
もし、これ以上の詳細な情報が欲しい場合、端末とシステムの設定 セクションまで飛ばしてください。
- -
何かトラブルが起きた場合は、トラブルシューティング セクションを参照してください。
- -
    -
  1. デスクトップ版のFirefox 26以上をインストール
  2. -
  3. アプリマネージャを開く(URLバーに”about:app-managerと入力するか、FirefoxのメニューでTools > Web Developer > App Managerと進む)これはブラウザの新しいタブに出てくるでしょう。
  4. -
  5. 実際の端末を持っていない場合: -
      -
    1. Firefox OS Simulatorアドオンをインストールし、ブラウザでアプリマネージャのタブに戻る
    2. -
    3. アプリマネージャの下のツールバーからシミュレータを起動を選択してください。選択後、インストール済みのシミュレータが表示されます。シミュレータを選択する事で、選択されたシミュレータが起動します。
    4. -
    -
  6. -
  7. 実際の端末を持っている場合: -
      -
    1. 端末のFirefox OSのバージョンを1.2以上にアップデートしてください。
      - keon/peakの場合はこgeaksphoneの公式ページよりアップデートしてください。
    2. -
    3. 端末設定からスクリーンロックを解除してください (Settings > Screen Lock)。その後、Remote Debuggingを有効にしてください(Settings > Device information > More information > Developer)。
    4. -
    5. デスクトップ版のFirefoxのアドオンであるADB Helperをインストールしてください。
    6. -
    7. 端末とあなたのPCをUSBケーブルで接続してください。
    8. -
    9. アプリマネージャの下のツールバーにあなたのデバイスが表示されますので、それを選択してください。
    10. -
    -
  8. -
  9. 下のツールバーに"Connected to: xxx"と表示されます。
  10. -
  11. アプリ パネルを選択し、任意のアプリを追加してください。 (パッケージかホストされたアプリ)
  12. -
  13. 更新ボタンを押下することで接続しているシミュレレータか端末にインストールされているアプリを表示します。
  14. -
  15. デバッグボタンを押下することで起動中のアプリに開発者ツールを用いて接続することが出来ます。
  16. -
- -

端末とシステムの設定

- -

アプリマネージャを使うにはあなたの使用している環境と端末を正しく設定する必要があります。このセクションでは必要となる手順を記載しています。

- -

Firefox 1.2以上が必要

- -

端末がFirefox OS/Boot2Geckoが1.2以上である必要があります。インストールされているバージョンの確認するには、設定アプリを起動し Device Information > Softwareの順で確認して下さい

- -

もし、必要となるバージョン以上がインストールされていない場合、使用している端末によってインストール方法が異なり、あなた自身でソースコードからビルドする必要がある場合のあります。

- -

利用可能なビルド:

- - - -
-

記:Firefox OS 1.2以降をビルドするには、Firefox OSビルドの必要条件を読んでからFirefox OSのビルドとインストールの指示にしたがってください。

-
- -

リモートデバッグ

- -

次にFirefox OSのリモートデバッグを有効にします。設定アプリから Device information > More information > Developerと進み、Remote Debbugingのチェックボックスにチェックを入れてください。

- -

ADBまたはADB helper

- -

アプリマネージャはAndroid Debug Bridge (ADB)を使用し、PCと端末間で通信を行います。その為、ADBが必要となり、2つの使用方法があります。:

- - - -
adb forward tcp:6000 localfilesystem:/data/local/debugger-socket
- -

端末の再起動、USBケーブルの再接続を行う度にコマンドを入力する必要がありますので、注意してください。

- -
-

記:ADB Helperアドオンをインストールすることで、上記のコマンドの入力は不要となります。

-
- -

実機をアプリマネージャに接続する

- -

全ての設定が終わったら、端末をPCに接続し、アプリマネージャを起動させてください。:

- -
    -
  1. USBケーブルを使用して端末とPCを接続してください。
  2. -
  3. 設定アプリからスクリーンロックを解除してください( Settings > Screen Lock に行き、Lock Screenのチェックボックスを解除)。スクリーンがロックされてしまうと、PCとの接続が解除されてしまいます。つまり、これ以上、デバッグができなくなってしまうからです。
  4. -
  5. デスクトップ版のFirefoxでアプリマネージャを起動する。 ツール > Web開発 > アプリマネージャ のメニューを選択、またはアドレスバーに about:app-manager と入力する。
  6. -
  7. アプリマネージャのタブの一番下に、接続ステータスバーが見えるようになります (下のスクリーンショットをみてください)。 "Connect to localhost:6000"のボタンをクリックすることで、実機を接続できるでしょう。
  8. -
  9. うまくいくと、端末に"An incoming request to permit remote debugging connection was detected. Allow connection?"(リモートデバッグの許可リクエストが来ました。接続許可しますか?)というプロンプトが表示されます。OKボタンをタップし(プロンプトが見えるよう電源ボタンも押さないといけないかも) 接続ステータスバーの表示が"B2Gに接続"と更新され、接続をキャンセルするための切断ボタンが使えるようになるでしょう。
  10. -
- -

- -
-

記:接続ステータスバーのその他の部品で、 アプリマネージャとシミュレータを接続する(次節で述べます)ことや、接続ポートの変更ができます。ポート変更した際、同様にポートフォワーディングも有効にする必要があり、その方法は上記の Enable port forwarding節にあります.

-
- -

Firefox OSシミュレータのアドオンを使用する

- -

アプリマネージャを使用できる実機を未入手の場合、Firefox OS シミュレータを使うことができます。開始するには、使っているOSに応じたシミュレータをインストールしてください。

- -

Install Simulator

- -

シミュレータをインストールしたら、アプリマネージャタブの下部にある接続ステータスバーに行って「シミュレータを起動」ボタンを押します。3つのボタンが出てきます:

- - - -
-

記: The Firefox OS 1.5 シミュレータは削除されました。1.5は2.0に変わったためです。もしFirefox OS 1.5 シミュレータがインストール済みの場合、自動的に2.0に更新されることはありません。なので1.5をアンインストールし、代わりに2.0をインストールしてください。Firefox OS 2.0 シミュレータは自動更新されます。

-
- -
-

記: Firefox OS 1.2 シミュレータは削除されました。バージョン1.2の電話機が出ない見通しとなったためです。 — ゆえにこのバージョンは価値が限定されています。そして他のバージョンでデバッグすることに時間を使う方が意味があるでしょう。

-
- -

アプリマネージャでカスタムビルドを実行する

- -

カスタムB2G デスクトップや Gaia/Gecko ビルドをアプリマネージャのシミュレータ経由で実行できます。 その方法のマニュアルはRunning custom Firefox OS/Gaia builds in the App Managerを見て下さい。

- -

アプリのパネル: Firefox OS アプリをテスト、デバッグする

- -

今や全て動きます。アプリパネルで開始し、アプリマネージャ内部の機能を見て行きましょう。ここからデバイスに既にお持ちのアプリをプッシュしてテストしたり、デバッグしたりできます:

- - - -

あなたのアプリの情報がウィンドウの、下図のように右手に出てきます:

- -

- -

マニフェストエディタ

- -

Firefox 28 以降、アプリパネルの中にマニフェストエディタが含まれています:

- -

- -

デバッグ

- -

"更新"をクリックすることで端末上にアプリを更新(インストール)します。"デバッグ"をクリックすることでアプリとツールボックスを接続し、コードを直接デバッグできます:

- -

- -
-

ツールボックスで遊び回るのを楽しめるでしょう — DOMやCSSを変更したり。リアルタイムで端末に更新されるのがわかるでしょう。更新はインストール済みのアプリのコードに保存されます; 次回端末でアプリを開いた時にわかるでしょう。

-
- -

Firefox 28より前では、ツールは個別のウィンドウで開始されます。 Firefox 28以降では、ツールはアプリマネージャ自体の中の、アプリタブや端末タブと同時の個別のタブで開始されます。タブには見つけやすくなるようアプリアイコンが付いています:

- -

- -

各種エラー

- -

アプリの追加に失敗する場合 — 例えばURLが正しくない場合や、パッケージ型アプリを選択した場合 — このアプリのページは追加されますが、これにはエラー情報が混ざっています。

- -

- -

このビューでアプリを消すこともできます。ウィンドウ左手のアプリ名/説明部分にマウスを移動し、それぞれに現れる"X"ボタンを押すと消えます。ただし端末からアプリを消すわけではありません。そうするには端末自体を操作して、手動で消去する必要があります。

- -

端末のパネル

- -

端末のタブでは接続した端末の情報を表示します。 "インストールされたアプリ" ウィンドウから、  端末上のアプリを開始したりデバッグしたりできます。

- -

- -
-

記: 認定アプリ はデフォルトで列挙されません。認定アプリをデバッグするを見よ

-
- -

"許可設定"ウィンドウでは、現在の端末上で色々な Web API に求められる権限を表示します:

- -

- -

ついに、"スクリーンショット"ボタンをクリックすることで、今の端末のディスプレイのスクリーンショットを取れるようになりました。スクリーンショットはFirefoxの新しいタブに出てきて、保存も破棄もお好きな様にできます。

- -

認定アプリをデバッグする

- -

現状、開発ビルドであるFirefox OS 1.2以降を実行しているデバイスだけが認定アプリをデバックできます。開発ビルドがある場合、プロファイルでdevtools.debugger.forbid-certified-appsの設定をfalseに変更することで認定アプリをデバッグできるようになります。そうするには、以下のステップに従って下さい:

- -

実機を使用する

- -
    -
  1. -

    お使いのコンピューターで、ターミナル/コンソールから下記コマンドを打ち込んで、端末のファイルシステムのシェルに入ります:

    - -
    adb shell
    - -

    プロンプトがroot@androidに変わります。

    -
  2. -
  3. -

    次に下記コマンドでB2Gを停止します:

    - -
    stop b2g
    -
  4. -
  5. -

    下記ディレクトリに移動します:

    - -
    cd /data/b2g/mozilla/*.default/
    -
  6. -
  7. -

    ここで、以下のようにprefs.jsファイルを更新します:

    - -
    echo 'user_pref("devtools.debugger.forbid-certified-apps", false);' >> prefs.js
    -
  8. -
  9. -

    ファイルの編集・保存が終わったら、下記コマンドでB2Gを再開します:

    - -
    start b2g
    -
  10. -
  11. -

    androidファイルシステムをexitコマンドで終了します; つまり普段のターミナルのプロンプトに戻ります。

    -
  12. -
  13. -

    次に、アプリマネージャに再接続すると、デバッグ用の認定アプリが見えるようになるでしょう。

    -
  14. -
- -

B2Gデスクトップクライアントを使用する

- -

B2Gデスクトップクライアントでは、B2Gデスクトップクライアントのルートフォルダにあるgreprefs.jsのプロファイルに、設定が予め定義されています。B2Gデスクトップクライアントを停止して、devtools.debugger.forbid-certified-apps の設定を false になるよう編集します。次にB2Gデスクトップクライアントを再起動してアプリマネージャと接続します。全てのアプリを再起動見る事ができるでしょう。

- -
-

記: この設定をGaiaのビルドに追加したい場合、"make DEVICE_DEBUG=1 reset-gaia"と実行します。

-
- -

トラブルシューティング

- -

デバイスが認識されない時は:

- - - - - -

端末がアプリマネージャと接続できなかったり、シミュレータが起動しない場合、教えてください。あるいはバグを記録してください。

diff --git a/files/ja/archive/b2g_os/using_the_b2g_desktop_client/index.html b/files/ja/archive/b2g_os/using_the_b2g_desktop_client/index.html deleted file mode 100644 index 32c5292849..0000000000 --- a/files/ja/archive/b2g_os/using_the_b2g_desktop_client/index.html +++ /dev/null @@ -1,314 +0,0 @@ ---- -title: B2G デスクトップクライアントを使用する -slug: Archive/B2G_OS/Using_the_B2G_desktop_client -tags: - - B2G OS - - Device - - Firefox OS - - Gaia - - Mobile - - simulator -translation_of: Archive/B2G_OS/Building_the_B2G_OS_simulator ---- -

- -
-

B2G OS シミュレーターを使用すると、実際の端末に似た Gecko ベースの環境で Gaia やウェブアプリを実行することができます。端末のハードウェアをエミュレートしないので、端末 API のテストをするには不適切ですし、実際のハードウェア上でのテストの代替にはなりません。しかし例えば 連絡先設定 API といったFirefox で利用できない API を持っています。よって、アプリケーション開発の間や Gaia ユーザインターフェイス自体を動かしている間は有益でしょう。この記事では Firefox OS デスクトップクライアントのダウンロード、もしくはビルド、同様に使用方法を取り扱います。

-
- -
-

記: Firefox OS デスクトップクライアントを使うのに最も簡単な方法は WebIDE から Firefox OS Simulator add-on を使う事です。 デスクトップクライアントをビルドする必要はありません。

-
- -

ナイトリービルドをダウンロードする

- -

Firefox ナイトリー のように、B2G OS シミュレーターのデスクトップクライアント ( b2g- で識別されます) は最新のソースコードから毎日自動的にビルドされます。最新のビルドは MozillaのFTP サーバから利用可能です。必ずあなたの OS 向けの最新バージョンのアーカイブを選択してください。これで自分でビルドしなくてすむようになりますし、更にGaia のダウンロードもする必要がなくなります。

- -

アプリケーションは、必ず書き込み可能な場所にインストールしてください。アプリケーションはインクルードされた Gaia プロファイルを更新できる必要があります。

- -

自分自身でビルドしたい場合以外は、スキップしてシミュレーターを実行するに進みましょう。それはコードベースに変更を加えてテストしたい場合に必要です。

- -

シミュレーターをビルドする

- -

初めにやらなければいけないことは、標準 Mozilla ビルド環境をセットアップすることです。これを一旦行えば、必要なコードをプルダウンして、Firefox OS デスクトップクライアントをビルドするように、構成を行えるようになります。

- -

初回用コードをダウンロードする

- -

ソースコードを置きたいディレクトリに行き、Gecko が全て入っている mozilla-central リポジトリを複製しましょう :

- -
hg clone http://hg.mozilla.org/mozilla-central
- -

もしくは、Githubから同じコードをダウンロードできます:

- -
git clone https://github.com/mozilla/gecko-dev
- -

コードを更新する

- -

後で追加でビルドする場合、確実に最新版のコードで make したいと思うでしょう。これが最新の変更をプルする方法です :

- -
cd mozilla-central
-hg pull -u
-
- -

または、

- -
cd gecko-dev
-git pull
- -

mozconfig を作成する

- -

次に、Firefox の代わりに Boot to Gecko クライアントをビルドするビルドシステムを構成するために、mozilla-central ディレクトリに mozconfig ファイルを作成する必要があります。このファイルは下記を含みます:

- -
. "$topsrcdir/b2g/config/mozconfigs/common"
-
-mk_add_options MOZ_OBJDIR=../build
-# この行は gecko-dev または mozilla-central を使用する場合にはコメントアウトする必要があります
-mk_add_options MOZ_MAKE_FLAGS="-j9 -s"
-
-ac_add_options --enable-application=b2g
-ac_add_options --disable-libjpeg-turbo
-
-# このオプションは Gaia のテストを実行可能にしたい場合に必要になります
-ac_add_options --enable-tests
-
-# mozTelephony/mozSms インタフェースを有効にする
-# 転送したい開発スマートフォンを実際に所有している場合のみ
-# この行を有効にしてください。起動時にクラッシュしたら、
-# この行がコメントになっているか確認してください
-#ac_add_options --enable-b2g-ril
-
- -

B2G デスクトップクライアントで Mochitests を実行したい場合(mochitest-b2g-desktopmochitest-plain のいずれか) または Gaia ユニットテストを実行したい場合、 ENABLE_MARIONETTE=1 の行をこのファイルに含める必要もあります。

- -

ビルドする

- -

さて、デスクトップクライアントをビルドする準備ができましたので、以下のコマンドを mozilla-central ディレクトリの中で実行してください :

- -
./mach build
-
- -

ビルドクライアントは objdir/dist/bin ディレクトリ(mozconfig ファイルの MOZ_OBJDIR で指定した値に基づきます)の中に配置されます。

- -
-

記: 問題がある場合、まず ここで依存性を確認して下さい。

-
- -

Gaia をダウンロードする

- -

デフォルトではデスクトップクライアントは空のスクリーンを表示します。というのはシステムアプリとしてどのウェブアプリを最初に読み込むのか知らないからです。システムアプリとデフォルトアプリの集合は Gaia と呼ばれる Firefox OS に搭載されていて、ダウンロードが必要です。

- -

Gaia を初めてダウンロードするには、GitHub にあるソースコードリポジトリを複製しましょう :

- -
git clone https://github.com/mozilla-b2g/gaia
-cd gaia
- -

既に存在する Gaia のクローンを更新するには、GitHub から最新の変更をプルできます :

- -
cd gaia
-git pull
-
- -

custom-settings.json を作成する

- -

何をしているのかを知っていて、色々な調整オプションをセットしたい場合、gaia/build/config/custom-settings.json ファイルを作ってそこに追加できます、例えば:

- -
{
-  "lockscreen.enabled": false,
-  "lockscreen.locked": false,
-  "devtools.debugger.remote-enabled": true
-}
- -

この例はロック画面をバイパスする便利な例で、そうしないとデスクトップではマウスやトラックパッドを使ってロック解除できないためバイパス不可能です。

- -

プロファイルを生成する

- -

次に、デスクトップクライアント用に Gaia のアプリをセットアップする必要があります。これはパッケージングされた Gaia アプリを端末にインストールするのと同じやり方で同梱し、また特権のあるシステムアプリ用のパーミッションも設定します。我々はこれをプロファイルを生成することで行います。以下のコマンドは(gaia ディレクトリでこれを実行してください) その処理を行います:

- -
make DESKTOP_SHIMS=1 NOFTU=1 DEBUG=1
-
- -

これで gaia ディレクトリの下に profile-debug ディレクトリが作成されたはずです。新しいプロファイルにはカスタマイズされた拡張機能と、B2G が正しく実行されるのに必要となるその他の構成が含まれています。

- -

デスクトップクライアントを実行する

- -

一旦クライアントをビルドして(もしくはナイトリーデスクトップアプリケーションをダウンロード、インストール)Gaia をダウンロードすれば、Firefox OS デスクトップクライアントを起動する準備が整います。

- -

Linux で実行する

- -

組み込まれた Gaia プロファイルを使用して、Linux でデスクトップクライアントを実行するには、単に b2g 実行可能ファイルを実行するだけです。そのバイナリは前にダウンロードしたアーカイブの中、もしくは、クライアントを自分でビルドした場合は objdir/dist/bin ディレクトリにあります。

- -
b2g -profile gaia/profile-debug
- -

あなたはうっとうしいレンダリングの問題で悩まされるかもしれません。それを回避するには、gaia/profile/prefs.js ファイルに以下の行を追加してください:

- -
user_pref("layers.acceleration.disabled", true);
-
- -

Mac で実行する

- -

ナイトリービルドをダウンロードした場合は、いつものように Finder から簡単に起動することができます。コンソールの出力は、Mac に含まれている標準コンソールユーティリティプログラムを実行すれば見ることができます。

- -

もし、異なる Gaia プロファイルを指定したい場合 (例えば上記と別にダウンロードしたGaiaプロファイル) は、b2g ラッパープログラムを使用しないで、b2g バイナリを実行する必要があります。b2g バイナリの場所と、プロファイルディレクトリの指定の際に絶対パスが必要な為に、コマンドラインは少し複雑です :

- -
.../B2G.app/Contents/MacOS/b2g -profile /full/path/to/gaia/profile-debug
-
- -

Windows で実行する

- -

Windows でナイトリービルドを実行するには、b2g.exe を起動するだけです。その代わりに b2g-bin.exe 実行可能ファイルを実行すると、実行内容のカスタマイズが可能です。これはバンドルされた Gaia を自動的に使用するラッパープログラムをバイパスします。

- -

コマンドラインオプション

- -

デスクトップクライアントを使っている時のランタイム体験を調整するのに、使用可能なコマンドラインオプションが多数存在します。-help オプションを使用することでオプションリストが取得できます。このセクションでは特に興味深いオプションのいくつかを取り上げます。

- -

画面サイズを指定する

- -

--screen オプションを使用することでシミュレートしたい端末の画面サイズを指定できます :

- -
b2g --screen=<width>x<height>[@<dpi>]
- -

<width><height><dpi> は、ほとんど見た目通りのパラメータです : 端末の画面の幅と高さはピクセルで、DPI で端末の解像度を指定します。例えば :

- -
b2g --screen=320x480
-b2g --screen=320x480@160
-
- -

オプションで、シミュレートしたい画面サイズと解像度を特定の端末名で指定可能です :

- - - -

screen.jsの中でこれらプリセット端末が定義されています。

- -

別の画面を選択するには、たぶん下記のようにプロファイルパスを指定する必要があります:

- -
-

./b2g-bin --profile ./gaia/profile/ --screen=galaxy_tab

-
- -

JavaScript コンソールを開く

- -

コマンドラインからの起動時に -jsconsole フラグを付けて起動すると、B2G デスクトップクライアントで JavaScript コンソールを開くことができます。ビルドが終わったら、実行するだけです :

- -
.../b2g -jsconsole -profile /path/to/your/profile
- -

Mac にナイトリービルドをインストールした場合は、こんな感じに実行します :

- -
/Applications/B2G.app/Contents/MacOS/b2g -jsconsole -profile /path/to/your/profile
- -

記: Firefox OSの製品ビルドでは、デフォルトでコンソールログ出力 (例えばconsole.log()) が無効です。有効にするには、 開発者設定 を開き、Console Enabled 設定を有効にします。

- -

起動時に指定したアプリケーションを起動する

- -

デスクトップクライアントで b2g が起動する際に自動起動するアプリケーションを指定することも可能です。これはシステムが読み込みを完了した後、すぐに実行されます。これを行うには、--runapp オプションを使用して、実行するアプリケーションの名前をパラメータとして指定するだけです。例えば :

- -
 .../b2g -profile /path/to/your/gaia/profile-debug --runapp email
- -
-

: 起動するアプリを探す前に、指定された名前は正規化が行われ、全て小文字へ変換され、全てのダッシュと全てのスペースは削除されます。正規化された名前はその後、利用可能なアプリのマニフェストのマニフェストから、同様に正規化された名前と比較されます。例えば、電子メールアプリの名前が現在 "E-mail" の場合、この正規化のおかげで --runapp email で動作します。

-
- -

引数無しで、もしくは空の引数で --runapp オプションを指定した場合、シミュレーターは、使い方に関する概要メッセージと一緒に既知のアプリケーションのリストをターミナルに出力します。

- -
-

注意 : --runapp オプションを使用する際は、副作用としてロック画面が無効になり、再有効化することができません。ロック画面をテストしたいプロファイルでは、このコマンドを使用しないか、設定アプリケーションを使用して手動で Settings > Screen Lock を使って元に戻すことが前提になっています。もしそれが問題であれば、遠慮なくこの振る舞いを変更するパッチをコントリビュートしてください。

-
- -

使用法のヒント

- -

このセクションは、B2G デスクトップクライアントを使用する いくつかの役立つヒントを提供します。

- - - -

トラブルシューティング: シミュレーター起動時のブランク画面

- -

b2g -profile gaia/path/to/gaia/profile を使ってb2gを起動した時、"Cannot reach app://system.gaiamobile.org" のエラーと一緒にブランク画面が表示されることがあります。これを修正するためにいくつか確認できることがあります:

- - - -

次のステップへ

- -

これでBoot to Gecko が動作するシミュレータービルドが手に入りましたので、テストしたり、開発したり、その他のことを実行させたりできるようになります :

- - diff --git a/files/ja/archive/b2g_os/using_the_b2g_emulators/index.html b/files/ja/archive/b2g_os/using_the_b2g_emulators/index.html deleted file mode 100644 index f8e1040e66..0000000000 --- a/files/ja/archive/b2g_os/using_the_b2g_emulators/index.html +++ /dev/null @@ -1,182 +0,0 @@ ---- -title: B2G エミュレータを使用する -slug: Archive/B2G_OS/Using_the_B2G_emulators -tags: - - Firefox OS -translation_of: Archive/B2G_OS/Using_the_B2G_emulators ---- -

- -
-

この記事は、Boot to Gecko エミュレータを使用する際に知っておくべき重要な事項を要約したガイドです。完全なユーザマニュアルではなく、代わりにいくつかの有益な事項を、あなた自身が学ばなくてもいいように、簡単に説明します。

-
- -

このガイドは、既にエミュレータをビルドしていることを前提としています。もしまだなら、FirefoxOS のビルドとインストールに巻き戻ってください!

- -

B2G エミュレータについて

- -

B2G エミュレータは 2 種類あります。ひとつは、config.sh を実行する際に "emulator" 用に構成されたビルドによるもので、ARM デバイスエミュレータです。x86 プロセッサをエミュレートしたものよりもずっと遅いのですが、安定しており実際のデバイスが行うような正確な表示です。config.sh を実行する際に "emulator-x86" として構成したものは、x86 デバイスエミュレータとなります。

- -
Note: 最近数ヶ月、自動化チームは安定性の問題のため、x86エミュレーターの使用を停止しました。すなわち、 emulator-x86の全てにおいて、うまく動作しない可能性がかなりあります。そうしない理由がない限り、ARMエミュレータを使用してください。
- -

一旦エミュレータを選択、構成して、ビルドしたら、残りの作業はユーザ的観点から同じやり方ですので、このガイドの残りの部分はどちらにも共通です。

- -
注意 : Mac OS X では、B2G エミュレータは Core 2 Duo プロセッサ以降、Mac OS X 10.7 "Lion" と互換性のあるシステムが必要です。実際に Lion を稼働させている必要はありませんが、互換性がなければいけません。
- -

エミュレータを起動する

- -

B2G エミュレータを起動するには、以下のコマンドを入力してください :

- -
./run-emulator.sh
-
- -

これで、エミュレータのスタートアップタスクを全て処理します。では、エミュレー タが起動して、Boot to Gecko が立ち上がるのを根気よく待ってください。2 分程かかるかもしれませんが、我慢してください。

- -

エミュレータが起動しなかった場合

- -

エミュレータは、よく起動に失敗します。超最先端テクノロジにようこそ!ここに問題を解決するいくつかのヒントがあります。

- -

VM内で試していますか?

- -

VirtualBox とParallels はグラフィックアクセラレータのサポートに問題の多いことが原因で、エミュレータやOpenGL端末のブート時に失敗を起こします。端末がブート開始し、失敗し、再起動するループに入ったり、起動するがエミュレータ画面に何も表示されなかったりします。不幸にも解決方法はありません (VirtualBox用の回避策はあります) - VMWare Player (振込ウェア), Workstation あるいは Fusionを使う必要があります。VirtualBoxでは - ゲストのアドオンをインストールしない、またはvboxvideoモジュールを無効化します。

- -

adb サーバが動作しているか確認する

- -

通常エミュレータが動作しない原因は、エミュレート端末との対話を行う adb サーバが実行されないか、もしくは正しく機能していないことです。この場合、通常はエミュレータを起動したターミナル内に下記のエラーメッセージが見られます。

- -
emulator: control console listening on port 5554, ADB on port 5555
-emulator: can't connect to ADB server: Connection refused
- -
-

注意 : もし、B2G ビルドシステムによってビルドされた adb を使用しているなら(多分そのはずですが) $B2G/out/host/<platform>/bin ディレクトリにあります。Mac では、これが、例えば、 $B2G/out/host/darwin-x86/bin にあります。

-
- -

adb が実行されているか確認するには、このようにしてください :

- -
ps aux | grep adb
-
- -

もし存在したら、多分正しく動作していないので、これを実行して強制停止してください。

- -
adb kill-server
-
- -

存在しなかったら、これを実行してください :

- -
adb start-server
-
- -

それから、もう一度エミュレータを実行してみてください。もし、それでも動作しなかったら、irc.mozilla.org の #b2g を訪れて、助けを求めるべき時です。

- -

構成設定を削除する

- -

時々、エミュレートされたデバイス上にある無効な構成設定が、不具合の原因になります。これを修正するために、以下のやり方で IndexedDB データベースを削除することができます :

- -
    -
  1. adb サーバが動作しているか確認する を参照して、adb が動作していることを確認します
  2. -
  3. エミュレータを起動します
  4. -
  5. ホストコンピュータのターミナルから、エミュレータのビルドディレクトリのルートで、次のように入力します : out/host/<platform>/bin/adb -e shell ; Mac の場合は、out/host/darwin-x86/bin/adb -e shell です
  6. -
  7. これで adb shell にいるはずですので、エミュレートされたデバイス上でシェルコマンドを実行可能になります。デバイス上で B2G を止めましょう : stop b2g
  8. -
  9. IndexedDB データベースを削除します : rm -rf /data/local/indexedDB
  10. -
  11. エミュレートされたデバイス上の B2G を再起動します : start b2g
  12. -
- -

この点で、できれば、あなたが Gaia インターフェースまで戻って解決するといいのですが。

- -

エミュレータが開始しても"mozilla technology"のスプラッシュスクリーンが出る前後で画面が真っ黒な場合

- -

これが起こる場合、エミュレータを動作させている機械のドライバのバグの可能性があります。Linuxのオープンソースの nouveau ドライバーで観測されます。最も簡単な方法は、機械のドライバーを変更することです。 nouveau ドライバーの場合は代わりにプロプライエタリな(Ubuntuの"追加の") ドライバーをインストールします。オンボードのIntelグラフィックのチップセットの場合、Linuxデフォルトのオープンソースドライバーは、エミュレータの'eglMakeCurrent failed'エラーを起こす事があり、どうやらOpenGLバージョン 2.0未満がGPUエミュレーション用に必要なようです。解決法はGPUをアクティベート解除することで、 run-emulator.sh スクリプトを編集するとできます (これは遅くなります).

- -

エミュレータを構成する

- -

エミュレートしたいデバイスにより近づけるために、エミュレータを調整する複数の変更可能なオプションがあります。このセクションでは、そのやり方に関するいくつかの基本的な情報を提供します。エミュレータの設定は run-emulator.sh スクリプトを(理想的にはコピーして)編集することで調整できます。ここに記述されているパラメータは、非常に有用なパラメータの極一部にすぎません。その他のパラメータの詳細情報は qemu のサイトで調べてみてください。

- -
ヒント : シミュレートしたいデバイス毎に run-emulator.sh のコピーを 1 つ作成してください。異なる構成で起動するのが楽になります。
- -

スキンを変更する

- -

デフォルトでは、エミュレータは HVGA モード、つまり half-VGA 、320×480 ピクセルで起動します。この値は、エミュレータが起動する際に与えられる -skin パラメータで指定されます。run-emulator.sh スクリプトを(理想的にはコピーして)編集することで、異なるディスプレイモードに切り替えることができます。提供されているスキンは以下の通りです :

- - - -

スキンは、B2G/development/tools/emulator/skins ディレクトリにあります。特筆すべきなのは、スキン用の書式がかなりシンプルになっていることです。内容を確認してみると、様々なユーザインターフェースオブジェクト用の PNG ファイルや、インターフェースと画面領域のレイアウトを説明する layout という名前のテキストファイルがたくさん入っている、シンプルなフォルダであることがわかるでしょう。カスタムスキンが必要なら、作成するのは非常に簡単です。

- -

メモリサイズを変更する

- -

構成変更したい、もしくは変更する必要のある設定の、もう一つのオプションは、デバイスメモリサイズです。デフォルトでは 512MB ですが、エミュレートしているデバイスのメモリがもっと多いか少ない場合、取り組みたい基本デバイスでアプリを確実に動作させるには、設定が一致するよう調整するのは重要でしょう。これを行うには -memory パラメータの値を、必要とするサイズに MB 単位で変更してください。デフォルトの 512MB 以外では、256MB や 1024MB が、一番試してみたくなりそうな値です。

- -

デバイス用にエミュレートされた記憶容量を変更するには(これは、携帯電話のフラ ッシュストレージや、コンピュータのハードディスクのような、ローカルデータ用記憶域 のことです)-partition-size パラメータを変更してください。デフォルトは 512MB ですが、テストを要するデバイスの種類をシミュレートするために、必要となるどのようなサイズでも MB 単位で指定可能です。

- -

ネットワーク接続

- -

何らかの理由でエミュレータがインターネットに接続できなかった場合、以下のコマ ンドをコマンドラインから実行してください :

- -
adb shell setprop net.dns1 10.0.2.3
- -

emulator-jb または emulator-kk を実行している場合、DNSサーバの設定コマンドは異なります。下記のコマンドを実行します:

- -
adb shell ndc resolver setdefaultif eth0
-adb shell ndc resolver setifdns eth0 10.0.0.0 10.0.2.3
diff --git a/files/ja/archive/b2g_os/ux/style_guide/index.html b/files/ja/archive/b2g_os/ux/style_guide/index.html deleted file mode 100644 index 20ccd5598a..0000000000 --- a/files/ja/archive/b2g_os/ux/style_guide/index.html +++ /dev/null @@ -1,209 +0,0 @@ ---- -title: Firefox OS style guide -slug: Archive/B2G_OS/UX/Style_guide -tags: - - Apps - - Design - - Firefox OS - - Firefox OS UX - - UX - - Writing - - copy -translation_of: Archive/B2G_OS/Firefox_OS_apps/Copy_styleguide ---- -
-

このガイドは、Firefox OSアプリのコピーを書くために守るルールを概説しますが、アプリのインターフェイス用に良いコピーを書くための一般的なガイドとしても使えます。

-
- -
-
-

スタイルガイドには英語での内容も含まれており、そのまま翻訳しています。関連するものを選んで適用してください。

- -

一般的な用語選択

- -
    -
  • タップ: 「タップ」の用語を使います。誤り: 「選択」, 「クリック」, 「押下」, など。
  • -
  • スペース: 「ストレージ」ではなく「スペース」を使用してください。
  • -
  • 電話機: 電話機専用のことを述べる時に使います。
  • -
  • タブレット: タブレット専用のことを述べる時に使います。
  • -
  • モバイル端末: 電話機とタブレットの両方りのことを述べる時に使います。特定端末の触れるかもしれない時には"モバイル端末"を使わないでください。
  • -
  • アプリ: いつでも アプリケーションではなく、"アプリ" を使います。名詞の一部分でないときには大文字を使わないでください。
  • -
  • Please と Thank you: 英語を書く時にはこれらの言葉は使わないでください。システム通知では、ユーザを邪魔する不必要な長さになることがあります。しかしながら、他の言語で"please" と “thank you” に対応する、ローカル文化に依存するローカル用語の使用は自由です。
  • -
  • Firefox Marketplace: "Firefox Marketplace" が最初に挙がります。 "Marketplace" はそれに続く受け入れ可能なもので、常に大文字化します。また決して Mozilla Marketplace としないでください。
  • -
  • フリー: この用語は国際化が難しいものです。それは英語で "コストのないもの" と "制限のないもの" の両方だからであり、しかしその他の言葉ではとても難しい意味だからです。全体を通して、使うか避けるかをはっきりとしてください。
  • -
  • FxOS: これは Firefox OS の公式な略称ですが、外部のコミュニケーションに使用すべきではありません。
  • -
  • サインイン: 「サインイン」を使用してください。動詞としては、ハイフンなしでスペースで別れた"Sign in"を使います。大文字化するかはコンテキストに依存します。大文字化の節を見てください。形容詞としては Sign-In を使用します。誤り: Login, Log in, Signin
  • -
  • Wi-Fi: Wi-Fi の綴りは「WiFi」や「wifi」や「wifi」ではなく、WとFを大文字にしてハイフンをつけてた「Wi-Fi」を使用してください。
  • -
  • email: 一語で、小文字で、ハイフンなしです。誤り: E-Mail, Email, など 例外: email が固有名詞でアプリ名として使われる時には、E-Mail の綴りを使うことができます。
  • -
- -

フォーマット

- -
    -
  • http://: は通信のURLの前につけるべきではありません。
  • -
  • Web: 複合語の一部でなければ「Web」の 1 文字目は大文字にしてください。
  • -
  • 頭字語: ピリオドなしの大文字を使用します。例外としてブランド名の一部であるとか、その結果別の用語の綴りになる場合を除きます。
  • -
  • Internet: 常に大文字化します。
  • -
  • Pancake:  タブレットのブラウジング機器について述べる時は大文字化し、おいしい朝食の食べ物について述べる時は小文字のままです。
  • -
  • Sync: Firefox の中の機能について語る時は大文字化し、記述用語としてのみ使う場合は小文字のままです。
  • -
  • URLs: 全て大文字で、ピリオドなしです。(頭字語を見よ)
  • -
  • Numbers: 数字を書くのではなく、アラビア数字 (1, 2, 3 など) を使います。千とか100万とか大きな数字は数字を書きます。
  • -
  • ファイルサイズの表示 -
      -
    • 1 KB 未満の場合の表示は、 <1 KB
    • -
    • 1 KB 〜 1,023 KB の時の表示は、 357 KB
    • -
    • 1 MB 〜 1,047 MB の時の表示は、 2.5MB (小数第1位まで)
    • -
    • 1 GB 以上の時の表示は、 3.8 GB (小数第1位まで)
    • -
    -
  • -
- -

個別のインターフェイス機能

- -
-
-
    -
  • タイトル (A): - -
      -
    • センテンスケース (最初の単語と固有名詞の 1 文字目のみ大文字にする記法)。
    • -
    • 疑問文以外は文末の句読点を省略してください。
    • -
    • 1 行以内におさめてください。
    • -
    • 核となる部分は、最初の数語に記載してください。
    • -
    -
  • -
  • ボタン (B): -
      -
    • タイトルケース (すべての単語の 1 文字目を大文字にする記法)。
    • -
    • 1 〜 2 語以内におさめてください。
    • -
    • ボタンの動作は、明確な動詞で記述してください。例えば「キャンセル」「履歴を消去」「メールを追加」「すべて選択」など。
    • -
    -
  • -
-
- -
-

-
-
- -
-
-
    -
  • ダイアログ本文 (C): - -
      -
    • センテンスケース (最初の単語と固有名詞の 1 文字目のみ大文字にする記法)。
    • -
    -
  • -
  • ダイアログボタン (B): -
      -
    • タイトルケース (すべての単語の 1 文字目を大文字にする記法)。
    • -
    • 1 〜 2 語以内におさめてください。
    • -
    • ボタンの動作は、上記のように、明確な動詞で記述してください。
    • -
    -
  • -
-
- -
-

-
-
- -
-
-
    -
  • リストボタン / リストアイテム (D): - -
      -
    • タイトルケース (すべての単語の 1 文字目を大文字にする記法)。
    • -
    • 副ラベルではセンテンスケース (最初の単語と固有名詞の 1 文字目のみ大文字にする記法)。
    • -
    • 1 〜 2 語以内におさめてください。
    • -
    • それぞれの文末が、宣言文や疑問文になるよう厳密に守ってください。Firefox OS インターフェイス内のリストでは、絶対に必要な場合を除き、厳密に守る必要はありません。
    • -
    -
  • -
-
- -
-

-
-
- -
-
-
    -
  • 値選択リスト (E): - -
      -
    • センテンスケース (最初の単語と固有名詞の 1 文字目のみ大文字にする記法)。
    • -
    • 1 〜 2 語以内におさめてください。
    • -
    • 文末の句読点なし。
    • -
    -
  • -
-
- -
-

-
-
- -
    -
  • フォーム: - -
      -
    • ネガティブボタンは左に、ポシティブボタンは右に配置してください。
    • -
    • 汎用的なラベルは「キャンセル」と「OK」です。
    • -
    -
  • -
  • タブ / フィルタ: タイトルケースで、文末の制限なしで扱われます。1 〜 2 語以内におさめてください。
  • -
  • ステータス通知 / 確認 / バナー: センテンスケースで、疑問文以外では文末の句読点を避けます。
  • -
- -

文法

- -
    -
  • ダッシュ: ハイフン (-) は、2つ以上の言葉から成るアイデアを作る時に使われ、常に接続されます。エンダッシュ (–) は数字や日付といった範囲に使われ、これも接続されます。エムダッシュ (—) は関連づけるために使われますが、概念同士を分けます。これは文章内や続く文章の両方、また接続される/されない場合ともに当てはまります。
  • -
  • 感嘆符: 使ってもOKですが、使いすぎないで。
  • -
  • プレーンクォートではなくスマートクォートを (“このように”) 使用してください。一般的に句読点はクオート記号の中に付け、感嘆符と疑問符もそうします。例外として感嘆符や疑問符が単にクオート記号内の一部分ではなく、文全体にかかる場合を除きます。
  • -
  • スラッシュ: URL では、前向きのスラッシュ “/” を使います … バックスラッシュ “\” ではなく。
  • -
  • 文末の句読点: Firefox OS 文章の全ての場合で使います。疑問文や、一緒に繋がった複数の文を除いて、OS自体の多くの場合は使用を避けます。
  • -
  • タイトルケース: タイトルケースは、各単語の最初の文字を大文字化するものです。内容が疑問文形式である場合を除き、句読点は必要でありません。アラビア語のように、タイトルケースを用いない言語があるのに留意してください。作業している言語にとってタイトルケースが適切である場合にのみ使用してください。
  • -
  • センテンスケース: センテンスケースは、最初の単語の最初の文字と、固有名詞のみ大文字化します。センテンスケースを用いない言語があるのに留意してください。作業している言語にとってセンテンスケースが適切である場合にのみ使用してください。
  • -
  • 大文字化: -
      -
    • タイトルと副タイトル/副ヘッダ: タイトルケースを使います。
    • -
    • アクションボタン: タイトルケースを使います。
    • -
    • リストボタン / リスト項目: ラベルにはタイトルケースを使います副ラベルにはセンテンスケースを使います。
    • -
    • タブ / フィルタ: タイトルケースを使います。
    • -
    • 値選択リスト: センテンスケースを使います。
    • -
    • アプリ名: アプリケーション名はタイトルケースで表示されますが、個々のセッティングやモードは小文字で表示されます。
    • -
    • ステータス通知: センテンスケースを使います。
    • -
    • ヘッダ: タイトルケースを使います。
    • -
    • 本文の中身:  センテンスケースを使います。
    • -
    -
  • -
  • 縮約系: 縮約系は使用可能で、もっと人間らしい経験を提供ために推奨されます。
  • -
- -

一般的なスタイルのベストプラクティス

- -
    -
  • 俗語: 技術的な俗語を避けます。
  • -
  • カンマ: Mozilla の通信ではシリアル・カンマ (別名 オックスフォード・カンマ) は使いません。
  • -
  • 簡潔なエラー説明: そのときの状況や、ユーザが解決するためにできることを、簡潔に説明するようにしてください。
  • -
  • ユーザの指定: たいていの状況で「あなた」「あなたが」といった表現は避けてください。ユーザとデバイスの境界は区別してください。 例えば、「あなたの画像は削除されました」の代わりに「画像は削除されました」と言います。
  • -
  • アプリについての記事: アプリケーション名の前に冠詞を付けないでください。例えば「Take photos with the Camera」ではなく「Take photos with Camera」を使用してください。
  • -
-
-
- - - -

 

- - diff --git a/files/ja/archive/b2g_os/web_telephony_api/index.html b/files/ja/archive/b2g_os/web_telephony_api/index.html deleted file mode 100644 index e33833ad14..0000000000 --- a/files/ja/archive/b2g_os/web_telephony_api/index.html +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: Web Telephony API -slug: Archive/B2G_OS/Web_Telephony_API -tags: - - API - - Firefox OS - - Phone - - Telephony - - Voice - - Web Telephony -translation_of: Archive/B2G_OS/Web_Telephony_API ---- -

Web Telephony は、Web コンテンツが JavaScript を使用して音声通話を扱うことを可能にする API です。

- -

コンセプトと使用例

- -

Web Telephony API は、Firefox OS のテレフォニー機能を制御する API 要件を満たすため、Mozilla により作成されました。この API は、サードパーティの開発者にこのようなクリティカルな端末機能の制御を許可するとセキュリティの懸念事項となるため、システム内部からのみ使用できます。

- -

この API のエントリポイントは、Navigator.mozTelephony プロパティを通して提供されます。このプロパティは、Telephony オブジェクトを返し、マイクやスピーカー、ダイヤルトーン (DTMF) の生成、通話の発着信、その他の機能を制御するためのメソッドとプロパティを含む、端末のテレフォニーシステムへのアクセスを提供します。

- -

端末が Telephony.dial() を使用してダイヤル発信するか Telephony.onincoming イベントハンドラを経由してどこかからの着信により通話が初期化されると、通話を表す TelephonyCall オブジェクトが生成されます。このオブジェクトのプロパティとメソッドを通して通話を操作でき、プログラム返答や通話終了、保留、異なる通話状態への応答などができます。

- -

複数人でのグループ通話を制御するための TelephonyCallGroup インターフェイスも利用できます。

- -
-

注記: Web Telephony API を使い始めるためのサンプルコードは、Web Telephony API の使用 を参照してください。

-
- -

Manifest の許可設定

- -

この API を Firefox OS アプリで使用するには、manifest.webapp ファイルに以下を記述する必要があります:

- -
"type": "certified",
-"permissions": {
-  "telephony": {
-    "description": "Required to control telephony functions"
-  }
-},
-
- -

Web テレフォニーインターフェイス

- -
-
Navigator.mozTelephony
-
Web Telephony API のためのエントリポイント。Telephony オブジェクトにアクセスできます。
-
Telephony
-
端末のテレフォニー機能の制御を提供します。
-
TelephonyCall
-
電話の通話を表します。通話の着信や発信などの機能を制御できます。
-
MMICall
-
MMI コールを表します。通話の結果を受け取れるようにします。
-
TelephonyCallGroup
-
複数人でのグループ通話を表します。発信者がグループ通話を追加や削除したり、通話全体をハングアップする機能などを提供します。
-
CallEvent
-
電話の通話に関連するイベントを表します。
-
- -

仕様

- - - - - - - - - - - - - - - - -
SpecificationStatusComment
Web TelephonyドラフトDraft
- -

ブラウザ実装状況

- -

明らかな理由により、サポートはモバイルブラウザが優先されます。

- -

We're converting our compatibility data into a machine-readable JSON format. - This compatibility table still uses the old format, - because we haven't yet converted the data it contains. - Find out how you can help!

- -
- - -

- -
- - - - - - - - - - - - - - - - - - - -
機能ChromeFirefox (Gecko)Internet ExplorerOperaSafari
基本サポート未サポート未サポート未サポート未サポート未サポート
-
- -
- - - - - - - - - - - - - - - - - - - - - -
機能AndroidFirefox Mobile (Gecko)Firefox OS (Gecko)IE MobileOpera MobileSafari Mobile
基本サポート未サポート12.0 (12.0)1.0.1未サポート未サポート未サポート
-
- -

関連情報

- -

Web Telephony API の使用

diff --git a/files/ja/archive/b2g_os/web_telephony_api/using_the_web_telephony_api/index.html b/files/ja/archive/b2g_os/web_telephony_api/using_the_web_telephony_api/index.html deleted file mode 100644 index c429f6e00a..0000000000 --- a/files/ja/archive/b2g_os/web_telephony_api/using_the_web_telephony_api/index.html +++ /dev/null @@ -1,268 +0,0 @@ ---- -title: Web Telephony API の使用 -slug: Archive/B2G_OS/Web_Telephony_API/Using_the_Web_Telephony_API -tags: - - Advanced - - B2G - - Certified - - Firefox OS - - Phone - - Telephony - - Web Telephony -translation_of: Archive/B2G_OS/Web_Telephony_API/Using_the_Web_Telephony_API ---- -

- -

この記事は、Web Telephony API を使い始めるための基本を説明します。

- -

Manifest 許可設定

- -

Firefox OS アプリでこの API を使用するには、manifest.webapp ファイルに次の内容を記述する必要があります:

- -
"type": "certified",
-"permissions": {
-  "telephony": {
-    "description": "Required to control telephony functions"
-  }
-},
-
- -

API アクセス

- -

端末の電話機能へアクセスするための開始点は、Navigator.mozTelephony です。このオブジェクトの参照を得れば、通話の発信と着信を始められます。

- -
// Telephony object
-var tel = navigator.mozTelephony;
-
- -

端末ハードウェアの調査

- -

返される Telephony オブジェクトは、電話機のハードウェアをプログラム的に表し、その多くのアスペクトを制御する機能を与えます。例えば、消音や消音解除、スピーカーフォンの有効化と無効化などです:

- -
// Check if the phone is muted (read/write property)
-console.log(tel.muted);
-
-// Check if the speaker is enabled (read/write property)
-console.log(tel.speakerEnabled);
-
- -

発信

- -

通話の発信は、Telephony オブジェクトで Telephony.dial を呼び出すだけの簡単なものです。これは、Firefox OS 1.4 以降で使用できる Promise ベースの API です (以前は標準のコールバック関数でした)。これは、resolve で通話を表す TelephonyCall オブジェクトを返します。このオブジェクトには、いくつものプロパティ、メソッド、イベントハンドラが含まれており、通話のプロパティを監視し、通話の ハングアップ保留 などの操作ができ、通話状態の変化に対する動作も指定できます。

- -
// Place a call
-var call = tel.dial("123456789").then(function(call) {
-
-  // Events for that call
-  call.onstatechange = function (event) {
-      /*
-          Possible values for state:
-          "dialing", "ringing", "busy", "connecting", "connected",
-          "disconnecting", "disconnected", "incoming"
-      */
-      console.log(event.state);
-  };
-
-  // Above options as direct events
-  call.onconnected = function () {
-      // Call was connected
-  };
-
-  call.ondisconnected = function () {
-      // Call was disconnected
-  };
-});
-
- -

着信

- -

通話の着信は、発信と異なりますが単純です。着信時に発動する Telephony.onincoming イベントリスナを書く必要があります。この関数は、call プロパティを含むイベントオブジェクト (CallEvent) が含まれます。このプロパティは、通話の TelephonyCall オブジェクトへのアクセスを取得し、呼び出しへの応答 などの動作ができます。

- -
// Receiving a call
-tel.onincoming = function (event) {
-  var incomingCall = event.call;
-
-  // Get the number of the incoming call
-  console.log(incomingCall.id);
-
-  // Answer the call
-  incomingCall.answer();
-
-  // Let's say we have a button set up to hang up the call when pressed.
-  hangupButton.onclick = function() {
-    // Disconnect a call
-    call.hangUp();
-  }
-};
-
- -

複数の通話を端末上で同時にアクティブにすることが可能です。Telephony.calls プロパティを通じて各通話をイテレートし、それぞれに対して適切な動作を行ってください。

- -
// Iterating over calls, and taking action depending on their changed status
-tel.oncallschanged = function (event) {
-  tel.calls.forEach(function (call) {
-    // Log the state of each call
-    console.log(call.state);
-  });
-};
-
- -

仕様

- - - - - - - - - - - - - - - - -
仕様状態コメント
Web TelephonyドラフトDraft
- -

ブラウザ実装状況

- -

明らかな理由により、サポートはモバイルブラウザが優先されます。

- -

現在、互換性データを可読形式の JSON フォーマットに置き換えているところです。 - この互換性一覧は古い形式を使っており、これに含まれるデータの置き換えが済んでいません。 - 手助けしていただける場合は、こちらから!

- -
- - -

- -
- - - - - - - - - - - - - - - - - - - -
機能ChromeFirefox (Gecko)Internet ExplorerOperaSafari
基本サポート未サポート未サポート未サポート未サポート未サポート
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
機能AndroidFirefox Mobile (Gecko)Firefox OS (Gecko)IE MobileOpera MobileSafari Mobile
基本サポート未サポート12.0 (12.0)1.0.1未サポート未サポート未サポート
idsecondId未サポート30.0 (30.0)2.0未サポート未サポート未サポート
disconnectedReason未サポート37.0 (37.0)2.2未サポート未サポート未サポート
-
- -

関連情報

- - diff --git "a/files/ja/archive/b2g_os/\343\203\210\343\203\251\343\203\226\343\203\253\343\202\267\343\203\245\343\203\274\343\203\206\343\202\243\343\203\263\343\202\260/index.html" "b/files/ja/archive/b2g_os/\343\203\210\343\203\251\343\203\226\343\203\253\343\202\267\343\203\245\343\203\274\343\203\206\343\202\243\343\203\263\343\202\260/index.html" deleted file mode 100644 index 34b4c19863..0000000000 --- "a/files/ja/archive/b2g_os/\343\203\210\343\203\251\343\203\226\343\203\253\343\202\267\343\203\245\343\203\274\343\203\206\343\202\243\343\203\263\343\202\260/index.html" +++ /dev/null @@ -1,60 +0,0 @@ ---- -title: Firefox OS のトラブルシューティング -slug: Archive/B2G_OS/トラブルシューティング -tags: - - Firefox OS - - Mobile - - toublesooting -translation_of: Archive/B2G_OS/Troubleshooting ---- -
-

この記事ではFirefox OSを使用している際に発生する可能性のある一般的な問題を解決するためのヒントを提供します。どうぞご自由にこのページにコンテンツを追加してください!

-
- -

ネットワークの問題

- -

もし、Wi-Fiネットワークの接続問題があるのであればデバイスからWi-Fiの構成ファイルを削除することが役に立つと思われます。以下のように行うことができます

- -
adb shell rm /data/misc/wifi/wpa_supplicant.conf
-adb reboot
-
- -
-

記: この操作法は、端末の udev設定を構成済み と想定しています。

-
- -

電話の故障

- -

電話を故障させてしまった場合、例えば間違ったイメージを焼こうとした場合、ブートローダ(端末によってfastboot やheimdal )で再起動してみます。正確なシーケンスは電話によって変わります。USBケーブルを外し、電池を外して再度取り付けたりしてみます。Unagi と Otoro用には、音量アップと電源ボタンを、スプラッシュ画面が見えるまで数秒間、長押しします。電話がブートローダモードに入っているのを fastboot devices (またはサムスンの電話のいくつかでは heimdall devices )で確認します。いったんfastboot devicesを使って電話が見えるようになったら、ベースイメージか、端末メーカーの提供するSDのパッケージファイル(電話による)を含むフォルダを探します。いま、焼き込むには2つのオプションがあります:

- - - -
fastboot flash boot boot.img
-fastboot flash userdata userdata.img
-fastboot flash system system.img
-fastboot flash recovery recovery.img
-fastboot erase cache
-fastboot reboot
- -

赤色LEDの点滅 (otoro/unagi)

- -

この動作は、起動するのに電池容量が少なすぎることを意味しています。(赤色LEDの点滅が止まってからもう少しまで) 再度充電をするか、USBケーブルを抜き、電池を取り外し、USBケーブルを差し、電池を再度取り付けてください。

- -

iPhoneから切り替えた後にSMS受信に失敗する

- -

SIM カードを iPhone から Firefox OS (またはその他の色々なプラットフォーム) の端末に切り替えた場合、iPhone ユーザからのテキストメッセージを一切受け取れない問題にぶち当たることがあります。これはiPhoneからiPhoneへのSMSメッセージはiMessage を用いて送信されるためであり、これはiPhone同士のメッセージを実際のテキストメッセージとして送る代わりに、Appleのサーバ経由でルーティングしてユーザのお金をセーブするものです。あなたがiPhoneを離れると不幸にも、iMessage は離れた事を知るすべはなく、他のiPhoneユーザからのSMSは依然iMessage経由で送ろうとするため、つまりあなたはそれを受け取れなくなります。
-
- これを修正するには、SIMで iMessage を切ります; imore.com にその方法があります —  Here's how to turn off iMessage を読んで下さい。

- -

OSXで ADB に端末が出てこない

- -

OSXで adb devices を実行すると、いくつかの端末は端末リストに出てこないことがあり、これにはさまざまな理由があります。これはあなたの ~/.android/adb_usb.ini ファイルに端末ベンダIDを追加して、ADBに端末を見つけるヒントを与えると直ります。

- -
-

: もっと詳細は この stackoverflow ポスト を見てください、ここには接続端末のベンダIDを見つける方法や、それを adb_usb.ini に追加する方法が載っています。

-
- -

 

-- cgit v1.2.3-54-g00ecf