ローコードな業務アプリプラットフォームを個人開発した話

こんにちは、エンジニアのg0eです。

今日はタイトルの通り、ローコードな業務アプリの開発プラットフォームBizglueを個人的に作って(開発期間は2年ちょっとで)ようやくベータ版として公開にたどり着いたので、その紹介と作ろうと思った背景などについて書いてみたいと思います。

サービスの概要

業務改善に取り組んでいるエンジニア向けのサービスで、いわゆるローコードなWebアプリの開発や、業務の自動化をするためのアプリケーションの開発プラットフォームです。

ノーコードではなく、ローコードということで、SQLやJavascriptなどの基礎的なエンジニアスキルが必要となる前提ですが、その分、ノーコードの同様な業務アプリプラットフォームに比べると自由度が高く、エンジニア目線での使いやすさを優先して作っています。

特徴としては、データフローによりアプリの動作を定義する点で、SQLやJavascriptの実行、フォームやデータの描画など様々な機能を持ったコンポーネントを自由につなぎ合わせてアプリを構築できます。データフローベースにすることで、ブラウザから操作するWebアプリだけでなく、WebhookやAPI経由で実行する自動化ツールの構築も同一のプラットフォーム上で実現しています。

解決したかった課題

このサービスを作ろうと思ったきっかけは、自分自身がエンジニアとして社内の業務改善に過去に取り組んでいたことがあり、その時に感じた以下のような不便さを解消したいというものでした。

【フルスクラッチで作ることへの不満】
・車輪の再発明が多い(フォーム作って一覧表示作って、似たことが多い)
・そもそもサーバやコードの管理が手間だし、属人化しやすい

【ノーコードで作ることへの不満】
・自由度があまり高くない
・コード書けば数行で済むのに…と思うことが多い
・ベンダロックインされる

サービスのコンセプト

「誰にでも使えるサービスというのは、誰にとっても使いにくいサービス」なんじゃないかなと思うことが多々あり、一定のスキルを要求する代わりに、そのスキルを持っている人にとって使いやすいサービスを目指してみようと考えました。

具体的には、データベースの操作をするならSQL、ロジックの記述はJavascriptといった具合に、実現したい機能に対して、「既に世の中で広く使われている技術=おそらくベストに近いと思われる解き方」を提供していくというものです。

サービスの企画としては最初からマーケットサイズを捨てにいくという自殺行為をしているのですが、そこは趣味の延長でやっている強みかなと考えています。言葉を変えると、いわゆる「ぼくのかんがえたさいきょうのXXX」を作ってみたいというエンジニアなら誰もが考えることをやってみたかっただけ、という話なのかもしれないです。

重視したポイント

サービスを設計する際に重視していたポイントをいくつか挙げてみます。

【データ構造とロジックの分離】
よくあるノーコードのアプリでは、データ構造を定義して、それを元にデータのCRUD操作を自動生成するというものが多い印象があるのですが、1つのデータを色々なユースケースで使う場合に、自由度の足かせになりがちなので、データ構造とそれを操作するロジックは分離可能なように意識しました。
例えば、Googleスプレッドシートも、データ構造(行列の設計)と、データの操作ロジック(セルへの入力)が1つの画面で完全に結合しており、タスク管理をGoogleスプレッドシートでやる時に、本来はステータスの列だけ更新させたいのに、タスク名の列を誤って変更してしまったり、ということが発生します。

【データベースはユーザが管理】
BIツールのように外部からデータベースにSQLを発行できれば、データのビューアとしてだけでなく、業務アプリも作れるんじゃないか、というのがこのサービスを考え始めた原点ではあるので、自分としては自然な流れなのですが、多くのノーコードのアプリと異なり、データベースは内部に持たずに、外部のものに接続する仕様にしています。
導入のハードルがやや高くなってしまうという難しさはありますが、自分自身が過去にノーコードのアプリを作っていた時に、大幅な仕様変更をする前に自由にバックアップを取りたかったり、溜まっているデータに対して一括で変更クエリを投げたかったり、といった不満もあり、データの管理を100%ユーザ側で行える仕様というのも大きなメリットだと考えています。
また、既存のデータベースに接続できることで、既存業務の一部だけをこのサービスを使って仕組み化したり、プロトタイプの作成だけ行って、最終的には内製化するといった使い方もできると考えています。

【拡張性とシンプルさの追求】
一言でいうと「レゴブロックのようなシンプルさと奥深さ」の実現を目指しています。サービスの初期設計の段階で、きちんとした拡張性を組み込んでいくことが、長くサービスを成長させていくためには重要だと考えています。今はまだできることも限られてはいますが、コンポーネントを増やしていくだけでも、出来ることが加速度的に増えていく、そんな仕組みを作れたと思っています。
今の形にたどり着くまでかなりの試行錯誤を繰り返していたのですが、結果として、大学院時代に友人と未踏に応募して開発していたサービス(当時流行っていたマッシュアップを簡単に実現するためのプラットフォーム。かろうじて記事が1つ残っていました)に似たものになっていました。あの頃から10年以上が経過して、自分自身も開発を取り巻く環境も大きく成長して、より良いものが出来たとは思います。

今後の予定

現段階では使えるデータベースがMySQLだけなので、PostgreSQLなどのSQL系のデータベースや、FirestoreやMongoなどのnoSQL系のデータベースなど、対応範囲を広げていく計画です。データ操作型のコンポーネント以外についてもどんどん増やしていきたいと考えているので、是非フィードバックもらえると嬉しいです。

あと、技術的にもFirestoreのORMを自作してみたり、ORMからスキーマを出力してOpenAPI経由でTypescript用の型定義付きのAPIクライアントを生成してみたり、いくつか面白いことをやっているので、それはそれでQiitaとかに記事を書いてみたいと思っています。(自作ORMもできればオープンソース化したい)

以上、長文にお付き合いいただきありがとうございました。是非サービス使ってみてフィードバックください!

サービスのURL

https://bizglue.net/


この記事が気に入ったらサポートをしてみませんか?