Skip to content

NocoDB との連携と構築 ​

第2版作成 最終更新 (日本時間)

NocoDB は、既存データベースをノーコードで管理できる OSS です。Excel ライクな UI でデータを扱え、API も自動生成されます。 このページでは、プリザンターを業務データと権限制御の中核(マスター)に据え、NocoDB をフロント寄りの小さなアプリ層(サブ)として組み合わせる考え方と、NocoDB 自体を Azure App Service 上に構築する手順をまとめます。 プリザンターを置き換えるのではなく、既存のプリザンター資産を活かしながら UI/UX を補強する、という位置づけです。

なぜ NocoDB を組み合わせるのか ​

NocoDB はテーブルを起点に画面・ビュー・簡易自動化を素早く作れるため、次のような用途と相性が良いです。

  • 現場向けに短期間で入力画面を試作したい
  • 一覧やフィルタを業務担当者が直感的に調整したい
  • まず小さく作って、効果を見ながら機能を増やしたい

プリザンター単体で実現できることを否定するのではなく、スモールに始める UI 実験レイヤーとして NocoDB を使うイメージです。

連携の基本方針 ​

連携時は「どちらをマスターシステムにするか」を先に決めると、運用が安定します。推奨する分担は次のとおりです。

観点プリザンター(マスター)NocoDB(サブ)
正式データ管理する参照中心で扱う
権限・承認中核として扱う申請補助として扱う
操作体験最小限に維持するサブシステムとして改善する
段階導入既存運用維持小さく追加

この分担にしておくと、「業務ルールは崩さずに、使い勝手だけ先に良くする」進め方が取りやすくなります。

連携アーキテクチャの例 ​

図を読み込み中…

この図は、基本的に読み取りと更新の両方を想定した流れです。NocoDB から直接すべてを更新するのではなく、必要に応じて連携 API を挟み、更新ルールを整理するのがポイントです。

導入ステップ(最小構成) ​

  1. 対象業務を 1 つに絞る。 最初から全業務を置き換えず、入力負荷が高い 1 画面だけを対象にします(例: 問い合わせ受付、簡易申請、日次報告)。
  2. 連携対象テーブルを決める。 プリザンター側で連携対象のテーブル・項目を整理し、NocoDB 側では必要最小限の項目だけを先に作ります。
  3. 読み取り中心で接続する。 初期フェーズは参照用途を中心にし、更新処理は段階的に追加します。既存運用への影響を抑えながら評価できます。
  4. 画面体験の改善指標を決める。 改善を主観で終わらせないため、次のような指標を設定します。
    • 入力完了までの時間
    • 入力ミス件数
    • 初回利用者の完了率
    • 現場からの問い合わせ件数
  5. 効果が出た範囲を横展開する。 1 業務で効果が確認できたら、似た特性の業務に段階的に展開します。運用チームの負担を増やしにくい順番です。

導入時の注意点 ​

  • 二重管理を避けるため、更新責任の所在を明確にする
  • 主キーや必須項目の整合性ルールを先に決める
  • 障害時に「どちらを基準に復旧するか」を運用手順に含める
  • 監査が必要な業務は、更新経路とログ保全を確認する

NocoDB を Azure App Service で構築する ​

NocoDB を Azure App Service(Linux コンテナ) に配置し、データベースに Azure Database for PostgreSQL を使う構成です。PostgreSQL を外部のマネージドサービスに分離しておくと、App Service 側の再デプロイやスケール時にもデータを維持できます。

図を読み込み中…

コンポーネントAzure サービス役割
NocoDB 本体App Service (Linux コンテナ)Web UI / API 提供
データベースAzure Database for PostgreSQLテーブルデータの永続化

事前準備 ​

  • Azure CLI(az コマンド)
  • Azure サブスクリプション
  • 一意な Web アプリ名(グローバルで重複不可)

リソースグループを作成し、続くコマンドで使う秘密情報を環境変数へ読み込んでおきます。

bash
az group create \
  --name rg-nocodb \
  --location japaneast

read -s -p "PostgreSQL admin password: " PG_ADMIN_PASSWORD && echo
read -s -p "NocoDB JWT secret: " NC_AUTH_JWT_SECRET && echo

Azure Database for PostgreSQL を作成する ​

