第 3 回 Tizen 勉強会




Firefox OS カスタム ROM の作成
          2012/08/25
自己紹介

   Twitter: @masap
   職業: 組み込みプログラマ(主に Wi-Fi)
   ハッシュタグ: #FirefoxOSjp
概要
Firefox OSとは

   Mozilla が作ったスマートフォンOS
   思想: アプリケーションは全て HTML5 になるべき
       iOS で購入したアプリは Android でも動くべき
   アプリケーション開発環境の比較
            Android   Tizen        Firefox OS
    開発言語    Java      JavaScript   JavaScript
    画面設計    XML       HTML5        HTML5
    ネイティブ   C++       EFL          なし
    OS      Linux     Linux        Linux
Firefox OSとは(続き)

   シェア
       通信キャリアは 7 社
           (米)Sprint、(独)Deutsche Telekom、(アラブ首長国連
            邦)Etisalat、(フィリピン)Smart、(伊)Telecom Italia、(スペイ
            ン)Telefonica、(ノルウェー)Telenor。
       端末メーカーは 2 社
           (中)TCL Communication Technology、(中)ZTE。
   投入時期
       2013年初頭に最初の端末をブラジルにて発売予定。
Firefox OS Phone の使用感

   操作性
        起動、停止が速い。 15 秒で起動。停止は 1 秒以内。
             例としてGalaxy S2 WiMAX は 30 秒で起動、 7 秒で停止。
        もたつきなくスルスル動く。
   UI
        Android よりも iPhone に似ている。
        物理ホームキーが必要。
Firefox OS の特徴

   プラットフォーム自体をHTML5でカスタマイズ可能
       アプリではなくプラットフォームをHTML5で書ける
           Tizen はプラットフォーム自体はネイティブ (EFL) で書かれて
            いる。
       これは Firefox OS 固有の特徴。今日はこの点を中心に
        説明。
カスタマイズ(入門編)
壁紙セレクタ

   壁紙セレクタに項目を追加してみる。
準備

   Galaxy S2 (SC-02C) を用意
             日本で入手できるモデルでWWモデルに最も近いらしい
   Android 4.0 以上を焼く ⇐鬼門!
             Firefox OS のスクリプトが認識できるFWであること
   Firefox OS をダウンロード/ビルド/焼く
       基本的に公式手順通り
        https://developer.mozilla.org/en-US/docs/Mozilla/Boot_to_Gecko/B2G_build_prerequisites

       フルビルドは Athlon X2 4400 で 2 – 3 時間
Firefox OSの構造

   3層構造

      Gaia    JavaScriptで書かれたUIレイヤ


     Gecko       レンダリングエンジン          ユーザ空間


               ハードウェア仮想化レイヤ

      Gonk

                   Linux カーネル        カーネル空間
修正箇所

   Settings画面はひとつの HTML でできている
       gaia/apps/settings/index.html
   壁紙設定画面はsection要素で定義
       <section role="document" id="wallpaper">
   画像ファイルの置き場所
       gaia/apps/system/resources/images/backgrounds/
        に 480x800 の pngを置く。
   最後にGaiaを焼く
       ./flash.sh gaia で約 30 秒。
修正前

   修正前のホーム
修正後

   修正後のホーム
カスタマイズ(初級編)
Wi-Fi 機能の追加

   WPS(Wi-Fi Protected Setup) を追加する。
   Wi-Fi Protected Setup とは
       「ボタンを押すだけでつながる」
       SSID や暗号キーの入力等 Wi-Fi 接続に必要な手間が
        省ける。
画面イメージ

   WPS 追加イメージ
wpa_supplicant

   Firefox OS は Wi-Fi 接続のためのネィティブアプ
    リとして wpa_supplicant を使用している。
   広く使われている
       スマートフォン: Android, Meego, Tizen。
       デスクトップ: Ubuntu, Fedora。
   コマンドで操作
       “SCAN” のような文字列でコマンドを実行。 Android,
        Firefox OS。
       D-Bus 経由での操作も可能。 Meego, Tizen。
WPS 移植概要

   下記作業が必要
              - WPS 向け UI を追加
       Gaia
              - Gecko の WPS API を呼ぶ

              - WPS 向け API を追加
      Gecko
              - WPS コマンド発行機能を追加

    wpa_supplicant WPS 機能は既存なので修正不要
JavaScript とネイティブアプリ

   そもそも JavaScript とネイティブアプリはどうやって
    通信するのか?
   js-ctypes を使用して JavaScript から共有ライブラ
    リを呼べる。
       let cutils = ctypes.open("libcutils.so");
       Android 等向けに開発した既存資産を有効活用でき
        る。
   Js-ctypes について詳しく知りたい方はこちら
       @makoto_kato さんのスライド
        http://www.slideshare.net/djraven/jsctypes-2464200
コミット

   せっかく作ったので本家にコミットしてみる。
       Gaia: GitHub から Pull Request。
            lint チェックに注意。
       Gecko: Bugzilla に報告。
            バグじゃないけどバグとして報告。
   master ブランチに merge されたのでぜひ使って
    みてください。
まとめ

   カスタマイズしやすい!
       Android 等では敷居が高かったカスタマイズだが、今後
        は Web デザイナの皆さんからの Pull Request にも期
        待。
       Gaia の Mozilla 内開発者は 18 人。意外に少ない。
       日本の携帯電話会社さんもぜひ!。

