Firefox 3.5は、バックエンドに当たるGecko 1.9.1の開発が遅れる一方、それ以外のフロントエンド部分では順調にBlockerバグが潰されている。Beta 4の投入に伴うスケジュール変更により、開発チームの一部には余裕すら生まれてきた。
そこで、Beta 4に間に合うようにフロントエンドの機能を追加しようという試みが"Code Sprints"である。短距離走のように全力疾走で必要なデザインやコードを構築していくイメージだ。内容は雑多で、新しく企画されたものもあれば、Beta 2前にいったん切られたものが復活したケースもみられる。
小幅な変更ではあるが、成果が出た場合はFirefox 3.5に確実に取り込まれる点が大きい。WHATWG 5のlocalStorageを実装するかどうかで揉めているのと比べると、扱いの差は明らかだ。なお、Beta 4に間に合わなければFirefox.nextに回される。
Mozilla Linksの記事でさえ軽く触れるにとどまっているものの、ユーザーが接する部分に関わるだけに、その重要性は小さくないと思われる。以下では、機能の内容を簡単に紹介してみたい。
Asynchronous Annotation Protocol Handler
- 目標
- アノテーション・プロトコルを一番消費している、ファビコンをハンドリングすることで、メインスレッドにおけるファイル入出力を減らす。
- 手段
- Placesデータベースから同期的にファビコンを取得しているのを、非同期に変更する。
- 該当バグ
- Bug 481227
Bookmark Dialog Focus
- 目標
- ページをブックマークする際、タグのヘビーユーザーはタグ入力領域をデフォルトにし、ブックマークのタイトルを頻繁に変えるユーザーはタイトル入力領域をデフォルトにする。
- 手段
- 現在は、ブックマーク追加ダイアログで、タイトル入力領域にフォーカスするのがデフォルトだが、ユーザーの直近の操作を記憶しておき、次回はそれに従うようにする。直近の操作でタグを入力した場合は、タグの入力領域にフォーカスが当たる。
- 該当バグ
- Bug 480151
about:me
- 目標
- ユーザーにWebとのやりとりに関するさまざまなパターンを示し、それによってWebとの個人的な結びつきを強める。また、テスターがWeb利用やそれに基づくメタデータを計測し、バグや機能のフィードバックに役立てる。
- 手段
- ユーザー履歴や平均タブロード数などを統計的に分析して表示。Google Zeitgeistに似るが、Placesデータベースに基づく。
- 該当バグ
- Bug 480154
Network Error Pages
- 目標
- ネットワークに関するさまざまなエラーページ(アドレスが見つからないなど)で、ユーザーに質問するのではなく解決のためのツールを提供する。
- 手段
- Google Chromeのようにエラーページに検索窓をつける。Placesの履歴やブックマークの情報を利用して、訂正されたURLを提案できないか検討する。
- 該当バグ
- Bug 479922
(09/03/14追記)
MozillaのUIデザイナーJennifer Boriss氏が新ページのデザイン案を出しているのでそちらも参照されたい。
Tab Matches In Awesomebar
- 目標
- ユーザーが意図せず重複したタブを作ってしまうケースを減らす。が、実際に意図して重複したタブを作りたいときはそれができるようにする。タブプレビューパネルを使うより早く特定のタブを検索可能にするとともに、その機能をスマートロケーションバーに完全に統合する。
- 手段
- ロケーションバーに現れる候補の中に、既にタブで開いているものがあった場合、ユーザーが「タブに切り替える」と「開く」を選べるようにする。このとき、「切り替える」を先にし、「開く」が全体の表示の中で邪魔にならないよう配慮する。
- 該当バグ
- Bug 480350
(09/03/21追記)
画像を拡大版に差し替え。元画像のタイトルは"Changes to the Location Bar in Shiretoko (Beta 2)"で、モックアップの日付は"20081014"だった。
Clear Recent History by Time Range
- 目標
- 「最近の履歴を消去」に時間を選択するウィジェットを加え、ユーザーが目で見てわかるようにするとともに、削除される内容を確認できるようにする。ユーザーは、より細かなレベルで履歴などをコントロールできる。ユーザーがすべての履歴を消去するときは、より強く警告する。
- 手段
- 「履歴とブックマークの管理」ページと同様に、ユーザーが複数の履歴を選択して消去することを可能にする。消去対象となるデータの種類を選択するチェックボックスは、重要な項目をまず表示し、それ以外の項目は、スクロールしないと表示されないようにする。
- 該当バグ
- Bug 464204,Bug 480169
(09/03/21追記)
画像を拡大版に差し替え。元画像のタイトルは"Tools > Clear Recent History"で、モックアップの日付は"20090225"だった。
Always have option to Add Search
- 目標
- 特定のサイトに対する検索機能を常に追加できるようにする。エンジンが追加できないなら、デフォルトのエンジンをカスタマイズして使えるようにする。サーチエンジンを恒久的に追加することなく、サイト限定サーチに素早くアクセスできるようにする。
- 手段
- OpenSearchプラグインが利用できないときでも、検索用のテキストボックスがあるときは、コンテクストメニューに「検索バーに追加する」というメニューが出る。一時的にそのエンジンを利用するためのキーボードショートカットも用意する。
- 該当バグ
- Bug 261124
Restore Visible Tabs First
- 目標
- 起動のスピードアップ。最後に利用したページをより迅速に利用可能にする。
- 手段
- セッションを復元する際、タブバーに表示されていたタブから先に読み込む。
- 該当バグ
- Bug 480148
Improve Plugin Find and Install
- 目標
- 現行のPlugin Finder Service(PFS:プラグイン検索サービス)のユーザーインターフェイス(UI)を廃止する。未知のあるいはブロックされたプラグインがページに示されているときは、インストールすべき新バージョンを提供する。
- 手段
- PFSが利用可能なプラグインを発見したときは、「Flash Player 10が利用可能です」のように通知バーに表示する。発見できなかったときはその旨表示する。
- 該当バグ
- Bug 430853
Places Expiration Performance Refactoring
- 目標
- 発行するwrite命令やfsync命令の数を減らす。反応速度を上げるため、UIスレッドからリソース消費の大きい活動を取り除く。有効期限コードを単純化。
- 手段
- ページを訪問するたびに履歴の期限切れ処理をするのはパフォーマンスを悪化させるのでやめる。一時処理用のテーブルをディスク上のデータベースと同期させるときに、まとめてその処理をする。開発者の説明を参照すると、履歴の削除という書き込み処理がメインスレッドで行われなくなり、同期処理も回数が減るため、パフォーマンスが向上するという。
- 該当バグ
- Bug 480211
Rebuild Software Update without browser element
- 目標
- ブラウザ要素を除去することで、ロケールごとに掲示する内容のサイズを検証しなくて済む。UIをアプリケーションの一部であるような形により近づける。
- 手段
- ブラウザ要素をもつページの代わりに、アップデータがリソース(画像やテキスト)への参照情報を含むようにし、クライアント側のXULウィンドウでそれを組み立てる。
- 該当バグ
- Bug 475671,Bug 480178
Awesomeformcomplete
- 目標
- フォームの自動補完は現在マッチした値をアルファベット順に並べて表示するが、これは理想的とはいえないので、頻繁に使われる、あるいは最近使った項目をリストに埋め込む。
- 手段
- スマートロケーションバーと同様(frecency)のアルゴリズムを使って、フォームの自動補完候補を提示する。
- 該当バグ
- Bug 370117
Places DB Creation Scripts
- 目標
- Placesで連続したテストを走らせるため、サンプルとなるSQLiteデータベースを自動的に生成できるようにする。これによって、コードの変更がPlacesのパフォーマンスにどのような影響を与えるのかについて信頼性の高い計測が可能になる。サンプルデータは十分に大きなものであるべき。
- 手段
- Placesデータベースを生成するPythonスクリプトを作る。データベースにはさまざまな特徴を持たせる。たとえば、「同一ドメインで多数の訪問」、「多数のドメインを訪問」、「多数のタグ」、「多数のブックマーク」など。ユニークURL数は1万以上とする。生成したデータベースを実環境のユーザーにも使ってもらい、データを集める。
- 該当バグ
- Bug 480340
Focus Ring Cleanup
- 目標
- 選択したタブをクリックしたとき、フォーカスリング(タイトルの囲み枠)を出さない。リングはキーボードでフォーカスを当てた場合にだけ表示されるべき。
- 手段
- タブに対し、マウスによってフォーカスが当たったことを示す属性を付加する。
- 該当バグ
- Bug 462289
Windows Theme Polish
- 目標
- Firefox 3.5がCSS3のborder-imageをサポートしたので、これを用いてWindows版のテーマを少し改良する。サイトボタンと検索ボタンは見た目をよりクリーンにし、マウスを合わせたり押したりしたときは見た目を変えるようにする。ブックマークのダイアログではパネルとコントロールを視覚的に結びつける。
- 手段
- サイトボタンでは、全辺のボーダーに色づけし、右上部にハイライトを入れ、進むボタンを鏡で映したようなデザインにする。検索ボタンは前記のとおり。
- ブックマークのダイアログは、全体的に丸みを帯びたものにし、スターアイコンに吹き出しを付けたような感じにする。
- 該当バグ
- Bug 413059,Bug 462977
その他
項目だけ挙がっているものとして、「タブ切離し時のビジュアル・アフォーダンス(Visual Affordance for Tear Off Tabs)」、「スタートアップ速度の向上(Ts Wins)」、「辞書のアップデート」、「スマートロケーションバーに検索を追加」がある。詳細は不明だが、開発期間に限りがあることから、Firefox 3.5での導入は難しいのではないだろうか。
(09/03/23追記)
Privacy Prefpane Refresh
- 目標
- ユーザーが複雑な設定を操作する前に、ローカルに保存された情報(=履歴)について一つを選べるようにする。インターフェイスをシンプルにすることで、将来プライバシー関連の機能(ターゲット広告の排除など)を加える余地を作る。ユーザーがプライバシー関連の機能を理解しやすくなる文脈情報を提供する。スマートロケーションバーの振る舞いをユーザーがコントロールできるようにする。
- 手段
- 『Firefox 3.5 Beta 4で変更されるUI』参照。
- 該当バグ
- Bug 462041
(09/03/26追記)
About:newtab
- 目標
- 空白ページの代わりに、新規タブのページに、ユーザーの履歴を基にした、有用でタスク中心のナビゲーション手段を提供する。ロード時間は空白ページと同じくらい短く。閉じたタブの再オープンを可能にする。ユーザーの心理的な「流れ」を阻害しない。
- 手段
- 当ブログの『About:Tabアドオン』および『About:Tab 0.0.29と多少の解説』を参照。また、Another朝顔日記の『About:Tab 0.0.31』、『About:Tab 0.0.33』、『About:Tab 0.0.34』もそれぞれ参照。
- 該当バグ
- なし。ただし、MozillaWikiの"Firefox/Sprints/About:newtab"にレファレンスあり。
Undo Close Window
- 目標
- 閉じたウィンドウのアンドゥができるようにする。プライベート・ブラウジングの保護は確実に行う。
- 手段
- 『Firefox 3.5 Beta 4で変更されるUI』参照。
- 該当バグ
- Bug 394759