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

1,723 views

Published on

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

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,723
On SlideShare
0
From Embeds
0
Number of Embeds
288
Actions
Shares
0
Downloads
4
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

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

  1. 1. EC-CUBEの基礎から CMS連携まで
  2. 2. お品書き  自己紹介  EC-CUBEとは  EC-CUBEとconcrete5を連携してみる
  3. 3. 自己紹介  西村誠  EC-CUBE公式エヴェンジェリスト
  4. 4. 自己紹介  Microsoft MVP - Windows Platform Development
  5. 5. 自己紹介  Twitter – coelacanth  Facebook – 西村誠
  6. 6. EC-CUBEとは?
  7. 7. EC-CUBEとは?  国産のオープンソース ECサイト構築フレームワーク
  8. 8. ちょっと脱線  ECサイトと言って色々あります
  9. 9. モール型  モール型 一つのシステムに複数のECサイトが存在 楽天市場、ヤフーショッピングモールなど
  10. 10. モール型  メリット 開店が楽、集客が期待できる  デメリット 土地代を払う、自由にカスタマイズできない
  11. 11. ASP型  ASP型 既存のシステムをレンタルして利用 Stores.jp、BASE、カラーミーショップなど
  12. 12. ASP型  メリット 初期費用が安い  デメリット 自由にカスタマイズできない
  13. 13. 問題  自由にカスタマイズできない!!
  14. 14. EC-CUBEとは?  言語はPHP  テンプレートエンジンはSmarty  DBは主にPostgreSQL or MySQL (SQLServer対応プラグインも)
  15. 15. EC-CUBEとは?  国産だからフォーラムは日本語で活発にやり取り されている  オープンソースだからカスタマイズ自由
  16. 16. EC-CUBEとは?  プラグイン対応(Ver 2.12以降)で ノンプログラミングで機能追加  豊富な決済モジュール
  17. 17. バージョンについて  最新のバージョンは2.13  2.12 ← 2.11 ← ?
  18. 18. バージョンについて  最新のバージョンは2.13  2.12 ← 2.11 ← 2.4 ← 2.3
  19. 19. DEMO  EC-CUBE(デフォルト)を見てみましょう http://59.106.184.173/~mac/ec/html/
  20. 20. DEMO  基本的なEC機能  プラグインやカスタマイズによる機能追加  デザインテンプレート
  21. 21. 主な開発者のかかわり方  EC-CUBEの導入  プラグイン作成
  22. 22. 間違ったとらえ方  EC-CUBEは無料だから安く導入できるんでしょ?
  23. 23. 間違ったとらえ方  EC-CUBEは無料だから安く導入できるんでしょ?  カスタマイズで他にはないECサイトを自由に作れ るのがEC-CUBE  とりあえず安く手軽に始めたいなら、モールとか ASP型のサービスでOK
  24. 24. 間違ったとらえ方  EC-CUBEが高いわけではない 同じことをオリジナルでやることに比べたら、圧倒的 なコストパフォーマンス
  25. 25. 例外  店舗主だけど自分でPHPとか勉強して全部やってや るぜ!! というのは確かに最少コスト なんか色々勉強して、バージョン管理とかも使い始め た店舗主さんもいらっしゃいます
  26. 26. 技術的なお話  導入 レンサバなどでは簡単にインストールできることも
  27. 27. 技術的なお話  導入 Azureでも
  28. 28. カスタマイズの注意点  決済部分は慎重に 決済モジュールはモジュール会社提供の部分なので、 それぞれコードが異なる カスタマイズが決済に影響を与える仕様変更か確認
  29. 29. カスタマイズの注意点  スマフォとモバイルへの影響範囲忘れないで すべての修正をスマフォにも反映させる? (UI/UXはどうなる?)
  30. 30. カスタマイズの注意点  管理ページ(帳票や自動返信メール)に影響でな い? 表側の修正に気を取られがちだけど、この辺の見積も りおよび修正を忘れないで
  31. 31. カスタマイズの注意点  EC-CUBEじゃないECサイトからの移行 前のサイトにあった機能をどこまで移行する? こういうお客様にはしっかり機能を説明して理解いた だくのが大事。
  32. 32. カスタマイズの注意点  パフォーマンスについて EC-CUBEはDBのスケールアウトは大変 Webサーバーはクラウドなどでスケールアウト可能 基本スケールアップを検討
  33. 33. カスタマイズの注意点  パフォーマンスについて デフォルトではDBのインデックスは改善可能 理由=低スペックサーバーではインデックス張りすぎ がパフォーマンスダウンになることがあるから
  34. 34. カスタマイズの注意点  DBのクエリについて 仕様とトレードオフできるなら、トレードオフが楽
  35. 35. カスタマイズの注意点  運用でカバーできることも 商品点数や商品規格が多い場合は運用(商品登録の仕 方)をお客様と相談することも
  36. 36. カテゴリーページが重い  最初に遭遇する「EC-CUBEが重い」はこれ!!
  37. 37. 重いクエリその1  SELECT alldtl.product_id FROM dtb_products AS alldtl WHEREalldtl.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;
  38. 38. 重いクエリその1 Explainするとこれ
  39. 39. 重いクエリその1  SELECT alldtl.product_id FROM dtb_products AS alldtl WHEREalldtl.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;
  40. 40. 重いクエリその1 すげー難しそうなクエリだけど結果はこれ +------------+ | product_id | +------------+ | 5003 | | 5002 | ・・略・・・商品IDが15個 +------------+
  41. 41. 重いクエリその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_m ax ,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_produc ts.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_produc ts.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_c omment4 ,dtb_products.sub_image4 ,dtb_products.sub_large_image4 ,dtb_products.sub_ti tle5 ,dtb_products.sub_comment5 ,dtb_products.sub_image5 ,dtb_products.sub_large_ima ge5 ,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_prod ucts.create_date ,dtb_products.update_date ,dtb_products.deliv_date_id ,T4.product_co de_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_u nlimited_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_count FROM 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;
  42. 42. 重いクエリその2  これは一覧の商品の詳細データを取ってくるクエリ
  43. 43. 重いクエリその2  こんなデザインだと先述クエリいらない!!
  44. 44. 重いクエリその2  試してみる価値あるかも http://svn.ec-cube.net/open_trac/ticket/2325 PostgreSQL向け?
  45. 45. 重いクエリその2
  46. 46. 重いクエリはどうやって見つけるの?  ダミー商品登録プログラムがあります /test/createEcCubeData-v25.php これで商品と規格をガンガン作成してみましょう
  47. 47. カスタマイズの注意点  いざとなったら 弊社のようなインテグレートパートナーに相談してく ださい
  48. 48. CMS連携
  49. 49. EC-CUBEの苦手なところ  ランディングページ(LP)など 店舗主さんが触るにはHTMLの知識が必要
  50. 50. EC-CUBEの苦手なところ  ブログ機能は無い 運用開始後にお客様にページ追加や修正してもらう場 合にCMSが便利
  51. 51. Concrete5の苦手なところ  EC機能は無い EC機能をEC-CUBEで!!
  52. 52. 連携案  ランディングページ、ブログはconcrete5で  管理ページのログイン連携  EC-CUBEのユーザーログインを利用して concrete5でログイン限定ページを
  53. 53. 連携案  商品詳細ページをconcrete5で  EC-CUBEにconcrete5のブロックを埋め込み  concrete5側にEC-CUBEのカートインボタンを表 示
  54. 54. まとめ  EC-CUBEはオーダーメイドのECサイトを作れる  開発する場合は色々注意点があるよ  CMSと連携すると幅が広がる
  55. 55. ご静聴ありがとうございました

×