94
かなりすごい発表(かなり) supermomonga

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

Embed Size (px)

DESCRIPTION

Sound makes vim more benrily.

Citation preview

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

かなりすごい発表(かなり)supermomonga

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

自己紹介

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

supermomonga

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

supermomongahttp://blog.supermomonga.com twitter.com/supermomonga github.com/supermomonga

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

supermomongaフリーランスでRailsとかやってる

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

作ったプラグインの紹介

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

作ったプラグイン

音や通知に関するものが多め- Shaberu.vim - jazzradio.vim - skyfm.vim - mplayer.vim - ThingsPast.vim

… … … … …

Vimがしゃべるやつ(音声合成)

Vimでジャズが聴ける(ネットラジオ)

Skyrimではないやつ(Skyrimではない)

mplayerを操作するライブラリ(未公開)

通知センター(Mac OS X inspired)

(1/2)

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

作ったプラグイン

VimShellの拡張プラグインもある- vimshell-inline-history - vimshell-kawaii - vimshell-wakeup - vimshell-pure

… … … …

VimShellが便利になるやつ

VimShellがかわいくなるやつ

VimShellが便利になるやつ

VimShellが便利になるやつ

(2/2)

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

おわり(おわり)

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

今日のテーマ

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

Vimは音でもっと便利になるSound makes vim more benrily

(Vimが便利である様子)

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

どういうことか

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

「通知」に関する例

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

我々がプログラミングをしている時 身体のI/Oはどうなっているでしょうか

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

インプット アウトプット

= ディスプレイ => 両目 = 両手 => キーボード

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

両手と両目をフル稼働させている

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

これは両手と両目をフル稼働させている人です

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

このとき

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

もっと多くの情報を Vimから得たいとしたら?

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

例えば「通知」

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

- TweetVim … リプライやDMなどの受信を通知

- J6uil.vim … チャットルームでの新規発言を通知

- Watchdogs … RSpecを実行して、エラーがあれば通知

- VimShell … git clone などの時間がかかるコマンドの終了を通知

For example

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

そこで

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

「通知」を一元管理するプラグイン 「ThingsPast.vim」をつくった

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

ThingsPast とは

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

Mac OS Xの「通知センター」を

Vim内で再現するプラグイン

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

Mac OS X 通知センター

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

Mac OS X 通知センター

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

Mac OS X 通知センター

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

ThingsPast.vim

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

ThingsPast.vim

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

やっていること各プラグインのhookを利用して

ThingsPastに通知を流し込んでいる

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

やっていることこの時、通知オブジェクトにcallback関数を 持たせることができるので、通知選択時に

任意の処理を実行可能

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

たとえば「J6uilからの”新規発言受信”の通知」を

ThingsPast上で選択(<CR>)すると

J6uil.vimを起動

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

これによって 通知の一元管理が実現

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

Vimで動くアプリケーションを開発する際

通知関連の実装をThingsPastに丸投げできる

(プラグイン側はhookを用意しておくだけ)

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

ユーザーは統一したインターフェイスで 通知を閲覧し、通知元へ移動することができる

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

便利(かなり)

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

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

ここで問題が発生

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

我々はVimを使っている時 両目をフル稼働させている

Page 41: かなりすごい発表(かなり) at VimConf2014
Page 42: かなりすごい発表(かなり) at VimConf2014
Page 43: かなりすごい発表(かなり) at VimConf2014
Page 44: かなりすごい発表(かなり) at VimConf2014

集中している時に いきなり画面を分割される!!

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

とてもよくない(とても)

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

もっと「静かに」通知させたい

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

もっと「静かに」通知させる方法…

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

通知センターの「バルーン通知」を、 バッファにオーバーレイさせて実現する?

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

そうじゃない

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

そもそも

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

集中して視覚を活用してコード書いてる時に 視覚のリソースを少しでも奪うのがダメ

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

そんなのは「静か」じゃない

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

そんなのは「静か」じゃない

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

そこで音です

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

脳に情報を入力できる器官は目だけじゃない

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

視覚のリソースが足りないなら 聴覚のリソースを使えばいい

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

聴覚へ通知

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

=音で通知

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

=音声合成で通知

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

=Shaberu.vim

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

Shaberu.vimVimプラグイン処女作

音声合成エンジンのラッパーライブラリ

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

1. Shaberu.vimで音声通知

2. 詳しく見たくなったらThingsPastペインを表示

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

これで視覚をいきなり遮られることがない!

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

(デモ) https://vimeo.com/111277527

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

かなり便利(かなり)

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

まとめます

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

今日、通知の話を用いて 伝えたかったこと

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

聴覚というリソースをもっと活用しよう

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

おまけ

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

その他の Shaberu.vim活用例

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

autocmd

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

様々なautocmdと連動させることで

Vimがすごいべんりになる

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

起動/終了時に進捗を促してくれる

au MyAutoCmd VimEnter * ShaberuSay '進捗どうですか' au MyAutoCmd VimLeave * ShaberuSay '進捗どうですか'

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

vimshell-wakeup.vim

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

VimShellで「時間がかかるコマンド」の実行が終了したとき、音声で通知してくれるプラグイン

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

VimShellで「時間がかかるコマンド」の実行が終了したとき、音声で通知してくれるプラグイン

・設定した秒数以上の時間がかかったコマンドが終了した時に発動

 (herokuへのデプロイとか)

・コマンド終了時、VimShellバッファを開いていた場合は自明なので発動しない

・ただし、VimShellバッファを開いていても、Vim以外のアプリケーションがアクティブになっていた場合は発動

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

VimShellで「時間がかかるコマンド」の実行が終了したとき、音声で通知してくれるプラグイン

VimShellの仕様上、通知されない場合がある(改善したい)

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

VimShell hooks

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

VimShellでは様々なタイミングに

hook関数を呼ぶことができる

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

エラー発生時に音声で教えてくれる

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"))

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

移動(cd)したときに 「よっこいしょ」と喋る

au MyAutoCmd FileType vimshell \ call vimshell#hook#add( \ ’chpwd’ , \ ’my_vimshell_chpwd' , \ reti#lambda(“:ShaberuSay 'よっこいしょ'"))

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

VimShell aliases

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

VimShellではコマンドエイリアスを 定義することができる

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

time?コマンドで 時間を教えてくれる

call vimshell#set_alias( \ ’time?’, \ ’:call shaberu#say(strftime("はいっ。今は%H時%M分です"))')

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

lsを打ち間違えた(sl)ときに 「きしゃぽっぽ」と喋る

call vimshell#set_alias( \ ’sl’, \ ’:call shaberu#say("きしゃぽっぽ。きしゃぽっぽ。ぽぽ")')

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

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

とてもべんり(とても)

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

まとめ

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

Vimがしゃべると便利

Vimがしゃべるとかわいい(重要)

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

Shaberu.vimは 任意の音声合成エンジンを使用可能

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

OpenJTalkを使うとかなりかわいい(かなり)

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

もう一度言います

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

聴覚というリソースをもっと活用しよう

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

ありがとうございました

イラスト: いらすとや (irasutoya.com)

音声: OpenJTalk (mei voice)