FAQ

なぜ作ったのか?

AndroidやiOSではUI部品や画面管理などのアプリを作る上で必要な機能をフレームワーク側が提供しています。 しかしWebフロントエンドにはそれらの機能がないので、自作するもしくは他のライブラリを色々組み合わせないといけません。 そこで「アプリ開発に必要な機能を提供すればWebフロントエンドでももっとアプリを作りやすくなるのでは?」と思ったからです。 他にも「大規模なHTML/CSSを保守性高く構造化することが難しいと感じているので、HTML/CSSを書かずにアプリを作る」 「SPAやアセット管理などを提供しパフォーマンスがよいWebアプリを作る」という理由があります。

なぜ未完成で公開したのか?

このようなコンセプトのフレームワークが世の中に受け入れられるのか?受け入れられるにはどうすればよいのか?そもそも実現可能かのか?を知りたかったからです。 そのためにコンセプトを理解してもらうだけの最小限の機能にとどめ、なるべく早く公開することにしました。 つまりフレームワーク自体の品質はまだまだということです。このようなフレームワークを個人的には「コンセプトフレームワーク」と呼んでいます。

今後のロードマップはどうなっているのか?

サンプルアプリのGitHub Clientを対象にドックフーディングを行いながら品質を向上させていきます。そのため、新しいViewの追加は直近では行う予定はありません。

学習コストは?

将来的に機能が揃ってくると他のフレームワークに比べ、高いものになると思います。 しかし比較的大きな規模のWebアプリを作る場合、現状では沢山のフレームワークやツールを組み合わせる(もしくは自作する)ことになります。 それらトータルの学習コストもかなり高いものになるので実はあまり差が出てこないのではないかと予想しています。

AppCacheやWebComponentとの関連性は?

全くありません。ただし、考え方は非常に似ています。 ViewはWebComponents CustomElement, Shadow DOM、LayoutはTemplate, Imports、AssetはAppCacheに似ています。 なのでもしかすると将来何かしら相互利用できる形になるかもしれません。

他のMV*ライブラリやaltJSとの親和性は?

現在は考慮していません。

WebViewでの利用は?

現在は考慮していません。 iOSはMobile SafariとUIWebViewが(JITを除けば)ほぼ同じなので利用できるかもしれません。 しかしAndroidはChrome for Androidを前提としているため利用することはできません。

ゲームでの利用は?

NavyJSが対象としているアプリは主にツール / ユーティリティ系のアプリです。 ゲームのような60FPSを目指すアプリには向いていません。

独自のViewは使えるのか?

現在は組み込みのViewのみの対応です。しかしサードパーティなViewを組み込める仕組みを検討しており、将来的には対応予定です。

マルチ解像度、マルチアスペクト比の対応は?

現在は固定解像度、固定アスペクト比の対応です。 タブレット除くをAndroidは16:9のアスペクト比が多くなってきています。 このため早急に対応が必要とは考えていません。しかし将来的にはマルチ解像度、マルチアスペクト比の対応も検討予定です。

データバインディングの利用は?

現在はデータバインディングに対応していません。 イベント駆動による更新チェック方式(AngularJS)、getter/setterによる変数ラップ方式(Knocout, Vue.js)のどちらの方式もモバイル上で使うにはパフォーマンスのボトルネックになりがちなので対応を見送りました。 Object.ovserveはこの問題を解決する可能性があり期待しています。

聞いてみたいことがあるんだけどどうすればいい?

@h13i32maruまで気軽に連絡ください :D