読者です 読者をやめる 読者になる 読者になる

文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

Visual Studio Codeの謎ペインの仕様はユーザ離れを起こす原因となり得そうな件

VisualStudioCode

みんなアレどう思ってるのかなあ
f:id:treeapps:20151125174607p:plain
Visual Studio Marketplace

最近ベータ版に達した、マイクロソフト製のエディタ、Visual Studio Code(以降、VSCode)が賑わっていますね。

Electron(旧称: Atom-Shell)は, Atomエディタを開発するために生まれたクロスプラットフォームデスクトップアプリケーションエンジンです.
Node.js + Chromiumをランタイムとしており, Atomだけでなく, Slackや先日のBuildで発表されて話題となったVisualStudio CodeもElectronで実装されています.
いわゆるWeb系の技術, Node.js + HTML + CSSでアプリケーションを作成できるのが特徴です.

http://qiita.com/Quramy/items/a4be32769366cfe55778

↑VSCodeはこのElectronで作られており、node.jsベースになっています。

このVSCodeなのですが・・・

純粋なタブの概念ではなく、横にしか分割できないペインが恐ろしく使いにくい

と思いました。コンソールタブは普通最下部に横長で表示する場合がほとんどですが、VSCodeは縦長に狭い幅で並んでしまうんですよね・・

ちょっとGIFアニメでどんな感じなのかを見てみましょう。

f:id:treeapps:20151125165839g:plain

こんな感じです。ファイルツリーでファイル選択すると、アクティブなペインをどんどん上書いてファイルを開いてしまいます。そしてペインは縦に分割できず、延々と横に分割されていきます。コンソールウインドウも縦長でとても見れたものではない状態です。

VSCodeはIntelliSenseという超強力な武器を持っているというのに、何故純粋なタブにしなかったのか、謎ですね。正直この謎ペインの仕様のせいで一瞬で利用候補から外した人は多いのではないでしょうか。純粋にペインになってくれれば、業務でメインのエディタとして使ってもいい程の完成だと思うので、マジで何とかして欲しいものです。

憶測ですが、こんなペイン構造になっている理由は「ファイルの選択は基本的に検索して選択する前提」なので、ウインドウをどんどん上書く仕様になっているのかな?と思っています。しかしそれにしてもコンソールだけは画面下部に出てくれないと困るんですけどね・・


折角なので少しだけ使ってみて良かったと思う点を書いてみます。

VSCodeを少し使ってみて

フォルダごとに設定を簡単に変えられる点がいいなと思いました。

f:id:treeapps:20151125170850p:plain

プロジェクトの起点となるフォルダ配下に「launch.json」「settings.json」「tasks.json」という3つの設定ファイルが作成されます。

.vscode/
├── launch.json
├── settings.json
└── tasks.json

launch.jsonはどの言語等を使うのか等の環境設定、settings.jsonはその言語に対する詳細な設定、tasks.jsonはVSCodeのタスクという概念の設定、という感じで分かれています。この言語の時はタスクはこのコマンド、でもあのフォルダにある言語はタスクは別のコマンドを実行、といったフォルダ単位での環境設定をする事ができます。こういう事が簡単にできるエディタはそんなに沢山無いかと思うので、ここがVSCodeの強みになると思います。

ただし、現状tasks.jsonに設定できるタスクが1個という残念な制限があるので、タスクとして実行できないコマンドが出てきてしまったりします。例えばgolangを例にすると、Ctrl + Sした時に「go build」するタスクを登録してしまうと、gofmtはgolintが登録できなくなります。この辺の1タスク制限はそのうち緩和されるのでしょうかね。

あと、keybindings.jsonが現状共通設定となってしまっており、特定フォルダにいる場合だけkeybindingsを変えたい、といった事ができません。例えばこの言語の場合はCtrl + Sをするとビルドをしたいけど、あの言語の場合はプログラムを実行をしたい、といった切り分けができません。一括で共通設定となります。何故.vscode配下にkeybindings.jsonを置く仕様にしなかったのか、謎です。

雑感

VSCodeはIDEと間違われやすいですが、エディタです。なので、IDE的な面を期待する人が「あ、これIntellijより低機能じゃん。なら使うのやーめた」みたいにポイーしちゃう人が出てくるかもしれませんね。

そこを勘違いしなければ、これは凄くいいディタだと思うし、マイクロソフトが開発しているので将来性は抜群だと思っています。特にIntelliSenseについては歴史が長く非常に優れたものなので、これがエディタで使えるのは素晴らしいですね。

とはいえ「謎ペインの仕様」「tasks.jsonの1タスク問題」などの問題でちょっと使いにくい面もあります。まだベータ版なので、今後正式リリースしてその辺りが改善されれば、AtomやBracketsよりも良いエディタになり得ると思っています。