2012-12-14

SVGの次のお話

来年の1月か2月のオーストラリアのF2Fミーティング以降にたぶんSVG 2.0のワーキングドラフトが更新されるらしいんだけど、今日はそれのお話。語られることないんで書いてみる。

HTML5だCSS3だって話がいろいろ聞かれるけど、SVGもやっと2.0の話がぼちぼち出てきてる。SVG自体は元から日本人とかが絡んでるってのをみんな知らなかったりする。キャノンの藤澤さんが元々仕様策定に絡んでいたりしたんだけど、2.0だとKDDI(もちろん日本のね!)が仕様策定に絡んでたり (次の更新の際にはエディタに入るんじゃないかな?)。

SVG 1.1とかを制定したときと比べて今一番違うところは、HTML5やCSS3を通った後ってところ。現在の状態だと、CSSとSVGで被っている機能が増え始めてる。たとえばアニメーション (SVG Animation vs CSS Animation) とかフィルタ (SVG Filter vs CSS Filter) とか。こういう被っている機能ってのは、ブラウザ作ってる側にとっても実装コストが面倒だし、それよりもWeb開発者にとってはもっと面倒臭いよね。

そもそも同じW3Cで決めてる規格なので、こういう被る機能 (FilterやTransform、Animation) に関してSVG側とCSS側とで共同チームが組まれてて、FX TaskForceってのが該当する。そもそもSVG Working GroupのメンバもAdobeとかMicrosoftとかGoogleとかMozillaとかがいるし、同様にCSS Working Groupもだしね。

一例としては、アニメーションなんかはWeb Animationと呼ばれる規格になってく。これは、規格作ってるBrianのインタビュー(英語)でも参照してみてね。こういう被るような仕様に関しては両方で共通化できる仕組みにすることを考えてる。

なので、たとえばCSS Filterの動作サンプルを見てると、WebKitで実装されたCSS FilterがOperaとかMozillaがいつ実装するのかどうかってみんなは思うかもしれないけど、現在のあの仕様がそのまま全社が実装するとは思えない。FX TaskForceの活動の結果、共通化されたFilterの仕様が新規に決められることになるので、それを各社が実装することになる。そうしたほうが覚えるコスト少なくていいしね!

SVG2らへんの話は矢倉さんあたりが書いてくれるとうれしいなと思うけど、守備範囲だっけ?

2012-12-05

So-net 3GのマイクロSIMを契約した

諸事情で実家に多々買えることがあったのでWiMAXの契約を持っていたんだけど、速度を求めてるわけでもないので、So-net 3Gを契約した。WiMAX自体はクリアワイアレスの件もあったりauのLTEへの移行もあるので、もう先が見えてるし。So-netなのはただ単に自分のプロバイダがSo-netなのでって理由だけだけど。

So-netって言ってもDocomoのLTEのMicroSIM。


  • 速度的にはそこそこ1Mbpsは出てる
  • Galaxy Nexusで使っても、デザリングしたければルート化する必要あり
  • デフォルトのデザリングで振られるIPアドレスが192.168.x.yの場合は、10.x.y.zに変え
    る必要がある。Docomoのネットワークだとそうしないと外に出られない

デザリングしないときはLINE端末になるだけなので、満足な感じ。

2012-11-15

Surfaceを買った

普通の世の中だと、Nexus 7とかiPad Miniとかが話題だけど、まったく地雷度が足りなくて面白くない。地雷度MAXな気がしてSurfaceを買った (1shopmobile経由送料込みで約5万円強)。

以下感想

  • 外箱も含めてMicrosoftらしくないデザイン。マニュアルも必要最小限
  • 電源アダプタもデザインちゃんとしてる。MacBookのように磁石でくっつくタイプ。某東芝のAndroidタブレットなんてノートPCでありきたりのデザイン性ゼロの電源アダプタだったよね
  • 今持ってる東芝のタブレット(AT700)に比べたら重いんだけど、造りが安っぽくないから、別に重くて納得できるデザイン
  • メトロで完結できるんだったらタブレットとしてはなかなかいいと思う。でも細かい設定しようとするとデスクトップ開いて、コントロールパネル開かないといけないんだよね。
  • ちゃんとデスクトップアプリは存在する。Office 2013もそうだけど、OneNoteは2013じゃなくて、メトロ版でよかったんじゃないの?

