Bracketsのアップデートをしたら挙動がおかしくなりフリーズするようになった話
Bracketsとは
Adobe社が無料で提供している、オープンソースのテキストエディター。ウェブ制作に便利。
もともとDreamWeaverを使っていたのだが、挙動が重すぎてしんどくなったので、代わりとして数年?何年?前に使い始めた。
ほかにもSublimeTextやAtomも使ってみたが、あまりにもBracketsが個人的ベストだったので、友人知人におすすめして回っている。
エディタに困っていなくても試す価値はあり。無料だし。
brackets.io
アップデートしたら起動途中でフリーズするようになった
新しいバージョンが出たのでアップデートしてみたところ、なんだか画面が中途半端に表示された状態でフリーズするようになってしまった。
本来は、左のサイドバー部分にもっと色々表示されたり、右の白いエリアにファイルの中身が表示されたりする。が、何をやってもうんともすんとも言わず、画面を閉じることすらできない。
とりあえずアンインストールしてもう一度入れてみたが、結果は同じ。
今回は、どうしたものかと20分くらい格闘したら解決できた話だ。
作業的にはとても簡単なのできっと初歩的な内容なんだろう。きっと。
状況
- 画面の表示が中途半端
- メニュー部分をクリックしても反応がない(プルダウンはでる)
- ショートカットキーを押しても反応がない
- ウィンドウのサイズはドラッグで変えられる
- ウィンドウの移動もできる
- 右上の閉じるボタンをクリックしても閉じない(タスクマネージャで強制終了しかない)
まあ起動途中で何か悪いもん食べた(読み込んだ)んだろうな、という感じ。
ネットで検索しても新しいバージョンのトラブルについては特になにも話題になっていなかったので、私のパソコン上にある何かが悪いのだろう。
対処
結論から言えば、プラグインを削除すれば直った。
ネットで検索を続けたところ、プラグインが原因でトラブルが起こっていた事例がいくつか見つかったので、きっとこれもプラグインのせいなんだろうな、と。
プラグインの場所
いくつか便利そうなプラグインを入れていたが、実際パソコン上のどこに保存されているのかよくわからなかったので地道に探した。json形式が含まれているのは分かっていたので瞬殺だった。
Windowsの場合は、よっぽど
C:\Users\ユーザ名\AppData\Roaming\Brackets\extensions\user
にあると思う。ユーザフォルダが違う場所に指定されていればまた別だが。
特定手順
次に、どのプラグインが影響しているのか分からないので調べる必要がある。
名称を見ればどのタイミングで動くプラグインなのか、ぼんやりと検討はつく。とはいえ一つ一つ読んで推測するのも、全部消して改めて入れなおすのも、一つずつ削除して確認するのも面倒だ。
仕方がないので、二分木探索の真似事をしてみた。探索方法考えた人本当にすごい。
やり方を大雑把に言えば「移動してみて駄目だったら戻す」。
もともとプラグインが入っていたフォルダをAフォルダ、一時的に移動させるために別の場所に作った新しいフォルダをBフォルダとすると、
- Aフォルダにあるプラグインを全てBフォルダに移動して、Bracketsを起動。
症状が変わらないようであれば、プラグイン以外の問題だが、今回は無事に起動。
→プラグインが原因。 - Bフォルダにあるプラグインの半分をAフォルダに移動してから、Bracketsを再起動。
うまく起動しなかった場合
→Aフォルダに移動したプラグインをBフォルダに戻し、先ほど移動しなかったプラグインをAフォルダに移動してBracketsを再起動。原因のプラグインが複数ある場合以外は起動する問題なくはず。 - Bフォルダに残っているプラグインの半分をAフォルダに戻してBracketsを再起動。
うまく起動しなかった場合
→移動した分のプラグインをBフォルダに戻し、先ほど移動せずBフォルダに残っていた分のプラグインをAフォルダに移動し、Bracketsを再起動。 - 同様に、「移動してみて駄目だったら戻す」の繰り返し。
私の場合は5回で原因のプラグインが見つかった。
原因(ver1.10 2017/7/9時点)
今回ひっかかっていたのは「Shizimily Multi-Encoding for Brackets」というプラグイン。
UTF-8以外のファイルもBracketsで扱えるようにしてくれるプラグインで、使っている人は多いんじゃないだろうか。
便利なプラグインがたくさんあって本当にありがたい世の中ですありがとうございます。
ちなみに、改めてインストールしなおしてみても駄目だった。
諦めてUTF-8を使うしかないのかーと思ったが、そもそも最近はずっとUTF-8を使っていたのであまり困らないことに気が付いた。