SlideShare a Scribd company logo
かなりすごい発表(かなり) 
supermomonga
自己紹介
supermomonga
supermomonga 
http://blog.supermomonga.com 
twitter.com/supermomonga 
github.com/supermomonga
supermomonga 
フリーランスでRailsとかやってる
作ったプラグインの紹介
作ったプラグイン 
(1/2) 
音や通知に関するものが多め 
- Shaberu.vim 
… 
- jazzradio.vim 
… 
- skyfm.vim 
… 
- mplayer.vim 
… 
- ThingsPast.vim 
… 
Vimがしゃべるやつ(音声合成) 
Vimでジャズが聴ける(ネットラジオ) 
Skyrimではないやつ(Skyrimではない) 
mplayerを操作するライブラリ(未公開) 
通知センター(Mac OS X inspired)
作ったプラグイン 
(2/2) 
VimShellの拡張プラグインもある 
- vimshell-inline-history 
- vimshell-kawaii 
- vimshell-wakeup 
- vimshell-pure 
… 
… 
… 
… 
VimShellが便利になるやつ 
VimShellがかわいくなるやつ 
VimShellが便利になるやつ 
VimShellが便利になるやつ
おわり(おわり)
今日のテーマ
Vimは音でもっと便利になる 
Sound makes vim more benrily 
(Vimが便利である様子)
どういうことか
「通知」に関する例
我々がプログラミングをしている時 
身体のI/Oはどうなっているでしょうか
インプット 
アウトプット 
= ディスプレイ => 両目 
= 両手 => キーボード
両手と両目をフル稼働させている
これは両手と両目をフル稼働させている人です
このとき
もっと多くの情報を 
Vimから得たいとしたら?
例えば「通知」
For example 
- TweetVim … リプライやDMなどの受信を通知 
- J6uil.vim … チャットルームでの新規発言を通知 
- Watchdogs … RSpecを実行して、エラーがあれば通知 
- VimShell … git clone などの時間がかかるコマンドの終了を通知
そこで
「通知」を一元管理するプラグイン 
「ThingsPast.vim」をつくった
ThingsPast とは
Mac OS Xの「通知センター」を 
Vim内で再現するプラグイン
Mac OS X 通知センター
Mac OS X 通知センター
Mac OS X 通知センター
ThingsPast.vim
ThingsPast.vim
やっていること 
各プラグインのhookを利用して 
ThingsPastに通知を流し込んでいる
やっていること 
この時、通知オブジェクトにcallback関数を 
持たせることができるので、通知選択時に 
任意の処理を実行可能
たとえば 
「J6uilからの”新規発言受信”の通知」を 
ThingsPast上で選択(<CR>)すると 
J6uil.vimを起動
これによって 
通知の一元管理が実現
Vimで動くアプリケーションを開発する際 
通知関連の実装をThingsPastに丸投げできる 
(プラグイン側はhookを用意しておくだけ)
ユーザーは統一したインターフェイスで 
通知を閲覧し、通知元へ移動することができる
便利(かなり)
…
ここで問題が発生
我々はVimを使っている時 
両目をフル稼働させている
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014
かなりすごい発表(かなり) at VimConf2014
集中している時に 
いきなり画面を分割される!!
とてもよくない(とても)
もっと「静かに」通知させたい
もっと「静かに」通知させる方法…
通知センターの「バルーン通知」を、 
バッファにオーバーレイさせて実現する?
そうじゃない
そもそも
集中して視覚を活用してコード書いてる時に 
視覚のリソースを少しでも奪うのがダメ
そんなのは「静か」じゃない
そんなのは「静か」じゃない
そこで音です
脳に情報を入力できる器官は目だけじゃない
視覚のリソースが足りないなら 
聴覚のリソースを使えばいい
聴覚へ通知
=音で通知
=音声合成で通知
=Shaberu.vim
Shaberu.vim 
Vimプラグイン処女作 
音声合成エンジンのラッパーライブラリ
1. Shaberu.vimで音声通知 
2. 詳しく見たくなったらThingsPastペインを表示
これで視覚をいきなり遮られることがない!
(デモ) 
https://vimeo.com/111277527
かなり便利(かなり)
まとめます
今日、通知の話を用いて 
伝えたかったこと
聴覚というリソースをもっと活用しよう
おまけ
その他の 
Shaberu.vim活用例
autocmd
様々なautocmdと連動させることで 
Vimがすごいべんりになる
起動/終了時に進捗を促してくれる 
au MyAutoCmd VimEnter * ShaberuSay '進捗どうですか' 
au MyAutoCmd VimLeave * ShaberuSay '進捗どうですか'
vimshell-wakeup.vim
VimShellで「時間がかかるコマンド」の実行が終了 
したとき、音声で通知してくれるプラグイン
VimShellで「時間がかかるコマンド」の実行が終了 
したとき、音声で通知してくれるプラグイン 
・設定した秒数以上の時間がかかったコマンドが終了した時に発動 
 (herokuへのデプロイとか) 
