AtomとVSCode
AtomエディタかVSCodeエディタを使おうかと思っている。
現在作業中のEmacs(バッファを抱えている)のメモリー使用量(メガ以下は切り捨て)が 1プロセス 77M
| 小 | 中 | 大 | 合計 | |
|---|---|---|---|---|
| Atom | 2 | 37 | 123, 164, 184 | 510 |
| VSCode | 2 | 12, 14, 22, 24, 28, 32 | 114 | 248 |
ちなみに、メモ帳は1プロセス2M代。確かに超軽いエディタだ(笑)。
今となっては、Emacsはとても軽いエディタってことなのね、100Mもいかないから。感慨無量。
とはいえ、VSCodeの一番でかいプロセスはEmacsの二倍はない。そして、でかいプロセスは1個だけ(使っているうちに増えるかもしれないが)。それに対してAtomは最初からでかいプロセスが3個ある。でかいプロセスのメモリサイズはEmacsの2倍前後ある。
速度に関しては、おおざっぱな比較だが、
- https://ryuta46.com/379 2017年10月12日 「Atom vs Visual Studio Code 速度比較!! Electron系テキストエディタ2大決戦!!」
どうも、VSCodeのほうが圧倒的に速いようだ。メモリー使用量と速度という基本的パフォーマンスではVSCodeの圧勝のようだ。
あと、自分(檜山)にとっての比較ポイントは
- 使い勝手
- パッケージの管理・配布システム
使い勝手に関しては使ってみないとなんともいえない。が、どちらもElectronベースだから大差ないのではないだろうか。
Git/Githubサポートは、Githubご謹製Atomが優れてるに決っているし、TypeScriptサポートはMicrosoftご謹製のVSCodeが優れてるに決っているだろう。Coqサポートとかはやるわきゃないと思うので、これはEmacs/ProofGeneralしかない。IsabelleサポートはjEditだし。まー、しょうがない。
パッケージの管理・配布に関しては、NPMエコシステムに薄い皮をかぶせたapmを備えるAtomに軍配が上がりそうだ。VSCodeは、マイクロソフトが運営するVisualStudioマーケットプレイス内の https://marketplace.visualstudio.com/vscode で管理配布している。インストールはVSCode内からできる。(AtomももちろんAtom内からapmを操作する。)VSCode→Electron→Node.js という依存があるので、Node.jsのNPMと無関係というわけにはいかない。
パッケージのことをどう呼ぶか?
Atomではパッケージ(https://atom.io/packages)、VSCodeでは拡張機能と呼んでるみたい。
- IEの機能拡張プログラムは「アドオン」と呼んでいた。
- 一般的には「プラグイン」が多かった?
- firefoxでは「拡張機能」と呼ぶ。
- firefoxの「プラグイン」は、Flashのようなグラフィックフォーマットへの対応を強化するもの。拡張機能とは明白に違う。
- firefoxでは、拡張機能やテーマをまとめて「アドオン」
- しかし、「拡張機能」=「アドオン」もあり
どうも、アプリケーション本体の持つ機能性を拡張するものは「拡張機能」と呼ぶべきで、見た目を変えるのはテーマとかスキンとか呼ぶべきなだろう。「パッケージ」は管理配布単位だが、パッケージ内に拡張機能を入れるなら「パッケージ=拡張機能」でも問題はない。パッケージに拡張機能とテーマを同梱するなら「パッケージ=拡張機能」はマズイ。
ファイルシステム上でのレイアウトは、
- Atom: システムは $USERPROFILE/AppData/Local/atom/、ユーザー設定・拡張機能は ~/.atom/
- VSCode: システムは $VSCODE_HOME/、ユーザー設定・拡張機能は ~/.vscode/
Electronがこういう構成なんだろう。ホーム以下をバックアップすればいい。システムは再インストール。~の解釈に関して、どちらもHOME環境変数が使えない(残念)。
起動コマンドは、
あと、パッケージではなくて、アプリケーション自体の配布システムだが、
- Atomは NuGetのパッケージ .nupkgフォーマットを使って、$ATOM_HOME/packages/ に置いている。アップデーターはUpdate.exeだと思う。
- VSCodeは、伝統的MSインストーラーで、$VSCODE_HOMEにunins000.dat, unins000.exeが作られる。
どちらも、*.pakというファイルをたくさん持っているが、Electronのバイナリ形式と思われる。https://github.com/electron/electron/blob/master/docs/tutorial/application-packaging.md あたりに書いてあるだろう。.asarもパッケージフォーマットらしい。
ユーザー拡張機能を作る言語は、Atomは、以前はCoffeeScript、最近はbabel経由でES 2015+、VSCodeはTypeScriptってことらしい。大差ないが、好みから言えばTypeScript。
[追記]
ソースコードは公開されていて、
[/追記]