今日学んだこと

読書感想文とか、勉強した内容とか

システム開発するならEmacsが良いと信じてる

平日だとどうしても日付変わっての帰宅となり、なかなか勉強する時間も取れません・・・

システム関連の勉強をするにあたり、どうやって効率を上げるか・・・と考えると、エディタに習熟するというのはアリなんじゃないかなと思ってのこの記事です。

以下はMacでの起動例。僕はターミナル(WindowsでいうところのDOSプロンプト上)で使ってます。

f:id:nakazye:20140917012947p:plain

世の中にはどのようなエディタがあるか

「世の中には世界一イケてるエディタのEmacsと、二番目にイケてるviってエディタがあるんだよ」と新人に語っては顰蹙を買ってますが、世の中のシステム開発で用いるメジャーどころはこんな感じな様です

Windows特化

秀丸エディタ

有料。昔はよく見たけど最近はあまり見ない。だけど根強いファンがいる。シェアウェアだけど、お金払ってる人は1/10もいないんじゃないか・・・と試用期間を使い倒されてるエディタ。昔から使っている人はともかく、新規にこれを使う理由はないと思う。昔は会社で一括購入とかあったけど、まだそうやってスタンダードにしてる会社はあるのかな?使い続けてる人は、すごくできる人かすごくできない人のどちらか極端な事が多い気がします。

サクラエディタ

無料。SIの現場で一番見かけるエディタじゃないでしょうか。一般的なキーバーインド(ショートカット。Ctrl+cでコピーとか)、諸々の文字コード対応、正規表現が使える、無料、Windowsではメジャー ということで、思考停止気味に選ばれるエディタだったりもします。名前はひらがなにした方がかわいいと思う。

Mac特化

Coda 2

有料。僕がSI屋な為、Macで開発している人が周りにおらず、使っている人を見たことがありません。ただ、Macの有料ソフトランキングでいつも上の方にいる存在感のあるやつ。Web屋の人に人気があり、HTMLやCSSを効率よくコーディングできるみたいです。

マルチプラットフォーム

Sublime Text 

有料。大人気ですね。僕もたまに使いますが、ホントたまになので、お金を払うまでには至ってません。人気な理由は、見た目がオシャレな点だと思ってます。SJISが標準で使えないので、SJIS縛り案件もまだまだ多いSIで使うとなるとちょっと辛い(プラグインで対応できるけど、非標準な機能で事故りたくないので・・・エディタがうまくエンコードできてなかったのでバグ出ました。とか言えないでしょ?)。ただ、世の中の流れ的には大勢力に育っている感じがします。あと、使っている人はみなviキーバインドにしてる気がするのは気のせい?

Atom

無料。GitHubが出してるエディタ。このタブ、見覚えありません?裏で動いているのはGoogle先生Chromeだったりします。だから、HTMLやCSSはもちろん、JavaScriptとも親和性がものすごく高い。ただ、あんまり使ってるよーというのは聞かない寂しいエディタ。見た目もオシャレなのにね。こちらもSJIS使えない為、SI屋の僕が常用する訳にはいかなかったりします。

vim

viといえばvimを指すのかなと思ってます。Windowsの人KaoriYaさんのバージョンをどうぞ。SIのアプリ寄りな人たちからすると、できるだけ触りたくないと思われてるエディタ(開発機のconfigいじるにしても、FTPで落として上げてとする人が8割以上だと思います)。Emacsと双璧をなすと言われるけど、事実上viの一人勝ち。倍以上のスコアつけられてるんじゃないかってくらい一人勝ちです(ユーザー数とか盛り上がり具合とか)

Emacs

今日の主題。このエディタのメリットを掘り下げて行こうかと思います。

その前に

エディタ自身の学習の為に!というならいいんですけど、適材適所です。SIだと、まー言語は基本Javaか.netかABAP(SAPを弄る言語)ですよね?SIのJavaだと商用App Serverが使われてると思うから、バンドルされてるであろうカスタマイズされたEclipse、.netならVisualStudio、ABAPならSAP GUIでコーディングすべきです。