・コマンド終了時、VimShellバッファを開いていた場合は自明なので発動しない 
・ただし、VimShellバッファを開いていても、Vim以外のアプリケーションがア 
クティブになっていた場合は発動
VimShellで「時間がかかるコマンド」の実行が終了 
したとき、音声で通知してくれるプラグイン 
VimShellの仕様上、通知されない場合がある(改善したい)
VimShell hooks
VimShellでは様々なタイミングに 
hook関数を呼ぶことができる
エラー発生時に音声で教えてくれる 
au MyAutoCmd FileType vimshell 
 call vimshell#hook#add( 
 'emptycmd', 
 'my_vimshell_emptycmd', 
 reti#lambda(":call shaberu#say('コマンドを入力してください') | return a:1")) 
au MyAutoCmd FileType vimshell 
 call vimshell#hook#add( 
 'notfound', 
 'my_vimshell_notfound', 
 reti#lambda(":call shaberu#say('コマンドが見つかりません') | return a:1"))
移動(cd)したときに 
「よっこいしょ」と喋る 
au MyAutoCmd FileType vimshell 
 call vimshell#hook#add( 
 ’chpwd’ , 
 ’my_vimshell_chpwd' , 
 reti#lambda(“:ShaberuSay 'よっこいしょ'"))
VimShell aliases
VimShellではコマンドエイリアスを 
定義することができる
time?コマンドで 
時間を教えてくれる 
call vimshell#set_alias( 
 ’time?’, 
 ’:call shaberu#say(strftime("はいっ。今は%H時%M分です"))')
lsを打ち間違えた(sl)ときに 
「きしゃぽっぽ」と喋る 
call vimshell#set_alias( 
 ’sl’, 
 ’:call shaberu#say("きしゃぽっぽ。きしゃぽっぽ。ぽぽ")')
…
とてもべんり(とても)
まとめ
Vimがしゃべると便利 
Vimがしゃべるとかわいい(重要)
Shaberu.vimは 
任意の音声合成エンジンを使用可能
OpenJTalkを使うとかなりかわいい(かなり)
もう一度言います
聴覚というリソースをもっと活用しよう
ありがとうございました 
イラスト: 
いらすとや (irasutoya.com) 
音声: 
OpenJTalk (mei voice)

More Related Content

What's hot (20)

暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacs
Shougo
 
Unite vim
Unite vim Unite vim
Unite vim
Shougo
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?
Masahiro Sano
 
Vim = VM
Vim = VMVim = VM
Vim = VM
Shougo
 
すごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりすごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつり
cohama
 
Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識
alwei
 
Vim の開発環境
Vim の開発環境Vim の開発環境
Vim の開発環境
eagletmt
 
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
deris0126
 
エディタ戦争
エディタ戦争エディタ戦争
エディタ戦争
Akira Hagiwara
 
