最近よく問い合わせをいただく話題として「MagentoのPWA対応」というものがあります。
主に大規模なプロジェクトでのご相談として頂くケースが多いのですが、色々と正しく伝わっていない内容もあるように思われることもあり、整理した記事に書き起こすことにしました。

MagentoをPWA対応させる方法

まず最初に、MagentoをPWA対応させるための方法について説明しておきましょう。
大きく分けると2つのやり方があります。

  • GraphQLやRestAPIを使用し、Magentoをヘッドレスで運用。フロントエンドは別のアプリケーションとして構築
  • Magento本体にPWA対応のためのカスタマイズを施し、従来どおりの構成のままでPWA化

フロントエンドを別のアプリケーションとして構築する方法

この方式の代表例は

などでしょう。
いずれも「Magentoとは別立てとなるフロントエンド専用のアプリケーション」を使用する点で共通しています。
PWA StudioとScandiPWAはMagento専用ですが、Vue Storefrontは様々なプラットフォームと接続できる点が異なります。

長所

この方式の長所としては、

  • Magentoとの連携をWeb APIを通じて行うため、フロントエンド開発との分業が行いやすい
  • Magentoのフロントエンドよりも柔軟性のあるUI/UX開発ができる
  • シングルページアプリケーション(SPA)のような構成にも対応できる

といったものが挙げられます。

短所

短所としては、

  • Magento本体のカスタマイズ・調整に加え、フロントエンドの開発コストがかかる
  • フロントエンドを運用するための環境の維持費がかかる

という点でしょう。
要はコストさえ負担できるのであれば、最新のWeb UI/UXを取り入れたサイトが構築できるというわけです。

Magento本体をPWA対応させる方法

次に、Magento本体にPWA対応のカスタマイズを施す方法です。
要はPWA対応に必要な要素をMagentoに追加する、というわけですね。
この方法の代表例としては、

などがあります(あくまで一例です)。
共通している点としては、「すべてMagentoのエクステンションである」、という点です。

長所

この方式の長所としては、

  • 既存のMagentoにインストールするため、新しいサーバーなどは不要
  • 既存のカスタマイズ内容やテーマはほぼそのまま利用可能

などがあります。
とにかくスモールスタートでPWA対応をしたい」という要望には最適でしょう。

短所

短所としては、

  • MagentoのUI/UXがそのまま残ってしまう
  • Magentoのパフォーマンス上の問題は解決しない

などでしょうか。
どうしてもMagentoに直接機能追加する関係上、このあたりはどうしようもありません。

ではどちらの方式が良いのか?

WebサイトをPWA化するにあたっては、

  • 既存のサイトにServiceWorkerやmanifest.jsonを設置するところからはじめればよい
  • 新規に別立てのアプリケーションとして開発するべきだ

といった議論が交わされることがあります。
正直に申し上げると、

Progressive(漸進的な) Web Application なのだから、予算や状況に合わせて段階的にやればよいのではないか?

と思う次第です。
どちらが正しい・間違っている、ではないと思うのです。
段階的にPWA化やモダン実装化を進めればよいのであって、PWA対応をするためにフロントエンド専用のアプリケーションが必ず求められるわけではありません。

結局PWA化はしたほうがよいのか?

「可能であれば対応したほうがよい」でしょう。
PWA化することによって、

  • オフラインブラウジング
  • 強化されたコンテンツキャッシュ
  • ネットワークトラフィックの削減

といったメリットをまず手にすることができます。
それだけでもやる意味はあるでしょう。

ネイティブアプリはPWAに置き換わるか?

提供したいサービスや機能によっては、ネイティブアプリに頼る場面はなくならないでしょう。
PWAというよりも、ブラウザから利用できるOSやハードウエアの機能はまだまだ限られています。
より高度な機能や体験を提供したいのであれば、ネイティブアプリを使ったほうが良い結果が得られるでしょう。

PWAで事足りるのであれば、PWAで良いでしょうし、足りなければネイティブアプリを使用する。
どちらがよいか、ではなく「目的に応じて使い分ける」で良いと思います。