カテゴリー別アーカイブ: FirefoxOS

Firefox Developers Conference 2015 in Tokyo

去年に引き続き Firefox の開発者向けカンファレンスに参加してきました。当初doorkeeperで申し込んだ時には300の枠が350に増員された状態で30人待ちだったので,先週に続いての東京遠征だったこともあって諦めてたのですが,まさかの増枠で参加登録が有効になったのでこれは行くしかない,というわけで懇親会込みで日帰り参加となりました.

IMG_9368

午前はキーノートスピーチ,会場は赤と青の光の演出とBGMで盛り上がりました.今回は物議を醸してなかなか実現されなかった iOS版Firefox のリリース直後とあってまずはその話題から.さらに TV のリリースや IoT 機器などへフィールドを広げつつある Firefox OS,全プロダクトで重視されるセキュリティ機能の強化,Android への FxOS Preview のリリースなど,Mozila v1.0 から11年の成果が紹介されました.

独り言: ふと思い返すと,初めて Sun4 で使って衝撃を受けた Netscape Navigator v1.0 が 1994 年だから,あれから21年か…

昼にはiOS版Firefox 宣伝カー”MozBus”がお目見えしてました. 運転席にはフォクすけくんもいます.IMG_9371

午後の Breakout session はテーマに沿って最新技術や動向の紹介を実際のデモなどを交えながらの講演で,バリエーション豊かな話をたくさん聞けました.以下,聴講セッションの感想など.

  • 「鉄腕アニメーション」
    • CSSによる動きの付け方やアニメの考え方を元にMainThreadとCompositor の役割を解説.Compositor の役割は非常に分かりにくいけど,それをセル画のイメージで分かりやすく表現されていた
  • 「Inspection & tweak: Firefox を使ったフロント開発」
    • JavaScript の動作をリアルタイムに覗いたり変えてみたりするデバッグツールの紹介.Web開発も動作の脳内シミュレーションでは限界なので,見える化・変更の効果・ネットワーク状況が分かるツールはありがたい
  • 「Porting C/C++ code to Web」
    • LLVM経由でJavaScript に変換するemscriptenの紹介とWebAssemblyの動向.JavaScriptを書くだけではユーザも限られ速度も厳しいのでnativeに走りがちだが,如何にC/C++のアプリをWebに持ってくるかという興味深いテーマ
  • 「The Web for Everyone – Let’s fix it」
    • Firefox で正しく表示されないサイトを CSS の記述事例を交えて紹介.行儀の悪いサイトをバッサリ切っていったのは面白かった.CSS の見た目チェッカー的サイトも運用される模様
  • 「Embedded Web で加速する Web of Things」
    • TV・サイネージ・車載でのWeb技術の標準化動向や車のデータ取得の応用など.後半は発表者の方の趣味満載だったが,車ですらも hack 対象にできるのは衝撃的だった.時間が足りなかったがもう少し活動の話は聞きたかったかも

IMG_9377

写真撮影の後に懇親会に参加.mozillaスタッフの方々やcommunityの方々ともいろいろ話ができて(フォクすけくん争奪戦は今回も残念でしたが),参加して楽しいお祭りでした.

 

au Firefox OS Event

Fx0 発表会

12/23 にベルサール渋谷ファーストにて KDDI Fx0 発表会 に参加してきました.会の内容については各ニュースサイトで詳しく紹介されていますし,ニコ生で中継・録画放送されてますのでそちらをどうぞ.

image001image002image003image004

 

田中社長の発表はもったいぶらせながらも期待させる面白いものでした.他の発表会は見たことがないのですが,非常に楽しませていただきました.

