kiwanami
2010/09/25 kansai_emacs #x02
id:kiwanami
• さくらいまさし• 属性:元未踏、凝縮系物理• 最近は elisp, JavaScript• 好きなOSはMac
User Interface Design
• ユーザーのことを知る• 本質を⾒つける• ⾒せ⽅、操作⽅法の開発
理想の言語環境とは?
作ったもの紹介
skype.el
• 動機–毎⽇何⼗個ものチャットでプロジェクト管理– LinuxのSkypeのGUI がひどかった–⽇本語⼊⼒に問題がある
• dbusでとりあえず作った• anything、migemoでの操作、検索
id-manager.el
• Webサービス、サーバー管理• OS⾮依存なパスワード管理• 暗号化と検索
cacoo.el
• Emacsの⽂字⼊⼒に図を融合• 改修中
– APIを使って図をとってこれるように
e2wm
• プログラミングのワークフローの⾒直し• windowのレイアウトを作業ごとに切り替えたい
• 改修中–⾮同期、イベントの扱いを改善後、機能追加予定
EmacsによるUI構築• エディタを中⼼としたアプリケーションの可能性
• Emacsの外の世界との連携
UI開発には非同期が重要
アニメーション• ユーザーへのメッセージ• 楽しさ、気持ちよさの演出• 実装としては⾮同期で動かす
速度• UIの速度で使い⽅が変わる
–業務システム– Google Instant
• なるべくレスポンスを早く返す–ユーザーを待たせない⼯夫–⾮同期で実⾏
外の世界• 「クラウド(ASP)」、マルチメディア• データがローカルにないかもしれない• 容量が⼤きい• Emacsと外の世界との密な相互作⽤
– TwitterなどのAPI呼び出し
最近のWeb周辺の動向• ⾮同期、イベントドリブン• Web界隈のGUI技術の急速な進歩
Emacsにおける非同期は?
現状のEmacsの⾮同期• 調べてみた
– elispのinfo –ローカル–ネット、ライブラリ、アプリなど
みんな普通にがんばっているらしい
• ⾮同期の便利なライブラリはないみたい• 結構みんなHTTPを⾃⼒で話すことが多い• emacs-w3mの⾮同期マクロ• Javaのconcurrentパッケージとか、
Mochikit.Async(JSDeferred)とかにあたるものがあれば便利そう
deferred.el
deferred.elとは?• JavaScriptの
JSDeferred, Mochikit.Asyncを参考• コールバック関数を後付け出来るようなしくみ
• ⾮同期処理を抽象化する道具
何が出来るか?• 外部との⾮同期連携• ⾮同期処理のチェイン、エラー処理• 「後で」
–データフロー、遅延評価• マクロでさらに強⼒
–ジェネレーター、スレッド
詳しくは、後⽇はてなで!
deferred.elデモ• Webで取ってくる• コマンド実⾏する(連結)• ジェネレーター(遅延評価)• 慣性スクロール(スレッド)
ありがとうございました!