最強のエディタ、ターミナル環境はこれだ!〜PLAIDエンジニアの使っている開発ツール調べてみた〜

こんにちは、PLAIDのエンジニアの池上(@jumpei_ikegami)です。

昨年の11月に、某大手SIerからPLAIDにジョインしました。

入社直後は、主にPLAIDが提供するウェブ接客プラットフォーム「KARTE」の管理画面の開発をしていましたが、最近は開発以外にも、KARTE導入済みのお客様やサポートチームへの技術支援、インターン生のメンターなどもしています。

希望すれば、職種を超えてどんな仕事でもできるのが、PLAIDで働く魅力の1つです。

さて、PLAIDに入社してから、気になっていることが1つあります。
それは、他のエンジニアたちの画面に映る、見慣れないツール群です。

私は、前職ではSEとしてかなりレガシーなシステムの開発をしており、「サクラエディタ」で書いた、「COBOL」のコードを、「VSS」で管理していました。

しかし、開発環境を比較的自由に選べるPLAIDに入社したからには、できるだけ生産性の高い環境を使って、「スマートなエンジニア」になりたい!

そこで、PLAIDエンジニアたちが日々どんな環境で開発をしているのかを、以下の項目に分けて、アンケート形式で訊いてみました。

  • エディタ
  • ターミナルアプリ
  • UNIXシェル
  • その他ツール

PLAIDエンジニアに共通する環境

アンケート結果の前に、PLAIDエンジニアに共通する環境について説明します。

PLAIDにジョインしたエンジニアは、特に希望がなければ、以下の3つのアイテムが標準で使えます。

「エルゴヒューマン」の椅子に毎日座るだけでも、エンジニアは幸せに一歩近づける気がします。

また、サーバーサイドは主に「Node.js」で、「Express」を使って書かれています。

その他の技術スタックについて、詳しくは、「エンジニア採用情報」をご覧ください。

エディタ編

まずは、「テキストエディタ」についてです。
PLAIDのエンジニアたちは、日々どんなエディタを使っているのでしょうか。

結果は、以下のグラフのようになりました。

あなたが使っているエディタは?(有効回答数: 15件)

トップ3は、以下のようになりました。

これらを足すと、全体の80%を占めています。

ちなみに「サクラエディタ」使いは、残念ながら1人もいませんでした。
Windows版しか無いので当然ですね。

「Atom」を使う理由

「Atom」を使っている人の理由で最も多かったのは、プラグインの豊富さでした。

また、限定的な理由として、「Haskell」のIDEとして最も優秀だから使っているという人もいました。
生産性を高めるために、それ以外の言語を書くときにも「Atom」を使っているそうです。

これも「Atom」に「Haskell」用のプラグインがあればこそなので、「Atom」のエコシステムが十分に機能しているメリットの1つと考えられます。

おすすめのプラグインについても、合わせてアンケートで質問しました。
初級〜中級者向けのものとしては、正規表現を可視化する「regex-railroad-diagram」などが挙がりました。

正規表現は書き慣れていないと抜け漏れが出やすいので、それをビジュアライズしてくれるとミスを減らせそうです。
「Atom」は「Google Chrome」と同じ「Chromium」をベースにして作られており、リッチなUIのプラグインも多い点が魅力です。

また、特定の言語を使いこなすためのプラグインとして、「haskell-ghc-mod」なども挙がりました。

自分のレベルに応じて、様々なプラグインを組み合わせて使うことができる点に、「Atom」が広く使われている理由が垣間見えました。

「Sublime Text」を使う理由

2番人気の「Sublime Text」を使う理由としては、検索が早い、シンプルだから、などの声がありました。

私の環境では、「Atom」の挙動がもっさりすることがあるので、早さを重視したいという理由は非常にわかります。

弊社CTOのnaokiさんも、「Sublime Text」を愛用しているようです。

その他のエディタを使う理由

その他のエディタとしては、「Vim」を使っている人も2人いました。

「Vim」のキーバインドをエディタ外でも使えるように、Macのキーボードカスタマイズツールである「Karabiner」を使っている人もいました。
独自のキーバインドで生産性を上げられる点が、「Vim」の魅力なようです。

Emacs」については、「Spacemacs」という「Emacs」のディストリビューションを使っている人がいました。

私は「Rebuild.fm」というポッドキャストが好きで毎日聞いているのですが、その中でよく「Emacs」の話が出てくるので、1人しか使っていないのは少々意外でした。
ただ、アンケートでは「Sublime Text」を「Emacs」のキーバインドで使う人もいました。

PLAID唯一の「Emacs」使いも、「Emacsしか使えない」と言っていたので、「Emacs」の呪縛はやはり強いようです。

また、「WebStorm」や「PyCharm」など、「JetBrains社」製のIDEを愛用している人もいました。

「Android」の開発などをしていると、やはりIDE特有の「リファクタリング機能」や「自動生成機能」のすばらしさに感動することがあります。
特にPLAIDではサーバーサイドのほとんどで「Node.js」を使っており、「JavaScript」を書くことが多いので、お金を払ってでも「WebStorm」を使うという選択は妥当性がある気がします。

エディタには、エンジニアのこだわりが光る

それぞれのエディタについてネットで検索してみると、「◯◯が最強のエディタだ!」みたいな記事が山のように出てきます。

今回のアンケートでも、エディタに関しては強いこだわりを持って選定やカスタマイズをしている人が多い印象でした。

ターミナル・Unix編

次に、「ターミナルアプリ」と「Unixシェル」です。

あなたが使っているターミナルアプリは?(有効回答数: 15件)

ターミナルアプリについては、Mac標準の「ターミナル」ではなく、「iTerm2」が多数派でした。

