ここ数ヶ月、新しいJavaScriptプラットフォームが静かに議論を呼んでいる。単なる典型的なMVCフレームワーク以上のものを提供するプラットフォームだ。PlatypiはTypeScriptを使って構築されており、確かに開発者にはTypeScriptに近い印象を与えるが、独特の構成をしている。
このプラットフォームは3つのコンポーネントから成り立っている。PlatypusTS、PlatypusUI、PlatypusCLIの3つだ。PlatypusTSはJavaScriptのMVCフレームワークでTypeScriptで作られている。
このプラットフォームの面白い特徴は独自のコマンドラインツールだ。アプリケーションを構築するとき、開発者はサービスやコントローラのシェルを立ち上げるためだけにおきまりのコードを書く必要がある。PlatypusCLIは開発者にコードを書く代わりにジェネレータにコードを生成させる選択肢を提供する。例えば、以下のようにタイピングする。
platypi add service products
これによって、新しいTypeScriptファイルが正しい位置に配置される。コードには次のようなテンプレートコードが生成される。
/// <reference path="../../_references.d.ts" />
import plat = require('platypus');
import BaseService = require('../base/base.service');
class ProductsService extends BaseService {}
plat.register.injectable('products-service', ProductsService);
export = ProductsService;
開発者は、このファイルをアプリに組み込む必要があるが、プロジェクトを作成するときにコマンドラインツールを使えば、時間を節約でき、プロジェクトの形式も統一できる。
また、PlatypiはPlatypusUIという名のUIライブラリも提供する。このライブラリを使うかどうかは洗濯できるが、スタイルが定義された共通コントロールが多く含まれており、コントローラのコードへのフックもある。ウェブコンポーネントに親しんでいる開発者であれば、同じような構文を知っているだろうし、カスタムディレクティブに精通しているAngularの開発者であれば、同じようなものだと思うだろう。実際、ブラウザへのレンダリングの仕組みは似ている。例えば、ボタンの場合は下記のようになる。
<plat-button class="button-primary gs-button" plat-tap="register">Register</plat-button>
これはブラウザに下記のように描画される。
<button class="button-primary gs-button plat-button plat-gesture" plat-tap="register" plat-control="plat-button"> <span>Register</span> </button>
このボタンをタップすると、このページのビューコントローラのregister
メソッドが実行される。
他の人気のJavaScriptフレームワークとは違い、Platypiはサポート契約を提供することで、収益を得る。無料版もあるが、独立開発者向けに月額10ドルで、年間10のサポートリクエストを受け付ける。レスポンスタイムは48時間以内。これらの選択肢に加え、Platypiはコンサルティングサービスも提供し、トレーニングや設計を通じてソリューションを構築しようとする企業を支援する。
PlatypiとAngularの違いを尋ねられたCEOであるMatt Landers氏は"Angularはサポートがありません。コミュニティの回答やホットフィックスの提供、アップグレード、ディレクションに頼る必要があります"と答えている。将来のサポート計画については、
例えば、10年使う必要がある在庫管理システムを開発する場合、この期間、サポートを頼っていただけるようにパートナーとなりたいと思っています。
このプロジェクトはApache Cordovaを使いクロスプラットフォームをサポートしている。
Platypiは、元Microsoftのエンジニアによって設立され、2015年3月10日にリリースされた。Landers氏によれば、サードパーティのサービスを統合しようとしたのが始まりだ。APIのドキュメントをある。また、同社のすべてのプロジェクトはGitHubで公開されている。