ec cubeの基礎からcms連携まで

55
EC - CUBE の基礎 から CMS 連携まで

Upload: makoto-nishimura

Post on 04-Jul-2015

815 views

Category:

Technology


2 download

DESCRIPTION

EC-CUBE×concrete5合同勉強会のセッションスライドです

TRANSCRIPT

Page 1: Ec cubeの基礎からcms連携まで

EC-CUBEの基礎からCMS連携まで

Page 2: Ec cubeの基礎からcms連携まで

お品書き

自己紹介

EC-CUBEとは

EC-CUBEとconcrete5を連携してみる

Page 3: Ec cubeの基礎からcms連携まで

自己紹介

西村誠

EC-CUBE公式エヴェンジェリスト

Page 4: Ec cubeの基礎からcms連携まで

自己紹介

Microsoft MVP

- Windows Platform Development

Page 5: Ec cubeの基礎からcms連携まで

自己紹介

Twitter – coelacanth

Facebook –西村誠

Page 6: Ec cubeの基礎からcms連携まで

EC-CUBEとは?

Page 7: Ec cubeの基礎からcms連携まで

EC-CUBEとは?

国産のオープンソース

ECサイト構築フレームワーク

Page 8: Ec cubeの基礎からcms連携まで

ちょっと脱線

ECサイトと言って色々あります

Page 9: Ec cubeの基礎からcms連携まで

モール型

モール型

一つのシステムに複数のECサイトが存在

楽天市場、ヤフーショッピングモールなど

Page 10: Ec cubeの基礎からcms連携まで

モール型

メリット

開店が楽、集客が期待できる

デメリット

土地代を払う、自由にカスタマイズできない

Page 11: Ec cubeの基礎からcms連携まで

ASP型

ASP型

既存のシステムをレンタルして利用

Stores.jp、BASE、カラーミーショップなど

Page 12: Ec cubeの基礎からcms連携まで

ASP型

メリット

初期費用が安い

デメリット

自由にカスタマイズできない

Page 13: Ec cubeの基礎からcms連携まで

問題

自由にカスタマイズできない!!

Page 14: Ec cubeの基礎からcms連携まで

EC-CUBEとは?

言語はPHP

テンプレートエンジンはSmarty

DBは主にPostgreSQL or MySQL

(SQLServer対応プラグインも)

Page 15: Ec cubeの基礎からcms連携まで

EC-CUBEとは?

国産だからフォーラムは日本語で活発にやり取りされている

オープンソースだからカスタマイズ自由

Page 16: Ec cubeの基礎からcms連携まで

EC-CUBEとは?

プラグイン対応(Ver 2.12以降)で

ノンプログラミングで機能追加

豊富な決済モジュール

Page 17: Ec cubeの基礎からcms連携まで

バージョンについて

最新のバージョンは2.13

2.12 ← 2.11 ← ?

Page 18: Ec cubeの基礎からcms連携まで

バージョンについて

最新のバージョンは2.13

2.12 ← 2.11 ← 2.4 ← 2.3

Page 19: Ec cubeの基礎からcms連携まで

DEMO

EC-CUBE(デフォルト)を見てみましょう

http://59.106.184.173/~mac/ec/html/

Page 20: Ec cubeの基礎からcms連携まで

DEMO

基本的なEC機能

プラグインやカスタマイズによる機能追加

デザインテンプレート

Page 21: Ec cubeの基礎からcms連携まで

主な開発者のかかわり方

EC-CUBEの導入

プラグイン作成

Page 22: Ec cubeの基礎からcms連携まで

間違ったとらえ方

EC-CUBEは無料だから安く導入できるんでしょ?

Page 23: Ec cubeの基礎からcms連携まで

間違ったとらえ方

EC-CUBEは無料だから安く導入できるんでしょ?

カスタマイズで他にはないECサイトを自由に作れるのがEC-CUBE

とりあえず安く手軽に始めたいなら、モールとかASP型のサービスでOK

Page 24: Ec cubeの基礎からcms連携まで

間違ったとらえ方

EC-CUBEが高いわけではない

同じことをオリジナルでやることに比べたら、圧倒的なコストパフォーマンス

Page 25: Ec cubeの基礎からcms連携まで

例外

店舗主だけど自分でPHPとか勉強して全部やってやるぜ!! というのは確かに最少コスト

なんか色々勉強して、バージョン管理とかも使い始めた店舗主さんもいらっしゃいます

Page 26: Ec cubeの基礎からcms連携まで

技術的なお話

導入

レンサバなどでは簡単にインストールできることも

Page 27: Ec cubeの基礎からcms連携まで

技術的なお話

導入

Azureでも

Page 28: Ec cubeの基礎からcms連携まで

カスタマイズの注意点

決済部分は慎重に

決済モジュールはモジュール会社提供の部分なので、

