Qrunchの記事を間違えて全削除してしまった!!!から頑張って復活させた

それは起きてしまった悲劇

2020年4月25日、早朝4:30頃の出来事でした。
「数か月ぶりにQrunchでも書こう」
16日間もの長期休みを手に入れ、仕事終わりに動画鑑賞で夜明けを迎える直前に、ふと思い立ったのです。

記事の内容は、タグとカテゴリの整理についてです。
そのため、記事を書く前に、まずは自身のQrunch記事のタグとカテゴリの整理をしておきたかったのです。

一旦、既存の全記事に目を通し、タグとカテゴリを整理しました。
更新が必要な記事は更新ボタンを、そうでない記事は戻るボタンを、それぞれ押下して、整理していきました。

PlantUMLはこちら
@startuml  
title Qrunchにおける記事更新の画面遷移  

hide empty description  

state "Qrunchトップ" as qrunch  
' state "ダッシュボード" as dashboard {  
    state "ダッシュボードトップ" as dashboard  
    state "記事の管理" as console  
    ' [*] -> dashboard.top  
    ' dashboard.console -> [*]  
' }  
state "記事" as entry  
state "更新完了" as updated  
entry : do / 更新すべき箇所を確認する  

[*] --> qrunch : https://qrunch.net を開く  
qrunch --> dashboard : 自身のアイコンから\n「ダッシュボード」メニューを選択する  
dashboard --> console : 「記事の管理」\nメニューを\n選択する  
console --> entry : まだ見ていない記事を開く\n[未確認記事が有る場合]  
entry -> updated : 更新する\n[更新内容が有る場合]  
updated --> console : 「記事の管理」メニューを\n選択する  
entry --> console : 戻る\n[更新内容が無い場合]\n/投稿未完了ポップアップの表示  
console --> [*] : [未確認記事が無い場合]  
@enduml  

そして、「記事を書く」ボタンを押しました。

記事を書こうとしたところ、ちょっと思い立って、編集画面で1箇所も手を入れずに、戻りました。
すると、ステートマシン図における「戻る」契機実施時と同様、「投稿未完了ポップアップ」が出たので、キャンセルを押下しました。

