理系学生日記

おまえはいつまで学生気分なのか

Firefox Developers Conference 2008

Firefox のカンファレンスに参加するなどして,ぼくは引きこもりじゃないことを世界的に発信したのでした. メモとかして世界にぼくが勤勉であることを発信したので,ぼくは大満足した.そのメモももちろん世界に公開して,なんとなくオープンになった感じになる!!

**キックオフ

Firefox だけでなく,Mozilla がどういう形でいろんなことを行っていくのかを話していく. 日本はモバイル市場が後退しているという声もある.携帯電話に特化していると考えられがちだが,携帯だけでなくいろんなデバイスを Mozilla がどうやって変えていくのか,これからの vision,取り組みについて,もう少し先の 5 年後,10 年後を見据えた形での発表をしていく.Mozilla が日本から学ぶ場になる.プレゼンだけでなく,双方向で日本から物申すという形でも,どんどん意見をぶつけて欲しい.世界へ日本から発信していってほしい.日本がリードしていきたい.

***ご報告

-ベスト・オブ・悪用厳禁ツール & サイト 2008 受賞 -SOHO AWARDS 2008 選考委員会受賞 --ver. 1.5 では金賞だったんだけどなー

***タグ

fxdevcon2008 使えや!!

**Firefox Mobile -The One Web- (Jay Sullivan)

この一年間の間にいろいろな成功があったが,モバイルの分野であっても -なぜ Mozilla がモバイルに注力しているのか -Web におけるビジョン,どのように考えているのか --ブラウザ構築だけでなく,Web をどうやってプラットフォームとして展開していきたいと思っている

Mozilla は firefox を導入し,開発者・ユーザにとっても新しい一歩になった.デスクトップ環境に大きな影響を与えることができた. モバイル環境にも大きは変化が起こっており,PC に対しモバイルは二つめのインターネットにアクセスするための手段となっている.実際にケニアでは,銀行にアクセスする主要な手段がモバイルになっており,人々はモバイルフォンで情報にアクセスする.

***Fennec

Firefox をモバイルデバイスに導入するためのプロジェクトのコードネーム. 基本的には,各端末に対してインプリは別になるのでメンドい*1.でもモバイル端末はロケーションベースなど良い部分もたくさんあり,モバイル端末上で Firefox をユーズベースの違う部分で実現していこうという話になっている.

主要な特徴として: -キーストロークをできるだけなくす. --スマート URL バー や weave を使ってできるだけキーストロークをなくす工夫をし,携帯端末特有のタイピングの難しさを緩和する. -スクリーン全体を使えるようにする --URL のバー,コントロールを消して,コントロールをしなければならないときにそれらがもどってくるようにしている -アドオンによる機能拡張が可能 --機能拡張をしたいときは,それが簡単にできるように気をつけている

タッチパネルを用いたブラウジングが可能であり,Nokia,インターネットタブレット,Symbian,Windows Mobile 6 でも開発中.ホーム画面をドラッグすることで,戻る,進むボタンなどが表示されるようになる.逆方向にドラッグすると,タブが表示される.

スマートバーに移動すると,これまでに閲覧した履歴,ブックマーク,タブページがでてくるようになっている.foot と入れると,"football" のタグをつけたページ,タイトルに football を含むページが表示される.できるだけキーストロークが少なくなるような工夫の一つである.

メニューもシンプルなものが用意されていて,ダウンロードファイルの一覧,アドオン,Theme などがある.

***モバイルアプリケーションの開発状況

どのモバイルが勝者になるか分からない.iPhone,Symbian での開発も大変なもの.数多くの端末をサポートすることは,小さなところ(スタートアップ企業) にとっては非常に大変.イノベーションにとっては不幸な状況である,

テクニカルな作業が終わってからは,その成果物を配信しなければならない.Apple はアプリの配信を引き受けてくれるか,Symbian, Windows Mobile などそれぞれに対してのビジネスとしての動きが必要になる.ビジネスの交渉が必要.このようなたくさんの障壁がある.セキュリティ対策,アップグレードも大変.いろんな邪魔になる要素を考えなければならない.

