1.ノーコード・ローコードのOSSライブラリの採用を断念
今、新しい業務システム開発の技術選定をしている。
最初、OSSのノーコード・ローコードライブラリでつくろうと思っていた。
たとえば、以下のようなものが有名で便利。
確かに入力や出力をする部分についてはすごく簡単にアプリが作れることはわかった。
ただ、業務システムの場合、認証だけでなく権限ごとに機能を変えたりする必要があるが、
無償版ではそこの制御が難しかった。
有償版であれば、このあたりはクリアできるのだが、ユーザー数ごとのコストを考えると、今回の案件予算や顧客の状況を考えると採用できなかった。
ただ、小さいアプリを作る分には、これらのライブラリはとても便利で有用だと思う。
2.Webのフロントエンドビルドの準備・実施、HTML/CSSのコーディングは避けたい
今更、フロントエンドのビルドとか用意したり、
無駄な時間を使いたくないので、なんとかローコードでWebアプリが作れないかと、いろいろと調べてた。
行き着いたのが、Pythonのダッシュボードライブラリ。
いろいろあるのだけど、Streamlitというのが実績や機能が豊富で良いことがわかった。
単純にいえば、PythonコードだけでWebの画面がつくれてしまう。
コンポーネントのデザインとかもある程度してくれていて、ワンラインでデザイン済みの部品を表示することができる。
もちろん、単なる部品だけでなく、ページを作ったりについても便利な機能が満載。
内部実装は、Reactを使っているみたい。
でも、コーディングでは、カスタムコンポーネントをつかわなければ、Pythonだけで行ける。
もちろん、カスタマイズしたければ、Reactでコンポーネント作る のもOK。
これはフロントエンドつくるにはかなり便利だと思った。
3.バックエンドはコーディングするしかないけど、バックエンドのコーディングはそこまで苦にはならない
Streamlitは、バックエンドまではまだ試験的な機能しかないから、別途、APIつくるしかないみたい。
でも、こちらは鉄板の作り方がでいけばよいと思った。そういう記事もある。
使うライブラリは以下。
・FastAPI:リクエストなどをさばきAPIを作るフレームワーク
・SQLAlchemy :ORM
・Alembic :DBをマイグレーション
・Pydantic:バリデーション
これらでバックエンドを作ればいい。
バックはどうしてもコーディングでした方が早いし、小回りが利く。
それにフロントエンドみたいに煩雑さはないし、時代による流行り廃れもあまりない。
ビルドの準備が大変になることはない。
4.PythonやStreamlitは、表やExcelを扱いやすいので、業務アプリを作るのにとても便利
Pythonはライブラリも情報も多くて開発しやすい。
マイクロソフトなんかも結構力入れてるので、この言語が当面廃れることはないし、
AIや機械学習なんかの分野でもよくつかわれるし、
大学でもかなり採用されているので、今後も利用者は増え続ける。
これを採用するデメリットがあまり思い浮かばない。
業務アプリでかならずといっていいほど作るのが「表」。
また、Excelを使ったり、それと連携したりするのもよくある。
それについても、Pythonはいろんなライブラリがある。
そのなかでもやはり、Pandasはかなり有名でよく使われる。
StreamlitはこのPandasとの連携が超絶便利。
Excelとのコピペの対応とか、Excelを読み込んで表にする、
また、Excelへの書き込みなんかもできる。
今回のアプリ開発は、このPythonライブラリファミリーで行こうと思っている。
ノーコードとはいかないけど、ローコードという点ではかなり達成できると思う。
5.AIを利用したローコード実現
とにかく、コーディングする手間を減らしたいが、最近はAIによるコーディング支援も受けやすくなっている。特に、Pythonは学習される量も多いし、コードが大体均質化するのでAIのサポートも受けやすい。
こうしたAIによるコーディングサポートを受けやすいのもPythonのメリットかと思う。