SQLデータベースを瞬時にバックエンドへ変換するツール (Directus)

BBetter Stack
Computing/SoftwareSmall Business/StartupsInternet Technology

Transcript

00:00:00さて、これまでに全く同じバックエンドを
00:00:04何度作り直してきましたか?
00:00:07CRUD、認証、管理パネル、ファイルアップロード。
00:00:10構築しているように見えて、その多くは単なる「再構築」に過ぎません。
00:00:15もし、既存のSQLデータベースにツールを向けるだけで、
00:00:21完全なバックエンドが手に入るとしたらどうでしょう?
00:00:25それがDirectusです。SQLデータベースのコンテンツを管理するための、
00:00:30リアルタイムAPIとアプリダッシュボードです。
00:00:33多くの開発者が、自分たちがずっと難しい方法で
00:00:38作業していたことに気づき始めています。
00:00:42これらすべてがどう機能するか、わずか数分でお見せしましょう。
00:00:44[音楽]
00:00:46私たちのほとんどにとって、バックエンドの最大の問題は複雑さではなく、
00:00:50反復作業です。
00:00:53新しい問題を解決しているのではなく、同じコードを何度も何度も書いており、
00:00:57それがただ時間を浪費させているのです。
00:01:01Directusはそれをすべてカットします。
00:01:05Postgres、MySQL、Oracleデータベースに直接接続します。
00:01:08マイグレーションも、別の場所へのスキーマの再構築も不要です。
00:01:10即座にRESTとGraphQL API、
00:01:12フィールドレベルの権限、リアルタイム・サブスクリプション、
00:01:13フローと自動化、ファイル処理、そしてクリーンな管理UIが手に入ります。
00:01:17ここで素晴らしいのは、データベースがそのまま残ることです。
00:01:18重複したレイヤーではありません。
00:01:20これは見た目以上に重要なことです。
00:01:24では、お見せしましょう。
00:01:27ワークフローを加速させるオープンソースツールやコーディングのヒントがお好きなら、
00:01:32ぜひチャンネル登録をお願いします。
00:01:34常に新しい動画を公開しています。
00:01:39さて、完全にゼロの状態から、クリーンなDirectusのインストールで始めます。
00:01:45データベーステーブルもなく、何もプリロードされていません。
00:01:45アカウントを作成した直後の、完全に真っ白なキャンバスです。
00:01:51既存のものに接続する代わりに、
00:01:54わずか1分ほどで完全な注文管理アプリを構築してみます。
00:01:58まず、コレクションを作成し、名前を「Orders」にします。こんな感じです。
00:02:00それだけです。
00:02:03これでアプリにデータを保存する場所ができました。詳細を追加していきましょう。
00:02:08必要なものを選択して上書きします。
00:02:10顧客名や日付など、主要な項目ですね。
00:02:13その後、必要と思われる他のフィールドを
00:02:16手動で追加できます。
00:02:18顧客名、メールアドレス、ドロップダウンとしての製品などを設定し、
00:02:19キーと値を追加できます。
00:02:20金額やステータスについても同様です。
00:02:22各フィールドが、保存するデータの詳細を定義していきます。
00:02:25そして、ここで何が「ない」かに注目してください。
00:02:28SQLです。
00:02:32SQLを書く必要はありません。
00:02:35マイグレーションもありません。
00:02:36スキーマファイルを書くためにタブを切り替える必要もありません。
00:02:39Directus内ですぐに保存されます。
00:02:42これでコンテンツビューに移動して、注文の追加を開始できます。
00:02:45最初の注文を追加します。テスト用のアカウントです。
00:02:49もう一つ追加します。
00:02:50そして3つ目も追加しましょう。
00:02:51システム内に3つの異なる注文ができました。
00:02:53これで、実際に動かせるデータが手に入りました。
00:02:55しかし、今は完全に開放されているので、誰でも何でもできてしまいます。
00:02:58それを修正しましょう。
00:03:00どうやって修正するのか?
00:03:03権限(パーミッション)を使います。
00:03:05「Public」ロールに移動します。
00:03:06先ほど作成した「Orders」コレクションを探します。
00:03:10「Read(読み取り)」をオンにします。
00:03:12それ以外の「作成」「更新」「削除」は
00:03:16すべてオフになっていることを確認します。
00:03:19これで制限され、より安全になりました。
00:03:22さて、ここからが本当に面白いところです。
00:03:24自動化を行い、これに関連する「フロー」を構築できるからです。
00:03:26こちらへ移動して、新しいフローを作成します。
00:03:31非常にシンプルな名前にしましょう。
00:03:33「新規注文の通知」にします。目的が明確な名前です。
00:03:37作成した「Orders」コレクションのアイテムからすべてを選択します。
00:03:39次にトリガーを構築します。
00:03:43トリガーには、新しいアイテムが作成された時を指定します。
00:03:44具体的には「Orders」コレクション内です。
00:03:46これで、新しい注文が入るたびに何かが起こるようになります。
00:03:47オペレーション(操作)を追加します。
00:03:49メールを送信するようにします。
00:03:52件名を書き、
00:03:56自分のメールアドレスを追加します。
00:04:00そして本文に、注文データを引き込みます。
00:04:02新しい注文が入るたびに、そのデータがメールで送信されます。
00:04:03このオペレーションを保存し、フローも保存すれば完了です。
00:04:07では、これを見てください。
00:04:11戻ります。
00:04:14最初のDocker Composeファイルに、テスト用にMailpitを追加しておきました。
00:04:16これはメール送信機能をテストする非常に簡単な方法です。
00:04:20もう一つ注文を作成します。先ほどと同じで特別なことはありませんが、
00:04:22今回は結果が違います。
00:04:25フローが自動的にトリガーされ、詳細が記載されたメールが送信されます。
00:04:30バックエンドのロジックは一切書いていません。
00:04:33配線を繋ぎ合わせる作業もありません。
00:04:35最初は何もありませんでした。テーブルも、バックエンドも、構造も。
00:04:38それがわずか数分で、データ、権限、そして
00:04:43自動化を備えた、実際に動作するアプリになりました。
00:04:45これがDirectusの素晴らしい点です。
00:04:47視覚的なデータベースロジックに、n8nやZapierが内蔵されているような感覚ですが、
00:04:52競合相手はそこではありません。
00:04:53では、Directusとは正確には何なのでしょうか?
00:04:55それはSQLデータベースの「上」に構築されるオープンソースのデータプラットフォームです。
00:04:58横に並ぶのではなく、
00:04:59上に乗るのです。
00:05:01この「データベース第一」のモデルが最大のポイントです。
00:05:03これが実際には何を意味するのか?
00:05:07私たちにとっていくつかの意味があります。
00:05:13まず、ロックインがないということです。
00:05:15完全なSQLが残っており、レガシーシステムとも連携できます。
00:05:19そのため、SaaSのバックエンド、社内ツール、ヘッドレスCMS、
00:05:21データ制御されたAIエージェントなどに利用されています。
00:05:24すべてを書き直すことなく、古いシステムを近代化しようとする場合、
00:05:28データベースこそが実際のエンジンとなります。
00:05:33Directusはそれにダッシュボードと制御機能を与えるだけです。
00:05:36一見すると、Strapi、Payload、Hasuraなどのツールを
00:05:40使ったことがあれば似ているように見えますが、解決する問題が異なります。
00:05:42StrapiやPayloadは「コード第一」です。
00:05:45コードでスキーマを定義し、そこで構造を再構築します。
00:05:50それは機能しますが、追加の作業が発生します。
00:05:52Directusはいくつかのアプローチでそれを変えます。
00:05:58スキーマは既に存在するので、再作成するのではなく、接続するだけです。
00:05:59ワークフローが全く異なります。
00:06:05Hasuraは高速なGraphQLには最適ですが、Directusはそれよりも幅広く対応します。
00:06:10APIはもちろん提供されますが、
00:06:12管理ワークスペース、権限管理、ファイル、自動化も手に入ります。
00:06:15そして、ほとんどの開発者が試した後に重視するのが、権限管理です。
00:06:18単なるルール設定の話ではありません。
00:06:23プラグインなしで実現できる、本物の制御についてです。
00:06:26「バックエンドが必要だ」という問題なら、選択肢は他にもあります。
00:06:28しかし「バックエンドを二度と作り直したくない」という問題なら、話は別です。
00:06:29もちろん完璧なツールはありませんが、これは非常に優れています。
00:06:30何が特にクールだと思ったか?
00:06:32まず、権限設定が非常にスムーズに機能することです。
00:06:37これは素晴らしい。
00:06:39フロー機能が多くの雑務を取り除いてくれます。
00:06:43UIは非常にクリーンで高速、Dockerでのデプロイも簡単です。
00:06:46さらに、スケーラビリティも非常に高いです。
00:06:49こうしたメリットがある一方で、当然デメリットもあります。
00:06:51トレードオフとしては、高度なフローの作成には時間がかかることでしょう。
00:06:54n8nなどを使ったことがあれば、理解できるはずです。
00:06:57ドキュメントが常に完璧というわけでもありません。
00:07:00また、セルフホストする場合は、インフラを自分で管理する必要があります。
00:07:02さらに、複雑な設定はローカルで煩雑になる可能性があります。
00:07:03Directusは、特定の種類の繰り返されるバックエンド作業を排除してくれます。
00:07:07では、Directusは使う価値があるでしょうか?
00:07:11多くの人にとって、おそらく「イエス」です。
00:07:13何をしているかによりますが、特に既にSQLデータがある場合や、
00:07:17何度も繰り返される基本的なバックエンド構築に疲れているなら、
00:07:19これは真の価値をもたらします。
00:07:20時間の節約になり、メンテナンスを減らし、データの制御を維持できます。
00:07:22繰り返しますが、これはオープンソースです。
00:07:26私たちがコントロールできるのです。
00:07:29では、いつこれを使わないべきでしょうか?
00:07:33厳格なTypeScriptの巨大なモノレポなら、おそらく向かないでしょう。
00:07:34既存のデータベースがない場合も同様です。
00:07:38最初からすべてをコードで定義したいのであれば、Payloadのようなもののほうが
00:07:39ずっと理にかなっています。
00:07:41しかし、もし今「えっ、既存のデータベースに乗せるだけでいいの?」と思っているなら、
00:07:45そうです、可能です。
00:07:46試してみる価値はあるかもしれません。

