React 19とNext.jsのServer Actions
Server Actionsがサーバー上で実行され、サーバーコンテキストをクロージャーとして保持し、クライアントにデータを返す仕組みを理解します。
「React 19とNext.jsのServer Actions」はCoddyKit上の無料React Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはReact Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 React Academyコースには全4レッスンが含まれています。
Server Actions とは
Server Actions は、ブラウザーではなくサーバー上で実行される非同期関数です。ファイルの先頭または関数本体の先頭に 'use server' ディレクティブを記述して指定します。これにより、この関数がクライアント側では決して実行されないことをフレームワークに伝えます。
サーバーコンテキストへのアクセス
Server Actionsはサーバー上で実行されるため、データベース接続、環境変数のシークレット、セッションデータ、ファイルシステムリソースなど、サーバーのコンテキスト全体にアクセスできます。これは、ブラウザーが公開する情報にしかアクセスできないクライアントコンポーネントとは根本的に異なります。
内部で行われるHTTP通信
クライアントコンポーネントがServer Actionを呼び出すと、Next.jsは特別なRSCエンドポイントに対してHTTP POSTリクエストを自動的に送信します。引数のシリアライズやトランスポート層はフレームワークがすべて処理するため、これらのミューテーションのためにfetch()呼び出しを手動で記述する必要はありません。
API Routeは不要
Server Actionsを使うと、多くのミューテーション処理でAPI Routeが不要になります。Action自体がエンドポイントになるため、ロジックをサーバー関数として一度定義し、ローカル関数であるかのようにクライアントコンポーネントから直接呼び出せます。
React 19の第一級機能
Server Actionsは当初Next.js固有の概念でしたが、React 19ではReactの第一級機能に昇格しました。これにより、Next.js以外のバンドラーやフレームワークでも、Reactの仕様に従って同じパターンを実装できます。
安定性と提供状況
Server ActionsはReact 19 RCでは実験的な機能ですが、導入当初からNext.js 14以降のApp Routerでは安定版として提供されています。現在Next.js App Routerで本番アプリケーションを構築する場合、Server Actionsは完全にサポートされている推奨パターンです。
セキュリティ:シークレットはサーバーに留まる
Server Actionsの最も重要なセキュリティ特性の1つは、シークレットがブラウザーに届かないことです。Server Action内で使用するデータベースのパスワードやAPIキーなどの環境変数がクライアントバンドルに含まれることはありません。関数本体がブラウザーに送信されないためです。
フォームとServer Actions
HTMLのフォーム要素では、action属性を使ってServer Actionを直接指定できます:<form action={myServerAction}>。Reactがフォーム送信をインターセプトし、フォームデータを使ってServer Actionを呼び出すため、クライアント側のJavaScriptによる処理を組み立てなくてもサーバー側でミューテーションを実行できます。
リクエストとレスポンスのサイクル
Server Actionが実行されると、ReactはActionの引数をPOSTリクエストのボディにシリアライズします。サーバーはそれらをデシリアライズして関数を実行し、戻り値をシリアライズして返します。境界を越えて受け渡せるのは、シリアライズ可能な値(文字列、数値、配列、プレーンオブジェクト)だけです。
Server Actionの定義
ファイルの先頭に'use server'を記述し、モジュールレベルでServer Actionを定義できます。または、Server Component内でasync関数の先頭に'use server'を記述してインラインで定義することもできます。どちらの方法でも、サーバー上でのみ呼び出せる関数が作成されます。
クライアントコンポーネントからの呼び出し
クライアントコンポーネントでは、通常のasync関数と同じようにServer Actionsをインポートして呼び出せます。呼び出し構文はローカルのasync関数を呼び出す場合と同じですが、実行はすべてサーバー上で行われます。この抽象化により、クライアントコンポーネントをすっきり保ち、fetchの定型コードをなくせます。
セキュリティモデルに関する問題
次のうち、Server Actionsのセキュリティモデルを最も適切に説明しているものはどれですか。
レッスンのまとめ
Server Actionsは、'use server'でマークされたasyncのサーバー側関数です。データベース接続や環境変数のシークレットなど、サーバーコンテキストを利用できます。HTTP通信はNext.jsが自動的に処理し、React 19ではフレームワークに依存しない機能になっています。フォームからはaction属性で直接使用でき、内部のシークレットがブラウザーに届くことはありません。
よくある質問
「React 19とNext.jsのServer Actions」レッスンは無料ですか?
はい。「React 19とNext.jsのServer Actions」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、React Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 React Academyコースには全4レッスンが含まれています。
「React 19とNext.jsのServer Actions」で何を学びますか?
Server Actionsがサーバー上で実行され、サーバーコンテキストをクロージャーとして保持し、クライアントにデータを返す仕組みを理解します。 ブラウザで直接実行するハンズオンコードでReact Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
React Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのReact Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「React 19とNext.jsのServer Actions」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このReact Academyレッスンでコードを書いて実行できますか?
はい。すべてのReact Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- React 19とNext.jsのServer Actions
- Form Actions:ミューテーションのAPI Routesを置き換える
- useActionStateとuseFormStatus
- Server Actionsによるプログレッシブエンハンスメント