初めてのEC-CUBEカスタマイズに苦労した話

316237e763c235c1685da56459313534?s=47 drytt
April 15, 2019

 初めてのEC-CUBEカスタマイズに苦労した話

EC-CUBE3のカスタマイズ開発経験をもとに、EC-CUBEの概要、利用技術、開発難易度、所感等をまとめました。

316237e763c235c1685da56459313534?s=128

drytt

April 15, 2019
Tweet

Transcript

  1. 初めてのEC-CUBEカスタマイズに 苦労した話 (EC-CUBE概要・利用技術・開発難易度・所感) 2019 . 02. 06 created by drytt

  2. EC-CUBE - 概要  ・ECサイト向けCMS  ・日本のイーシーキューブ社(旧ロックオン社)提供  ・国内No1シェア、全国に30,000店舗以上(*1) 2 (*1) https://www.ec-cube.net/

  3. EC-CUBE - 概要  ・オープンソース(公式) https://github.com/EC-CUBE/  ・開発資料(公式) http://doc.ec-cube.net/  ・フォーラム(公式) https://xoops.ec-cube.net/ 3

  4. EC-CUBE - 概要  ・Versionが重要   最新は4系。2系、3系、4系は大幅なアップデート有り。   互換性無く別物と考えた方が良い。(特に2系と3系)   ※今回は3系の話。 4

  5. EC-CUBE - 概要  ・デモサイト(公式)https://demo3.ec-cube.net/ 5

  6. カスタマイズ要件   「サイト利用者(≠管理者)が、    商品を登録して購入できるようにして欲しい」 6

  7. カスタマイズ要件 - 解釈  EC-CUBEに元々備わっている機能  ・商品登録機能(サイト管理者)  ・商品購入機能(サイト利用者) 7

  8. カスタマイズ要件 - 解釈 新規作成 8 商品登録 画面 商品登録 処理 購入画面 カスタマイズ (既存修正)

    対応無し (既存まま)
  9. カスタマイズ実施 - Local開発環境構築  事前準備(インストール)  ・PHP、PHPライブラリ   mysqli、pdo_sqlite、pdo、phar、mbstring、zlib、ctype、session 、JSON 、xml 、     libxml 、OpenSSL 、zip

    、cURL 、fileinfo  ・DB(mysql/pgsql/sqlite3)  ・WEBサーバ(apache httpd推奨) 9
  10. カスタマイズ実施 - Local開発環境構築  EC-CUBEインストール・設定  ・公式サイトからzipダウンロード  ・インストールスクリプトを利用してインストール   $ php eccube_install.php  ・Document root等設定 10

  11. カスタマイズ実施 - Local開発環境構築  デモサイトと同等の環境構築完了 11

  12. カスタマイズ実施 - 画面・処理の改修           さて、、、 12

  13.  初めてのため分からないこと多数。。(実際の作業メモ) カスタマイズ実施 - 画面・処理の改修 13

  14. EC-CUBE - 開発難易度:利用技術 14 PHP 開発言語

  15. EC-CUBE - 開発難易度:利用技術 15 PHP Symfony/Silex 開発言語 Framework

  16. EC-CUBE - 開発難易度:利用技術 16 PHP Symfony/Silex Doctrine ORM 開発言語 Framework O/R Mapping

  17. EC-CUBE - 開発難易度:利用技術 17 PHP Symfony/Silex Doctrine ORM Twig 開発言語 Framework O/R

    Mapping Template Engine
  18. EC-CUBE - 開発難易度:利用技術 18 PHP Symfony/Silex Doctrine ORM Twig Bootstrap 開発言語 Framework

    O/R Mapping Template Engine Style FW
  19. EC-CUBE - 開発難易度:利用技術 19 PHP Symfony/Silex Doctrine ORM Twig Composer Bootstrap 開発言語

    Framework O/R Mapping Template Engine Style FW Library管理
  20. EC-CUBE - 開発難易度:利用技術 20 PHP Symfony/Silex Doctrine ORM Twig Composer Bootstrap EC-CUBE仕様

    開発言語 Framework O/R Mapping Template Engine Style FW Library管理
  21. EC-CUBE - 開発難易度:私のスキル 21 Ruby Rails Pug (Jade) HTML/CSS/JS 開発言語 Framework Template

    Engine HTML, Style
  22. EC-CUBE - 開発難易度:私の場合 22 PHP Symfony/Silex Doctrine ORM Twig Composer Bootstrap EC-CUBE仕様

    Ruby Rails Pug (Jade) HTML/CSS/JS 概念くらいなら分かる EC-CUBE 自己スキル
  23. EC-CUBE - 開発難易度:私の場合 23 非常に苦しい ...

  24. カスタマイズ実施 - 画面・処理の改修 改修方針(とっかかり)を立てる  ・Symfony(FW)を調べる   →MVC構造であることを把握  ・(公式) EC-CUBE開発ドキュメント・マニュアルを読む   →Directory構造等を把握 24

  25. EC-CUBE - Directory構造 - app … log等 - html … topページphp -

    src/EC-CUBE - Resource … View(Twig) - ControllerProvider … Routing - Controller … Controller - Service … Model - Entity … DB関連処理 - Repository … DB相当 25
  26. カスタマイズ実施 - 画面・処理の改修 改修の進め方  ・grepとfindで力技ですすめる  ・ソースを読みこんで力技ですすめる  ・同じように悩んでいる人のネット記事を読んで和む   (Twig、Symfony、Doctrine ORM、、、) 26

  27. (再) カスタマイズ要件 - 解釈 新規作成 27 商品登録 画面 商品登録 処理 購入画面 カスタマイズ

    (既存修正) 対応無し (既存まま)
  28. カスタマイズ要件 - 解釈の具体化 28 Productnew. twig Cart/index.twig Admin/Product/ ProductController.php CartController.php FrontControllerProvider.php ProductController.php

    商品登録 カートへ追加 カート画面へ遷移 カート画面 商品登録画面
  29. カスタマイズ実施 - 画面・処理の改修 改修で苦労したところ/ハマりどころ ・動的デバックがしづらい( IDE無し、$dump()を利用 ) ・調査の切り分けが難しい(PHP or Symfony or EC-CUBE仕様

    or ...) ・FormTypeの概念について無知である(CSRF対策等) ・EC-CUBE仕様に慣れが必要である   - カート追加時の商品自動削除   - クリエイターIDの存在   - 商品登録処理内で自処理へ redirectする   - ProductControllerが2つある 等 29
  30. カスタマイズ実施 - 画面・処理の改修 30 無事完了!

  31. 振り返り - EC-CUBEを更に知る ・処理のプラグイン化 ・バージョンの違い/2系と3系は別物  (Directory構造から違う。データ移行プラグイン有り) ・ロードマップ  (次ページ) 31

  32. 振り返り - EC-CUBEを更に知る ・ロードマップ 32 引用元:https://www.ec-cube.net/press/detail.php?press_id=244

  33. 振り返り - エンジニア視点で考えたEC-CUBE ・開発難易度は中級?   利用技術が多く幅広い知識が必要、   バージョン毎に利用技術は異なる ・ECサイトの仕組みの把握には良い   OSSで一通りの機能あり ・技術の潰しは効きにくい   バージョン毎に利用技術は異なる、   CMS全体のシェアならWordpressが圧倒的 33

  34. 振り返り - (参考) CMSシェア 世界のCMS全体シェア 34 引用元: https://w3techs.com/technologies/overview/content_management/all (単位) 灰:Webサイト全体シェア 緑:CMSシェア

  35. 振り返り - (参考) CMSシェア 日本のCMS全体シェア 35 引用元 :https://w3techs.com/technologies/segmentation/cl-ja-/content_management

  36. 振り返り - 所感  ・チャレンジは成長の糧になる  ・チャレンジすると実現できることの幅が広がる  ・チャレンジすることは楽しい! 36

  37. 振り返り - 夢が広がる今後(¥)  ・ECサイト構築・運用   ・電子契約法(購入意思の確認ページが必須、メール到着必須等)   ・特定商取引法(氏名、住所等の表示)   ・個人情報保護法(ポリシー設定・表示が必要等)  ・Stripe(クレジットカード支払)/PayPal/SPIKE導入   ・クレジットカードの非保持化対応  ・プラグイン販売 37

  38. 振り返り - 所感  ・チャレンジは成長の糧になる  ・チャレンジすると実現できることの幅が広がる  ・チャレンジすることは楽しい! 38

  39. おわりに 39  EC-CUBEに興味が出た方はぜひ触ってみてください! おわり