結論的に言えば、ソフトがねぇぇって感じ。メトロで完結できるようにソフトウェアの作りこみが足りないって感じにしか思えない。。。残念感ありあり。

2012-11-05

やっつけにも程があると思ったこと - Microsoft SDK編

Windows 8 SDKとWindows Phone 8 SDKを調査してるんだけど、Windows Phone 8はカトラー様のNTカーネルを使ってるため、WinCEのころに比べてSDKにある程度は互換性がある。CEの頃と一緒でリンクするライブラリが違うってのはあるんだけどね。調査してて、一番やっつけすぎて倒れそうなことを発見した。

Windows 8 SDK
/*
 *  Windows APIs can be placed in a partition represented by one of the below bits.   The 
 *  WINAPI_FAMILY value determines which partitions are available to the client code.
 */

#define WINAPI_PARTITION_DESKTOP   0x00000001
#define WINAPI_PARTITION_APP       0x00000002    

/*
 * A family may be defined as the union of multiple families. WINAPI_FAMILY should be set
 * to one of these values.
 */
#define WINAPI_FAMILY_APP          WINAPI_PARTITION_APP
#define WINAPI_FAMILY_DESKTOP_APP  (WINAPI_PARTITION_DESKTOP | WINAPI_PARTITION_APP)

一方、こっちはWindows Phone 8 SDK


/*
 * WINAPI_FAMILY should be set to be one of these.
 */
#define WINAPI_FAMILY_APP         1
#define WINAPI_FAMILY_DESKTOP_APP 2
#define WINAPI_FAMILY_PHONE_APP   3

やっつけにも程があるでしょ、これ。なんでヘッダの内容別にしちゃうかなぁ。SDKのヘッダくらい同期してくださいってマジ思う。

2012-10-10

Touch Eventを実装したらいろんなサイトがぶっ壊れた

以前からMozTouchってのがFirefoxのWindows版だけサポートしてたんだけど、Firefox 18 (Windows版)で、W3C Touch Eventのサポートをするコードを突っ込んだ。僕がイニシャルコードを書いて、jmartinsに直してもらったんだけど。なのでWindows 7以降でタッチイベントをサポートしたデバイス (ThinkPad T400sとか) だとデスクトップ版でもタッチイベントが使えるようになった。(ChromeのWindows版も最近のバージョンからサポートしてるよ!)

これを実装したら、地図がマウスでスクロールできない(意味がわからない)、スクロールバーが表示される(意味わからない)、ビデオが再生できない(意味わからない)というバグレポートが多発してるんで今見てるんだけど(Mozilla側のコードじゃなくて、レポートされた各サイトのJavaScriptをね)、見てるサイトすべてがTouch Eventが存在するかどうかでいろんな動作を変えてて面白いことになってる。

たとえばfoxnews.comだと、createTouchがDOMに存在するかどうかで再生するビデオ形式を変えるというトンデモコードが存在する。これが存在するかどうかでFlashを使って再生するかMP4をそのまま再生するか変えてて、FirefoxはMP4を再生できないからエラーが表示されるという感じになってる。ChromeでもTouch Eventがサポートされてるけど、タッチデバイスが存在する場合はMP4の動画が再生されて、存在しない場合はFlashが使われるというユーザーサポート泣かせの状態になってるんだよね。

こんな感じでブラウザを判別してたなんて思いもよらなかった。

2012-09-08

"New Horizons" Thunderbird


Thunderbird Teamとコントリビュータ達に会いにワルシャワに来てる。

