SlideShare a Scribd company logo
1 of 32
Download to read offline
暗黒美夢王と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 を変えるのだ

More Related Content

What's hot

Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築gree_tech
 
SQLアンチパターン読書会 第10章 サーティワンフレーバー
SQLアンチパターン読書会 第10章 サーティワンフレーバーSQLアンチパターン読書会 第10章 サーティワンフレーバー
SQLアンチパターン読書会 第10章 サーティワンフレーバーtkfuji
 
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜UnityTechnologiesJapan002
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについてkumake
 
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装uchan_nos
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みChihiro Ito
 
UniTask入門
UniTask入門UniTask入門
UniTask入門torisoup
 
Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1cohama
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMPYusuke Kagata
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方Shohei Koyama
 
Unicode文字列処理
Unicode文字列処理Unicode文字列処理
Unicode文字列処理信之 岩永
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチンyohhoy
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発Takafumi ONAKA
 
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)Ken Morishita
 
WebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみたWebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみたonozaty
 
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること信之 岩永
 
Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門Satoshi Kubo
 
async/await のしくみ
async/await のしくみasync/await のしくみ
async/await のしくみ信之 岩永
 

What's hot (20)

Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
 
Mavenの真実とウソ
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
 
SQLアンチパターン読書会 第10章 サーティワンフレーバー
SQLアンチパターン読書会 第10章 サーティワンフレーバーSQLアンチパターン読書会 第10章 サーティワンフレーバー
SQLアンチパターン読書会 第10章 サーティワンフレーバー
 
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
C#×LLVM=アセンブラ!? 〜詳説・Burstコンパイラー〜
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
日本語テストメソッドについて
日本語テストメソッドについて日本語テストメソッドについて
日本語テストメソッドについて
 
自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装自動でバグを見つける!プログラム解析と動的バイナリ計装
自動でバグを見つける!プログラム解析と動的バイナリ計装
 
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組みJavaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 
Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1Vim script と vimrc の正しい書き方@nagoya.vim #1
Vim script と vimrc の正しい書き方@nagoya.vim #1
 
テストコードの DRY と DAMP
テストコードの DRY と DAMPテストコードの DRY と DAMP
テストコードの DRY と DAMP
 
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
 
Unicode文字列処理
Unicode文字列処理Unicode文字列処理
Unicode文字列処理
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
 
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
 
WebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみたWebSocketでカメラの映像を共有してみた
WebSocketでカメラの映像を共有してみた
 
C#や.NET Frameworkがやっていること
C#や.NET FrameworkがやっていることC#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
 
Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門Junitを使ったjavaのテスト入門
Junitを使ったjavaのテスト入門
 
async/await のしくみ
async/await のしくみasync/await のしくみ
async/await のしくみ
 

More from Shougo

Vim conf2019
Vim conf2019Vim conf2019
Vim conf2019Shougo
 
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 2017Shougo
 
カードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタカードゲームで学ぶテキストエディタ
カードゲームで学ぶテキストエディタShougo
 
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 neovimShougo
 
Let's talk about neovim
Let's talk about neovimLet's talk about neovim
Let's talk about neovimShougo
 
neovim = VM
neovim = VMneovim = VM
neovim = VMShougo
 
An introduction to neocomplete
An introduction to neocompleteAn introduction to neocomplete
An introduction to neocompleteShougo
 
neobundle.vimについて+おまけ
neobundle.vimについて+おまけneobundle.vimについて+おまけ
neobundle.vimについて+おまけShougo
 
Vim = VM
Vim = VMVim = VM
Vim = VMShougo
 
modern X86 environment
modern X86 environmentmodern X86 environment
modern X86 environmentShougo
 
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 vimShougo
 

More from Shougo (11)

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について+おまけ
 
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