Subscribed unsubscribe Subscribe Subscribe

@kyanny's blog

Write down what I learnt. Opinions are my own.

Atom.io に乗り換えられなかった

きっかけは些細なことだった。 Emacs で RSpec のテストケースを書いていて、全体的に動作がのろくてイライラさせられた。どうやら ruby-mode だか ruby-electric だかが悪さをしているらしいが、何年も前に .emacs.d に放り込んだもので、どんな風に設定するのかも覚えていない。最新バージョンに入れ替えてみたら、手元でちょろっとカスタマイズしていた改行時のオートインデントだか何かの挙動が変わってしまい、気になってコーディングどころではなくなった。

もともと Emacs Lisp は読むのも書くのも苦手で嫌々ながらも騙し騙し付き合ってきたが、このときばかりは心底うんざりして、もうこんな古代のツールに頼るのはやめにしよう、自分の仕事は高度に知的な作業であるはずのプログラミングであって多彩で変態的なキーボード操作を駆使してテキストを編集しまくることではない、ならばもっと仕事内容にふさわしい道具を使うべきじゃないのか—そんな風にして、乗り換えを決意した。

IDE に興味があり、この機会にチャレンジしてみようと思ったものの、細かいことばかり気になる面倒な性格のせいで IntelliJ IDEA と RubyMine のどちらを購入するべきなのかで迷い、結局どちらもお試し版すらインストールすることなく、とりあえずもうちょっとなじみやすそうなのを...と妥協して Atom.io を使い始めたのが一月半ほど前のことだっただろうか。

なぜ Sublime Text ではなく Atom なのかというと、 Atom のユーザーインタフェースのほうが多少洗練されていて気に入った、というのがひとつ。そしてもう一つは、そもそも乗り換えた動機が「なるべくカスタマイズに労力をかけたくない」だったので、パッケージ管理の仕組みがデフォルトで提供されている Atom を選ぶほうが理にかなっている、と思ったからだ。

それから一ヶ月ほど、いくつかのパッケージを試したりやめたりしつつ、 Emacs に慣れきった両手の指で真新しいキーバインドをたどたどしく練習しつつ、仕事でもプライベートでも Emacs を一切起動することなくコードや文章を書いてみて、最終的にこれは無理だと観念して Emacs に出戻った。

Atom を使っていてどうしても我慢がならなかったこと。それは、一つのウィンドウで一つのディレクトリ配下のツリーしか開けないことだ。

f:id:a666666:20140816032330p:plain

仕事で扱うリポジトリは複数あり、しかも相互に行き来してコードリーディングをしながらの作業が頻繁に発生するため、 Atom のこの仕様は自分のユースケースとはとても相性が悪かった。上記のスクリーンショットでいうと、 mongomapper と plucky のファイルは頻繁に相互に見比べたいので、ウィンドウごと切り替えていたのでは手間がかかりすぎる。右側のウィンドウのように親ディレクトリを対象に開けば一つのウィンドウ内で全てのファイルを開けるが、親ディレクトリ配下に数十ものディレクトリ(リポジトリ)がある場合、ノイズが多いし動作も遅くなってしまった。

他にも不満はたくさんあったが、もう一つだけ自分のユースケースと合わなかったことを挙げるなら、コマンドラインから Atom を開くときの動作の遅さにはずいぶん時間を無駄にさせられた。 Git のコミットログを書く際にいちいち Atom の起動で待たされるのには辟易した。

Atom をほんのお試しではなく、それなりに真面目に使ってみて良かったこともある。 Tree view は素の dired に比べるとずっと見やすいし、 Line diffs (いわゆる GitGutter)は地味だが想像以上に便利だった。当然これらに類似した機能は Emacs でも—そう、有志の手による拡張 Emacs Lisp パッケージとして—利用でき、出戻りのタイミングで Emacs のカスタマイズを整理しなおしたついでに Atom で経験した便利機能を Emacs のカスタマイズでも取り入れ、結果として Emacs がより便利になった。単に Emacs カスタマイズの情報収集を怠っていただけ、ともいえる。

結局いまだに RubyMine は試していないが、趣味で Java のオンライン学習コース(無料)を勉強しはじめて IDE の雄である Eclipse に触れる機会も作れるようになったことだし、ヌーに左手の小指を呪われた運命を受け入れてもう死ぬまで Emacs でいいかな...。