管理画面の生成におけるopenapiとJDLなどの考察
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
* 前提条件 [#q5fb98a5]
OpenAPIの定義がある状況で、管理画面を早く正確に作ることが...
管理画面は、ユーザが使うものではないから、デザインはそこ...
画面までの自動生成であれば、データベースのテーブル作成も...
しかし、DBは既存であり、しかもそこには、API経由でしかアク...
まずは半自動でもいいので考える。作業量が減って正確であれ...
** 一覧表示系の画面を効率よく作成するパターンについて考え...
アイデアとしては、APIでGET系のレスポンスの構造を解析し、...
JHipsterで生成されたコードの修正箇所は、まずDB関係のコー...
そのDBにアクセスしに行っている箇所を差し替えなくてはなら...
差し替える用のコードは、openapi-generatorでクライアント用...
ここまでが自動生成のほうが早くて、自動化できそうな箇所で...
そこまで行ったならば、こんどは、openapi-generatorで生成し...
この手法は、おそらく毎回似たような対応で済むだろうから、...
** 新規作成・更新系の画面は、どうだろうか?これは、openap...
jhipsterで生成したコードのうち、saveメソッドでDBを更新...
差し替えるものは、openapi-generatorで生成したクライアント...
ここまでが自動生成したコードであり、あとの作業としては、
openapi-generatorで生成したコードが外部のAPIに更新しに行...
** openapiからjdlを生成するツールの要件を考える [#qb2c1e1c]
open-apiを解析しjdlを生成するというのを手作業でやると、ap...
詰んでしまう。なので何らかのツールがあったらよいというこ...
まず、apiがgetメソッドの場合は、レスポンスを解析してJDLを...
次にapiがpost、putメソッドの場合は、クエリパラメータを解...
** エンティティが重複してしまう課題 [#u0b51ecf]
APIの定義が、ER図のように正規化されていないのが原因で、
例えばテーブルというかエンティティがAPI1とAPI2でかぶって...
** JDLから生成されるのはCRUDのうち1つのメソッドしか対応...
generatorから生成されるのはCRUDのうち1つのメソッドという...
提供されているAPIがきれいにCRUDに対応していることは、無い...
ただし、対応してそうな場合は、極力対応させたほうがいいと...
*** 解決案 [#l8d28dd7]
生成する画面のコードは、JHipsterのデフォルトではCRUDに対...
それぞれ、GET用、POST用、DELETE用に分けてテンプレートを用...
生成されたコードを必要に応じてコピーするようにしてみては...
できれば、JDLを拡張し、各エンティティにメソッドの種別をア...
改造が難しいのならば、全メソッド用のコードをJHipsterが行...
*** openapi-generatorの調査対象 [#wa603dc9]
openapiのyamlをパースした後、パラメータについてのコードを...
** 懸念 [#t961234b]
このやり方で進めていっても、結局はswaggerで出力される画面...
結局JHipsterは、データベースのテーブルのCRUD操作ができる...
** 仮説 [#n466ffd0]
DBに直接アクセスできないプロジェクトがあるという前提です...
APIで定義されたGETメソッドをJDLに置き換えた世界では履歴テ...
理由は、リモートのDBにアクセスできないからといって、ロー...
これまで、ログファイルに何でも書き込んで置けば、あとでAI...
この流れを生むには、これまで外部のAPIを直接たたきに行く仕...
** ER図と、想定ER図 [#gf5cb1f3]
説明のため「想定ER図」の言葉の定義をする。実際のER図...
実際のER図に近いものができると思うが、openapiとの親和性...
ERは、正規化されすぎている。なので実際にユーザが使う場合...
もしopenapiからER図をだしたい場合、さらに、少ない工数で、...
とりあえず、無邪気に案を出してみる。
たとえば、ER図はER図として、出力しておいて、APIから推定さ...
APIを動かしたらAPIから推定されるER図には、適切に結果を格...
あとは、そのタイミングでER図から生成したテーブルに書き込...
なぜER図に書き込みたいのかという説明がまだであった。
ここでの前提は、外部のDBには接続できないものの、ER図は公...
ER図が公開されていない場合は、推定するER図に書き込むだけ...
ER図に書き込みたい理由としては、データが正規化されている...
ただし、初期段階ではテーブルを開いても値は何もはいってい...
** 既存のER図上のリレーションと、テーブルとAPIとのリレー...
既存のERとはいっても、実際の外部のDBには直接接続できない...
そこに、対応するAPIはなんであるのか、記述できるDSLが必要...
*** openapi上にER図の情報を追記する案 [#x847a60f]
openapiのyamlにはdescriptionというコメントを書く比較的自...
そこに対応するERのカラムの情報を、特定のルールを決めて...
できれば、別途定義するカラムを増やしてほしい。おそらくD...
ただし、この場合もとのopenapiの定義書に変更があった場合、...
*** 画面項目定義書からなんらかのパース可能な定義書を生成...
openapi定義書を修正しなくていいので、openapi定義書が更新...
openapiの変更の差分を把握できるようにしておく必要があると...
そういえば、画面項目定義書ってopenapiのような定義書ってあ...
*** 画面項目定義書とは [#q4854a78]
ここでいう画面項目定義書の役割について、再考してみる。
何を決めているのかというと、ありがちなのは、以下のような...
- テキストボックスとかの種類
- 必須かどうか
テキストボックスであれば、
- 表示桁数
- 表示位置
- 入力桁数
しかし、これだけだと、しょぼい画面になる。
デザインツールを使った例を以下にリンクをはるが、リンク先...
https://youtu.be/gVl-wuldf4E
** デザインすることを否定してみる [#h873edc2]
いや、そうではない。デザインしたいわけではない。たしかに...
なので、デザインはしない。するとしても1つだけデザインし...
** 初期の目標 [#v081ea4b]
まずは、openapiのGETメソッドだけを対象として、レスポンス...
JDL作成は、ツール化を試みる。
次にJDLにGETメソッドであることを認識させるアノテーション...
JHIPSTERで生成したコードから必要な箇所だけ抜粋するスクリ...
JHipsterのテンプレートを改造する
*** 作業の進め方 [#q0212bc1]
それぞれのgithubからforkし、改造ポイントがわかるようにす...
終了行:
* 前提条件 [#q5fb98a5]
OpenAPIの定義がある状況で、管理画面を早く正確に作ることが...
管理画面は、ユーザが使うものではないから、デザインはそこ...
画面までの自動生成であれば、データベースのテーブル作成も...
しかし、DBは既存であり、しかもそこには、API経由でしかアク...
まずは半自動でもいいので考える。作業量が減って正確であれ...
** 一覧表示系の画面を効率よく作成するパターンについて考え...
アイデアとしては、APIでGET系のレスポンスの構造を解析し、...
JHipsterで生成されたコードの修正箇所は、まずDB関係のコー...
そのDBにアクセスしに行っている箇所を差し替えなくてはなら...
差し替える用のコードは、openapi-generatorでクライアント用...
ここまでが自動生成のほうが早くて、自動化できそうな箇所で...
そこまで行ったならば、こんどは、openapi-generatorで生成し...
この手法は、おそらく毎回似たような対応で済むだろうから、...
** 新規作成・更新系の画面は、どうだろうか?これは、openap...
jhipsterで生成したコードのうち、saveメソッドでDBを更新...
差し替えるものは、openapi-generatorで生成したクライアント...
ここまでが自動生成したコードであり、あとの作業としては、
openapi-generatorで生成したコードが外部のAPIに更新しに行...
** openapiからjdlを生成するツールの要件を考える [#qb2c1e1c]
open-apiを解析しjdlを生成するというのを手作業でやると、ap...
詰んでしまう。なので何らかのツールがあったらよいというこ...
まず、apiがgetメソッドの場合は、レスポンスを解析してJDLを...
次にapiがpost、putメソッドの場合は、クエリパラメータを解...
** エンティティが重複してしまう課題 [#u0b51ecf]
APIの定義が、ER図のように正規化されていないのが原因で、
例えばテーブルというかエンティティがAPI1とAPI2でかぶって...
** JDLから生成されるのはCRUDのうち1つのメソッドしか対応...
generatorから生成されるのはCRUDのうち1つのメソッドという...
提供されているAPIがきれいにCRUDに対応していることは、無い...
ただし、対応してそうな場合は、極力対応させたほうがいいと...
*** 解決案 [#l8d28dd7]
生成する画面のコードは、JHipsterのデフォルトではCRUDに対...
それぞれ、GET用、POST用、DELETE用に分けてテンプレートを用...
生成されたコードを必要に応じてコピーするようにしてみては...
できれば、JDLを拡張し、各エンティティにメソッドの種別をア...
改造が難しいのならば、全メソッド用のコードをJHipsterが行...
*** openapi-generatorの調査対象 [#wa603dc9]
openapiのyamlをパースした後、パラメータについてのコードを...
** 懸念 [#t961234b]
このやり方で進めていっても、結局はswaggerで出力される画面...
結局JHipsterは、データベースのテーブルのCRUD操作ができる...
** 仮説 [#n466ffd0]
DBに直接アクセスできないプロジェクトがあるという前提です...
APIで定義されたGETメソッドをJDLに置き換えた世界では履歴テ...
理由は、リモートのDBにアクセスできないからといって、ロー...
これまで、ログファイルに何でも書き込んで置けば、あとでAI...
この流れを生むには、これまで外部のAPIを直接たたきに行く仕...
** ER図と、想定ER図 [#gf5cb1f3]
説明のため「想定ER図」の言葉の定義をする。実際のER図...
実際のER図に近いものができると思うが、openapiとの親和性...
ERは、正規化されすぎている。なので実際にユーザが使う場合...
もしopenapiからER図をだしたい場合、さらに、少ない工数で、...
とりあえず、無邪気に案を出してみる。
たとえば、ER図はER図として、出力しておいて、APIから推定さ...
APIを動かしたらAPIから推定されるER図には、適切に結果を格...
あとは、そのタイミングでER図から生成したテーブルに書き込...
なぜER図に書き込みたいのかという説明がまだであった。
ここでの前提は、外部のDBには接続できないものの、ER図は公...
ER図が公開されていない場合は、推定するER図に書き込むだけ...
ER図に書き込みたい理由としては、データが正規化されている...
ただし、初期段階ではテーブルを開いても値は何もはいってい...
** 既存のER図上のリレーションと、テーブルとAPIとのリレー...
既存のERとはいっても、実際の外部のDBには直接接続できない...
そこに、対応するAPIはなんであるのか、記述できるDSLが必要...
*** openapi上にER図の情報を追記する案 [#x847a60f]
openapiのyamlにはdescriptionというコメントを書く比較的自...
そこに対応するERのカラムの情報を、特定のルールを決めて...
できれば、別途定義するカラムを増やしてほしい。おそらくD...
ただし、この場合もとのopenapiの定義書に変更があった場合、...
*** 画面項目定義書からなんらかのパース可能な定義書を生成...
openapi定義書を修正しなくていいので、openapi定義書が更新...
openapiの変更の差分を把握できるようにしておく必要があると...
そういえば、画面項目定義書ってopenapiのような定義書ってあ...
*** 画面項目定義書とは [#q4854a78]
ここでいう画面項目定義書の役割について、再考してみる。
何を決めているのかというと、ありがちなのは、以下のような...
- テキストボックスとかの種類
- 必須かどうか
テキストボックスであれば、
- 表示桁数
- 表示位置
- 入力桁数
しかし、これだけだと、しょぼい画面になる。
デザインツールを使った例を以下にリンクをはるが、リンク先...
https://youtu.be/gVl-wuldf4E
** デザインすることを否定してみる [#h873edc2]
いや、そうではない。デザインしたいわけではない。たしかに...
なので、デザインはしない。するとしても1つだけデザインし...
** 初期の目標 [#v081ea4b]
まずは、openapiのGETメソッドだけを対象として、レスポンス...
JDL作成は、ツール化を試みる。
次にJDLにGETメソッドであることを認識させるアノテーション...
JHIPSTERで生成したコードから必要な箇所だけ抜粋するスクリ...
JHipsterのテンプレートを改造する
*** 作業の進め方 [#q0212bc1]
それぞれのgithubからforkし、改造ポイントがわかるようにす...
ページ名: