SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

メシウスの高速・軽量なJavaScript UIライブラリ「Wijmo」活用(AD)

Server Actionsと「Wijmo」でCRUD処理可能なデータグリッドを手軽に実装しよう

Next.jsとServer Actions

 Server Actionsは、APIエンドポイント不要でシンプルな実装が可能なNext.jsのデータ送信機能です。TypeScriptとの相性が良く型安全性が向上し、Server ComponentsやClient Componentsとの自然な連携ができます。従来のAPI Routesでは/api/xxxエンドポイントを定義してfetchで呼び出す必要がありましたが、Server Actionsでは関数を直接呼び出すだけで済みます。

 'use server'ディレクティブをファイルの先頭に配置すると、ファイル内の全関数がServer Actionsになります(リスト1)。

[リスト1]Server Actions
"use server";

export async function createOrder(formData: FormData) {
  // サーバーサイドで実行される処理
}

 この例では、クライアントから直接createOrder関数を呼び出しつつ、実際に関数が実行されるのはサーバー側、という動きになります。

プロジェクトのセットアップ

 まず、Next.jsプロジェクトを作成します。以下のコマンドを実行し、TypeScript、ESLint、Tailwind CSS、App Routerを有効にする推奨設定を選択します(リスト2)。

[リスト2]Next.jsプロジェクト作成
npx create-next-app@latest wijmo-serveractions-app
cd wijmo-serveractions-app

 プロジェクトが作成されたら、npm run devで開発サーバーを起動し、正常に動作することを確認します(図2)。

図2:Next.jsが動いた
図2:Next.jsが動いた

 確認できたら次へ進みましょう。

MySQLとPrismaの設定

 次に、データベース環境を構築します。今回はMySQLをPrismaから操作することにします。読者各位の慣れた方法でMySQLを起動して、PrismaでORMを設定しましょう(リスト3)。

[リスト3]Prismaのインストールと初期化
# Prismaのインストール
npm install prisma --save-dev
npm install @prisma/client

# Prisma初期化(MySQL用)
npx prisma init --datasource-provider mysql

 Prismaの初期化後、.envファイルに接続設定を記載します(リスト4)。

[リスト4].env
# 各位の環境に合わせたMySQLの接続先情報を書いてください
DATABASE_URL="mysql://root:rootpassword@localhost:3306/wijmo_db"

 次は、prisma/schema.prismaでサンプルデータ格納用のOrderDataモデルを定義します(リスト5)。

[リスト5]prisma/schema.prisma
# 略
model OrderData {
  id        Int      @id @default(autoincrement())
  product   String
  price     Int
  quantity  Int
  orderdate DateTime
}

 定義できたら、マイグレーションとシードを実行します。シード(seed)処理とは、データベースに初期データを投入する処理のことで、開発やテストに必要なサンプルデータを自動的に準備できます。今回のシード処理はprisma/seed.tsに定義済みです。詳細はダウンロードサンプルのprisma/seed.tsを参照してください(リスト6)。

[リスト6]マイグレーションとシード実行
npx prisma migrate dev --name init
npx prisma db seed

 これでデータベースにテーブルが作成され、サンプルデータが投入されます。npx prisma studioで投入されたデータを確認できます(図3)。

図3:データがあることを確認
図3:データがあることを確認

 シード処理で入れたデータが入っていますね。

Wijmoのインストールとライセンス設定

 最後に、Wijmoパッケージをインストールします。@mescius/wijmo.react.allで必要なコンポーネントが一括インストールされます(リスト7)。

[リスト7]Wijmoインストール
npm install @mescius/wijmo.react.all

 ライセンスキーは.envファイルにNEXT_PUBLIC_プレフィックスを付けて設定します。このプレフィックスにより、Client Componentからアクセス可能になります(リスト8)。

[リスト8].env
DATABASE_URL=...
NEXT_PUBLIC_WIJMO_LICENSE_KEY="your-license-key"

 ライセンスキーを設定したら、これを読み込んで適用するコンポーネントを作成します。見た目を持たないClient Componentとして定義し、setLicenseKey()でライセンスを有効化します(リスト9)。

[リスト9]components/WijmoLicense.tsx
"use client";
import { setLicenseKey } from "@mescius/wijmo";

const licenseKey = process.env.NEXT_PUBLIC_WIJMO_LICENSE_KEY;
if (licenseKey) {
  setLicenseKey(licenseKey);
}

export default function WijmoLicense() {
  return null;
}

 このコンポーネントをレイアウトファイルからインポートし、全ページで読み込まれるようにします(リスト10)。

[リスト10]app/layout.tsx
import WijmoLicense from "@/components/WijmoLicense";

export default function RootLayout({ children }) {
  return (
    <html>
      <body>
        <WijmoLicense />
        {children}
      </body>
    </html>
  );
}

 これでセットアップは完了です。

次のページ
【基本編】Input系コントロールでデータ登録

この記事は参考になりましたか?

この記事の著者

WINGSプロジェクト 中川幸哉(ナカガワユキヤ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

提供:メシウス株式会社

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/22788 2026/01/19 12:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング