BT

SproutCore: HTML5 アプリケーションフレームワーク

| 作者: Craig Wickesser , 翻訳者 吉田 英人 投稿日 2009年9月7日. 推定読書時間: 1分未満 |

原文(投稿日:2009/09/02)へのリンク

SproutCore に関して,InfoQ では 過去2度レポートをしている。最近では近々リリースされる 1.0 についての調査を行った。SproutCore はデスクトップ並みに美しいアプリケーションを,ブラウザ上でプラグインを使用せずに実現しようとするものだ。すべては既存の技術や技法を用いて実現されているが,その技術や技法も発展を続けている。SproutCore は突き詰めれば JavaScript,HTML,CSS の組み合わせであり,このことが SproutCore のすばらしいアドバンテージであるバックエンド非依存性を,ごく自然な形で導き出している。

SproutCore はどのようなバックエンドにも適応して動作します。実際に一度デプロイしてしまえば,SproutCore アプリケーションに含まれるのは標準HTML,JavaScript,CSS だけになります。Apache だけを使用してアプリケーション全体をデプロイすることさえ可能なのです。

私たちが最後に記事にした以降も,SproutCore には数多くの変更が行われている。そこで InfoQ では,Sproutit 社の社長兼CEOであるCharles Jolley氏に対して,来るリリースに関する質問を行った。

 

SproutCore を HTML5 対応アプリケーションフレームワークとしているものは何でしょうか?

SproutCore はネイティブクラスのリッチアプリケーションを構築する目的で,明示的に HTML5 の新しいWebアプリケーション機能(オフラインストレージ,HTMLアプリケーションキャッシュなど)を使用した最初のWebフレームワークのひとつです。SproutCore は HTML4 機能を実行する古いブラウザ上でも正しく動作します。しかし私たちは,Safari 4,Chrome,Firefox 3.5 などの HTML5 対応ブラウザが普及するであろう,今後5年間を見据えているのです。

私にとってはこれが,WEB上でもっともエキサイティングな仕事のできる場所なのです。ですからそのための設計を行っています。

SproutCore 1.0 からベータが外れるのはいつでしょうか?

この秋です。ただし SproutCore 1.0 上で動作するアプリケーションが現れるのはそれより前でしょう。昨年以降,ほぼすべての機能をカバーする 5,000 以上のユニットテストを追加してきていますので,現在すでにかなり安定しています。私たちはこの1年間で,SproutCode のビルドツールと JavaScript フレームワークのほとんどすべてを文字通り「書き直し」しました。これは APIの安定とパフォーマンスの大幅な改善を目的としたものです。SproutCore 0.9 以前のバージョンが Webブラウザ上でのデスクトップレベルのリッチアプリケーション実現を目的としていたとするならば,SproutCore 1.0 ではそのコア技術をよりスムーズに,確実に動作させることを目指しました。この方向で,私たち自身のゴールさえも本当に越えられたのは幸せなことです。SproutCore 1.0 は私たちがこれまで行ってきた中でも最高の仕事であると自負しています。

1.0 リリースでは(サイトで言及されているように),すべての資料やWebサイトが更新されるのですか?

そうです。現に http://docs.sproutcore.com にAPI 資料のホスティングを開始していますし,組み込み形式のドキュメントビューアも作成中です。サンプルアプリケーションもたくさん用意されています(http://demo.sproutcore.com)。その中には近々オープンソース化を予定している,完全なエンド・トゥ・エンドの例題もいくつか含まれています。

GWT や Cappuccino ではなく,なぜ SproutCore なのでしょう?

GWT や Cappuccino を試してみた人々が SproutCore に移るのには,通常2つの理由があります。第1はパフォーマンスです。3つのフレームワーク(GWT,Capp,あるいは SproutCore)はすべて,リッチWebアプリケーションを短時間に開発することができます。しかしながら複雑な処理を持つアプリケーションをビルドするようになると,通常はそれほど時間を経ずに大きなボトルネックが現れてきます。これはアプリケーションの初期ロード時間に特に顕著に現れます。この点において,SproutCore アプリケーションは実に良好にスケールするのです。第2の理由はカスタマイズ性です。GWT と Cappuccino は Java あるいは Objective-J サンドボックスの内部にあって,ともに Web ブラウザから高い独立性を持っています。プラットフォームに実装された範囲の限界に達するまでは,これは非常によく機能します。ただし限界に達したときにも,あなた自身その中で何とかしなければならないのです。SproutCore も機能豊富なレイヤを提供する点は同じです。違うのはそれがごく普通の古い形式の JavaScript であって,そこから踏み出してあなた自身で何かをするのも簡単だということです。

ビューレイヤから Ruby(0.9)を取り外して,完全にJavaScript(1.0)のみとしたのはなぜですか?

主な理由は2つあります。ひとつめは 1.0 の完成と同時に,ドラッグ・アンド・ドロップ UI デザイナの製作を計画していたためです。JavaScript への移行によってこれが可能になるのです。実際に UIデザイナに必要なコア・ライブラリは作業が完了して,SproutCore 1.0 のコードにすでに含まれています。あとはデザイナアプリケーション自体の完成が必要です。ふたつめはさらに重要な,パフォーマンスの問題です。プログラムを JavaScript のみのシンプルなものとして,HTMLとCSSをすべて SproutCore で扱うようにしておけば,アプリケーションをより高速にするトリックを実装可能であることが明らかになったのです。 これは IE上でも有効です。SproutCore のビューレイヤ全体は旧バージョン(これも結構早かったのですが)に比べて10倍ほど高速になりました。また副次的効果として,2つのプログラム言語でものごとを考える必要がなくなりました。言語がたったひとつ JavaScript のみであることが,開発をとても容易なものにしています。

Javaサーバからのデータ取得にデータストアAPIを利用できますか? RDBMS(MySQL,Oracleなど)についてはどうでしょうか?

バックエンドには希望するものなら何でも利用できます。実際のところ Todos Tutorial (http://wiki.sproutcore.com/Todos%C2%A0Intro) では実行時に,現時点では3つの異なるサーバ技術を選択できるようになっています。今のところ Java はこのリストに入っていませんが,そのための作業を行っている人はいると思います。SproutCore アプリケーションがシンプルな HTML/JS/CSS でできているというのは,とてもクールなことです。バックエンドサーバ技術として何を使用しても問題ありません。SproutCore アプリケーションがそれらとの通信にAjaxを使用しているからです。

他のビューコンテント(ビデオ,Flashコンテント,オーディオ) の組み込みは可能でしょうか?

もちろん! 例えば Safari 4 でこのビデオデモ(http://demo.sproutcore.com/video/)を見てください。[このデモは HTML5 ビデオタグを使用しています] 私たちは SproutCore 1.0 で Prototype への依存性を削除して,SproutCore を JS-library 非依存としました。これはつまり jQuery,ExtJS,YUI,あるいは Prototype で記述したコードを SproutCore アプリケーションに組み込むことができる,ということです。

SproutCore 1.1 のリリース時期はロードマップに設定されていますか?

まだです。私たちは現在,SproutCore 1.0 を最高のものに仕上げることに集中しています。1.0 では特定の会社が主要なコントリビューションを数多く作成しましたが,1.1 以降ではこれと違って,コミュニティの役割がより大きくなることでしょう。それがサイト上で,より公開された形で行われることを私は期待しています。

 

ブラウザだけに依存するWebアプリケーションの構築において,SproutCore は興味深い候補のひとつである。しかし Google の GWTCappuccino など,調査する価値のある選択肢が他にもある。

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
BT