ミッチェルのブログポストでもあったんだけど、Thunderbirdの体制が17以降にいろいろと変わらざるをえないので、それについてのFace to Faceのミーティングが行われた。


今後のリリースモデルをどうするかとか、レポートされたバグに対してどうハンドリングするとか、Thunderbirdのサポートフォーラムとかサポート記事のサイトをどうするかなど、いろいろな議論をみんなで行った。実際に決まったことは全然多くないんだけど、11月にはいろいろなことが決定するらしい。

つうか、9月初旬なんだけどワルシャワ寒いんですけど。。。

2012-08-31

セキュリティ研究者

http://d.hatena.ne.jp/mala/20120830/1346309790 - 高木浩光さんへ、しっかりしてください

まぁ、いろんなところで読んだ人のコメントを見てると、ある意味的外れがあって面白いなと思った。

素直な感想は、人間間違いはするんだからそれはちゃんと認めて、「間違ってたね、てへっ」、くらいのエントリを書けばいいだけなんだけど一切書かないからダメだよねとは思うだけ。それを書かないってはどうかとは個人的に思ってるし。それは人間の誠実さを表す事象じゃない?

そもそも小さい集合(=企業)を叩いたって何も生まれやしないし、また同じことが別の集合で発生するだけ。そんなのWeb使う側とか提供する側からしてみればハッピーじゃないよね?。だから、そのループを抜け出すために何をすべきかを考えるのが研究者なんじゃない? (一企業に属してその企業のサービスについてコンサルする立場だったら、別にどうでもいいかもしれないけど)

特に産総研みたいなところにいるんだったら、それを生まれないようにしづらく仕組みはどうしたらいいのか?的なことを考えないといけないと思うんだ。それができないってところが、人間としての器の限界なんじゃないかなとは思う。そういうことを考えられないんだったら、セキュリティ研究者なんてやめるべきだと思う。ただのセキュリティコンサルトと名乗るべきだ。

まぁ、この上に書いたようなことをどっかの講演で某先生が直接公共の場で本人に凹ったら、その信者らしき人たちがネットで「誰だよあいつ、なに高木さんにいちゃもんつけてんだよ、エラそーに」的な発言をしてその某先生を叩いてたのをみて、周りの持ち上げてる人たちが一番癌だなとは感じてるけどね

「僕にも間違いがありますね、ご指摘ありがとうございます。勉強しなきゃ!」的な発言をすれば、平和になると思うのに

2012-08-16

ウンコード

