はじめに
データ管理、どうしていますか。
Excelやスプレッドシートで顧客リストを管理していたら、いつの間にか破綻した。そんな経験、エンジニアなら一度はあるはず。かといって、ガチのデータベースを立てるのは面倒だし、Airtableは月額料金が地味に痛い。
そんな時に見つけたのがNocoDB。GitHub星59,000超えの、オープンソースAirtable代替ツールです。個人的には「スプレッドシートとデータベースの良いとこ取り」という印象。今回はこのNocoDBについて詳しく紹介していきます。
NocoDBとは
NocoDBは、スプレッドシート感覚で使えるオープンソースのデータベースプラットフォームです。Airtableと同じような使い勝手で、自分のサーバーで動かせるのが最大の特徴。
ライセンスはAGPL-3.0。完全無料で使えます。
MySQL、PostgreSQL、SQL Server、SQLiteなど、既存のデータベースに接続して「見やすいUI」を被せることもできます。エンジニアじゃないメンバーにデータベースを触らせたい時に、これが意外と便利なんですよね。
特徴・メリット
NocoDBの強みをいくつか挙げてみます。
多彩なビュー形式
- Grid(スプレッドシート形式)
- Gallery(カード形式)
- Form(入力フォーム)
- Kanban(カンバン方式)
- Calendar(カレンダー表示)
同じデータでも目的に応じてビューを切り替えられます。タスク管理ならKanban、コンテンツ管理ならGalleryという感じで。
リレーション機能が充実
- リンク(テーブル間の関連付け)
- Lookup(関連テーブルの値を参照)
- Rollup(関連レコードの集計)
- Formula(計算式)
リレーショナルデータベースの機能をノーコードで扱えるのは大きいですね。
ワークフロー自動化
Slack、Discord、メール(AWS SES、SMTP)、ストレージ(AWS S3、Google Cloud Storage)などとの連携が可能。レコードが追加されたら通知を飛ばす、みたいな自動化が簡単に組めます。
REST APIとSDK
開発者向けにREST APIが用意されています。JWTやソーシャル認証にも対応しているので、外部アプリケーションからデータを読み書きするのも簡単。
活発な開発コミュニティ
- 59,000以上のGitHubスター
- 330人以上のコントリビューター
- 38,000以上のコミット
8年以上の歴史があり、今も活発に開発が続いています。
インストール方法
Dockerを使ったインストールが一番簡単です。
SQLite版(お試し用)
まずは試してみたいなら、SQLite版で十分。
docker run -d --name nocodb \
-v "$(pwd)"/nocodb:/usr/app/data/ \
-p 8080:8080 \
nocodb/nocodb:latest
これだけでhttp://localhost:8080にアクセスできます。
PostgreSQL版(本番用)
本番環境で使うなら、PostgreSQLとの組み合わせが推奨されています。
# docker-compose.yml
version: '3'
services:
nocodb:
image: nocodb/nocodb:latest
ports:
- "8080:8080"
environment:
NC_DB: "pg://db:5432?u=postgres&p=password&d=nocodb"
depends_on:
- db
volumes:
- nocodb_data:/usr/app/data
db:
image: postgres:15
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: password
POSTGRES_DB: nocodb
volumes:
- postgres_data:/var/lib/postgresql/data
volumes:
nocodb_data:
postgres_data:
docker compose up -d
Auto-Upstallスクリプト
サーバーのセットアップを全部自動でやってくれるスクリプトもあります。PostgreSQL、Redis、Minio、Traefikまで一括で構築してくれるので、VPSにデプロイするならこれが楽。
bash <(curl -sSL http://install.nocodb.com/noco.sh) <(mktemp)
基本的な使い方
初期設定
ブラウザでアクセスしたら、管理者アカウントを作成します。
ベースとテーブルの作成
NocoDBでは「ベース」がプロジェクト単位、「テーブル」がその中のデータ単位です。
- 新規ベースを作成
- テーブルを追加
- カラム(列)を定義
- データを入力
スプレッドシートを触る感覚でOK。カラムの型も豊富で、テキスト、数値、日付、添付ファイル、チェックボックス、リンクなど一通り揃っています。
既存データベースに接続
すでにMySQLやPostgreSQLで動いているデータベースがあれば、それに接続することもできます。
Base Settings → Data Sources → New Source
接続文字列を入力すれば、既存のテーブルがそのまま読み込まれます。テーブル構造を変えずに、見やすいUIだけ追加できるのは便利。
APIを使ったデータ操作
REST APIでCRUD操作ができます。
// データ取得の例
const response = await fetch('http://localhost:8080/api/v2/tables/{tableId}/records', {
headers: {
'xc-token': 'YOUR_API_TOKEN'
}
});
const data = await response.json();
APIトークンは設定画面から発行できます。
実践的なユースケース
ケース1: 顧客管理(CRM)
Salesforceほど大げさなものは要らないけど、スプレッドシートだと限界がある。そんな時にNocoDBで簡易CRMを作ると便利です。顧客テーブルと商談テーブルをリンクで紐付けて、Kanbanビューで進捗管理。
ケース2: コンテンツ管理
ブログ記事やSNS投稿のネタ帳として使うのもあり。Galleryビューでサムネイル付きで一覧表示、Calendarビューで公開日を管理、という使い方ができます。
ケース3: 在庫管理
商品マスタと入出庫履歴をリンクで繋いで、Rollupで在庫数を自動計算。Formulaで発注点を下回ったらフラグを立てる、みたいな仕組みも作れます。
ケース4: プロジェクト管理
タスク管理にKanbanビュー、マイルストーンにCalendarビュー。複数プロジェクトを一つのベースで管理できるので、個人開発やスモールチームには十分。
ケース5: 社内ツールのバックエンド
REST APIがあるので、社内ツールのバックエンドとして使うのも手です。フロントエンドだけ自作して、データ管理はNocoDBに任せる。管理画面を作る手間が省けます。
まとめ
NocoDBは、データベースとスプレッドシートの中間に位置するツールとして、かなり実用的だと思います。
- Airtable級の機能がオープンソースで無料
- セルフホストで完全にデータを掌握できる
- 既存のDBに接続してUIだけ追加も可能
- REST APIで外部連携も簡単
- Dockerで5分でセットアップ完了
正直なところ、ちょっとしたデータ管理ならAirtableに課金する必要はないんじゃないかと。特にエンジニアがいるチームなら、セルフホストのメリットは大きいです。
30代になって「データを雑に管理するリスク」を実感するようになった人には、一度試してみる価値があると思います。スプレッドシートで限界を感じたら、NocoDBを検討してみてください。