この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2011年4月)

2011年4月8日

月曜日にバスの隣に座ってたのは…… 初回投稿日時: 2011年04月08日15時02分47秒
カテゴリ: 雑談
固定リンク: id=2011040800
SNS: (list)

月曜日、Mountain ViewからSan Joseにバスで移動する時に、席がひとつしか空いてなくて、たまたま座ったその席の隣に座ってたのがTantekだと分かってびっくりでした。

もっとも、直接、私の専門とかぶってるところがない人なので、横に座ってた間は、名前聞いたことあるけど、誰だったかなーという感じだったんですが、なんかもったいないことしました、はい。

それにしても、この辺の人達若いですね。なんか自分が無駄に歳食ってると実感します。もっとハードワークしないとですね。

2011年4月12日

Bug-org 59109 implement CSS3 text module's text-decoration-style and text-decoration-color #2 初回投稿日時: 2011年04月12日09時15分07秒
最終更新日時: 2011年04月23日15時19分30秒
カテゴリ: CSS Mozilla Core Mozilla5
固定リンク: id=2011041200
SNS: (list)

先日修正したこのバグ、ひとまず、Fx5からはバックアウトすることにしました。

Bug-org 647421が修正されなくては、将来のWebブラウザとの互換性に問題が生じることが分かっているのと、Fx5にむけたスケジュールがイレギュラーで時間がなさ過ぎることがその理由です。

2011年4月21日

Bug-org 600919 Implement WebP image support 初回投稿日時: 2011年04月21日08時40分05秒
最終更新日時: 2011年04月23日19時01分30秒
カテゴリ: Mozilla Core バグ却下
固定リンク: id=2011042100
SNS: (list)

WebPのサポートは、wontfixとなりました。

詳しい理由はJeff Muizelaar: WebPに書かれています。

ざっくりとまとめると、一点目は、現在、デファクトスタンダードとなっているJPEGを置き換えるには非力なフォーマットであるということのようです。例えば、現在のところ、JPEGの持つ機能のサブセットしか提供できておらず、YCrCb 4:2:0以外の色空間もサポートしていないし(JPEGは4:4:4やCMYK等の他の色空間もサポートしている)、EXIF情報やICC色プロファイルのサポートも欠けていて、さらに、JPEGがサポートしていない、アルファチャンネルのサポートを難しくないにも関わらず行っていない、ということが挙げられています。

