Page 1
Emacs最前線
Emacs front line
pixiv Inc.
USAMI Kenta
2023-02-01 TechFeed Experts Night #12
公開日:
by USAMI Kenta@tadsan
にオンラインのYouTube Liveで開催された『TechFeed Experts Night#12 〜 【VSCode, Vim, Emacs】エンジニア向けエディタ最新動向!』で8分枠として発表しました。
2023-02-01 TechFeed Experts Night #12
お前誰よ
Emacsの本質とは何か
A modern Lisp machine
そういう機械が40年以上前にあった
「Multi-Paradigm Language TAO」より引用https://www.nue.org/nue/tao/bitao/s001.html
この写真は国産LISPマシンのELISなので本家Emacsの開発経緯とは直接関係ないのだが内蔵されたZENというEmacs風独自エディタの日本語入力メソッドKanzenが後のSKKに繋がりIME史に影響を及ぼしている
AIならLisp CGならLisp
そういう時代もあった(らしい)
みなさんご存じ(ない)通りLISPマシンのような高級言語専用マシンは廃れている
199X年、世界は核の炎に包まれた。海は枯れ、地は裂け、全ての生物が死滅したかのように見えた。
だが、Lispは死滅していなかった!
元祖EmacsはTECOというエディタの拡張マクロ集(EditorMACroS)
現代一般に“Emacs”と呼ばれるのは1985年に発表されたGNU Emacs
かつてGNU Emacsは「伽藍とバザール」と例えられた
現代でもGitHubやGitLabではなくMLで開発されているが、パッチを投げたら気軽に取り込んでくれる雰囲気
むかしは歴史的経緯でサードパーティのリポジトリを追加しなければPHPサポートできなかった
スクリプトで拡張できるテキストエディタの元祖
コードベースの60%はLisp
EmacsコアはC言語で書かれているが割合は15%に過ぎない
(大言壮語ではなく)あらゆるものをユーザーがカスタマイズできるエディタ
Emacsの設定はinit.elというファイルに記述する
エディタの実装言語とユーザーのカスタマイズ言語が同じ
ハッカーになりたくありませんか
「普通のやつらの上を行け ---Beating the Averages---」より引用http://practical-scheme.net/trans/beating-the-averages-j.html
「普通のやつらの上を行け ---Beating the Averages---」より引用http://practical-scheme.net/trans/beating-the-averages-j.html
「普通のやつらの上を行け ---Beating the Averages---」より引用http://practical-scheme.net/trans/beating-the-averages-j.html
ということをYコンビネータ創始者のポールグレアムが言ってる
(viawebで使っていたのはCommon Lispだよというツッコミは躱しつつ)
ハッカーになりたければEmacs
Emacs Lispも同じパワーを持ってる(70%くらい[要出典])
えっじゃあ現代にEmacsを使うのはハッカーワナビだけなの
そうだよ違います
エディタにはパワーがある
実行時にあらゆるものを再定義できる最強の動的言語ランタイム
危険な再定義をせずにhookという仕組みで容易にカスタマイズできる設計が浸透している
ユーザーがinit.elを記述することで完成するフレームワーク
init.elに書かなくてもコードを書き換えてEmacsの再起動なしに挙動を変更できる
あらゆるものをカスタマイズしたければEmacs
C言語を知らなくてもLispがわかればカスタマイズできる!!!
メーラーでもありRSSリーダーでもありEPUBやPDFも読める
エディタとして使いにくい?
思考の速度で編集したければEvilが使える
(私も翻訳のお手伝いをしました)
カスタマイズがめんどくさい?
Emacsは動的言語インタプリタでもあるのでGILからは逃れられない
Emacs28ではLispをネイティブコンパイルできるようになった
Lispで言語ごとの開発環境を実装し続けるの大変
言語とEmacsLisp両方わかるひとがメンテし続けないといけない
動的言語Lispで重厚な処理をすると重い
重い関数はC言語などで実装してダイナミックモジュール化
Emacs 29ではTree-sitterベースの言語モードを導入
問題意識を持って高速な非同期UIを実装している人も居る
コンピュータサイエンスの問題に立ち向かって最強の環境を作りたい人はEmacsを
(不定期にオンラインミートアップもやってるよ)
