下位互換性を破る製品の新しいバージョンを起動する方法

公開: 2019-02-22

数日前、Nelioの同僚と私は、プラグインNelio A /BTestingの将来とその今後の機能と改善について話し合っていました。 A / Bテストプラットフォームとして、プラグインはWordPressの新しいバージョンに対応し、すべてが正常に機能することを確認するために継続的な更新を必要とします。 これは、2013年末にWordPress向けにリリースした最初のプラグインであり、それ以来継続的に進化していることを忘れないでください。

WordPressにGutenbergが登場したことで、分割テストの新しい可能性が開かれました。 そして、これは興味深い質問を提起しました。製品を段階的に改善する必要がありますか、それとも最初から始めて、WordPressブロックを最大限に活用するまったく新しいものを立ち上げる方がよいでしょうか。

どちらに進むかはまだ決まっていませんが、下位互換性のない新しいバージョンを起動する際の問題と、それらを軽減または排除する方法について説明するのは興味深いと思いました。

そこで本日は、お客様がこの決定に苦しむことがないように、以前のバージョンとの互換性を破る新しいバージョンのサービスを開始するための2つのソリューションについて説明します。

下位互換性に関する注意

Chris Lemaがブログで少し前に言ったように、「下位互換性は、WordPressプロジェクトによって強く保持され受け入れられているものです。 (…)[それ]は開発者だけの価値ではありません。 これはエンドユーザーにとっての価値です。 そして[壊れている場合]、サイトが機能しなくなったというメッセージが表示されるのはエンドユーザーです。」

これが何であるかを表現するバラクオバマのGIF
ユーザーがプラグインが機能しなくなってしまわないようにしてください。

では、下位互換性を破ることは正確にはどういう意味ですか? どうすればそれを壊すことができますか? 次にいくつかの例を示します。

  1. プラグインを拡張できるAPI(関数、フックなど)を変更します。
  2. データベースの構造を変更します。
  3. クラウドのAPIを変更します(プラグインがAPIを使用している場合)。
  4. 新しいビジネスモデルに移行し、したがって、更新や機能などの新しいパラダイムに移行します。

たとえば、A/Bテストサービスについて考えてみます。 大まかに、これはそれがどのように機能するかです:

  • ユーザーは自分のWebサイトでA/Bテストを作成できます。 基本的に、A / Bテストは、テストするページ、そのページの1つ以上のバリエーション、および改善しようとしているコンバージョン目標で構成されます。 この情報はすべてWordPressに保存されます。
  • クラウドコンポーネントは、Nelio A/Bテストを使用するWebサイトへのアクセスを追跡する役割を果たします。 Google Analyticsと同様に、このコンポーネントは情報を収集して処理し、ダイジェストされた結果の要約を生成します。 また、GAとまったく同じように、このデータは追跡スクリプトを使用して送信されます。
  • 最後に、APIを介してこのクラウドに接続するプラグインのビューがあります。 ビューはダイジェストされた結果をプルし、いくつかの統計とグラフィックをユーザーに表示します。

Nelio A / B Testingのようなプラグインはさまざまな方法で変更される可能性があり、注意しないと、これらの変更の1つが「壊れたプラグイン」になる可能性があります。 たとえば、クラウドのAPIを更新する必要があると仮定します。 この場合、トラッキングスクリプトと結果ビューはそのAPIに依存しているため、プラグインも更新する必要があります。 したがって、新しいAPIには新しいプラグインが必要です。 しかし、ここで問題が発生します。この新しいAPIは、プラグインの以前のバージョンが新しいAPIと通信できないため、ユーザーがアップグレードを余儀なくされることも意味します。

今度はユーザーの立場に立ってください。スムーズかつ完璧に機能していたプラグインは、クラウドで行った更新のために機能しなくなりました。 クールではありません。 まったくクールではない

可能な解決策

下位互換性を破ることは些細な問題ではありません。 慎重に検討する必要があります。 そして、いずれにせよ、最も重要なことは、現在のユーザーに機能しないプラグインを残さないソリューションを選択することです。 特にあなたのサービスに対してあなたにお金を払っている人たちに。

