見出し画像

テキストエディタと向き合ってきた15年間の軌跡

こんにちは、みみぞうです。
ナビタイムジャパンで『システムや開発環境、チームの改善』を担当しています。

私は来年でエンジニア暦15年となります。少しでも速く良いモノを作れるよう、開発環境にはこだわり続けてきました。その中でもテキストエディタは開発速度や品質に直結するため重要であると考えています。

本記事ではそんなテキストエディタについて、15年におよぶ私の利用遍歴を紹介します。

※ 本記事における『テキストエディタ』はIDEという意味合いも含みます

1年目 『Microsoft Visual Studio 2005』『秀丸エディタ』

エンジニアになりたての1年目、まだテキストエディタに対する拘りはありませんでした。そもそも、どのようなテキストエディタがあるのか、何ができるのか、何が必要なのかを知らなかったからです。
そのため、1年目は会社で用意されていた標準環境をそのまま利用していました。メインの言語はCやC++だったため、開発にはMicrosoft Visual Studio 2005を、それ以外の用途には秀丸エディタを使っていました

2~3年目 『Eclipse』『サクラエディタ』

1年経ち、メインの言語がC系からJavaに変わりました。メイン業務がAndroidアプリの開発になったからです。そのため、開発にはEclipseを使うようになりました。

そのチームには親切な先輩がいたので、開発に必要な最低限のショートカットキーを一通り教わることができました。このような基本操作を知らないと長期的にはかなり差がついてしまうので、その先輩には今も感謝しています。

  • 定義へ移動

  • 宣言へ移動

  • 実装へ移動

  • 呼び出し履歴を表示

  • シンボルで検索

  • クラス名で検索

  • ファイル名で検索

  • プロジェクト全体の検索 (全文検索)

私はこのときはじめて『エディタって面白し、使いこなせると仕事も速くできるし格好いいなあ…』と思いました。そこから興味が出て、仕事で使っていたサクラエディタのマクロ機能を自分で勉強して、便利に使ったりしていました。

4~5年目 『Eclipse』『Sublime Text』

それから2年が経ち、メインの業務はAndroid開発からAPI開発へと変わっていました。利用言語はJavaのままだったのでメインは引き続きEclipseを使っていましたが、ちょうどその頃にあるエディタがチームで話題になっていました。Sublime Text (当時のバージョンはSublime Text 2) です。

Sublime Textは『恋に落ちるエディタ』という代名詞がつけられており、当時にしては衝撃を受けるほどオシャレなUIでした。今の時代ではVSCodeのようなUIは当たり前かもしれません。ただ、この土壌をつくり、世の中に知らしめたのは間違いなくSublime Textの功績であると言えるでしょう。

Sublime Textは見た目以外の点でも高機能でした。当時は画期的だったマルチカーソル、コミュニティ駆動のプラグインシステム(Pythonで開発可能)で好きにカスタマイズできました。また、Eclipseがあまり得意としていなかったJavaScriptやPythonの開発にも対応していました。私もJava以外の言語で開発するときはSublime Textを利用していました。

6~7年目 『IntelliJ IDEA』『Sublime Text』

2015年頃、Eclipseに代わるJavaのIDEとしてJetBrains製のIntelliJ IDEAを見かけるようになりました。Sublime Textと同じようにオシャレで高機能だったため、試しに利用してみたところ非常に使いやすかったので、Javaの開発はIntelliJ IDEAで行うようになりました。

IntelliJ IDEAはプラグインを利用することでJava以外の言語開発にも対応していました。そのため、PythonやJavaScript、Scalaの開発にも利用するようになりました。一方、マークダウンのようなテキストやシェルスクリプトの編集には引き続きsublimetextを使い続けていました。

IntelliJ IDEAにはかなり思い入れがあります。というのも、これは誰かに勧められたわけでなく、自分で見つけて使うようになった初めてのテキストエディタだったからです。その後、社内でJetBrains IDEの普及を行ったのもあり、現在ではナビタイムジャパンで利用されている主要な開発用テキストエディタの1つとなっています。

7~8年目 『IntelliJ IDEA』『VSCode』

2016年にMicrosoft開発のモダンテキストエディタ Visual Studio Code (以降VSCode)のバージョン1.0がリリースされました。開発元の知名度やエディタの操作感から、今後スタンダードになりそうなポテンシャルを感じたので、すぐに使い始めました。

Java、TypeScript、Pythonの開発は引き続きIntelliJ IDEAを利用し、マークダウンや設定ファイルの編集、シェルスクリプトの開発はVSCodeといった使い分けをするようになりました。

8~10年目 『IntelliJ IDEA』『VSCode』『Vim』

2018年は私にとって運命の年… そう、Vimを使い始めた年です。

もともとVimの存在は知っていましたが、その魅力については半分も理解していませんでした。Vimをはじめたきっかけは社内で私が定期的に開催していた『作業効率にストイックな人のLTイベント』です。数年前に新卒で入社した後輩が、LTのたびにVimの話を熱心に語ってくれたので、『そこまで言うならちょっと試してみようかな…』と思ったのです。そして、最終的にVimを本気で使ってみようと思えたのは『実践Vim入門』という本との出会いでした。