Mozilla としては, 直接いろんな人たちと話すだけではなく,まずは標準化を図る.モバイルでもデスクトップと同じく,ダウンロードベースで展開ができるはず.クリックすれば動くようにしたい. ほとんどのことを Web 経由でやっている.Web 開発者としては,モバイルもデスクトップと同様展開したいがまだそこまでは到達していない.フルブラウザを作るわけだが,現在の 80% の Web アプリには対応させたい.JavaScript,オフラインストレージを考えていかなければならない.カメラ,GPS などを活用して,デバイスの可能性を追求したい.

Javascript エンジンは高速になったが,大事なのはエンドユーザが瞬時に物事ができているように感じられるか.JavaScript インタプリタが早くないという状況は変わろうとしている.モバイルデバイスについては,一年間で 10 倍の改善がなされた.この 2 年の間に大きな改善がなされたが,現在さらに抜本的な改善がなされている.TraceMonkey が実現されれば,性能の負担は JavaScript とネイティブコードの差はほとんどなくなる.しかも継続的な改善が加えられる.いろいろな分野で競争がある.ただし,Web ブラウザにとっては,まだまだ速さがたりない.

ロケーションにアクセスしたいという場合,ネイティブアプリでできる.Fennic の最初のバージョンで, 簡単な JavaScript によって自分の場所を取得できるようになっている.同じことをカメラなどでもやろうとしている.Web のデベロッパが機能性で妥協することは全くなくなる.

**Ubiquity

20% が Mozilla のブラウザを使っている.Mozilla の進む方向に,Google, Microsoft,Apple がついてくる状況.問題は Mozilla がどの方向に行くかである. -日本独特の文化に合わせて,地域性に焦点をあてる必要がある. -OpenSource の世界はエンジニアリングの世界で最も大きく,素晴らしいが,デザインの分野がかけている.

インタフェースが非常に重要.人が作業するのにふさわしいインタフェースになってないとダメ.皆が使いやすい Firefox にするにはどうしたらいいのか.

Microsoft Word のように,どんどん機能を追加してゴチャゴチャになるという方向性は避けたい.Firefox との会話,二人の間のインタフェースの部分が ubiquity である.会話型のコンピューティングを提供する拡張機能が ubiquity.email に地図を出すのさえ大変な状況の中で,考えたことをそのまま実行することが本当にやりたいこと.

Ubiquity を用いれば,誰でもコマンドを書いてブラウザを改善していくことができる.ダメな部分があっても,developer であれば fix する.それを共有できれば素晴しいと思わないか.たくさんのクリエイティビティを共有することができる.

技術的な専門用語を分からなくても,他の人を信用する仕組みをつくりたい.

将来的には ubiquity がロケーションバーに integration される形になる.

何でも発表すればやりたいことをやってくれる.何か提案してくれれば楽.Firefox も 賢い提案をしてくれるそういう方向になる.Semantic WEB ということも言えるかもしれない. developer には -content developer -extension developer に分断されているが,これを統合したい.もっと多くの人が開発に関わってくれたら,もっとイノベーションが発生する.Firefox を使っている人が,ちょっと HTML を追加したり,ちょっと JavaScript を書いて,根本的なイノベーションができるようにしたら,想像もつかないことが起こるのではないか.ubiquity は一つのソリューションとしてそれを実現できる.みんながちょっと関わってくれるだけで,世界が動かせる.

**HTML5 today

HTML5 の状況,最近の開発,発展が今日の話題

***Introduction