bash
# サーバー作成
az postgres flexible-server create \
  --resource-group rg-nocodb \
  --name psql-nocodb \
  --location japaneast \
  --admin-user nocodbadmin \
  --admin-password "$PG_ADMIN_PASSWORD" \
  --sku-name Standard_B1ms \
  --tier Burstable \
  --version 16 \
  --storage-size 32

# データベース作成
az postgres flexible-server db create \
  --resource-group rg-nocodb \
  --server-name psql-nocodb \
  --database-name nocodb

# ファイアウォール設定
az postgres flexible-server firewall-rule create \
  --resource-group rg-nocodb \
  --name psql-nocodb \
  --rule-name AllowAllAzureServices \
  --start-ip-address 0.0.0.0 \
  --end-ip-address 0.0.0.0

WARNING

0.0.0.0 の許可は「Azure サービス全体からのアクセス許可」です。本番運用では App Service の送信元 IP 制限や VNet 統合を検討してください。

App Service を作成する ​

bash
# App Service Plan 作成
az appservice plan create \
  --resource-group rg-nocodb \
  --name plan-nocodb \
  --location japaneast \
  --is-linux \
  --sku B1

# Web アプリ作成(NocoDB コンテナ)
az webapp create \
  --resource-group rg-nocodb \
  --plan plan-nocodb \
  --name app-nocodb \
  --deployment-container-image-name nocodb/nocodb:0.258.0

環境変数を設定する ​

NocoDB が PostgreSQL に接続できるように、アプリ設定を登録します。

変数名値
NC_DB@Microsoft.KeyVault(SecretUri=https://<vault-name>.vault.azure.net/secrets/<secret-name>/<version>)
NC_AUTH_JWT_SECRET32 文字以上のランダム文字列
WEBSITES_PORT8080

NC_DB には接続文字列(例: pg://nocodbadmin:<パスワード>@psql-nocodb.postgres.database.azure.com:5432/nocodb?sslmode=require)を Key Vault シークレットとして登録し、App Service から Key Vault 参照で読み込みます。この手順は、Key Vault の作成・シークレット登録・App Service マネージド ID への参照権限付与が完了している前提です。sslmode=require などの接続オプションは、利用する NocoDB バージョンと PostgreSQL ドライバの仕様に合わせて調整してください。Key Vault 参照の詳細は Microsoft のドキュメント を参照してください。

SecretUri は次のように取得できます。

bash
az keyvault secret show \
  --vault-name <vault-name> \
  --name <secret-name> \
  --query id \
  --output tsv
bash
az webapp config appsettings set \
  --resource-group rg-nocodb \
  --name app-nocodb \
  --settings \
    NC_DB="@Microsoft.KeyVault(SecretUri=<NC_DBのSecretUri>)" \
    NC_AUTH_JWT_SECRET="$NC_AUTH_JWT_SECRET" \
    WEBSITES_PORT="8080"

INFO

NocoDB の環境変数の仕様はバージョンごとに更新されることがあります。導入時は、利用するタグ(latest ではなく固定バージョン推奨)に対応した公式ドキュメントを確認してください。

WARNING

接続文字列に実パスワードを直接書かないでください。NC_DB の値は App Service のシークレット設定または Azure Key Vault 参照で管理し、リポジトリに平文で保存しない運用を推奨します。

動作確認 ​

ホスト名を取得し、ブラウザで https://<取得したホスト名> を開きます。NocoDB の初期セットアップ画面が表示されたら初期管理者ユーザーを作成し、接続先 DB が PostgreSQL になっていることを確認します。

bash
az webapp show \
  --resource-group rg-nocodb \
  --name app-nocodb \
  --query defaultHostName \
  --output tsv

運用時のポイント ​

  • コンテナタグは latest にせず、検証済みバージョンに固定する
  • DB パスワードは Key Vault 連携で管理する
  • App Service のログ出力とヘルスチェックを有効化して監視する
  • 可能であれば VNet 統合 + Private Endpoint で DB への公開経路を閉じる

関連ページ ​

変更履歴

第2版記事のファイル名に並び順の番号を付け、元記事リンクを frontmatter の sources に移行
第1版「外部連携・AI」に NocoDB・Apache Superset・POP 受信を追加し、Fess の Azure 構築と Chatwork ログ検索を追記