NocoDB との連携と構築
NocoDB は、既存データベースをノーコードで管理できる OSS です。Excel ライクな UI でデータを扱え、API も自動生成されます。 このページでは、プリザンターを業務データと権限制御の中核(マスター)に据え、NocoDB をフロント寄りの小さなアプリ層(サブ)として組み合わせる考え方と、NocoDB 自体を Azure App Service 上に構築する手順をまとめます。 プリザンターを置き換えるのではなく、既存のプリザンター資産を活かしながら UI/UX を補強する、という位置づけです。
なぜ NocoDB を組み合わせるのか
NocoDB はテーブルを起点に画面・ビュー・簡易自動化を素早く作れるため、次のような用途と相性が良いです。
- 現場向けに短期間で入力画面を試作したい
- 一覧やフィルタを業務担当者が直感的に調整したい
- まず小さく作って、効果を見ながら機能を増やしたい
プリザンター単体で実現できることを否定するのではなく、スモールに始める UI 実験レイヤーとして NocoDB を使うイメージです。
連携の基本方針
連携時は「どちらをマスターシステムにするか」を先に決めると、運用が安定します。推奨する分担は次のとおりです。
| 観点 | プリザンター(マスター) | NocoDB(サブ) |
|---|---|---|
| 正式データ | 管理する | 参照中心で扱う |
| 権限・承認 | 中核として扱う | 申請補助として扱う |
| 操作体験 | 最小限に維持する | サブシステムとして改善する |
| 段階導入 | 既存運用維持 | 小さく追加 |
この分担にしておくと、「業務ルールは崩さずに、使い勝手だけ先に良くする」進め方が取りやすくなります。
連携アーキテクチャの例
図を読み込み中…
この図は、基本的に読み取りと更新の両方を想定した流れです。NocoDB から直接すべてを更新するのではなく、必要に応じて連携 API を挟み、更新ルールを整理するのがポイントです。
導入ステップ(最小構成)
- 対象業務を 1 つに絞る。 最初から全業務を置き換えず、入力負荷が高い 1 画面だけを対象にします(例: 問い合わせ受付、簡易申請、日次報告)。
- 連携対象テーブルを決める。 プリザンター側で連携対象のテーブル・項目を整理し、NocoDB 側では必要最小限の項目だけを先に作ります。
- 読み取り中心で接続する。 初期フェーズは参照用途を中心にし、更新処理は段階的に追加します。既存運用への影響を抑えながら評価できます。
- 画面体験の改善指標を決める。 改善を主観で終わらせないため、次のような指標を設定します。
- 入力完了までの時間
- 入力ミス件数
- 初回利用者の完了率
- 現場からの問い合わせ件数
- 効果が出た範囲を横展開する。 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 アプリ名(グローバルで重複不可)
リソースグループを作成し、続くコマンドで使う秘密情報を環境変数へ読み込んでおきます。
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 && echoAzure Database for PostgreSQL を作成する
# サーバー作成
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.0WARNING
0.0.0.0 の許可は「Azure サービス全体からのアクセス許可」です。本番運用では App Service の送信元 IP 制限や VNet 統合を検討してください。
App Service を作成する
# 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_SECRET | 32 文字以上のランダム文字列 |
WEBSITES_PORT | 8080 |
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 は次のように取得できます。
az keyvault secret show \
--vault-name <vault-name> \
--name <secret-name> \
--query id \
--output tsvaz 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 になっていることを確認します。
az webapp show \
--resource-group rg-nocodb \
--name app-nocodb \
--query defaultHostName \
--output tsv運用時のポイント
- コンテナタグは
latestにせず、検証済みバージョンに固定する - DB パスワードは Key Vault 連携で管理する
- App Service のログ出力とヘルスチェックを有効化して監視する
- 可能であれば VNet 統合 + Private Endpoint で DB への公開経路を閉じる