emacs, ui, async

24
kiwanami 2010/09/25 kansai_emacs #x02

Upload: masashi-sakurai

Post on 27-Jun-2015

1.427 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Emacs, ui, async

kiwanami

2010/09/25 kansai_emacs #x02

Page 2: Emacs, ui, async

id:kiwanami

• さくらいまさし• 属性:元未踏、凝縮系物理• 最近は elisp, JavaScript• 好きなOSはMac

Page 3: Emacs, ui, async

User Interface Design

• ユーザーのことを知る• 本質を⾒つける• ⾒せ⽅、操作⽅法の開発

Page 4: Emacs, ui, async

理想の言語環境とは?

Page 5: Emacs, ui, async

作ったもの紹介

Page 6: Emacs, ui, async

skype.el

• 動機–毎⽇何⼗個ものチャットでプロジェクト管理– LinuxのSkypeのGUI がひどかった–⽇本語⼊⼒に問題がある

• dbusでとりあえず作った• anything、migemoでの操作、検索

Page 7: Emacs, ui, async

id-manager.el

• Webサービス、サーバー管理• OS⾮依存なパスワード管理• 暗号化と検索

Page 8: Emacs, ui, async

cacoo.el

• Emacsの⽂字⼊⼒に図を融合• 改修中

– APIを使って図をとってこれるように

Page 9: Emacs, ui, async

e2wm

• プログラミングのワークフローの⾒直し• windowのレイアウトを作業ごとに切り替えたい

• 改修中–⾮同期、イベントの扱いを改善後、機能追加予定

Page 10: Emacs, ui, async

EmacsによるUI構築• エディタを中⼼としたアプリケーションの可能性

• Emacsの外の世界との連携

Page 11: Emacs, ui, async

UI開発には非同期が重要

Page 12: Emacs, ui, async

アニメーション• ユーザーへのメッセージ• 楽しさ、気持ちよさの演出• 実装としては⾮同期で動かす

Page 13: Emacs, ui, async

速度• UIの速度で使い⽅が変わる

–業務システム– Google Instant

• なるべくレスポンスを早く返す–ユーザーを待たせない⼯夫–⾮同期で実⾏

Page 14: Emacs, ui, async

外の世界• 「クラウド(ASP)」、マルチメディア• データがローカルにないかもしれない• 容量が⼤きい• Emacsと外の世界との密な相互作⽤

– TwitterなどのAPI呼び出し

Page 15: Emacs, ui, async

最近のWeb周辺の動向• ⾮同期、イベントドリブン• Web界隈のGUI技術の急速な進歩

Page 16: Emacs, ui, async

Emacsにおける非同期は?

Page 17: Emacs, ui, async

現状のEmacsの⾮同期• 調べてみた

– elispのinfo –ローカル–ネット、ライブラリ、アプリなど

Page 18: Emacs, ui, async

みんな普通にがんばっているらしい

• ⾮同期の便利なライブラリはないみたい• 結構みんなHTTPを⾃⼒で話すことが多い• emacs-w3mの⾮同期マクロ• Javaのconcurrentパッケージとか、

Mochikit.Async(JSDeferred)とかにあたるものがあれば便利そう

Page 19: Emacs, ui, async

deferred.el

Page 20: Emacs, ui, async

deferred.elとは?• JavaScriptの

JSDeferred, Mochikit.Asyncを参考• コールバック関数を後付け出来るようなしくみ

• ⾮同期処理を抽象化する道具

Page 21: Emacs, ui, async

何が出来るか?• 外部との⾮同期連携• ⾮同期処理のチェイン、エラー処理• 「後で」

–データフロー、遅延評価• マクロでさらに強⼒

–ジェネレーター、スレッド

Page 22: Emacs, ui, async

詳しくは、後⽇はてなで!

Page 23: Emacs, ui, async

deferred.elデモ• Webで取ってくる• コマンド実⾏する(連結)• ジェネレーター(遅延評価)• 慣性スクロール(スレッド)

Page 24: Emacs, ui, async

ありがとうございました!