このエントリはMagento Advent Calendar 2015の22日目です。

今回はMagento2が徐々にMagentoを使ったサイト構築の標準になるにつれて、プログラマやフロントエンドエンジニアに対して当たり前に求められることを書いていきたいと思います。 

Magento2で開発をする際に求められる技術要素

composer

最初はcomposerです。
既にPHPを使ったシステム開発の現場では使われることが多くなっているcomposerですが、Magento2では標準のパッケージ管理システムとして利用されています。

Magento1.xではPEARチャネルを利用したパッケージ管理が行われていましたが、最近ではあまり使われなくなってきていることもあり、composerが採用されています。


composerに慣れていない方が戸惑うのは、composerがパッケージを管理するために使用する「composer.json」の書き方です。
これだけでそれなりに理解しなければならないことがたくさんあるシロモノですが、エクステンションやテーマパッケージを作りたければ、この書き方を覚える必要があります。

また、composerにはメモリ使用量の問題や、パッケージ情報を集積しているサーバーの地理的な問題など、独特の課題があります。
これらについてきちんと理解しておくことも、今後は求められてくるでしょう。 

git

次にgitです。こちらも既にGithubなどの流行によって、一般的になってきてはいます。
とはいえ全てのWeb製作者が理解しているかというとそうではないでしょう。

Magento2はcomposerによってエクステンションやテーマだけでなく、ライブラリも管理していますが、これらのバージョン管理で最も多く使われているのはgitです。

何かを開発する際にリビジョン管理を前提とした話が出てくるのはもはや当たり前で、「.bak」や「.old」といった(あるいはそれに類するような方法)を取るのはもはやナンセンスだといえるでしょう。

gitとcomposerを組み合わせて開発し、きちんとパッケージのバージョン管理も行う。そういうスタイルが今後は当たり前になってくると思います。
packagistで簡単に開発したものを配布できるので、利用しない手はありませんね。 

LESS

LESSSaSSかという議論はありますが、Magento2はLESSを採用しています。
CSSを書くにあたっての標準がLESSになっているので、まずその書き方を知らない人は学ぶ必要があるでしょう。
(既に使っている人にとってはどうということのない話ではありますが)

このあたりは変化の激しい領域なので、あまり深入りせず、トレンドにうまく乗るようにしていくのが賢いかもしれません。
(Magento2.xではLESSがSaSSになっているかもしれませんし) 

構成管理ツール

ある程度アクセスがあるサイトの場合は、Webサーバーを複数台構成にします。
その場合、複数台のサーバーで同じプログラムファイルを共有するのか、あるいはサーバー毎に保持するかを選ぶことになります。

最近ではchefansiblefabriccapistranoなどといった様々なツールが提供されているので、これらを使って自社のスタイルに合ったソースコードや画像・CSS・JavaScriptファイルの配信方法を構築していくことになります。
(もちろんサーバーの設定ファイルも管理されている場合もあるでしょう)

Magento2の場合、Magento1.xよりもエクステンションのディレクトリ構成は単純化されているので反映はしやすくなっています。
とはいえ、複数台に同時にファイルを反映することは、人力ではまず不可能です。そうなる前から構成管理ツールを用いた反映方法を検討しておくのは正しい対策ですし、常にサイトを正しい構成の状態に維持し続けられるというのは安心につながります。

テストの自動化

Magento2のエクステンションをマーケットプレイスで公開する場合にはテストコードの付属が求められます。

もちろんそうでなくてもテストを自動化し、コードの品質を高めることは重要なのですが、これまでMagento1.xではテストの自動化がやりにくい側面があり、あまり一般的ではありませんでした。

Magento2では公式にアナウンスされている通り、テストの自動化についてかなり労力が割かれており、Magento本体にもかなりの量のテストコードが付属しています。
それと同じことをエクステンションベンダーにも求めているわけですが、なかなかこれも大きな変化だとは思います。

結局Magentoを使ってサイト構築を続けていくために必要なことは何か?

それは「変わっていく」ことでしょう。

技術的なトレンドは非常に移ろいやすく、時々によって選ばれる手法は変わっていきます。
それら全てに追従することはかなり難しいのですが、少なくとも自分が取り扱うプロダクトが利用しているものくらいはマスターしておきたいものです。

2015年は様々なCMSが独自フレームワークを捨て始め、Symfony2ベースへと移りました。
これまでより開発の難易度は上がっている、というのが事実です。表面的には簡単そうに見えて、一歩奥に進むと多くの技術要素が求められる。
そういう世界です。

「環境に合わせて変わること」これ以外に生き残っていく方法はないのかもしれません。

 

さて、Magento Advent Calendar 2015もいよいよ大詰めです。明日はkzkiq2ndさんにバトンタッチします。