今月から開発部に配属された川野です。
自社製品のモバイル用UIを刷新する調査をひとりで細々とやっていて、そのなかで Sencha Touch について、ある程度情報がまとまったので記事にさせて頂きました。
Sencha Touch 概要
Sencha Touch は、モバイル WEB アプリを開発するための、JavaScript フレームワークです。
HTML5 と CSS3、JavaScript を駆使して、ネイティブアプリケーションっぽい見た目と操作感を、ブラウザ上で実現しようとしています。
iOS(iPhone とか iPad)と Andoroid に対応。(※正確には、WebKit 系のブラウザにのみ対応)
ExtJS で有名な Sencha が開発を行っています。Sencha Touch は無料で商用利用可能です。
どんなことができるの?
百聞は一見に如かず、ということで、、
Sencha Touch で作られた GitHub を閲覧するアプリです。
# iPad での利用を想定したものですが、PC上でも Chrome や Safari であれば利用できました。
Sencha Touch を使うことで、上記のようなネイティブアプリライクなモバイルWEBアプリを比較的簡単に開発することができます。
Sencha Touch が提供してくれる機能
- タッチイベントのハンドリング
- ネイティブアプリライクな UI コンポーネント
- オフライン機能(localstorage などを利用)のサポート
- Ajax を使った画面遷移をブラウザの履歴に残す機能
=> 具体例で言うと、Ajax の遷移が戻るボタンで戻れる - 複雑なプログラムのサポート(Sencha Touch MVC)
- ネイティブアプリに変換することも想定(PhoneGap との相性がよい)
- Ajax関連、その他いろいろ便利なユーティリティ
などなど
列挙されても、何のことかよく分からないと思いますが、とにかくモバイルデバイスに最適化された WEB アプリを開発するために必要なものが一通り揃っている、ということで。。
# jQuery Mobile との違い
モバイル用の JavaScript ライブラリで語られることの多い jQuery Mobile は、モバイル用の WEB「ページ」作成に適しているのに対し、Sencha Touch は、モバイル用の WEB「アプリケーション」作成に適している印象です。
Sencha Touch を利用したプログラミング
いわゆる、「コンポーネントをレゴブロックのように積み上げていく」スタイルです。
ライブラリのコアは ExtJS と同じものを使っているので、ExtJS を使ったことのある人には取っ付きやすいと思います。コンポーネントにコンフィグオブジェクトを定義して、振る舞いを指定していきます。
コンポーネントが HTML を出力して UI を構築していくため、HTML ファイルに直接 タグを記述することはありません。
Sencha Touch 独自の MVC 構成でアプリケーションを実装していきます。
ざっくり言うと、
- Model では、アプリケーション内で使うモデルの定義
- View では、UIコンポーネントの定義と、イベントハンドリング => Controller へのディスパッチ
- Controller では、ディスパッチされたイベントの具体的な処理
を記述していく感じです。
Sencha Touch MVC の詳細は、以下のページで説明されています。
その他周辺技術
Sencha Touch では、効率よく高品質なアプリを開発するために、比較的新しい技術を採用しています。
SASS、Compass
CSS の作成に、「SASS」と「Compass」を利用しています。SASS は CSS を生成するためのメタ言語、Compassは SASS を便利に使うためのフレームワークライブラリです。
SASS、Compass を使うことで、Sencha Touch が提供してくれているテーマを、簡単にカスタマイズすることができます。
Jasmine
JavaScript のテストフレームワークに「Jasmine」を利用しています。Jasmine は TDD(テスト駆動開発)の概念に基づいて設計されています。
その他、JavaScript の圧縮には、YUI Compressor が使われており、「JsBuilder」というビルドツールがフレームワークに同梱されています。
まとめ
Sencha Touch を使う魅力は、WEBアプリの開発効率の良さ・クロスプラットフォーム性を維持しつつ、ネイティブアプリのようなユーザーエクスペリエンスを提供できる点にあると思います。
また、Sencha Touch + PhoneGap の組み合わせは、モバイルアプリ(ネイティブ)のプロトタイプ開発にも適しているような気がしました。
まだまだ日本語の情報は少ないですが、将来有望なフレームワークだと思います。
最近のコメント