2015-12-31

2015年に買ったもの

買ったのはこれだけらしい。

Nexus 5X

Nexus 5もおそらくAndroid Mでアップデートはなくなるだろうしってことで開発端末として購入。Cortex-A57を採用したものを持ってなかったてのもある。まぁ今後二年間の開発端末&海外出張時の端末として利用するつもり。

Hikey 96Boards

やっと手頃な値段で買えるARMv8な開発ボードがリリースされたので購入。ARMv8なコードを書く際の実機として利用。まぁそこそこ速いけど、big.LITTLEのリトル側として考えればもっと遅くて電源効率が高いものでもよかったのではって思ってたら、今年Cortex-A35が発表になった。

bq Aquaris E4.5

Ubuntu Phone。普通に日本語フォントが入ってるので日本語表示可能。思ったよりパフォーマンスは悪くないけど、Firefox OSと一緒でAndroidとかiOSの置換って意味だとインパクト欠けるよねってところでしょうか。

細かなものだとMicrosoftのマウスを購入しまくってたとかはあるけど、そんなに買ってないね。USに行った時にSurface Bookを一瞬買おうかと思ったけど。

来年はSnapdragon 820を採用したAndroid端末は買ってるだろうし、家のMac Miniもビルドが遅いのでそろそろ買い換え取きかも。あとLaptopもDELLのXPS13かSurface Bookくらいを買いそうな予感。

2015-11-16

Web Assembly

Firefox Developer Conference 2015 in Tokyoがあったのだけど、そこでemscriptenとWeb Assemblyの話してきた。



Web Assemblyは個人的に今一番ホットな話なんだけど、このイベントの矢倉さんのセッションでもViewSource ConferenceでLukeが話した内容を元に2ページほど触れられている。

あと、先週のBlinkOnでもセッションあったので、これもみるべし。

今のところ、s-expreesionベースのフォーマットでみんな実装実験やってるし、clang/LLVMも:sunfishがバックエンド実装やってる。LLVMについてはasm.jsからのwasmトランスレーターで間に合うからステーブル化の最初のMUSTなことではないけど。ちなみにJavaScripteCore/WebKitはすでに実装テストしてて、CPP->JSにしたものとCPP->JS->WASMにしたもので比較すると2倍の速度で動くっていう結果が出てる。

セッション終わったあと、Jxckさんと話しをしててWeb APIを直接触りたいよねって話をしてたんだけど、なんかAPIは作る話にはなってるっぽい(けど、これは最初のゴールには含まれない)。

基本ゲーム (canvasとWebGLは使いたいよね) が最初のターゲットかなと。

2015-11-04

Gecko cross build using docker

Firefox 4のリリースがされたらへんから10くらいにかけてコツコツとLinuxのクロスビルド環境の整備をしてた。その結果クロスビルド環境においては、DebianのMultiarch/HOWTOで書かれているやり方で環境構築できるようにしている。

FirefoxというかGeckoを組み込みで使いたいなんて話が仕事柄たまに来るんだけど、環境の作り方を説明するのが面倒すぎるし、自分で検証用にVMWareのクロス環境を持つのもバカバカしい (OSのアップグレードのたびにテストしてた) のでDockerを使ったコンテナに移行した。

https://hub.docker.com/r/wontfix/gecko-armhf-dev/ (armhf用)

dockerで以下のようにイメージを実行すれば、必要なライブラリは入っているので、mercurialでcloneするなりtarballを持ってきて、.mozconfigを書けばarmhfのビルドができる。
docker pull wontfix/gecko-armhf-dev
docker run -it wontfix/gecko-armhf-dev

Dockerfileを見ればわかるけど、クロス用のライブラリをインストールするとき (特にlibgtk2.0-dev)、--no-install-recommendsをつけないとライブラリがコンフリクトしてしまうものあるので、注意が必要みたい。(というかlibgtk2.0-devのパッケージングの際、RecommendにPythonが入ってるんだけど、それはおそらくPython:anyにすべきなんじゃないかなと)

2015-08-14

WebCompat

MozillaはFirefoxやFirefox OSの開発以外にもいろんなことをしてが、Mozilla社内にはWebCompat Teamってのがある。

何をしているかを説明すると、Firefoxや他のブラウザで表示されないページを解析して、なぜ表示されないのかを調べ、それを製品やWebの標準に活かすことをやってる。場合によってはコンテンツ制作元・会社へ問い合わせをして、具体的な修正方法を提示するってこともする。

今年になって彼らはアジア圏のモバイルWebサイトを集中的にみてる。具体的には中国と日本。日本も見てるけど、日本語がわからない人が見てるんじゃないのって思う人はいるかもしれないけど、チームメンバーの一人は日本に住んでいるので日本の事情もよく知ってる