舞台の裏では発表会に続いて行われるハッカソンの発表がありました.実はFirefoxOSでハッカソンってどんな形のものができるんだろうかとかなり興味がありました.各チームとも,UI やサーバ,デバイスとのブリッジとしての開発のしやすさや応用のしやすさを十分活用していました.ただ,会場の Wi-Fi の channel が専用に確保できなかったために,パケットが飛ばずに期待通りの動きが見られなかったのはちょっと残念でした.大きな会場でデモ機をシナリオ通り動かす難しさは痛いほどよく分かりますが,報道や一般の方々に面白い試みがいろいろ詰まってたことは伝わりましたかね?

懇親会では…

イベント終了でゲスト参加者として懇親会にも参加させていただきました.会場にはハッカソンの機材展示や Fx0・OpenWebBoard の実機紹介などもあって,アイデアを気軽に具現化する手段や機材が揃いつつある感じでした.ハッカソンのシマダイチームの方々と歓談して発表の苦労なども聞かせていただきました.

そして最後にBINGO大会もありました.1等が Fx0 本体,2等がフォクすけくん,3等がモバイルセットで各3つずつと,なかなかの大盤振る舞い.まぁこの手の BINGO で揃ったことはないんですが,今日はなかなか調子よく開いていって,リーチからすぐBINGO!

抽選くじを引いて見事に 1等 Fx0 本体が当たってしまいました(^^)

Mozilla CTO の Gal さんから直接手渡され,Congratulation! の言葉をいただきました.発表会の雰囲気を味わえただけでなく,Christmas Present までいただいてわざわざ遠出して来た甲斐がありました.KDDI さん Mozilla さんありがとうございました (_o_)

FirefoxOS Advent Calendar 2014 (18日目)

今日は Firefox OS Advent Calendar 18日目です.

初参戦ですが登録したからには何か記事になることをしないと,ということで,メインストリームで進めていた「FirefoxOS on AndroidStick」を軽くまとめつつ今年の活動を振り返りたいと思います.

久しぶりの「動かしてみる」

元々異なるプラットフォームで何か動かしてみる活動はかなり古くからやっていたのですが,去年の後半に何気なく安価だったので入手した「Android Stick」 と,Simulator で軽く遊ぶだけだった「Firefox OS」の組み合わせを思いついて,久しぶりの「動かしてみる」活動でした.

動かしてみるためにはまずどういう構造なのか・仕組みなのかを知るためにソースを読むわけですが,Gecko-Gonk層の境界を中心に断片的ながらそこそこ読んだものの,各デバイスの機能を UI から理解するために  C++ と JavaScript の境界を越えて(XPCOMやjs-ctypesなど)読むのは非常に苦労しました.

Gonk 層が AOSP ライブラリをベースにしているおかげで,Android が動いていれば取っ掛かりはスムーズ,しかしドライバやベンダ提供ライブラリは公開されず binary だったりするので,Android の想定で作られた前提がことごとく崩れてややこしい問題が現れてくるのです.これを日々叩くために Gecko を試しにいじって反応を見る作業を続け,不安定ながらなんとか動いてるのが現状です.

動かしてみた結果は 関西勉強会と Developers Conference 懇親会 で LT にて報告させていただきました.結構関心を持ってもらえたものの,結局まだ動いてる機体はどこにも公開してないんですね…未だに起動するだけでも console 操作が必要でそこそこ手間だったり,HDMI 出力先が必須なのが今の課題です.

今の活動成果についてはこの Advent Calendar に間に合わせるべく(event駆動型開発!),強引に GitHub に登録してビルド編としてなんとか公開してみました.かなりの長文ですが興味のある方はどうぞ.

仕事でも FirefoxOS?

組込み機器の仕事をしてるので,ボードやチップを扱ってるおかげで目の前の試作機材でも時間があるときに FirefoxOS を動かしたりしてました.割と独自仕様なのでいろいろ苦労したのですが,タッチパネルと Wi-Fi, 動画再生, WebGL 辺りまではなんとかなったのでデモ機レベルまで持っていったものの,軌道に乗せる前に公開することもなくお蔵入りになってしまいました.とはいえ成果の一部は某六本木方面に持ち込んだとか何とか;-)

