ソースコード
GitHub:https://github.com/tills-jp/halu
概要
Haluは、業務システム向けのWebアプリケーションフレームワークです。
DOA(データ中心アプローチ)を前提とし、画面はJSON定義と標準画面タイプの組み合わせで構成されます。
クライアントサイドはJavaScript(jQuery+Bootstrap 5)、サーバーサイドはPython(Starlette/ASGI)で実装しています。
公開リポジトリには次を同梱しています。
・フレームワーク本体
・サンプルアプリ「Sample」と、要件定義からテスト仕様書までの設計書一式
特徴
軽量な非同期サーバー
Webサーバーはuvicorn+Starlette(ASGI)で、静的ファイルの配信とルーティングを担います。
画面リクエストはmsgpack-RPCでアプリケーションサーバーへ渡します。
帳票とバッチも同じ方式で、それぞれ専用のサーバーが処理します。
・Starlette:https://starlette.dev/
MVCアーキテクチャの導入
クライアントサイドとサーバーサイドの両方をMVCで構成します。
各層の責務は次のとおり固定されています。
| 層 | Controller | Model | View |
|---|---|---|---|
| クライアントサイド (JavaScript) | イベント処理・画面遷移 | 画面データ(Dataset)の保持とサーバー通信 | DOMへの反映 |
| サーバーサイド (Python) | リクエスト加工・業務ルールチェック | SQL実行の前後処理 | レスポンス加工 |
定型のファイル構成
すべての画面が同一のファイル構成を取ります。ファイル名で役割が決まるため、どこに何を記述するかが一意に定まります。
◇データ定義は4つのJSONに集約
dataset(項目構造)・validation(入力チェック)・tran(リクエスト/レスポンス構造)・sql(SQL)の4つのJSONにデータ定義を集約し、画面とDBの間の項目移送は、この定義に従ってフレームワークが行います。
◇画面の仕様はAppspecに集約
AppspecはMVCの上位に位置し、Model/View/Controllerはこの定義に従って動作します。
画面タイプによる差分実装
画面は標準画面タイプのいずれかを選んで作成します。
タイプごとの既定処理はMixinとして実装されており、画面側はそれを組み込み、差分だけを記述します。
ログイン画面とメニュー画面には専用の既定処理が用意されています。
画面タイプの詳細は「HaluProject詳細>Html>js」を参照してください。
Haluの構成
Haluはクライアントサイドとサーバーサイドの2層で構成されます。
Webサーバーの手前には、リバースプロキシとしてNginxを配置できます。

著作権とライセンス
HaluはMITライセンスのフレームワークです。
著作権は株式会社TILLSに帰属します。
