OSSローコード・ビルダー比較:Budibase vs Appsmith vs ToolJet でRetoolを脱却する
オープンソースラボ編集部 ・ 2026年6月14日
OSSローコード・ビルダー比較:Budibase vs Appsmith vs ToolJet でRetoolを脱却する
Retool(月$10/ユーザー〜)・OutSystems(月数十万円〜)・Bubble(月$29〜)に対して、Budibase(UI優先・低コード)・Appsmith(JS統合・React Native mobile)・ToolJet(軽量・Docker最小構成)はローコード内部ツールをOSSでセルフホストできます。
OSSローコードを選ぶ理由
- コスト: Retool(月$10×20名 = $2,400/年)→ Budibase CE + VPSで$0
- 管理画面・内部ツール: CRUD UIを数時間でゼロコード構築(PostgreSQL・REST API・Google Sheets接続)
- データ主権: 顧客データ・社内データが外部SaaS(Retool Cloud)を通過しない
- カスタムコンポーネント: ReactコンポーネントをUIライブラリに追加して独自ウィジェットを使用
主要ツールの概要
Budibase
2019年公開、Svelte/Node.js製のOSSです。GitHubスター23k+。UIビルダー・データソース接続・自動化(Automation)・ユーザー管理が1プラットフォームで完結する内部ツールビルダーです。PostgreSQL・MySQL・REST API・Google Sheets・S3・MongoDB・Airtable等を接続してCRUDアプリを数時間で構築できます。
# docker-compose.yml - Budibase CE
version: "3.8"
services:
app-service:
image: budibase/apps:latest
restart: unless-stopped
environment:
SELF_HOSTED: "1"
COUCH_DB_URL: http://budibase:${COUCH_DB_PASSWORD}@couchdb-service:5984
WORKER_URL: http://worker-service:4002
MINIO_URL: http://minio-service:9000
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY}
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY}
INTERNAL_API_KEY: ${INTERNAL_API_KEY}
JWT_SECRET: ${JWT_SECRET}
LOG_LEVEL: info
depends_on:
- couchdb-service
- minio-service
worker-service:
image: budibase/worker:latest
restart: unless-stopped
environment:
SELF_HOSTED: "1"
COUCH_DB_URL: http://budibase:${COUCH_DB_PASSWORD}@couchdb-service:5984
MINIO_URL: http://minio-service:9000
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY}
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY}
INTERNAL_API_KEY: ${INTERNAL_API_KEY}
JWT_SECRET: ${JWT_SECRET}
SMTP_HOST: smtp.sendgrid.net
SMTP_PORT: "587"
SMTP_USER: apikey
SMTP_PASS: ${SENDGRID_KEY}
SMTP_FROM_ADDRESS: noreply@yourcompany.com
proxy-service:
image: budibase/proxy:latest
restart: unless-stopped
ports:
- "10000:10000"
depends_on:
- app-service
- worker-service
couchdb-service:
image: budibase/couchdb:latest
restart: unless-stopped
environment:
COUCHDB_PASSWORD: ${COUCH_DB_PASSWORD}
COUCHDB_USER: budibase
volumes:
- couchdb_data:/opt/couchdb/data
minio-service:
image: minio/minio:latest
restart: unless-stopped
environment:
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY}
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY}
volumes:
- minio_data:/data
command: server /data --console-address ":9001"
volumes:
couchdb_data:
minio_data:
# Budibase REST API でアプリ・テーブルを自動管理(Python)
import requests
import os
BB_URL = os.environ.get('BUDIBASE_URL', 'http://localhost:10000')
API_KEY = os.environ['BUDIBASE_API_KEY'] # 管理画面のSettings > API Keys で取得
headers = {
'x-budibase-api-key': API_KEY,
'Content-Type': 'application/json',
}
def list_apps() -> list:
resp = requests.get(f'{BB_URL}/api/applications', headers=headers)
resp.raise_for_status()
return resp.json()['data']
def search_rows(app_id: str, table_id: str, query: dict = None) -> list:
body = {'query': query or {}, 'paginate': False}
resp = requests.post(
f'{BB_URL}/api/{app_id}/tables/{table_id}/rows/search',
headers=headers,
json=body,
)
resp.raise_for_status()
return resp.json()['data']
def create_row(app_id: str, table_id: str, row_data: dict) -> dict:
resp = requests.post(
f'{BB_URL}/api/{app_id}/tables/{table_id}/rows',
headers=headers,
json=row_data,
)
resp.raise_for_status()
return resp.json()
# 使用例: 顧客テーブルに新規レコードを追加
apps = list_apps()
if apps:
app_id = apps[0]['appId']
# テーブル検索
customers = search_rows(app_id, 'your-table-id', {
'equal': {'status': 'active'}
})
print(f'アクティブ顧客: {len(customers)}件')
# 新規レコード追加
new_customer = create_row(app_id, 'your-table-id', {
'name': '株式会社テスト',
'email': 'info@test.co.jp',
'status': 'active',
'plan': 'pro',
})
print(f'追加完了: {new_customer["_id"]}')
Appsmith
2019年公開、TypeScript/Java製のOSSです。GitHubスター34k+。React Nativeでモバイルアプリも作成でき、カスタムJSのサポートが充実している内部ツールビルダーです。Widget(グリッド・チャート・フォーム・テーブル)をドラッグ&ドロップで配置し、REST API・GraphQL・PostgreSQL等をデータソースとして接続します。
# docker-compose.yml - Appsmith Community
version: "3.8"
services:
appsmith:
image: index.docker.io/appsmith/appsmith-ce:latest
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./stacks:/appsmith-stacks
environment:
APPSMITH_ENCRYPT_PASSWORD: ${ENCRYPT_PASSWORD}
APPSMITH_ENCRYPT_SALT: ${ENCRYPT_SALT}
APPSMITH_OAUTH2_GITHUB_CLIENT_ID: ${GITHUB_CLIENT_ID}
APPSMITH_OAUTH2_GITHUB_CLIENT_SECRET: ${GITHUB_CLIENT_SECRET}
APPSMITH_OAUTH2_GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID}
APPSMITH_OAUTH2_GOOGLE_CLIENT_SECRET: ${GOOGLE_CLIENT_SECRET}
# メール設定
APPSMITH_MAIL_ENABLED: "true"
APPSMITH_MAIL_HOST: smtp.sendgrid.net
APPSMITH_MAIL_PORT: "587"
APPSMITH_MAIL_SMTP_TLS_ENABLED: "true"
APPSMITH_MAIL_USERNAME: apikey
APPSMITH_MAIL_PASSWORD: ${SENDGRID_KEY}
APPSMITH_MAIL_FROM: noreply@yourcompany.com
// Appsmith カスタムJS例: テーブルデータの集計とフィルタリング
// Appsmith の JS Object として実装
export default {
// アクティブユーザーをフィルタリング
getActiveUsers() {
const users = getUsers.data || [];
return users.filter(u => u.status === 'active' && u.plan !== 'free');
},
// 月次売上を集計
getMonthlySummary() {
const orders = getOrders.data || [];
const summary = {};
orders.forEach(order => {
const month = order.created_at.substring(0, 7); // YYYY-MM
summary[month] = (summary[month] || 0) + order.amount;
});
return Object.entries(summary)
.sort(([a], [b]) => b.localeCompare(a))
.map(([month, total]) => ({ month, total }));
},
// CSVエクスポート
exportToCSV() {
const data = Table1.selectedRows;
if (!data.length) {
showAlert('エクスポートするデータを選択してください', 'warning');
return;
}
const headers = Object.keys(data[0]).join(',');
const rows = data.map(row => Object.values(row).join(','));
const csv = [headers, ...rows].join('
');
download(csv, 'export.csv', 'text/csv');
},
};
ToolJet
2021年公開、TypeScript製のOSSです。GitHubスター34k+。最小限のリソースでDockerデプロイできる軽量な内部ツールビルダーです。データソース接続(50+)・カスタムJS・REST API・Python(Pandas)コンポーネントを搭載しています。
# ToolJet の最小Dockerセットアップ(1コンテナ)
docker run -d --name tooljet -p 3000:3000 -e TOOLJET_HOST=https://tooljet.yourcompany.com -e SECRET_KEY_BASE=$(openssl rand -hex 64) -e PG_HOST=your-postgres-host -e PG_DB=tooljet_production -e PG_USER=tooljet -e PG_PASS=your-password -e PG_PORT=5432 -e SMTP_ADDRESS=smtp.sendgrid.net -e SMTP_PORT=587 -e SMTP_USERNAME=apikey -e SMTP_PASSWORD=${SENDGRID_KEY} tooljet/tooljet:latest
機能比較表
| 比較項目 | Budibase | Appsmith | ToolJet |
|---|---|---|---|
| モバイルUI | △ | ✅(React Native) | △ |
| カスタムJS | △ | ✅(充実) | ✅ |
| セットアップ容易さ | ★★☆ | ★★☆ | ★★★ |
| UI品質 | ★★★ | ★★☆ | ★★☆ |
| 自動化(Automation) | ✅ | △ | △ |
| GitHub Stars | 23k+ | 34k+ | 34k+ |
OSSローコードはDevOpsカテゴリ/categories/devopsのPostgreSQL・データウェアハウス(Redshift/BigQuery)に直接接続してBIダッシュボード代替の管理画面を構築します。LLM Toolsカテゴリ/categories/llm-toolsのOllamaやClaude APIをカスタムAPIデータソースとして接続することで、AIアシスト機能付きの内部ツールを低コードで構築できます。
FAQ
Q. RetoolからBuildbarse/Appsmithへの移行は可能ですか?
A. UIの完全自動移行は不可ですが、データソース接続設定とビジネスロジックは手動で移行できます。移行手順: ①Retoolで使っているデータソース(PostgreSQL・REST API・GraphQL)のエンドポイントとクエリをメモ②Budibase/Appsmithで同じデータソースを接続③UIコンポーネント(テーブル・フォーム・チャート)をドラッグ&ドロップで再構築④カスタムJS(Retoolのtransformers・event handlersの相当機能)をAppsmithのJS Objectに移植。移行コスト目安: シンプルなCRUD管理画面(5画面以下)は2〜3日、複雑なダッシュボード(チャート・フィルター・複数データソース結合)は1〜2週間。
Q. BudibaseとAppsmithの主な違いは何ですか?
A. 非エンジニアでも使いやすいUI重視ならBudibase、開発者がカスタムJSで柔軟に実装したい・モバイルアプリも作りたいならAppsmithが向いています。Budibaseの優位点: ①UIが洗練されていて非エンジニアでも直感的②Automation(cronトリガー・Webhookトリガー・承認フロー)が標準搭載③内蔵ユーザー管理・RBAC(ロールベースアクセス制御)④Budibase DBで追加インフラなしにアプリを作成可能。Appsmithの優位点: ①JS Objectでより複雑なデータ変換・ロジックを実装②React Nativeでモバイルビューを同時開発③カスタムコンポーネント(Reactウィジェット)をnpmパッケージとして追加④Git統合でコードレビュー・バージョン管理が可能。
Q. ToolJetはどんな場面に適していますか?
A. リソースが限られた環境・素早くシンプルな内部ツールを作りたい場合にToolJetが最適です。ToolJetのユースケース: ①シングルDockerコンテナで起動(最小512MB RAM)でVPSコストを最小化②Pythonコンポーネント(Pandasでデータ分析処理)③OpenAI/Claude APIをデータソースとして接続したAIアシスト内部ツール④CSVインポート→テーブル表示→フォーム編集の基本CRUD(30分で構築)。注意: ToolJetのAutomation(バックグラウンドジョブ)はBusinessプランで提供。無料版でも手動実行のワークフローは構築可能です。
Q. 複数のデータベースを1つのUIに統合して使えますか?
A. 3ツール全て複数データソースを1つのアプリ内で使用可能です。例: PostgreSQL(顧客データ)+ Stripe API(請求データ)+ Slack API(通知送信)を1つのダッシュボードに組み合わせ。実装例(Appsmith): ①「顧客一覧テーブル」はPostgreSQLクエリを接続②行を選択すると「Stripe請求履歴」はStripe REST APIを呼び出し③「Slack通知」ボタンはSlack Webhookを呼び出し。Budibaseでは「Data Source」にPostgreSQL・REST API・Airtableを別々に追加してバインディングでUI部品にデータを流し込みます。JOIN操作(複数DBのデータを結合)はJSで変換するかBudibaseのFormulaフィールドで実装します。
まとめ
| ユースケース | 推奨ツール |
|---|---|
| 非エンジニア・UI品質・Automation重視 | Budibase |
| 開発者・カスタムJS・モバイル対応 | Appsmith |
| 軽量・シンプルCRUD・最小リソース | ToolJet |