第2回 Qiita プライド: Atom 対 Brackets 対 Lime Text 対 Visual Studio Code


[第1回 Qiita プライド](http://qiita.com/raccy/items/c050a63f592f965e14b1)

## 開催宣言

> 祇園精舎の鐘の声、諸行無常の響き有り。沙羅双樹の花の色、盛者必衰の理を顕す。
> -- 『平家物語』冒頭より --

前回の永く苦しい闘いからわずか数ヶ月。常に変化する世界において、昨日まで標準だったものが、明日には捨て去られてしまうのも珍しくない。Atom 1.0 の正式リリース、着実に進化を遂げる Lime Text、MS による Visual Studio Code の発表。そして、最後の Windows である Windows 10 の登場と状況は刻一刻と変化している。そのような変化に対応すべく、新たな指標が必要になることは自明であるとも言えよう。よって、新たな選手と環境による闘いを始めなければならない。

**ここに、第2回 Qiita プライドの開催を宣言する！**

> 【お知らせ】
> 今回の開催にあたり、世界王者である Sublime Text からファイトマネー($70)の請求[^1]がありました。Qiita プライド運営委員会は完全ボランティアで行っており、円安の影響もあって協賛者に理解が得られなかったため、ファイトマネーの捻出はできませんでした。残念ではありますが、今回は Sublime Text の参戦を見送りさせていただきました。
> また、前回出場した Light Table は負傷が治っておらず[^2]、不参加となっております。

[^1]: ポップアップが出る。
[^2]: バージョンが変わっていないので、何も変わっていない。

## ルール

### 選手紹介

今回は下記4アプリでのバトルロイヤル形式で行う。

- [Atom](https://atom.io/) 1.0.7
- [Brackets](http://brackets.io/) 1.4
- [Lime Text](http://limetext.org/)
- [Visual Studio Code](https://www.visualstudio.com/products/code-vs.aspx) 0.5.0

おなじみのメンバーとしては、1.0 が正式リリースした Atom、前回王者の Brackets が参加している。また、Sublime Text の後継を目指す Lime Text、MS からの刺客である Visual Studio Code が初参加となる。初参加組を少し紹介しよう。

#### Lime Text

Sublime Text の後継を目指すオープンソースのテキストエディタ。Go 言語でできている。まだ完成はしておらず、自分でコンパイルする必要があるが、通常のGUIアプリだけでは無く、CUIアプリやWebアプリとしても動作が可能になるなど、野心的な機能が詰まっている。次々世代テキストエディタ。

#### Visual Studio Code

Microsoft が開発したマルチプラットフォームのテキストエディタ。Visual Studio のように IDE 並の機能は無いが、C# ではリファクタリングが可能など、Microsoft が推奨する言語のエディタとして十分な機能を持つ。また、Python や Ruby など一般的な言語にも対応しているので、普通のエディタとしても使用可能だ。Windows 上でがっつりしたいときは Visual Studio で、ちょっとした修正や Windows 以外では Visual Studio Code で、と使い分けを想定しているようだ。

中身は Atom のコア部分である [Electron](http://electron.atom.io/) を採用している。なのに、Atom よりも爆速で、MS の本気度がうかがえる。

### リング紹介

闘いの舞台は、下記3つの最新特設リングを用意した。

- Windows 10 Pro (64bit)
- Mac OS X Yosemite 10.10.4 
- Ubuntu 15.04 (Desktop 64bit)

2015年7月29日に完成したばかりの Windows 10 特設リングでの闘いに注目が集まるだろう。

なお、Lime Text は<del>コンパイルが面倒だったので</del>準備が遅れたため、Mac OS X 特設リングのみでの登場になる。

## レディー、ファイト！

### ラウンド1 日本語入力

前回は、デフォルトで日本語入力できないという使えないエディタもいたが、今回はそんなエディタはいないことを期待しよう。

**Atom** と **Brackets** は優秀だ。未確定文字列と確定文字列がわかりやすく表示される。しかし、残念ながら未確定状態での文節選択については区別して表示はしてくれない。文節選択が表示できないのは、DOM の [Composition Event](http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents)　の制限だと思われる。

Visual Studio Code でも未確定文字は分かるのだが、文字と文字の間で挿入した場合、未確定の文字が次の文字列の上に表示されてしまう。確定されるまで次の文字列が見えないのはなんとも言えない制限だ。

Lime Text については、まぁ、なんだ。まだ未完成だ。日本語入力なんて夢を見てはいけない。

### ラウンド2 日本語フォント

**Brackets** が安定して優秀だ。Windows、Mac、Linux 全てで問題が無い。Visual Studio Code は Windows と Linux で中華フォントが選ばれてしまう。Atom でも Windows だと中華フォントが選ばれ、Linux だと 日本語が無いフォントが選ばれてしまって日本語が表示されない。どちらも設定で変更できるとは言え、デフォルトで正しく表示されなくなるのは厳しい。

Lime Text は、まぁ、なんだ。普通のファイルすら開けなかったので、確認も何も無かった。

### ラウンド3 日本語メニューと設定項目

**Brackets** がまたしても勝利だ。標準での日本語メニューは素晴らしいの一言である。Atom は日本語化パッケージが登場したことにより、メニューから設定まで日本語にできるようになった。インストールは必要だが、十分な能力を発揮していると言える。Visual Studio Code はまだ日本語メニュー等は対応していない。今後に期待したい。

Lime Text は・・・勘弁してください。

### ラウンド4 日本語の折り返し

禁則処理までこなしている **Brackets** に死角は無い。もう、こいつだけでいいんじゃないかと思ってしまう。次点は Visual Studio Code だ。残念ながら禁則処理はしてくれないが、日本語の幅に合わせて文字列折り返しをしてくれる。Atom は相変わらずパッケージが必要な状態だが、将来的には対応予定だ。同じ Electron 製の Visual Studio Code ではできて Atom ではできないというもどかしさがあるが、きっと、彼らはやってくれる筈だ。[^3]

[^3]: やってくれないと、俺がいつまでもパッケージを保守し続けなきゃならんじゃないか。


Lime Text は・・・えと、日本語を入力することすらできないのに・・・、なんでもないです。

### ラウンド5 日本語文字コード

UTF-8 が標準になっている昨今ではあるが、Shift_JIS や EUC-JP を使っていた頃の資産は未だに残っている。また、ISO-2022-JP はメールで未だに現役である。過去の資産を使うには、日本語文字コードに対応しているかどうかも重要になっている。

さすがに ISO-2022-JP に対応しているエディタは無かったが、**Atom** と **Visual Studio Code** は Shift_JIS と EUC-JP のファイルを開くことができた。自動判断までは無いが、UTF-8 をメインとする時代では十分と言える。

なんと、Brackets は UTF-8 にしか対応していない。他エンコードのファイルを開こうとしても、エラーとなって開くことすらできない。

Lime Text は・・・ごめんなさい。

### ラウンド6 日本語環境総合優勝

今回の総合優勝は **Atom** に与えたい。拡張パッケージをインストールすれば、日本語環境において問題になることは無いだろう。日本語入力未確定状態を克服した Brackets だったが、文字コード問題が大きかった。過去を切り捨てる事も一つの戦略だが、せめて変換ぐらいはできるようになって欲しいところである。Visual Studio Code は Atom と同じコアを使用しているため、同じ問題点を抱えてしまっている。ここら辺は発達途上状態とみて、将来は修正されることを期待したい。Lime Text は散々であったが、まだベータ版ですらない開発状態と言うことも考慮して欲しい。野心的なプロジェクト故に、今後の成長が楽しみである。

## 総評

この世界に best などない。ただ、より better であることを目指すのみである。よりよき物を作ることに終わりなどない。なぜなら、終わりはいつも新たな始まりにすぎないからだ。