新しいエディタを探して、ひとまずAtomに乗り換えた話

今までコードを書く際にはVimを使っていたが、いい加減老害感が出てきたのと、気分転換を兼ねてエディタを乗り換えた。

結論から言うと、メインはAtomにしてサブエディタとしてIntelliJ Ultimate(+ Language Plugin)を使うようにした。
Atomに乗り換えて1〜2ヶ月ほど経ち、ひとまず落ち着いたので記事にすることにした。

Vimから乗り換える必要があるか論

個人的にはバグが無く生産性が高いものを作れるなら、VimでもEmacsでもメモ帳でもIDEでも何でも好きなもので書けば良いのではという意見。
なぜ自分がVimから乗り換えたかと言われれば、冒頭にも書いた気分転換もあるが、自分のVim力に限界を感じたのが原因だった。

自分のVim力の限界

きっかけはNeobundle.vimから、dein.vimに乗り換える事だった。
ShougoさんのNeobundleには大変お世話になっており、dein.vimの紹介記事が出た際に乗り換えようとした際になぜかVimの起動が遅くなってしまった。
まあ、またかとvim hoge.txt --startuptimeを使って原因を探す事や、dein.vimの新しい構文を覚えるのが面倒だなぁと思ってしまった。

Vim力が高い人であればソースコードを飛んでパパっと調べることが出来たりする事ができたと思うが、
個人的にはVimScriptは覚える気がないので毎回この手のトラブルのたびにVimScriptの文法を調べることが面倒になってしまった。
覚えれば解決するのではという気もするが、VimScriptかぁ・・・という謎の嫌悪感があるのと、
今までは業務で書いているコードはPHPPythonの様なLLからJavaC#等の本来IDEで書いた方がメリットが高い言語でもVimで書いていたが、
仕事でJetBrains製品をオススメされ、実際に使ってみた結果もうそこまでVimに労力をかけなくても良いかなぁと思ってしまったという事も大きい。

メインのエディタとしての選択肢

ということで試しに乗り換えてみるかーぐらいの気軽な気持ちで色々と選択肢を漁ってみた。
条件としては主に下記。

  1. VimKeyBindが使える。
    • もう8年ほどはVimKeyBindで過ごしてきたので今更変えると移行コストが辛い。
  2. Pluginで拡張が出来る。
    • Vimで色々とカスタマイズをしているので近しいことが出来ないのは辛い。

というわけで調べてみた。(個人の感想です。

  • Emacs

    • Vimと同じく老害感が出るのが・・・。
    • Evilという選択肢もあるが、違うコレジャナイ感が凄い。
  • Eclips

    • 重い。ただただ重い。
    • 過去に使っていて苦い思い出が・・・。
    • 昔はIDEといえばEclipsだった感があるが、最近はAndroid StudioよろしくJetBrainsが台頭している感があるし、Eclipsは良いかなと判断。
  • Atom

    • 初期に触れた程度だったが、思った以上にPluginが増えていた。
    • 重い・遅いと言っている人が多かった印象だが触ってみた感じはそこまでだった。
      • 最近のPCの進化の賜物かもしれない。
      • ある一定以上のファイルサイズを読み込む際の重さ、エディタ立ち上げの遅さは気になる。
    • Vimほどではないがカスタマイズ出来る事が豊富。
    • 設定ファイルもcson、cofee、lessなどある程度親しみやすい。
    • Github製かつOSSという特定の団体からの大人の事情による圧力は無いだろうという安心感。
      • まあ、Atom is Deadになる可能性も無くはないが。
  • Xcode

    • Mac以外でコードを書くことはほぼほぼ無いのでありかもなーと思った。
    • Apple製でほぼ1年おきに使っていた機能がカジュアルに変わるのは辛い。
  • Visual Studio Code

    • リリース当初に触れただけだったが、触ってみるとかなり良かった。
    • Extensionsの数がちょっと少ないかなという感。
      • 自分で作れば良いのではという突っ込みは無しで。
    • MSが信用できない。
      • あくまで個人の感想
      • 最近はOSS活動に精を出していることは知っているが、過去の出来事(ハロウィン文書)やIEに苦しめられた記憶が残っていてMSに対する心象が悪い。
  • IntelliJ Ultimate(+ Language Plugin)

    • もはや説明する必要は無いだろうがほぼ何もカスタマイズしなくても使い勝手はかなり良い。
    • LLでもかなりのコード補完が聞くし、とにかく賢い。
    • Pluginもボチボチある。
    • あえてケチを付けるなら
      • 有料かつOSSでは無いので何かあったときに原因を特定し辛い。
      • 細かなカスタマイズがやり辛いのがイマイチといえばイマイチ。

と他にも調べたが省略。

選択

もはや面倒になってJetBrainsで良いかなぁと思ったが、下記の理由でメインにするのは止めて、詳細なコードレビューやリファクタリングの時だけ使うようにした。

  1. カスタマイズがし辛い
    • GUIによるカスタマイズ。
      • 慣れれば良いのではという感じではあるが、やはりCUIでやりたい。
  2. 他端末への設定の共有
    • GithubでDotfilesを管理しているので、それで共有出来る仕組みが無いのは辛い。
      • Dotfilesで共有出来るのであればぜひ教えてもらいたい。

というわけで下記の2つに絞った。

  1. Atom
  2. Visual Studio Code

どっちもElectron製でなおかつ各種カスタマイズも出来るしで悩んだが、心象の差でAtomにした。
とはいえMSに対する心象も過去よりは良くなっているので本当に微妙な差ではあった。

Atomはコードを書くとき・レビュー時などのメイン作業。
IntelliJ Ultimate(+ Language Plugin)は詳細なコードレビューやリファクタリングの時だけ使うようにした。

詳細なコードレビューやリファクタリングの為に金を掛けるのかという意見もあるかもしれないが、
金で良いプロダクトを作れるのであればいくらでも払って構わないかなという気持ちはある。

冒頭にも書いたが1〜2ヶ月ほどこのスタイルで進めてみてうまく行っているのでまあまあ良かったのではと思っている。
Atom Pluginの紹介しろという意見があるかもしれないので紹介しておくとお使いのブラウザから、(ctrl | ⌘) + l -> Atom プラグイン と打つと出てきます。

けつろん

自分の責任で好きなことを好きなもので作れ。