このエントリはMagento Advent Calendar 2017の25日目です。今年のAdvent Calendarもこの記事が最後です。今年は無事にすべての記事が埋まったようです。3年目にしてようやく、と言う感じです。

さて、今回はよくお問い合わせを頂く「Magento Commerce選ぶ理由」のひとつである「固有の機能・仕組み」について取り上げたいと思います。

Open SourceとCommerceの違い

今も昔もMagentoはどちらのバージョンであっても共通のフレームワークと思想が採用されています。ですからOpen Sourceで基本機能を理解した上でCommerceを使い始めると「そうそう、こんな機能が欲しかった」ということを実感できる構成になっています。
例えば機能面での違いはEdition比較ページでも紹介しているとおり、Open SourceとCommerceの間にはかなり機能差があります。

もちろんOpen Sourceにサードパーティ製の似たような機能を追加することでCommerceに近い構成に持っていくことはできます。ただし、すべての機能の整合性をとるのは導入を行う人自身であるという点がOpen SourceのOpen Sourceであるところです。
(つまりは自己責任だということです)

Commerceにしかない便利機能5つ

今回はMagento Commerceにしかない機能のうち、私が個人的に「これは便利だな」「これは本格的なECには必要だろう」と思うものを5つ取り上げたいと思います。

  • 管理者アクションログ
  • カテゴリ商品の並べ替え
  • 拡張CMS
  • コンテンツステージング
  • データベースの分散・スケールアウト

管理者アクションログ

管理者アクションログは、Magento1の時代から用意されている機能です。
管理者が管理画面上でいつ何をしたのかを全て記録することができます。ある程度以上の規模の組織になると職務分掌が進むため、管理者の権限を分担する職務に合わせて設定する必要が出てきます。
このとき、システム監査の目的で管理者の行動ログを取りたいという要望が必ず出てきます。PCI-DSSの要求事項でログの保存や監査という項目が実際存在します。

もちろん、Open Sourceにサードパーティの機能を入れればほぼ同じ機能が実現できますが、Commerceに付属するものはXMLファイルを書くだけで既存のモジュールにもログ記録機能を追加できるように設計されているため、導入時・導入後のカスタマイズの際にも要件として簡単に盛り込むことができます。

カテゴリ商品の並べ替え

ルールベース並べ替え 

Magentoの商品一覧の並べ替え順をどうにかしたい、というご要望を時折頂きます。
Open Sourceでの並べ替えについては、指定した商品属性と、管理者の指定する表示順の組み合わせでしか行なえません。
より凝った並べ替えをしたい場合は、Commerceに搭載されている並べ替え機能を考えるのも手です。
カテゴリごとに細かく指定ができるほか、Visual Marchandizerによる視覚的な並べ替えも可能です。

ビジュアルマーチャンダイザー 

拡張CMS

BlueFoot CMS

拡張CMSは、2016年にMagentoが買収したBluefoot社のエクステンションをベースにしています。

この機能を使用すると、MagentoのCMSページを他のCMSのように画面を見ながら段組みやコンテンツの配置ができるようになります。Open Sourceではタグの入れ子を考えながら頑張って書かないといけない部分ですが、Commerceの場合はこの拡張CMS機能を使うことで、HTMLに不慣れな方でもCMSページのレイアウトを作ることができます。

Bluefoot CMSについては、「」 で取り上げていますので、そちらをご覧ください。

コンテンツステージング

ほかのCMSを使われている方からのお問合わせで多いのが「時間を指定した更新はできますか?」というものです。
残念ながら、Magento Open Sourceには標準ではそういった機能は用意されていません。

サードパーティ製のエクステンションを導入するか、オリジナルで開発する必要があります。

ところがMagento Commerceには標準で時間指定したコンテンツを公開・非公開にする機能が用意されています。
しかも、今どのコンテンツが公開されているかやこれからどのようなコンテンツが公開されていくかを時間軸に沿って確認することができます。

コンテンツステージング 

かつてMagento1の時代にもこの機能は用意されていたのですが、Magento2ほど便利ではなく、かなり力技な実装になっていました。
(ステージング用のWebサイト・ストアビューからのデータコピーでした)

Magento2になってこの機能は全面的に改められ、それぞれのステージング対象のデータが複数のバージョンのデータを持てるようになり、とても使いやすい機能になりました。 

データベースの分散・スケールアウト

データベースの分割

より大規模なサイトの場合、データベースにかかる負荷の分散は難しい問題です。
特にMySQLの場合は標準のレプリケーション機能がマスター/スレーブ型で、どうしても書き込みトランザクションをスケールアウトすることが難しい作りになっています。(MySQL Clusterをつかえば別ですが、それはそれで少し話が変わってきます)

Magento Commerceの場合、標準機能として、注文やカート情報を管理するテーブルを別のデータベーススキーマに切り出すことができる仕組みが備わっています。
毎日の注文受付件数が多いサイトの場合、注文データの作成件数だけでなく、訪問者がカートに商品を入れる件数がかなりの数に上ります。注文やカート情報に関する更新処理が詰まってしまった場合、売上の機会損失が発生してしまうことでしょう。

そういった機会損失を防ぐために、Magento Commerceでは注文やカート情報を切り出せるようにしています。
切り出すことでたとえこれらの情報を管理するデータベースで書き込み負荷が高くなったとしても、商品ページなどの閲覧は問題なく行える、というわけです。
もちろんそれぞれのデータベース単位で読み込み用のデータベースを作成することもできますから、より高いスループットが求められるサイトであってもMagento Commerceであれば対応することができるでしょう。 

Magento Commerceのデモなど

弊社では、Magento Commerceの製品デモに関するご要望を随時受け付けております。
お気軽にお問い合わせフォームからご連絡ください。 

終わりに

今年のAdvent Calendarもこれで終わりです。執筆にご協力いただいた皆さん、ありがとうございました。