また二点目に実装上の問題が挙げられています。実装して普及しだすと、永遠にそれをサポートしなくてはいけないものの、このコスト面でも他の画像フォーマットと比較して別に有利ではない、と主張しています。なぜなら、プログレッシブなデコードをする必要から、WebMのデコーダを再利用できず、別のライブラリが必要になるため、セキュリティリスクが増えてしまうとのこと。(その後にある、This gives additional security risk but also eliminates much of the benefit of having bitstream compatibility with WebM. It makes me wonder, why not just change the bitstream so that it's more suitable for a still image codec?は意味がよく分かりませんでした。)

さらに、三点目としてニーズと合っていないという点も挙げられています。例え、WebPが明らかに圧縮効率が良かったとしても、FlickrやFacebookのような巨大なサイトでも、libjpegで高画質(very good quality)に推奨している75を上回る96と85という品質で圧縮していることから、転送容量の削減はWebでは求められていないと主張しています。

最後に、JPEGは素晴らしいフォーマットとは言えないが、これを置き換えるフォーマットも未だに無いのではないか、と結んでいます。

2011年4月24日

Bug-org 347185 when using wmode="transparent" for flash movie, german keyboard produces english characters 初回投稿日時: 2011年04月24日07時58分43秒
カテゴリ: Mozilla Core Mozilla6 バグ修正
固定リンク: id=2011042400
SNS: (list)

元々このバグは、windowlessモードのFlashのプラグインでドイツ語のキーボードレイアウトを使っても、一部のOEMキーでは本来の文字とは異なるものが入力される、というものでした。

Bug 6302の修正でキーボードのネイティブイベントを無加工でプラグインに伝達できるように修正してからGecko側では修正が終わっていましたが、なかなか、対応したバージョンのFlash Playerが出ませんでした。そのため、バグを閉じ忘れていた間にすぐに似たようなバグが再発し、このバグ上で対応することになりました。

新しいバグは、AltGrを使うと入力できない、というもので、また、IMEも未確定文字列が表示できなくなっていました。

原因を調べると、Bug 6302で追加したGecko内部イベントのプラグインイベントが、常にウインドウ最上位のXULのドキュメントに届いていて、コンテンツのプラグインには届いていませんでした。どうも、widget-removalによって、今までは必要のなかった、フォーカスを持つドキュメントへのリダイレクトが新たに必要になっているようです。

このため、一行のみのパッチでシンプルに修正できたので、これからFirefox 5や、Firefox 4でも修正できないか、ドライバに交渉してみる予定です。

Bug-org 532738 Do not open the virtual keyboard on untrusted focus (caused by content page scripts) 初回投稿日時: 2011年04月24日08時13分58秒
カテゴリ: Fennec Mozilla Core Mozilla6 バグ修正
固定リンク: id=2011042401
SNS: (list)

Fennecでは、エディタがフォーカスを得ると自動でソフトウェアキーボードを開きますが、スクリプトによってフォーカスが移動した場合に自動で開くのは鬱陶しいので、ユーザがキーボードかマウスから移動した場合にのみ開くようにしよう、というバグです。

レビュアーとして参加し、既にパッチはmozilla-centralに入りましたが、いくつか問題も分かっています。例えば、スクリプトで既にフォーカスが移動してしまったエディタをクリックしても、bug-org 507987で、キーボードは開かないと思われます。また、エディタからエディタへTabキーでフォーカスが移動した場合(Tabキーがあるのかどうかは知りません)、一瞬ソフトウェアキーボードが非表示になった後、またすぐに表示されると思うのですが、これで果たしてユーザは正しくフォーカスが移動したことを認識できるのか、というのが気になります。

Bug-org 648299 -moz-text-decoration-style: -moz-none; does paint the decoration lines 初回投稿日時: 2011年04月24日08時17分08秒
最終更新日時: 2011年04月24日09時50分40秒
カテゴリ: Mozilla Core Mozilla6 バグ修正
固定リンク: id=2011042402
SNS: (list)

-moz-text-decoration-style: -moz-none;が機能せずに、実線で描画されていた、というバグです。

-moz-noneは内部処理の都合上、存在しているだけの値(実際に内部でも使用していない)で、実装時にレビューの終盤で突如追加されたため、テストを怠ってしまっていました。

Bug-org 647421 -moz-text-decoration-color and -moz-text-decoration-style should be reset by text-decoration 初回投稿日時: 2011年04月24日08時38分10秒
最終更新日時: 2011年04月24日23時08分22秒
カテゴリ: Mozilla Core Mozilla6 バグ修正
固定リンク: id=2011042403
SNS: (list)

fantasaiからの指摘で発覚したバグで、-moz-text-decoration-color-moz-text-decoration-styletext-decorationを後から指定した場合にリセットすべきだ、というものです。

CSS3では、text-decorationはロングハンドから、ショートハンドに変更され、text-decoration-lineプロパティ、text-decoration-styleプロパティ、text-decoration-colorプロパティ、それからblinkが列挙されることになります。このため、これらのサブプロパティの値は全て、text-decoration: underline;といった指定があった場合にリセットされなくてはいけません。この修正が間に合わなかったのが、Firefox 5からはバックアウトされた理由です。

このバグの修正で、-moz-text-decoration-lineを実装しました。ただし、値は、underlineoverlineline-throughのみで、cancel-*は実装していません。これらの値はCSS 2.1に準拠したtext-decorationの描画を実装しなくては不可能だからです(GeckoもWebKitもCSS2準拠で、CSS2.1の描画方法にはまだ未対応)。

また、blink値をショートハンドプロパティに直接指定する、というイレギュラーな仕様はそのままではGeckoは実装できないので、既にCSS3では没になったプロパティをそのままプレフィックス付きで実装しました。-moz-text-blinkで、noneblinkをその値にとります。

つまり、text-decorationプロパティはGeckoでは、-moz-text-decoration-line-moz-text-decoration-style-moz-text-decoration-color、そして-moz-text-blinkのショートハンドプロパティになりました。

ただし、いくつか、仕様に反した挙動をとることで他のブラウザとの互換性を維持しているので、安心してください。

まず、text-decorationは、-moz-text-decoration-style-moz-text-decoration-colorの値を指定していても無視します。というか、指定されていると不正な値と見なし、その宣言自体が無かったことになります。バグのサマリにあるように、単にこれらの値はtext-decorationプロパティの宣言があると、その時点で一旦リセットされるだけです。

次に、text-decoration: none noneや、text-decoration: underline nonetext-decoration: none blink等といった、none指定時に他の値がある場合には引き続き、無効な値として扱っています。つまり、Webデザイナから見れば、text-decorationは引き続き、-moz-text-decoration-lineと、-moz-text-blinkのショートハンドプロパティには見えません

最後に、getComputedStyle()を利用してtext-decorationの算出値を取得する場合、本来であればショートハンドプロパティは常に空の文字列を返すべきなのですが、互換性のために今までと同じように、underlineoverlineline-throughblinkの組み合わせか、noneを返します。これは明確な仕様違反ですが、おそらく、仕様の方が変更になるのではないかと思います。ただし-moz-text-decoration-styleや、-moz-text-decoration-colorを使用し、初期値とは異なる値が指定されていた場合、その作者はCSS3のtext-decorationを理解していることになりますので、この場合には算出値は仕様通り、空の文字列を返すことになります。

最後の一文は、serializeの部分の動作の仕様でした。ただ、懸念があるのでdbaronと相談してみます。