hifiveは、HTML5で記述されたWebクライアント開発向けオープンソースフレームワークである。Backbone.jsやKnockout等最近多く出てきているJavaScript向けMV*フレームワークの一種であり、コードにMVC型の構造を与え、多人数で並列開発を行う際の記述の統一・ビュー/ロジックの分離・メンテナンス性の向上などを可能にする。
[アーキテクチャ図] |
ビューからのイベント処理を受け持つコントローラは階層的に定義できるようになっており、コードは機能のまとまりごとに分割される。この結果、共通的な機能を提供するコントローラの再利用をしやすい形にし、1つのコントローラの責務を少なくしてコードの見通しを良くすることを狙っている。また、ハンドラやメソッドにインターセプタをかける仕組みを持つので、デバッグ用にvar start = new Date;のようなコードを関数ごとに埋め込むことなく実行時間を計測できる。
モデル層では、事前にスキーマを定義し、それに存在しないプロパティに値をセットしようとするとエラーを発生させるようになっている。型のないJavaScriptでデータを扱う際、特に保守・変更時の代入ミス等の軽減を考えている。
またhifiveは、最近のUIフレームワークに多く見られる、データバインド機構を持つ。これを使うと、モデルの変更を自動的にビューに反映させることができ、画面操作コードの削減につながる。バインド用のテンプレートはコメントとしてHTML中に埋め込んでおくことで、HTMLファイルにビュー記述をまとめられる。
現時点で、hifiveはボタンなどの基本的なUI部品や特定の見た目を作るためのスタイルシートなどは提供していない。したがって、UIを簡易に作るにはTwitter Bootstrap、jQuery UI、jQuery Mobileなど他のライブラリを併用することになるだろう。
なお、フレームワークが依存するライブラリはjQueryとビューテンプレートエンジンのEJS(hifive用に一部改変したもの)のみで、必要な機能だけを含む「カスタムビルド」を行うことでライブラリのファイルサイズを小さくする仕組みを持つ。
フレームワーク以外では、JSLintプラグインなどいくつかのEclipse用プラグインを用意している。JSLintプラグインはJSHintにも対応するので、ユーザーは好みの静的検査エンジンを使用して、Eclipse上でJavaScriptコードをチェックできる。
今後のバージョンでは、サーバとのデータ同期機構やプロトタイプ画面作成を高速化するWYSIWYGエディタなどの提供を計画しているようだ。