00:00:00もしPostgresデータベースがそのままAPIになり、
00:00:05バックエンドのコードを一切書かなくて済むとしたらどうでしょう?
00:00:14APIを作るたびに、同じようなコードを何度も書いていますよね。
00:00:21ルーティング、コントローラー、バリデーション、認証など、
00:00:29すべてはデータベースとやり取りするためだけのものです。
00:00:31そしてカラムを1つ変えるだけで、すべてが壊れてしまいます。
00:00:40カスタムコードも、コントローラーも、ORMレイヤーも不要です。
00:00:44それがPostgRESTです。Supabaseの裏側で動いているエンジンであり、
00:00:49本格的な商用トラフィックにも対応しています。
00:00:56これから、わずか数分でその方法をお見せしましょう。
00:01:03API開発において、これはスタック全体の中で
00:01:10最も厄介な悩みを解決してくれます。
00:01:19ロジックの重複です。データベースでデータを定義し、
00:01:24別の場所でアクセスルールやコード、バリデーションを定義します。
00:01:26さらにレスポンス処理も別の場所で行います。
00:01:32同じシステムなのに階層が分かれ、バグが混入する隙だらけです。
00:01:38PostgRESTはこれらを一掃します。GitHubで26,000以上のスターを獲得し、
00:01:45Supabaseによって商用規模で利用されています。
00:01:51スキーマをわずか数分で、本番対応のREST APIに変換します。
00:01:55ORMもコントローラーもありません。
00:02:04セキュリティはデータベース内で完結するため、重複や保守の手間が減り、
00:02:09退屈な繋ぎ込み作業に費やす時間を大幅に削減できます。
00:02:17お見せしましょう。ワークフローを加速させるツールがお好きなら、
00:02:22ぜひチャンネル登録をお願いします。定期的に動画を公開しています。
00:02:29では、実際に作ってみましょう。構成はコンテナ3つ。
00:02:35それだけです。Postgres、PostgREST、そしてドキュメント用のSwagger UIです。
00:02:41これがDocker Composeファイルです。特別なことは何もありません。
00:02:503つのサービスを連携させているだけです。
00:02:56docker-composeコマンドで起動すれば、準備完了です。
00:03:04依存関係のインストールも、サーバーの設定も不要です。データベースを見てみましょう。
00:03:11このコマンドを実行します。非常にシンプルな「todos」テーブルです。
00:03:21ID、タイトル、完了フラグ、作成日時など、基本的な項目だけです。
00:03:26構成はこれだけですが、ここからが本領発揮です。
00:03:33行単位セキュリティ(RLS)です。誰がどのデータにアクセスできるかを、
00:03:40SQLでデータベース内に直接定義します。
00:03:45システムの別の場所に認証ロジックを置く必要はありません。ポリシーはこちらです。
00:03:52匿名ユーザーにフルアクセスを許可する設定にしています。
00:04:02では、このcurlコマンドでtodosを取得してみましょう。ご覧の通り、
00:04:07APIコードなしでPostgresから直接JSONが返ってきました。
00:04:13フィルタリングも即座に機能します。
00:04:23ソートも一瞬です。次に、新しい行を追加してみましょう。
00:04:28JSONボディを付けてPOSTリクエストを送るだけで完了です。
00:04:34すでにデータベースに反映されています。同期を待つORMレイヤーもありません。
00:04:38そして驚くべきは、OpenAPIドキュメントとSwagger UIが自動生成されることです。
00:04:43これを開けば、フル機能のインタラクティブなAPIを確認できます。
00:04:51エンドポイントのテストやスキーマの確認も自由自在です。
00:04:55ゼロから、CRUD、フィルタリング、ソート、ページネーションが揃い、
00:05:02RLSによる認証とドキュメントまでが1分足らずで手に入ります。
00:05:10なぜこれを使うのか? 従来のバックエンド開発には「税金」があるからです。
00:05:15その大半は製品開発ではなく、ただの保守作業です。
00:05:23一般的なスタック、例えばExpressやPrismaでは、コントローラーや
00:05:32バリデーションが点在し、認証も別の場所にあります。
00:05:40対してPostgRESTなら、スキーマがAPIを定義し、セキュリティはRLSです。
00:05:50リレーションも既にDBにあります。データの周囲に翻訳レイヤーを築くのではなく、
00:05:58データを正しく公開するだけ。これが大きな違いです。