Directus vs Supabase in 2026: Choosing Your Backend

過去3年間、DirectusとSupabaseの両方でプロジェクトを出荷してきました。誰かが「どちらを選ぶべき?」と聞くたびに、私の答えは同じです:実際に何を構築しているかによります。これは言い逃れではなく、これら2つのツールは本当に異なる主な目的を果たしており、驚くほど重なっているのです。Directusは任意のSQLデータベースを美しい管理UIとREST/GraphQL APIでラップするヘッドレスCMSです。Supabaseは認証、リアルタイムサブスクリプション、ストレージ、エッジ関数を提供するPostgreSQLベースのFirebaseの代替品です。重なり?どちらもデータベースを提供し、どちらもAPIを提供し、どちらもデータ管理用のダッシュボードを備えています。しかし、各ツールの背後にある哲学は根本的に異なり、その哲学があなたが下流で下すすべての決定を形作ります。

両方を本番環境で構築して学んだことを説明しましょう。

目次

Directus vs Supabase in 2026: Choosing Your Backend

哲学とコアアイデンティティ

Directusは自らを「データプラットフォーム」と呼んでいますが、正直に言うと、本質的にはヘッドレスCMSです。既存のSQLデータベース(PostgreSQL、MySQL、MariaDB、MS SQL、SQLite、Oracle、CockroachDB)を取得し、その上にコンテンツ管理インターフェイスを層にします。重要な洞察:Directusはあなたのデータスキーマを所有していません。既存のデータベースをポイントすると、テーブルとリレーションシップを自動的にイントロスペクトします。データベースを既に持っていて、管理層が必要な場合は強力です。

Supabaseはバックエンド・アズ・ア・サービス(BaaS)です。認証、ファイルストレージ、リアルタイムサブスクリプション、エッジ関数、AIワークロード用のベクトル埋め込みが含まれるPostgreSQLです。Supabaseは、コンテンツを管理するのではなく、アプリケーションを構築していると想定しています。ダッシュボードは開発者向けに設計されており、コンテンツエディター向けではありません。

この哲学的な違いは、機能比較よりも重要です。編集者がブログ投稿を公開し、メディアを管理し、変更をプレビューする必要があるコンテンツ駆動型ウェブサイトを構築している場合、Directusはそのために特別に設計されています。ユーザーがサインアップし、データを保存し、リアルタイムで相互作用するSaaS アプリを構築している場合、Supabaseはそのために構築されています。

しかし、ほとんどの実際のプロジェクトはそのようなクリーンカットではありません。そしてそれが興味深いことです。

データベースとデータモデリング

Directus

Directusは「データベースファースト」アプローチを使用します。Directus UIまたはデータベースを通じて直接スキーマを定義します。どちらも機能します。管理アプリは、スキーマに基づいてフォーム、リレーションシップ、および検証を自動生成します。articlestagsの間にmany-to-manyリレーションシップが必要ですか?ジャンクションテーブルを作成するか、Directusに作成させ、管理UIが自動的に素敵なタグセレクターをレンダリングします。

私が高く評価する点の1つは、Directusがテーブルに独自の抽象化レイヤーを作成していないことです。テーブル名、列名、リレーションシップは、定義したものとまったく同じです。システムテーブル(directus_接頭辞付き)はデータの横に配置されていますが、それに干渉しません。

2026年サポートされているデータベース:

  • PostgreSQL 12+
  • MySQL 8+
  • MariaDB 10.5+
  • MS SQL 2019+
  • SQLite 3+
  • CockroachDB 22+
  • Oracle 19c+

Supabase

Supabaseはpostgresqlです。期間。PostgIS、pgvector、pg_cronなどのエクステンション、および数百の他のものを備えた完全なPostgresインスタンスを取得します。スキーマ管理は、ダッシュボードのSQLエディター、テーブルエディター UI、またはSupabase CLIを介したマイグレーションを通じて行われます。

Supabaseのマイグレーションワークフローは大幅に成熟しました。CLIはマイグレーションファイルを生成し、supabase db diffを使用してダッシュボードで行われたスキーマ変更をキャプチャできます。2026年に、彼らはまたブランチを追加しました。本番環境にマージする前に、スキーマ変更を分離でテストできるデータベースブランチ。

-- Supabase migration example
create table public.articles (
  id uuid default gen_random_uuid() primary key,
  title text not null,
  slug text unique not null,
  content jsonb,
  published_at timestamptz,
  author_id uuid references auth.users(id),
  created_at timestamptz default now()
);

alter table public.articles enable row level security;