Flame 端末も購入

やはりちゃんと動く例も見ておきたいので Flame 端末は買いました.普通は update を待たないとなかなか進化しないのですが,build 手順が分かっててすんなり build ROM が入るのはいいですね.適当に作ってた HTML5 を試すデモアプリも簡単に想定通りに動くのはなかなかいい環境です.下回りのドライバやカーネル開発ではこうも行きませんから…

さて次のtargetは…

今年後半はほとんど時間が取れず,来年はさらに環境がすっかり変わってしまってしまうのですが…そんなことはともかく(仕事と同じで)下回りばかりやってても進歩がないので,FirefoxOS の活動にもう一歩踏み込んで,前からやろうと思ってた HTML5 からのデバイス制御辺りは試していきたいと思う次第であります.

 

FirefoxOS on Android Stick (ビルド編)

はじめに(言い訳)

ここのところなかなかネタを書く時間が取れなくて久々の更新です.今回は今年公開して FirefoxOS をいろいろいじる契機になった FirefoxOS on Android Stick のビルド話を書きたいと思います.

前に書いた記事のころはまだ試行錯誤を繰り返して動かしていてビルド手順はかなり難しく再現も難しかったので,最新の Stick を手に入れてそちらに移行してからにしようと思っていました.しかし新機種(MK802IV)は Kernel config に手を入れないと FirefoxOS では使えなかったため kernel のビルドからやり直してたのですが,これが全然思い通りに起動せず,結局いじる時間もなく放置してしまうことになり,さらに悪いことに FxOS 2.x の tablet 未対応が直らず,結果として旧機種(MK808B)の更新も停まっていたのでした.

ということで,年末のこの機会に一度ビルド手順を見直して,なんとか共有できるところまで持っていこうとした顛末です.Stick の個体とか開発環境の差とか面倒なところは無視してるので,この手順を見ても全然動かないかもしれません.まぁこんな風にやってるんだなという雰囲気でお願いします.

ちなみにこれを機会に GitHub の放置アカウントにようやく手を入れました:-)

まずは開発環境の準備

MDN:Firefox OS ビルドの必要条件 を準備してください.これはどの機種のビルドも同じです.

ソースの入手

当然ながら B2G 本体は Stick を選ぶことができませんから,自前で用意した repogitory から取ってきます.config.sh を実行すると,機種依存部分以外は全て他プロジェクトから取って来る形です.今取ってこれるのは v1.4 だけにしています.

% git clone https://github.com/kuni6800/B2G.git
% cd B2G
% git checkout --track remotes/origin/rkand
% GITREPO=https://github.com/kuni6800/b2g-manifest BRANCH=rkand-v1.4 ./config.sh rkand

Android ライブラリの入手

Gonk 層に当たる HW 依存部分はベンダーからリリースされる Android 向けライブラリを使います.SoC提供会社からバイナリ提供されるのが基本ですが,MK808B は ROM image でしか公開されておらず再配布条件が確認しづらいので,本体から持ってくることにします(調べてみると github のいくつかで普通に上がってるけど…公開できるのだろうか?).

Android ライブラリをツリーに用意します.adb などを駆使して Android 本体の system/ 以下を device/rockchip/rk30board/proprietary/system/ 以下に持ってきます. 全部持ってくる必要はなく,実際に必要なファイルは device/rockchip/rk30board/proprietary/release.mk に記載しています.または Finless ROM などにある system.img を mount -o loop で直接マウントする手もあります(お勧めしませんが).

パッチ当てとビルド

build.sh でそのままビルドできればいいんですが,以下のような厄介な問題

があって手動で作業する必要があります.これら差分は github で fork して作業したものを公開してもいいのですが,バージョンに依存するかなり暫定なものなのでとりあえずパッチの形にしています.

まず「xdelta」を apt-get などでインストールしてください.その後,スクリプトを実行してパッチを当てます.

