2017-03-20 (Mon) [長年日記]
_ 大江戸Ruby会議06で発表してきた
大江戸Ruby会議06に参加してきたが、とても楽しかった。スタッフ・参加者のみなさんありがとうございました。
何となく技術よりのイベントなのかなと思っていたが、思ったよりエモーショナルな発表が多かったような気がする。 自分の発表は感動的なトークの後だときつい内容だったので、順番が最初の方*1でよかった。
mlterm上のTextbringerでプレゼンしたのだが、事前のプロジェクタチェックでモードラインが切れてるのに気付いていなくて、本番中にウィンドウサイズの調整に手間取ってしまった。 普段タッチパッド使わないので…。
Vimmerばかりだったらどうしようかと思ったが、Emacsユーザが多数派(主観)でよかった。
後でいただいた質問の回答をいくつか。
Q1. なぜ数ある実装方式の中でバッファギャップを採用したのか。
A1. 行のリストみたいな方式だと、Rubyの場合たくさんオブジェクトができるのがつらいし、行をまたいだ検索の実装コストも実行コストも高くなりそうだから。 バッファギャップなら一つのStringオブジェクトで済むし、組み込みの検索機能が使える。 Stringはランダムアクセス向けの作りではないけど、Rubyで自前のデータ構造を作るよりは速い。
Q2. どれくらい使えるのか。
A2. メールの読み書き以外はTextbringerを使っている。 Textbringer自体もRubyモードを実装したあたりからほとんどTextbringerで書いているが、Textbringer::Windowあたりを壊すとまったく使えなくなるので一時的にVimを使ったりする。 環境EDITORもtextbringerにしている。
Q3. MUAは本当に作るのか。
A3. RubyKaigiまでに作りたい。 IMAPライブラリとかも前に自分で書いたので、簡単なものならすぐにできると思う。 問題はTextbringrのバックグラウンド処理APIをどうするかだけど、スレッド(将来はGuild?)+Control.Invoke()/BeginInvoke()的なものはどうかなとか考えている(要はなるべく同期的に書きたい)。 Emacsの欠点はバックグラウンド処理がバッファに依存した設計になっているところだと思う(最近のEmacs知らないけど)ので、このあたりを上手く作れば差別化できるのではという目論見。
なお、ネットワーク応用通信研究所はこういう話に興味のある人を募集しています。 Vimmerでも大丈夫です。
*1 どうやら人外枠だったらしい(怒)。