4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Boostnoteのデータが消える(ように見える)バグが起こった原因

Last updated at Posted at 2017-10-25

Boostnoteのメンテナーのsosukesuzukiです。Boostnoteのv0.8.15にて、一部のユーザーのデータが全てあるいは一部が消える(ように見えるバグ)が発生しました。現在では、このバグの対処法がBoostnoteの公式ブログにて掲載されていますが、このバグはElectronを使用するアプリケーションでは発生する可能性が往々にして存在するので、Electronアプリケーション開発者の皆様の目にこの記事が届いてこういったバグが発生することが少なくなって欲しいです。

Boostnoteがデータを保存する仕組み

Boostnoteは、デフォルトでは~/Boostnoteにフォルダやノートの情報を保存します。ですが、任意のディレクトリを保存対象に設定することも可能です。そして、この任意のディレクトリというのはBoostnoteのlocalStorageに記録されています。
DropboxやGoogleDriveを使って複数デバイス間でのノートの同期をさせているユーザーはこの任意のディレクトリを保存対象にする機能を使用している人も多いのではないでしょうか。
冒頭で述べた『一部のユーザー』とはこの機能を使用しているユーザーのことで、特に設定を行わずデフォルトのディレクトリにノートを保存しているユーザーには、このバグは発生していないはずです。

ElectronのlocalStorageの場所

このバグが発生した原因にはElectronがlocalStorageを保存する場所に深く関係があります。Electronで作られたアプリケーションはそのlocalStorageを~/Library/Application Support/**APP_NAME**/Local Storageに保存します。そして、この**APP_NAME**は、アプリケーションのpackage.jsonnameproductNameに依存します。
そろそろ気づいてきたかもしれませんが、v0.8.15のアップデートに含まれるコミットにBoostnoteのpackage.jsonproductNameを追加するものがありました。それまではname: boostに依存した~/Library/Application Support/boost/Local StorageにlocalStorageを保存していましたが、このコミットによりlocalStorageを~/Library/Application Support/Boostnote/Local Storageから参照するようになりました。
※ここで出てくるパスはMacOSでのものです

つまり、原因

つまり、localStorageを保存しているディレクトリの場所が変わったため、localStorageに保存していた情報が参照できなくなったのが原因です。BoostnoteではlocalStorageに、ノートの保存場所の他にUI等のカスタマイズ設定を保存していたため、このアップデートによってデータが消えなかったユーザーも設定が全て飛ぶバグには見舞われたと思います。(僕もその一人)
このバグは致命的なもので、ユーザー的にもメンテナー的にもとても困惑して、しばらく調べて原因を探して、やっとわかったので、モヤモヤしていたユーザーや、他のElectronアプリ開発者様へのTipsとして記事にさせてもらいました。

参考にした記事

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?