# 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
  • php
  • ec-cube

関連記事

Laravel リクエストログ出力
Carbon で php date 日付の日数・月数差を計算
Laravel 429 Too Many Requests
Laravel Email バリデーションについて
Laravel Sanctum 使って API トークン JWT 認証と SPA 認証
Laravel 初期設定
Laravel logger でエラーログを chatwork に自動送信
php CSV データ取得は fgetcsv 使う
Laravel tinker 使って DB データベース接続とコマンド
Laravel Test についてのメモ
Laravel Log の基本設定&使い方
Exception: Class 'ZipArchive' not found
Laravel Sail で Docker 環境構築
PHP 文字列長さ・文字列の幅を取得方法
Codeigniter 画像アップロードとリサイズ
Laravel Lumen Faker 日本語設定
laravel method の基本 get post put options
Laravel schedule 設定
Class 'Imagick' not found Error
Laravel eloquent model の規約
PHP mbconvertkana 全角半角英数カナ変換
Codeigniter APPPATH BASEPATH FCPATH 各種パスと URL 取得
Laravel timestamp() auto update 有効化無効化
Lumen8 で JWT ユーザー認証
Laravel toSql パラメータ付きで出力
Lumen8 で API 開発
php Exception エラーキャッチでメール送信
Smarty HTTP URL 取得できるサーバー関数
Laravel blade foreach loop と current url
laravel session を制する
PHP empty isset is_null の違い
PHP 8 リリース新機能と変更
FlattenException deprecated
php.ini 初期設定のいろいろ
Laravel 5.1 から 8.1 にバージョンアップ
PHP 7.4 にアップグレードして使えなくなる機能
開発時によく使うゼロ埋めパディング作業まとめ
解決!phpMyAdmin テーブル構造の内容が表示されない問題
codeigniter email ライブラリでメール送信 日本語対応
Composer コマンドとオプション
爆速軽量フレームワーク codeigniter PHP 開発
nuxtjs と codeigniter で jwt システム構築
Lumen と Laravel 違い比較
HTML から PDF に変換 PHP ライブラリ mPDF の設定
twig 3 人気 PHP テンプレートエンジンがバージョンアップ
正規表現一覧 よく使う検索・置換のパターン
Apache 初期設定メモ
開発におけるコーディングルール・規約
Laravel Error についてのメモ
laravel に vuejs 使うための初期設定
php curl 使って クリックなしで POST 送信
allowurlinclude の設定で ftp_connect()エラー