% pushd device/rockchip/rk30board/patches
% ./patch.sh
% popd

なんだか失敗してしまったようなら,patch-rev.sh で戻してから原因を追ってください.

あとは失敗しないことを祈りつつ build.sh を実行して暫く待ちます.

% ./build.sh

アーカイブを作成

めでたくエラーなしでビルドが完了したら,アーカイブを作ります(ROM を作らないのは PicUntu(Linux) を使うため).archive.sh を実行すると「b2g-rkand-(日付8桁).tar.gz」 のファイルが出来上がります.

% ./archive.sh

 PicUntu kernel の Recovery への書き込み

PicUntu のインストールはすでに紹介していますので,こちらを参照ください.MK808B の PicUntu は元の Android を壊さずに recovery 領域に kernel をインストールするのでいろいろ面倒ですが,ファイルシステムは SD カードなのでPCでファイル変更できるという融通が利きます.

ファイルシステムの micro SD カードへのインストール

micro SD カードを用意して PC に挿して,Linux 上でファイルシステムを作ります.予め dmesg などで SD カードのデバイス名(以下 sdX) を確認しておきます.

microSD カードへのパーティション作成とフォーマットを行います.この例では全ての領域を1つのパーティションで設定しています.くれぐれも microSD カードの中身はバックアップしてから実施してください.

% sudo fdisk /dev/sdX
コマンド: p<CR>    # 情報確認
コマンド: d<CR>    # パーティション(全)削除
コマンド: n<CR>    # パーティション作成
Select: p<CR>     # プライマリ
パーティション番号: 1<CR> # →パーティション1
先頭セクタ: <CR>   # →先頭から
Last セクタ: <CR> # →末尾まで
コマンド: w<CR>   # 書き込み
% sudo mkfs.ext4 -L linuxroot /dev/sdX1

microSD カードのフォーマットができたら,マウントしてアーカイブを展開します.先ほどの FxOS のアーカイブもここで展開します.

% mkdir linuxroot
% sudo mount -t ext4 /dev/sdX1 linuxroot
% sudo tar -C linuxroot -zxvf picuntu-linuxroot-0.9-RC3.tgz
% sudo tar -C linuxroot/root -zxvf b2g-rkand-xxxxxxxx.tar.gz

PicUntu 起動してから FxOS を起動するため,その起動用スクリプトを作成します.スクリプトの2行目はConsoleの停止,3行目は画面サイズの変更,4行目は FxOS への切替です.

% sudo cat > linuxroot/root/start_b2g.sh
#!/bin/sh
echo 0 > /sys/class/vtconsole/vtcon1/bind
fbset 1280x720-60-32 -a
chroot /root/root /init
<Ctrl-D>
% sudo chmod +x linuxroot/root/start_b2g.sh

最後にアンマウントして microSD カードを取り出します.取り出したカードは MK808B 本体に挿しておきます.

% sync
% sudo umount linuxroot

Recovery モードでの起動

ようやく本体の起動です.ただ,Android を残していたためそのままでは Android が起動しますので,Recovery モードで起動しなければなりません.困ったことに MK808B には外部操作で Recovery モード起動する方法がなく,以下の方法を取らざるを得ないのが現状です.

  • ターミナルアプリをインストール,ターミナルから「adb reboot recovery」を実行
  • Reboot.apk を導入して「Reboot Recovery」を選択
  • 設定でIPアドレスを調べて「adb connect <ipaddress>」で接続,「adb reboot recovery」を実行

FirefoxOS の起動

PicUntu kernel が起動すると,暫くして Console に login prompt が出ます.アカウントは root,default password は「12qwaszx」 です(公式情報).

ログインできたら,先ほどのスクリプトを起動します.

% ./start_b2g.sh

初回にかなり時間が掛かります.不安定なので Crash Report が出るかもしれませんが,画面が出れば成功です.

最後に