create policy "Published articles are viewable by everyone"
  on public.articles for select
  using (published_at is not null and published_at <= now());

行レベルセキュリティ(RLS)モデルは、Supabaseのスーパーパワーと最も急な学習曲線です。詳しくは後で説明します。

機能 Directus Supabase
データベースエンジン PostgreSQL、MySQL、MariaDB、MS SQL、SQLite、CockroachDB、Oracle PostgreSQLのみ
スキーマ管理 GUI +直接SQL GUI + SQLエディター + CLIマイグレーション
データベースブランチ 組み込みなし(別のインスタンスを使用) はい(ネイティブ、2024年後半以降)
エクステンション 選択したデータベースに依存 60以上のPostgresエクステンション
ベクトル/AIサポート エクステンション経由 pgvectorビルトイン
直接DBアクセス 常に完全なアクセス 常に完全なアクセス

APIレイヤー比較

Directus API

DirectusはスキーマからREST APIとGraphQL APIの両方を自動生成します。REST APIは予測可能なパターンに従います:

# Get all articles with author relationship
GET /items/articles?fields=*,author.name&filter[status][_eq]=published&sort=-published_at&limit=10

フィルタリングシステムは表現力豊かです。ネストされたリレーショナルフィルター、集約、さらには地理的なクエリーを行うことができます。SDKはこのすべてをうまくラップします:

import { createDirectus, rest, readItems } from '@directus/sdk';

const client = createDirectus('https://your-instance.com').with(rest());

const articles = await client.request(
  readItems('articles', {
    fields: ['*', { author: ['name', 'avatar'] }],
    filter: { status: { _eq: 'published' } },
    sort: ['-published_at'],
    limit: 10,
  })
);

Directus 11(2026年現在の現在の安定版)のTypeScript SDKは型推論で大幅に改善されていますが、完全な型安全性のためにスキーマから型を生成する必要があります。

Supabase API

Supabaseは PostgRESTを介してREST APIを生成し、ORMのような感じがするJavaScriptクライアントライブラリを提供します:

import { createClient } from '@supabase/supabase-js';

const supabase = createClient(SUPABASE_URL, SUPABASE_ANON_KEY);

const { data: articles, error } = await supabase
  .from('articles')
  .select('*, author:profiles(name, avatar_url)')
  .eq('status', 'published')
  .order('published_at', { ascending: false })
  .limit(10);

Supabaseはデフォルトで GraphQLを提供していません。彼らはpg_graphqlを持っていて、それは拡張機能として利用可能ですが、プライマリDXはJSクライアントとREST APIです。正直?Supabaseを使用するときGraphQLを逃しません。リレーションシップジョイニングを含むselect構文は、ユースケースの95%をカバーしています。

Supabaseが前に出ている1つの領域:WebSockets上のリアルタイムサブスクリプションとサーバー側ロジック用のエッジ関数。Directusには Flows(自動化エンジン)がありますが、完全なサーバーレス関数ランタイムを持つことと同じではありません。

Directus vs Supabase in 2026: Choosing Your Backend - architecture

コンテンツ管理体験

これはDirectusが絶対に支配する場所です。それは近いさえもありません。

Directus管理アプリはコンテンツチーム向けに設計されています。あなたは得られます:

  • カスタムレイアウト:かんばんボード、カレンダー、マップ、コレクションブラウジング用の分割ビュー
  • WYSIWYGとブロックエディター:Directus 11のブロックエディターは本当に良いです
  • 翻訳サポート:並べて翻訳インターフェイス付きの組み込みi18n
  • リビジョン履歴:差分ビュー付きの完全なコンテンツバージョン管理
  • ライブプレビュー:編集者が公開前に変更を確認できるようにプレビュー URL を設定します
  • 粒度の高い権限:個々のフィールドへのロールベースのアクセス
  • カスタムダッシュボード:コンテンツチーム向けの分析と概要パネル

Supabaseのテーブルエディターは...テーブルエディターです。データベースをGUIで操作したい開発者にとっては素晴らしいです。ホームページのヒーロー セクションを更新する必要があるマーケティング チームにとっては悪いです。コンテンツ駆動型サイトを構築していて、エディターがバックエンドに直接触れる場合、Directusはデフォルトで勝ちます。

Supabaseの上にカスタム管理UIを構築してコンテンツ編集を行おうとするチームを見ました。それは機能しますが、本質的にはスクラッチからCMSを構築しています。それは数ヶ月の作業で、Directusは1日目に与えています。

