AI

ノーコードデータベースOSS比較:NocoDB vs Baserow vs Teable でAirtable代替をセルフホスト

オープンソースラボ編集部2026年6月13日

ノーコードデータベースOSS比較:NocoDB vs Baserow vs Teable でAirtable代替をセルフホスト

AirtableはFreeプランで1,000レコード上限・Plus月$10/ユーザーと、チームが増えるとコストが急増します。NocoDB(既存DBをスプレッドシートUIに変換)・Baserow(完全ホスト型)・Teable(高速Reactスプレッドシート)はオープンソースのAirtable代替で、PostgreSQL/MySQL上で動き、100万レコード以上も軽快に扱えます。

ノーコードデータベースツールの選定理由

  • Airtableのコスト削減: 10人チームでPlusプランだと月$100/月。セルフホストで無料化
  • 既存DBを活用: Supabase・AWS RDS・PlanetScaleのテーブルをスプレッドシートで操作したい
  • 100万レコード対応: AirtableのFreeは1,000件・Plusでも5万件。大規模データを扱いたい
  • APIアクセス: REST APIでフォームデータや外部サービスと連携したい
  • 権限管理: チームメンバーごとにビュー・編集・閲覧のアクセス制御をしたい

主要ツールの概要

NocoDB

既存のPostgreSQL・MySQL・MariaDB・SQLiteをAirtableライクなスプレッドシートUIに変換するツールです。GitHubスター48k+。既存DBに接続できるのがNocoDBの最大の特徴です。Supabaseのテーブルをそのままビジュアル操作できるため、開発チームが既に使っているDBにノーコードUIを追加したいケースに最適です。

# NocoDBをdocker-composeで起動(既存Supabaseと接続)
version: "3"

services:
  nocodb:
    image: nocodb/nocodb:latest
    restart: always
    ports:
      - "8080:8080"
    environment:
      NC_DB: "pg://postgres:5432?u=postgres&p=your-db-password&d=postgres"
      NC_AUTH_JWT_SECRET: "your-jwt-secret-min-32-chars"
      NC_PUBLIC_URL: https://db.yoursite.com
      # 既存Supabaseに接続する場合
      # NC_DB: "pg://db.ucceyqlkrzojulwyryia.supabase.co:5432?u=postgres&p=your-password&d=postgres"
    volumes:
      - nocodb_data:/usr/app/data

volumes:
  nocodb_data:
// NocoDB APIを使ってNext.jsからデータを取得
// NocoDBはAirtableライクなREST APIを提供

const NOCODB_TOKEN = process.env.NOCODB_API_TOKEN;
const NOCODB_URL = process.env.NOCODB_URL;

// テーブルのレコードを取得
async function getRecords(tableId: string, params?: {
  where?: string;
  limit?: number;
  offset?: number;
  sort?: string;
}) {
  const searchParams = new URLSearchParams({
    limit: String(params?.limit ?? 25),
    offset: String(params?.offset ?? 0),
    ...(params?.where && { where: params.where }),
    ...(params?.sort && { sort: params.sort }),
  });

  const res = await fetch(
    `${NOCODB_URL}/api/v1/db/data/noco/{projectId}/${tableId}?${searchParams}`,
    {
      headers: {
        "xc-token": NOCODB_TOKEN!,
      },
      next: { revalidate: 60 },
    }
  );

  return res.json();
}

// 使用例: Supabaseのarticlesテーブルをノーコードで管理しつつ、APIでも取得
const articles = await getRecords("articles", {
  where: "(status,eq,published)",
  sort: "-created_at",
  limit: 10,
});
// NocoDBのWebhookをNext.jsで受信
// app/api/nocodb-webhook/route.ts
export async function POST(req: Request) {
  const payload = await req.json();

  // 新規レコード追加時にSlack通知
  if (payload.type === "records.after.insert") {
    const record = payload.data.rows[0];
    await fetch(process.env.SLACK_WEBHOOK_URL!, {
      method: "POST",
      body: JSON.stringify({
        text: `新規エントリ: ${record.title || record.name || record.id}`,
      }),
    });
  }

  return Response.json({ ok: true });
}