まだまだよく分からない作業が途中にたくさん入っていて,「すぐにやってみる」には程遠いですね.せめて PicUntu や Recovery を使わないで ROM 焼きだけで直接起動したいものです.

また,Android ライブラリ(gralloc.so)の使い方が FirefoxOS では違うのか,エラーが出てメモリリークしてすぐに固まってしまうようです.メッセージからソースがあればすぐ分かる感じなのですが,バイナリ部分なのでもどかしいところです.

これから他のいろんな端末で FirefoxOS の起動に挑戦する方が居られると思いますが,その何かの助けになればいいなと思います.

FirefoxOS v2.1 と tablet 指定

以前、v2.0 を試した際に「アイコンがでかい」という残念な結果を見たわけですが、先日の勉強会でネタ話にしていたところ、「確か tablet ビルドがあったような」ということで確認してみました。

Gaia のデバイス指定

gaia の Makefile を見ると、デバイス種別を指定するところがありました。phone が指定されていたからアイコンが3列、というのは何となく納得。

GAIA_DEVICE_TYPE := phone

Bugzilla にもBug 1010128 にて tablet が追加されているようです。これは試してみないと。

v2.1 へのアップグレード

tablet ビルドを試す前に、v2.0 から v2.1 に上がったこともあって(phoneのまま)そちらを先に試してみました。すると

マウスカーソルが動かない

という事態に。これは phone だからなのか、修正で何かトラブルなのかは追跡できてないですが、動きを見てると「マウス押す」→「マウス移動」→「マウス放す」という動作でしかカーソルが動かないので、もしかしたらタッチスクリーンの動作に引っ張られてそうな感じです。

v2.1 では新クラス GeckoTouchDispatcher が出来て nsAppShell にあった MouseEvent 処理がそちらに移動したので、その影響でマウス処理が正常にできていないのではないか? と思われます。マウス使う人が増えないとこれは当分直らないか…

tablet ビルドを試す

v2.0 で GAIA_DEVICE_TYPE=tablet のビルドを試したところ、まだ用意しただけで何もできないようで、アイコンも何もない画面で、Notification の Setting すら起動できない状態でした。
No Icon on v2.0 tablet

v2.1 で GAIA_DEVICE_TYPE=tablet のビルドではようやく v1.4 で見たアイコンが出現し、横スクロールができるようになっています。ただし、上記のようにマウスがまともに動かないので先に進むことすら困難な状態です。
appear icon on v2.1, but freeze cursor

ところで、tablet ビルドは以前通り横スクロール、phone ビルドは縦スクロールなので、端末の形態により UI のポリシーは変わっていくようです(今のところ)。ちなみにTVデバイス向けの tv ビルドも用意されているようです。

FirefoxOS の日本語化

FirefoxOS の日本語化の解説はすでに先人の方々が詳しくされているので、素直に日本語化したい方はそちらを参照したほうがよいかと思います。また MDN では Localizing FirefoxOS にL10N化のドキュメントがあります。
flame goes to v2.2-master

以下では、ローカルツリーに差分 commit して、upsteam に追従出来る形で進めた手順です。
(※ 以下のコマンドライン例をコピー&ペーストで実行しないでください。git や repo は理解した上で使用してください)

ローカルツリーのプロジェクト切替

ツリーは manifest にあるように、多数のモジュールを各地サーバから特定ブランチorタグを指定して取得し、repo コマンドでモジュールを管理しています。それぞれのモジュールは指定された状態のまま置かれているので、何か変更を加えた後に ‘repo sync’ で最新版を取り込むと変更が消されてしまいます。

それを避けるために repo でローカルプロジェクトを開始します。全てのモジュールにブランチを切り、sync 時には manifest で指定されたブランチorタグに対して git rebase する形で追従してくれます。以下ではプロジェクト名を myenvビルドディレクトリを ~/B2G とした例です。

$ cd ~/B2G
$ git checkout -b myenv origin/default
$ ./repo start myenv --all