「iTerm2」の方が細かいカスタマイズがしやすい点を理由に挙げる人が多かったです。

一方、どのMac環境でも標準で使える点で、ターミナルを愛用している人もいました。

あなたが使っているUnixシェルは?(有効回答数: 15件)

Unixシェルについても、Macターミナル標準の「bash」より、「zsh」の方がやや人気でした。

また、「fish」を使っている人も2人いました。

zshを使う理由

「zsh」を使う理由としては、「補完が便利」と答えた人が最も多かったです。

また「zsh」派の人は、プラグインでカスタマイズしている人が多い印象でした。

おすすめプラグインとしては、以下が挙がりました。

  • 設定フレームワークの「oh-my-zsh
  • その後発プラグインである「prezto
  • 端末多重化の「tmux
  • Gitブラウザの「tig

また、補完や検索をより便利にするための「zsh-autosuggestions」や「peco」を推す人もいました。

bashを使う理由

対して、「bash」を使う理由としては、標準でどこでも使えるから、という理由がほとんどでした。

「zsh」と違い、「bash」使いはカスタマイズも少なめの印象でした。

多くの「Linuxディストリビューション」でも「bash」が標準搭載されているので、別サーバにssh接続して作業することが多い人は、「bash」に慣れておく方がいいというのも納得です。

fishを使う理由

「fish」は、2005年に誕生した比較的新しいshellです。

後発でもあり、デフォルトでも優秀な「補完機能」が搭載されているのが選ぶ理由として挙げられました。

「zsh」ほどではありませんが、ユーザーコミュニティも形成されており、「oh-my-zsh」と同様の設定フレームワークである「oh-my-fish」でも、使えるテーマが豊富にあります。

私も試しに「zsh」から「fish」に乗り換えてみたところ、補完が優秀で、幸せな気分になりました。

しばらくは「fish」を普段使いしてみようと思います。

ターミナル周りのカスタマイズは、個人差が大きい

アンケート結果を見ると、エディタに比べてターミナル周りはこだわりをもってカスタマイズする人が少ない印象でした。

shellは機能レベルでの大きな違いがあるわけではないので、現状に満足しがちです。
その分、エディタ以上に、カスタマイズによる生産性向上の余地があるように思いました。

より「スマートなエンジニア」になるには、ターミナル周りの環境をもっと見直してみるべきでしょうか。

その他ツール編

その他のツールについても、他の人に勧めたいものをアンケートで訊きました。

GUIツールとしては、Gitのクライアントツールである「Tower」を推す人が3人いました。

別ブランチに切り替えるとき、commit前の変更を簡単に退避したり戻したりできるので、とても便利です。

「VSS」ユーザーだった私がGitで大きなミスをしないで開発ができているのは、「Tower」のおかげかもしれません。

また、状況に応じて複数のエディタを使い分けている人がいるのも、面白い点の1つです。

Gitでコンフリクトが起きたとき、マージのためだけに「IntelliJ」を立ち上げるという人もいました。

各ツールの得意な部分を組み合わせて使うと、生産性が向上しそうです。

また、作業の内容に特化したツールも多く挙がりました。

弊社では「Google BigQuery」をかなり使い倒しています。
(参考: BigQueryの内部処理について徹底解剖してみた| PLAID engineer blog)

その「BigQuery」等をWebベースで解析するツールとして、「Mode Analytics」が使われています。

先日も「Mode Analytics」の社内勉強会があり、「BigQuery」に投げるクエリの書き方や、結果を可視化する方法について、ビジネスサイドも交えて勉強しました。

PLAIDのミッション」に「データによって人の価値を最大化する」とあるように、社内でもデータ解析系ツールは多く使われているようです。

ハードウェア周りで目立つのが、「Happy Hacking Keyboard」の使用率の多さです。

回答者15人中、5人も「Happy Hacking Keyboard」を使っていました。
かなり高い使用率で、驚きました。
「Happy Hacking Keyboard」の魅力としては、「打つと気持ち良い」、「指が疲れない」などが挙がりました。

また、PC周辺機器では無いですが、「ヘッドホン」に投資をする人も多いようです。

特にPLAIDエンジニアには、バンド経験者など音楽好きが多く、その人が持っている「ヘッドホン」の値段を聞いて驚くこともあります。

一方、周辺機器を一切使わずに、どこでも同じ環境で開発できることを重視する人もいました。

PLAIDオフィスには、個人デスク以外にも「芝生エリア」、「ソファ」、「カフェスペース」など作業ができる場所があります。
作業場所を頻繁に変えながら開発する場合には、周辺機器が少ない方がいいかもしれません。

なお、作業場所がたくさんあるPLAIDオフィスの様子は、「弊社クリスマスパーティの様子をまとめたブログ記事」をご覧ください。

まとめ

エディタやターミナルなど、毎日使うツールをどのようにカスタマイズするかによって、生産性は大きく変わってきます。

より「スマートなエンジニア」になるには、他のエンジニアの環境を参考にしつつ、自分の開発環境をゼロから見直し、改善していく必要があります。

しかし、エンジニア個人の開発環境については、なかなか共有がされにくいものです。

今回のアンケートについても、実際にPLAID社内勉強会で結果を共有し、それぞれの開発環境ノウハウを教えあう良い機会になりました。

ちなみに、この記事を社内で公開したらインターン生に、「けもフレ構文」で煽られました。

たーのしー!

最後に

ウェブ接客プラットフォーム「KARTE」を運営するPLAIDでは、 エルゴヒューマンの椅子で腰を守りながら、自由な開発環境でのびのびと開発したいエンジニアを募集しています。

興味を持っていただいた方は、こちら(Wantedly)をご覧いただくか、お気軽に、下にある「話を聞きに行きたい」ボタンをポチッと押してください!