「記事の管理」画面に戻ってくると、何やらタイトルも内容も書いてない記事が生成されているようにみえるじゃないですか(再現画像です)。
(赤枠で囲った箇所です。 え、どう見てもテーブルヘッダーですか?夜更かしで疲れてたんですよ!

深く考えずに、チェックを入れます。
すると、チェックを入れたすぐそばに「記事を削除する」メニューが登場しました(再現画像)。

この時、僕は下の欄にある全ての記事にチェックが付いていることに気づきませんでした。
深く考えず、削除しようとします。

すると、Qrunchくんは丁寧に「削除した記事は戻せません」と警告してくれます。
優しいです。

でも、僕は空記事を削除したいので、気にせずOKします。


押した後、すぐには画面上に変化がありません。
空記事もそのまま残っているので、不思議だなと眺めていました。

直後、気づきました。
「あれ、この欄って、空記事じゃなくてテーブルヘッダーじゃね?」と。

焦るものの、まだ画面上には残っています。
一縷の望みをかけ、リロードします(悪手)。

すると、リロードするたびに、記事が消えていくではありませんか!
焦りますが、それでも正常性バイアスにより、リロードを続ける手は止まりません。

なんということでしょう。
綺麗になりましたね。

エンジニア魂に火がつく

焦りました。

記事が無くなることで被る被害は、下記の通りです。

  • 記事の内容というドキュメントが消える
  • 記事の内容を再び第三者に見てもらう機会が消える
  • 過去の栄光が消える

1番目と2番目の理由により、ドキュメントが消えるのは非常に困りました。
また、プチバズった記事により今月(2020年4月現在)のQrunch「今日/今週/月間トレンド」第1位を総なめしたことで、僕の精神が支えられていたこともあり、3番目の理由によって非常に落胆してしまいました。

こんな時、どうすればよいでしょうか?

僕が最初に考えたのは、Qrunchのフィードバックで、全記事消しちゃいましたと泣き言を垂れることでした。
しかし......
初期のころから応援している/何度もTwitterで記事を拡散してくれる/ときどき拍手を50個くらいくれる......
そんなQrunch運営に「泣きつく手段がフィードバックかよ」と冷静になり、踏みとどまりました。

次に考えたのが、報告記事にすることでした。
Qrunch運営なら、きっと見てくれるだろう。
そんな期待を込めて、「消えちゃいました!助けてください」という報告記事を書こうと思いました。
(既にキャプチャ画像にタイトルだけの記事の下書きを作ってるのが見えてますね)
これなら、別に見てもらわなくても、ポエム記事として書けば正当化できます。

しかし、書こうとする直前で思いつきました。
せっかくなら、エンジニアらしく、記事を復活させてみよう、と。
運営の手間を取らせなくても、自分だけでできることをしてみよう、と。

ここで、僕の記事の内容は変わりました。

Qrunchの記事を削除してしまった際の手順

長い前段は終わりです。
ここからが、本記事の主題です。

すなわち、もしQrunchの記事を削除(全削除)してしまった場合、どうすればよいかの手順をここに記します。
僕が実際に行った事のうち、成果があったものについてのみ書きます(効果がなかったけど試してみたことについては、後程書きます)。

動作確認環境を、以下に記します。

  • Windows 10 Pro: version 1909, OS Build 18363.778
  • Google Chrome: version 80.0.3987.163(Official Build), 64 ビット

ブラウザ上のWebページを遷移させないように保存する

まず大切なのは、現場保存です。
やみくもに動いてしまうのは、逆効果になりかねません。

まず、いま開いているQrunchの画面を表示しているブラウザ(タブ)を、残しておきましょう。
Chromeの場合、裏で待機しているタブ画面を呼出す際に、強制的に再読込する場合があるため、別ウィンドウで置いておくと良いでしょう。

また、HTML形式でローカル保存しておきましょう。
もし記事が残っている画面で保存できれば、記事のタイトル/タグ/URL等を記録できます。

僕は、偶然にも別タブでQrunchブログを開いていたため、そちらをローカル保存しました。

編集画面を戻る

偶然にも、僕は直前まで記事の編集をしていました。
そこで、開いているタブを戻ると、なんと、記事がそのまま残っているじゃないですか!

しかし、「記事を更新する」ボタンを押下すると、下記画面に遷移してしまいます。

そこで、記事の内容をコピーし、別記事として新規作成することで、記事の内容を避難させました。
(新着記事を荒らしてしまいました、すみません。)

僕の場合は、全8記事中6記事を更新したため、6記事はそのまま再作成できました。

Googleキャッシュに頼る

残り2記事ですが、うち片方の記事は大した内容を書いていないため、無くなっても問題ありません。
しかし、もう1つの方の記事は、アドベントカレンダーにも連携しており、またビューも多かった、思い入れのある記事でした。
この内容が消えるのだけは避けたかったです。

そこで、閃きました。
ビューが多いなら、Googleキャッシュにあるんじゃないだろうか?と。

調べてみると、なんと......
ありました!!

キャッシュしているWebページのHTMLを展開し、内容をタグごと直接記事にコピペすれば復活できます。

これで、ほぼ全ての記事を復活できました。

まとめ

記事の内容は復活できましたが、記事の記録は復活できませんでした。
しかし今は、ドキュメントさえ残ってくれたら、あまり気にすることはないかなと考えています。
トレンド1位という記録に浮かれすぎていた自分には、いい薬だったかもしれませんね。

まとめると、以下の通りです。

  • Qrunchの記事を全削除しちゃいました
  • 頑張って復活させました
  • 一部復活できなかったものがありますが気にしてません
  • 仮に戻せるとしても、現状で特段困っていないので問題ありません

追記

なんと、Qrunch開発者である @codomisu さんから、直々にコメントをいただきました。
バックアップがあるとのことだったので、復旧をお願いしたところ、全て復旧していただけました。

しかも、僕が頑張って復活させた記事については、下書きへと変更してくださる気の利きように、感服いたしました。
復旧を確認次第、手動復活記事は消そうと思っていたので、ありがたかったです。

その上、実はここで一切触れていない下書き記事についても、復旧していただけました!
下書き記事については、そもそも要らないかなと無視していたのと、公開されてないし無理だろうと諦めていたので、まさか戻ってくるとは思いませんでした。

新たにまとめると、運営に泣きつけば全て解決していたのでは?というオチでした!!!
@codomisu さんには頭が上がりません。またファンになってしまうじゃないですか。

以上です、ご清覧ありがとうございました。

おまけと追記

要望

Qrunch運営さんがこの記事を読んでくれた時のために、要望を書いておきます。

  • 記事一覧のテーブルヘッダーは、色を付けるなど、テーブルデータとの差異を強くしてほしい
  • 記事削除時のメッセージは、別の場所に表示してほしい
  • (余力があれば)ユーザーによる削除処理ロールバックを可能にしてほしい

Qrunch開発者の @codomisu さんが検討してくださるとのことです。
ありがとうございます!

旧記事URL

削除してしまった旧記事のタイトルおよびURLを、下記に記します。
保存できなかった記事については、 🗙 絵文字を併記しています。

こちら、 @codomisu さんの手動復旧により、全て回復しました。

試してみたが駄目だったこと

「Qrunchの記事を削除してしまった際の手順」として試してみたが効果が無かったものについて、下記に示します。

Chromeキャッシュの呼出し

Chromeのキャッシュに記事内容が保存されていることを期待して、 ChromeCacheView を使ってみました。
実際に保存されている記事もあったものの、その全ては別手段で取得できるものでした。

また、キャッシュの中からjQueryを発見したので、URLが直接書いてあったりしないかと期待して探したのですが、当然のようにありませんでした。

アーカイブサイトの利用

アーカイブサイトを閲覧するために、僕が時々使う Internet Archive: Digital Library of Free & Borrowable Books, Movies, Music & Wayback Machine を利用してみました。
実際には、Qrunchトップページしか保存していないようでした(ブログの規模によって異なる可能性あり)。