面倒な社内ツールはもう卒業!Budibaseでスマートな開発ワークフローを
Budibase は、一言でいうと「かゆいところに手が届く、社内向けツール開発の救世主」です。
ソフトウェアエンジニアって、ユーザー向けの機能開発や新サービスに注力したいのに、なぜか「あのデータの進捗を管理したいから、社内向けのシンプルな管理画面作って」「この作業、自動化できない?」といった、緊急ではないけれど誰かがやらないといけない作業に時間を取られがちですよね。
Budibase はそんな時に、最小限の手間で、素早く、そして柔軟に解決策を提供してくれるツールです。ローコード・ノーコードと聞くと、「エンジニアには関係ない」と思うかもしれませんが、実はめちゃくちゃ関係あるんです。
開発速度の圧倒的な向上
複雑な UI をイチから書く必要はありません。ドラッグ&ドロップでコンポーネントを配置し、API やデータベースに接続するだけで、数時間でプロトタイプが完成します。
技術的負債の軽減
急ぎで作ったスクリプトや、使い捨てのツールがいつの間にかメンテの必要なレガシーコードになる...なんてことがなくなります。Budibase 上で管理することで、属人化も防げます。
データソースの柔軟な活用
PostgreSQL や MySQL、MongoDB といった主要なデータベースはもちろん、REST API や Google Sheets など、様々なデータソースと連携できます。既存のインフラを活かしたまま、新しいツールを構築できます。
プロコードとローコードの融合
単なるローコードツールではありません。JavaScript を使ってカスタムロジックを組んだり、外部ライブラリを組み込んだりすることも可能です。エンジニアは、より高度な機能やカスタマイズが必要な部分に集中できます。
導入方法はいくつかありますが、ソフトウェアエンジニアに一番おすすめなのは Docker を使う方法です。コマンド一つで簡単に環境を立ち上げられます。
まず、Docker と Docker Compose がインストールされていることを確認します。
以下のコマンドを実行し、docker-compose.yml ファイルをダウンロードします。
wget https://raw.githubusercontent.com/Budibase/budibase/master/docker-compose.yml
次に、以下のコマンドで Budibase を起動します。
docker-compose up
しばらく待つと、コンテナが起動し、http://localhost:10000 で Budibase の管理画面にアクセスできるようになります。
初回アクセス時に管理者アカウントを作成すれば、すぐにアプリ開発を始められます。
Budibase は GUI での操作が主なので、厳密な意味での「コード」はあまり書きません。ここでは、Budibase の真価を発揮するカスタムロジックや外部 API 連携の例をご紹介します。
顧客データを検索・表示するシンプルな社内ツールを作成する。
検索機能には外部の郵便番号 API を利用し、住所の入力補助を行う。
データソースの追加
PostgreSQL に接続し、顧客情報テーブル(customers)を紐づけます。
外部 API として「郵便番号検索 API」(例https://zipcloud.herokuapp.com/api/search?zipcode={{ zipcode }})を追加します。
画面の作成
「表(Table)」コンポーネントを配置し、データソースを customers に設定します。
「テキスト入力(Text Input)」コンポーネントを配置し、zipcode という変数にバインドします。
アクションの設定
「テキスト入力」コンポーネントにイベント(On Blur)を設定します。
イベントのアクションとして、先ほど追加した「郵便番号検索 API」を呼び出します。zipcode には、入力された郵便番号を渡します。
API 応答から住所情報を取得し、別の「テキスト入力」コンポーネントに反映させます。
サービス利用状況の閾値を超えたら、Slack に通知を送るワークフローを自動化する。
データソースの追加
サービスの利用状況を記録している MongoDB データベースを接続します。
Slack の Incoming Webhook を、REST API として追加します。
自動化(Automations)の設定
「オートメーション」タブで新しいワークフローを作成します。
トリガーCron (例
1時間ごと) を設定します。
ステップ1
データの取得MongoDB から現在の利用状況を取得するクエリを実行します。
ステップ2
条件分岐
取得したデータが、設定した閾値を超えているか確認します(例if(data.usage > 1000))。
ステップ3
通知の実行
条件が true の場合、Slack の Webhook を呼び出すアクションを追加します。ペイロードには、動的に生成したメッセージを含めます(例{"text": "利用状況が1000を超えました!現在:"+data.usage})。