Emacsが衰退したという話を見て

- https://www.slideshare.net/taumu/emacs-76377586

 これ。ちがくね?まず衰退したのはEmacsやViではないと思う。xyzzyは間違いなく衰退した。そうWindowsの雑多にあった沢山の微妙な感じでシェアを分けていた日本人むけの大量のエディタが衰退したのである。秀丸やらサクラくらいはまだ良い。でも昔はもっと有象無象のエディタが沢山あったそしてそれはほぼ絶滅危惧種になってんじゃないのかな。こっちの意味の衰退は間違いない。まずネコも杓子のPCという時代が終わり、スマホとオフィス使えれば十分な流れでユーザーの数が減ったのである。これによりわけも分からずエティタを使っていた多くのホームページを作っていた層とかがほぼ絶滅したと思う。今はやってもブログか日記。それも少数派でブログすらなくて facebook 。これによりブログパーツとかそういうノウハウも必要ないし。facebookも完全に金のためにやるツールなので、できれば手を出したくない人の方が多数。そもそも、facebookはそう別に便利でもなんでもないという事実がある。その結果、オープンな場所にはtwitterもあればいいほうという風になった。普通はもっと閉じててLINEとかで十分だから。発信力が高い人がtwitterとかインスタみたいなのをやっている。

 結果エディタが必要ない。この流れ。viやらemacslinuxとかunix好きな人が一定数いてメモ帳代わりに使うので好き嫌い以前にメモ帳が絶滅しないように実用ツールとして絶対viやらvimemacsあたりは残ってしまう。emacsが残る理由も割りと消極的でviの変なキーバインドよりはemacsの方が全然windowsに近いからっていうだけだと思う。

 emacsに関してはむしろ昔より絶対に簡単になっている。パッケージ特に日本語向けのパッケージが簡単に手に入るし。windowsっぽい操作にも簡単にできるし設定がGUIで普通のエディタの設定位のができるのでそもそもメモ帳代わりが本気で現実的。vimをメモ帳代わりにするとモード切替で躓く人も多いからね。そしてWindows環境では日本語とviのキーバインドは決定的に相性が悪いIMEとモードの切り替えが2重苦でその辺を設定で誤魔化す必要があるのだけどこれは個人がやる事なのでぶっちゃけ個人次第になる。その点からいくともはやEmacsの方が初期の敷居すら低いといわざるを得ない。だってlispなんてなくても別に普通のWindowsに割りと近い感じでかけるからね。

 あとメンテナンスに関してはvimも実は数人しか触れてないのでOSのアップデート次第ではやばい事には変わりはないと思う。ただviはもうそんな極端な変更はしなさそう。Emacsはその辺カスタマイズの範疇になりそうな部分もパッケージ化して色々フォークしているので細かい調整で徐々に敷居が下がり続けるのではないかって言うか、実際ここ10年位で凄く簡単になってると思う。前は日本語使うだけで結構面倒だったというか実際は日本語では使えるソフトでなかったのでxyzzyみたいのが人気だったというか。まあ今もWindows環境で日本語打つソフトとしてはxyzzyの方が敷居が低いと思うけど

エディタの持続性

SublimeTextとかNeovimとかSpacemacsが10年後もあるかっていったら大いに怪しい。けどvimemacsなら10年後もあるだろう。
昔流行っていたTextMateやら様々な和製エディタとかの並びが今ほとんど見かけないように、流行モノはすぐ廃れる割にかけるコストがでかい
そういう意味じゃ最近ある新参エディタの中でマシなのはAtomとVisualStudioCodeとかだと思う。理由はもはや新参で何とかなるには最低限オープンソースっぽい方向性、そしてMicrosoftGitHubみたいな後ろ盾。MSとかは一度やると一過性の明らかにネタくさいモノをのぞけば結構長引く傾向があるから。どちらも設定自体は比較的簡単なほうだし方向的に生き残りそうなのは伝統じゃなきゃ後ろ盾のデカさで直ぐコロコロ変わるソフトは基本駄目だと思う長持ちしないから本当に学習コストや設定コストが高い。

特にAtomGitHub使ってもらう為のツールの一つだとすればGitHubと便利に連携する機能を付けまくれば結果GitHubの利益になるので収益構造も何となく分かるし、無料で配っても収入源が後ろでつながっているから割と長持ちしそうな気がする。

カスタマイズ性能と学習コスト

あと