日本のサイトにおいて彼らはTOP100+のモバイルサイトをすべてチェックして、大体の傾向があるそうだ。

  • CSS flexboxはwebkitプレフィックスを使った古い形式のものが未だに使われている (= Web標準を利用していない)
  • CSS xxx (いろいろ) はwebkitプレフィックスを使った古い形式のまま未だに使われている (= Web標準を利用していない)
  • ユーザーエージェント文字列にWebKit的なのがないとモバイルと見なさない。またAndroidという文字だけでもモバイルとみなしてない。でもAndroid 4.0のようにバージョン番号を含めるとそれが改善するサイトが結構存在するらしい
  • 使われているライブラリがWebKitでしか動かない (CSS TransformがWebKitプレフィックスがないと動作しない。JavaScriptから触る場合も含めて)

Mozillaの解析結果で言えば、Microsoft Edgeのユーザーエージェントの件は、現状のモバイルWebでどうしたら適格に表示できるようにするかということを考えればいたしかたないことだと思う。これをバカにする人たちは現状のモバイルWebを理解していないか、SafariとChromeだけで動けばいいサイトを作るひとのどちらかだ。そういう人たちに限って、Internet Explorer 6でしか動かないサイトを作ってた人たちなんじゃないかな

でもMozillaのやりかたで言えば、Microsoft Edgeのやり方よりももっとすべきことがあると思う

Mozillaで言えば、こういうことをまず最初にやる

  1. 表示できないサイトを調査 (それ用に検出ツールもある)
  2. 原因を特定し、サイトのオーナー (要はその会社) にコンタクト
  3. コンタクト可能であれば、修正方法も含めて提供・アドバイス

MozillaはモバイルWebにおいて強力なシェアを持った会社ではないので、僕らの言うことなんて聞いてくれない・無視する会社も存在する。もちろんコンタクトをとったところ、ちゃんと直してくれるところもあるけどね!。どうしても直してくれない場合にはいくつかメカニズムを用意してる

UserAgentの書き換え

ユーザーエージェントを強制的に別の文字列にすることでモバイルページとして認識させる。https://dxr.mozilla.org/mozilla-central/source/mobile/android/app/ua-update.json.inにリストがある

CSS unprefixing service

webkitプレフィックスとかを強制的に外す。https://dxr.mozilla.org/mozilla-central/source/caps/nsPrincipal.cpp#501ここらへんがそのホワイトリスト。

ということもやって、モバイルWebページに対しても表示改善を行っている。ここ数か月でFirefox for Androidを使った時にページ表示が改善しているはず。

こんなことをブラウザベンダがやらなくてもWeb開発者が標準に即したページを作ってくれればいいんだけど、残念ながらそういうことにはなっていない。プレフィックスというデザインがよくなかったという話は数年前にしていたけど、いまだにこれが現状だ。

またWeb Compatibilityって考えかたはシェアが大きい会社であればあるほど言わない。それは昔のMicrosoftを見てればそうだし、今のシェアの高い会社を見れば、そんな感じ。MozillaもMozilla.orgになってからはここを重要視しているし、各ブラウザの互換性向上には各ベンダーが投資してほしいなと個人では思ってる

最後に、報告先として彼らはサイトを持っているので、https://webcompat.com/ に報告してもらえると助かる。ここはFirefox以外にEdgeの件も報告してもらって構わない。Web全体のComaptibility向上が目的なので。

あ、これらの話はもう少しデータ付きで会社のブログに書くべきだなと今思った

2015-06-10

FCC 740 フォーム

スマートフォンをアメリカに送る必要があったのでFedexで送ったのだけど、税関でFCC 740フォームが必要と連絡があったのでその時のメモ。

日本で技適があるようにアメリカでもFCCで電波規制が存在してる。そのためスマートフォンなどを送るとこのフォームを書く必要があるそうだ。

  • Device Model: 日本での型番
  • Trade Name: 日本での商品名
  • FCC ID: FCCの認可番号。日本のスマートフォンはFCCの認可を通している場合がほとんどなので、その番号を調べて記入
  • Description of Equipment: smartphoneとか書く
  • Manufacturer’s Name and Address: 製造した会社。および住所。ソニーだったらソニーの住所
  • Consignee’s Name and Address: 受け取り人
  • Importer’s Name and Address: 輸入したのが受け取り人であれば、Same as consigneeって書く。だいたいそれでOK
  • Printed or Typed Name of Importer or Consignee: 発送者または受け取り人。ようは自分の名前を書いとく
あとPart 2のところは該当するものにチェック。今回は売り物じゃないので7.にチェック

こんな感じでフォームを埋めたら税関通った。