L10n パッケージの追加

日本語化を行うためのパッケージは gaia, gecko に対する追加ファイルとして提供されていて、mercurial によって管理されているため mercurial のインストールが必要です。

mercurial のコマンド(hg)を使ってそれぞれのパッケージをツリーに取り込み、ローカルツリーのプロジェクトに登録しておきます。

$ cd ~/B2G/gaia/locales
$ hg clone http://hg.mozilla.org/gaia-l10n/ja
$ git add ja
$ git commit -m "add gaia-l10n/ja"

$ cd ~/B2G/gecko
$ hg clone http://hg.mozilla.org/l10n-central/ja l10n-central/ja
$ git add l10n-central/ja
$ git commit -m "add l10n-central/ja"

$ cd ~/B2G/build
$ hg clone http://hg.mozilla.org/build/compare-locales
$ git add compare-locales
$ git commit -m "add compare-locales"

これらを有効にするために ~/B2G/.userconfig を作成し、ビルド時に設定する環境変数を記載しておきます。

export LOCALE_BASEDIR=$PWD/gaia/locales
export LOCALES_FILE=$PWD/gaia/locales/languages_all.json
export GAIA_DEFAULT_LOCALE=ja

export L10NBASEDIR=$PWD/gecko/l10n-central
export MOZ_CHROME_MULTILOCALE="ja"

export PATH="$PATH:$PWD/build/compare-locales/scripts"
export PYTHONPATH="$PWD/build/compare-locales/lib"

 日本語キーボード及び辞書の登録

日本語IME に必要な辞書を入手します。辞書は Sourceforge.net にて ipadic または naist-dic が入手可能です。これらのパッケージの *.dic ファイルを gaia 内に取り込みます。

