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試してみる価値はあるかもしれません。