Key Takeaway

Directusは既存のSQLデータベースに直接接続する「データベース第一」モデルを採用しており、API、管理UI、自動化フローをコード記述なしで瞬時に生成することで、反復的なバックエンド開発作業を完全に排除します。

Highlights

DirectusはPostgres、MySQL、Oracleデータベースへ直接接続し、既存のスキーマを再構築することなくバックエンドを構築します。

データベースに接続するだけで、RESTおよびGraphQL API、フィールドレベルの権限管理、リアルタイム・サブスクリプションが即座に生成されます。

SQLコードの記述やマイグレーション作業を一切行わずに、注文管理アプリなどのデータ構造と管理UIを数分で作成できます。

「Public」ロールの読み取り専用設定など、プラグインなしで詳細なアクセス制御とセキュリティ設定が可能です。

新しいアイテムの作成をトリガーにしてメール送信などの処理を自動化する「フロー」機能により、バックエンドロジックのコーディングが不要になります。

既存のSQLデータベースの上に構築されるオープンソースプラットフォームであるため、ベンダーロックインが発生せず、データ制御を維持できます。

Timeline

バックエンド開発における反復作業の解消

  • 多くの開発者がCRUD、認証、管理パネルといった共通機能を何度も作り直す「再構築」に時間を費やしています。
  • Directusは既存のデータベースに接続するだけで、APIやダッシュボードを備えた完全なバックエンドを提供します。
  • データベースレイヤーと重複することなく、既存のデータをそのまま活用できる構造が特徴です。

