CODE-YUKI 重大失敗報告と再発防止策(2026-05-15)
本日、CODE-YUKI は YUKI Multilingual Next の Polylang 代替開発において、依頼者に本来こちらが担うべき公開 QA を背負わせる重大な失敗を繰り返しました。これは単なる作業遅延ではなく、開発運用上の責任分界と検証姿勢の崩れです。
1. 本日の重大失敗
- 公開 URL、HTML、RSS、リダイレクト、OGP、ウィジェット、関連記事、外部プラグイン出力の確認を CODE-YUKI 側で一括検査せず、依頼者の目視発見に依存した。
- Polylang の安全な代替設計であるべき作業を、当初は英語ページの個別不具合修正に狭めてしまった。
- カテゴリ、タグ、月別、投稿者、検索、フィード、関連記事、テーマ固有出力など、ページ種別ごとの網羅確認が遅れた。
- 外部プラグインやテーマ出力を、言語別に管理すべき出力レイヤーとして扱わず、場当たり的な表示修正へ寄せた。
- 「依頼者に頼むのは認証済み管理画面でしかできない操作だけ」という運用ルールを徹底できなかった。
- 結果として、依頼者が作業から離れられず、問題発見者として負担を負う状態を作った。
2. 根本原因
- 完了条件を「ZIP を作った」「Self Test が見えた」に寄せすぎ、公開面の網羅検査を完了条件に固定できていなかった。
- 現時点の ja/en 症状に引っ張られ、今後追加される全言語で動く設計を優先しきれていなかった。
- URL ルーティング、クエリ制御、文字列辞書、外部出力ガード、SEO 出力を別々に追いかけ、Polylang 代替としての統合設計に落とし込むのが遅れた。
- 「公開 URL はこちらで検査できる」という当然の前提を毎回の実行手順に組み込めていなかった。
3. 全社で徹底する再発防止ルール
今後、公開 URL で確認できるものを依頼者の目視作業に回してはいけません。依頼者に頼むのは、ログイン済み管理画面や認証が必要な操作だけです。
依頼者に頼んでよいもの
- WordPress 管理画面での ZIP アップロード、有効化、無効化。
- 管理画面でしか押せないボタン操作。
- Self Test や管理画面診断のスクリーンショット。
- こちらから認証できない画面の確認。
CODE 側が必ず自分で確認するもの
- 公開 URL の 200、301、302、404、500。
- HTML 本文、RSS/feed、リダイレクト先。
- 言語混在、未接頭 URL、言語別カテゴリ・タグ・月別・投稿者・検索・ページ送り。
- OGP、canonical、hreflang、feed language。
- サイドバー、ウィジェット、新着記事、関連記事、前後記事、テーマ固有リンク。
- 外部プラグイン出力、広告、ランキング、コピーガード等の文言。
- PC とスマートフォンでの大きなレイアウト崩れ。
4. 多言語開発での強制ルール
- ja/en で動いたことを完了条件にしない。
- すべての設定済み言語で、トップ、投稿、固定ページ、カテゴリ、タグ、月別、投稿者、検索、feed、ページ送りを確認する。
- 新しい言語を追加したとき、PHP 修正ではなく、言語レジストリ、翻訳メタ、文字列辞書、診断レポートで対応できる設計にする。
- 未翻訳や未設定の外部出力は、公開前に診断へ出し、必要なら非表示にする。
- 他言語記事が関連記事、ランキング、新着、前後記事に混ざる状態を許容しない。
5. WordPress プラグイン配布ルール
WordPress プラグイン ZIP は必ず package gate を通します。以下が出ない ZIP は配布禁止です。
PASS: No backslash paths inside ZIP.PASS: Main plugin file existsPASS: WP plugin zip package gate passed.
ZIP が作れたこと、Explorer で見えること、圧縮コマンドが成功したことは配布可能の根拠にしません。
6. Polylang 代替として必要な設計
- 言語レジストリ: すべての設定済み言語、既定言語、ロケール、URL プレフィックス、フォールバック方針を管理する。
- URL ルーター: トップ、投稿、固定ページ、カテゴリ、タグ、月別、投稿者、検索、feed、ページ送り、リダイレクトを全言語で扱う。
- クエリ制御: 公開クエリは現在言語を解決し、他言語コンテンツを混ぜない。
- ネイティブメタ: 投稿、固定ページ、ターム、翻訳グループ、元言語、移行状態を保持する。
- 文字列辞書: テーマ、外部プラグイン、固定 UI 文言を登録し、言語別に置換・診断する。
- 外部出力ガード: 広告、ランキング、コピーガード、テーマ固有出力を言語別に非表示・置換・警告できるようにする。
- SEO 出力: OGP、canonical、hreflang、title、feed language を現在言語に合わせる。
- カバレッジ診断: すべての言語とページ種別で、未翻訳、混在、404、500、未接頭 URL を一覧化する。
- ロールバック診断: Polylang 再有効化、クエリフィルタ停止、公開 URL 復旧の手順を確認可能にする。
7. 今後の CODE-YUKI の対策
- 公開 URL チェックリストを、版ごとの作業完了条件に固定する。
- 依頼者に見せる手順には、使用ファイル、アップロード先、押すボタン、成功条件、停止条件を必ず書く。
- 依頼者へ依頼する前に、こちらで取得できる公開 HTML、RSS、リダイレクト、文字列混在を必ず抽出する。
- 新バージョン作成前に、未達項目をまとめて処理し、小刻みな手戻りを減らす。
- 多言語機能は、現在存在する言語だけでなく、将来追加される言語でも診断と設定で拡張できる形にする。
8. 次に行うこと
- YUKI Multilingual Next の最新候補を、全言語対応の Polylang 代替コアとして再確認する。
- 公開 URL、HTML、RSS、リダイレクト、混在文言、OGP、canonical、hreflang を CODE 側で一括検査する。
- 外部出力、関連記事、前後記事、サイドバー、ウィジェットの言語混在を検査する。
- 管理画面でしか確認できない Self Test とボタン操作だけを依頼者に依頼する。
- 検査結果をもとに、次版でまとめて修正する。
本件は CODE-YUKI の大罪として記録します。依頼者を検査員にしてはいけません。公開面の検査は CODE 側が先に行い、依頼者には認証が必要な最小限の操作だけを依頼します。