Webデザイン

Abstract経由でSketchを使っていてファイルが真っ白になった際の対処

Abstract経由でSketchを使っていてファイルが真っ白になった際の対処

やぁみんな! atomだよ!
今回は、Abstract経由でSketchを使っていてファイルが真っ白になった際の対処について書こうと思うぞ。

デザインデータが突如白紙になる恐怖

例えばデザインをしていて、最新ファイルを間違えて捨てちゃったとか、意図しない内容で上書き保存して閉じちゃったとか、最新のデザインデータを不意に失うような事件が起こるっていうのはデザイナーあるあるだと思うんだけど、先日、Abstract+Sketchを使っていてそんな事件が起きたので、そのレポートだ。

前日まで普通に作業していたSketchファイルが突然真っ白に

僕はある日、前日まで作業していたSketchファイルを開いてデザイン作業の続きをしようとしていた。
Abstractを開いて、前日夜の最新マージからブランチを作り、「EDIT IN SKETCH」でファイルを開いた。
すると。。。
17枚あったページは1枚になり、アートボードは0枚になっていたんだ。。。

作業していたsketchファイルが真っ白

Abstract側の作ったブランチを見てみると、当該ファイルの内容が「File is empty」と表示されている。。。
他のファイルは問題ない。
昨日作業して、コミット、マージしたファイルだけ、問題が発生している。

↓問題の発生しているファイル。

よくよくAbstractを見ると「File is empty」

↓他のファイルは問題ない。

他のファイルは大丈夫

ブランチを削除して再度チャレンジ

問題が発生してしまったブランチを一度削除して、新たに作り直し、再度開いてみても、やっぱり真っ白。
Abstract、Sketch、Macを再起動して試してみても、結果は同じだった。

昨日のマージは正常にできているはずだけど?

Abstractの、昨日最後のマージは、たぶん正常におこなわれている。
当該ファイルの昨日最後のマージをAbstract上で確認すると、ちゃんとアートボードのサムネイル郡が表示されているからね。

↓「File is empty」になってない。

昨晩マージした時点では問題なかった

試しにそのファイルを「EDIT IN SKETCH」して「OPEN UNTRACKED」で開いてみると。。。
なんと、真っ白だ。
ページは1枚、アートボードは0枚。。。

Abstract上では正常に見えて、それをSketchで開こうとすると真っ白になる、という状態。

ちなみにその1つ前のマージは?

試しに、問題が発生しているマージの1つ前のマージに移動して、「OPEN UNTRACKED」で開いてみた。
すると、こちらは問題なく開くことができた。
すべてのページが正常に揃っている。。。

ファイルをエクスポートしてみる

それならば、と、問題の発生しているファイルをデスクトップにエクスポートしてみた。
Abstract上の昨日のマージは、サムネイルも正常に表示されているし、ファイル自体には問題ないのでは?
Abstractを経由してSketchで“開こうとするとき”に“何かが起こっている”んじゃないか?と推測したんだ。
すると。。。

やっぱり、エクスポートしたSketchファイルは正常に開くことができた
昨日最後にSketchで保存して、Abstractにコミット、マージした内容だ。

うーん、やっぱりSketchファイル自体は正常なのか。。。
僕の気づけていない何かが要因で、AbstractからSketchにデータが渡されるときに問題を発生させているみたいだ。。。
Abstractの問題なのか、Sketchの問題なのか、仕様なのか、バグなのか、まったくわからない。。。
そして、調査検証したり、必要であればAbstractやSketchの修正を待っているような時間もない。。。

最新ファイルをAbstractから開くことは諦めた。

エクスポートしたファイルから白紙になってしまったファイルに中身を移す?

エクスポートしたファイルは正常だった。
ならば、白紙になってしまったSketchファイルにページを作り直し、正常なファイルからアートボードをすべて移していくという方法もある。
ページ内のアートボードはまとめて選択してコピー、ペーストするだけだから、ページごとにごっそり持っていけばいい。
だけど。。。
これをやってしまうと、別の新たな問題が発生してしまう。

僕は、プロトタイピングツールにMarvelを使っているんだ。
Marvelは、Sketchと連携して、Sketch側の変更をボタンクリックで簡単に反映させることができる。
アートボードの名前を変更しても、同じアートボードと認識してくれるから、とっても助かる。

でも、アートボード自体を作り直した場合、たとえアートボード名が同じでも、違うアートボードと認識されてしまうんだ。
だから、前述のようなやり方でSketchファイルを修復したあと、Marvelとの紐付けをアートボードごとにReplaceしていかなければならない。

アートボードは全部で数百枚ある。
これを全部Replaceしていきたくないな。。。
これは最後の手段として取っておくことにする。

1つ前のマージからブランチを作って作業してみる

問題の発生した最新マージの1つ前のブランチからは、当該ファイルを正常に開けることを確認した。
そこで、そこからブランチを作ってSketchで開き、昨日の作業をまた加えた上で、マスターブランチにマージしてみた。
これで解決するだろうと思ったんだけど。。。

実はさっき、問題の起こったブランチを、マスターにコミット、マージしてしまっていたので、「マスターに別の変更がある」ということで、マスターの内容とブランチの内容から採用するほうを選択していく必要があった。

これ自体は全く問題ない。
1つ前のマージから作ったブランチで作業した分をすべて選択していった。
だけど。。。

その結果できあがった新たなマスターブランチは、僕の期待したものではなかった。
どうやら、今、変更を施して手動マージしたページ、アートボード以外は、マスター側の「存在しない」という状態を保たれてしまうみたいだ。

かつ、なんとか復活した数枚のアートボードは、ライブラリ化してあるシンボルとのリンクが全部切れてしまっていた。
まぁ、これはプラグインを使って一括で置き換えられるだろうからいいとしても、それはそれでめんどくさい。。。

Abstractの「Replace」という一条の光

どうにかならないかなぁ。。。任意のファイルだけ、任意のブランチからマスターに強制的に上書きするとか。。。
とAbstractをこねこねしていると、ブランチの中のファイル名を右クリックしたときのメニューに「Replace」というのを発見した。

これはもしや!
と思ったら大正解。

「File is empty」になってしまっていた問題のファイルを、さっきデスクトップにエクスポートした昨日最後のバージョンでReplaceしたら、正常に開くことができるようになったんだ。

正常だったmergeに移動 その時点まで移動 「FILES」でファイル一覧を表示 必要なファイルをexport masterの壊れたファイルを正常なファイルでreplace

これで、ReplaceしたファイルをSketchで開いてみると。。。

正常に開くことができた!
ライブラリのシンボルも全部正常にリンクされている。
Marvelとの紐付けもされたままだ。
よかった。これで元どおりだ。。。
一時はどうなることかと思ったけど、どうにか一件落着できたぞ。

というわけで、Abstract経由でSketchを使っていてファイルが真っ白になった際の対処、どうだったかな?
レアな事例だとは思うんだけど。。。同じような事例で困っているおともだちがいたら、参考にしてみてくれよな!