結局、ローコードとは
TL;DR
Django + Nuxt.js も立派なローコード開発環境だと思う。
ローコードとは
定義的なことは色々なサイトを見ていただければ良いとして、結局ノーコードとか、ローコードとかというのは相対的な話ではないかと思います。
例えば、個人的に素晴らしいと思っている(最近使っていませんが、さらに進化してますね)
Glide App
は、十分にノーコードだと思いますが、ちょっとデータ構造が複雑になってくると、データ間の結合情報をスプレッドシートに記載する必要が出てきて、プログラミングの素養なしに作れるかというと微妙かと思います。
そして、これも個人の感想ですが、最高のローコード開発ツールは MS Access だと思っていますが、ACCESSの場合、コードを書かなくてもかなりのアプリが作れ、さらにコードを書けばまあ、なんでもできるわけです(もちろん、端末にACCESSをインストールしなければならないというのが、厳しい制限になることが多いわけですが)。
で、ここに、なんとなくビジュアル要素が含まれているように感じるのですが、今回、Django + Nuxt.js の開発をやってみて(やってる途中ですが)、ビジュアル要素なしでもローコードと言えるのでは、と思って、今これを書いてます。
Django + Nuxt.js の開発
Django(今回は Django REST Framework ですが)をほぼ初めて使ってみましたが、考えることはほとんどModel 定義のみではないか、それで画面生成まで手順に従って進めていくだけ、というのにちょっと驚きました。
また、Nuxt.js についても、今回、Repository パターンというものを意識して作ってみましたが(軌道に乗るまでは泣きそうでしたが)、こちらも決まった手順でRepositoryを追加していくことでAPI連携部分ができ、コンポーネントでそれを使用するところまで流れ作業になりました。
具体的には、下記のようなメモを作っておいて、これを見ながら、コンポーネントを追加していく、という手順です。
## CouncilMember
### API
poli-link-api/polilink_api/models.py
ここでマイグレーション
docker exec -it poli-link-api /bin/bash
以下code#
python manage.py showmigrations
python manage.py makemigrations
python manage.py migrate
poli-link-api/polilink_api/admin.py
これで、Django 管理サイトに追加される
poli-link-api/polilink_api/serializer.py
poli-link-api/polilink_api/views.py
poli-link-api/polilink_api/urls.py
### CouncilMemberList
poli-link-web/poli-link/components/council/CouncilMemberList.vue
のために
poli-link-web/poli-link/types/index.ts
poli-link-web/poli-link/api/xxxRepository.ts
poli-link-web/poli-link/api/index.ts
poli-link-web/poli-link/api/createRepository.ts
poli-link-web/poli-link/compositions/useXxx.ts
poli-link-web/poli-link/compositions/index.ts
最初にmodels.pyに新しいデータ構成を追加します。
項目名を決めて、項目長を決めて、制約を決めて・・・
などは同じですから、それをテキストファイルとして書くことはコーディングのうちに入らないのではないかと思います。
確かに、どういう型があるか、などは調べないといけないので、そこは例えばプルダウンで選べたら良いかな、そのためのシートを作った方が良いかな、と思いましたが、ただ、フルスペックで対応できるシートを作ろうと思ったら複雑になるでしょう。
それよりは、テキストのコピペで作れる、というのは逆にお手軽で良いようにも思えます。
その後の、serializer.py、views.py、urls.py もコピーして名前を変えていく、というレベルですね。
この辺は、本当に機械作業的なので、何か改善策はありそうですが、言いたいことは、コーディングのうちにならないのでは、ということです。Nuxt側も同様です。
まず、types/index.ts にデータ型を定義します。
これは既に models.py で定義した内容に基づいて書くだけですね。
そしてリポジトリを作るのも、既存のファイルをコピーして名前変更、それを index と、 createRepository に追加、
リポジトリ経由でCRUDを行ってStateとして提供するuseファイルもコピペして名前変更、index に追加、
コンポーネントもある程度パタンを作っておけば、コピペして、呼び出すuseの変更等を行えばそれなりになるでしょう。
ビジュアル的な何かはなく、ひたすらコードを書いているのではありますが、ロジック的な何かを書くことはほとんどなく、ある意味設定をテキストで書いている、という感覚でした。
理想のローコードとは
上のように書きましたが、ある程度コードが整った後の話であるのは事実です。
そして、最初のとっかかりが重要だというのも確かだと思います。
なので、例えば、ビジュアルなインストーラで、テンプレートまで作ってしまえると良いかなと思います。
そして、この手のツールの歯痒いところは、用意された道からは外れることができない、あるいは極度に難度が上がることかと思います。
いや、コード書いた方が早いよ、みたいな。
そいう意味でも、Django のような形がもっと洗練されていくといいなと。超いまさらですが!
Discussion