世界でもっとも使われているJavaScriptフレームワークのひとつにjQueryがある。シンプルさやサポートするブラウザとプラットフォームの多さもさることながら、高速さ、使いやすいライセンス、プラグインによる拡張性の高さなどもあって、WebサイトやWebアプリケーションを開発する場合には欠かせない存在になりつつある。
今回、さまざまなイベントに参加するために日本と上海を訪れているjQueryの開発者、John Resig氏にインタビューする機会を得た。次期jQuery 1.5や現在開発が進められているjQuery Mobileについてお話を伺った。活発化するモバイルWebにjQueryがどういった視点をもって臨み、開発しているかをわかりやすく教えてもらった。
jQuery 1.5は2011年1月に登場予定
jQueryは先日リリースされたjQuery 1.4.4が最新版だ。PCブラウザのみならず主要なすべてのモバイルブラウザに対応した、現存する中ではもっとも多くのブラウザとプラットフォームに対応したJavaScriptフレームワークである。1.4系のマイナーリリースは今後も実施するというが、すでにターゲットは2011年1月に実施を目指しているjQuery 1.5へ向いているという。jQuery 1.5で実現すべき機能は現在策定段階にあるということだったが、すでにある程度のめどは立っている。主な取り組みは次のとおり。
- 内部コードの書き換え … CSSサブシステムとAjaxサブシステム周りの書き換えを進める
- 内部書き換えによる高速化の実現
- 内部書き換えによるプラグイン機能の拡充 … 従来よりも多くのことをプラグインで実現できるようにする
また、2011年1月にはjQuery Mobile 1.0のリリースも予定されている。jQueryにとって新しい1ページを開くことになるマイルストーン的なリリースが1月にやってくることになる。
jQueryはFirefoxに内蔵しない?
John Resig氏はどちらかといえばMozillaとの関連が強く、MozillaのプロジェクトでもjQueryを活用している。こうした関係や状況を見ると、次期Firefox 4にはjQueryをそのまま取り込むのではないかと思えるが、そうしたことはしたくないとJohn Resig氏は答える。
FirefoxにjQueryを取り込まないのかという質問はよく受けるそうだ。しかし、頻繁に開発が実施されているjQueryをFirefoxに取り込むことになれば、古いバージョンのjQueryを常に使い続けるという状況になる。それに、jQueryが目指しているのはすべてのブラウザに対してそれぞれベストな体験を提供するというもの。Firefoxに取り込むことは本来目指すところとは異なる。これがJohn Resig氏の意見だ。
ただ、jQueryのコードがFirefox 4にまったく使われていない、というわけではない。タブを2次元に展開するタブセット機能にはjQueryのコードが使われている。jQueryから必要な機能部分のコードを抽出し、ブラウザ互換コードを省き、Firefoxで最速になるようにチューニングしたコードが取り込まれている。jQueryそのものを取り込むのではなく、必要な部分を適宜最適化して利用しているという状況だ。
jQuery Mobileってなに?
jQueryはPCで動作するブラウザからモバイルブラウザまですべてに対応している。特定のブラウザ向けにそれぞれ個別にjQueryを用意する、というのはJohn Resig氏が目指すものではない。あくまでも単一のjQueryですべてに対応する、これが基本方針だ。
ではjQuery Mobileはなんなのかということになるが、これはモバイルブラウザ向けのUIをまとめたライブラリだ。動作にはjQueryが必要になる。つまり、基本的な機能はjQueryを使う。モバイルデバイス向けのUIはさらにjQuery Mobileを追加して使う、というわけだ。従来からあるjQueryプラグインと同じようなポジションにあるといえる。
jQuery Mobile開発の動機はWebKit
現在出回っているモバイルWeb向けのフレームワークはWebKitを前提にしているものが多いという。これはiPhoneやiPadをターゲットにしていることを意味しているが、実際に使われているモバイルデバイスはこの限りではない。BlackBerryやOpera、Firefox Mobile/Fennecもある。こうしたデバイスに対しても優れた体験を提供する必要があるとし、jQuery Mobileの開発がはじまったという。
モバイルデバイスとそのOS、そこで動作するブラウザとそのバージョン。この組み合わせはかなりの数に登る。jQuery Mobile開発ではまず開発対象となるプラットフォームとブラウザを整理。それぞれ提供している機能をベースにグレード分けし、グレードごとに提供する機能を切り分けるという「プログレッシブエンハンスメント」の手法を採用している。HTML/CSS/JavaScriptを多種多様なブラウザに対応させるための手法として採用が進んでいる「プログレッシブエンハンスメント」と同じだ。
優れたデバイスには優れた体験を、古いデバイスには確実に情報にアクセスできるアクセシビリティを提供する。かといって、遅いデバイスをサポートするために速いデバイスの速度を犠牲にするといったことはしていないという。どのデバイスにも、それぞれ適した体験を提供している。