読者です 読者をやめる 読者になる 読者になる

ポクポク

ポクッとしてツナッ

音の鳴るエディタことEmacs

Emacs

音の鳴るエディタ - ✘╹◡╹✘ このアイディアめっちゃいいと思ってた。

例えば黒板とか本の内容を写してて、キーボードもモニタも見てない時しばしばあるし、ちゃんと打ててても日本語の変換結果が変になってるとかよくある。プログラミングは音全然使ってない、音でデバッグとかしたい。音のフィードバックで効率的に何かできたらおもしろい。

みたいなことをこの前東京で関数型焼肉を遅延評価しながら話してた(1時間遅れてすみません)。

Vimで作ったけど音とキーの対応が覚えられなくてあんまり意味なかったとか、めちゃくちゃ重くなるみたいなことナカムラさんが言ってた気がする。確かに、とか思ってた。

対応が覚えられないならsayでそのまま読み上げたらいいと思いついたのと、別プロセスに投げたらエディタ自体は軽いまま音出せるんじゃないかと思ってEmacsで動くやつ作った。

lesssayが使える必要がある。Macなら動くと思う。日本語も読み上げてほしいならkyokoちゃん入れないといけない。(システム環境設定 > スピーチ > テキスト読み上げ にそういうのあります)

これをrequireしてM-x start-sound-editorしたら入力文字列を全部しゃべってくれる。

全然重くないと思う。auto-completeのほうがひっかかる感じがある。

Emacsはキーイベントが単純にとれない。なんかadviceしこめば簡単にいけるかと思ったけど無理そうだった。after-change-functionにhookしこむのもやったけどユーザの入力以外でもバリバリ反応するから無理そう。

入力を記録するためにrecent-keysとdribbleファイルというのがある。39.12.2 Recording Input recent-keysの更新の監視めんどくさそうだから、プロセスを立ててtail -fでdribbleファイルを監視して入力をemacsに流すことにした。(set-process-filterでプロセスの出力をもとに関数を発火させることはできる)

sayは言い終わるまで次の入力を喋らないから、普通にキーボード打ってたらどんどん声が遅れていく。だからプロセスを10個立てて順番に使っていくようにした。10個ぐらいあると普通に入力しても全然追いつかない。あとたまに勝手にプロセスが死ぬから、sound-editor起動中は死んだら即立て直すようにした。

deferred.elに依存してる。deferred.elは必須じゃないからsound-editor:sound-editor-filterをコメントアウトしてるやつと入れ替えたら無くても動く。deferred無いとちょっとひっかかる感じがするのと、sayが死んでた時に入力をブロックしてうっとおしいので使ってる。

奇行半分で作ったけど、期待するジャムセッション感とかなくなったし、普通に視聴覚サポート的なやつにありそうな感じになった… この文章も音ならしながら書いてる。dotfilesに入れてもいいかと思うぐらいはちゃんとしてると思う。

あと、replace-region-by-ruby.elもmagick commentが動かない場合みつけたからなおしました。