コンテンツ駆動型サイト用の適切なヘッドレスCMSセットアップを探しているなら、私たちのチームはヘッドレスCMSプロジェクトで定期的にDirectusを使用しており、コンテンツの多いサイトに対する推奨事項の1つです。

認証と認可

Supabase認証

Supabase認証は完全に機能する認証システムです。メール/パスワード、マジックリンク、OAuth(Google、GitHub、Apple など)、電話/SMS、およびSAML SSOはすべて組み込まれています。PostgreSQLの行レベルセキュリティと直接統合されます。つまり、認証ルールはデータベース自体に存在します。

-- Only allow users to read their own profiles
create policy "Users can view own profile"
  on profiles for select
  using (auth.uid() = id);

-- Allow users to update their own profile
create policy "Users can update own profile"
  on profiles for update
  using (auth.uid() = id);

このモデルは一度理解すると優雅ですが、RLSポリシーはすぐに複雑になる可能性があります。ポリシーが見つからないためにクエリーが空の結果を返す理由をデバッグすることは、受け入れることを学ぶ喜びの1つです。

Directus認証

Directusは独自の管理ユーザーの認証を処理し、OpenID Connect、SAML、LDAP、およびOAuth2を介した外部SSOもサポートしています。フロントエンドアプリユーザーの場合、通常はカスタムロールでDirectusのユーザーシステムを使用します。

DirectusのパーミッションモデルはGUI駆動型です。ロールを作成してから、各ロールに対してコレクションごとのCRUDパーミッションを設定し、オプションでフィールドレベルおよびアイテムレベルのルールを使用します。これはRLSポリシーより視覚的で、おそらく理由を付けやすいですが、複雑なアプリケーションロジックの柔軟性は低いです。

エンドユーザー認証が主な関心事であるアプリケーション(SaaSアプリなど)の場合、Supabaseの認証システムは大幅に成熟しています。コンテンツチームアクセスを管理するために、Directusのロールシステムはより適しています。

リアルタイム機能

Supabaseのリアルタイムエンジンは本番対応であり、プレゼンス、ブロードキャスト、およびデータベース変更リスナーを処理します:

const channel = supabase
  .channel('articles')
  .on('postgres_changes', {
    event: 'INSERT',
    schema: 'public',
    table: 'articles',
  }, (payload) => {
    console.log('New article:', payload.new);
  })
  .subscribe();

これは、チャットアプリ、コラボレーティブツール、ライブダッシュボード、および通知システムに本当に役立ちます。

DirectusはWebSocketサポートを追加し、GraphQL サブスクリプションエンドポイントを介したリアルタイムサブスクリプションを備えています。それは機能しますが、同じレベルの成熟度ではありません。Directus Realtimeは「コンテンツ変更時に通知」シナリオには問題ありませんが、高周波コラボレーティブアプリケーション向けに構築されていません。

セルフホスティングとインフラストラクチャ

両方のツールはオープンソースであり、セルフホストできます。

DirectusはnpmパッケージとDockerイメージとして配布されるNode.jsアプリケーションです。セルフホスティングは簡単です。データベースをポイントし、環境変数を設定し、実行しています。Railway、Fly.io、AWS ECS、およびプレーンVPSインスタンスにデプロイしました。

Supabase セルフホスティングはより複雑です。フルスタックには、PostgreSQL、PostgREST、GoTrue(認証)、Realtime、Storage、Kong(APIゲートウェイ)、およびStudioダッシュボードが含まれます。Docker Composeセットアップは開発に機能しますが、本番セルフホスティングにはより多くの運用知識が必要です。特定のコンプライアンス要件がない限り、ほとんどのチームはSupabaseのホストプラットフォームを選択し、運用オーバーヘッドを節約します。

側面 Directusセルフホスティング Supabaseセルフホスティング
複雑さ 低-中(単一のNode.jsアプリ+ DB) 高(7以上のサービス)
Dockerサポート 公式イメージ、シンプル Docker Compose、複雑
最小リソース 1 vCPU、1GB RAM 4 vCPU、8GB RAM(すべてのサービス)
コミュニティガイド 広範 成長中ですが、より成熟していない
管理された代替品 Directus Cloud Supabaseプラットフォーム

2026年の価格設定

お金について話しましょう。これらは2026年初頭現在の公開価格です。

Directus Cloud

プラン 価格 含まれるもの
Community(セルフホスティング) 無料 すべて、自己管理
Standard $99/月 1つのプロジェクト、100K APIリクエスト、5GBアセット
Professional $399/月 カスタムドメイン、より多くのリソース、優先サポート
Enterprise カスタム SSO、SLA、専用インフラ

