カスタマイズされたEC-CUBE3のバージョンアップをしてみた
この記事はEC-CUBE Advent Calendar 2016の8日目の記事です。
前日はnanasessさんの「1行のコマンドでローカル環境にEC-CUBEを最速でインストールする」です。明日はロックオン安達さんの「herokuボタンで簡単にec-cubeの全機能を試してみる」です。
こちらも併せて読んでみてください。
お久しぶりです。株式会社クロスキューブの佐々木です。なんと前回の記事から1年以上も間隔が開いてしまいました。
下書きばかりが増えている状況ですが、これからはもう少し頑張ります。
先日、EC-CUBE3の新バージョン、3.0.12がリリースされ、様々な細かい不具合やパフォーマンスに関する修正がされました。*1
今回、コアをカスタマイズされた3.0.10からのバージョンアップをしてみましたので、その手順をご紹介します。ターミナルからコマンド打って諸々できれば楽なのですが、「黒い画面はちょっと敷居が高い」といった方にも大丈夫なやり方です。
まず手順と変更点を確認。
まずここを読みましょう。これ必須です。
http://ec-cube.github.io/quickstart_update
何はともあれバックアップ
これ基本ですが超大事。とにかくアップデート前の現状は必ずバックアップしておきましょう。
何も考えずにソースコードや画像ファイルなどのファイル一式、データベースのdumpデータを取ります。
どこがカスタマイズされたかEC-CUBE3のコアの差分を確認する
次に、バックアップしたコードから、コアのどこが改変されているかを確認しましょう。gitなどのバージョン管理システムをちゃんと使っているとコマンド一発で確認できます。
でも、「コマンド打って出てくるdiffのフォーマットが見づらい〜」とか、「そもそもgitとか使ってないしわからない」という方はGUIのマージツールを使いましょう。
Windowsであれば日本語もOKな世界で一番使いやすいWinMergeを、Macな方であればDiffMergeがオススメです。
この差分の確認は、必ず現状のサイトで利用しているバージョンのノーマルなカスタマイズ前のコードと比較して確認してください。アップデート対象の新バージョンと比べても色々変わっててどこをカスタマイズしたかわかりません。
EC-CUBEの古いバージョンが見つからない!
しかし、EC-CUBE公式サイトからは古いバージョンのコードがダウンロードできません。
今回のケースで言えば、カスタマイズ前の3.0.10と稼動しているサイトのコードを比較したいのに、EC-CUBE公式サイトからは、最新版の3.0.12しかダウンロードできません。
これは困ってしまいましたね。
でも大丈夫!以下のURLから各バージョンの主な変更点の確認と過去バージョンのコードがダウンロードできます。
https://github.com/EC-CUBE/ec-cube/releases
ここから現在利用中のバージョンのコードをダウンロードしてきて、差分を確認しましょう。
テンプレート等の差分を確認
コアの PHPのコード以外に、twigのテンプレートの記述がバージョンにより変更されている場合があります。画像やjsもですね。
このあたりもバージョンアップに伴いどう変更されたか、先ほどのURLで確認しておきましょう。
twigテンプレートは/appディレクトリにもある場合があるので、忘れずに確認しましょう。
EC-CUBE3対応!デザインカスタマイズガイドブック
新しくなったEC-CUBE3に対応したデザインカスタマイズブック。2017年1月現在 EC-CUBE3のデザインカスタマイズについて解説されている書籍はこれだけです。とりあえず買いましょう!
プラグインに要注意!一旦無効にしよう
使っているプラグインがアップデート対象のバージョンに対応しているとは限りません。念のために全部一旦無効にしておきましょう。
あまりにも古いプラグインの場合、サーバにファイルがあるだけで EC-CUBEがエラーを起こして何にもできなくなる場合があります。そういったプラグインは一旦アンインストールしてファイルも決しておきましょう。
プラグインのアップグレードはコアのアップグデート後です。
コアのコードをどーんと上書き
一通りカスタマイズ箇所の確認等が終わったら、src、venderの中身をドーンとサーバにアップロードして上書きします。
カスタマイズしたappディレクトリ等にあるtwigテンプレートファイルの上書き等は後回しでOK。
とりあえずデータベースのマイグレーションができる様にします。
マイグレーション
必要なファイルをアップロードしたら、マイグレーションを実行します。
この際、html/install.phpが必要なので、これもアップロードしておきましょう。
データベースのマイグレーションとは、バージョンアップに伴い変更になったデータベースの構造を変更するものです。
/install.php/migration にアクセスするとマイグレーション画面が表示されるので、マイグレーションを実行します。
実行したら念のため管理画面で各種キャッシュをクリアしておきましょう。
カスタマイズ箇所の反映
マイグレーションが終わったら、いよいよカスタマイズ箇所の反映です。
最初に確認した差分を変更していきましょう。先ほどのdiffツールがとても役に立ちます。git使えるともっと便利です。
ただ、バージョンアップによって利用できるメソッドや変数名が変わっている事もあるので、バージョンアップで何がどう変わったかのか?を正確に把握しておく必要があります。
場合によっては施したカスタマイズを捨ててしまいましょう。
この作業はとても面倒くさいし、 結構コアな知識が必要とされる場合があります。こういった作業をしなくても済む様に、EC-CUBE3ではできるだけプラグインでカスタマイズしていくのをオススメします。
まとめ
- バックアップ大事!
- プラグインに注意!
- カスタマイズ箇所の反映は慎重に!
- やっぱりできれば詳しい人にお願いしよう
今回は環境の都合でターミナルでの作業が難しかったためにこういったやり方を行いました。あと、個人的にはdiffツールがコードを追うときにわかりやすくで好きです。
どうしても自分の目でコードをちゃんと確認しないと安心できないので。
実際は、こういった作業をステージング環境等のテスト環境でテストしてから本番に反映させるのですが、サーバによってはsshでのアクセスができなかったりと、どうしてもFTPなどでファイルをアップロードしてバージョンアップ作業を行う場合があります。
その場合、データベースに入っている情報は最新のものを利用しないといけないので、ローカルでアップデートして本番サーバにDBの中身もアップロードして更新するよりも、本番サーバでマイグレーションした方が早いケースが多いです。
また、コアがカスタマイズされているEC-CUBE3はやはりある程度プログラミング等の知識がある人間でないとなかなかバージョンアップするのは難しいと思います。できれば詳しい人にお願いしましょう。
EC-CUBE3のバージョンアップや、カスタマイズ等に関しては、公式サイトよりもEC-CUBE3開発ドキュメントの方が詳しく、情報量も多いので必ずこのサイトを確認する様にしましょう。
*1:パフォーマンスに関する多くの修正は3.0.11で追加されました