それぞれコードが異なる

カスタマイズが決済に影響を与える仕様変更か確認

Page 29: Ec cubeの基礎からcms連携まで

カスタマイズの注意点

スマフォとモバイルへの影響範囲忘れないで

すべての修正をスマフォにも反映させる?

(UI/UXはどうなる?)

Page 30: Ec cubeの基礎からcms連携まで

カスタマイズの注意点

管理ページ(帳票や自動返信メール)に影響でない?

表側の修正に気を取られがちだけど、この辺の見積もりおよび修正を忘れないで

Page 31: Ec cubeの基礎からcms連携まで

カスタマイズの注意点

EC-CUBEじゃないECサイトからの移行

前のサイトにあった機能をどこまで移行する?

こういうお客様にはしっかり機能を説明して理解いただくのが大事。

Page 32: Ec cubeの基礎からcms連携まで

カスタマイズの注意点

パフォーマンスについて

EC-CUBEはDBのスケールアウトは大変

Webサーバーはクラウドなどでスケールアウト可能

基本スケールアップを検討

Page 33: Ec cubeの基礎からcms連携まで

カスタマイズの注意点

パフォーマンスについて

デフォルトではDBのインデックスは改善可能

理由=低スペックサーバーではインデックス張りすぎがパフォーマンスダウンになることがあるから

Page 34: Ec cubeの基礎からcms連携まで

カスタマイズの注意点

DBのクエリについて

仕様とトレードオフできるなら、トレードオフが楽

Page 35: Ec cubeの基礎からcms連携まで

カスタマイズの注意点

運用でカバーできることも

商品点数や商品規格が多い場合は運用(商品登録の仕方)をお客様と相談することも

Page 36: Ec cubeの基礎からcms連携まで

カテゴリーページが重い

最初に遭遇する「EC-CUBEが重い」はこれ!!

Page 37: Ec cubeの基礎からcms連携まで

重いクエリその1

SELECT alldtl.product_id FROM dtb_products AS alldtlWHEREalldtl.del_flg = 0 AND alldtl.status = 1 AND EXISTS (SELECT * FROM dtb_product_categories WHERE category_id IN (52,'53','57','54','55','56','58','59','60') AND product_id = alldtl.product_id) ORDER BY (SELECT T3.rank * 2147483648 + T2.rank FROM (SELECT * FROM dtb_product_categories WHERE category_id IN (52,'53','57','54','55','56','58','59','60')) T2 JOIN dtb_category T3 ON T2.category_id = T3.category_id WHERE T2.product_id = alldtl.product_id ORDER BY T3.rank DESC, T2.rank DESC LIMIT 1 OFFSET 0) DESC ,product_id DESC LIMIT 0, 15;

Page 38: Ec cubeの基礎からcms連携まで

重いクエリその1

Explainするとこれ

Page 39: Ec cubeの基礎からcms連携まで

重いクエリその1

SELECT alldtl.product_id FROM dtb_products AS alldtlWHEREalldtl.del_flg = 0 AND alldtl.status = 1 AND EXISTS (SELECT * FROM dtb_product_categories WHERE category_id IN (52,'53','57','54','55','56','58','59','60') AND product_id = alldtl.product_id) ORDER BY (SELECT T3.rank * 2147483648 + T2.rank FROM (SELECT * FROM dtb_product_categories WHERE category_id IN (52,'53','57','54','55','56','58','59','60')) T2 JOIN dtb_category T3 ON T2.category_id = T3.category_id WHERE T2.product_id = alldtl.product_id ORDER BY T3.rank DESC, T2.rank DESC LIMIT 1 OFFSET 0) DESC ,product_id DESC LIMIT 0, 15;

Page 40: Ec cubeの基礎からcms連携まで

重いクエリその1

すげー難しそうなクエリだけど結果はこれ

+------------+

| product_id |

+------------+

| 5003 |

| 5002 |

・・略・・・商品IDが15個

+------------+

Page 41: Ec cubeの基礎からcms連携まで

重いクエリその2

