BananaはRFIDやICタグ、その他のセンシングデバイスから取得したデータを加工&蓄積するシステムを容易に構築するためのフレームワークです。 Bananaを用いることでネットワーク越しのデータ転送やデータの保存をアプリケーション毎に作成する必要がなくなるほか、 データに対する処理の追加や変更が簡単に実現でき、開発期間の短縮、品質の向上を可能にします。
Bananaはデータを溜め込むキューと、そこに溜まったデータを処理するアクションから構成されます。 アクションは処理済のデータを別のキューに登録することで次々とデータに対する処理が実行されていき、全体として一つのサービスを実現します。 前後の処理間の依存関係を出来るだけ排除することで、サービスの規模が拡大しても一つ一つの処理の複雑さは一定に抑えることが可能です。
現実世界のイメージとしては病院の診察券入れや待合室をキュー、受付や診察をアクションに例えることが出来ます。 各医療従事者は自分の仕事に専念していながら、全体として医療という一つのサービスを提供しています。
実際の利用シーンでは、端末で取得したデータを署名/暗号化を施し、ネットワーク越しにサーバに転送、サーバ側では受信したデータを復号/検証し、データベースに保存することが考えられます。 Bananaを用いたシステム構築では、これらの署名、暗号化、転送、復号、検証、保存といったデータに対する処理をアクションとして実装します。
ネットワーク転送、データベースへの保存など、多くのシステムで共通に利用できるアクションがはじめから用意されているため、開発コストを削減することが出来ます。
Bananaを用いると自然に処理の追加、変更、削除に強い設計になり、後から機能の変更や付加が可能になります。
MangoはSuica/PASMO/オサイフケータイを利用した入退室管理システムをターゲットとして、Bananaをベースに開発したカード読み取り、データ転送ミドルウェアです。 Mangoを使用すると、アプリケーションはカードの読み取りやデータ転送といった煩雑な処理を記述する必要がなくなり、 開発者はアプリケーションの中心機能に集中することが出来ます。