Skip to content

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に

(不定期にオンラインミートアップもやってるよ)