Firefox OS カスタム ROM の作成

  • 1.
    第 3 回Tizen 勉強会 Firefox OS カスタム ROM の作成 2012/08/25
  • 2.
    自己紹介  Twitter: @masap  職業: 組み込みプログラマ(主に Wi-Fi)  ハッシュタグ: #FirefoxOSjp
  • 3.
  • 4.
    Firefox OSとは  Mozilla が作ったスマートフォンOS  思想: アプリケーションは全て HTML5 になるべき  iOS で購入したアプリは Android でも動くべき  アプリケーション開発環境の比較 Android Tizen Firefox OS 開発言語 Java JavaScript JavaScript 画面設計 XML HTML5 HTML5 ネイティブ C++ EFL なし OS Linux Linux Linux
  • 5.
    Firefox OSとは(続き)  シェア  通信キャリアは 7 社  (米)Sprint、(独)Deutsche Telekom、(アラブ首長国連 邦)Etisalat、(フィリピン)Smart、(伊)Telecom Italia、(スペイ ン)Telefonica、(ノルウェー)Telenor。  端末メーカーは 2 社  (中)TCL Communication Technology、(中)ZTE。  投入時期  2013年初頭に最初の端末をブラジルにて発売予定。
  • 6.
    Firefox OS Phoneの使用感  操作性  起動、停止が速い。 15 秒で起動。停止は 1 秒以内。  例としてGalaxy S2 WiMAX は 30 秒で起動、 7 秒で停止。  もたつきなくスルスル動く。  UI  Android よりも iPhone に似ている。  物理ホームキーが必要。
  • 7.
    Firefox OS の特徴  プラットフォーム自体をHTML5でカスタマイズ可能  アプリではなくプラットフォームをHTML5で書ける  Tizen はプラットフォーム自体はネイティブ (EFL) で書かれて いる。  これは Firefox OS 固有の特徴。今日はこの点を中心に 説明。
  • 8.
  • 9.
    壁紙セレクタ  壁紙セレクタに項目を追加してみる。
  • 10.
    準備  Galaxy S2 (SC-02C) を用意  日本で入手できるモデルでWWモデルに最も近いらしい  Android 4.0 以上を焼く ⇐鬼門!  Firefox OS のスクリプトが認識できるFWであること  Firefox OS をダウンロード/ビルド/焼く  基本的に公式手順通り https://developer.mozilla.org/en-US/docs/Mozilla/Boot_to_Gecko/B2G_build_prerequisites  フルビルドは Athlon X2 4400 で 2 – 3 時間
  • 11.
    Firefox OSの構造  3層構造 Gaia JavaScriptで書かれたUIレイヤ Gecko レンダリングエンジン ユーザ空間 ハードウェア仮想化レイヤ Gonk Linux カーネル カーネル空間
  • 12.
    修正箇所  Settings画面はひとつの HTML でできている  gaia/apps/settings/index.html  壁紙設定画面はsection要素で定義  <section role="document" id="wallpaper">  画像ファイルの置き場所  gaia/apps/system/resources/images/backgrounds/ に 480x800 の pngを置く。  最後にGaiaを焼く  ./flash.sh gaia で約 30 秒。
  • 13.
    修正前  修正前のホーム
  • 14.
    修正後  修正後のホーム
  • 15.
  • 16.
    Wi-Fi 機能の追加  WPS(Wi-Fi Protected Setup) を追加する。  Wi-Fi Protected Setup とは  「ボタンを押すだけでつながる」  SSID や暗号キーの入力等 Wi-Fi 接続に必要な手間が 省ける。
  • 17.
    画面イメージ  WPS 追加イメージ
  • 18.
    wpa_supplicant  Firefox OS は Wi-Fi 接続のためのネィティブアプ リとして wpa_supplicant を使用している。  広く使われている  スマートフォン: Android, Meego, Tizen。  デスクトップ: Ubuntu, Fedora。  コマンドで操作  “SCAN” のような文字列でコマンドを実行。 Android, Firefox OS。  D-Bus 経由での操作も可能。 Meego, Tizen。
  • 19.
    WPS 移植概要  下記作業が必要 - WPS 向け UI を追加 Gaia - Gecko の WPS API を呼ぶ - WPS 向け API を追加 Gecko - WPS コマンド発行機能を追加 wpa_supplicant WPS 機能は既存なので修正不要
  • 20.
    JavaScript とネイティブアプリ  そもそも JavaScript とネイティブアプリはどうやって 通信するのか?  js-ctypes を使用して JavaScript から共有ライブラ リを呼べる。  let cutils = ctypes.open("libcutils.so");  Android 等向けに開発した既存資産を有効活用でき る。  Js-ctypes について詳しく知りたい方はこちら  @makoto_kato さんのスライド http://www.slideshare.net/djraven/jsctypes-2464200
  • 21.
    コミット  せっかく作ったので本家にコミットしてみる。  Gaia: GitHub から Pull Request。  lint チェックに注意。  Gecko: Bugzilla に報告。  バグじゃないけどバグとして報告。  master ブランチに merge されたのでぜひ使って みてください。
  • 22.
    まとめ  カスタマイズしやすい!  Android 等では敷居が高かったカスタマイズだが、今後 は Web デザイナの皆さんからの Pull Request にも期 待。  Gaia の Mozilla 内開発者は 18 人。意外に少ない。  日本の携帯電話会社さんもぜひ!。