じゃーどこで使うかというと、HTMLやCSSJavaScript、あとはSQLなど。SIじゃないならrubyなりpythonなりperlなりPHPなりで使うと良いかと思います。

やっぱり特化しているものは強いよね という話です。

Emacsのメリット

歴史がある

wikipediaによると、1975年生まれだそうです。それだけの歴史を経て現存しつつ、まだまだ人気。世の中にはTipsも沢山あれば、しょーもないバグに悩まされることも少ないです(プラグイン的なものに泣かされることは多々あるけど・・・)。

プラグインが豊富

各種言語に対して拡張できます。40年近い歴史があるんですもん、Emacs拡張がない言語なんてないんじゃない?ってくらい揃ってます。・・・って思ったらありました。日本語プログラミング言語なでしこってのがあるんですが、さすがに拡張ありませんでした・・・まぁ、viにもないみたいなので・・・

なお、2chが見れたりrssリーダーにできたりtwitterクライアントにできたり、なんて拡張もあります。今調べたら、tumblrまで見れるってさ・・・

https://camo.githubusercontent.com/98a7c0d9e16d2c16baf68754fb9f0397bd9ff6ed/687474703a2f2f692e696d6775722e636f6d2f3977726f532e706e67

gcr/tumblesocks · GitHub

J-POPってカスだよね、洋楽サイコー 的な厨二病を気取れる

前述の通り、世の流れはvi(m)です。で、少数派ってかっこいいじゃないですか。

MacLinuxUnixとの親和性が高い

これは割と本気でメリットだと思ってます。今、もしMacでこのページを見てたら、どこか入力可能な場所で(例えばURL入力する領域とかで)以下のキー打ってみてください。

Ctrl+b

Ctrl+f

Ctrl+h

それぞれ、1文字戻る、1文字進む、1文字消す です。Ctrl+kで行末までカットとか、そのままCtrl+yでペーストとかできちゃいます。知ってました?

これ、Emacsキーバインドそのままなんです。趣味のプログラム開発なりWebサービス開発なりやってると、ターミナル上で操作することも多いかと思うんですが、そこで遠い場所にある矢印キーなりマウスなりを使う機会を少なくできる。

Emacsに慣れると、そういった作業が手に馴染んだ形でできちゃいます。

viいじる際に変な癖がつかない

Emacsもviも、基本自分の使いやすい様にカスタマイズして使います。自分のエディタを作り込んでいく感じですね。

ただ、viにおいては、カスタマイズされていない素のviを使う機会というのが多々あったりします。

サーバーの調子が悪くて直接サーバー上で作業したり といった場合です。あとはちょっとしたconfig書き換えたり。

そんな時、いつも使い慣れて手グセがついているものとびみょーに違うものだと、イライラしたり些細なミスを犯しがちです。

僕は、これが一番の理由でviを使ってません。ただ、使える必要はあるので、たまに気分転換に何の拡張も入っていないviでconfigやHTMLを書いたりすることはあります。

小難しいといわれるEmacs 挫折しない為には?

これは僕の実体験からですが、「いきなり色々とやろうとしない」。これに尽きます。

2chを見れるようにしてみたり、twitterを見れるようにしたりというのが後回しなことはもちろん、helmっていうのが便利だよ とか yasnippetってのが便利だよ とか色々な「便利」に惑わされるのも良くないです。

1度に色々試さない。最初のうちはこれ絶対です。

まずPythonの拡張だけ試そう とか、JavaScriptの拡張だけ試そう とか、1個づつにしないと混乱して挫折します。それぞれ個性的なキーバインドが多いので、1度に色々と覚えるのは無理です。僕は無理でした。

その結果、一度全部拡張を消して・・・というのはEmacs使ってる人なら1度や2度じゃないと思います。

次回に続く・・・

そんな訳で、次回はHTMLを書く環境を整えてみたいと思います。