Emacs」と「Squeak」(Pharo)に共通するのは、際限のない拡張性と自由度です。単なるコードエディタというより、もはや仮想OSのようなフリーダムさを持っています。
それらの生みの親であるストールマンアラン・ケイが掲げる理想は立派ですし、今なお古びない設計思想の美しさは魅力的です。
しかしそのかわり、使いやすさが犠牲になっています。とくに初心者が迷子になりやすい、複雑さや難解さや不親切さを持っています。
カスタマイズするための(EmacsLispSmalltalkの言語からして難しいです。少なくとも、VSCode(カスタマイズ用)のTypeScriptやAtomCoffeeScriptよりは難しいでしょう。
そもそも、冒頭のWebアプリの話から言えば、言語にJavaScriptRubyなどのLLを選ぶ時点で、エディタもライトなものの方が合っています。

https://qiita.com/lldev2/items/46d55f71bdc1af2e3b10

こういうのも全然理解できない。てかlispってどっちかっていうとライトだと思うんだよ。Cとかだと変数とかが凄い硬いけどlispって適当に1行書いて動かせる辞典でめちゃめちゃライトだと思う。しかもエディタ上で動作が一瞬で確認できるし、言語的にもこの適当さはむしろjavascriptに似てるくらいじゃないかと。自分はjavascriptは結構いいんじゃないだろうかとか思った理由は、むしろlispになんかにてるとなと思ったからいいなと昔思ったくらいで。けどエディタにlisp代わりでjavascriptでやれっていわれたら結構戸惑う。だってJavscriptってHTML前提のなら割と直ぐで切るけど、タグが書いてない文字列の操作って実際ほぼやった事ないわ。私は個人的にxyzzyつかって正直ワンライナー的なことをlispでやってる。てかLispで高尚な事とかもできるらしいけどぶっちゃけ今だに文字列操作しかほぼした事ない。Emacsとかもそうだけどエディタのマークとかキャレットの位置を使ってここからここまでとか範囲指定できるのがずるすぎると思うんだよ言語的に超絶楽チンじゃん。しかもスクラッチとかでエディタで書いてそのままエディタ開いた状態でそこに結果を直ぐ反映させられるからへんなスクリプトより簡単だし見てるファイルに直接つかって失敗したらそのままC-zでUndoできちゃう。何コレ失敗がありえないみたいな超簡単。それも別にそんな巨大ファイルじゃなきゃ重かろうがなんだろうがそれで書きゃ動くし凄いライトだと思うんだ。


なんかEmacsEmacsen使ってないユーザーには勘違いされて凄い重厚そうなものと思われてるみたいだけど、実際そんな重厚そうなのは一部のスパーハカーだけで、普通の人はもっとふわっとした感じで使ってると思うんだよ。てか楽だから使ってる以外何者でもないし。Emacsバインド自体が汎用性が高くてはっきりいってviより学習コストも低いでしょ。shellとか使ってたって何使ってもだいたいEmacsキーバインド通るからね。つまりOSがunixだろうがlinuxだろうがmacだろうがみんな大体Emacsキーバインドが通るってわけでWindows以外のキーバインドでは最も汎用性が高いキー設定の一つで一つ覚えたらみんな同じのが使える。OSまたぐっていう意味ではWindowsよりもユニバーサルかもしれない。キーバインドとかの学習コストは相当低い部類だと思う。そもそもlisp自体がただのマクロじゃなくて言語なので覚えて無駄になるわけでもないしlispが消え去る事もまず考えられない。javascriptも似たようなところはあるけど、仕様や使われ方が結構変わる過渡期の言語だから、今覚えたことがほぼ使えない環境になる可能性ってのは結構あると思う。

結局基本性能

 AtomだとかSublimeTextだとかいっても結局最後に重要なのは基本性能。ぶっちゃけ色が変わってうれしいとかはどれも程度の差はあれみんなできるわけで、最後の所は立ち上がる起動速度とかファイルを開く速度とか置換する速度とかがイライラしないかが凄い大事だと思う。そういう意味じゃemacsは機能に対して十分すぎるほど洗練されている。昔は遅いといわれてたらしいけど今時のエディタなんてそれをいったらクソ重いことになってしまう。emacsはもはや十分すぎるほど軽く、十分すぎるほど速い。そしてイライラするほどの致命的な速度の問題はない。でもxyzzyの方がもっと早い。時にWindows上でファイルを開いたり閉じたりするのは本当にxyzzy早い。

でもこういうのは一度してしまうと移行するのが面倒なので、はじめっからviかemacsに専念するべきだと思う。特にemacsばかり使うのが結局楽だと思う。viに行くとキーバインドで余程使い込まないと体得できないのでそのへんはemacsの方が指が楽。アタマの方はlisp覚えるのでややviより苦しいがタイプで分けたほうがいいと思う。でも学生とかなら悪い事はいわないからそのどちらかで慣れておけば何かと都合がいいと思う。windows以外のにも慣れれるし一度体得するとwindows上でも絶対使いたくなる。しかも長い目でみたら学習コストも安い。他の奴は乗り換えるたびに覚えるハメになるし設定を何度も繰り返すのは意味がない。かといって設定ができもしないカスタマイズもないような奴じゃ使いやすくないというジレンマ。だから継続性があってカスタマイズはできるっていうと必然的にvimemacsしかない。特に学生なら余計なのやるくらいなら徹底してemacsかviにした方がいい。時間の関係もあって後からじゃこの二つはほぼほぼ体得できない。悪い事いわないから本当にemacsかviにした方がいい。

追記:ただしviの場合は別の問題点もあって、viのキーバインドになれるとむしろvi以外が使いにくくなる。emacsもやや似たような傾向はあるが、viほど酷い症状はない。あとIDE使うからっていう人もいるけどIDEも大体有名なやつはEmacsやviのキー配置にできたりするので、その類の方面では実はそれほど困らない。

基本性能以外で重要だとしたら既にかいた継続性と拡張性能とか。Emacsなんかは拡張性だけで生き延びている気がする。特殊な環境でしか存在しない奴もだめ。そういう意味じゃメモ帳くらいの一般性があるのが最も望ましいと思うけど、流石にメモ帳は機能がなさ杉。短期的に見た場合と違って継続的に見た場合、数年したら開発が止まって凄い不便みたいな流れもある。拡張機能がないのも直ぐに陳腐かしてまた別の新しい環境を設定してみたいな流れになって結局時間を取りまくる。昔はやったあのエディタ。あのIDE。でも結局今から見て残ってるのはemacsやvi。変な環境の学習に時間かけるならむしろ言語を覚えた方がマシだけど、直ぐに廃れる流行のプログラミング言語とかVBとかみたいな前例もあるから言語としてみてもlispはそんな悪くないんだよね。