Supabase Platform

プラン 価格 含まれるもの
Free $0 500MB DB、1GBストレージ、50K認証ユーザー、500K エッジ関数呼び出し
Pro $25/月 8GB DB、100GBストレージ、100K認証ユーザー、2M エッジ関数呼び出し
Team $599/月 優先サポート、SOC2、日次バックアップ、28日ログ保持
Enterprise カスタム SLA、専用サポート、カスタムコントラクト

価格の違いは顕著です。Supabaseの無料層は、サイドプロジェクトとMVPに本当に使用可能です。Directus CloudのEntryポイント$ 99 /月は実験には高価です。ただし、$5/月VPSでのセルフホスティングDirectusは、小規模なプロジェクトで完璧に機能します。

アプリを構築するスタートアップの場合、Supabaseの$25/月Proプランは多くを提供します。コンテンツの多いWebサイトを実行する企業の場合、Directusセルフホスティングおよび管理PostgreSQLインスタンスは月額$20〜50の費用がかかる可能性があります。

開発者体験

多くのNext.jsプロジェクトAstroサイトを構築しているため、フレームワーク統合は私にとって重要です。

Directus DX

  • TypeScript SDKは良く、各リリースで改善中
  • スキーマタイプはインスタンスから生成できます
  • カスタムエンドポイント、フック、パネル、およびインターフェースの拡張システム
  • Flows(ビジュアル自動化)は単純なバックエンドロジックを置き換えることができます
  • 管理アプリはカスタムモジュールとレイアウトでカスタマイズ可能です
  • アセット配信APIに組み込まれた画像変換

