Design Report

WordPressにまつわるある一夜の事件簿

れは突然の出来事だった。まさに青天の霹靂という感じで・・いや、むしろ起こるべくして起こってしまったと言ったほうが正しいのかもしれない。そう、それは偶然の産物ではなく、そこには明らかに自分の意思が働き、他ならぬ僕自身が招いたものであった。 つまるところ、この出来事は「災難」ではなく「事故」だったということである。 いきなりこんな物語調の書き出しで「何事か?」と面食らった人も多いかもしれないが、ここでもう一つ、さらに皆さんが面食らうであろう驚愕の事実を提示することにしよう。今回の主題でもあり目を背けたくとも背けることのできない逃げようとしても逃れられない、そこに確実に存在する厳然たる「事実」。

もうお気付きの方もいるかもしれないが、そう。このBlogから「すべての記事が無くなった」。

-目次-

  1. 一節
  2. 二節
  3. 三節
  4. 四節

01

というか、正確に言うと、記事だけではなく、実はありとあらゆるデータを一度消失させてしまったのだ。

この一連の出来事には様々な事柄が偶発的に重なり、
何かに導かれるかのように最終的には最悪な結果が導き出されてしまったわけだが、
結論から言うと、すべて僕一人の責任である。
そして、僕以外の人には誰にも何の害も無く、もちろん他の誰にも何も落ち度なんてない。

僕がその方面に対して明るくなかったことと、こういう性格だったこと。
そんな人間が、たまたま見つけた情報を辿っていって、たまたまバッドルートを選び続けてしまったがゆえの結果なのだ。
そこから得た経験と教訓を、僕自身が忘れない為にもここに綴ろうと思う。

こんなさながら小説のような書き方で、皆さんもさぞ動揺していることだろうと思うのだけど、
皆さん同様 正直なところを言えば、僕自身がそれだけ動揺しているというのが本音で
まぁ、何というかそれくらい物事を客観視している体を装って冷静を装うというか、それくらい物事から一歩も二歩も離れた位置で、さも自分のことではないかのように語らなければやってられないという情けない心情というところなのだ。

とはいえ今回は勢い任せにこのスタイルで貫こうと思うので、どうか最後までお付き合いいただけると幸いである。
そんな無駄話はさておき、何から話せばよいのやら・・と迷うほどの事象の繋がりなので まとまりきらないまま、というか話しながらまとめるように、順を追ってお話しすることにしよう。

今回の出来事を綴るにあたって、開発者側なら当然知っているであろうところや用語についてもなるべく一般的な言葉に直したり注釈を加えながらお話ししようと思う。
今現在の時世、Blogやサイトを使っている人はそれこそ大勢いて、その中にはそれほどWebについて詳しくない人も沢山いる。 そんな方や、今現在あるいは今後Wordpressを使おうとしている人すべてに対しても知っておいてもらおうというところもあり、 かなり説明的な、少々冗長な文章になることをお詫びしておく。
しかし、そのまま書くのも何なので、少々物語のような形式で書き綴っていこうと思う。
(お陰でさらに冗長にはなってしまうのだが・・)
ちょっとした知識を得るにも、ただ単に物語として楽しむためだけでも読んでいただけると嬉しい。

02

それは昨夜、夕食前の出来事だった。
作業も区切りがついて、もう時間も時間で空腹感も覚えたので食事を取りたいと考えていた時のこと
あるニュース記事を発見した僕は、その内容を元にBlogを更新しようと考えた。
「Blogを書く程度ならそんなに時間はかからないし、まぁそのくらいの時間なら空腹も我慢できるさ」
そんな軽い感覚でBlogを書いていった。

記事は案の定スラスラと書くことができた。そのニュースに対する考察と、関連する内容を引用してのものだったので 時間にして30分とかからないくらいだっただろうか。
「さっさとこの記事を公開して、腹を満たすとしよう!」と
公開前の最後の仕上げにカテゴリーと「パーマリンク」を何にしようか・・と考えた。

