Brian'z Imagination

ブライアンねこの、頭の中。

Brian'z Imagination

間違ってはてなブログの下書きを消しちゃった?データを復活させる驚くべき方法とは

f:id:x93mg:20160602212004j:plain

いまだにせないことがある。Wordpressにも何世代も戻ることが可能な自動バックアップがあるのに、はてなブログのエディターは1世代前しか記事を戻すことができない

f:id:x93mg:20160602191847p:plain
これです、これ。

ぼくはきみに大いに悩まされてしまったよ。

「(復元)」というリンクを押すと、1世代前の記事に戻すことができるけれど、一旦戻してしまうと、逆に取り消すことができない。先日も折角書いていた記事を、うっかり「(復元)」を押して消してしまうという事態になった。また、iPhoneアプリとPC上のブラウザを行ったり来たりして、誤操作で記事が消えてしまったこともある。

そんなとき、次の方法を試して欲しい。──キャッシュからの救出サルベージだ。

ただし、少しだけ特殊な操作が必要なところもある。事故は想定していないときに突然起こるものだから、すでに「事故」を経験した被害者はもちろん、そうでないひとも万が一の場合に備えて予習をしておこう

この記事は「下書き途中」の記事データを復活させます

はじめに、この記事は「まだ公開していない、下書き途中の記事」を復活させる方法について書いていく。はてなブログが用意してくれたエディタで記事を執筆し、誤操作などで記事が消えてしまった場合を想定している。

「一旦公開した記事」を復活させる方法に関しては、この記事に詳しく書いてあるので、参考にしてほしい。

こちらの記事も大変秀逸。誤って公開してしまった記事を消してしまっても、一旦ついたスターやはてブまで復活させられるので、チェックしておこう。

また、以下の記事を参考にしたけれど、若干不足があったと思ったので、その部分はこの記事で補完していく。

キャッシュを復活させてデータを救出する!

まず大前提として、はてなブログエディターの「(復元)」機能について触れておこう。

f:id:x93mg:20160602191847p:plain
これ。

「(復元)」を使うと例えばスタバのフリーWifiを使って記事を書いていたとして、一旦オフラインになっても復活させることができる。
これはブラウザのCacheキャッシュに記事内容を保管していることを意味している
ちなみにもっとkwskなひとのために、IT用語辞典でのキャッシュの説明は以下の通り。

キャッシュとは、使用頻度の高いデータを高速な記憶装置に蓄えておくことにより、いちいち低速な装置から読み出す無駄を省いて高速化すること。また、その際に使われる高速な記憶装置や、複製されたデータそのもののこと。

つまり、ブラウザにデータが格納されているので、ブラウザから下書きデータをぶっこ抜けばいいという話になる。
その手順について解説していこう。

さあ、復活だ!

ステップ1:準備

まずは、これらのソフトを準備しておこう。

テキストエディタについては、Sublime Textでなくとも、矩形くけい選択ができるテキストエディタであればOK。また、ぼくはMacユーザーだったので0xEDというソフトを使ったけれど、WindowsならStirlingが有名なのでこれを使うといいと思う(バイナリ保存するだけなので、もっと軽量なソフトもあるはず)。

ステップ2:キャッシュの捜索

ちょっと骨の折れる作業だけれど、キャッシュから該当の下書きデータを捜索していく。

キャッシュは、代表的なブラウザなら、アドレスバーに以下のURLを打ち込むと一覧を表示させることができる。

  • Chrome → chrome://cache
  • Vivaldi → vivaldi://cache
  • Firefox → about://cache

f:id:x93mg:20160602200934p:plain
ここにあるのが直近のキャッシュ。

「⌘(Command) + F」(Windowsでは「Ctrl + F」)を押すと検索窓が出てくるので、「preview」と打って該当記事を掘り当てる。

f:id:x93mg:20160602201631p:plain

すると、473件ととんでもない数がヒットする。
この中で「http://〜」や「https://〜」ではなく、「16ケタの数字」で始まり「preview」で終わるキャッシュを掘り当てる。そのキャッシュこそが、あなたがさっきまで書いていた記事のキャッシュデータだ。
数件ある場合は、一番最初に出てきたものが最新のものなので、基本的にはそれを使えばいい。
場合によっては何世代か前に戻りたい場合があるかもしれない。その場合には、もう少し探して、同じ「16ケタの数字」で始まり「preview」で終わるキャッシュを探せばいい。

ステップ3:キャッシュデータの抽出

該当のキャッシュデータをクリックすると、以下のような文字列が表示される。

f:id:x93mg:20160602202351p:plain

上段の「HTTP/1.1 200 OK〜」から始まるパーツはヘッダーで、データの情報を示している。
このヘッダーによると、データは「HTML」で書かれていて、「gzip」という形式でエンコードされている。表示されている時間はキャッシュが作成された時間だが、10時間ほど時差が生じているみたいだ。

中段の「00000000:〜」から始まるパーツはヘッダーをバイナリデータにしてある。ここはあまり関係ない。

下段の「00000000:〜」から始まるパーツが、実際に復元するもととなるバイナリデータとなる。この部分をSublime Textにまるごとコピペしよう。

ステップ4:バイナリ部分を抜き出す

f:id:x93mg:20160602203623p:plain

ペーストしたデータは、実際に使うのは2ケタの数字や文字で示されている部分なので、「Option」を押しながらマウスで選択すると矩形選択ができるので、コピーして新規ファイルでバイナリ部分だけをペーストする。

f:id:x93mg:20160602203856p:plain

スペースは余分なので、「⌘(Command) + Option + F」でスペースを取り除こう。

f:id:x93mg:20160602204019p:plain

取り除くと、こんな感じになる。

f:id:x93mg:20160602204043p:plain

ステップ5:バイナリデータとして「.gz」形式で保存

ここで先ほどインストールした「0xED」を起動し、メニューから「New」を選んで立ち上げる。

f:id:x93mg:20160602204717p:plain

先ほど用意したバイナリコードを0xEDに貼り付ける。

f:id:x93mg:20160602204734p:plain

「preview.gz」というファイル名で保存する(拡張子が「.gz」なら何でもOK)。

f:id:x93mg:20160602205112p:plain

出来たファイルを解凍すれば、いよいよ欲しいファイルのお出ましだ!

ステップ6:出来たファイルをブラウザでチェック!

作成したファイルは拡張子がついていないので、右クリックでブラウザを選んで、再現されているかを確認しよう。

f:id:x93mg:20160602205247p:plain

すると…!

f:id:x93mg:20160602205521p:plain

再現できてるー!

CSSなどは読みこん出来ないみたいだけれど、ちゃんと書いたテキストは再現されている。

f:id:x93mg:20160602205606p:plain

テキストエディタで開いても、ちゃんとhtmlごと復活されられていることが分かる。

よかったよかった…。

まとめ

まあこまめに下書きを保存しておくのが一番だけれど、書いているのに夢中になって誤操作で消してしまうこともある。上記の方法は6つのステップに分けて詳細に説明したけれど、ツールをそろえておけば約3分で復活させることが可能なので、万が一のために準備しておくといいかもしれない。
けれど、もっともいい方法は、はてな開発チームが自動バックアップ機能をWordpress並みに作り上げてくれることだ。ぼくはとっても期待している。

今日のひとりごと
そうだ!読者になろう!
ブックマークもお忘れなく!

Recommend!