$ mkdir ~/B2G/gaia/apps/keyboard/js/imes/jskanji/dict/src
$ tar zxvf ipadic-x.x.x.tar.gz
$ cp ipadic-x.x.x/*.dic ~/B2G/gaia/apps/keyboard/js/imes/jskanji/dict/src/

*. dic ファイルはそのままでは使えないため、IME で使える形に変換します。dict ディレクトリで make を実行します。

$ cd ~/B2G/gaia/apps/keyboard/js/imes/jskanji/dict
$ make

エラーになる場合は Makefile の find コマンドがどのディレクトリを参照しているかを確認してください。src になっていない場合は、ディレクトリ名を変更してください。

make に成功すると dict.json, dict/dict, dict/dict.utf8, dict/jcconv.pyc が作成または更新されます。一旦この状態でツリーに登録しておきます。

$ cd ~/B2G/gaia/apps/keyboard/js/imes/jskanji
$ git add dict dict.json
$ git commit -m "add ipadic"

この辞書と日本語IMEを有効にするため、 ~/B2G/.userconfig に以下を追加します。

export GAIA_KEYBOARD_LAYOUTS=en,jp-kanji"

あとは build.sh を実行するだけです。一度ビルド済みのツリーの場合は念のため out 及び objdir-gecko ディレクトリを削除しておいてください。

ツリーの更新

新たに upstream から ./repo sync で更新を取得した場合、取得後に上記の変更を加えて更新されます。ただし、upstream で上記に当たるファイルが更新された場合は conflict しますので、それぞれのモジュールで confilict を除去する必要があります。

.userconfig もツリーに登録しておくことができます。しかしながら .userconfig は .gitignore により登録対象外に指定されていますので、-f オプションで強制登録するか、別途保存することになります。

Flame のビルド

flame を v1.3 のままにしていたものの、せっかく最新版が投入できる端末なので、ようやく時間ができたこともありビルドからやってみました。
flame goes to v2.2-master

ビルド

最新ツリーでは flame の config (./config.sh./.repo/manifests/flame.xml) が用意されているので、素直にビルドするだけで完了します。

$ git clone git://github.com/mozilla-b2g/B2G.git
$ cd B2G
$ ./config.sh flame
$ ./build.sh

デフォルトの flame では JellyBeans ベースですが、config.sh の引数に flame-kk を指定することで KitKat ベースでもビルドできます。ちなみに flame の場合は Linux kernel もビルドしています。

最初のビルドでは flame 端末のバックアップを行うため、予め実機を adb で繋いでおく必要があります。adb での接続は後述します。実際のバックアップは device/t2m/flame/extract-files.sh で行っています。

実機の接続

自環境では Windows から VMWare Player で Ubuntu を起動しているため、Windows で接続を行った後に Ubuntu に再接続するようにしています。

Windows の場合、実機を接続すると ドライバのインストールが要求されますが、Windows Update では完了できないため Flame用のドライバを導入する必要があります。Flame 用のドライバは MDN の Flame ページ から辿れます。成功すると以下のデバイスが登録されます。

  • USB Composite Device 9025
  • ALCATEL HS-USB Android Modem 9025 #2
  • ALCATEL HS-USB Diagnostics 9025(COMxx)
  • ALCATEL HS-USB NMEA 9025 (COMxx)
  • YunOS ACB Interface
  • ALCATEL HS-USB WWAN Adapter 9025 #2
  • USB 大容量記憶装置
  • Linux File-CD Gadget USB Device
  • Linux File-CD Gadget USB Device

Ubuntu(udev を使う Linux) の場合、udev に flame のデバイスIDを登録しておきます。/etc/udev/rule.d/50-firefoxos.rules を以下のように作成します(android.rules があればそこに追記でも可)。

SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev"
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"

1つ目は Qualcomm として、2つ目は Google(Android Device) として認識した場合のルールです。
基本的に1つ目だけでよいはずですが、端末状態によっては 2つ目で認識することもあったので記載しておきます。

lsusb などで USB として認識していれば、adb で接続できていることを確認します。

$ lsusb
  :
Bus xxx Device xxx: ID 05c6:9025 Qualcomm, Inc. 
  :
$ adb devices
list of devices attached
12345678        device

permission のエラーなどで繋がらない場合は、一旦端末を外して以下を実行した後に接続を試みます。

$ sudo adb kill-server
$ sudo adb start-server

実機への書き込み

ビルドと接続が終わっていれば、書き込みスクリプトを実行するだけです。実行中はフラッシュメモリの各パーティションの消去と書き込み経過が逐次表示されます。

$ ./flash.sh

Flame 到着!

ようやくOSSストア経由で発売された Firefox OS リファレンス機「Flame」ですが、申込み当日いきなり注文が殺到して40分で売り切れたそうです。

人気によるものというよりFirefox OS クラスタの人たちが動く機体をひたすら待ってたわけで、ビルドROM入れ換えで既存端末をFirefox OS bootable にした人や並行輸入で入手した人を除けば、普通に通販で手に入る最初の端末なわけで、この状態もまぁ想定できたことでしょう。

入手に成功!

で、私はそのスタートダッシュに間に合わなかったものの、30分後になんとかボタンを押して注文確保しました。10分遅れてたら終了していたわけですが。

注文して3~4日ほどで到着したもの不在で受け取れず、1週間後に受け取りました。

10351759_821561041211259_8616082811080461454_n 10592802_821561074544589_6604504814846193373_n

ある種「ちゃんと携帯電話として動いてる」端末は初めて手にするのでいろいろ興味深いところですが、SIMがないので電話機能は使えず今はまだ Wi-Fi のみです。

今まで Android Stick では飾りだった FM Radio、Volume Up/Down、Camera、Sim Manager などがちゃんと動きますし、Network も mDNS が正しく動いて Web のレスポンスも実用範囲内です。搭載されている SoC が Snapdragon 200 とのことで、リファレンスとしてこのくらいのクラスでもちゃんと動きますよということを示しているのかもしれません。

技適マーク問題

到着するや否や、技適マークがおかしいという不穏な噂が流れました。で、電池を取り出して見てみると確かに規定には存在しない「J」のマークが。日本では「〒稲妻マーク」に続いて技術基準適合証明「R」(電波法による適合)と技術基準適合認定「T」(電気通信事業法による適合)が正しい端末には表示されているはずなので、これがないとなると使用時点でそれぞれの法律に違反することになります。これは大変。

端末個体の話ではなくて全てがこのマークらしいということで、しばらくして「回収」のお知らせが出回り、早速着払いで発送することに。それから5日後に正しい端末として受け取りました。

最近では iPhone のように電子的に表示することで、何か瑕疵が見つかれば Update で対応するのが一般的になってきましたが、まさかの物理シールだったためにこのような対応にならざるを得なかったようです。これは買った方も売った方も不幸としか言いようがないわけですが、法律に関わるところはもうちょっと注意できなかったもんですかね…

FirefoxOS v2.0 を試してみる

ビルドしてみる

先日,正式に v2.0 branch が切られ、master は v2.1-pre に移行しました.ということで早速試してみようとビルドしてみました.

しかし…build/ の v2.0 branch に build/target/product/mini.mk が消えていてビルドが出来ないというエラー.master にはちゃんとあるので,v2.0 のビルドはちゃんと成功してるのでしょうか.ひとまず master(v2.1-pre) で試してみることにします.

と,嘆いてたら b2g-manifest で

<b4b3f48> 2014-06-11 [Aki Sasaki]  (origin/v2.0) bug 1023966 - revert platform_build branch switch for non-master branches. r=bustage

あっさり直ってました.

起動してみたら…

Firefox OS Simulator も 2.0 が使えるようになっているようですが,見た目的に何も変化がないようなので,master を build して mk808b に投入してみました.

起動時にいろいろエラーが出てまた何かデバイス向けの対応しないといけないような感じですが,暫く待ってたら何とか起動しました.ところがその画面が

v2.1-pre 試行

アイコンがでかい!

いやなんかおかしい.新バージョンの改良で解像度に関わらず3列固定で横幅最大で表示するようになっているようです.これは大画面向けに修正されるまで待つしかないですかね.

実機を見てないのでよく分かりませんが,Flame のデモを見てると home-screen にも pan/zoom などの two-finger action が追加されているらしいです.タッチパネルがなくマウス操作しかない環境ではこのままでは恩恵が受けられないので,別アクションでサポートされるのを待ちましょう.(マウス対応のような patch 方法が見つかればいいんですが)

 

Firefox Developers Conference 2014 in Kyoto に参加してきました

京都にて Firefox の開発者向けカンファレンスが開催されました.13:00~19:00 の長丁場ながら200人以上が参加したとか.詳しい内容は Slideshare などで公開されてます.

FirefoxOS が注目される中,Webプラットフォームへの転換期にいるのが実感できました.Webがあらゆる表現を包括できれば後はそれベースで全て語れるわけで,プラットフォームとして十分価値があります.発表もWebアプリ技術が中心でしたから,Web を作ってきた人達はアプリ開発への移行も期待できます.

とはいえまだ動く実機が少なく,アピールするには実機が普及しないことには始まりません.会場には実機が展示されていましたが,まだまだ手にするには時間が掛かりそうです.作るほうも単に作ればいいと言うものではなく,ベースとなるプラットフォームも UI/UXに必要なパフォーマンス・機器間の接続・規格の取り込みなどの進化が必要です.FirefoxOS が動く実機環境を(無理矢理)構築している自分としても何か一端の役に立てればと思います.

先月の勉強会に引き続き同じネタで LT 発表してきました(全然進展してませんが).懇親会会場だったこともあってすごい盛り上がりの中だったのでネタを仕込んでおくべきだったと仕切りに後悔(^^;)


あと,フォクすけを賭けたじゃんけんには初戦敗退でした…