2020/05/28 このエントリーをはてなブックマークに追加 はてなブックマーク - 開発環境における個人的エディタ vs IDE(カスタマイズ観点とか)

開発環境における個人的エディタ vs IDE(カスタマイズ観点とか)


【オンライン】 Java生誕25周年 記念イベント でirofさんが
IDE起点で2020年代の開発環境を眺めてみるというのを発表していて、

https://speakerdeck.com/irof/ideqi-dian-de2020nian-dai-falsekai-fa-huan-jing-wotiao-metemiru

そういえば、エディタとIDEについて個人的に思うところをしたためた駄文が下書きにあったなぁと思い出し、掘り起こしました。
主にJavaに関してというところが含まれてますが、言語問わず開発環境に対して思うことだったりも入ってます。
特に上記スライドとほぼ関連してないお話ですが、僕にとって開発環境ってなんだろう?みたいなことをウダウダ書いてます。


一応断っておくと、特定のエディタやIDEを非難したりとか贔屓する意図はないです。
ただ、どうしても個人的な好みは含まれています。

この話をするにあたって、エディタについて認識が自分と違っている人が地味に居そうなので前提をあえて書きます。

エディタはエディタであってエディタではありません。エディタはIDEです(?)。

EmacsやVimをIDEのように使っている人は世の中にはたくさん?います。
なので、エディタがIDEになり得るということを認知していない層に関しては
「コードはエディタでは書くの厳しいでしょー」という結論になってしまいがちです。
エディタはIDEになり得る。この前提は割と大事です。

参考記事:
vimって極めればvscode並のIDEになるんじゃないの?
Vim をモダンな IDE に変える LSP の設定
「なぜ2018年にIDEとEmacsを選ぶのか」ライナーノーツ
開発環境をRubyMineからEmacsに移した話

IDEやエディタを色々使ってみた上での自分の所感はこれです。

素のエディタだと痒いところに手が届かない。
一方IDEだと便利そうな機能が色々入っているけど実際に使っているのはごく一部。
IDEに対しては要らないプリインストールアプリがたくさん入ったスマホみたいな気持ちになることがあります。
何処までカスタマイズしても、機能を削っても削っても、無駄な機能がありすぎる感覚にとらわれる。
IDEに対してそういう衝動はありますが、そうは言っても大人しく便利機能を学んでいけばいっかなー。長い物には巻かれろだよな的な気持ちになることもあります。
IDEの機能を覚えることで逆にコードの書き方やリファクタリングなどの手法を学べたというトコもあると思います。

エディタやIDEなど垣根作らず、色々試していつでも自分のベストプレイス(開発環境)を探していきたい。
開発に集中するために開発環境を固めたい!決定版を作りたいという思いで幾年の月日が過ぎている今日この頃です…!
日々開発環境は進歩するものなのでこれはもうイタチごっこなんだろうなと思ってます。
開発技術に関しても似たようなところがあります。


なぜ世の中、開発環境としてエディタを使う人・IDEを使う人が分かれるのか?

