アップグレードか再構築か:PrestaShop 9での古いモジュールへの対応方法

ストアがPrestaShop 9に移行しますが、1つのモジュールがメンテナンスされなくなっています。既存コードのアップグレードで十分な場合と、再構築がより良い選択となる場合について解説します。

Presta Support による 公開済み 確認済み

古いモジュールカードが2つのルートに分かれる様子:上向き矢印のライムグリーンのアップグレードカードと、新しいブロックが並ぶ点線のカード、横にPrestaShop 9のバッジ

ストアがPrestaShop 9に移行しますが、1つのモジュールが開発者によってメンテナンスされなくなっています。アップグレードすべきか、それとも再構築すべきでしょうか?当社は、PrestaShop 1.5から8向けに作成された数十個のモジュールをアップグレードしてきました。この記事では、私たちが確認する兆候、簡単な自己チェック、そしてそれぞれの方法がお客様のストアにとって何を意味するのかをご紹介します。

PrestaShop 9で古いモジュールが動作しなくなる理由

PrestaShop 9は、ほとんどのバージョンアップデートよりも大きなステップです。PrestaShop 1.7や8で問題なく動作していたモジュールでも、インストールの停止、ページの破損、最悪の場合はバックオフィス全体が機能しなくなる原因となります。原因はほとんどの場合共通しています:

  • 新しいPHPバージョン。 PrestaShop 9にはPHP 8.1以降が必要です。PHP 5や7向けに書かれたコードは、より厳格な型、削除された関数、エラーとなった警告に直面します。
  • 新しいSymfony。 PrestaShop 9はSymfony 6.4で動作します(PrestaShop 8はSymfony 4.4)。旧バージョンのSymfonyサービス、フォーム、ルートを使用するモジュールは調整が必要です。
  • 削除されたコアメソッドと定数。 Tools::displayPrice()やajaxDie()など、長年非推奨とされていた関数が削除されました。それらをまだ呼び出しているモジュールは、そのコードが実行された瞬間に失敗します。
  • 同梱されなくなったライブラリ。 古いモジュールは、Guzzle 5やSwiftMailerなど、かつてPrestaShop自体に含まれていたライブラリに依存していることがあります。PrestaShop 9にはそれらが存在しません。
  • 変更されたクラスのオーバーライド。 オーバーライドはコアクラスの一部を置き換えます。そのクラスが変更されると、オーバーライドによってストアが壊れたり、修正が密かに無効化されたりすることがあります。

変更内容の詳細は、PrestaShop 9:新機能およびPrestaShop 9.2をご覧ください。

通常、アップグレードで十分な場合

  • 現在、PrestaShop 1.7または8でモジュールがインストールされ、動作している場合;
  • 問題が削除されたメソッドや定数(Tools::displayPrice()やajaxDie()など)である場合;
  • モジュールが独自のファイル内に独自のロジックを保持しており、オーバーライドが少ない場合;
  • テンプレートがSmartyまたはTwigを通常の方法で使用しており、表示層をそのまま維持できる場合;
  • モジュールの動作に満足しており、単に動作し続けさせたい場合。

これらの修正のほとんどは機械的なものです。モジュールは全く同じ動作を続け、呼び出されるコードのみが更新されます。PrestaShop 1.5および1.6向けに作成されたモジュールも、多くの場合問題なくアップグレードできます。設定やデータはそのまま維持され、モジュールの見た目や動作はこれまでと変わりません。

再構築を検討すべき場合

  • モジュールがPHP内で大量のHTMLを構築し、エスケープせずに出力している場合:安全にするためには、表示層全体をテンプレートに移行する必要があります;
  • PrestaShop 9でメソッドが変更された複数のコアクラスをオーバーライドしている場合;
  • アップグレードされていない別のモジュール(決済ベースモジュールなど)に依存している場合;
  • PrestaShop 9が同梱しなくなった古いライブラリ(Guzzle 5やSwiftMailerなど)を同梱している場合;
  • 非常によく肥大化しており、さらにPrestaShop Validatorを通過させる必要がある場合;
  • いずれにせよ新機能を追加したいと考えており、コードの大部分を anyway 変更する場合。

再構築は古いモジュールの失敗ではありません。明確な設計から始める方が、クリーンなアップグレードよりも多くの作業が必要になるほど、コードが長年かけて肥大化してしまった場合もあります。

簡単な自己チェック

画面で見られる状態 該当する対応
モジュールはPrestaShop 8で動作し、9でのみ失敗する アップグレード
エラーに削除されたメソッドやクラスが言及されている アップグレード
モジュールのオーバーライドがない、または少ない アップグレード
モジュールのページがPHP内のHTML文字列として構築されている 再構築、または大規模なアップグレード
コアクラスの複数のオーバーライドがある 再構築、または大規模なアップグレード
PrestaShop 9バージョンがない別のモジュールを必要とする そのモジュールを先に対処する
モジュールの動作を変更したい 再構築

これらは規則ではなく兆候です。モジュールが再構築の項目に1つ該当しても、問題なくアップグレードできる場合があります。そのため、価格を提示する前にテストを行っています。

決定する前に確認すべきこと

  1. まず開発者に問い合わせる。 モジュールページまたはPrestaShop Addonsを確認してください:PrestaShop 9用のバージョンがすでに存在する可能性があります。
  2. モジュールがあなたのために何をしているかをリストアップする。 実際にどの機能を使用していますか?再構築すれば、誰も必要としていない機能を省くことができます。
  3. 依存関係を確認する。 モジュールは別のモジュール、テーマ機能、または外部サービスを必要としていますか?
  4. オーバーライドを確認する。 バックオフィスの[詳細パラメータ > 情報]で、オーバーライドが有効かどうかを確認できます。
  5. ストアのアップグレードと一緒に計画する。 ストア全体がPrestaShop 9に移行する場合は、コピー環境ですべてのモジュールを一緒にテストしてください。当社のPrestaShopアップグレードサービスでのアプローチ方法をご確認ください。

当社の対応

モジュールをアップグレードしていただくと、まず独立したPrestaShop 9.2ショップでテストを行い、発見された結果に基づいて価格を提示します。モジュールを再構築した方が良い場合は、お支払いいただく前にお知らせします。モジュールのアップグレードを依頼するか、チェックをご依頼ください。

  • PrestaShop 9
  • モジュール
  • アップグレード