オンラインストレージとコンテントプラットフォームのBoxが,フロントエンドJavaScriptフレームワークを新たにオープンソースにした。T3と名付けられたこのフレームワークの目標は,大規模アプリケーションをもっと小さな,独立したコード片に分解して,この種のアプリが遭遇する問題を解決することにある。
T3を紹介する記事の中で,BoxのプリンシパルアーキテクトのNicholas Zakas氏は,開発の目的について,巨大なコードベースで複数の開発者が作業する時にチームが直面した,内部的な問題を解決するためであったことを明かしている。“私たちが望みを叶えてくれる選択肢が他になかったのです”,Zakas氏はInfoQとのインタビューで語っている。
既存のソリューションのほとんどは,MVCベースのアーキテクチャの方向を向いていますが, 私たちは違うものが欲しかったのです。他にもいくつかの概念はありますが,既存のものはどれも十分でなかったので,T3を開発することにしました。
コンポーネントには次の3つの種類がある。
- サービス
- モジュール
- ビヘイビア
ToDo Listのサンプルでは,プロジェクトはコードを提示するだけでなく,コードの各部分が何を行うのかも説明されている。例えば,アイテムの状態を管理するコードの説明では,次のように表記されている。
各モジュールはすべて独立していて,それぞれがtodo状態を管理するサービスと通信を行います。todo-dbサービスがアプリのライフサイクル全体に対して,タスクの追加,削除,生成を管理します。
T3のサービスの概念は,Angularのものなどと類似している。サービスの登録にはApplication
を使用する。
Application.addService('router', function(application) {
return {
route: function(url, state) {
history.pushState(state, '', url);
}
};
});
依存性注入を利用するAngularと違い,T3のサービスには,Application
グローバルインスタンス上の要求を通じてアクセスする。
var router = Application.getService('router');
router.route('/home', {});
Reactと同じくT3は,他のフレームワークの利用を妨げることはない。“BackboneやReact,あるいは他のフレームワークを,T3に加えて使用する妨げになるものは何もありません。T3は個々のコードを整理するのに役立つだけでなく,技術陣が必要とする,クライアント側スタック全体の把握を可能にしてくれます。” とZakas氏は述べている。
Hacker Newsの議論に参加した開発者たちは,チームの成果を称賛しながらも,T3のコンポーネントをEmberやAngular,Meteorのものと比較している。ユーザのDigitalSea氏はT3について,何も目新しいものがないことを不満に感じている。
Boxが新たに,JavaScriptフレームワークを開発しなければならなかった理由が理解できません。一体何が不足なのでしょう?フロントエンド開発者として興味はありますが,他のフレームワークにはないものをT3が提供してくれているとは思えないのです。
Zakas氏はT3が,特定のタイプのアプリに適している,と述べている。“MVCアーキテクチャやシングルページアプリなど,他のアプローチでも動作は可能ですが,プログレッシブな拡張においては,間違いなくメリットがあります。” BoxではT3を,デスクトップアプリケーションとモバイルWebアプリケーションの両方で利用している。
T3はGitHubで公開されている。