それを考えてみるに、

  • 0(サラ地の状態)から自分に最適化したいか
  • 100(全て揃った状態)から自分要らないものを無くしていく引き算を作業をしたいか (開発環境一式をIDE任せにしたいか)

  • という使う人の好むカスタマイズのベクトルによるところが大きいと思います※1

    IDEは前述したようにtoo much。要らないプラグインや機能は削ってしまったい衝動に駆られる。
    それに比べ、エディタは機能が少なすぎる※2
    何処まで機能を追加しても追加しても必要な機能が足りていないような錯覚に陥る※3

    したがって、僕がIDEを使うときは0に向かい、エディタを使うときは100に向かうと考えます。
    僕の理想の開発環境の位置付けを不等式で表すと、こんな感じです。

    エディタ < ぼくの考えた最強の開発環境 < IDE



    自分の最強開発環境に辿り着きたいが為に試行錯誤を続けるのが定めみたいなところがあります。


    ※1 極論ですが自分の中ではそんな感じです。もちろん好きなものを使いたいというのがユーザーの根本にはあると思います
    ※2 ただし、素のエディタでも機能が充分であると言えるほど駆使する人々の存在は否めない
    ※3 プラグインを詰め込みすぎて激重いエディタを作り上げてしまうこともあります


    キーバインドの話に関して少し掘り下げると
    実はエディタを使い込んでいる人にとっては、IDEについてくるプラグインは気安めぐらいにしかなりません。
    結局のところ、エディタで実現していた操作がプラグインに含まれておらず、
    実際のエディタじゃないと納得出来なくなる部分が多いです。
    IDEの上にキーバインドが乗るか、エディタの上にIDEのような機能が乗るかの違いは結構大きいです。
    ただ、これは難しいところでIDEにキーバインド乗っかっていればまぁいいかと割り切っている人もたくさんいると思います。


    ここまで、色々エディタとIDEについて考える開発環境の相違点みたいなものを書いてきました。
    ここからは、具体例としてJavaにまつわる開発環境についての感想文です。

    Javaのプログラマとして、一般的にIDEと言われるEclipse、IntelliJ IDEA、NetBeansとさまよってきて、
    それぞれの個性、それぞれの便利さに感心したものです(実業務で3つとも使いました)。
    JavaのIDEは本当によくできていると思います。

    しかし、やはりIDEはどうしてもヘビーです。
    IDEを何処まで軽量化出来るかということに注力しましたが、どうしてもメモリ容量の食い方がデカいのです。
    ちょっとしたことですが、起動速度も気になってしまいます。
    今でこそ、開発マシンのパワーでなんとか出来る世の中ですし(一昔前はしんどかった)
    ぶっちゃけイマドキのPCならそんなに開発で支障出て困るとかないんですけど
    なんだかんだその重量感が気になる〜っ軽くしたいーっ!ていう気持ちが根強く自分の中にあります。

    >Eclipse


    僕にとっては、pluginsフォルダの中のjarをどこまで削るかをモチベーションとしたIDEですが、
    まるでミニ四駆のシャーシを肉抜きしている気持ちになります。ただし、長く使っていたため愛着はあります。
    Eclipseだけでコンパイルが通るなんてこともたまーーにあるのがスリリングなIDEですよね。
    日本語化のプラグイン(Pleiades)を抜くだけでも結構早くなる気もします。
    https://mergedoc.osdn.jp/#pleiades.html
    慣れてきたら、all in oneとかじゃなくて一番中身の軽いEclipseをダウンロードして使うことをオススメします。

    >IntelliJ IDEA


    非常にバランスが良くJavaのIDEでは一番機能が充実している印象のあるIDEですが、
    複数のコードベース(ワークスペース)を起動するともちろんその分、容量を食ってしまいます。
    複数プロジェクトを並行開発とかしていると、まぁちょっと辛くなってきます。マシンパワーでカバーする手もあります。
    たまにindexがぶっ壊れて全部作り直すときとかはコーヒータイムになってしまいます。
    postfix completion、あとalt + Enterによるコード変更。あれは良いものです。
    https://www.jetbrains.com/help/idea/settings-postfix-completion.html

    >NetBeans


    個人的な感覚値ですが、一番スピードが早いのはNetBeansだと思っています。
    NetBeansのIDEビルドはantベースなので高速だし、IDEの機能としても必要なものは揃っています。
    あと結構Java EE(現Jakarta EE)フレンドリーだったような気もしないでもない。
    ただ、機能の充実さ加減でいうとIntelliJ IDEAやEclipseの方が勝る印象です。
    住めば都というか、充分にやっていけるIDEではあります。
    しかし複数のコードベース(ワークスペース)を起動するともちろんその分、容量を食ってしまい(略)


    続いてエディタを例にします。

    エディタはなんと言ってもメモリ食いにくいのが良いですね。
    起動/停止の上げ下げにもストレスが発生しにくいです。
    しかし、機能不足とも人にとっては感じられるかもしれません。

    >VSCode


    エディタとIDEの中庸という意味では丁度いいところをついてきていて、そこは好印象です。
    ただ、個人的にそこまで好きになれていないです。
    というのは、エディタなはずなのにIDEになりかけているというか、setting.jsonをただ書きたいだけなのに、GUIをいじるというのがなんか嫌というか…。
    IDEに寄り過ぎてる感じがどうしてもしてしまい。
    慣れたら解決する問題も多そうです。
    軽量でいて、それなりという意味では一番とっつきやすいのがVSCodeになっていると思います。
    あとLiveShareとかもすごいですよね。最近IntelliJ IDEAにもできたんでしたっけ。
    https://www.digitalocean.com/community/tutorials/how-to-use-live-share-with-visual-studio-code

    >Vim or Emacs


    Vim or Emacsでもいけますよ!という。
    僕はVimユーザーですが、GoとかTypeScriptとかはVimで書いたりしています。ほぼLSPのおかげです。
    同様に、LSPがあるのでJavaでのプログラミングもまぁまぁイケると思います。
    正直に言いますとLSP以前しか試していないので、その当時はちょっとしんどいなという感じでしたが。
    Emacsは詳しくないですが、LSPとか使えることも知ってますし全然いけるんだろうなと想像しています。


    個人的にはLSPの登場は本当に大きいものでした。
    https://microsoft.github.io/language-server-protocol/specification

    LSP以前は確かctagsとか外部ツールに連携したプラグイン使うとかで関数ジャンプしてましたし、
    コード補完やコードアクションに関してもプラグイン任せだったりで結構苦労があったというか…。
    まだまだLSP自体が発展途上な部分も多いですが色々な問題が一気に解決したという感じがします。
    LSPサーバーとLSPクライアントのコントリビューターには本当に感謝です。


    以上、エディタとIDEについて具体例を見ました。
    個人で開発するだけなら、VimでJavaを書くのもいいかなぁとは思います。
    ただ、チームで開発するとなるとJavaに関してはIDE使うのが相当無難です。
    その他、GoやTypeScriptとかは僕はVimで書きますがオススメするならVSCodeが一番無難だと思います。


    今回のブログで何を書きたかったかというと、
    VSCodeと同様、VimやEmacsなどは単なるエディタではなくIDEになり得るということを書きたかったような気がします。
    あと、嗜好が分かれる開発環境のカスタマイズ性とか、開発環境で何を重視するかとかに関しても書きたかったです。
    誰かの参考になるのだろうか…??
    しかしながら、VimやEmacsは良いものではあるものの、万人に.vimrc書いたり.emacs書いたりしてカスタマイズしてねというのはなかなかオススメしにくいとこでもあるかもしれません。
    プラグイン追加とか一度覚えれば容易ではあるんですけどね。


    ということで、エディタとIDEにまつわる開発環境について主にカスタマイズ観点で思うことを好き勝手に書いてみました。

    開発環境は好きなもの使えば良いと思います!!

    僕の場合VimをエディタをIDE的に使うというような発想でやってましたが、
    そうすると、ターミナル周りのツールも重要になってきます。
    なので、別記事で気が向いたらそのあたりも書いてみます。
    あと、Vimのプラグインに関してもちょっと気が向いたら記事を書いてみます。


    0 件のコメント:

    コメントを投稿

    GA