「パーマリンク」という言葉に聞き覚えが無い人もいるだろうと言うことで簡単に説明しておくと このBlogは「Wordpress」で作成されているので、ブラウザ上部にあるこの「URLバー」 urlbar 拡大表示 に表示されるURLのドメイン以下を任意で決めることができる。 (※このケースでは/labo/までがBlogのURLなので、~/labo/以下)

今現在もそうなのだが、
「(BlogのURL)/記事のURL」となっているこのURLを「(BlogのURL)/カテゴリー名/記事のURL」にしたいな、と考え パーマリンク設定を変更することにした。

この時、このBlogの設定を行った時のことを思い出していればこれから先のすべては起こらなかったのだろう。
そう、この「ふとした思いつき」がすべての発端だった。

しかし、ここでこの記事を読む皆さんが同じミスを犯さないように、また誤解がないようにあらかじめ断っておこう。 「一度設定したパーマリンクは変えるべきではない」

WordPress Codex

「パフォーマンス上の理由で %category% で始まるパーマリンクは非推奨」 http://wpdocs.sourceforge.jp/%E3%83%91%E3%83%BC%E3%83%9E%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9
WordPressにおいて、パーマリンク(URL)に「カテゴリー」から始まるパーマリンクを設定しないほうがよい というのはつまり、WordpressでBlog等を書いたことがあれば誰でも分かると思うのだけど、「一つの記事に複数のカテゴリーが設定できる」。 じゃあ、複数のカテゴリーが設定された記事のURLはどちらのカテゴリーのURLが入るんだ?ということだ。 WordPressのシステムエラーの元にもなるという。

もう一つ加えると、パーマリンクとはつまりURL。 URLとはそのサイト・ページの住所にあたるものだから作成後に変更されてはならない。 変わってしまってはそこに辿りつけなくなるのだから。

Blogを書いている人なら思い当たる節もあると思うけど 記事が増えてくると、カテゴリーを細分化したり 過去の記事のカテゴリーを変更したくなったりすることもある。 そんな時にURLまで変わってしまうということだ。

URLが変われば当然、SNSなどで貼っていたリンクなどはすべて無効になってしまう。 もらっていた「いいね」や「ツイート」「+1」「ブックマーク」などももちろん無効になってしまう。

もう一度言うが、『URLは作成後、変更されてはならないもの』なのだ。

しかし、僕はというと変更しようと考えた。
理由は二つある。

一つはこのBlogは6月から始めたこともあり、まだ公開している記事の数もそんなに無かったこと。 だから何とかなるだろうと考えてしまっていたのだ。

そしてもう一つ・・そもそもはこの考えが危険だったのだが、
今このページURLバーや前述の画像のURLにある通り、このBlogのURLには「labo」という名がついている。
「labo」とはつまり実験室で、僕はこのディレクトリ以下のすべてを実験場として思いつくものをいろいろと試している。 だからここにおいては、いろんな「手段」や「方法」を思いつく限り、興味の限り、試そうと考えている。

その為、このBlogもWordPressのマルチサイト機能によって複数のサイトと共に作成していて、それぞれのサイトで「Wordpressでできること」を様々実験している。

だが、パーマリンク設定変更の折、このマルチサイト機能が一つ仇をなしてしまった。
一度設定を変更した後に、もう少し詳しく知りたくてCodex(Wordpressの公式フォーラム)を見た。 そこで上記の「非推奨」というものを見つけてしまったのだ。
これはいかん、と元に戻そうとしたが何故かいらない「blog」というパーマリンクが付いてくるではないか。

parmalink 拡大表示

しかも、この画像の通り変更できない位置で・・。

まずい・・。Blog上のすべての記事のURLが変わってしまった。
しかも望まぬかたちで。
さらに戻せない。

