use server を付けると、クライアントからサーバーの関数を直接呼び出せるようになるってことを理解した
2026年01月09日
Next.js(App Router)では、use server を使うことでクライアントコンポーネントからサーバー上の関数を直接呼び出すことができます。
これは Server Actions と呼ばれる仕組みで、API Route を書かずにサーバー処理を実行できるのが大きな特徴です。
ここで疑問に思いました。サーバーコンポーネントでデータ取得している処理はuse serverと書いていないのにデータ取得できているのはなぜなんだ?と。
理由は簡単でした。1行目で書いているように、クライアントからのサーバー上の関数を呼び出すためにuse serverを書いているのであって、サーバーコンポーネントからデータ取得の場合は必要ないんだと。
つまり、use serverと書くことでそのファイルもしくは関数がクライアントから実行できるように公開されてしまうので、クライアントコンポーネントから実行させたい関数のみをuse serverで公開するようにしないと、クライアントからサーバーの関数を呼びまくれちゃうじゃんよと言う話でした。