Aloneはモジュール構造をとっており、以下の主要な4つの機能モジュールがあります。
それぞれのモジュールが他に過度に依存しないよう配慮して設計されています。
ウェブサーバのCGIインタフェースを使って、ウェブアプリケーションの作成をサポートします。 機器の設定や状態表示などを、ウェブブラウザ経由で表示、設定を行う場合を想定し、開発しました。 ウェブアプリケーションフレームワークとしての機能は、一通りそろっています。
ウェブブラウザにリアルタイムでグラフ(チャート)を表示する機能です。
SVGを使っていますので、拡大しても画面があれず、見栄えの良いグラフを得ることが出来ます。
また、SVG画像を保存して別ソフト(visio等)で活用することも可能です。
リレーショナルデータベース(RDB)のwrapper機能です。SQLite, PostgreSQL, MySQLの3種類のRDBに対し、ほぼ同じAPIでアクセスすることが可能です。ここは下位ライブラリして各データベースへの接続ライブラリを必要とします。
(注意)この機能は、RDBを抽象化しアプリケーションから独立化させることを目指しているわけでは「ありません」。このモジュールが目指しているのは、SQLの生成を助け、安全にデータを保存/取り出しできることで、プログラミングを楽にすることです。
また、このWrapperの上位レイヤーで動作するデータ永続化機構も実装しており、Data Persistと称しています。
Data Persistでは、実際のデータ保存先としてRDBの他に単純テキストやシェルスクリプト形式のモジュールを実装しています。
特にシェルスクリプト形式は、作成・編集したファイルをシステム起動時などに別なシェルスクリプトからそのまま読み込ませることができるので、システム設定ファイル編集の仕組み作りに大変重宝します。
# シェルスクリプト形式の保存ファイル例 ip="192.168.1.1" netmask="255.255.255.0" defaultrouter="192.168.1.254"
基本的には、常駐して外部からのリクエストを受け付けるサーバー(デーモン)を作る時のフレームワークです。
また、クライアントとしての機能も備えており、同サーバーと連携して動作するシステムを実装することができます。
イベントドリブンで動作します。ユーザープログラムはイベントハンドラとして記述し、フレームワークがそれを呼び出します。イベントハンドラは、同期的または非同期的に呼び出されます。
ステートマシンを直接サポートします。
Rubyで制御プログラムを記述する場合、ワーカーモジュールを利用すると制御ロジック以外の雑多な処理をフレームワークに任せられるので、開発のスピードアップに有効です。