概念データモデルから一般的なエンタープライズ系業務アプリケーションのひな形を自動生成するツール。
目次 Table of contents
以下のツールが使えるようにしておいてください。
dotnet
(バージョン 8.0.102 以上) : Microsoftの公式サイト等からインストールしてください。npm
(バージョン 9.6.3 以上) : Node.jsの公式サイト等からインストールしてください。ターミナルからコマンドを実行し、使用可能ならOKです。以下の例ではそれぞれ使用可能ならバージョンが表示されます
dotnet --version
npm --version
このリポジトリのReleasesページから実行可能なバイナリファイルをダウンロードして解凍してください。
以下の例では C:\your-installed-directory
に解凍したものとして説明を進めます。
ターミナルやコマンドプロンプトから以下を実行してください。アプリケーションが作成されます。
C:\your-installed-directory\nijo create MyProject
ターミナルやコマンドプロンプトから以下を実行してください。
cd MyProject
C:\your-installed-directory\nijo debug
https://localhost:5713
でアクセスできます。.sqlite3
ファイルに保存されています。データの閲覧方法はSQLite公式サイト等を参照してください。nijo.xml
や、MyProjectディレクトリ内のソースコードを編集して、あなたのアプリケーションをカスタマイズしてください。以上
このツールでアプリケーションを生成する手順と、どういったパーツが生成されるかを示します。
前述の Getting Started を参照し、 nijo
コマンドラインツールを使用できるようにしてください。
作成されたディレクトリの中に nijo.xml
という名前のファイルがあります。これをテキストエディタで編集し、あなたのアプリケーションで取り扱うデータの構造を定義してください。
具体的・詳細な指定方法は 自動テストのXML を参照してください。 以下では基本的な考え方のみを説明します。
登録・更新・削除されるデータのまとまりごとにデータ構造を定義してください。 なおこのプロジェクトでは、このデータのまとまりを「集約(Aggregate)」と呼称しています。
そのデータ構造がもつことのできる子孫(子要素、入れ子構造)の種類には以下の3種類があります。
親1件に対する1件の入れ子データ。 具体的な設定方法はユニットテストのXML 003_Childのみ.xml を参照してください。
例:「取引先」データの構造
親1件に対する複数件の入れ子データ。 具体的な設定方法はユニットテストのXML 002_Childrenのみ.xml を参照してください。
例:「発注」データの構造
親1件に対する1件の入れ子データ、ただし異なるデータ構造をもつ複数のバリエーションから1つを選択するもの。 具体的な設定方法はユニットテストのXML 004_Variationのみ.xml を参照してください。
例:「旅費申請」データの構造
また、登録・更新・削除されるタイミングが異なる別のデータへの参照を定義することができます。
登録・更新・削除されるタイミングが異なる別のデータへの参照。 具体的な設定方法はユニットテストのXML 001_Refのみ.xml を参照してください。
例:
上記で作成したデータモデルでコード自動生成を実行し、動作確認を開始するため、ターミナルから以下のコマンドを実行してください。
cd <nijo.xmlがあるディレクトリ>
C:\your-installed-directory\nijo.exe debug
注意点
dotnet dev-certs https
を実行してみてください。cd <nijo.xmlがあるディレクトリ>
C:\your-installed-directory\nijo.exe update
__AutoGenerated
フォルダの中身は編集しないこと!
Program.cs
OverridedApplicationService.cs
src/__autoGenerated
フォルダの中身は編集しないこと!
App.tsx
dotnet-ef
によるマイグレーションが最適と思われます。
dotnet-ef
の使い方(2024-06-23記載。dotnet-efのバージョンは8.0.6)dotnet ef migrations add 0000
(0000はバージョンを表す任意の文字列)でマイグレーションを作成dotnet ef migrations script 0000
でSQL文を生成(0000は1個前のバージョンの名前)。SQLはコンソールに吐かれるので適宜ファイルに出力することこちら も併せて参照してください。
is
属性に指定できるもの
write-model-2
generate-default-read-model
を併せて指定することで、write-model-2から生成されるモジュールだけでなく、まったく同じデータ構造のread-model-2のモジュールも生成されます。read-model-2
form-label-width:(小数)
form-depth:(整数)
readonly
enum
command
is="step:(整数)"
属性の要素を定義すると、ダイアログのコンポーネントなどのUIが、1ステップごとに少しずつ項目を入力していくウィザード画面になります。stepを定義する場合は直下の要素を全てstepにする必要があります。DisplayName
DbName
Latin
is
属性に指定できるもの
child
children
variation
is="variation-item:(整数)"
のみです。ref-to:参照先の集約
ref-to:親要素/子要素/孫要素
のようにスラッシュで区切ってください。word
, int
, date
など)is="enum"
で指定されたルート要素を列挙体として使用することもできますis
属性には、以下を任意で指定することができます。
key
name
wide
hidden
single-view-ui:(任意の物理名)
, search-condition-ui:(任意の物理名)
width:(z + 整数)
または width:(h + 整数)
combo
または radio
is="variation"
の要素ではなく is="variation-item:1 radio"
のように最初の要素に指定する必要あり。将来的に修正予定。DisplayName
, DbName
, Latin
Excelやスプレッドシートに貼り付けてスキーマ定義全体を俯瞰してください。
nijo.exe dump
nijo.xmlの各集約の定義をグラフ形式で概観するのに使ってください。
nijo.exe dump --mermaid
.editorconfig
が有効化される拡張機能をインストールすること"dotnet.server.useOmnisharp": true
を設定することこのプロジェクトには、ユニットテストに用いている データパターンがいくつか存在します (どのようなパターンがあるかは こちら を参照してください)。 それらのパターンを実際に動作させ、どのようなUIや処理やDBが生成されるかを細かく確認するための手順を以下に示します。
Nijo.IntegrationTest
で様々なパターンのデータ構造定義をテストしています。「コンパイルエラーチェック」という名前のテストがあるので、閲覧したいデータ構造定義のテストを実行し、生成されたプロジェクトで実物の動作を確認してください。
/自動テストで作成されたプロジェクト
ディレクトリにプロジェクトが生成されます。このプロジェクトのルートディレクトリ( nijo.xml
があるディレクトリ)でターミナルやコマンドプロンプトを開き、 nijo debug
コマンドを実行してください。
/自動テストで作成されたプロジェクト/react/vite.config.ts
で指定されています。詳細な設定方法はViteの公式を参照してください。/自動テストで作成されたプロジェクト/webapi/Properties/launchSettings.json
で指定されています。sqlite3
のファイルに格納されています。このファイルの開き方はSQLiteの公式を参照してください。/自動テストで作成されたプロジェクト/webapi/__AutoGenerated/
に展開されます。/自動テストで作成されたプロジェクト/react/src/__autoGenerated/
に展開されます。This software is released under the MIT License. see LICENSE.txt.