Picture by ITエンジニアを目指す女子高生たちの学園ライフ4コマ漫画『ぱいじょ!』
こんにちは、谷口です。
皆さんは普段どんなエディタを使っていますか?「今のエディタに不満がある」「乗り換えを考えている」という方もいるかと思います。
弊社でpaizaを作っている凄腕エンジニアたちに聞いたところ、Atom派とVim派とEmacs派がいたので、各エディタを使うメリット・デメリット、また実際に開発で使っていて便利なプラグインや設定の小技などをみっちり聞いてきました。
エディタの設定や乗り換えの参考にしていただければと思います。
■その前にpaizaを作っているエンジニアが使うエディタの割合
Picture by ITエンジニアを目指す女子高生たちの学園ライフ4コマ漫画『ぱいじょ!』
Atomユーザー:2名
Vimユーザー:2名
Emacsユーザー:1名
もちろんみんな一つのエディタ単体で全てを済ませているわけではないので、いろいろ使ってる人もいました。あとintellijユーザーとSublime Textユーザーもいました。
■Atom
Atomは2014年からGitHubが公開しているオープンソースのWebエンジニア向けエディタです。
Windows、Mac、Linux環境で無料で使えて、拡張性が高く、テーマやパッケージをインストールすることでどんどん便利にカスタマイズしていくことができます。
操作性はSublime Textとかなり似ています。そしてテーマやパッケージをインストールすることで、外見や機能をSublime Textに近づけることができます。弊社でもSublime Textユーザーだったエンジニアが、気付いたらAtomに浮気していた…という感じです。(下記でSublime Textからの移行に適したパッケージもご紹介しています)
◆弊社のAtomユーザーに聞いたAtomを使うメリット
・無料なところ
Sublime Textを一瞬使ってたけど、「買ってね」ダイアログが思ったよりストレスだった……。
・shift-cmd-pで起動するコマンドパレットがめっちゃ便利
キーバインド覚えられない。
・かゆいところに手が届くプラグインがたくさんある!
ブラウザがベースになっているエディタなので、Webエンジニアであればプラグインの作成が容易→プラグインを作成出来る人が多ければ良いプラグインも充実しやすいという好循環です。
・素の状態でterminalからファイルを開いたり、プロジェクトを開いたりできる
後で紹介しますが、terminalを組み込めるプラグインもあります。
・Rubyが書きやすい
・意外とクラッシュしない
・GitHub謹製な安心感がある
◆Atomの便利なプラグインなど
◇Rubocop Auto Correct
atom.io
rubocopのauto-correctをコマンド一つで実行できるようになります。個人的には最も重宝しているパッケージです!!
◇ruby-block
atom.io
選択した単語をハイライトしてくれます。Rubyを書いていると何かとたくさんのendが出てきますが、どこと対応しているのかハイライトしてくれて便利です。
◇Sublime Style Column Selection
atom.io
Sublime Textから移行したユーザー向けのパッケージです。altキーを押しながらマウスで範囲選択をすると、矩形選択ができます。
◇Sort Lines
atom.io
テキストのソートができます。ソート後に重複した行を削除したりもできます。自分がかつてSublime TextやSakura Editorを使っていた頃に重宝していた機能なので、Atomに移行したあと真っ先に入れました。
◇Split Diff
atom.io
2ファイル間の差分を表示してくれます。WinMergeを多用していた人は、これで少し幸せになれるかも……。
◇local-history
atom.io
エディタ上の編集履歴を取っておいてくれます。commit前にクラッシュしたら目も当てられないので、保険として入れています。
◇sync-settings
atom.io
GIST経由で設定を共有できます。自宅と職場で同期するために使っています。
◇project-manager
atom.io
開発するプロジェクトの切り替えに使っています。
■Vim
CUIベースなので基本的にキーボードだけで全ての操作をすることができ、高機能で軽くて動作も早いため、91年の初公開から今なお多くのエンジニアに愛されています。
弊社ではSublime Text派だったエンジニアがAtomにすぐ乗り換えたのに対し、Vim派は「え、Vimでいいし……いやVimがいいし……」という感じでした。
◆弊社のVimユーザーに聞いたVimを使うメリット
・ホームポジションを崩さなくていい
自分は面倒くさがりなので、キーボードとマウスやトラックパッドを行き来する回数を極力減らしたいという理由でVimを使っています。thinkpadキーボードのトラックポイントとVimがあれば腕を移動しなくていいのでVimを使うようになりました。
・(多分)プログラミングに強くなれる(ような気がする)
Vimはちょっとしたコマンドの組み合わせて様々なテキスト編集ができるので、最終的なテキスト編集結果が同じ場合でもいろいろな編集方法があり、考えながら編集することになる(慣れると無意識的にできるようになる)ので、プログラミングに通ずる所が多い→プログラミングに強くなれる気がします。
・設定がポータブル
他のエディタもそうかもしれないですが、.vimrcとか.gvimrcという設定ファイルがあれば大体同じようなエディタ環境ができあがります。
巷ではこれらの設定ファイルをGitHubとかでdotfilesとして管理するのが流行っているようです。有名な開発者が使っている設定などもGitHubに転がっていることが多いので、それをベースに使い始めるのも有用です。
・軽い!!
もちろんプラグインを入れまくれば重くなりますが…。
・歴史が長いのでプラグインが多い
他のエディタのプラグインを移植してくれる人もたくさんいるので、いろいろな機能を簡単に拡張することができます。
・設定の自由度が高い
後から詳しく説明しますが、インデントやタブ設定などなど、プラグインなしでも自分で結構いろいろ自由に設定することができます。
◆弊社のVimユーザーに聞いたVimを使うデメリット
・ある程度コマンドを覚えないと使えない
Vimはマウスでぽちぽちできないし、ありがちなショートカットも割り当てられていません。保存がctrl+sでは無くコマンドで:wだったりするので、慣れるまでは大変かもしれないです。
プラグインや設定などでマウス対応をさせることも可能ですが、カーソル移動とかスクロールとかは基本キーボードでするので……。カーソル移動ではhjklを使います。矢印キーも使えるのですが、VimユーザーやVimに関する記事等はhjklで説明することがほとんどなので、最初はちょっと戸惑うかもしれません。
・他の人が触れない
弊社はVimユーザーじゃない人の方が多いので、自分のマシンでコードレビューをしてもらうような場合はVimではなく他のGUIエディタで見せる必要があります。(レビュアーに見せて操作してもらうような場合も多いのですが、コマンド操作に慣れてないといじれないので……)
・なんとなく気持ち悪い……?
Vimを触ってみて挫折した人とか、Vimがトラウマになっている人も多いと思いますが、そういう人たちからすると、「Vimイコールわけわかんなくて使いにくいエディタ」という認識になっていると思うので……何というか気持ち悪がられるというか引かれるような気がします……。
◆Vimの便利なプラグインなど
◇unite
github.com
ファイラー兼ランチャー的なプラグインです。各種ファイル操作(検索やファイルの使用履歴、お気に入りフォルダの確認、開いているタブの移動などなど…)を、このプラグインがラッピングしてくれることで、統一的なインタフェースで操作できるようになります。
このプラグインのデフォルトでできることも多いですがが、デフォルトで提供されていないものは、さらに別のプラグインを取得して活用します。
◇fugitive
github.com
Vim上からGitを操作できるプラグインです。
◇lightline
github.com
ステータス行をいい感じに表示してくれるプラグインです。
◇neocomplete
github.com
コード補完をしてくれます。
◇vim-gitgutter
github.com
Gitの差分をVim上に表示してくれます。
◇vim-rails
github.com
Railsプロジェクト用のプラグインです。Rails向けの便利なコマンドが使えるようになります。
◆Vimの便利な設定・小技など
◇ファイルタイプごとの設定
↓VimでPythonを書いてますが、こんな設定をしています。
filetype on autocmd FileType python setl autoindent textwidth=99 autocmd FileType python setl smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class autocmd FileType python setl expandtab tabstop=8 shiftwidth=4 softtabstop=4
一行ずつ解説していきます。
・行幅
autocmd FileType python setl autoindent textwidth=99
自動インデントをオンにして、1行の幅を99文字までに制限する設定です。コードを横長にしすぎないための対策です。
・インデント
autocmd FileType python setl smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
"smartindent"(インデントをいい感じにしてくれる機能)をオンにしています。
この際、キーワードとなる"cinwords"を設定しています。デフォルトの場合は"if,else,while,do,for,switch" だけなので、自分はPython用に"elif"とか"def"とかを加えたものに変更しています。設定する際は自分のよく使う言語に合わせて変更してください。
・タブ設定
autocmd FileType python setl expandtab tabstop=8 shiftwidth=4 softtabstop=4
"expandtab"は、タブが半角スペースとして入力されるように変更するものです。"tabstop"では、タブを含むファイルを開いた場合の表示文字幅を設定しています。(Python2とかだと8文字認識されるために8にしています)
"shiftwidth=4"は、自動インデント時の設定です。
"softtabstop"は、タブ入力した際、スペース4文字となるように変更する設定です。
もちろん言語ごとに補完などもしてくれる高機能なプラグインもあるので、それは必要に応じて適宜導入すればいいかと思いますが、単純なインデント等は、特に外部のプラグインとかに頼らなくてもこういった設定をするだけでほとんどの言語に対応することができます。
上記はPythonに適した設定例ですが、"cinwords"や"softtabstop"などを調整するだけで、すぐに他の言語でも何となく書ける状態にすることができます。
・横長コード対策
if exists('&colorcolumn') set colorcolumn=+1 endif
これを設定しておくと、"textwidth"に設定した値+1の行に、縦に目印みたいなのを出すことができます。("textwidth"は上記で出てきましたが横長コード対策の制限です)
・スクロール
set scrolloff=10
スクロールする位置の調整をすることができます。
・ カーソル行
set cursorline
カーソルのある行が表示されます。(個人的にはあまり好きじゃないのでオフしてますが…)
・ 改行やタブの置換
set list set listchar=eol:↓,tab:>>-,extends:»
改行やタブを好きな文字に置き換えることができます。"extends"は、ウィンドウの幅が狭くて右に省略された文字がある場合に表示されます。
◇Vim操作上の小技
・暗号化
:X
ファイルを開いて↑を入力すると、パスワードの入力画面が出てきます。ここでパスワードを入力すると、そのファイルは暗号化されて、Vimで開く度にパスワードを聞かれるように設定されます。
・暗号化のアルゴリズム指定
set cryptmethod=blowfish2
↑さらにプラスで暗号化のアルゴリズムを指定することも可能です。デフォルトでは、zip・blowfish・blowfish2を指定することができます。
・よく使う便利な矩形選択
ctrl+v→hjklで移動
これで矩形選択をすることができます。
例えば
ctrl+v → k押して縦長に選択 → Iでインサートモード → スペース4入れてインデント調整 → esc
で、選択した範囲内の各行に同じ内容を挿入することができます。挿入とか削除とかコピーとかしたいときに便利です。
■Emacs
Emacsは高機能でカスタマイズ性の高いテキストエディタとして、Unix系の開発者を中心に普及しました。文字入力が一元化されることや外部プログラムとの連携が得意といった特徴があり、強力な拡張言語であるEmacs Lispを使うことで様々な機能を追加することができます。
Vim(vi)とEmacsは伝統的なエディタ戦争における対抗勢力として位置付けられていると思いますが、現在弊社でEmacsを使っているのは4月から入社した新卒エンジニア一人だけです。先輩たちに負けず大事にしてあげてほしい…(?)。
◆Emacsの便利なプラグインなど
◇Cask
github.com
Caskはシンプルで便利なパッケージ管理ツールです。
■まとめ
エンジニアにとって、エディタは毎日長い時間を一緒に過ごす恋人のようなものだと思います(※ただしもっとよさそうなのを見つけるとすぐに浮気する)。
「そろそろエディタ乗り換えたいな」「どのエディタがどういいのかいまいちわからない」という方が、自分に合ったエディタを見つけ、カスタマイズをするための参考になればと思います。
Atom
welcome home : vim online
GNU Emacs For Mac OS X
最初に出てきた画像のWeb漫画はこちら
paizaは、技術を追い続けることが仕事につながり、スキルのある人がきちんと評価される場を作ることで、日本のITエンジニアの地位向上を目指したいと考えています。
自分のスキルを磨いていきたいと考えている方におすすめなのが「paizaラーニング」。オンラインでプログラミングしながらスキルアップできる入門学習コンテンツです。初心者でも楽しくプログラミングの基本を学ぶことができます。
そして、paizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。