ノーコードでユーザーインターフェースを備えたデータベースシステムの構築ができる「Airtable」ですが、無料プランでは利用できるデータ量に制限があり、中規模以上での用途では有料プランでの契約が必要となります。そこで代替サービスとして既存のデータベースに接続でき、無料かつオープンソースでセルフホストが可能な「NocoDB」が公開されています。

nocodb/nocodb: A Free & Self-hostable Airtable Alternative

https://github.com/nocodb/nocodb

NocoDB Cloud

https://nocodb.com/



◆NocoDBとAirtableの比較

項目NocoDBAirtableデータベース既存のDBを流用専用DBセルフホスト可能不可初期セットアップ必要不要UI完成度実用レベル非常に高いグラフ一部制限あり強力自動化限定的豊富データ所有権ユーザー側Airtable側コスト構造DB+NocoDBの運用費サブスクフレームワーク依存度NocoDBを外してもDBはそのまま利用可Airtable前提の設計

◆NocoDBの主な機能

・グリッド表示によるテーブル内容の確認

プロジェクトのトップページに表示されているデータベースとテーブルの一覧から確認したいテーブルをクリックすると内容と関連するデータがグリッド形式で表示されます。



・外部キーを利用した関連データの表示

別のテーブルと関連付けられたデータを表示するフィールドをクリックするとリンク済みレコードとして、外部キーで連動している別テーブルの内容がポップアップで表示されます。



・簡易編集

データ欄をクリックすると簡易編集モードになり、直接編集が可能。



・新規レコード登録はグリッド形式とフォーム形式の2種類から選択

新規レコードを登録する方法はグリッドの最下行で直接入力する方法とフォームによる入力方法があり、入力方法選択ボックスで「新しいレコード - フォーム」を選択すると…



入力フォームが表示されます。



・テーブルのリレーションを図表形式で確認

データベース名の右側にある「3点メニュー」アイコンをクリックして「Relations」を選択。



テーブルのリレーションを図表形式で確認することができ、外部キーがどのテーブルと関連付けられているかが一目で確認できます。



・カンバン表示

状態を表すカラムがある場合にそれぞれの状態の値に振り分けられたデータの一覧をカード形式で表示。



・カレンダー表示

日付のカラムがあるテーブルの内容をカレンダー形式で表示。



・ギャラリー表示

データとして画像が添付されているテーブルの内容をギャラリー形式で表示。



・新規登録用フォームページ

データ一覧からの新規レコードを作成する方法以外に、登録専用のフォームページが作成可能。



・REST API

外部プログラムとの連携が可能で、各言語の利用方法のサンプルが用意されています。



NocoDBはphpMyAdminのようなデータベース管理ツールとは異なり、操作を限定することで誰でも安全に扱えるように設計されたデータベースUIです。

◆NocoDBの構築方法

・デモ用データベースの構築

WindowsにDocker DesktopとGit for WindowsのGit Bashを用意した環境で構築します。まず先にサンプルデータセット「chinook-database」を利用しデモ用のデータベースを構築するためchinook-databaseをクローンします。既存のデータベースに接続する場合は、この作業は不要です。


git clone https://github.com/lerocha/chinook-database.git


chinook-databaseフォルダに移動し、docker-compose.ymlを修正し必要なデータベース以外のサービスを削除します。


name: chinook
services:

#----------------------------------------------------------------------------
# MySQL Container
# https://hub.docker.com/_/mysql
# Commands:
# mysql -u chinook -p Chinook
#----------------------------------------------------------------------------
mysql:
image: mysql:latest
environment:
MYSQL_USER: chinook
MYSQL_PASSWORD: chinook
MYSQL_ROOT_PASSWORD: chinook
MYSQL_DATABASE: Chinook
ports:
- "3306:3306"
volumes:
- ./ChinookDatabase/DataSources/Chinook_MySql.sql:/docker-entrypoint-initdb.d/Chinook_MySql.sql
- ./ChinookDatabase/DataSources/Chinook_MySql_AutoIncrementPKs.sql:/docker-entrypoint-initdb.d/Chinook_MySql_AutoIncrementPKs.sql


コンテナを起動します。


docker compose up -d


・NocoDBの構築とデータベースとの連携

PowerShellを起動し、Windows用の実行ファイルをダウンロードして、ローカルのデータベースへの接続を許可する環境変数を設定のうえ実行。


iwr http://get.nocodb.com/win-x64.exe -OutFile Noco-win-x64.exe
:NC_ALLOW_LOCAL_EXTERNAL_DBS="true"
.\Noco-win-x64.exe


起動したらブラウザで「http://localhost:8080」にアクセスすると「SIGN UP」フォームが表示されるので、「E-mail」に任意のメールアドレス、「Password」にパスワードを入力し「SIGN UP」をクリック。



ログインが完了するとアンケートが表示されるので「Skip」をクリック。



プロジェクトのトップページが表示されるので、左下の「ユーザー」アイコンをクリック、「Language」から「日本語」を選択。



日本語化されたプロジェクトのトップページが表示されます。データベースと連携するため「外部データ接続」をクリック。



「Add Data Source」が表示されるので「Data Source Name」に任意の名前を入力、「Connection」で「Select connection」をクリックして「新規 接続」をクリック。



「New Connection」が表示されるので一覧から「MySQL」を選択。



「MySQL」の登録画面が表示されるので「Connection name」に任意の名前を入力、「ホストアドレス」に接続先のアドレス、「ポート番号」にポート番号、「ユーザー名」にユーザー名、「パスワード」にパスワード、「データベース」にデータベース名を入力し「Test connection」ボタンをクリック。



接続に成功したら「Create connection」をクリック。



「Add Data Source」の画面に戻るので「Add Source」をクリック。



サイドバーのデータベース一覧に追加したデータベースが表示されます。



なお、ダッシュボードとグラフ表示機能など一部の機能は、クラウド版でのみ利用可能です。