SlideShare una empresa de Scribd logo
1 de 32
Descargar para leer sin conexión
暗黒美夢王とEmacs 
〜なぜ暗黒美夢王はVimを 
選んだのか〜
自己紹介だ、フハハハハハ 
● 我が名は Shougo、いや暗黒美夢王(ダークビム 
マスター) 
● Vim を闇の力で魔改造する活動を日々行っている 
● 今回は久しぶりの Emacs 勉強会だということ 
で、盛り上げに参上した 
● Emacs の知識はそれなりにある
注意だ、フハハハハハ 
● この発表には Vim の話が多いかもしれない 
● Emacs を馬鹿にする意図はないので勘違いしな 
いで欲しい 
● 我は Emacs のことを尊敬しており、よきライバ 
ルだと思っている 
● Emacs 界隈が元気になってほしいため、発表す 
ることにした
さて…… 
● 闇の活動を続けていると、よくこのような質問 
を受ける 
● 「なんで暗黒美夢王はEmacsを使わないんです 
か」 
● 今回は我が Vim を選んだ理由を解説する 
● Emacs 勉強会でな!
Emacs との出会い 
● 自分がテキストエディタに興味を持ったのは 
Windows 環境で 
● Emacs は非常に使いにくく、情報がなかった 
● 下手に他のエディタと操作性が近いので、その利 
点をあまり認識できなかった 
● xyzzy も試したが慣れない……
Linux を使うようになり…… 
● Linux では Emacs が使いやすかったので 
認識を改める 
● しかし、もう Vim に慣れた後では乗り換える 
気にならず
Windows での使いやすさ 
● 宗教上の理由により Windows で開発しなければいけない 
ことがある 
● Vim は Windows でもまともに動く 
● 日本の Vim パッチ職人にはなぜか(?) Windows メイ 
ンの人が多い 
● Emacs は昔よりはマシになったとはいえ、Windows で 
使うには苦労が多い 
● Emacs を Mac で使うのも辛いと風のうわさで……
機能がなければ追加すれば? 
● Vim plugin で大抵の機能は実現できる 
● もしものときはソースコードを変更すればよい 
● Vim のソースコードをいじるのは大変だが、 
慣れは怖いものである 
● Vim script を書くのは苦痛? 
● 我は毎日 Vim script を書いているが……
情報の豊富さ 
● チュートリアルを覚えた後が問題 
● Vim は豊富な情報があるので書籍に頼らずと 
も自分で勉強できる 
● Emacs は情報が分散しており、書籍に頼ら 
ない独学は難しい(個人の感想)
優れた組み込み機能 
● 補完ウインドウ 
● タブ 
● スペルチェック 
● Quick Fix 
● シンタックスハイライト 
● など…… 
● 組み込み機能は Vim plugin からいじりづらいのが欠点 
● Emacs は組み込み機能よりも Emacs Lisp による拡張を重視
プラグインを失うのが辛い 
● Vim に足りないプラグインはほとんど自分で 
書いてしまった 
● Emacs に移行すると、これを失うのがつら 
すぎる 
● Emacs 環境での代替物は不完全
優れた互換性 
● 10 年前のプラグインが動作する 
● Vim の互換性に対する安心感は異常 
● レガシーを抱え込む欠点もある
おまけ 
Emacsがこの先 
生き残るには
時はエディタ戦国時代 
● IDE や他のテキストエディタとの競争は激しさを増す 
● これまで生き残ってきたEmacs や Vim といえども、戦わな 
ければ生き残れない 
● 「オープンソースだから」、「これまで生き残ってきたから」楽 
観視するのは甘い 
● しかし日本の Emacs 界には元気がない…… 
● Emacs の新規参入者は Vim から 
● evil-mode がなぜか重宝される
そこで…… 
● 本当に Emacs に元気がないのか、具体的な 
データを用いて検証しよう
例:Google での検索数
例:Google での検索トレンド
例:日本での検索トレンド
例:IDEの脅威
例:IDEの脅威(2)
例:エディタ戦争(日本)
例:Emacsバリアントの現状(日本)
例:vim-jpとemacs-jp
例:Issues
例:lingr
例:reddit でのユーザー数
Emacs界に足りないものとは 
● モード? 
● RPC? 
● 互換性? 
● タブ? 
● 否!
Emacs界に足りないものとは 
愛
愛に満ち溢れた行動例 
● 我が Emacs だ! 
● Twitter でつぶやくのは常に Emacs のこと 
● 脳内で Emacs を実行できる 
● 日常を Emacs に変換する 
● 周囲から Emacs 扱いされる 
● 勉強会では Emacs の歌を歌い出す 
● Ask.fm での質問を Emacs に関する質問に変換する
愛に満ち溢れた行動例 
● Kernel/VM 勉強会で「EmacsはVMだ」 
と主張する 
● Emacs で動作するバイナリエディタを作成 
し、x86 勉強会に殴りこみをかける
愛、そして…… 
● 「そうか、私は Emacs を愛していたのか」 
● 「おれは人間をやめるぞーー!!」 
● キミは暗黒威魔苦素王(ダークイーマックスマ 
スター)として覚醒する
おわりに 
● 暗黒威魔苦素王(ダークイーマックスマス 
ター)の登場を我は待ち望んでいる 
● 闇の力で Emacs を変えるのだ

Más contenido relacionado

La actualidad más candente

闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみた
Satoshi Sato
 

La actualidad más candente (20)

C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22Effective Modern C++ 勉強会 Item 22
Effective Modern C++ 勉強会 Item 22
 
GoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホンGoによるWebアプリ開発のキホン
GoによるWebアプリ開発のキホン
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみた
 
非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎
 
CTFとは
CTFとはCTFとは
CTFとは
 
C/C++プログラマのための開発ツール
C/C++プログラマのための開発ツールC/C++プログラマのための開発ツール
C/C++プログラマのための開発ツール
 
いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング雑なMySQLパフォーマンスチューニング
雑なMySQLパフォーマンスチューニング
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
 
llvm入門
llvm入門llvm入門
llvm入門
 
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
 
技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine技術紹介: S2E: Selective Symbolic Execution Engine
技術紹介: S2E: Selective Symbolic Execution Engine
 
Unite vim
Unite vim Unite vim
Unite vim
 
Kotlin/Native 「使ってみた」の一歩先へ
Kotlin/Native 「使ってみた」の一歩先へKotlin/Native 「使ってみた」の一歩先へ
Kotlin/Native 「使ってみた」の一歩先へ
 

Más de Shougo

Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovim
Shougo
 
Vim = VM
Vim = VMVim = VM
Vim = VM
Shougo
 

Más de Shougo (12)

Vim conf2019
Vim conf2019Vim conf2019
Vim conf2019
 
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017Neosnippet.vim + Deoppet.nvim in Vim conf 2017
Neosnippet.vim + Deoppet.nvim in Vim conf 2017
 
カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタ
 
deoplete: The dark powered auto completion plugin for neovim
deoplete: The dark powered auto completion plugin for neovimdeoplete: The dark powered auto completion plugin for neovim
deoplete: The dark powered auto completion plugin for neovim
 
Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovim
 
neovim = VM
neovim = VMneovim = VM
neovim = VM
 
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocomplete
 
neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけ
 
Shougoの開発環境
Shougoの開発環境Shougoの開発環境
Shougoの開発環境
 
Vim = VM
Vim = VMVim = VM
Vim = VM
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environment
 
Ultimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vimUltimate completion environment with neocomplcache in vim
Ultimate completion environment with neocomplcache in vim
 

暗黒美夢王とEmacs