SELECT product_id ,product_code_min ,product_code_max ,name ,comment1 ,comment2 ,comment3 ,main_list_comment ,main_image ,main_list_image ,price01_min ,price01_max ,price02_min ,price02_max ,stock_min ,stock_max ,stock_unlimited_min ,stock_unlimited_max ,deliv_date_id ,status ,del_flg ,update_date FROM ( SELECT dtb_products.product_id ,dtb_products.name ,dtb_products.maker_id ,dtb_products.status,dtb_products.comment1 ,dtb_products.comment2 ,dtb_products.comment3 ,dtb_products.comment4 ,dtb_products.comment5 ,dtb_products.comment6 ,dtb_products.note,dtb_products.main_list_comment ,dtb_products.main_list_image ,dtb_products.main_comment,dtb_products.main_image ,dtb_products.main_large_image ,dtb_products.sub_title1 ,dtb_products.sub_comment1 ,dtb_products.sub_image1 ,dtb_products.sub_large_image1 ,dtb_products.sub_title2 ,dtb_products.sub_comment2 ,dtb_products.sub_image2 ,dtb_products.sub_large_image2 ,dtb_products.sub_title3 ,dtb_products.sub_comment3 ,dtb_products.sub_image3 ,dtb_products.sub_large_image3 ,dtb_products.sub_title4 ,dtb_products.sub_comment4 ,dtb_products.sub_image4 ,dtb_products.sub_large_image4 ,dtb_products.sub_title5 ,dtb_products.sub_comment5 ,dtb_products.sub_image5 ,dtb_products.sub_large_image5 ,dtb_products.sub_title6 ,dtb_products.sub_comment6 ,dtb_products.sub_image6 ,dtb_products.sub_large_image6 ,dtb_products.del_flg ,dtb_products.creator_id ,dtb_products.create_date ,dtb_products.update_date ,dtb_products.deliv_date_id ,T4.product_code_min ,T4.product_code_max ,T4.price01_min ,T4.price01_max ,T4.price02_min ,T4.price02_max ,T4.stock_min ,T4.stock_max ,T4.stock_unlimited_min ,T4.stock_unlimited_max ,T4.point_rate ,T4.deliv_fee ,T4.class_count ,dtb_maker.name AS maker_name FROM dtb_products JOIN ( SELECT product_id, MIN(product_code) AS product_code_min, MAX(product_code) AS product_code_max, MIN(price01) AS price01_min, MAX(price01) AS price01_max, MIN(price02) AS price02_min, MAX(price02) AS price02_max, MIN(stock) AS stock_min, MAX(stock) AS stock_max, MIN(stock_unlimited) AS stock_unlimited_min, MAX(stock_unlimited) AS stock_unlimited_max, MAX(point_rate) AS point_rate, MAX(deliv_fee) AS deliv_fee, COUNT(*) as class_countFROM dtb_products_class WHERE del_flg = 0 GROUP BY product_id ) AS T4 ON dtb_products.product_id = T4.product_id LEFT JOIN dtb_maker ON dtb_products.maker_id = dtb_maker.maker_id ) AS alldtl WHERE alldtl.product_id IN ('5003','5002','5001','5000','4999','4998','4997','4996','4995','4994','4993','4992','4991','4990','4989') AND alldtl.del_flg = 0;

Page 42: Ec cubeの基礎からcms連携まで

重いクエリその2

これは一覧の商品の詳細データを取ってくるクエリ

Page 43: Ec cubeの基礎からcms連携まで

重いクエリその2

こんなデザインだと先述クエリいらない!!

Page 44: Ec cubeの基礎からcms連携まで

重いクエリその2

試してみる価値あるかも

http://svn.ec-cube.net/open_trac/ticket/2325

PostgreSQL向け?

Page 45: Ec cubeの基礎からcms連携まで

重いクエリその2

Page 46: Ec cubeの基礎からcms連携まで

重いクエリはどうやって見つけるの?

ダミー商品登録プログラムがあります

/test/createEcCubeData-v25.php

これで商品と規格をガンガン作成してみましょう

Page 47: Ec cubeの基礎からcms連携まで

カスタマイズの注意点

いざとなったら

弊社のようなインテグレートパートナーに相談してください

Page 48: Ec cubeの基礎からcms連携まで

CMS連携

Page 49: Ec cubeの基礎からcms連携まで

EC-CUBEの苦手なところ

ランディングページ(LP)など

店舗主さんが触るにはHTMLの知識が必要

Page 50: Ec cubeの基礎からcms連携まで

EC-CUBEの苦手なところ

ブログ機能は無い

運用開始後にお客様にページ追加や修正してもらう場合にCMSが便利

Page 51: Ec cubeの基礎からcms連携まで

Concrete5の苦手なところ

EC機能は無い

EC機能をEC-CUBEで!!

Page 52: Ec cubeの基礎からcms連携まで

連携案

ランディングページ、ブログはconcrete5で

管理ページのログイン連携

EC-CUBEのユーザーログインを利用して

concrete5でログイン限定ページを

Page 53: Ec cubeの基礎からcms連携まで

連携案

商品詳細ページをconcrete5で

EC-CUBEにconcrete5のブロックを埋め込み

concrete5側にEC-CUBEのカートインボタンを表示

Page 54: Ec cubeの基礎からcms連携まで

まとめ

EC-CUBEはオーダーメイドのECサイトを作れる

開発する場合は色々注意点があるよ

CMSと連携すると幅が広がる

Page 55: Ec cubeの基礎からcms連携まで

ご静聴ありがとうございました