Diary over Finite Fields

515ひかるの日記と雑文

VSCodeはすごい

久しぶりにテキストエディタの話をする。しかし、設定の話ではない。

VSCode はすごい。マジで

VSCodeはすごい。その思いが日々強くなっている。

code.visualstudio.com

Language Server Protocol へ準拠していればどんな Language Server も使える1し、拡張機能のリコメンド機能があるのでとりあえず Yes と答えておけばそれっぽい開発環境はあっさり手に入る。言語によっては Microsoft 謹製の Language Server がほとんど何の設定もなしにそれなりに補完してくれる。

VSCode は数年前までは正直そこまで知られているエディタではなかったと記憶している。しかし着実に支持を増やし、リリースされるたびに便利になっていった。わたしは Python を書くので Python のことしか書けないが、いつの間にかクリックで仮想環境を選べるようになり、いつの間にか Linter, Formatter の対応範囲が増え、いつの間にか Pipenv, Poetry などの新興ツールにも対応していた2

開発環境構築の難しさの徹底した隠蔽

VSCode のアドバンテージは徹底的にユーザー(開発者)が開発環境構築を簡単にできるようにしていることが筆頭にあると思う。

ユーザーは Language Server の存在を意識することはないし、別途 Language Server をインストールする必要がある言語でもインストールから起動までワンクリックで実現できてしまう。例えば Rust がそうだ。.rs ファイルを開けばなんかダイアログが出てなにかを聞いてくるので、Yes と答えてしばらく待つと開発環境ができあがる。実際には cargo install rls に相当する処理が裏で走っていて、Rust Language Server と VSCode の連携までが自動で行われる(のだと思う。ちゃんと調べてない)。ユーザーに必要なアクションは1回のクリックだけだ3

パッケージもクリックでインストール/アンインストールができるし、プロジェクトの管理も容易だ。設定も JSON の直編集からセッティング画面へと最近変わってよりユーザーフレンドリーになったし、個人の設定をプロジェクトの設定でオーバーライドもできるし、ワークスペースを定義することもできる。とにかく非の打ち所がない。

Language Server Protocol

LSP を使わない場合、補完のためのプラグインとフォーマットのためのプラグインと Lint のためのプラグインをインストールして、設定してというのを言語ごとにやっていた。今考えるとなぜそんな面倒なことをと思うが、少なくともわたしはやっていた。LSP のおかげで必要なのは LSP クライアントをエディタに導入することと、LSP に準拠している Language Server を準備するだけになった。LSP を制定したのは Microsoft だし、その契機になったのは VSCode だ。

VSCode は素晴らしいテキストエディタである。単なる新興エディタとしてだけでなく、Vim や Emacs といったコアなユーザーが多いエディタにも多大な影響をもたらした4

VSCode は素晴らしいが...

さて、VSCode は素晴らしいということはもう書いた。わたし自身しばらく VSCode を使うだろう。

一方で、わたしには一抹の不安・寂しさに近い気持ちがある。自分に対して、本当にこれでいいのだっけかという気持ちがある。さすがに LSP に準拠していく流れに逆行する必要はないにしても、さらに VSCode という便利なものを便利に使って、仕事が楽にできてハッピーだね、そんな世界をわたしが望んでいたのだろうか。

わかっている。おそらく多くの開発者は開発環境の構築なんぞに煩わされたくないと思っているのだろう。わたしも一時期確かにそう思っていたし、だからこそ今 VSCode を選んでいる。でも実際に開発環境の構築に煩わされなくなった今、自分が手にしているのは何だろう。幸せになったのだろうか。開発環境の構築に煩わされなくなった時間で、Twitter をみる時間が増えただけじゃないのか。

いつしか Vim プラグインや Emacs パッケージの動向を追うのも忘れてしまった。拡張機能を積極的に調べることはなくリコメンドされたものしか使っていない。自分は確実に楽に開発環境を構築することにかまけて、その周辺技術の追求や探求を忘却して過ごしている。

わたしに OSS を教えた、わたしに色んな言語のビルド方法やランタイムを教えた、わたしに開発に関わる本当に数え切れないほどの色々を教えてくれたのはテキストエディタだった。なのに、わたしはテキストエディタから何も学ばなくなってしまった。

何度でも言う。VSCode は素晴らしい。

ただ、その素晴らしい VSCode をただ使っているだけのわたしは、どんどんコモディティ化された開発者へと堕ちていっている気がする。


  1. たぶん。自分でやったことはないけど、例えばPythonで実装されている python-language-server が VSCode 上で動いているスクショは見たことある。

  2. 厳密には VSCode の機能ではなく VSCode の Python 拡張の機能かもしれないが、あまり明確に区別をつけていない。これは筆者が調査をサボっているだけだ。

  3. 事前に cargo コマンドなどを使えるようにしておく必要は流石にあると思うが、この詳細も調査していない。

  4. vim-lsplsp-modeの存在。