開発者が直面する最大の問題は複雑さではなく、同じコードを何度も書く反復作業による時間の浪費です。DirectusはPostgresやMySQLなどの主要なSQLデータベースに直接乗り、マイグレーションやスキーマの再定義を不要にします。これにより、REST/GraphQL APIやリアルタイム通信、権限管理といった機能が即座に利用可能になります。

コードレスでのアプリケーション構築実践

  • SQLの記述やスキーマファイルの編集を行わずに、管理UI上でコレクションとフィールドを作成できます。
  • 「Orders」コレクションに顧客名、メール、製品ドロップダウンなどのフィールドを定義し、即座にデータ入力を開始できます。
  • 「Public」ロールの設定を通じて、特定のコレクションに対する読み取り権限のみを許可するなどのセキュリティ制限が容易です。

完全に空の状態から、1分ほどで注文管理アプリの基礎を構築できる実例を示します。ブラウザ上の操作だけでデータベーステーブルに相当するコレクションを作成し、各フィールドのデータ型を定義します。SQLの知識がなくてもデータの保存場所を確保でき、コンテンツビューからすぐにテストデータの追加や閲覧が可能です。

自動化フローによるロジックの実装

  • 「フロー」機能を使用することで、n8nやZapierのような視覚的なロジック構築がDirectus内で完結します。
  • 新しい注文が作成されたことをトリガーに、特定のメールアドレスへ詳細データを自動送信する設定が可能です。
  • バックエンドの配線作業やロジックのコーディングなしで、数分以内に動作するアプリが完成します。