身体中に衝撃が走りました。今までに技術書を読んでここまで感動したのは、後にも先にも『実践Vim』だけです。それくらいカルチャーショックを受けました。それ以来、Vimに興味をもったエンジニアには必ずこの本を勧めるようにしています。さらに、翌年にVimの社内勉強会を開いたところ、参加者が50人を超えたので、その流れでnoteの記事も執筆しました。

この記事にも書きましたが、すべての開発でVimを使うようにしたわけではありません。IntelliJ IDEAやVSCodeにVimのプラグインをインストールして、Vimの快適な操作感をあらゆる環境に適応しただけです。一時はVimですべての開発を賄えないかチャレンジしたこともありましたが、当時は言語ごとに異なるプラグインや設定が必要になり、そのコストが割に合わなかったので諦めました。そのときは。

11年目~14年目 『IntelliJ IDEA』

2020年頃から、私は基本的にIntelliJ IDEAのみをテキストエディタとして使うようになりました。以前は3種類のテキストエディタを用途によって使い分けていましたが、それぞれをメンテナンスする時間が取れなかったため、どれか1つに絞ることにしました。

IntelliJ IDEAにした理由は、どのような言語でも快適に開発でき、マークダウンや設定ファイルの編集機能も充実していたからです。この時期にメインで開発していた言語は TypeScript、Python、Rust、Go の4種類でしたが、プラグインを導入すれば、すべてIntelliJ IDEAで開発できました。

VSCodeはWSLやSSHごしのリモート開発など手厚いサポートを提供していましたが、開発はWindowsホストマシンで完結することがほとんどだったため必要ありませんでした。Vimで培った操作もVimが一番安定していて快適でしたが、言語のサポート機能やUIを含めるとメインにするのは厳しいと判断しました。

14年目~現在 『Neovim』

『このままずっとIntelliJ IDEAを使い続けるのかも…』

本気でそう思っていたところに転機が訪れました。社内別プロジェクトへの期間限定参加です。

ここで大きな問題が立ちふさがりました。そのプロジェクトで開発していたプロダクトはWindowsマシンで開発できなかったのです。仕方なく、WSL(Ubuntu)で開発することにしましたが、その場合はVSCodeを使った方が圧倒的に楽なのです。他メンバーがVSCodeを使っていたこともあり、急遽VSCodeの環境を整備することにしました。

そのままVSCodeの環境を構築していたら… 私は今もIntelliJ IDEAやVSCodeを使っていたと思います。ですが、私は見つけてしまったのです。この動画を。

『Neovimってこんなに色々なことができるのか… なんてカッコイイんだ…!!!』

1週間後、気がついたら私のテキストエディタはNeovimに統一されていました。

Neovimの魅力について

遍歴は以上です。続いて、Neovimとは何なのか? Neovimの何がおススメなのか? について簡単に紹介させてください。

Neovimとは?

NeovimはVimからforkされたテキストエディタです。Vimの機能をベースにしつつ、モダンな新機能を取り入れながらOSSコミュニティによって開発されています。

『モダンなUIと機能を備えたVim』とも言えるでしょう。

続いてNeovimの魅力を紹介します。

Vimの機能を使える

他テキストエディタのVimプラグインとは異なり、NeovimはVimの機能をフル活用できます。

起動が高速で動作も軽い

Neovimは起動が高速です。大抵の場合、開いてから1秒以内に操作できるようになります。また、複数のNeovimを立ち上げたり、沢山のタブを開いても動作が遅くなりにくいです。リッチなテキストエディタでは複数のプロジェクトを開くと遅くなってしまうこともあるので、パフォーマンスにあまり気を遣わず利用できることはメリットだと思います。

ターミナルがあれば動く

GUIが快適に使えない環境でも、ターミナルから入れればどこでも使えます。先ほど、WSL(Ubuntu)で開発をしなければいけなかったという話をしましたが、Neovimであればターミナルからそのまま起動して開発できます。

十分な開発体験を提供するモダンなUI

ターミナルから起動した場合でも、Neovimはテキストエディタに必要とされるUIをほぼすべて兼ね備えています。

Neovimで テストを実行しながらプロダクションコードを修正
Neovimで エラーや箇所を表示しつつアウトラインプレビューを表示
Neovimで プロジェクト内ファイル検索とプレビュー

ここまで綺麗に表示できるのです。ターミナルなのに!

見た目や挙動を自分好みにカスタマイズできる

多彩な設定と有志によって開発された数多くのプラグインを使って、細部に至るまで自分好みのテキストエディタに仕上げられます。

最近はプラグインマネージャーで管理もラクラク (↑はlazy.nvimを使用)

逆に、カスタマイズが好きでない方からすると、デメリットとなりえるかもしれません。

まとめ

エンジニアとして過ごしてきた15年間で使ってきたテキストエディタの遍歴を紹介しました。また、現在使っているNeovimの魅力について、簡単に紹介しました。

Neovimのカスタマイズは、ここ数年でLSPをはじめとしたエコシステムが整ってきた影響もあり以前ほど大変ではなくなっています。もし、『Vimの操作は好きだけど、UIは物足りないし、カスタマイズが大変そう…』と思われている方がいらっしゃるのであれば、今一度最新のNeovimにチャレンジしてみてください。

最後までお読みいただきありがとうございました!