以下は WordPress.org 公式ブログの記事「Extending the 7.0 Cycle」の翻訳です。
誤字脱字誤訳などありましたらフォーラムまでお知らせください。
プロジェクトリーダーとの協議の結果、主要なアーキテクチャの詳細を最終化するため、WordPress 7.0のリリースを数週間、延期することが決定されました。
WordPress 7.0は数々の素晴らしい新機能と多くの改善点を備えた大きなリリースになりつつあります。私もこのリリースをユーザーのみなさんに届けられることを楽しみにしています。こうした状況の中、コントリビューターは議論を続け、改良を重ね、細部を磨き上げてきました。
今回のリリースにおける大きな項目の1つが、リアルタイム共同編集のための基盤機能の導入です。これには、できるだけ幅広い環境でこの機能を利用できるようにする、HTTP ポーリングの組み込みサポートも含まれます。このシステムのコアでの実装のため、新しいカスタムテーブルが提案されました。しかし、共同編集や同期の調整に有用である点については概ね合意が得られたものの、時間面と設計面の不確実性から、開発はいったん保留されました。
データ保存方式とキャッシュ無効化戦略に関する急速なイテレーションが重なったため、RC2 の前に議論が行われました。結果、未解決の懸念に対するアプローチとして、コンテンツの変更は引き続き postmeta に保存しつつ、セッション中のユーザーの認識や存在情報は Transient へ移動する方針になりました。このアプローチでは、共同編集用のメタフィールドを特別に取り扱うことで、迅速かつ頻繁なキャッシュの無効化問題を回避できます。その後、Matt がカスタムテーブルに立ち戻り、最初から最善の設計を導き出すために十分な時間を確保すべきという意向を示しました。これを受けて、大多数のユーザーにとっての最善の解決策を7.0に含めるため、7.0サイクルに追加の時間が設けられました。
さらに、リアルタイムサポートを超えたユースケース (たとえば、より広範な同期のユースケースへの対応) に関する追加の検討事項が1つ提起されました。これも、できる限り広い意味での適切な基盤機能設計のために議論すべき項目でした。こうした背景から予定では、新しいテーブルがどのような形で、どのように機能するか、より明確になった後で7.0の新しい最終タイムラインが発表されます。7.0にはユーザーにとって多くの有益な機能があり、あまり長く待たせるのは逆効果なため、遅延はおそらく数週間です。追加された時間により、これまでに寄せられたすべてのフィードバックを消化し、設計が長期にわたって耐えうるものになることを確実にできます。なお、まだコアに入っていない新機能や機能強化は、今回のリリースに含めることを検討しません。
大局的に、7.0で共同編集をオプトインとして提供する意図は、WordPress エコシステムに対して、大きな変更に適応する時間を与えるためです。ホスティング事業者にとって共同編集機能は、WordPress のリソース利用やデータベースとのやり取りに影響が出る可能性があります。WordPress サイトは一般に読み取りが中心ですが、共同編集機能は本質的に書き込み状態を伴い、それが他のユーザーへ再ブロードキャストされます。設計上の HTTP ポーリングは最小公分母的なアプローチですが、幅広い互換性の代償として、WebSocket のようなより特化したソリューションと比べると相対的に効率面で劣ります。このプロセスにおいては、サイト所有者とホスティング事業者が完全にコントロールできることが重要です。そのため、初日から100% のユーザーに対して機能を有効にするのではなく、オプトインとすることで利用者数を自然に増やすことができます。ホスティング事業者は同期エンドポイントへのリクエストを監視し、プロファイリングを行い、自分たちのキャッシュ戦略やリクエスト管理方法が適切かどうかを確認できます。
これまで、たとえば wordpress.com はこの機能の広範なテストを実施し、保守的なデフォルト値、共同編集者数の制限、共有環境におけるアクティブなエディターセッション数の制限により、HTTP ポーリングが追加の依存要件なしで、実質的にあらゆる WordPress ホストで動作する実用的なトランスポートであることを実証しました。他のホスティング事業者も、同様にテストを行うことを推奨します。なお、最終的なアーキテクチャが確定した後、make.wordpress.org でホスティング事業者向けにテスト協力の呼びかけを行う予定です。
プラグイン開発者にとって、多くの人気プラグインは依然として UI にメタボックスを使用しています。これは Gutenbergの互換モードを介して、エディターで投稿が保存されるタイミングで入力を送信しますが、この方式は、それ単体では共同編集とは互換性がありません。共同編集は、ブロックエディターが使用する wordpress/data パッケージに基づいて、セッション内のすべてのユーザー間で変更を検出、同期し、一般的な種類の競合を適切に処理します。結果として、メタボックスが存在する場合、リアルタイム共同編集は無効化されます。新しい 7.0サイクルではプラグイン開発者に時間的な余裕が生まれました。メタボックスに互換性を与えるブリッジを実装するか、またはより新しい Gutenberg API を採用してエディターとシームレスに統合する形で UI をレンダリングできます。この機能に関する詳細については公式 Dev Note を、メタボックスからの移行の詳細についてはブロックエディターハンドブックのメタボックスガイドを参照してください。
機能面と安定性の両面で WordPress 7.0を優れたリリースにするために継続的に尽力してくださっているみなさんに感謝します。
Props to @jorbin @desrosj @annezazu @griffbrad @4thhubbard この投稿のレビュー支援に対して
—