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分枠として発表しました。
Emacs最前線
Emacs front line
pixiv Inc.
USAMI Kenta
2023-02-01
TechFeed Experts Night #12
お前誰よ
私の立ち位置
さて
Vimはいいぞ!
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
元祖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という仕組みで 容易にカスタマイズ
できる設計が浸透している
Emacsは未完成品
ユーザーがinit.elを
記述することで完成する
フレームワーク
init.elに書かなくても
コードを書き換えて
Emacsの再起動なしに
挙動を変更できる
あらゆるものを
カスタマイズしたければ
Emacs
C言語を知らなくても
Lispがわかれば
カスタマイズできる!!!
さて
Emacsはなんでもできる
メーラーでもあり
RSSリーダーでもあり EPUBやPDFも読める
エディタとして
使いにくい?
思考の速度で編集
したければEvilが使える
(私も翻訳の
お手伝いをしました)
カスタマイズが めんどくさい?
Emacs vs 重力
Emacsは動的言語インタ
プリタでもあるので
GILからは逃れられない
Emacs28では
Lispをネイティブコンパ イルできるようになった
Lispで言語ごとの
開発環境を
実装し続けるの大変
言語とEmacsLisp
両方わかるひとが
メンテし続けないと
いけない
動的言語Lispで
重厚な処理を
すると重い
重い関数は
C言語などで実装して
ダイナミックモジュール化
Emacs 29では
Tree-sitterベースの
言語モードを導入
問題意識を持って 高速な非同期UIを
実装している人も居る
コンピュータサイエンス
の問題に立ち向かって
最強の環境を作りたい人
はEmacsを
コミュニティは
Emacs JPのSlackに (不定期にオンラインミートアップも
やってるよ)