# EC-CUBE4 で EC サイト

EC-CUBE は、PHP Symfony のフレームワークをベースにしたオープンソースの EC サイトパッケージです。データベースは MySQL を使用しています。フロントエンドは、テンプレートエンジンとして Twig を使用しています。Twig は、Symfony のフレームワークの一部であり、PHP で実装された柔軟なテンプレートエンジンです。

# Why EC-CUBE ライバルとの比較

EC-CUBE 以外にたくさんのオープンソース EC サイトパッケージが存在します。

  • Magento (マジェント)
    Magento は、PHP で開発された EC サイトパッケージで 2018 年に Adobe に買収されて 2021 年に「Adobe Commerce」に名称を変更しました。世界中の EC サイトで利用されているオープンソースの EC サイトパッケージであり、EC-CUBE と同様に多くの拡張機能を備えています。日本では知名度がなかった Magento ですが、越境 EC サイトとしての用途に優れています。ただし、Magento は EC-CUBE に比べて複雑で、導入やカスタマイズにある程度の技術的な知識が必要とされます。

  • WooCommerce
    WooCommerce は、PHP で開発された WordPress のプラグインとして提供される EC サイトパッケージであり、WordPress ユーザーにとっては利用しやすいパッケージです。しかし、EC-CUBE に比べると機能性がやや限定的で、大規模な EC サイトの構築には向かないとされています。

  • Shopify
    Shopify は、クラウド上で提供される EC サイトパッケージであり、EC-CUBE と比較すると利用しやすく、導入や運用が容易であることが特徴です。ただし、カスタマイズ性がやや限定的であり、拡張機能を追加するには追加費用が必要となる場合があります。

  • PrestaShop
    PrestaShop は、フランス発の EC サイトパッケージであり、EC-CUBE と同様に多くの機能性を備えています。しかし、EC-CUBE に比べると日本語に対する対応が不十分であり、日本での利用にはある程度の配慮が必要とされます。

EC-CUBE は、日本発の EC サイトで日本に特化しており、日本語はもちろん、日本の配達システムや通貨など多くの拡張機能を備えていることから、国内の EC サイトプロジェクトで採用されることが多いです。

# 特徴

  • オープンソース
    EC-CUBE はオープンソースの EC サイトソフトウェアであるため、誰でも自由に利用することができます。また、コミュニティによって開発が進められているため、安心して利用することができます。

  • 多機能
    EC-CUBE には、商品管理、在庫管理、注文管理、顧客管理など、EC サイトを運営するために必要な機能が標準で備わっています。また、プラグインを利用することで、さまざまな機能を追加することができます。

  • 拡張性が高い
    EC-CUBE は、PHP で開発されており、オープンソースであるため、カスタマイズすることが容易です。また、プラグインを利用することで、簡単に機能を追加することができます。

  • 多言語・多通貨対応
    EC-CUBE は、多言語・多通貨対応しているため、海外展開を考える EC サイトでも利用することができます。

  • セキュリティが高い
    EC-CUBE は、セキュリティに配慮した設計がされており、安心して利用することができます。また、脆弱性が発見された場合には、迅速に修正が行われるため、セキュリティ上のリスクを最小限に抑えることができます。EC-CUBE 4.2.1 から利用できるスロットリング機能は IP ごと、または会員ごとのスロットリングを行うことができます。

# ディレクトリ構造

主なディレクトリ構成について説明します。

# app

EC-CUBE の主要なアプリケーションファイルが含まれています。カスタマイズ用のコントローラ、モデル、ビュー、プラグインなどが含まれています。

子ディレクトリ一覧

  • config 設定ファイルを配置
  • Customize カスタマイズ用 PHP コードを配置
  • DoctrineMigrations マイグレーションファイル
  • Plugin インストールしたプラグインを配置
  • PluginData プラグインが利用するファイルを配置
  • proxy Entity 拡張機能によって生成された Proxy クラスを配置
  • template 上書きされたテンプレートファイルを配置

# bin

bin/console など、開発に使用する実行ファイルを配置

# html

EC-CUBE で表示されるページの リソースファイル(js や css や画像)ファイルが含まれています。

# src

EC-CUBE 本体となり、php ファイルや Twig ファイルが含まれています。

# tests

EC-CUBE のテストコードが含まれています。

# var

キャッシュやログファイルなど、実行時に生成されるファイルが含まれています。

# vendor

EC-CUBE で使用するサードパーティ外部ライブラリが含まれています。

# ローカル Docker 環境構築

デフォルトは SQlite 使っているようで Mysql に指定してローカルの Docker 環境を構築します。

# git clone
git clone https://github.com/EC-CUBE/ec-cube.git

cd ec-cube

# mysql使う docker-compose.mysql.yml を指定します。
docker-compose -f docker-compose.yml -f docker-compose.mysql.yml -f docker-compose.dev.yml up -d
# 初期スクリプトをコンテナ内で実行
docker-compose exec -u www-data ec-cube bin/console eccube:install --no-interaction
docker-compose exec -u www-data ec-cube bin/console eccube:generate:proxies
docker-compose exec -u www-data ec-cube bin/console doctrine:schema:update --force --dump-sql
docker-compose exec -u www-data ec-cube bin/console doctrine:migrations:migrate

# no matching manifest for linux/arm64/v8 in the manifest list entries エラー

no matching manifest for linux/arm64/v8 in the manifest list entries

M1 の CPU は、linux/arm64/v8 なのですが、使用しようとした image がこれに対応していないというエラー

この docker エラーは M1 の Mac の場合に発生します。

# 対応策

platform: linux/amd64 linux/amd64 に platform 指定することで正常に動くようになります



















 

















version: "3"

volumes:
  mysql-database:
    driver: local

services:
  ec-cube:
    depends_on:
      mysql:
        condition: service_healthy
    environment:
      DATABASE_URL: "mysql://dbuser:secret@mysql/eccubedb"
      DATABASE_SERVER_VERSION: 5.7
      DATABASE_CHARSET: "utf8mb4"

  mysql:
    image: mysql:5.7
    platform: linux/amd64
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: dbuser
      MYSQL_PASSWORD: secret
    volumes:
      - mysql-database:/var/lib/mysql
      - ./dockerbuild/grant_to_dbuser.sql:/docker-entrypoint-initdb.d/grant_to_dbuser.sql
    ports:
      - 13306:3306
    networks:
      - backend
    healthcheck:
      test: mysqladmin ping
      interval: 3s
      timeout: 3s
      retries: 3
2023-03-03
  • ec-cube