---
title: "ローカルで完璧でも本番で落ちる｜WordPressプラグイン公開が2回続けて止まった原因"
excerpt: "2ヶ月かけて開発した証明書自動発行プラグインが、本番リリースで2回連続して停止しました。1回目はZIPにincludes/フォルダが欠落してサイト全体がダウン、2回目はWindowsとLinuxのパス区切り文字の差異。AIが担えない配布・インフラ領域の実例をそのまま記録しています。"
author: "AI活編集部"
author_username: ai-katsu-editorial
published_at: 2026-06-28T00:00:00+00:00
verified_at: 2026-06-28T00:00:00+00:00
models: ["Claude Code", "Gemini", "OpenAI Codex"]
tools: ["Google Apps Script"]
tasks: ["開発・エンジニアリング", "業務プロジェクト"]
domain: "教育・研修"
canonical_url: https://ai-katsu.jp/articles/wp-plugin-release-failure
---
# ローカルで完璧でも本番で落ちる｜WordPressプラグイン公開が2回続けて止まった原因

「ローカルで完璧に動いた」は「本番でも動く」を意味しません。**AIがコードを書けるようになっても、この壁は残ります。**

この検証では、**2ヶ月かけて開発したWordPressプラグインが、本番リリースで2回連続して止まりました。**原因はいずれもコードではなく、ZIPの作り方という配布側の問題です。失敗した経緯と具体的なエラー内容をそのまま記録します。

## この検証の概要

| 項目 | 内容 |
| --- | --- |
| 検証時期 | 2026年6月 |
| 作ったもの | 受講証明書の自動発行システム（WordPressカスタムプラグイン） |
| 開発期間 | **約2ヶ月** |
| 規模 | **6コース・全246課題** |
| ローカル検証 | **全246課題を実際に提出してE2Eテスト完了** |
| 結果 | **本番導入で2回連続失敗。1回目はサイト全体がダウン** |
| 現在 | 本番未反映のまま作業を一時停止中 |

