前回は大きく分けて2つの内容を取り上げました。

  • Magentoをインストールするために適した環境とは
  • さくらのクラウドのスタートアップスクリプトによるMagentoインストール方法

今回からはインストールした環境を使って、Magentoの基本機能を紹介していきます。
まずは「多言語・多通貨・マルチサイト」機能を取り上げます。

Magentoはどうやって多言語・多通貨を実現している?

Magentoを用いてECサイトを構築したいとお考えの方は、次のような機能がMagentoに備わっていることを耳にされたからではないでしょうか?

  • 多言語サイトが構築できる
  • 多通貨サイトが構築できる
  • マルチサイト運用ができる

もちろんMagentoでは上記のすべてが実現できます。
ですがそのためにはMagentoがこれらのデータをどのように管理しているかを理解しておく必要があります。そうでなければ、良い構成のMagentoをベースとしたECサイトを構築・運用することはできません。

「スコープ」を理解しよう

Magentoでよく出てくる単語のひとつに「スコープ」があります。
この単語の説明を始める前に、次の図を見てください。

この図はMagento上のデータが管理されている単位を示したものです。
Magentoを理解するためには、この図が意味することをきちんと理解しておく必要があります。

グローバル・ウェブサイト・ストア・ストアビュー?

Magentoには4つのスコープがあります。
それぞれに管轄するデータの領域が異なるので、ここできちんと理解しておきましょう。

なお、Magento上で1サイトしか運用しないのであれば、スコープについて深く理解する必要はありません。

ですが、Magentoの機能をフルに使ったサイトを構築したいのであれば、きちんと理解しておくことが必要です。

グローバル ウェブサイト ストア ストアビュー
システム設定値(一部例外あり)
言語
通貨
顧客
注文
配送料金
カテゴリツリー
カテゴリ属性(一部例外あり)
商品の関連付け
商品属性(一部例外あり)
在庫
CMSページや静的ブロック
ウィジェット
プロモーションルール
グローバルとは

グローバルは一番広範囲に適用できるスコープです。
管理画面とほぼ同じ意味を持っていますが、カテゴリツリーや配送料金、商品の関連付けといった一部のデータは管理していません。

また、標準状態のMagentoでは在庫はグローバルスコープでしか保持できません。
ウェブサイトのスコープでは保持できないので、注意が必要です。

ウェブサイトとは

ウェブサイトはグローバルに次ぐスコープです。
配送料金と商品の関連付けを行うことができる他、グローバルスコープで設定した商品やカテゴリの属性データの大半を上書きすることができます。

また、このスコープでは会員データや商品の価格に使う通貨を切り分けることができます。

ストアとは

ストアは別名「ストアグループ」とも呼ばれています。
ストアができることは実際のところ以下の2つしかありません。

  • 所属するストアビューが利用するカテゴリツリーを指定する
  • 1つ以上のストアビューを管理する

Magentoでは複数のカテゴリツリーを定義することができますが、その指定はストアでしかできません。
グローバルでもウェブサイトでもできません。

ストアビューとは

ストアビューはMagentoのスコープの中では一番階層が下のスコープです。
通常は言語別のデータを保持するために利用します。

Magentoは1つのスコープに1つの言語しかデータを保持することができないため、システム上で利用したい言語を増やせば増やすほど、ストアビューの数が増えていきます。

スコープを切り替えるには

Magentoで設定値のスコープを切り替える場合、画面上に配置されている次のような箇所で切り替えを行います。

「標準の設定」というところをクリックすると、次のように定義済みのウェブサイトやストアビューのリストが表示されます。

切り替えを行うと、保存していない値が全て失われます。
スコープの切り替えを行う際には、必ず一度編集した内容をデータベースに保存するか、消えても良いことを確認してから行ってください。
もちろん、切り替え前には下図のように警告が表示されますので、いきなり切り替わるということはありません。

Magentoではどれくらいの数のウェブサイトやストアビューを作成できる?

さて、Magentoではウェブサイトやストアビューを使用して多言語・多通貨・マルチサイトを実現できることをご説明しました。
では、実際問題どのくらいの数のウェブサイトやストアビューをMagento上に作成できるのでしょうか?

