【2026年最新】Medusa.jsでECサイト構築する3ステップ完全ガイド
自社ECサイトの構築を検討しているけれど、Shopifyなどの既存プラットフォームでは柔軟性に限界を感じていませんか?Medusa.jsは、Node.jsベースのオープンソースECプラットフォームとして、カスタマイズ性と拡張性を重視する開発者に注目されています。本記事では、Medusa.jsを使ったECサイト構築の全工程を、実務担当者が即実践できる3つのステップで詳しく解説します。
Medusa.jsとは?なぜ今注目されているのか
Medusa.jsは、Node.jsとTypeScriptで構築されたヘッドレスコマースプラットフォームです。2026年現在、グローバルで開発者コミュニティが拡大しており、以下のような特徴から多くの企業で採用が進んでいます。
主な特徴
- オープンソース: 無料で利用でき、ソースコードの完全なカスタマイズが可能
- ヘッドレスアーキテクチャ: フロントエンドを自由に選択でき、Next.js、Gatsby、Nuxt.jsなどと連携可能
- モジュラー設計: 必要な機能だけを組み込める柔軟な構造
- REST/GraphQL API: 豊富なAPIにより外部システムとの統合が容易
従来のShopifyやWooCommerceと比較して、Medusa.jsは開発の自由度が高く、エンタープライズレベルのカスタマイズにも対応できる点が大きな強みです。
ステップ1:Medusa.js開発環境のセットアップと初期設定
まずは開発環境を構築しましょう。以下の手順で、ローカル環境にMedusa.jsをインストールします。
必要な環境
- Node.js 16以上(推奨:18.x以降)
- PostgreSQLまたはSQLite(開発環境ではSQLiteでも可)
- Redisサーバー
- Git
インストール手順
bash
Medusa CLIのインストール
npm install -g @medusajs/medusa-cli
新規プロジェクトの作成
medusa new my-store
プロジェクトディレクトリに移動
cd my-store
初期データのシード
medusa seed -f ./data/seed.json
環境変数の設定
.envファイルを作成し、必要な環境変数を設定します。
DATABASEURL=postgres://username:password@localhost:5432/medusa-store REDISURL=redis://localhost:6379 JWTSECRET=your-secret-key COOKIESECRET=your-cookie-secret
セキュリティのポイント: シークレットキーは必ず強力なランダム文字列を生成し、本番環境では環境変数管理サービス(AWS Secrets ManagerやHashiCorp Vaultなど)で管理することを推奨します。
開発サーバーの起動
bash
開発サーバーの起動
medusa develop
管理画面(Admin UI)は別途起動
cd my-store-admin npm run start
これで、http://localhost:9000でMedusa.jsのバックエンドAPI、http://localhost:7001で管理画面にアクセスできます。
ステップ2:商品データベース構築と管理画面のカスタマイズ
環境構築が完了したら、商品データベースの設計と管理画面のカスタマイズに進みます。
商品データの構造設計
Medusa.jsでは、以下の基本エンティティで商品を管理します。
- Product: 商品の基本情報(名前、説明、画像など)
- Variant: 商品のバリエーション(サイズ、色など)
- Price: 価格情報(通貨、地域別価格)
- Inventory: 在庫管理
管理画面からの商品登録
- 管理画面(
http://localhost:7001)にログイン - 「Products」メニューから「Add Product」を選択
- 必要情報を入力:
- タイトル
- 説明文
- カテゴリー
- 商品画像(複数アップロード可能)
- バリエーション(サイズ、色など)
- 価格設定
カスタムフィールドの追加
標準の商品属性だけでは不足する場合、カスタムフィールドを追加できます。
typescript // src/models/product.ts import { Column, Entity } from "typeorm" import { Product as MedusaProduct } from "@medusajs/medusa"
@Entity() export class Product extends MedusaProduct { @Column({ type: "varchar", nullable: true }) manufacturer?: string
@Column({ type: "int", nullable: true }) warranty_period?: number }
管理画面のカスタマイズ
Medusa.jsの管理画面は、React(Admin UI)で構築されており、カスタムウィジェットやページを追加できます。
jsx // src/admin/widgets/custom-widget.tsx import { defineWidgetConfig } from "@medusajs/admin-shared"
const CustomWidget = () => { return ( <div> <h2>カスタム売上ダッシュボード</h2> {/ カスタムコンテンツ /} </div> ) }
export const config = defineWidgetConfig({ zone: "product.details.before", })
export default CustomWidget
実務のコツ: 商品データのインポートには、CSV一括インポート機能を活用すると効率的です。また、Activepiecesなどのワークフロー自動化ツールを使えば、外部システム(ERP、在庫管理システム)からの商品データ同期を自動化できます。
ステップ3:決済・配送システムの統合と本番デプロイ
最後に、実際に販売するために必要な決済機能と配送システムを統合します。
Stripe決済の統合
Medusa.jsは、Stripeをはじめとする主要な決済サービスとの統合をサポートしています。
bash
Stripeプラグインのインストール
npm install @medusajs/medusa-payment-stripe
medusa-config.jsに設定を追加:
javascript module.exports = { plugins: [ { resolve: @medusajs/medusa-payment-stripe, options: { apikey: process.env.STRIPEAPIKEY, webhooksecret: process.env.STRIPEWEBHOOKSECRET, }, }, ], }
重要: Stripeのwebhook設定を必ず行い、決済完了イベントを正しく受信できるようにしてください。これにより、注文ステータスの自動更新が実現します。
配送プロバイダーの設定
bash
日本の配送業者向けプラグイン(カスタム実装も可能)
npm install medusa-fulfillment-manual
配送方法の定義:
javascript // medusa-config.js { resolve: medusa-fulfillment-manual, options: { providers: [ { id: "yamato", label: "ヤマト運輸", price: 800, }, { id: "sagawa", label: "佐川急便", price: 750, }, ], }, }
本番環境へのデプロイ
推奨デプロイ先
- Vercel/Netlify: フロントエンド(Next.js)
- Railway/Heroku: Medusa.jsバックエンド
- AWS ECS/Google Cloud Run: エンタープライズ向け
デプロイ前チェックリスト
セキュリティ対策
- [ ] 環境変数の安全な管理(シークレットキーの暗号化)
- [ ] CORS設定の確認(許可するオリジンの制限)
- [ ] SSL/TLS証明書の設定
- [ ] API Rate Limitingの実装
- [ ] SQLインジェクション対策の確認
パフォーマンス最適化
- [ ] データベースインデックスの最適化
- [ ] Redis キャッシュの設定
- [ ] 画像の最適化(WebP形式、CDN利用)
- [ ] バックアップ設定の確認
監視・ログ
- [ ] エラーロギング(Sentry等)の設定
- [ ] パフォーマンスモニタリング
- [ ] アップタイム監視
bash
本番環境用ビルド
npm run build
データベースマイグレーション
medusa migrations run
本番サーバー起動
npm run start
注文管理の自動化
Medusa.jsのイベント機能を活用すれば、注文ステータスの変更に応じた自動処理が可能です。例えば、Activepiecesと連携することで、以下のような自動化が実現できます。
- 注文確定時に自動で在庫システムを更新
- 発送完了時に顧客へ追跡番号をメール送信
- 返品リクエスト時に自動でSlackへ通知
このようなワークフロー自動化により、運営コストを大幅に削減できます。
まとめ
Medusa.jsを使ったECサイト構築の3ステップを解説しました。重要なポイントを振り返ります。
- ステップ1: Node.js環境とPostgreSQL、Redisを準備し、Medusa CLIで簡単にプロジェクトを開始できる
- ステップ2: 管理画面から直感的に商品登録が可能で、カスタムフィールドやウィジェットで独自の拡張も実現できる
- ステップ3: Stripe等の決済サービスとの統合は公式プラグインで簡単に実装でき、配送システムも柔軟にカスタマイズ可能
- セキュリティとパフォーマンス: 本番デプロイ前のチェックリストを確実に実行し、安全で高速なECサイトを構築する
- 運営効率化: Activepiecesなどのワークフロー自動化ツールと組み合わせることで、日々の運営業務を大幅に効率化できる
Medusa.jsは、自由度の高いECサイトを構築したい開発者やビジネスにとって、2026年現在最も注目すべきプラットフォームの一つです。本記事の手順を参考に、ぜひ独自のECサイト構築にチャレンジしてみてください。
お客様満足度
課題に寄り添い、成果にこだわるパートナーシップを大切にしています
年以上の経験
技術トレンドの変化に対応し続けてきた確かな知見があります
プロジェクト実績
業界や規模を問わず、幅広いお客様の成長を支えてきました