Baserow

Django製の独立したノーコードデータベースプラットフォームです。GitHubスター11k+。NocoDB と違い独自のDBエンジンを持ちます(既存DBへの接続はエンタープライズ版のみ)。フォームビュー・ギャラリービュー・カレンダービューが充実し、チームコラボレーション機能(コメント・メンション)も豊富です。

# Baserowをdocker-composeで起動
version: "3"

services:
  baserow:
    image: baserow/baserow:1.28.0
    restart: always
    environment:
      BASEROW_PUBLIC_URL: https://baserow.yoursite.com
      SECRET_KEY: "your-50-char-secret-key"
      DATABASE_PASSWORD: baserow_pass
      DATABASE_NAME: baserow
      DATABASE_USER: baserow
      DATABASE_HOST: db
      REDIS_URL: redis://redis:6379/0
      EMAIL_SMTP: "true"
      EMAIL_SMTP_HOST: smtp.sendgrid.net
      EMAIL_SMTP_PORT: 587
      EMAIL_SMTP_USER: apikey
      EMAIL_SMTP_PASSWORD: your-sendgrid-key
      FROM_EMAIL: noreply@yoursite.com
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - db
      - redis

  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_PASSWORD: baserow_pass
      POSTGRES_DB: baserow
      POSTGRES_USER: baserow
    volumes:
      - baserow_db:/var/lib/postgresql/data

  redis:
    image: redis:7-alpine

volumes:
  baserow_db:
// Baserow APIでデータを操作(AirtableのAPIに似た構造)
const BASEROW_TOKEN = process.env.BASEROW_API_TOKEN;
const BASEROW_URL = process.env.BASEROW_URL || "https://baserow.yoursite.com";

// テーブルから行を取得
async function listRows(tableId: number) {
  const res = await fetch(
    `${BASEROW_URL}/api/database/rows/table/${tableId}/?user_field_names=true`,
    {
      headers: { Authorization: `Token ${BASEROW_TOKEN}` },
    }
  );
  return res.json();
}

