四半世紀の間、使い続けてきた emacs 系エディタから VS Code に移行しようかと思う。
- 第1の理由 ... Visual Studio の代替
- 第2の理由 ... コーディング支援 (のシーン限定での利用可能性)
- 第3の理由 ... emacs を代替するエディタ機能
- 第4の理由 ... 前方互換性と入手容易性
- write once, run anywhere というか accustomed once, utilize anywhere の予感がする。VS Code は次世代のデファクトスタンダードになってきたし、OS を選ばず、さらに Windows から WSL に対しても使える。Visual Studio やお気に入りの emacs 系エディタをよその環境にインストールしてくれとリクエストしても却下されがちだが、VS Code はそのハードルが低くなりそう。この点と第3の理由から、emacs キーバインド拡張機能を入れずに、素の VS Code キーアサインに慣れておくのもよいかもと思うまでになった。
- VS Code の出現でシェアが下がった emacs の利用継続にリスクを感じたことに端を発し、メンテナンスが止まってかなり立つ xyzzy*1 を常用している現状をどうにかする必要があると考えた。
- 第5の理由 ... 利用サービス/アプリのオフライン・オンライン間統合
- 第4の理由の延長線上にある欲求として、利用するサービス / アプリがオフライン・オンライン間で分離することを許容せず、統合したい、という思いがある。同じ作業をするときは、ローカルでもクラウドでも、同じサービスを同じ設定で使いたい。VS Code は近いうちに Web サービスにもなりそうであるため、期待している。その背景にあるものは次のとおり。
- 出張や旅行で海外に出てもコンピュータ環境が脆弱にならないように、長いこと軽量かつ高性能なモバイル PC を使い続けてきた*2 が、最近はスマホにタブレットにモバイル PC に ... と高性能 CPU と大容量ストレージをいくつも保持するのが経済的にバカらしいと思うようになってきた*3。そこでここ2年くらいは VPN + RDP を活用する前提で、ハイエンド・デスクトップ PC + ミドルクラス軽量 2 in 1 端末 + ローエンド・スマホ、に収斂させる方向で環境整備しようとしている。2 in 1 端末は軽量・安価・必要以上にパワフルでないことが重要で、テキスト編集、VPN + RDP、スマホ用途 (Web ブラウズ、SNS、メッセ、動画視聴) ができればよい。という状況で、出先でちょっとテキスト編集するときにはオフラインローカルで、本格的に使いたいときには自宅サーバにつなぐかクラウドサービスで、でもスペックの違うそれぞれ環境に固有のサービスではなく、同じものを同じ設定で使うという Chrome Book 的な活用コンセプト*4 をパワフルでない 2 in 1 端末で実現できたら理想だと考えている。そのためには軽量で anywhere 的な (でもいざとなったらヘビーな使い方もできる) エディタが必要になる。
- 環境整備のもう1つの系譜としてタスク / メモ管理がある。こちらも四半世紀の間、付箋紙アプリ → FitzNote → DropBox → Evernote → OneNote → Google Keep と試してきて、最近 Notion *5 に乗り換え / 一本化することにした。同じ作業をするのにローカルとクラウドで道具や操作を泣き別れさせたくないという欲求は強い。
右サイドバーにコード・ナビゲータが表示されるとか、Jupyter と併用するときになんとなく UI が似ている*6 とか、VS Code 移行によるメリットはその他にも多数ある。
一方で、どうしても解消できないデメリットが1つだけあり、それこそが本格移行をいままで渋っていた理由でもある。それは emacs のようなタブストップ&ラインインデント*7 が効かないこと。emacs 以外のエディタは、なぜかタブキーをタブ入力か複数スペース入力にしか設定できない。これは諦めて新スタンダードに合わせる必要があるか ...
*1:Windows 上で動く emacs ライクな軽量テキストエディタ。2014 年 4 月を最後にメンテナンスが止まっている。
*2:Dynabook SS → Libretto 50 → VAIO type-p → VAIO Duo 11 → ... その後、小型モバイル PC は当たりに恵まれず ... をネット黎明期から海外に持ち歩いているモバイラーである。
*3:ひどい時には、会社 PC + 個人 PC + 会社スマホ + 個人スマホ + 個人タブレットで合計 5kg 程度をハンドキャリーすることがあり、重量の観点でもバカらしかった。
*4:Chrome Book はコンセプト的には「軽量、安価、でもオフィスワークできる」だが、実際には WAN 回線がないモデルが大多数だし、野暮ったくて重量があるため、持ち歩くには実用的ではない。B5 サイズ弱、タイプカバー付きで 650g 前後、Geekbench 5 (64bit MultiCore) スコア 2500 ~ 3000、LTE あり、USB Type-C OTG + DP Alternate mode あり、 5 万円程度が理想。現時点でこのコンセプトを最も体現しているのは Chrome OS ではないが Huawei Mate Pad 10 になる。
*5:コードと結果とメモを混在させて記述・記録できる Jupyter のように外部ソースと自分のアイディアを取り混ぜて簡単に記述できるのが Notion の利点。
*6:VS Code と Jupyter の使い分け・棲み分けを考えなければならない。
*7:文脈から決まる、各行におけるインデント位置にカーソルとコード先頭をジャンプさせること。どこにいてもあるべきインデントに整形してくれるため、うっかりスペースを打ったりしてもタブを押せば戻せるし、うっかりタブを打っても何も起こらない。オフサイドルールの Python には必須の機能ではないかと思うのだが、なぜか emacs 以外に実装しているエディタがないように見受けられる。