今日全然関係ないコードを追っかけてたら、こんな感じのコードを発見した。(以下の例は結構はしょってるからわかりやすいけど、元のコードはいろんなことしてるから大変わかりずらい)
int64_t now();
..
char *updateTime;
...
if (LL_CMP(updateTime, >, now()) {
  toBeRescheduled = true;
}
なんでWarningとかErrorにならないかと思ったら、
# define LL_CMP(a, b, c) ((uint64_t)a b (uint64_t)c)
マジかよ。これが原因ぽいバグが4年前からあるっぽいんですけど。。。

2012-08-10

Tizen

インテル・ソフトウェア・カンファレンスに行ってきた。

前この会場で開催した同じようなイベント(某ARMのね)だと、弁当は豪華・ノベルティも実用性のあるものっていう感じだったんだけど、インテルは、もう。。。これって会社の性格と勢いを示してる?って感じに思えるよね。別にそんなん求めてるわけでもないので、イベントのコンテンツの内容が重要なんだけどね。

Tizenって非常に立ち位置が微妙だと思ってて、Tizenは、B2Gの用にWebにすべてをかけるように見せかけて (EFLポートはサムスンのTizenのエンジニアが主にやってるよね!) 、QtやGTK+3とかのアプリケーションもポート可能という全方位的なんだ。それだったら別にMeeGoでよかったんじゃないの?って感じに外野からは思う (Nokiaが手を引いて代わりにBadaを持ってたSamsungが入ってきたらという大人の事情があるのは知ってる)。LiMoの流れからいろんな賛同者がいることになってるけど、キャリア以外はたぶんTizenのデバイスを作ることはないんじゃないかなって感じる。今やモバイル界で巨人になったSamsungがドライブするプロジェクトに乗っかるハードウェアメーカーってあったら、よほどの新興企業しかないんじゃない?。だって自分たちが作るとしてもSamsungの劣化版になり得るから。それはSymbianで証明されてるよね (Symbianだって、Sony Ericsonからも出てたんだよ!)。Androidしか選択肢がないからっていっても、Windows Phoneだってあるし、B2Gだってあるしね!

ただSamsungが力を入れないと思われる場所、IVI(車載端末)やTVなんてのは逆にチャンスがあって、おそらくそこがポイントじゃないかなとは思う。実際RIMだってQNXの流れでIVIやり始めてるしね。そういうところにRIMとかTizenが入り込んでしまうとOperaの現在取り組んでるところの一部が持ってかれるということも起きるとは思うけど、まだこれからの市場なので、まだまだどうなるかはわからない。

Chrome OSが出てきた時に非常にがっかりしたところでもあったんだけど、新しいOSであればXの呪縛が必要であるとは思わない。少なくともGoogleであれば全く違うアプローチをすると思いきや既存のものをそのまま持ってきた。がっかりって感じ。でTizenもMeeGoの頃と同じくXから離れられないんだ。Waylandを最終的には使うみたいだけど、それってベターなXであって、こうあるべき!みたいな概念ではないと思う。現時点でベストな方法って個人的にはOpenGL ES / OpenVGでレイヤーを構築すべきだと思う。もちろんOpenGL ESだって、各社動きが違うからなにかで吸収しなければいけないかもしれないけど、それはもっと薄いレイヤーでいいんじゃない? WaylandとかXとは違ってさ。

ということで、Tizenって微妙な立ち位置だと思ってるし、Samsungが自社のARM IP以外のデバイスを出すとは思えないから、インテルにとって、MeeGo以上の地雷だと思う。まだAndroidの方がいい気がする。

2012-07-22

GAIAをWindows上で使う

B2Gのデスクトップビルドなんて誰が使うんだよって思うけど、GAIAのMakefileはOSXとLinuxしかサポートしてないようなので、それをWindows上で使いたい人のためのヒント。

  • ダウンロードするxulrunner関連のファイルはWindows版ビルドのURLに変更する必要がある。
  • sedがversion 4以降を要求するので、mozilla-buildに入ってるsedは使えない。
  • run-mozilla.shはLD_LIBRARY_PATHの解決用に使ってるんで、Windowsでは不要。(直接xpcshell.exeを起動すればいい)
  • $(CURDIR)はMINGW32のパス (ex. /c/B2G/GAIA/) だとダメなので、Windows的なパスにすること (ex. C:\\B2G\\GAIA)

たぶんそれでGAIAのホーム画面は表示されると思う。っていうか。B2GはGAIAのUIが売りでもないし。 (たぶんテレフォニカはそれをカスタマイズするから、見た目は違うものになるとは思うけどねぇ)

2012-06-14

Metro APIをコンソールアプリに使おう

何も考えることなく簡単だった。
#include <windows.h>
#include <stdio.h>

int main(Platform::Array<Platform::String^>^ args)
{
  auto calendar = ref new Windows::Globalization::Calendar();
  caledar->SetToNow();
  printf("%lld\n", calendar->GetDateTime().UniversalTime);
  return 0;
}
Metro世代でも、タイマの精度は従来のWindowsと変わらなかった。カーネルはHPET使ってるから低コストで高精度タイマを使えるのにユーザーモードは相変わらずのダメっぷり。タイマが15msじゃないと互換性の低下が発生するとかがあるのかな?

2012-05-30

word-break: break-all が Firefox 15でも使えるわけだが

word-breakプロパティがFirefox 15で実装された (というか、コード書いたの自分だし、放置したのも自分) んだけど、ちょっと別件でテストケースを書いてて、面白いことに気付いた。

元々のテストケースは、http://mxr.mozilla.org/mozilla-central/source/layout/reftests/text/wordbreak-4a.htmlなんだけど、WebKit (テストしたのは、WebKit Nightly r117392 と Chrome canary 21.0.1155.2) だと、ハングル語が分割されて表示される。

意味が分からないと思うから、まずはInternet Explorer 9。


WebKit Nightly。


まぁ、break-allなんて使うなってことですよ。ハングル語とか結合文字列を使う場合にはね。。。ってか、これでいいのかハングル語圏ユーザー。

2012-05-16

本当にWindows RTにブラウザをインストールできないのか?

これはちょい細かく説明すると、

  • Desktop onlyとMSDNに書かれているものは、WinRTアプリで使っちゃダメよと言ってるが、メトロアプリでも使おうと思えば使える。実際メトロなFirefoxの試作版ではDesktop onlyと書かれたAPIも使ってるけど、xamlのラッパー経由で画面描画してるから、メトロとしてアプリが動く
  • Windows RTは、WinRT APIにアクセス可能。Windowsなんだから、内部的にはWin32 APIもアクセス可能(すべてではないとは思うけど)
  • IEのメトロ版は、Win32 APIを普通に使ってる。Desktop onlyってAPIもね
  • OfficeのWindows RT(arm)版はただのデスクトップアプリ。ということは、普通にWin32 APIもWindows RT上でもアクセス可能
  • Windows RTは、アプリケーションのインストールは "Windows Store" 経由。ということは、Windows Storeに掲載可能なスタイルのアプリケーションでなければいけない
  • Windows Storeは、メトロスタイルのアプリのみ掲載可能。審査付き。
  • VirtualAlloc系APIがメトロスタイルからは利用不可 (動的にロードすればこのAPI使うことができるけど、これを使うと審査に落ちる) なので、JITを動かすことはまず不可能。

なので、すべてメトロ(WinRT)で書き直せばブラウザ自体を掲載することはできるかもしれないけど、実質それだと無理じゃね?って話。Opera Miniのようなものだとおそらく簡単に持ってこれると思うけどね。(Operaさんはもうやってるんじゃないかな?たぶん。知らないけど)

そもそもだな、Windows RTはメトロアプリしか受け付けないといいながら、MFCのディレクトリにちゃっかりARMのライブラリが入ってて、しかもSDKに含まれいないライブラリ(wsock32.libとか)をリンクしている時点で、Microsoftシネな感じだけどね。

2012-03-08

How to Install B2G on Galaxy S2 (Not Docomo version)

ドコモのは試してないんで知らない (ベースプラットフォームは一緒だけど一部拡張されているところがあるので動くとは思うけど文鎮化の恐れがあると思う)。普通に香港で売っているGalaxy S2にBoot 2 Geckoをインストールする方法。

B2Gのソースコードをダウンロード

B2Gはgithubに置かれているので、まずgit cloneでB2Gのソースを持ってくる
git clone git://github.com/andreasgal/B2G.git
そして、関連ソース (Galaxy S2のLinuxカーネルとか、Androidの一部のソースとか)もダウンロードする必要があるので、make syncを実行
cd B2G
make sync

カーネルの設定など

Galaxy S2が動いているソース非公開のAndroidの共有soがいくつか必要になるので、make config-galaxy-s2を実行してlib*.soをいくつかpull
make config-galaxy-s2
そして、カーネルのmake
make kernel

カーネルを焼く

カーネルを焼くためにdownloadモードで起動
adb reboot download
heimdallを使ってイメージを焼く。ついでにCWMリカバリもインストール
heimdall flash --kernel boot/kernel-android-galaxy-s2/arch/arm/boot/zImage

gonkとgeckoのビルド

B2Gはgonkと呼んでるレイヤー (bionicなどのandroidの一部のlibも含む) がいるので、それとGecko本体をビルド
make gonk
make

gonkとgeckoをインストール

gonkとgeckoをインストール
make flash-only
イメージを焼いた後、自動適に再起動。再起動後、ホームスクリーンが存在しないというエラーが出るけど、それは無視。

gaiaをインストール

gaiaってのは、B2Gのホーム画面とかアプリのこと。すべてHTMLとJavaScriptで作られる。画面がなくっちゃ意味ないので、gaiaをインストール。これがないとホームスクリーンが存在しないというエラーが表示される。
make install-gaia

で、起動したのがこれ。

Nexus Sとqemu (テスト用)もあるんで、それでも出来るらしいけど試してはない。(Galaxy Tab 10.1用のものもあるらしいけど、まだgithubに入ってないけどね)

2012-03-01

amazonのマーケットプレースで物を買ったら痛い目にあった

AmazonってAmazon本体が売っているものじゃないものも売ってて、そのAmazonのプラットフォームで売ってる業者(しかも個人でやってそうな)って多く存在するじゃない?そのような業者が売っている商品を買った時に食らったトラブルのお話。

オーダーして数日後に発送しましたとメールを受け取ったんだけど、一向に送られてくることはなくて、どうしたのかな?と思ってたら、どうもその業者がオーダーしたものを間違えていたらしく、

お世話になります
23日に発送の連絡をいたしましたが、カラーを黒を手配していました
申し訳ございません

また、白のほうが現在在庫切れになっております

大変ご迷惑おかけいたしまして、申し訳ございません

返金、もしくは黒色をご選択いただければレザーケースと一緒に遅らせていただきます

なにとぞよろしくお願い致します

という風に在庫がないというメールをもらったわけですよ。ということで在庫切れと言われたんで、キャンセルということにして、別の業者のものを頼んだんだ。

で、Amazonの評価システムで評価してくださいって自動送信メールがAmazonから来たので、

「在庫切れのものが出品されており、その状態で発送メールを頂いた。そのためこの評価にしていただきます」なんてことを書いて、☆1つにしたわけだよ。

その数日後、なんかその業者から電話がかかってきた。

ようは「このコメントに納得がいかないから消せ!」「在庫はあったから発送はできた(おいおい、受け取ってるメールの内容と違うじゃん)」って言って、コメントを消すまで何度も電話をしてくるキ○ガイぶり。そもそも発送メールをもらってるのに発送してない状態だったわけなのに(もし間違えてオーダーしてたのであれば、間違えた商品が私に届くはずだよね!)、その非は認めずにこの対応ですよ。ホント最悪だった。業者名は伏せるけど、大阪の業者ね。

たぶんこれやってる人はDrop Shippingの本とか見てこういうのを個人でやってるんだと思うんだけど、久々に痛い業者にあたったってか、そんな感じ。

顧客満足度の平均点とかってのを上げるには、最低の評価をした顧客に対してクレームまがいの電話をして、その最低の評価を取り下げることってのを思いだしだ。こういうキ○ガイ業者がいるから、Amazonのマーケットプレースで買うよりも、楽天とかYahooショッピングとかの方がまだマシと思っちゃうよね。どっちも変わらないかもしれないけどね!

2012-02-27

firebug is still alive

後藤さんがfirebugが終わったという話を何度も書くので、オープンソースにおける開発モデルの話も交えて書こうと思う。

そもそもfirebugはJoe Hewittが作ったもので、彼はFirefoxの開発メンバーの一人でもあった。で、Netscape崩壊後、自分の会社を持ってたけどfacebookに買収されてそこで働いてた (最近辞めたらしいけど)。facebookに行ったあとはfirebugにそんなに関わってなかったと思うけど。

firebugは一人で始めたものでもあったのだけど、その後Firebug Working Groupが開発を行うことになって複数のメンバで開発が行われている。オープンソースではこういうことはよくあって、自分がコードを書き始めたけど自然と参加するメンバーが増えていって、開発が複数人になる。そのときにコアのメンバーが抜けたとしても、それをフォローする人がいればそのプロジェクトは当然続くし、新たな機能が追加されていく。これがオープンソースにおける重要なポイントでもあるし、MozillaというかFirefoxが未だプロジェクトとして続いているのはこのポイントでもあると思う。そもそもFirefoxプロジェクト始めた張本人(Blake RossとかDavid Hyattとか!)は誰もMozillaにいないしね。

また、たとえばLinuxを例にとれば、LinusがLinuxから離れていってもLinuxは終わらないであろう。そこでLinuxが終わったという人はたぶんFUDを流したいMicrosoftとか敵対している人たちでしかないとは思うけどね。

当然誰も引き継がなかったプロジェクトというのは死んでいくわけだけど、forkという形で残ることもあるよね。forkしていった結果本家になるgccみたいな例もあるけど。

また、メジャーなオープンソースプロジェクトになっていくと、それを利用しようとする企業がその開発者と契約して仕事としてコードを書かせることもある。firebugでいれば、Googleに入社したJohn J. BartonはIBMとの契約を持ってたらしいし、またfirebugの開発者として有名なhonzaはMozillaとの契約を持ってたりする。人間として生きてく以上、生活費は稼がないといけないので、開発者としてはそういう契約をしたりもするのはしょうがない。まぁ、一生遊べるだけのお金を持っている人ってそんないないしね。

企業として雇っている以上、そのプロジェクトへの投資ということにもなるので、その人の契約ってのは会社の方向性に当然左右される。その会社がもう投資は必要ないと感じれば、その契約は終わる。John J. Bartonの件はIBMとしてこれ以上投資する気はないというだけな話だと思う。

契約が終わればどうなるのかと言えば、人間なんで仕事探すよね。それで探した先がgoogleなだけだったと思うけど、それでfirebug終了のお知らせって書かれるのはどうかとは思う。後藤さんはFreeBSDのコミッタな人なので、こういうことに関しては痛いほどよくわかってると思うんだけどねぇ。FreeBSDなんて特にいろんな会社に振り回されたプロジェクトなんだから。

また、MozillaはFirefoxに開発者ツールを入れようとしてるけど、これはfirebugを殺すためなの?って思う人がいるかとは思うけど、それは違う。Mozillaの考えで開発者ツールを作るけど、これも選択肢があった方がいいと思ってる。そもそもfirebugやってるhonzaはDeveloepr Toolsチームの一員としてfirebugをやってるんで、別に殺すつもりも全くないし、競争が力を生むと思ってる。

僕は中の人でもあるから、いろんなことを知ってるけど、英語の記事も読まなくて日本語記事しか読まない人は記事書く人の思い込みでいろいろ間違った知識を持っちゃうよねぇ。しょうがないけど。

ちなみに記事タイトルは、DJ PaulのHolley Noiseネタね。(元ネタのLA StyleとEUROMASTERSのライブを両方見たことある)。最後に話が横にそれた

2012-02-05

Visual Studio 2010への移行

Firefox 13でWindows x86 (not x64) のビルドをVisual Studio 2005 SP1からVisual Studio 2010 SP1に移行してる (したとは書かない) わけだけど、その際に起きた顛末をいろいろ書いておこう。

PGOでこける

PGOってのは、Profile-guided optimizationといって、コードを実行させた情報から最適化がもっと必要なところを見つけ出してさらなる最適化を行うというコンパイラの機能。2005SP1を使ってた時もコンパイラというかリンカの制限にあたってしまってビルドができなくなるという楽しい事件があったのだけど、2010 SP1に移行した時も別の問題にぶち当たった。というのも、PGOは性質上2度ビルドを行う必要 (プロファイル情報を集められるようなっているビルドと、プロファイル情報からさらなる最適化を行うビルド) があるのだけど、最初のビルドでできたバイナリがどうも壊れたバイナリを生成するらしく、ビルドに失敗してた。これは、khueyがconnect.microsoft.comへレポートしてるけど、最適化オプションを一部で無効にすることでとりあえず、回避。

ビルドマシンにVS2010SP1が入ってない

MozillaではビルドマシンはVMWare ESX上に複数存在しててラウンドロビン的にビルドマシンが選択される。大量のブランチとかを効率的に処理するためにこんな構成になってるんだけど、一部のビルドマシン上にVS2010SP1がインストールされてないという困ったことがここで発覚。ビルドはチェックイン (push) 毎に走るんだけど、そのインストールされてないビルドマシンがたまに回ってくるとビルドエラーになるというロシアンルーレットが起きてた。そのビルドマシンを外すことでこれも回避

で、

Talos (Mozillaで使ってるパフォーマンスデータ収集ツール。最近WebKitでも使うらしいよ) で見ると起動・シャットダウン・ベンチなどのデータが5%-10%くらい改善されてる。これでめでたしめでたしと思いきやそんなことはなくて、今は、BreakPad (GoogleとMozillaでやってるクラッシュ時のログ生成・ログ送信ツール) で見るとクラッシュ時のスタックトレースがキレイに取れない問題発覚。これどうなのよってところでってところ。ChromeってVS2008使ってた記憶あるけど、先にMozillaが地雷踏んでしまってる?

余談。x64はどうなの?

えっと、先ほどのBreakPadが使ってるDIA SDKが腐ってて、シンボルの列挙で30-120分ほどCPUをぐるぐる回す変なバグがあって、それをどうにか解決しないと移行できないね。。。。たぶんハッシュテーブルがかち合ったとかで、すべてのデータを列挙しなおしてるという感じに見えるけどね。これ困ってるんだけど、どうしようか、マジで。

2012-01-04

ブラウザのシェアデータってどういう調査をしてるのか

簡単に言えば、テレビの視聴率的なものと一緒よってことなんだけどさ。

よくWebブラウザのシェアデータってのがネットの記事になったりするんだけど、そういうデータってどう取っているかというのを結構みんな詳しくない。しかも詳しくないのに踊らされてる。

こういうのは簡単に言ってしまうと、そのシェアを公開している会社と契約しているWebサイトのデータでしかない。例えばデータ提供を契約してたり広告を買っていたりするってこと。だから、日本の場合だと日本だけでサービスを作ってる会社のデータなんて入ってないことが結構多かったりするんだよね。

例えば、statcounterのデータでモバイルvsデスクトップのシェアを見るとわかるんだけど、このデータってのはネットワークトラフィックから考えて明らかに実情を示してないんだよ。日本の場合はケータイWebがあるから、少なく見積もったとしてもモバイルとデスクトップは同等かモバイルの方が明らかに上なわけだよ (とある某有名サイトの社員と話した限りでもそんな情報だった)。でもこのデータで見ると明らかに不正確なデータを出してるわけだ。

また、このような調査データってのは、定期的に調査するサイトを入れ替えたりする。以前Net Applicationsのデータで突然Firefoxのシェアが5%か10%下がったことがあったんだけど、その理由はただ単に調査するサイトを入れ替えただけということだった。仕事がらいろんなサイトのアクセスデータを聞いたりするんだけど、例えばIEが95%くらいシェアをとってる会社もあれば、IEが30-40%くらいしかないサイトもあるんだよね。だから入れ替えるとデータに影響を受けたりする。でも入れ替えごときでデータが5%とか変わるってことはデータの信ぴょう性に乏しいってことってのも考えられるよね。

だからあくまでも目安ということ。統計データってのは多角的に複数から得ないと正しい情報を取得することは無理なものだけど、それを理解しないとね。

で言いたいことは、statcounterの1/4の地点のデータを見ると、1/1から1/3の間で北朝鮮では誰もモバイルフォン経由でインターネットに接続してないってことらしいよ。