Emacs最前線

公開日:

オンラインYouTube Liveで開催された『TechFeed Experts Night#12 〜 【VSCode, Vim, Emacs】エンジニア向けエディタ最新動向!』で8分枠として発表しました。

Download PDF

スライドテキスト

Page 1

Emacs最前線

Emacs front line

pixiv Inc.
USAMI Kenta

2023-02-01

TechFeed Experts Night #12

Page 2

お前誰よ

  • うさみけんた (@tadsan) / Zonu.EXE / にゃんだーすわん
  • ピクシブ株式会社 pixiv事業本部 エンジニア
    • 最近はピクシブ百科事典(dic.pixiv.net)を開発しています
  • Emacs Lisper, PHPer
    • Emacs PHP Modeを開発しています (2017年-)
  • TechFeed公認PHPエキスパート

Page 3

Page 4

Page 5

私の立ち位置

Page 6

Page 7

さて

Page 8

Vimはいいぞ!

Page 9

Page 10

Emacsの
本質とは何か

Page 11

A modern
Lisp machine

Page 12

Page 13

そういう機械が
40年以上前にあった

Page 14

「Multi-Paradigm Language TAO」より引用

https://www.nue.org/nue/tao/bitao/s001.html

Page 15

この写真は国産LISPマシンのELIS なので本家Emacsの開発経緯とは直 接関係ないのだが内蔵されたZENと いうEmacs風独自エディタの日本語 入力メソッドKanzenが後のSKKに 繋がりIME史に影響を及ぼしている

Page 16

それは置いといて

Page 17

AIならLisp CGならLisp

Page 18

そういう時代もあった
(らしい)

Page 19

みなさんご存じ 通り

(ない)

LISPマシンのような 高級言語専用マシンは
廃れている

Page 20

199X年、世界は核の炎に 包まれた。海は枯れ、地は 裂け、全ての生物が死滅し
たかのように見えた。

Page 21

だが、Lispは
死滅していなかった!

Page 22

世紀末救世主伝説Emacs

Page 23

元祖Emacsは
TECOというエディタの
拡張マクロ集

(EditorMACroS)

Page 24

なんだかんだありまして

Page 25

Page 26

現代一般に“Emacs”と 呼ばれるのは1985年に 発表されたGNU Emacs

Page 27

かつてGNU Emacsは
「伽藍とバザール」
と例えられた

Page 28

現代でもGitHubやGitLab ではなくMLで開発されてい るが、パッチを投げたら気軽 に取り込んでくれる雰囲気

Page 29

むかしは歴史的経緯で
サードパーティのリポジト
リを追加しなければ
PHPサポートできなかった

Page 30

スクリプトで拡張できる テキストエディタの元祖

Page 31

現代でも健在

Page 32

Page 33

Page 34

コードベースの
60%はLisp

Page 35

EmacsコアはC言語で
書かれているが
割合は15%に過ぎない

Page 36

(大言壮語ではなく)
あらゆるものをユーザー
がカスタマイズできる
エディタ

Page 37

Emacsの設定は
init.elというファイルに
記述する

Page 38

エディタの実装言語と
ユーザーのカスタマイズ
言語が同じ

Page 39

ところで皆さん

Page 40

ハッカーになりたく
ありませんか

Page 41

「普通のやつらの上を行け ---Beating the Averages---」より引用

http://practical-scheme.net/trans/beating-the-averages-j.html

Page 42

「普通のやつらの上を行け ---Beating the Averages---」より引用

http://practical-scheme.net/trans/beating-the-averages-j.html

Page 43

言語にはパワーがある

Page 44

「普通のやつらの上を行け ---Beating the Averages---」より引用

http://practical-scheme.net/trans/beating-the-averages-j.html

Page 45

ということを
Yコンビネータ創始者の
ポールグレアムが
言ってる

Page 46

(viawebで使っていたの はCommon Lispだよと いうツッコミは躱しつつ)

Page 47

ハッカーになりたければ

Emacs

Page 48

Emacs Lispも
同じパワーを持ってる
(70%くらい )

[要出典]

Page 49

えっじゃあ
現代にEmacsを使うのは ハッカーワナビだけなの

Page 50

そうだよ

Page 51

そうだよ 違います

Page 52

エディタには パワーがある

Page 53

実行時にあらゆるものを
再定義できる
最強の動的言語ランタイム

Page 54

危険な再定義をせずに hookという仕組みで 容易にカスタマイズ
できる設計が浸透している

Page 55

Emacsは未完成品

Page 56

ユーザーがinit.elを
記述することで完成する
フレームワーク

Page 57

init.elに書かなくても
コードを書き換えて
Emacsの再起動なしに
挙動を変更できる

Page 58

あらゆるものを
カスタマイズしたければ

Emacs

Page 59

C言語を知らなくても
Lispがわかれば
カスタマイズできる!!!

Page 60

さて

Page 61

Emacsはなんでもできる

Page 62

メーラーでもあり
RSSリーダーでもあり EPUBやPDFも読める

Page 63

エディタとして
使いにくい?

Page 64

Page 65

Page 66

思考の速度で編集
したければEvilが使える

Page 67

Page 68

(私も翻訳の
お手伝いをしました)

Page 69

Page 70

カスタマイズが めんどくさい?

Page 71

Page 72

Emacs vs 重力

Page 73

Emacsは動的言語インタ
プリタでもあるので
GILからは逃れられない

Page 74

Emacs28では
Lispをネイティブコンパ イルできるようになった

Page 75

Lispで言語ごとの
開発環境を
実装し続けるの大変

Page 76

言語とEmacsLisp
両方わかるひとが
メンテし続けないと
いけない

Page 77

動的言語Lispで
重厚な処理を
すると重い

Page 78

重い関数は
C言語などで実装して
ダイナミックモジュール化

Page 79

Emacs 29では
Tree-sitterベースの
言語モードを導入

Page 80

問題意識を持って 高速な非同期UIを
実装している人も居る

Page 81

Page 82

Page 83

Page 84

コンピュータサイエンス
の問題に立ち向かって
最強の環境を作りたい人
はEmacsを

Page 85

コミュニティは
Emacs JPのSlackに (不定期にオンラインミートアップも
やってるよ)