この金曜日に HTML: The Markup Language が発行された (http://www.w3.org/html/wg/markup-spec/). 基本的なシンタックスそどのように書いていけば良いのかが書かれている. なぜこのドキュメントを作ったのかというと,existing HTML スペックがあまりにデカくて,情報がありすぎて,関係のないものが多いという声があったため.既存の HTML 5 のスペックはブラウザを作成する人には必要だが,他の人には必要ない.読まなくても良い情報がたくさんある.この状況を改善するため 3 つ目のドキュメントも作ろうとしている.

***既に動く HTML 要素

-canvas エレメント --Mozilla, Opera, Web kit, safari で既にサポートされている.img と似ているが,動的なエレメントを見せることができる.JavaScript API があり,いろんなコンテンツを作れる. -video, audio --Safari, Opera, Firefox 3.1 でサポート.plugin なしで interactive なコンテンツを埋め込むことができる. -new form attributes --クライアントサイドで入力された入力をブラウザ側で validation できる -offline web application --クライアントサイドでキャッシュインタフェースとして扱うことができる.ユーズケースとしては,地下鉄に乗っているときにキャッシュを読むということができる. -client-side data storage --現在はセッション情報はクッキーで管理されている.サーバ側では個人情報を扱っており,クライアント側からリクエストをする必要がある.client-side data storage は,情報をメモリ上に格納し,使えるようになる. -セッションストレージ --単一のセッションに限り,ユーザの情報をクライアント側のメモリ上で管理 -ローカルストレージ --複数のセッション間で情報を共有する.ブラウザを終了させて,同じ web api にアクセスしても,クライアント側のファイルシステムに記憶されているものを使用する. -クライアント側の SQL に入れて管理する. -ブラウザの中でスクリプトなしに D&D できる

***まだサポートされていないもの

-time -progess --loading image などのプログレスバー -meter --アナログ表示のゲージのようなもの -command -bb -menu -datagrid --お気に入りの feature.email, excel などのようなデータがあった場合にソート可能にしたい場合のエレメント

**Firefox 3.1 in Depth

***Interface

-タブの一覧表示 -セキュリティ関連 UI を初心者向けに充実 -期間を指定した履歴の消去 --何日以内の履歴だけ削除とか -セッション管理が,クラッシュするページのみを外して再度セッション再生みたいなこともできる -Web fonts --フォントを web ページからダウンロードして表示させるような CSS にも対応 --3.1 ではダウンロードが完了次第フォールバックした文字から指定フォントにおきかえられる -CSS3 メディアクエリ --画面の大きさ,幅に合わせたデザインが必要 -CSS3 セレクタ -Canvas --ビデオの変形,フィルタもできるようになる -javascript の defer 属性

***JavaScript -JSON.parse など,JSON のパースがネイティブでサポートする (rfc4627) -TraceMonkey --Firefox 3.1 の新 JavaScript エンジン --少ないメモリで高速な処理を実現する -JavaScript は遅い? --JavaScript は画像の切替えなどの用途向きに作られた ---用途上,高速化する必要性,需要がなかった --比較的新しい言語 ---誰もコンパイラに力を入れてこなかった --動的スクリプト ---演算前に型チェックが必要 ---ループ外で型チェックしてから固定型として演算することで高速化される --配列が存在せず,全てのプロパティアクセスでハッシュ演算が必要 ---配列として使われているなら配列として処理することで高速化を図る ---同じプロパティへのアクセスはキャッシュするようにした --JavaScript はクラスが存在しない,ロトタイプベースのオブジェクト指向言語 ---プロトタイプは何度でも動的に書き換えることができる => 実行時まで事前最適化が困難 ---同じ手順で定義したオブジェクトを同じクラスに ---クラスチェックだけしてクラスに特化した処理にする

--JIT コンパイル ---高速処理が必要な部分をネイティブコードに変換.実行時に繰り返し処理される部分を検出 ---関数呼び出し回数をカウント ---一定回数以上呼び出されたメソッドをコンパイル --実行時情報を使った最適化が可能 ---理論的には事前コンパイル型の C++ より高速化が可能 --Tracing JIT ---後方分岐のみ監視(この部分が反復処理と思われるため) ---やっと安定してきた段階 ---DOM 操作するアプリのレベルでは,なかなか効果がない(DOM 操作はトレースされないため) --Tamarin は Adobe の ActionScript エンジン --Tamarin と SpiderMonkey の統合は中止 --Tamarin は SpiderMonkey の高速化に追従できない --eval() が Tamarin にはない

*1:抽象化すれば改善はできるけど