はじめに
Nijoは、エンタープライズアプリケーション(業務アプリケーション、業務システム)のスクラッチ開発を効率的に行うためのコード自動生成ツールです。 データ構造を定義したスキーマを中心とし、堅牢なアプリケーションの土台を自動生成します。
とにかく動かしてみたい方へ
デモ では、ローカル環境でデモサイトを動作させ、Nijoを実際に体験するためのセットアップ手順を説明しています。
特徴
業務アプリケーション開発において最も困難なのは、アプリケーション全体で複雑なデータ構造と業務ルールの整合性を保ち続けること、また関係者間で各データの意味や役割の認識を合わせ続けることです。 Nijoは、 「モデル (Model)」 という概念を用いてそのアプリケーションのスキーマを定義し、専用のGUIエディタで可視化することで、この課題の解決をサポートします。
1. 可視化による設計の共有
専用のGUIエディタ (nijo serve) を提供しています。
複雑なデータ構造やリレーションをER図のようなグラフで可視化することで、エンジニア間での仕様確認や認識合わせをスムーズに行えます。
「このデータが消えたら、関連するこのデータはどうなる?」「この画面で検索されるデータの構造は?」といったシステムの挙動を、コードを書く前に視覚的に共有し、実装方針の合意形成を行えます。
編集データは nijo.xml というXMLファイルに保存され、これが設計ドキュメントであると同時にコード生成の元データになります。

2. スキーマ駆動のモデリング
Nijoでは、「モデル」という単位でデータを捉えます。 モデルは、その種類に応じて、どのようなソースコードが自動生成されるかが変わります。 代表的なモデルの種類は以下3つです。
- データモデル(上の画像のオレンジ色の図形): RDBMSのテーブル定義と近いですが、単なるテーブル定義ではなく、同一トランザクションで更新されるべき複数のテーブルを1つの塊と捉えます。データモデルからは C# で一般的な O/R マッパーである Entity Framework Core の定義や、必須チェック/桁数チェックなど基本的な入力検証などのコードが生成されます。
- クエリモデル(上の画像の緑色の図形): エンドユーザーが検索・一覧表示する粒度でモデルを定義します。クエリモデルからは、検索条件オブジェクト、検索結果オブジェクト、動的WHERE句付加、ORDERBY句、ページングなどのコードが自動生成されます。
- コマンドモデル(上の画像の青色の図形): 処理。画面初期表示処理、更新処理、ログイン、帳票出力など、エンドユーザーやスケジューラが起点となり、Webクライアントとサーバーが協働して実現する必要のあるものがこれにあたります。
この厳格なモデリングにより、データの不整合を防ぎ、保守性の高いシステム設計を強制します。
3. フルスタックかつ型安全なコード生成
定義されたモデルから、以下のレイヤーのコードを一気通貫で生成します。
- データアクセス層: Entity Framework Core によるテーブル定義
- ビジネスロジック層: モデルごとのC#クラス定義, CRUD処理
- プレゼンテーション層: TypeScript 型定義, ASP.NET Core Web API, それと対応するJavaScript側のAPIクライアント
フロントエンドからバックエンド、データベースまで型定義が同期されるため、変更に強い開発が可能です。
V字モデルにおける位置づけ
Nijoの中心は、nijo.xml によるスキーマ定義です。
これは 開発チームがアプリケーション全体のデータ構造を共有し、そのまま実装につなげるための動く内部設計図 にあたります。
V字モデルで見ると、Nijoは以下の工程に役立てることができます。
- 内部設計: Nijo でデータ構造、検索、入出力の骨格を定義する
- 実装: 定型コードは Nijo による生成に寄せ、案件固有のロジックやUIは手動実装
- テスト: 自動生成部分のテストはほどほどに、手動実装部分のテストにリソースを集中させる
詳細な役割分担は 開発工程との統合 を参照してください。
技術スタック
Nijoが生成するアプリケーションは、以下の技術スタックを採用しています。
- データベース: 任意のRDBMS (EF Coreがサポートするもの) / デフォルトテンプレートはSQLite
- バックエンド: .NET 9 以上 / ASP.NET Core / Entity Framework Core
- フロントエンド: TypeScript。それ以外のJavaScript, CSS フレームワークやライブラリの採用は任意。