// 新しい行を作成
async function createRow(tableId: number, data: Record<string, unknown>) {
  const res = await fetch(
    `${BASEROW_URL}/api/database/rows/table/${tableId}/?user_field_names=true`,
    {
      method: "POST",
      headers: {
        Authorization: `Token ${BASEROW_TOKEN}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify(data),
    }
  );
  return res.json();
}

// 使用例: フォーム送信をBaserowに保存
await createRow(tableId, {
  Name: formData.name,
  Email: formData.email,
  Message: formData.message,
  Status: "New",
});

Teable

Next.js製の高速スプレッドシート型ノーコードデータベースです。GitHubスター12k+。1,000万レコードでも軽快に動くパフォーマンスが特徴で、AI自動補完・フォーミュラ・ピボットテーブル・Kanbanビューに対応。Airtableの外観と操作感を最もよく再現しています。

# Teableをdocker-composeで起動
version: "3"

services:
  teable:
    image: ghcr.io/teableio/teable:latest
    restart: always
    ports:
      - "3000:3000"
    environment:
      PUBLIC_ORIGIN: https://data.yoursite.com
      PRISMA_DATABASE_URL: postgresql://teable:teable_pass@postgres:5432/teable
      SECRET_KEY: "your-secret-key"
      MAIL_HOST: smtp.sendgrid.net
      MAIL_PORT: "587"
      MAIL_SECURE: "false"
      MAIL_USER: apikey
      MAIL_PASS: your-sendgrid-key
      MAIL_SENDER: noreply@yoursite.com
    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: teable
      POSTGRES_USER: teable
      POSTGRES_PASSWORD: teable_pass
    volumes:
      - teable_db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U teable"]
      interval: 5s
      timeout: 5s
      retries: 10

volumes:
  teable_db:

機能比較表

比較項目NocoDBBaserowTeable
ライセンスAGPL-3.0MITAGPL-3.0
既存DB接続✅ PostgreSQL・MySQL❌(有料版のみ)
カレンダービュー
Kanbanビュー
フォームビュー
REST API
Webhook
AI補完
ピボットテーブル
最小RAM512MB2GB512MB
GitHub Stars48k+11k+12k+

ノーコードデータベースをフォームと連携させる方法はlow-codeカテゴリ(/categories/low-code)でまとめています。NocoDB・Baserowのデータを自動処理するワークフローはopen-source-scheduling(/categories/devops)も参照してください。

FAQ

Q. NocoDBをSupabaseの既存テーブルに接続する場合、Supabaseの設定は何か必要ですか?

A. Supabaseの設定変更は最小限です。接続手順: ①Supabaseダッシュボード→Settings→Database→Connection poolingをOFF(NocoDBはdirect connectionを使うため)②Database URLの?pgbouncer=trueを外した接続文字列をコピー③NocoDBの「External DB」接続でHost/Port/Database/User/Passwordを入力。注意点: ①Supabaseのpublicスキーマ以外のテーブル(authstorage等)もNocoDBから見えるため、接続ユーザーの権限を制限することを推奨②RLSはNocoDBからはバイパスされる(PostgreSQLのUser権限レベルで制御)③Supabase FreeプランはIPアドレス制限がないため、NocoDBのサーバーIPをSupabaseのAllowed IPsに追加不要。

Q. BaserowのフォームビューをWebサイトに埋め込む方法は?

A. Baserowは共有フォームリンクと埋め込みコードを生成できます。設定手順: ①Baserowのテーブル→「+」でForm viewを作成②フォームのフィールドを選択・並べ替え③Share→「Embed in your website」でiframeコードを取得。iframeコード例: <iframe src="https://baserow.yoursite.com/form/your-slug" style="width:100%;height:600px" frameborder="0"></iframe>. 注意点: フォームの回答はBaserowのテーブルに直接保存されます。Webhookを設定することで、回答時にSlack・メールへの通知も可能です。Next.jsでの利用: Server Componentでiframeをレンダリングするか、フォームJSONをfetchして独自UIを作る選択肢もあります。

Q. Teableの「1,000万レコード対応」は本当ですか?AirtableのDBサイズ制限と比較して教えてください。

A. TeableはPostgreSQLを使っているため、理論上のレコード数制限はPostgreSQLの制限(数十億件)です。実用的には: ①1,000万レコードで通常のフィルタ・ソート操作が1秒以内②インデックスが適切に設定されていれば全文検索も高速③ストレージはレコードあたり約1KBとすると、1,000万件で約10GB。Airtableとの比較: AirtableのFreeプランは1,000件、Plusプランは5万件、Proプランで50万件まで。Airtable Enterpriseでも200万件が推奨上限。TeableやNocoDBは100万件以上でのユースケース(ECの商品マスター・ログデータ分析など)に適しています。ただし、非常に多くのビュー(100+)や複雑なフォーミュラが重なると処理が重くなるため、実際のワークロードでのベンチマークを推奨します。

Q. チームで使う場合のロールベースアクセス制御(RBAC)はどのツールが一番充実していますか?

A. 機能の充実度: Baserow>NocoDB≒Teable。詳細: Baserowは「Workspace Admin」「Builder」「Editor」「Commenter」「Viewer」の5段階ロールを持ち、テーブル・フィールド・行レベルでの権限制御ができます。NocoDB: 「Creator」「Editor」「Commenter」「Viewer」の4段階。フィールドレベルの隠し設定(特定ロールに特定カラムを非表示)も対応。Teable: 「Owner」「Creator」「Editor」「Commenter」「Viewer」の5段階。スペース・ベース・テーブルの階層で権限を設定。選定指針: ①Supabaseの既存テーブルを操作したい→NocoDB②チームコラボレーション・コメント機能重視→Baserow③大量データ・高速動作・AI補完→Teable。

まとめ

ユースケース推奨ツール
既存Supabase/PostgreSQLに接続NocoDB
チームコラボ・コメント・フォームBaserow
大量レコード・AI補完Teable
Airtableの外観再現Teable

関連外部リソース

他の記事も読む

Let's Build Together

OSS導入、自社だけで悩まない。

ツール選定から構築・運用・AI活用まで、オープンソースラボ運営元のClasslessが伴走します。初回のご相談は無料です。