はじめに
とあるニーズがあって、Python(ほぼ Django 一択)ベースの ECパッケージを使った ECサイトを構築しようかと、昨年の10月頃から細々と調査をしていたのですが、EC-CUBE や osCommerce、Zen Cart、Magento、WordPress + WelCart など PHPベースの ECパッケージについて書かれた記事は数多く存在するのですが、Pythonベースの ECパッケージについての記事があまり無いように思ったので、勉強がてらメモを残していきたいと思います。
ECサイトのタイプ
まず第一に、ECサイトには、以下に示したような構築方式および出店方式の違いがありますが、導入実績や信頼性、初期・月額費用、構築期間、カスタマイズ性、専門知識の必要性、集客・販促の必要性などの特徴を考慮しつつ、目的に合ったものを採用する必要があります。
以下の表では、構築・出店方式のタイプ別に、構築や運用の手間がかかりそうな順に並べてみました。
構築・出店方式 | 概要 | 代表例 |
---|---|---|
フルスクラッチ型 | フルスクラッチで構築 | ― |
無料パッケージ型 | オープンソースの ECパッケージをサーバに導入 | EC-CUBE、Zen Cart、Live Commerce など |
有料パッケージ型 | 有料の ECパッケージをサーバに導入 | ecbeing、コマース21 など |
ASP型 | ECサービスをレンタル | えびすマート、エレコマ など |
インスタントEC型 | 簡単にネットショップ開設 | Stores.jp、BASE など |
オンラインモール型 | Web上の仮想商店街 | 楽天市場、Amazon、ポンパレモール など |
C2Cモール型 | 消費者間取引 | ヤフオク、メルカリ、LINE MALL など |
参考
- ECをはじめたい!ときの選択肢 - 7つのプラットホームの存在を理解しよう | eコマースコンバージョンラボ
- ECパッケージ徹底比較|大手6社+無料パッケージ【2016年版】
- ECサイト構築の前に知っておきたいこと~ASPとパッケージの違いをまとめてみた!~ | 「小売×IT」のミライを考えるブログ
私の場合は、カスタマイズ性と構築費用(ECパッケージのコストゼロ)を最優先させかったので、オープンソースの ECパッケージを利用する「無料パッケージ型」を採用することとしました。
ECパッケージの特徴
そもそも ECパッケージとは、ECサイト(電子商取引をするためのネットショップ)を構築するために必要な数々の機能を一つにまとめたソフトウェアを指します。
一般に、ECパッケージに求められる機能としては、
- ショップフロント機能
- 商品紹介
- 商品カテゴリ別表示
- 商品一覧
- 商品詳細
- 商品検索(キーワード / 価格帯)
- 商品の並び替え(注文数 / 価格 / 新着 / ユーザー評価)
- 最近閲覧した商品紹介
- ユーザー評価(レビュー)
- 商品注文
- ショッピングカート
- 決済手続き
- クレジットカード決済
- 振込決済(コンビニ / 銀行 / 郵便局)
- 代引決済
- 携帯キャリア決済
- タイムセール
- クーポン
- ディスカウント(ボリュームディスカウント / 配送料無料)
- ゲスト注文
- 予約注文
- 関連商品・レコメンド(この商品を買った人はこんな商品も買っています)
- メンバーシップ
- アカウント登録
- 退会
- パスワード変更
- ログイン
- ログアウト
- マイページ
- 注文履歴
- 配送先登録
- お気に入り登録(ほしい物リスト)
- 問い合わせ
- 商品紹介
- バックオフィス機能
- 商品管理
- 商品カテゴリ登録
- 商品登録
- タイムセール登録
- クーポン登録
- ディスカウント条件設定
- 受注管理
- 消し込み(返品処理)
- 顧客管理
- 問い合わせ管理
- 売上集計
- 販売分析
- 各種メール送信
- システム設定
- システムメンテナンス
- デザインテーマ設定
- 多言語化
- 商品管理
などが挙げられます。
無料パッケージにせよ有料パッケージにせよ、ECパッケージの選定においては、上記の機能がどれだけ実現できるかが一つの重要な選定基準となります。
ECパッケージの選定
ここで、ECパッケージを選定するために、Djangoベースの ECパッケージの中から人気のあるものをリストアップしてみます。
Djangoベースのパッケージの評価するには、Django Packages : E-Commerce を参照するのが手っ取り早いです。
Django Packages で比較
スター数の上位 4つをリストアップしてみました。
(「SATCHLESS」は最近開発が活発でなくなって来ているようなので、除外しました。)
PACKAGE | DJANGO-OSCAR | DJANGO SHOP | SALEOR | CARTRIDGE |
---|---|---|---|---|
Description | Domain-driven e-commerce for Django | A Django based shop system | An e-commerce storefront for Python and Django | Ecommerce for Mezzanine |
Category | Framework | Framework | Framework | App |
Development Status | Production/Stable | Unknown | n/a | Beta |
Last updated | April 3, 2016, 5:30 a.m. | May 16, 2016, 9:40 a.m. | May 11, 2016, 10:38 a.m. | April 4, 2016, 2:54 a.m. |
Version | 1.2rc1 | 0.9.1 | n/a | 0.11.0 |
Stars | 1997 | 1044 | 501 | 464 |
Repo Forks | 814 | 438 | 199 | 222 |
Payment Methods | Gateways: DataCash, PayPal, PaymentExpress. There is also an accounts extension that provides support for giftcards, loyalty schemes and customer budgets. | cash-on-delivery paypal (ext), postfinance (ext) Easily extensible | All supported by django-payments: Authorize.net, Braintree, Coinbase, Cybersource, Dotpay, Google Wallet, PayPal, Sage Pay, Sofort, Stripe | Authorize.net, eGate, PayPal, Stripe, Braintree, PIN |
Shipping options | Extremely flexible. Any part of the shipping calculation can be customised to suit your domain. | Flat rate, easy api for extensibility | Per-country shipping rules provided out of the box, custom options are easy to implement. Split deliveries for a single order | Flat rate provided plus hooks for implementing your own rules |
Configurable Checkout Steps | Yes - The checkout can be easily customised to add, remove, alter or combine steps. It's not controlled by a single setting though. | Saleor is meant to be forked so you can just edit the code |
(Django Packages : E-Commerce より抜粋。2016年5月22日時点のもの)
「DJANGO-OSCAR」と「DJANGO SHOP」が二大人気となっているようですが、「DJANGO-OSCAR」のスター数・フォーク数はほぼダブルスコアになっています。
なお、CARTRIDGE のカテゴリが「App」となっていますが、このパッケージはショッピングカート機能のみを提供するもので、「Mezzanine」という CMSパッケージ向けに作られています。
ちなみに、「Django Packages : E-Commerce」の全パッケージ中でステータスが「Production/Stable」になっていたのは、
- DJANGO-OSCAR(スター数:1997 / フォーク数:814)
- DJANGO-CARTON(スター数:163 / フォーク数:46)
- DJANGO-CART(スター数:114 / フォーク数:85)
- DJANGO-CHANGUITO(スター数:42 / フォーク数:17)
の 4つだったのですが、スターやフォーク数では「DJANGO-OSCAR」が圧倒的人気です。
ECパッケージの機能の中でも特に重要な機能の一つが「決済処理」ですが、多くの ECパッケージが、Pluggable なモジュール形式の「決済モジュール」を提供しています。PayPal や Stripe などの決済代行サービスに合わせた決済モジュールが個別に用意されているケースが多いのですが、ECパッケージ本体に組み込まれている場合や、別パッケージとしてソースコードが管理されている場合もあります。
決済モジュールの特徴
決済処理に特化したモジュールは「決済モジュール」と呼ばれ、Pluggable に差し替え可能な仕組みになっている場合が多く、決済代行サービスに合わせたものをチョイスして取り込むことができます。ECパッケージ本体やサードパーティ(コミュニティ)の決済モジュールで対応できない決済代行サービスを利用したい場合は、決済モジュール自体を自作する必要も出てきます。
決済処理の仕組み
ECサイトの決済処理の仕組みを簡単に図解すると、以下のようになります。
(10 Safe and Popular Gateways for Online Payment Processing | InstantShift を参考に作成)
ECサイトから見れば、決済代行サービスを窓口(ゲートウェイ)として利用することで、Visa や MasterCard のようなカード会社と直接やり取りすることなしに、決済処理ができるようになっています。
決済モジュールは以下の位置に配置され、API を通じて決済代行サービスとやり取りを行います。
決済モジュールは、ECパッケージのチェックアウト機能に合わせた決済モジュールが複数用意されている場合が多いので、使用する決済代行サービスに合わせてチョイスするのがベストです。
例えば、ECパッケージに「DJANGO-OSCAR」を使うのであれば、
django-oscar-datacash | Integration with the DataCash payment gateway |
django-oscar-paypal | Integration with PayPal. This currently supports both Express Checkout and PayFlow Pro. |
django-oscar-paymentexpress | Integration with the Payment Express payment gateway |
django-oscar-accounts | Managed accounts (can be used for giftcard functionality and loyalty schemes) |
django-oscar-stores | Physical stores integration (opening hours, store locator etc) |
django-oscar-eway | Integration with the eWay payment gateway. |
django-oscar-sagepay-direct | Integration with "DIRECT" part of Sagepay's API |
(https://github.com/django-oscar/django-oscar#extensions より)
が本家(django-oscar)から提供されており、これらは比較的信頼性も高いものと推測されます。その他にも、コミュニティが製作した決済モジュールも多々用意されているようですが、こちらの信頼性については個別に検証が必要です。
- django-oscar-payments
- django-oscar-recurly
- django-oscar-adyen
- django-oscar-przelewy24
- oscar-sagepay
- django-oscar-erp
以上から、例えば、決済代行サービスに PayPal を利用する予定であれば「django-oscar-paypal」をまずは検討するのがよい、ということになります。しかしながら、PayPal を利用するにしても、使用する API の種類によっては(例えば日本国内では)対応できないという可能性もあるため、実際に検証が必要となります。
決済モジュールの選定
ECパッケージに依存しない決済モジュールも存在します。ECパッケージで用意された決済モジュールが決済代行サービスに対応していない場合などは、それらを使用すれば(カスタマイズは必要になると思いますが)、イチから自作しなくてもよくなるケースもあるでしょう。
こちらについても、Django Packages で比較検討してみることにしました。
Django Packages で比較
スター数の上位 5つをリストアップしました。
(「LFS - LIGHTNING FAST SHOP」は ECパッケージなので除外。加えて、「DJANGO-ZEBRA」は長年メンテされていなさそうなので除外しました。)
PACKAGE | DJANGO-MERCHANT | DJANGO-PAYPAL | DJ-STRIPE | DJANGO-GETPAID | DJANGO-PAYMENTS |
---|---|---|---|---|---|
Description | A Django app to accept payments from various payment processors via Pluggable backends. | A pluggable Django application for integrating PayPal Payments Standard or Payments Pro | Django + Stripe Made Easy | Django payments processor. | Universal payment handling for Django |
Development Status | Alpha | Unknown | Beta | Production/Stable | n/a |
Last updated | July 8, 2015, 1:29 a.m. | May 9, 2016, 1:51 p.m. | May 11, 2016, 12:01 p.m. | Jan. 25, 2016, 4:58 p.m. | April 20, 2016, 12:05 p.m. |
Version | 0.2 | 0.3.2 | 0.8.0 | 1.7.3 | n/a |
Stars | 825 | 307 | 285 | 167 | 142 |
Repo Forks | 142 | 83 | 141 | 63 | 57 |
(Django Packages : Payment Processing より抜粋。2016年5月22日時点)
全体的に「Production/Stable」ステータスのものが少ない印象です。
また、Stripe や Braintree など、日本ではまだ使えない決済サービス向けに作られたものが多いようにも思いました。
まとめ
「ゼロからはじめる Django で ECサイト構築」の第一回として、ECパッケージの選定を行いました。
「DJANGO-OSCAR」が圧倒的人気で機能も充実しているようです。まずは、「DJANGO-OSCAR」の機能を実際に見ていきたいと思います。
また、Mezzanine 向けのショッピングカート機能を提供する「CARTRIDGE」も気になるところです。
今後は、この二つを中心に調査を続けていきます。