Supabase DX

  • スキーマから自動生成されたTypeScript型(supabase gen types typescript
  • supabase startを使用したローカル開発(Dockerですべてを実行)
  • エッジ関数(Denoベース)サーバー側ロジック用
  • pgvectorを備えた組み込みベクトル検索、AI機能用
  • マイグレーション、ブランチ、CI/CDを使用したCLI駆動ワークフロー
  • Vercel/Netlify統合(環境変数同期用)

両方に堅実なドキュメントがあります。Supabaseのドキュメントは特に、フレームワーク固有のガイド(Next.js、Nuxt、SvelteKit、Flutter など)で整理されています。Directusのドキュメントは徹底的ですが、最新のSDK変更の後に遅れることがあります。

各ツールを使用する時期

両方で広範に構築した後、私の意思決定フレームワークは次のとおりです:

以下の場合、Directusを選択します:

  • コンテンツエディターにはポーランド語の管理インターフェイスが必要です
  • マーケティングサイト、ブログ、または編集プラットフォームを構築している
  • マルチ言語コンテンツ管理が必要です
  • 既存のデータベースには管理UIが必要です
  • コンテンツワークフロー(ドラフト、レビュー、承認)は重要です
  • MySQL、MariaDB、または別の非PostgreSQLデータベースを使用したい

以下の場合、Supabaseを選択します:

  • ユーザー向けアプリケーション(SaaS、マーケットプレイス、ソーシャル)を構築しています
  • 認証とユーザー管理が必要です
  • リアルタイム機能がコア要件です
  • サーバー側ロジック用のエッジ関数が必要です
  • AI/ベクトル検索がロードマップの一部です
  • アイデアから展開されたアプリまでの最速パスが必要です

両方を使用する場合:

これは狂っていません。Supabaseでユーザー認証、アプリデータ、リアルタイム機能を処理し、Directusでマーケティングサイトコンテンツ、ブログ、ドキュメントを管理するシステムを構築しました。彼らは同じPostgreSQLインスタンスを共有することも、別のデータベースを使用することもできます。懸念事項の分離は実際にアーキテクチャをより清潔にします。

プロジェクトのための適切なバックエンドアーキテクチャを理解しようとしている場合、それはリテラルで私たちのチームが行うことです - あなたの特定の状況について話し合うために連絡してください。

FAQ

DirectusはSupabaseをWebアプリのバックエンドとして置き換えることができますか? 部分的に。DirectusはデータベースAPIとユーザー管理を提供するため、単純なCRUDアプリでは機能します。ただし、Supabaseの組み込み認証システム、リアルタイムサブスクリプション、エッジ関数、ファイルストレージサービスが失われます。Directusはコンテンツ管理に最適化されており、アプリケーションバックエンドワークロード用ではありません。ほとんどのコンテンツ操作を含むシンプルなアプリの場合、Directusは問題ありません。ユーザー認証フロー、リアルタイム機能、または複雑なサーバー側ロジックを含むものについては、Supabaseまたは同様のBaaSが必要です。

Supabaseはヘッドレスcmsとして良いですか? それは1つとして機能することができますが、かなりのカスタム作業が必要です。コンテンツエディター用のカスタム管理インターフェイスを構築する必要があり、画像変換を個別に処理し、コンテンツバージョン管理を手動で実装し、独自のプレビューシステムを作成する必要があります。チームはSupabase + カスタムReactアドミンパネルを使用してこれを行っていますが、Directus(またはStrapi、またはPayload)が外の箱から提供するものを再発明しています。コンテンツ管理が主なニーズである場合は、専用のヘッドレスCMSを使用してください。

Next.jsアプリケーションにはどちらが適していますか? 両方がNext.jsとよく統合されます。Supabaseには公式Next.jsヘルパー(@supabase/ssr)があり、サーバーコンポーネント認証クッキー管理とミドルウェアを処理します。DirectusはNext.jsでもうまく機能します。サーバーコンポーネントのSDKを介してデータをフェッチし、パフォーマンスのためにISRまたはSSGを使用します。ブログを含むマーケティングサイト用にDirectusでNext.jsをペアに組み合わせます。ユーザーアカウント付きのSaaSアプリの場合、Supabaseを使用してNext.jsをペアに組み合わせます。これについては、Next.js開発実践でくわしく説明しています。

DirectusとSupabaseの両方を無料でセルフホストできますか? はい。両方ともオープンソースであり、寛容なライセンス(DirectusはBSL 1.1ライセンスを使用し、3年後にApache 2.0に変換される;SupabaseはほとんどのコンポーネントにApache 2.0を使用)です。Directusはセルフホストが簡単です。これは単一のNode.jsアプリです。Supabaseのセルフホスティングには複数のサービス(PostgreSQL、PostgREST、GoTrue、Realtime、Storage、Kong)を実行する必要があります。Supabaseの場合、ほとんどの開発者はSupabaseホストプラットフォームを使用し、運用オーバーヘッドを自分たちに保存します。

DirectusとSupabaseはファイルストレージとメディアをどのように処理しますか? Directusには、オンザフライ画像変換(サイズ変更、切り取り、形式変換)を備えた組み込みアセット管理システムがあります。ファイルを管理UI またはAPIを通じてアップロードし、URLパラメーターを介して変換されたバージョンをリクエストします。Supabase Storageはs3互換のファイルストレージサービスであり、RLSベースのアクセス制御を備えています。アップロードとダウンロードをうまく処理しますが、組み込み画像変換がありません。ImgixやCloudinaryなどのサービス、またはSupabaseの独自の画像変換(2025年ベータ版として起動)とペアにします。

パフォーマンスとスケーラビリティについてはどうですか? Supabaseのインフラストラクチャはコネクション プーリング経由のAWSで構築されており、実質的なトラフィックを処理できます。そのProプランのデータベースは最大64GB RAMインスタンスまでスケールできます。Directusのパフォーマンスは、ホスティングセットアップとデータベースに大きく依存します。適切なキャッシング(Redis、CDN)を使用すると、Directusは高トラフィックをよく処理しますが、インフラストラクチャに責任があります。ベンチマークでは、両方とも適切なリソースで秒単位で数千のリクエストを処理できます。ボトルネックはほぼ常にAPIレイヤーではなく、データベースです。

非技術的なメンバーを持つチームにはDirectusまたはSupabaseの方が優れていますか? 異議なくDirectus。その管理インターフェイスは非開発者向けに設計されています。カスタムダッシュボードを作成し、コンテンツ承認ワークフローを設定し、ロール別のアクセスを制限できます。すべてコードを書かずに。Supabaseのダッシュボードは開発者ツールです。マーケティングチームはランディングページを更新するためにSQLを記述しようとしていません。非技術的なチームメンバーがデータを管理する必要がある場合、DirectusのUIが正しい選択です。

後で他に移行できますか? 両方ともPostgreSQLと互換性があるため(およびDirectusは追加のデータベースをサポート)、マイグレーションは可能ですが些細ではありません。PostgreSQLを使用しているDirectusで実行されており、Supabaseを追加したい場合、既存のデータベースを指すか、データを移行することができます。Directusシステムテーブルとsupabaseの認証スキーマは共存するか、分離される必要があります。反対方向に行く - Supabaseデータベースの上にDirectusを追加する - は実際にはよく文書化されたパターンです。Directusはデータスキーマを修正することなく、既存のテーブルをイントロスペクトして管理層を作成できます。