0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Reactの次に学ぶ「Next.js × Supabase」実践ロードマップ その1

Posted at

はじめに

こんばんは!Testarossaです!

プログラミングを初めて1ヶ月の初心者です。

Reactの基礎を終えた後、次に何を学ぶべきか。本記事では、Next.jsを使ったモダンなWebアプリ開発から、GitHubでのブランチ管理、Supabaseを使ったデータベース連携まで、実際に遭遇したエラーとその解決策を交えて解説します。

今回の記事は長くなりそうなので何段階か分割してとうこうします。


ステップ1:GitHub主体のプロジェクト開始とGitの壁

プロジェクトの開始時に、GitHubのリポジトリとローカル環境を同期させる際、よく遭遇する「Non-fast-forward」エラーの解決からスタートしました。

遭遇した問題

git push した際に、リモートとローカルの履歴が異なり拒否される。

解決策

# リモートの変更を取り込む
git pull origin main --allow-unrelated-histories

# または、GitHubからクローンし直した後に create-next-app を実行
npx create-next-app@latest .


ステップ2:Next.js App Routerの基本とディレクトリ構造

Next.js 13以降の標準である App Router を学びます。

学んだポイント

  • ファイルシステムルーティング: app/about/page.tsx を作るだけで /about というページが完成する。
  • srcフォルダの有無: プロジェクト作成時の選択肢で src フォルダの有無が決まるが、どちらでも動作に影響はない(今回は src なし構成)。
  • 共通レイアウト: layout.tsx を使うことで、全ページ共通のヘッダーやフッターを簡単に実装可能。

ステップ3:インタラクティブな機能とデータ取得

ReactのHooks(useState)と、Next.js独自のデータ取得手法を組み合わせます。

  1. Client Components: use client を宣言して、フォーム入力やボタンクリックなどの動きを作る。
  2. Data Fetching: APIからデータを取得し、ページに表示する。
  3. Server Actions: フォーム送信時にサーバー側で直接処理を行うNext.jsの強力な機能。

ステップ4:Supabaseによるバックエンドの構築

データベースには Supabase を採用しました。

💡 苦労したポイント:環境変数のエラー

⨯ Error: supabaseUrl is required.
このエラーは、.env.local ファイルに記述した NEXT_PUBLIC_SUPABASE_URL が正しく読み込まれていない、あるいは定義されていないことが原因です。

解決策:

  • Supabaseの Project Settings > API から URL と Anon Key をコピー。
  • .env.local に正確に貼り付け、サーバーを再起動する。

ステップ5:RLS(Row Level Security)の壁を越える

データを投稿しても反映されない問題。これはSupabaseのセキュリティ機能 RLS が原因でした。

RLSの設定方法

投稿(INSERT)を許可するためには、ポリシーを作成する必要があります。

項目 設定内容
Policy Name Enable insert for anonymous users (任意)
Policy Command INSERT (および SELECT)
Target Roles anon
WITH CHECK true (すべての投稿を許可する場合)

注意: 開発中は Disable RLS で通すことも可能ですが、本番公開前には必ず適切なポリシー(認証済みユーザーのみ等)を設定しましょう。


まとめ:学習を終えて

最初はGitのエラーで立ち止まりましたが、最終的にはSupabaseと連携した掲示板を完成させることができました。

  • Next.js はルーティングが直感的。
  • Server Actions はAPIエンドポイントを作る手間を省いてくれる。
  • Supabase はRLSさえ理解すれば、最強の味方になる。

ここまでがその1になります。
次回はログイン機能を実装するところとそのあとやったことを投稿します!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?