フリーランサーとして、または会社として私たちに最も適しているのが、何らかの理由で、完全に新しいバージョンの製品をゼロから始めて、下位互換性を排除することであると確信している場合、2つの解決策があります。 それらを使用することで、ユーザーが以前と同じように使用できるようにしながら、きれいな状態を作ることができます。

新製品の発売(オプトイン)

下位互換性のないバージョンを起動する必要がある最初の解決策は、そうしないことです。 代わりに、新製品を発売してください!

チェックアウトと言っている男のGIF
別の製品をリリースすることで、下位互換性を損なうことはありませんが、ユーザーに新しいバージョンへの切り替えを要求する必要があります。

これにより、現在のユーザーが通常どおりに機能する操作プラグインを使用できることが保証されます。 実際、新しいバージョンが存在しないという理由だけで、「物事を壊す」バージョンにアップグレードすることはできません。 まったく新しいプラグインを起動し、この新しいプラグインの更新に力を注いでいます。つまり、「過去にフリーズ」しているということです。

もちろん、これは対処する必要のあるいくつかの深刻な問題を引き起こします。

  1. 私たちがすでに持っているユーザーは、私たちがそう言わない限り、私たちの製品の新しいバージョンがあることを知りません。 これは、古いプラグインで「新しいプラグイン/サービス」を宣伝する必要があることを意味します。これは奇妙に見えますが、正常に機能します。
  2. 新製品の発売は非常に困難です。 以前の製品で行ったすべての努力(ブランドの作成、配置、レビューの取得、アクティブなインストールなど)は失われ、最初からやり直す必要があります。

これはオプトインソリューションです。新しい製品を発売し、古い製品の使用をやめて新しい製品を入手することをお勧めします。 これは、WordPressが数か月前にGutenbergをプラグインとしてリリースしたときに行ったことです。つまり、Webサイトにプラグインをインストールして、サイトでGutenbergを使用するかどうかを決定したのはあなたです。

下位互換性を破るアップデートを起動する(オプトアウト)

もう1つのオプションは、逆のアプローチ、つまりオプトアウトソリューションです。下位互換性を損なう製品の更新をリリースし、並行して、古いバージョンで新しい製品を起動します。 このように、新しいバージョンに下位互換性がない場合でも、すべてが以前どおりに機能するように、ユーザーに代替手段を提供します。

woahと言っている男のGIF
新しいバージョンをリリースすることで、すべてのユーザーがそれを見て発見できるようになります(すごい効果)。 ただし、興味がない場合は、新製品としてリリースされる以前のバージョンを使用するオプションも提供します。

この方法は、前のソリューションで提起した2つの問題を解決します。 一方では、すべてのユーザーは最初の日から私たちの製品/サービスの新しいバージョンがあることを知っており、彼らは新しいものを見て試してみることができます。

一方(そしておそらくもっと重要なことですが)、定評のある製品の新しいバージョンをリリースしただけなので、これまでに行ったすべての作業から利益を得ることができます。 ブランド、レビュー、統計を保持します…ゼロから始めているわけではないので、何も変わりません。

ご想像のとおり、これはオプトアウトソリューションです。ユーザーがプラグインを更新するたびに、新しいバージョンが表示されます(下位互換性が失われるという事実が気に入らない場合でも)。 ただし、新しい製品をインストールして、古いバージョンに戻す機会も与えています。 これは、WordPressが最新のアップデートでブロックエディターを導入し、 Classic Editorプラグインをインストールすることで古いエディターを使用する可能性をユーザーに提供したときに、昨年12月に行ったことです。

要約すれば

下位互換性を破ることは、ユーザーに大きな影響を与える可能性があるため、簡単ではありません。 一般的に、それを行うことはお勧めしません。 しかし、時にはそれがあなたが持っている唯一の選択肢です。

そうする必要がある場合は、今日見た2つのソリューションのいずれかを実装することをお勧めします。 それらを使用すると、ユーザーがバックアップ計画を立てて、「すべてが以前と同じように機能する」ようにし、「何かが壊れている」と誰も文句を言わないようにすることができます。 もちろん、対応するものとして、2つの製品を保守する必要があります(「古い」バージョンの保守が最小限であると仮定しても)が、これは別の投稿のトピックです。

教えてください、あなたはこのような問題に直面したことがありますか? どのようにそれを解決しましたか? あなたならどうしますか?

UnsplashのDietmarBeckerによる注目の画像。