anyframeを使おう
anyframeを使おうanyframeを使おう
anyframeを使おう
Hideaki Miyake
 
anyframeを使おう
anyframeを使おうanyframeを使おう
anyframeを使おう
Hideaki Miyake
 
VimとRubyのアツい関係
VimとRubyのアツい関係VimとRubyのアツい関係
VimとRubyのアツい関係
Misao X
 
Tdd vim
Tdd vimTdd vim
Tdd vim
Tak Nishikori
 
究極のディストリビューションUbuntu
究極のディストリビューションUbuntu究極のディストリビューションUbuntu
究極のディストリビューションUbuntu
Kenichi Takahashi
 
Vimの魔術
Vimの魔術Vimの魔術
Vimの魔術
Shuntaro Nishizawa
 
「とても小さいVim」vim tiny
「とても小さいVim」vim tiny「とても小さいVim」vim tiny
「とても小さいVim」vim tiny
gu4
 
X window managerで遊んでみた
X window managerで遊んでみたX window managerで遊んでみた
X window managerで遊んでみた
Masahiko Hashimoto
 
Ember.js導入
Ember.js導入Ember.js導入
Ember.js導入
teamcpaw
 
pecoを使おう
pecoを使おうpecoを使おう
pecoを使おう
Hideaki Miyake
 
暗黒美夢王とEmacs
暗黒美夢王とEmacs暗黒美夢王とEmacs
暗黒美夢王とEmacs
Shougo
 
Unite vim
Unite vim Unite vim
Unite vim
Shougo
 
うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?うわ…私のEmacs力、低すぎ...?
うわ…私のEmacs力、低すぎ...?
Masahiro Sano
 
Vim = VM
Vim = VMVim = VM
Vim = VM
Shougo
 
すごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつりすごいVimでhaskellを書こう@なごやまつり
すごいVimでhaskellを書こう@なごやまつり
cohama
 
Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識Vimを学びたい初心者のための5つの豆知識
Vimを学びたい初心者のための5つの豆知識
alwei
 
Vim の開発環境
Vim の開発環境Vim の開発環境
Vim の開発環境
eagletmt
 
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
deris0126
 
VimとRubyのアツい関係
VimとRubyのアツい関係VimとRubyのアツい関係
VimとRubyのアツい関係
Misao X
 
究極のディストリビューションUbuntu
究極のディストリビューションUbuntu究極のディストリビューションUbuntu
究極のディストリビューションUbuntu
Kenichi Takahashi
 
「とても小さいVim」vim tiny
「とても小さいVim」vim tiny「とても小さいVim」vim tiny
「とても小さいVim」vim tiny
gu4
 
X window managerで遊んでみた
X window managerで遊んでみたX window managerで遊んでみた
X window managerで遊んでみた
Masahiko Hashimoto
 
Ember.js導入
Ember.js導入Ember.js導入
Ember.js導入
teamcpaw
 

Similar to かなりすごい発表(かなり) at VimConf2014 (13)

Vimプラグインを使おう
Vimプラグインを使おうVimプラグインを使おう
Vimプラグインを使おう
Hideaki Miyake
 
DevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vimDevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vim
t9md
 
おすすめVimプラグインまとめ
おすすめVimプラグインまとめおすすめVimプラグインまとめ
おすすめVimプラグインまとめ
Shun Iwase
 
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
gu4
 
Emacs 使いが Vim を使ってみた(ちょっとだけGit)
Emacs 使いが Vim を使ってみた(ちょっとだけGit)Emacs 使いが Vim を使ってみた(ちょっとだけGit)
Emacs 使いが Vim を使ってみた(ちょっとだけGit)
Yoshiyuki MIYAGI
 
易しいVim
易しいVim易しいVim
易しいVim
asuka y
 
Using xvim with macvim
Using xvim with macvimUsing xvim with macvim
Using xvim with macvim
pebble8888
 
「Vim初心者によるVim入門@haman29」
「Vim初心者によるVim入門@haman29」「Vim初心者によるVim入門@haman29」
「Vim初心者によるVim入門@haman29」
Kyohei Hamada
 
Vimプラグインを使おう
Vimプラグインを使おうVimプラグインを使おう
Vimプラグインを使おう
Hideaki Miyake
 
DevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vimDevEnv Tryit.vim Phrase.vim
DevEnv Tryit.vim Phrase.vim
t9md
 
おすすめVimプラグインまとめ
おすすめVimプラグインまとめおすすめVimプラグインまとめ
おすすめVimプラグインまとめ
Shun Iwase
 
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
「Vimrcリーディングに役立ちそうな」vimrcの設定とplugin管理
gu4
 
Emacs 使いが Vim を使ってみた(ちょっとだけGit)
Emacs 使いが Vim を使ってみた(ちょっとだけGit)Emacs 使いが Vim を使ってみた(ちょっとだけGit)
Emacs 使いが Vim を使ってみた(ちょっとだけGit)
Yoshiyuki MIYAGI
 
易しいVim
易しいVim易しいVim
易しいVim
asuka y
 
Using xvim with macvim
Using xvim with macvimUsing xvim with macvim
Using xvim with macvim
pebble8888
 
「Vim初心者によるVim入門@haman29」
「Vim初心者によるVim入門@haman29」「Vim初心者によるVim入門@haman29」
「Vim初心者によるVim入門@haman29」
Kyohei Hamada
 
Ad

Recently uploaded (8)

e2zgvpmeefekeoekeokoeoekewassa4jfstg6p.pdf
e2zgvpmeefekeoekeokoeoekewassa4jfstg6p.pdfe2zgvpmeefekeoekeokoeoekewassa4jfstg6p.pdf
e2zgvpmeefekeoekeokoeoekewassa4jfstg6p.pdf
hirokiabe58
 
REVISION EXAMEN PARCIAL INGENIERIA EN PETROLEOS.pdf
REVISION EXAMEN PARCIAL INGENIERIA EN PETROLEOS.pdfREVISION EXAMEN PARCIAL INGENIERIA EN PETROLEOS.pdf
REVISION EXAMEN PARCIAL INGENIERIA EN PETROLEOS.pdf
LuisAlbertoOrtegaVeg1
 
AIDemucs-set-up-guide-on-apple-silicon.pdf
AIDemucs-set-up-guide-on-apple-silicon.pdfAIDemucs-set-up-guide-on-apple-silicon.pdf
AIDemucs-set-up-guide-on-apple-silicon.pdf
hirokiabe58
 
2025年5月応用音響研究会「ICASSP2025における異常音検知の動向」
2025年5月応用音響研究会「ICASSP2025における異常音検知の動向」2025年5月応用音響研究会「ICASSP2025における異常音検知の動向」
2025年5月応用音響研究会「ICASSP2025における異常音検知の動向」
NU_I_TODALAB
 
wallet-standardで始めるウォレット実装 - Solana Developer Hub Online11 #SolDevHub
wallet-standardで始めるウォレット実装 - Solana Developer Hub Online11 #SolDevHubwallet-standardで始めるウォレット実装 - Solana Developer Hub Online11 #SolDevHub
wallet-standardで始めるウォレット実装 - Solana Developer Hub Online11 #SolDevHub
K Kinzal
 
2025年3月音楽情報科学研究会「大局的構造生成のための小節特徴量系列モデリングに基づく階層的自動作曲」
2025年3月音楽情報科学研究会「大局的構造生成のための小節特徴量系列モデリングに基づく階層的自動作曲」2025年3月音楽情報科学研究会「大局的構造生成のための小節特徴量系列モデリングに基づく階層的自動作曲」
2025年3月音楽情報科学研究会「大局的構造生成のための小節特徴量系列モデリングに基づく階層的自動作曲」
NU_I_TODALAB
 
2025年5月応用音響研究会「ICASSP2025における音楽情報処理の動向」
2025年5月応用音響研究会「ICASSP2025における音楽情報処理の動向」2025年5月応用音響研究会「ICASSP2025における音楽情報処理の動向」
2025年5月応用音響研究会「ICASSP2025における音楽情報処理の動向」
NU_I_TODALAB
 
情シスがRedmineでPC管理を立て直した話 2025年5月31日(土) 13:00 〜 13:45
情シスがRedmineでPC管理を立て直した話 2025年5月31日(土) 13:00 〜 13:45情シスがRedmineでPC管理を立て直した話 2025年5月31日(土) 13:00 〜 13:45
情シスがRedmineでPC管理を立て直した話 2025年5月31日(土) 13:00 〜 13:45
anubis_369
 
e2zgvpmeefekeoekeokoeoekewassa4jfstg6p.pdf
e2zgvpmeefekeoekeokoeoekewassa4jfstg6p.pdfe2zgvpmeefekeoekeokoeoekewassa4jfstg6p.pdf
e2zgvpmeefekeoekeokoeoekewassa4jfstg6p.pdf
hirokiabe58
 
REVISION EXAMEN PARCIAL INGENIERIA EN PETROLEOS.pdf
REVISION EXAMEN PARCIAL INGENIERIA EN PETROLEOS.pdfREVISION EXAMEN PARCIAL INGENIERIA EN PETROLEOS.pdf
REVISION EXAMEN PARCIAL INGENIERIA EN PETROLEOS.pdf
LuisAlbertoOrtegaVeg1
 
AIDemucs-set-up-guide-on-apple-silicon.pdf
AIDemucs-set-up-guide-on-apple-silicon.pdfAIDemucs-set-up-guide-on-apple-silicon.pdf
AIDemucs-set-up-guide-on-apple-silicon.pdf
hirokiabe58
 
2025年5月応用音響研究会「ICASSP2025における異常音検知の動向」
2025年5月応用音響研究会「ICASSP2025における異常音検知の動向」2025年5月応用音響研究会「ICASSP2025における異常音検知の動向」
2025年5月応用音響研究会「ICASSP2025における異常音検知の動向」
NU_I_TODALAB
 
wallet-standardで始めるウォレット実装 - Solana Developer Hub Online11 #SolDevHub
wallet-standardで始めるウォレット実装 - Solana Developer Hub Online11 #SolDevHubwallet-standardで始めるウォレット実装 - Solana Developer Hub Online11 #SolDevHub
wallet-standardで始めるウォレット実装 - Solana Developer Hub Online11 #SolDevHub
K Kinzal
 
2025年3月音楽情報科学研究会「大局的構造生成のための小節特徴量系列モデリングに基づく階層的自動作曲」
2025年3月音楽情報科学研究会「大局的構造生成のための小節特徴量系列モデリングに基づく階層的自動作曲」2025年3月音楽情報科学研究会「大局的構造生成のための小節特徴量系列モデリングに基づく階層的自動作曲」
2025年3月音楽情報科学研究会「大局的構造生成のための小節特徴量系列モデリングに基づく階層的自動作曲」
NU_I_TODALAB
 
2025年5月応用音響研究会「ICASSP2025における音楽情報処理の動向」
2025年5月応用音響研究会「ICASSP2025における音楽情報処理の動向」2025年5月応用音響研究会「ICASSP2025における音楽情報処理の動向」
2025年5月応用音響研究会「ICASSP2025における音楽情報処理の動向」
NU_I_TODALAB
 
情シスがRedmineでPC管理を立て直した話 2025年5月31日(土) 13:00 〜 13:45
情シスがRedmineでPC管理を立て直した話 2025年5月31日(土) 13:00 〜 13:45情シスがRedmineでPC管理を立て直した話 2025年5月31日(土) 13:00 〜 13:45
情シスがRedmineでPC管理を立て直した話 2025年5月31日(土) 13:00 〜 13:45
anubis_369
 
Ad

かなりすごい発表(かなり) at VimConf2014