はてなキーワード: Emacsとは
Vimを使っている開発者が、pythonコードのインデントをスペース2として書いていた
他の開発者はpep8に従っているのでインデントはスペース4である
Emacsでは、tabを押せば即座にスペース4として補完されるのでタイプ数が増えるということはない
ところがこのVim利用者はスペースを2連打して入力していたようである
コーディングスタイルは、原則としてグローバルスタンダードとなっているものを採用した方が良い
pythonであればpep8を使えば、他のコードとの整合性もとれる
もし他の開発者が「スペース2のほうが生産性が高い」というなら、tab一回の入力で補完されるような環境設定を推奨すべきである
つまり、コードブロックを視認するためには4ぐらいの幅があったほうが見やすいということだ
学生時代にエディタ戦争というものを知って、vimかemacsかということで、ストールマン先生を信じてemacsを使い続けてきた
基本的なキーバインドは熟知しているので生産性は高いし、lispでカスタマイズする方法も知っている
だがvscodeを布教する連中が現れてから「そろそろ俺も老害か?」と思うようになってきた
しかしリーナス・トーバルズも、Matzも、デイブ・トーマスも、グイドヴァンロッサムも、DHHも、ビャーネ・ストロヴストルップもEmacsユーザーである
サーバサイドにemacs-noxが入ってない時は仕方なくviを起動するが、開発は常にemacsを使う
今でこそWindowsでも全く問題なく開発できるけど、ちょっと前は「Macのが開発体験が良い」と言われていた。
具体的には2011~2015年あたり。
2013年のころ、俺はWindowsで開発していた。WSL2なんてものは当たり前に存在しない時代だ。
たとえばC言語を使いたい場合、MinGWとMSYSを使ってこんなかんじで必要なものにチェックマークをしてインストールしていた。
まちがえた。俺が使っていたのはCygwinだ。こんなかんじでインストールする。
「パスを通す」とか言われていた時代だ。今ではインストーラがほとんどやってくれる。
Windowsのコマンドプロンプトがアホほど役に立たないので、msysCygwinのコンソールを使うのだ。
Pythonのインストールにもパスを通していた時代だった。当時はまだ2系が主流で、卒論を書く際、大学の教授から「3系は使ってもいいけど、俺は知らないからサポートできない」と言われた。
Scipyはインストールしなければ使えなかったので、「python scipy インストール」で検索して出てきた記事を参考にしてインストールしていた。これがまたエラーの連続だった。
プログラムを開発するエディタも、vim、emacsがまず候補に上がった。どちらも癖のあるエディタなので、そういうのが嫌な人はサクラエディタが推奨されていた。そして少しして登場するAtomに感動したのだ。今ではあたりまえのようにVSCodeがある。
ちなみに俺はPythonの開発ではIDLEというのを使っていた。知ってる?こんなの。
そんなWindowsユーザーを少し煽るような(Winユーザが自虐するような)、「プログラミングするならMac」という風潮があったと記憶している。そこから「どうやらMacはUnix系で、コンソール操作が簡単らしい」「文字がきれい」「Windowsでは定期実行するためのcronすらないが、Macにはある」「xcodeというのがあるからめちゃくちゃプログラミングがラクらしい」みたいなイメージがあった。
今ではWindowsも随分便利になったし、IDEやインストーラがなんでもしてくれるようになった。今では結論、「どっちでも好きなほうを使えばいい」という良い環境になった。
プログラマーの三代美徳は、怠惰でもなければ傲慢でもない。本能、感情、混乱である。
本能とは、モチベーションの本質的部分である。エロいdeepfakeを作りたい、頭よく見られたい、金儲けしたいといった動機によってプログラマーは手を動かす。
本能がなければドーパミンも存在しない。コードを書く誘因は本能的衝動によって生み出されている。
感情とは、要するに好き嫌いのことだ。たくさんの経験を積み重ねてセンスを獲得するには、好き嫌いに敏感でなければならない。
なぜvscodeがクソで、emacsが素晴らしいのか。なぜマイクロサービスアーキテクチャに強い疑念があるのか。なぜベンダーロックインが金の浪費に繋がるのか。
そういったことは、経験から学び、そして感情という次元に落とし込まれる。感情は少数の次元で美的感覚を得るための優れたセンサーである。
混乱とは、人生である。混乱したことのないものはエントロピーを操ることはできない。
コードは常にエントロピー増大の法則に晒されている。高エントロピーの乱雑的コードを読んで混乱したことがなければ、リファクタリングもできないだろう。
私、emacsって知ったのってエディタ戦争を知ってからで、専門学校の1年生の頃だったかなぁ。
秀丸とかしか知らなかったから、emacsやvimっていうのを知って、なんだかワクワクしちゃったんだよね。
Andy Huntさんもエディタに詳しくなれって言ってるし、カスタムキーバインドやオートコンプリートでめっちゃ効率アップできるって聞いて、自分も試しにやってみたんだよ。
結局、私にはemacsが一番しっくりきて、emacs lispも勉強して、エディタを自分好みにカスタマイズする方法を覚えたんだけど、他の人が作った可愛い.elライブラリを使うことが多かったな。
bashも最初からemacsキーバインドを使ってるし、覚えておいて超便利だったよ。
最終的にはemacsを常に立ち上げて、開発やメール、TODO管理も全部emacsでやっちゃうようになったんだけど、でもff14はやっぱりemacsじゃできなかった(笑)。
ストールマン先生がペド疑惑で騒動になったりして、ちょっと混乱した時期もあったけど、それでもemacsをやめるってことはなかったな。
まあ、とにかく小指がちょっと痛いんだよねぇ。
そもそもあの脚ってキートップを見やすくするために付けられてた
つまりはタッチタイピングできない人のために見やすくする理由で作られていて
打ちやすさは手前は平面、奥が少し盛り上がる状態が一番負担が少ない
これは「人による」みたいなことはなくて、人間はそういう風に出来ている
特にカーソル移動をするときにFnを使って矢印キーを押す人が多いが
EmacsならC-nやC-pを使うし、Vimならjやkを使う
なので矢印キーなんて(ホームポジションから遠いし)使わないよね、という思想の元作られている
他にもBackSpaceはC-hなのでDeleteになっているしF1とかF2とかは使わないというのが前提
「うるさい俺は矢印キーを使いたいんだ」
という人はRealforce使えばいいのであってHHKBである必要は全く無い
まぁHHKBの大きな思想に持ち運べる馬の鞍思想があるので、持ち運ぶために使うけど矢印キーを使いたい、という人は一定数いると思うけど
QWERTY配列の理由はよく使うキーを中心に構成されているとか
タイプライターが壊れないようにわざとバラしてあるだとか言われているが
本当に押しやすいとかタイピングが早くなるような配列はちゃんと研究されているし
例えば日本語なら親指シフトが最も良いなんていうのも昔はあったんだが
結局のところ毎秒3キー押せるのが3.5キーになったところで意味は無いし
それよりも共通認識として広まっているQWERTY配列でいいじゃん、となって現在に至る
打ち間違えるためだけに存在してそうなNum Lockキーだが
数字を打ち込むときにテンキーがあるのとないのでは大違いで圧倒的にテンキーの方が速い
一方でノートPCではテンキーを置く場所をケチりがちなので無理矢理Num Lockキーを使ってキーボードの一部をテンキーにしている
斜めになっているのでテンキーとは打ち方が変わってしまうが、それでも使いこなせば数字を打ち込むのがめちゃくちゃ速くなる
ただ、ほとんどの場合は外付けのテンキーを使ってる気もするのでやっぱりいらないかもしれない
余談だがテンキーのあるキーボードのNum Lock機能は矢印キーとテンキーを切り替えるもので
昔のゲームなんかはテンキーを使って上下左右をコントロールしていたのだが
その場合はそもそもゲーム自体がテンキーによる入力で上下左右に動けていたので
そしてWASDキーによる移動が主流になって完全に廃れた
絶滅危惧種となりつつあるHome End PageDown PageUpだが
PageDownとPageUpはそれなりに使い方が知られているとして
HomeとEndが行頭・行末への移動だと知っている人は意外と少ない
文章を打っていて行頭に戻りたければHomeを押せばいいし、行末ならEndでよい
マウスでカーソル移動する必要はなくて便利なのだが恐らく大半の人はマウスで移動しているのと
Emacsキーバインドプログラマーとコンソールを触る人はC-aとC-eで代用できるので