このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

AtomとVSCode

AtomエディタかVSCodeエディタを使おうかと思っている。

現在作業中のEmacs(バッファを抱えている)のメモリー使用量(メガ以下は切り捨て)が 1プロセス 77M

  • Atomを起動直後 5プロセス 2, 37, 123, 164, 184
  • VSCodeを起動直後 7プロセス 2, 12, 14, 22, 24, 28, 32, 114
合計
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倍前後ある。

速度に関しては、おおざっぱな比較だが、

どうも、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では拡張機能と呼んでるみたい。

firefoxで以前話題になったけど

どうも、アプリケーション本体の持つ機能性を拡張するものは「拡張機能」と呼ぶべきで、見た目を変えるのはテーマとかスキンとか呼ぶべきなだろう。「パッケージ」は管理配布単位だが、パッケージ内に拡張機能を入れるなら「パッケージ=拡張機能」でも問題はない。パッケージに拡張機能とテーマを同梱するなら「パッケージ=拡張機能」はマズイ。

ファイルシステム上でのレイアウトは、

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。

[追記]

ソースコードは公開されていて、

[/追記]