> 本記事は、グループ会社である**株式会社バイテックでの検証記録**をもとに、当社の検証レポート形式で再構成したものです。数値・エラーメッセージ・原因の切り分けは、検証時の記録をそのまま記載しています。原文は[note の公開記事](https://note.com/makun_bytech/n/nd04caa98abed)（2026年6月28日公開）をご覧ください。

## 結論：AIが担う範囲の外側で止まった

| 領域 | 今回の状況 |
| --- | --- |
| コードの実装・ロジック設計 | **問題なし。**AIが書き、ローカルで全テスト通過 |
| 採点精度の検証 | 問題なし。実際の提出物で確認済み |
| **ZIPの構造・パス区切り文字** | **ここで2回止まった** |

**AIはコードを書き、ロジックを考え、採点まで担いました。しかし「ZIPの構造が正しいか」「サーバーのパス区切り文字は何か」という配布・インフラ側の知識は、AIに頼り切れない領域として残りました。**

## 作ろうとしたシステム

もともとのフローは全て手作業でした。

```
受講生がLINEで成果物を送る
  → 講師が添削してフィードバック
  → 合格を運営に報告
  → 運営がFigmaで証明書を作成
  → スプレッドシートに記録
  → 受講生に連絡

1件に複数人が関わり、数日かかる
```

これを次のように全自動化する設計にしました。

```
受講生がレッスンページ内のフォームで課題を提出
  → Gemini が自動採点し、合否＋フィードバックを即表示
  → 不合格なら再提出、合格で次の課題が解放
  → レベル内の全8課題に合格
  → 担当講師を選択して証明書を発行
  → 証明書PNG 2枚を自動生成（公式デザイン）
  → Google Drive に保存＋管理シートに自動記録
  → シェア用の投稿文も自動表示
```

| 項目 | 内容 |
| --- | --- |
| 対象コース | AIライティング／ChatGPT／Gemini／Dify／NotebookLM／Microsoft Copilot の**6コース** |
| 課題数 | **246課題** |
| 採点コスト | **Gemini の無料枠を使用するためゼロ** |
| 実装形態 | WordPress のカスタムプラグインとして自作 |

WordPress のプログラムを書いた経験はほぼない状態から、Claude Code に相談しながら構築しています。

## ローカルでは全て通っていた

約2ヶ月かけて、ローカル環境での動作確認は徹底しました。

-   **全246課題を実際に提出して採点させた**
-   初級 → 中級 → 上級の**連鎖ロック解除**を確認
-   実際の受講生の提出物を使って**採点精度を検証**
-   証明書を実際に発行してデザインを確認

テキストだけで判定する課題と、**スクリーンショット画像をAIが見て採点する課題**の両方を実装しています。E2Eテストが全て完了した時点で「あとは本番に入れるだけ」という状態でした。

## 1回目の失敗：サイト全体がダウンした

WordPressプラグインの導入は、ZIPファイルを管理画面からアップロードするだけです。ローカルのフォルダをZIPに圧縮し、「プラグインを新規追加」→「ZIPでアップロード」を実行しました。

**アップロードした瞬間、学習サイト全体がダウンしました。**

```
class-bsc-activator.php というファイルが見つからない
```

該当ファイルはローカルに存在します。原因は**ZIPの中に includes/ フォルダが丸ごと欠落していたこと**でした。

| プラグインが探すパス | ZIP展開後の実際のパス |
| --- | --- |
| `includes/class-bsc-activator.php` | `class-bsc-activator.php` |

**Windows でフォルダを右クリック → 「圧縮」でZIPを作ると、フォルダ構造が意図どおりに入らないことがあります。**今回は includes/ の中身だけが入り、フォルダ自体がZIPに含まれていませんでした。

プラグインを即削除してサイトは復旧し、**ダウンから数分で戻りました**。深夜に発生していた場合を考えると軽微では済まない事象です。

## 再挑戦の前にセキュリティレビューを実施

ZIPの問題を直す前に、ChatGPT Plus（OpenAI Codex機能）にソースコードをアップロードしてセキュリティレビューを依頼しました。**5件の問題が見つかっています**（記録に残っている内訳は次の4点）。

-   **画像アップロードで悪意あるファイルを受け付けてしまう可能性**
-   **証明書が二重発行される可能性**
-   テスト用のコードが本番に残ったまま
-   APIのシークレットキーが古いまま

全て修正し、**シークレットキーも新しいものに変更してGASを再デプロイ**しました。ZIPの作り方も、Windows の右クリック圧縮ではなく**コマンドラインで正しい構造になるよう作り直しています。**

## 2回目の失敗：有効化で「存在しません」

構造を確認したうえでアップロードしたところ、**インストール自体は成功**しました。

```
プラグインのインストールが完了しました
　↓ 「プラグインを有効化」を押す
プラグインファイルが存在しません
```

インストールはできているのに、起動しようとするとメインファイルが見つからないと言われる状態です。

原因の推測は次のとおりです。**Windows で作ったZIPのファイルパスは、区切り文字に「\\（バックスラッシュ）」を使うことがあります。一方 Linux のサーバーは「/（スラッシュ）」しか受け付けません。**ZIP展開時にパスが正しく解釈されず、ファイルの場所がずれた可能性があります。

**不要な外部ライブラリを除外してパスを修正した12MBのZIP**を準備した時点で、作業を一時停止しました。**2ヶ月分の開発は、本番に乗らないまま止まっています。**

## この失敗から言えること

### ローカルで動くことと本番で動くことは別

**ローカル環境は自分のPCの中だけで完結します。本番サーバーはOS・PHPのバージョン・ファイル権限など、あらゆる条件が異なります。**「ローカルで完璧に動いた」は「本番でも動く」を意味しません。

### AIが得意な領域とインフラは別

AIはコードを書き、ロジックを考え、採点まで担えます。**しかしZIPの構造やサーバーのパス区切り文字といった地味なインフラの知識は、AIに頼り切れない部分として残ります。**

「AIで全自動化できた」という話の裏には、こうした作業が必ず存在します。

## よくある質問

### なぜ1回目でサイトがダウンしたのですか？

**ZIPの中に includes/ フォルダが丸ごと欠落していたためです。**プラグイン本体が `includes/class-bsc-activator.php` を参照するのに、展開後は `class-bsc-activator.php` になっており、ファイルが見つからずサイト全体が停止しました。

### ZIPはどう作るべきでしたか？

**Windows の右クリック圧縮ではなく、コマンドラインで構造を確認しながら作成します。**右クリック圧縮ではフォルダ構造が意図どおりに入らないことがあります。

### 2回目の「プラグインファイルが存在しません」の原因は？

**Windows のパス区切り文字「\\」と、Linux サーバーが受け付ける「/」の差異が原因と推測しています。**ZIP展開時にパスが正しく解釈されず、ファイルの場所がずれた可能性があります。この時点で作業を一時停止しました。

### AIに任せられなかったのはどこですか？

**ZIPの構造とサーバーのパス区切り文字という、配布・インフラ側の知識です。**コードの実装・ロジック設計・採点精度の検証は問題なく通っていました。

### 採点にコストはかかりましたか？

**かかっていません。**Gemini の無料枠を使用する設計のため、246課題の採点コストはゼロです。

## まとめ

-   **2ヶ月・6コース・246課題を実装し、ローカルでは全テストを通過**していた
-   それでも**本番導入で2回連続して停止。1回目はサイト全体がダウン**した
-   1回目の原因は**ZIPに includes/ フォルダが含まれていなかったこと**（Windows の右クリック圧縮）
-   2回目の原因は**Windows の「\\」と Linux の「/」というパス区切り文字の差異**と推測
-   再挑戦前のセキュリティレビューで**5件の問題を検出**。二重発行やテストコードの残存など
-   **ローカルで動く ≠ 本番で動く。**OS・PHPバージョン・ファイル権限が異なる
-   **AIはコードを書けるが、ZIP構造やパス区切り文字といったインフラ側は残る**

自動化の難所は、しばしばロジックではなく配布と環境差にあります。AIが実装を担うほど、この領域が相対的に大きな比重を占めるようになります。

株式会社AI棒では、こうしたAI活用の検証を日々行い、企業の開発体制へのAI導入を支援しています。ご相談は[お問い合わせフォーム](/contact)から、継続的な伴走支援については[AI参謀](/ai-sanbo)をご覧ください。
