6 年愛用し続けたWebStorm から VSCode に以降した感想
2020-07-16 Thu.
移行のモチベーション
- WebStorm で補完され切らない箇所がある
- React.ExoticForwardRef が JSX として補完されない
- 型パラメータによる string 制約付きの関数呼び出し時に候補補完が出ない
- キーボードショートカットが多すぎるため、 Windows / Mac / Linux 全対応をしていたら設定が崩壊した
- TS Server が壊れがち
- 都度 reload する必要があったがこれも長い
- 起動が遅い
- 特に小さいプロジェクトをちょちょっと開くときにロードが長いのが気になる
- WSL2 Integration → 現在は WebStorm も対応したため、要因としては小さくなった 現在は解消されている懸念点
WebStorm
- WSL2 Integration
- Node interpriter に WSL2 のものが指定できる
- ファイルの変更検知のたびにフォルダごと全部 sync するのでタブが閉じられる、みたいなことがなくなった
VSCode
- 設定の sync が公式サポートされた
- Extension は微妙だった WebStorm の優れている点
- 1 ショートカットから複数アクションに分岐できる
- Cmd + B から Definition に飛ぶか TypeDefinition に飛ぶか選べるなど
- コードをペーストしたとき自動で import 文を生成してくれる
- ファイルのリネーム時にファイル名ベースで変更を伝播してくれる
- localhistory の信頼性が非常に高い
- 何か間違えた操作をしても(.idea を飛ばさない限り)ほぼ必ず復旧できる
- VimKeybind Extendion の完成度が高い(VSCode Vim は history が別だし Visual Mode がよく壊れる)
VSCode の優れている点
- reload が早い
- 何かあったときとりあえず reload できる
- 画面表示が早いだけで Extension の読み込みやエラーハイライトは遅延しているので、着手できるようになるまではそこそこかかる、が WebStorm よりは早い
VSCode の微妙な点
- QuickFix での import 補完が遅い
- エラーハイライトが全体的に微妙
- missing import も unused vars (eslint) も type error も同じ色
- コードを書き換えたあとのハイライト反映が遅い
- たまにエラーハイライトがバグって消えなくなることがある(reload するとなおる)
- 閉じタグの自動追従 Extension がたまにバカなことがあり、想定外の箇所のタグが書き換わることがある
- loading の表示がない(目立たないだけ?)ため、補完がいつ効くようになるのかわからない
Other Works
2024-05-11 Sat.
Powerfully Typed TypeScript
- TSKaigi 2024
2024-05-10 Fri.
pnpm の node_modules を探検して理解しよう
- ドワンゴ教育サービス開発者ブログ
2024-03-17 Sun.
neverthrow で局所的に Result 型を使い、 try-catch より安全に記述する
- Zenn
2023-12-20 Wed.
レガシーブラウザ向けのビルドオプションを剪定する
- ドワンゴ教育サービス開発者ブログ
2023-05-26 Fri.
Next.js で dynamic import を使い Client だけで動かす Component を実現する
- Zenn
2023-05-02 Tue.
Node.js でファイル名から拡張子を取り除く/取り出すために path.parse を使う
- Zenn
2023-02-27 Mon.
WSL2 で外部からアクセス可能にするために bridge mode を有効にする
- Zenn
2023-01-26 Thu.
init.vim & dein から init.lua & lazy.nvim へ、シンプル設定で移行した
- Zenn
2023-01-13 Fri.
kindle の本をブクログ形式の csv でエクスポートする@2023初春
- Zenn
2023-01-10 Tue.
自宅サーバの移設に際して docker から nerdctl に移行した
- Zenn
2023-01-10 Tue.
自宅サーバを rootless に移行した際のトラブル対応
- Zenn
2021-11-11 Thu.
並列実行した Promise で throw されても全てハンドルしたいときの方法(allSettled, finally, etc...)
- Zenn