狠狠撸

狠狠撸Share a Scribd company logo
Fx3.1 & MozTech
@OSC 2008 Fukuoka
by Tomoya Asai (aka. dynamis)
自己紹介 - 浅井 智也
? Mozilla Japan テクニカルマーケティング担当
? Mozilla の製品、技術、思想のエバンジェリスト
? コミュニティでは dynamis (でゅなみす) として活動
? Firefox 1 3, Thunderbird 1 2 の L10N をリード
? 現在は あ さん、mar さんとの共同体制
? SUMO (Firefox サポートサイト) 日本語版リーダー
? 実際の翻訳の大半は mar さんによるもの
? MozillaZine.jp などのコミュニティ活性化サポート
? 基本的にはサーバなどのバックエンドサポート
今日の话题は???
Shiretoko
知床
Photo by hogeasdf
http://www.?ickr.com/photos/9177053@N05/2811388694/
国立公园
Photo by mtsn
http://www.?ickr.com/photos/mtsn/242646868/
世界遗产
Photo by s.sawada
http://www.?ickr.com/photos/s_sawada/340629324/
キタキツネ らぶ~
Screenshot on Amazon.co.jp
http://www.amazon.co.jp/dp/B000S0H366/
可愛くない (>_<)
それはさておき
Firefox 3.1
???の前にリリース
されたばかりの???
Firefox 3.1 & MozTech
Songbird 1.0
Firefox 3.1 & MozTech
ソングバード らぶ~
Songbird 1.0 Released!
それもさておき
Firefox 3.1
本日のお料理
前菜: New Interface
スープ: New Feature
魚料理: New Standard
肉料理: New Technology
デザート: New Web
New Interface
Photo by hiroohi
http://?ickr.com/photos/rainboweyes/2747484161/
New Interface
タブのプレビュー
? Ctrl + 罢补产、タブ一覧ボタンでプレビュー表示と検索
タブのプレビュー
? Ctrl + 罢补产、タブ一覧ボタンでプレビュー表示と検索
問題多すぎたので
Beta2 直前にバックアウト
Beta3 で再実装?
タブブラウジング
? ドラッグ&ドロップでウィンドウ間のタブ移動
? Fx3 まではページが再読み込みされていた
? タブが1つでもデフォルトでタブバーを表示
? タブ1つだけの時はタブに閉じるボタンを表示しない
? 最後のタブを閉じるとウィンドウが閉じる
? タブバーに新しいタブを開くボタンを追加
? 再読み込みボタンの中クリックでタブを複製
セキュリティ関連 UI
? SSL 証明書エラーページを平易な説明に改善
? パスワード保存時の情報バーにドメイン名を表示
? ブロックされたプラグインについて情報バーで通知
セキュリティ関連 UI
? SSL 証明書エラーページを平易な説明に改善
? パスワード保存時の情報バーにドメイン名を表示
? ブロックされたプラグインについて情報バーで通知
セキュリティ関連 UI
? SSL 証明書エラーページを平易な説明に改善
? パスワード保存時の情報バーにドメイン名を表示
? ブロックされたプラグインについて情報バーで通知
セキュリティ関連 UI
? SSL 証明書エラーページを平易な説明に改善
? パスワード保存時の情報バーにドメイン名を表示
? ブロックされたプラグインについて情報バーで通知
その他の UI 変更
? インストーラの EULA を廃止して about:rights に変更
? オープンソースソフトで EULA は不要
? ロケーションバーが空の時には説明を表示
? ブックマークと履歴を検索:
? 読み込み中アイコン(スロバー)をデフォルト非表示に
? MacBook のマルチタッチジェスチャーをサポート
? 履歴、ページ端への移動、ズーム、タブ切り替え
New Feature
Photo by akira
http://?ickr.com/photos/arika/428018383/
New Feature
プライベートブラウジング
? 表示ページの履歴、検索履歴、ダウンロード履歴、
Web フォーム履歴、Cookie、一時ファイル
が一切保存されない (匿名ブラウジングではない)
? モード切替時にタブの状態を保存、復元する
? ロケーションバーは既存の履歴とブックマークが対象
最近の履歴を消去
? 期間を指定して履歴を消去
? 1, 2, 4時間、1日、すべての履歴から選択
最近の履歴を消去
? 期間を指定して履歴を消去
? 1, 2, 4時間、1日、すべての履歴から選択
スマートロケーションバー
? 検索対象の絞り込みキーワード (記号) のサポート
? ^ で履歴、* でブックマーク、+ でタグ付きページ
@ でURL、# でタイトルとタグだけを検索対象に
? 注: "^word" でなく "^ word" や "word ^" と入力
スマートロケーションバー
? 検索対象の絞り込みキーワード (記号) のサポート
? ^ で履歴、* でブックマーク、+ でタグ付きページ
@ でURL、# でタイトルとタグだけを検索対象に
? 注: "^word" でなく "^ word" や "word ^" と入力
スマートロケーションバー
? 検索対象の絞り込みキーワード (記号) のサポート
? ^ で履歴、* でブックマーク、+ でタグ付きページ
@ でURL、# でタイトルとタグだけを検索対象に
? 注: "^word" でなく "^ word" や "word ^" と入力
スマートロケーションバー
? 検索文字列の途中を変更した時にも即時結果を表示
? Fx3 では文字列末尾を変更したときだけ表示
? スマートキーワードの検索を候補のトップに表示
? キーワード "rfc" を設定したブックマークの例:
スマートロケーションバー
? 検索文字列の途中を変更した時にも即時結果を表示
? Fx3 では文字列末尾を変更したときだけ表示
? スマートキーワードの検索を候補のトップに表示
? キーワード "rfc" を設定したブックマークの例:
柔軟なセッション復元
? ウィンドウとタブを指定して復元が可能に
? クラッシュの原因となるタブだけ外して復元を
柔軟なセッション復元
? ウィンドウとタブを指定して復元が可能に
? クラッシュの原因となるタブだけ外して復元を
New Standard
Photo by hiroohi
http://?ickr.com/photos/rainboweyes/2747484331/
New Standard
Web Fonts
Web Fonts
Web Fonts
Web Fonts
? ダウンロードフォントの font-face を定義して使う
@font-face {
font-family: "Decorated Roman Initials";
src: url(http://www.princexml.com/fonts/ste?mann/
DecoratedRomanInitials.ttf) format("truetype");
}
h1 {
font: 2.3cm/0.84 "Decorated Roman Initials", fantasy;
}
? 必要な文字だけダウンロードさせることも可能
@font-face {
font-family: Ampersand;
src: url(/slideshow/firefox-31-moztech-presentation/842110/ampersand.otf) format("opentype");
unicode-range:U+0026;
}
Web Fonts
? サポートしていなければフォールバックするだけ
? フォント読み込み中の描画はブラウザによって異なる
? Firefox 3.1 はダウンロード後に再描画
? Safari はダウンロードまでテキスト表示無し
? フリーの Web Font も公開されている
? http://opentype.info/demo/webfontdemo.html
? フォントメーカーの皆さん、サイトライセンス如何?
CSS3
? CSS3 メディアクエリー
? 出力デバイスに応じたデザインが可能に
? 画面の幅、高さ、縦横比、解像度、色深度 etc...
? 特にネットブックやモバイルデバイス対応に
? CSS3 セレクタ(擬似クラス)のサポート:
? 任意または特定種類の an+b 番目の子要素
? :nth-child()、:nth-last-child()、
:nth-of-type()、:nth-last-of-type()、
? 最初、最後、単一の子要素
? :?rst-of-type、:last-of-type、:only-of-type
CSS3
? 楕円境界線 border-radius
? 影付き文字 text-shadow
? 影付きボックス (draft)
-moz-box-shadow
? 画像境界線 (draft)
-moz-border-image
? 段組レイアウト (draft) -moz-column-*
? オーバーフロー時に"…" text-over?ow: ellipsis
more CSS
? 改行以外の空白を1つに CSS2.1 white-space: pre-line
? CSS2.1 generated content の position と ?oat
? 変形、回転
(Apple Spec) CSS Transform
? WebFonts、Transform、
text-shadow のサポートで
自由なテキストデザインが
ブラウザ上で実現可能に
? 斜めのメニューやタイトル etc...
Canvas
? HTML5 Canvas Text API
? ?llText()、strokeText()、
measureText(),
? Firefox 3 では独自 API
? HTML5 Canvas Shadows API
? ctx.shadowO?setX、ctx.shadowO?setY、
ctx.shadowBlur、ctx.shadowColor
? HTML5 Canvas CreteImageData()
? Canvas へのビデオ描画
<video> & <audio>
? Ogg Vorbis/Theora をネイティブサポート
? SVG ?lter、clip、CSS Transform などとも併用可
<video> & <audio>
? Ogg Vorbis/Theora をネイティブサポート
? SVG ?lter、clip、CSS Transform などとも併用可
もっと Web 標準
? Geolocation API
? SVG による HTML の切り抜き、マスク、フィルタ
? HTML5 ドラッグ&ドロップ API
? HTML5 オフラインキャッシュ
? DOM 2 Traversal - NodeIterator
? クロスサイト XMLHttpRequest (XHR)
? Fx3 では仕様が未確定だったためスキップされた
? <script defer="defer"> で JavaScript の遅延評価
New Technology
Photo by hiroohi
http://?ickr.com/photos/rainboweyes/2747484483/
New Technology
カラーマネージメント
? ICC カラープロファイルの CMS がデフォルトでオンに
? PhotoShop などでの表示色と一致する
? カラープロファイル情報のある画像でのみ色補正
? 画像と背景色 (CSS 指定のRGB値) がずれないように
? プロファイル付画像だけなのは W3C の指針でもある
? これは先行実装している Safari とも同じ動作
? Fx3 では性能(と描画)の問題でデフォルトオフ
? 速度低下は 1% (全画像だと 4 5%、Fx3 では 20 30%)
http://bholley.wordpress.com/2008/09/12/so-many-colors/
Photo by ?od
http://?ickr.com/photos/?od/2850464994/
Firefox 3.0 Firefox 3.1
JavaScript
? コンテンツでのネイティブ JSON (rfc4627) サポート
? JSON.parse()、JSON.stringify()、
*.prototype.toJSON()
? XUL 内で使用する nsIJSON は Fx3 で実装済
? ワーカースレッド API
? wk = new Worker("path/to/script.js"); で生成して
wk.onmessage, wk.onerror, wk.postMessage を定義
? まだ API の仕様は標準化されていない
? バックグラウンドからは直接 DOM を操作できない
? 重たい計算処理やオンラインに戻るときの処理などに
TraceMonkey
? Firefox 3.1 の新 JavaScript エンジン
? 目標は C や Java に匹敵する処理速度
? 少ないメモリで高速な処理を実現するのが特徴
? 新しいタイプの JIT コンパイラを搭載
? Tamarin (Tamarin-Tracing) の nanojit を移植
? UC の Andreas Gal らの研究成果を反映
? Tracing という手法を用いた JIT コンパイラ
? Andreas Gal による Tracing の論文は 2006年~
? TraceMonkey の開発は今年の 6月末~
JavaScript = 遅い?
JavaScript は何故遅い?
? JavaScript = 単純なスクリプトを処理する言語
? そもそも Java があるのに JS ができたのはそのため
? 用途上そもそも高速化する必要性、需要がない
? Web アプリケーションができたのはつい最近
? 開発者の数は C や Java に比べるまでもない
? 比較的新しい言語
? Fortran: 1954~、C: 1972~、C++: 1982~、
Java: 1990~、JavaScript: 1995~
? 誰もコンパイラの開発に力を入れていなかった
言語の速度
? 一昔前に C++ と Java のどちらが速いか議論された
? 仮想マシンで動く Java は遅い!?
? 逐次解釈では C の 20 倍以上遅かった
? 中間言語への事前コンパイルで高速化
? JIT によるネイティブコード生成で高速化
? 現在では処理内容次第では Java の方が高速
? パレートの法則
? 処理の大部分は一部のコードに集中する
? ボトルネックとなる部分を高速化すればよい
JavaScript は何故遅い?
? 動的スクリプト言語
? 演算前に型のチェックと変換が必要
? 配列が存在しない
? Array は配列でなくハッシュオブジェクト(仕様)
? array[3] は実際には array["3"] へのアクセス
? すべてのプロパティアクセスでハッシュ計算が必要
? クラスが存在しない
? プロトタイプベースのオブジェクト指向言語
? 変数のクラスによる事前最適化が不可能
时は流れ???
时は流れ???
Web 2.0
时は流れ???
Web 2.0
Ajax
时は流れ???
Web 2.0
Ajax
RIA
时は流れ???
Web 2.0
Ajax
RIA
Platform
高速化しなきゃ!
JavaScript の高速化
? 動的スクリプト言語
? ループ外で型チェックしてから固定型で演算
? 配列が存在しない
? 配列として使われているなら配列として処理
? 同じプロパティへのアクセスはキャッシュ
? クラスが存在しない
? オブジェクトの定義を変更することはまれ
? 同じ手順で定義したオブジェクトを同じクラスに
? クラスチェックだけしてクラスに特化した処理
注: これは TraceMonkey の話じゃなくて一般論
Just In Time Compiler
? ボトルネックを高速なネイティブコードに変換
? 実行時に繰り返し処理される部分を検出
? 既存の JIT は関数(メソッド)呼び出し回数をカウント
? 一定回数以上呼び出されたメソッドをコンパイル
? 実行時情報を使った最適化が可能
? 事前コンパイル型の C++ などより高速化可能
? Java は HotSpot という JIT の導入で大幅高速化
? Action Script 3 も JIT によって高速化
? 但し AS3 の場合は静的型の導入が大きい
Tracing JIT
1. ソースコードをバイトコード(中間コード)に変換
2. インタープリタでバイトコードを実行しつつ監視
? 後方分岐発生時以外はペナルティ一切無し
3. 後方分岐のジャンプ先をループ始点候補として記録
? ループ処理は必ず後方分岐を伴う
4. 一定回数以上ループしたら実行バイトコードを記録
? 実際に処理するバイトコードだけを記録する
5. 記録された軌跡 (trace) をネイティブコードにコンパイル
6. ネイティブコードで高速処理
Tracing JIT
var i,k=0;
for (i=0; i < 1000; ++i) {
++k;
}
alert(k);
iconst_0
istore_2
iconst_0
istore_1
A iload_1
sipush 1000
if_icmpge B
iinc 2,1
iinc 1,1
goto A
B getstatic System.out
iload_2
invokevirtual alert(int)
トレース
後方分岐
Tracing JIT
? ループのバイトコードをトレース
? 全ての分岐結果を記録
? 同一条件で実行される限りネイティブコードで処理
? 記録した分岐結果と異なる場合は VM に処理を返す
? switch 文なども分岐テーブルではなくトレース時に
実行された特定条件との比較だけを行う
? ループ完了または特定条件発生時にトレース終了
? 例外発生時についてはトレース対象外
? ネイティブメソッド呼び出しも基本的に対象外
Tracing JIT
? ネイティブコードは既存の手法より高速化可能
? 実際処理される最小限のネイティブコードを生成
? 既存の JIT では関数中の非実行部分もコンパイル
? ループ中の関数呼び出しもネイティブコードで最適化
? 関数単位のネイティブコード生成では不可能
? 型についても当然ループ開始時のチェックのみに
? switch 文だったところも if 文として処理
? トレーズ時と同じ分岐かどうかをチェックするだけ
? 同一条件ループでループのオーバーヘッドなし
Tracing the Web
? まだまだ開発は始まったばかり
? ようやく安定してきた段階で高速化の余地はまだまだ
? 現在のトレース対象はネイティブ JS と一部の DOM
? XPCOM のネイティブメソッド呼び出しがあると
一部対応しているものを除きトレース対象外に
? 純粋な JS オブジェクトの処理は非常に高速に
? 画像処理や暗号化など重たい演算処理には効果大
? 他言語から生成したバイトコードも処理
? IronPython などの IronMonkey プロジェクトも???
JavaScript Benchmark
0ms 10,000ms 20,000ms 30,000ms 40,000ms
692ms
830ms
1,108ms
2,368ms
31,806ms
Apple SunSpider Benchmark - Vista on iMac
IE7 Firefox 3.0 Firefox 3.1b2 Chrome WebKit
JavaScript Benchmark
0ms 10,000ms 20,000ms 30,000ms 40,000ms
692ms
830ms
1,108ms
2,368ms
31,806ms
Apple SunSpider Benchmark - Vista on iMac
IE7 Firefox 3.0 Firefox 3.1b2 Chrome WebKit
速度比較結果は
あくまでも参考値
ベンチマークと
実行環境次第です
0ms
150ms
300ms
450ms
600ms
3d access bitops ?ow crypto date math regexp string
Firefox 3.0 Firefox 3.1b2 Chrome WebKit
Apple SunSpider Benchmark - Vista on iMac
JavaScript Benchmark
0ms
150ms
300ms
450ms
600ms
3d access bitops ?ow crypto date math regexp string
Firefox 3.0 Firefox 3.1b2 Chrome WebKit
Apple SunSpider Benchmark - Vista on iMac
JavaScript Benchmark
速度比較結果は
あくまでも参考値
ベンチマークと
実行環境次第です
JavaScript も高速に
(IE も IE8 で多少マシに!?)
補足: Tamarin との関係
? Tamarin は Adobe の Action Script エンジン
? Tamarin と SpiderMonkey の統合は中止
? Tamarin は SpiderMonkey の高速化に追従できない
? Tamarin には eval() など必要な機能が多数欠落
? バイトコードや DOM との結合が強い
? TraceMonkey では Tamarin の JIT のみ移植
? Tamarin-Tracing というブランチの JIT を移植
? 将来的にはガベージコレクタなどの移植や統合も
? 相互のコードや成果を反映し合いながら開発
New Web
Photo by shiokuma
http://?ickr.com/photos/shiokuma/631332559/
New Web
Canvas + JavaScript
数行~数十行のコードでアート
http://azarask.in/projects/algorithm-ink/
JavaScript で画像処理
Web = Platform
Quality Assurance
Photo by masahiko
http://www.?ickr.com/photos/masahiko/986748017/
Fennec
Fennec
Photo by Ethan Hein
http://?ickr.com/photos/ethanhein/2885626633/
Mobile Firefox
二次会のお飲み物
シャンパン: Overview
白ワイン: Design
赤ワイン: Addon
その他: 各自お持ち込みください
Photo by the queen of subtle
http://?ickr.com/photos/queen_of_subtle/445695242/
Overview
Fennec - Overview
? 10 月に Alpha1 リリース
? Maemo (Nokia)、Windows、Mac、Linux 版
? 今年中 or 来年頭に Alpha 2 リリース
? Windows Mobile 版も追加
? 来年前半に最終リリース
? Symbian のサポートに向けても努力中 (未確定)
? iPhone は Apple が許可しないので対応不可
? まずは Windows Mobile 端末で遊びましょう
Fennec - Overview
? Mozilla 1.9.1 ベース Firefox 3.1 と同じエンジン
? YouTube でも何でも普通に見られます
? JavaScript エンジンはもちろん TraceMonkey
? Weave を正式リリースまでに統合
? タブ、ブックマーク、履歴、パスワードなど同期
? さっきパソコンでみていたページがすぐ見られる
? すべてのデータはクライアント側で暗号化して送信
? Ubiquity の成果も一部正式リリースまでに統合
? 具体的な UI などについては現在検討中
Fennec - Overview
? 携帯の他あらゆる小型端末がターゲット
? カーナビとかネットブックなども
? スクリーンは 800x480、QVGA などがメイン
? 画面サイズは自由自在なので端末にあわせて微調整
? タッチパネル版とキー操作版の両方を用意
? 最終的なバイナリサイズなどは未定
? 現在は UI 検討フェーズで最適化はこれから
Photo by Frank BB
http://?ickr.com/photos/frankbb/3050645728/sizes/o/
Photo by billaday
http://?ickr.com/photos/billselak/2218333986/
Design
分かりやすい操作性
分かりやすい操作性
分かりやすい操作性
コンテンツ领域を最大に
コンテンツ领域を最大に
スマート(ロケーション)バー
スマート(ロケーション)バー
スマート(ロケーション)バー
ブックマーク
ブックマーク
Photo by Frank BB
http://?ickr.com/photos/frankbb/3050645728/sizes/o/
Addon
Firefox 同様のアドオン
Firefox 同様のアドオン
Firefox 同様のアドオン
Firefox 同様のアドオン
Firefox 同様のアドオン
Fennec
Photo by slack12
http://?ickr.com/photos/slack12/360027989/
Any Question?
Thank You

More Related Content

Firefox 3.1 & MozTech