答えは「設計上の上限数はない」です。
アプリケーションとしてのMagentoにはウェブサイトやストアビューの上限数に関する制限はありません。
設計上はいくつでも作成できます。

ですが現実問題としては、ウェブサイトやストアビューが増えるたびにデータベースに記録されるデータ量が増えていきます。当然データベースは肥大化し、より性能の高いサーバーが求められるようになります。
当初は低スペックのサーバーでも十分だった場合でも、多言語化や商材によるマルチサイト化が進んだ結果、性能が不足するようになる可能性が出てくることが予想されます。
サイトの規模に合わせて適切な性能のサーバーを選ぶようにしてください。

マルチサイトとドメイン名

マルチサイト運用を行う場合、それぞれのウェブサイトや言語別にドメイン名やホスト名をつけたくなります。
もちろんMagentoではウェブサイトやストアビューの単位でFQDNを設定できるので、この問題は主にサーバー側の設定が中心になってきます。

Magento側での設定

コードの設定

Magento側ではウェブサイト、またはストアビューの設定で、「コード」を指定します。
設定を行うには、メニューから「店舗」を選び、「すべての店舗」 にアクセスします。

定義済みの店舗が一覧で表示されます。

編集したいウェブサイトを選択すると、次のような画面が表示されます。

ストアビューを選択すると、次のように表示されます。

これらの画面に表示される入力項目にある、「コード」という設定値がマルチサイト運用の際には重要です。

Magentoがウェブサイトやストアビューを動作時に特定するためにはこのコードが不可欠で、1つのMagentoインストール上でユニークになるように設定しておく必要があります。

FQDNの設定

さらにマルチサイト運用を個別ドメインで運用する場合は、対象となるウェブサイトやストアビューでFQDNを指定する必要があります。
設定を行うには、メニューから「店舗」を選び、「設定」にアクセスします。
次に「ウェブ」を選ぶと、次のように設定画面が表示されます。

「ベースURLs」「ベースURL(セキュア)」で、ウェブサイトやストアビューが使用するFQDNを「http://」または「https://」で始まる形で設定します。

注意していただきたいのは、この段階ではWebサーバー側でバーチャルホスト設定ができていないFQDNを設定しないことです。
当たり前のことですが、バーチャルホスト設定ができていないFQDNをうっかり設定してしまうと、Magentoの管理画面にアクセスできなくなることがあります。

Webサーバー側での設定

Apacheでの設定

Apacheでバーチャルホストを設定する場合は、以下のように設定を行います。

 <VirtualHost *:80>
    ServerName          mysite.mg
    DocumentRoot        /var/www/html/magento2/pub/
 </VirtualHost>

 <VirtualHost *:80>
    ServerName          french.mysite.mg
    DocumentRoot        /var/www/html/magento2/pub/
    SetEnv MAGE_RUN_CODE "french"
    SetEnv MAGE_RUN_TYPE "website"
 </VirtualHost>

Nginxでの設定

Nginxでバーチャルホストを設定する場合は、以下のように設定を行います。

map $http_host $MAGE_RUN_CODE {
   french.mysite.mg french;
}

server {
   listen 80;
   server_name french.mysite.mg;
   set $MAGE_ROOT /var/www/html/magento2;
   set $MAGE_MODE developer;
   include /var/www/html/magento2/nginx.conf;
}

設定ができたら設定を反映し、アクセスができるかを確認します。
うまく表示できていれば成功です。

まとめ

今回はMagentoの基礎概念のうち、多言語・多通貨・マルチサイトについてご紹介しました。
これらの概念を理解しておくことで、Magentoを使ったECサイトを構築する場合に、どのような構成を取ればよいかを判断することができます。
ぜひ、構築時の参考にしてください。

多言語・多通貨対応ECプラットフォーム”Magento”を使ってみよう! 公開日
世界中で使われているECプラットフォーム"Magento(マジェント)"をご存知ですか? 2017年3月6日
Magentoをインストールしてみよう 2017年3月29日
Magentoの基礎概念 ~ 多言語・多通貨・マルチサイト 2017年4月30日