とんだアクシデントに見舞われ
さてどうしたものか、といろいろと調べてみたところ
本来ならば、この設定はダッシュボード(管理画面)で簡単にできることが分かった。
しかし、前述の通り、マルチサイト機能が仇をなしていたのだ。

マルチサイト機能を使っていると「ネットワーク管理者(特権管理者=以下:管理者)」と各サイト毎にそれぞれ「ダッシュボード(管理画面)」が存在しているのだが
「管理者ダッシュボード」と「サイトダッシュボード」には機能の違いがあり、「管理者ダッシュボード」でしか変更できない項目が多々ある。

このパーマリンク設定の大元の設定も「管理者ダッシュボード」でしか変更できないのだ。 ここを把握していなかったのが問題だった。僕はサイト作成後のいろいろは実験していても、大元のマルチサイト機能についてちゃんと理解していなかったのだ。
2つ目のターニングポイントである。上記のことを把握していれば、ここから先のことは起こらなかっただろう。

dashboard_s拡大表示 dashboard_n拡大表示 Wordpressの「マルチサイト機能」を使うと、通常の管理画面の項目が「管理者ダッシュボード(※画像左)」と「サイトダッシュボード(※画像右)」に分断される。
機能を分けるのだ。はっきり言うと(一人で使うには)利便性はかなり落ちる。記事の作成・更新やページの作成は「サイトダッシュボード」側でしか行えないが サイトのシステム的な設定は「管理者ダッシュボード」でしか行えない。
マルチサイト機能はどちらかと言えば、複数人でいくつかのサイトを運営する為の機能なのだ。
(例えば、管理人と更新メンバーのように分かれて使用するなど)

この時の僕はと言えば、ググって調べた中にでてきた「変更方法」の「ここを触ればいいよ」の項目が自分のダッシュボードに無いことを見て、 「ああ、またマルチサイト機能が何らかの“おいた”をしているのだろう」ということは分かっていた。
―だがそれだけだった。

いろいろ調べた中に、「マルチサイト機能を一時的にオフにして変更→変更後再度オンに」という方法があり
「へぇ、こんな方法があるのか。」
とこの方法に興味を持ってしまったのだ。

僕はこのBlogをマルチサイト化をしてから一度も「マルチサイト機能」をオフにしたことは無かった。
できることすら知らなかったと思う。
管理画面にもマルチサイトの「更新」の項目はあっても「オン/オフ」の項目はどこにもない。
まぁ普通はする必要がないので項目そのものが無い訳なのだが、何を思ったか「後学のため」と、それを試してみることにした。
―愚か者である。

あらためてここでも誤解がないように言っておくと、こんなことを行う必要はまったく無い。管理者ダッシュボードから簡単に変更できる。

マルチサイト機能をオフにするには「wp-config.php」の設定を変更する。 非常に簡単で、「wp-config.php」の設定を変更すると自動でマルチサイト機能はオフになる。久しぶりに見る、通常通り「フル装備」の管理画面でパーマリンク設定を元に戻し、プレビューで確認。問題なしだ。あっさりと終わった。
「wp-config.php」の設定を元に戻す。
「ちょろいもんだ。まぁこんなくらいのこと僕にかかってしまえばちょちょいのちょいさー
 さぁて、後はマルチサイトを元に戻して・・と」
―我ながらどう考えてもフラグにしかならないセリフだ。

しかしこの時、痛恨のミスがあったことをこの時の僕は気付いていなかった。

03

再び管理画面に戻って、マルチサイトを再度有効化させようとダッシュボードで「有効化」を行うが
「エラー」の赤文字。

『データベースを空にするか削除して下さい』・・と。
おかしいな・・?新たにネットワークを作成した訳でもないのに、データベースを変更しなければならないなんて・・?
マルチサイトの機能を一旦オフにして、もう一度オンにするだけのことなのだ。 初期化しなければならないなんてそんなはずはない。

これは言うなれば、「箱から出した中身をもう一度その箱へ戻そうとしたら、それが何故か入らない」と同じようなものだ。
そんなバカな。
―さっきまでの調子はどこへ行った・・。なんとも脆いメンタルである。

何度やってもこの画面が表示され、一向にマルチサイトも有効にならないので 仕方無く、僕はデータベースを触ることにした。

データベースにはマルチサイトのサイトの数分、データが入っている。
正直、かなりの数で若干引いた。

この時、空腹感を覚えてから1時間あまりがすぎていて
僕の空腹感もピークを迎えていた。
加えて今日の作業も行った後のノンストップでの作業だ。残業のようなもので疲労感や疲弊感もある。
当然集中力もかなりすり減っていた。
いい加減早く休みたかったし、お腹も満たしたかった。
焦っていたのだろう。冷静さを欠いていたのだろう。

一度、原因と思えるファイルを削除した後、もう一度マルチサイト有効化を行ったが
まだ、「エラー」の赤文字とお決まりの文章。

じゃあこっちもか?と
もう一つファイルを削除した後、もう一度マルチサイト有効化を行ったが
まだ、「エラー」の赤文字とお決まりの文章。

え?まさかこれも・・?と
さらにもう一つファイルを削除した後、もう一度マルチサイト有効化を行ったが
まだ、「エラー」の赤文字とお決まりの文章。

・・焦燥は怒りに変わった。
「ふっざっけっんっなぁぁぁ!!」

もうこちとらさっさと終わらせたいんだ。
さっさとご飯を食べたいんだよ!
空腹は人を怒らせやすくするというが、本当のことらしい。
と、僕は自分の気性を棚に上げるためにもっともらしい言葉を引用しておく。

はっきりと言おう。
このエラー時の表示文章は『必ずしも正しい訳ではない』ということ。
むしろ、このマルチサイト機能に関するエラー時の『お決まり文』のようなものなのだ。
だからエラーの原因が、表示されている内容以外の場所にあることだってあるのだ。

この時の僕はまったく気付いていなかったのだが、今回の件の原因もまさにそうだったのだ。

そんなことなど忘却の彼方にある僕の頭は、目の前のデータベースのことで頭が満たされていた。

「ここだろう?この手をつけていないデータベースのどれかに原因があるんだな?なら・・」
と、手当たりしだいに消しては有効化を行っていった。
―もはや正気の沙汰ではない、としか言いようがない。。

そして、その時は訪れた。

あるファイルを手に掛けた時、ふと我に返った。
「あれ・・?今のって消しちゃまずいファイルじゃなかったか・・?」
しかし、時すでに遅しだ。もう消してしまったものは元には戻せない。
後には戻れないなら、進むしかない。
前進あるのみだ。
どれだけ愚かな行為に身をやつしていても、こう言うとかっこいい風に聞こえてしまうから日本語は不思議だ。
しかし、現実はそう甘くは無い。

管理画面に戻る。

さっきまでとは明らかに違う警告めいた表示文。
「再インストール」の文字が出ていた。

「・・・。」

やってしまったのだ。
思わず「ふふっ・・」と、引きつった笑みを浮かべてしまう。

ふとした気の迷いとうかつな行動で、大事な部分のデータを欠損させてしまったのだ。

Wordpressは
 それを構成するデータと
 もう一つ、その構成を記録しておくデータベース
という二つから成っている。

構成する為のデータは少々壊れても修復が簡単だが
その構成の元になるデータベースはそうはいかない。
ここがダメになってしまってはどうしようもないのだ。

―Blogを更新しようと思い立ってから、この時すでに3時間が過ぎていた。
精も根も尽き果てていた。

かくしてそんな折にWordpress本体の再インストールを余儀なくされ
データベースの再構築を行うなんて大作業を行う気力も残っていなかった僕は
一つの決断を下したのだった。

「すべてを無に帰そう・・」

ああ、きっと自暴自棄になってそれまで頑張ってきたものを終わらせようと考えた人の感覚ってこんな感じなんだろうななんて思いながら、僕はボタンを押す。

晴れてデータは初期化された。

04

これで終わりかと思った皆さん、申し訳ないがまだこの一夜の物語は終わったわけではないのである。
この物語にはまだ続きがあり、 そして最終的にどうしようもなくやるせなくなるオチがあるのだ。

ここまで読み進めて、おそらく皆さんもかなり精神的に削られたであろうと思う。
だがここにきて、まだすべての原因となるものが明示されていないのだ。
つまり、僕の気力を根こそぎ奪い、絶望のどん底へとたたき落とした最後の一撃が残っているのである。

最後のエピソードを語る前に、先の項目で「初期化」という一見ありえない選択をとった言い訳をすると、
僕にとってはデータベースのリカバリーを行うよりは
再インストールから再設定のほうがはるかに楽な作業なのだ。
ここまで疲弊した状態で、データベースのリカバリーなんて今日中に終わらせられるはずもない・・
なら、多少面倒ではあるが再設定を行ったほうが今日中に終わらせられるだろう。 ということだ。

WordPressを再インストールすると、新たに自動的にデータベースも構築される。
再インストール完了後、何も手のつけられていないまっさらな画面を改めて見る。
何とも言えない虚無感に思わず天を仰ぎ見てしまった。

さて・・と、力無く再設定を始め
また例のマルチサイト機能の有効化を行おうとした時

まだ、「エラー」の赤文字とお決まりの文章。
「はぁ??」

完全初期化したのだ。出るはずのないエラーが出ている。
ここにきて僕はようやく気付いた。
「何か別のところに問題がある・・?」

そう、問題はデータベースではなかったのだ。
・・というか、まったく関係が無かった。

そしてパーマリンク設定の際に触ったすべてのデータファイルをチェックした。
といっても、データベース以外で触ったのは「wp-config.php」だけだ。

中身を調べて固まった。
『あるはずの記述が無い』

「というかこれは・・・」
古い、というか記述されている内容が、現在(初期化前)の設定と噛み合っていない。
変な汗が出た。

僕のPCにはサイトを作成した際、サーバーにアップするデータのバックアップが残してある。
このBlogのバックアップフォルダを調べたら
フォルダ内の子フォルダから「wp-config.php」がもう一つ出てきたではないか。
僕は初めてこのBlogをマルチサイト化した折に、それ以前の内容をバックアップしたファイルと 正式採用版と二種類残していたのだ。

そして、そんなことを憶えていなかった僕は正式採用版ではなく
以前のバックアップ用をアップロードしていたのだった。
2節目の最後で言っていた「痛恨のミス」だ。
しかし、正式採用版を子フォルダに入れておくなんて、こんなもんトラップ以外の何物でもないだろう!
―昔の僕のお茶目さんめ!

・phpファイルはサーバー内で編集するといろいろとトラブルの種になる為、基本としてはローカルで編集し、完成したファイルをサーバーへアップロードする―という手順を踏む。
・「あるはずの記述が無い」 wp-cofig拡大表示 と気付いたのは、上記のマルチサイト機能を有効にする設定内容の2行目以下が記述されていなかったことに気付いた。
※初めてマルチサイト機能を設定する際、まず一行目を書き加えてからこの全行が初めて掲示されるため、バックアップ用は1行目のみ記述されていた。

誰か冗談だと言ってくれ・・とすがるような、願うような気持ちを胸に、軽くめまいを覚えながら、おずおずと正式採用版をアップロードし直し、 管理画面を開く。
そして、マルチサイト機能有効化。

何の問題も無く、元気に稼働し始めた。

かくして問題は解決された。
何ということは無い、ただの茶番だったのである。

この一連の事柄は、何ら難解な謎が潜んでいるわけではなく
非常に困難な問題があったわけでもなく
ただの勘違いと
めんどくさがりでうかつな僕がとった軽率な行動と
「こうだ」という思い込みに
過去の僕の茶目っ気たっぷりなトラップとが
絶妙に噛み合い、この最悪な結果を引き起こしただけのやるせなさしか残らない、ただのドタバタ劇だったのである。

こうして、約4時間あまりに渡る激闘はあっけなく幕を下ろした。

空っぽの初期状態になり、文字通り「はりぼて」のBlogを残し
公開しようとしていた記事の内容はもちろん、これまで書き綴ってきた記事も
下書きで保存していた数々の記事も、以前のBlogから移行した記事の保存データのすべて
更にはマルチサイトで作成していたすべてのサイトデータ
体力と気力と言葉を根こそぎ失い
力尽き横たわる僕がそこにいた。

「自業自得」―分かりすぎているくらいに理解しているからやるせない。
ぐうの音も出ないとは、まさにこのことだ。

だが、最後の力を振り絞って、あえてここで何かを言うとするならば
これが、クライアント様のではなく僕ので本当に良かった。
―ちょっと綺麗なことを言っておいてしめくくろうという魂胆が見え見えである。

まぁ、クライアント様のデータを扱う時はこんなうかつな行動や判断などする訳もないのだが
いくら自分のものとはいえ、こんなに雑に扱うとは 自分で自分に引いた。

せっかく綺麗なことを言ったついでに、ここでWordpressのマルチサイトを使用する考えがある方へ
もし、データベースを触ることになった際の注意点も挙げておくとしよう。

マルチサイトを作成後、もしオフにする機会があったとしても、データベースに手を加えなければ再有効化できないなんてことは断じてない。
元々のネットワークデータそのものなのだから別のデータであると誤認される余地がないのだ。
「箱から出した中身は、『箱に入っていた』という事実がある以上、物理的にその箱に入る」のだ。拒絶されることはありえないということだ。
※ちなみに、この後もう一度「マルチサイト機能オン/オフ」を検証してみたが「wp-config.php」のマルチサイト機能に関する設定を誤記しない限り「03」のところのようなエラーが出ることは無かった。

また、上記のケース以外でこの記事の「03」のところでもあったマルチサイト有効化時のエラーが出る際は
下記の「データベーステーブルの削除」を行うと解消される。

***_blogs
***_blogs_versions
***_registration_log
***_signups
***_site
***_sitemeta

これ以外のものを削除すると、最悪今回の僕と同じ目に遭えるだろう。
心して、チェックすることをおすすめする。

僕は教訓を得た。
「焦りはこうまで目を曇らせる。どんな時も心に余裕と、時には進もうという時に一歩『立ち止まる勇気』を忘れてはならない」

こうして一夜の出来事は終わった。
正直、何も得るものが無いドタバタ劇に長々と付き合わせてしまって申し訳ない限りだが、 最後まで飽きずにお付き合い下さった人には感謝の限りだ。 特に同情などはしてくれないでいただけるとむしろありがたい。
むしろ「こんなことやるヤツいねーだろ!バッカじゃねー?あはは!」
と、軽く笑い飛ばしていただけると幸いだ。

がわ以外は非常に殺風景になってしまったこのBlogではあるが、
また少しづつ過去の記事も思いだせる限り復元していこうと思う。
記事のバックアップはとっていなかったので(データベースを触ろうというのに・・うかつすぎる)さすがにそのままの内容は復元できないが せっかくなので、新たな注釈なども交えつつ、少しリファインしたものを上げていこうと思う。
・・余談ではあるが、完全初期化の折に、いろいろリフレッシュしてみたりもした。
『ただでは転ばぬ』―そんな強がりを締めの言葉に終わらせていただこう。お粗末さまでした。

Comments

Add a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

認証コード * Time limit is exhausted. Please reload CAPTCHA.

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください