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

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

Jul 04, 2015

Download

Engineering

Sugoi Kanari

Sound makes vim more benrily.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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)