1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

社内アプリの自動生成に挑戦(概要)

Last updated at Posted at 2022-04-30

powerAppやkintone、AppSheetなどを使ってみましたが、今までのエクセル置き換えなどの需要にはすぐに役立ちます。
ただ、ある程度やっていくと急に覚えることが増えるし、バグが無いようにするには結局のところアプリ開発とそれほど変わらん壁が待ち構えている気がします。

ノーコード、ローコードの利点としてはエクセルの行列やセル設計をする程度の手軽さでアプリが作れる。これを踏襲しながらアプリを自動生成、テストコードも自動生成してしまい、そこから込み入った機能は作り込んでいくというアプローチに挑戦しました。

・OpenAPIを中心にデータ周りを整える
・DBやサーバーはMicrosoft製品中心で作成
・クライアントはvue.jsを利用

製品的には
1.StoplightStudioにてOpenAPIをUIで作成
2.DB周りはOpenAPIを読み込んでからコードの自動生成
3.クライアントはAxiosのインターフェースをOpenAPIから自動生成

自動生成するアプリはVisualStudio2022、C#(.net6.0)の最新環境にて作成

1に関しては他の記事が詳しいですし、それほど問題はないはず。
2が情報が少なくて。特にコードを自動で書いてくれるSwagger-codegenやOpenAPI-Generatorはテンプレートの修正程度は出来るのですが、内部でmustacheを利用していて型の変更など複雑なことをしようとすると出来なくなります。
Nswag-codegeneratorも使ってみましたし、C#なのでコードも追っかけてみましたが複雑すぎるアーキテクチャとOpenAPIのセキュリティ絡みの部分は自動生成してくれないので諦めました。

https://github.com/microsoft/OpenAPI.NET
を利用してOpenAPIコードをDocumentとして読み込み、こちらを利用してテンプレートファイルから自動生成していきます。
Stoplightなどで生成したOpenAPIファイルを読み込むだけで、C#からは手軽に使えます。

テンプレートエンジンはFluid.coreを利用します。
https://github.com/sebastienros/fluid
[改定]
https://github.com/dotliquid/dotliquid
テンプレートエンジンはdotliquidを利用。Fluid.coreは最新の開発がされていますが、ドキュメントが少なくて困るため。
ハマりました
https://qiita.com/yukihiro-hyakuta/items/f61e0264faee507d8962

テンプレートエンジンからasp.net core WebAPIなどを自動生成させてしまいます。

クライアントに関してはMicrosoftがAutorestというTypescriptクライアントを生成してくれるものがあるのでこちらを利用します。
https://github.com/Azure/autorest

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?