Hatena::Groupemacs

はてなグループEmacs@kiwanami

 | 

2011-06-16

Emacs Lisp でのオブジェクトシステム的ないろいろ

10:20

今まで発見したもの。多分探せばもっとありそう。それぞれの詳細とか違いについてはまた今度書くかも。

  • defstruct
    • 標準添付。clパッケージのマクロ
    • 単純に型や入れ物やアクセサ、デフォルト値を定義。簡易継承あり。メソッドは必要なら自分で作る。 (2011/08/10 訂正)
    • 単純な用途には便利。
  • eieio
  • luna.el
    • FLIMに含まれる
    • クラス定義、継承とメッセージ的なOOP
    • 435行
    • ドキュメントは見たこと無いが、ソース見ると何となく分かる
    • FLIM, SEMI などのドキュメント構成をコンポーネントとして定義している感じ
  • widget.el
  • button.el
    • 標準添付
    • 200行ぐらい
    • クラス(ボタン)定義、継承、メッセージ(GUIイベント)受信
    • help-modeのボタンたちを定義するコンポーネント。internしてないシンボルを自前で管理。

とりあえずデバッガが使いづらくなると困る。

eieioはちょっと大げさな気がするという感触。でも使ってみたら思いの外便利かもしれない。

GUIにはやっぱりコンポーネントが必要だし、MVCやろうとするとMをオブジェクトでまとめたくなる。

自分の所でもいろいろ作ったけども、どれが良かったのかまだ見極められない。

  • skype.el, id-manager.el
  • e2wm.el
    • 普通に関数とdefstructで構築してみた。lunaかeieio使えば良かったかも。
  • calfw.el(次期版)
    • カプセル化をやりたくてmodelを関数でいろいろ頑張った。コードが多くなりすぎた。

やっぱり独自オブジェクトシステムはコンパクトで適材適所で良いときもあるけど、ありものを使うのも考えた方が良いかなと、いろいろやってきた思った。

 |