特定のアクションに連動する自動化処理を視覚的に組み立てる方法を解説します。例えば、新規注文が入るたびにメール通知を送信するフローを構築する場合、トリガーとオペレーションを繋ぐだけで完了します。Docker ComposeでMailpitなどのテストツールを併用することで、実際にコードを書くことなく通知機能の動作確認までスムーズに行えます。

Directusの設計思想と競合比較

  • Directusはデータベースの「横」ではなく「上」に位置する、データベース第一(Database-first)モデルです。
  • StrapiやPayloadのような「コード第一」のツールと異なり、既存のスキーマを再作成する手間が省けます。
  • HasuraがGraphQLに特化しているのに対し、Directusは管理ワークスペースやファイル処理まで幅広くカバーします。

SQLデータベースをエンジンの中心に据えることで、既存のレガシーシステムとの連携やモダンなインターフェースの追加を容易にします。コードでスキーマを定義するアプローチに比べて追加作業が少なく、ベンダーロックインを回避できる点が最大の利点です。API提供だけでなく、管理者の操作性や権限管理の柔軟性に重きを置いています。

導入のメリットと運用のトレードオフ

  • UIのクリーンさ、Dockerデプロイの容易さ、そして高度なスケーラビリティが主な利点です。
  • 複雑なフローの作成には習熟が必要であり、セルフホストの場合はインフラ管理の責任が生じます。
  • 既存のデータベースがない場合や、TypeScriptによる厳格なモノレポ構成には向かない場合があります。

権限設定の滑らかさや雑務を減らすフロー機能は高く評価される一方で、ドキュメントの不完全さや設定の煩雑さといった課題も存在します。すでにSQLデータが存在する場合や、基本的なバックエンド構築を効率化したい場合には真の価値を発揮します。最終的には、すべてをコードで制御したいのか、既存の資産を活かして迅速に構築したいのかによって選択が分かれます。

Community Posts

View all posts