抽象化厨

鈍男具合が遺憾なく発揮されたので改訂。読みにくい ? 仕方ないね。

stella ( http://d.hatena.ne.jp/nokturnalmortum/20081213/1229168832 ) がかなりいい感じ。前々から id:nokturnalmortum が頻繁に update してたんだけど player の抽象化とかけっこういい感じにしてあって nicontroller.js と youtubeamp.js を obsolete にしておれも彼女いじろうかと思ったんだけど _libly.js のように共通部分は library 化してしまおう的 project がおれの中で進行中で、 matanico.js との絡みで nicontroller.js をこれからいじろうと思ってたところだったのでちょっとタイミングがー、という感じ

で、このまま独自に突っ走ろうかとも思ったんだけどそれはどうも得策じゃない気がしてきた。というのもlibrary 化 ( 抽象化 ) の利点は以下の点だと思う。

  • 動画 player 操作用の code って size がふくらみがちなので個別に書いていくのはあまりよろしくない ( resource の無駄的な意味で ) 。
  • stella では Player class を基底としてニコニコ動画用と YouTube 用の player class を派生させている。つまり他の動画 service にも対応できるように作られてるので、彼女からこの部分を引っこ抜いて他でも使えるようにしたい。 stella がすでに liberator.plugins 以下に便利な object を仕込んでくれてた。 id:nokturnalmortum に指摘されて気付くという鈍男具合。 thanks 。
  • うまいことやれば vimp 以外でもその library を使うことができるかもしれない。
  • これから HTML5 の video 要素がくるのでそこらへんへの対応が一カ所いじるだけで可能になるかもしれない。

というあたり。後半はたぶん思い通りにはいかないと思うけど前半だけでやる価値はあると思う。とりあえず現段階では liberator.plugins 以下に current buffer で使える、もしくは指定した player を操作する object を返す関数なんかを仕込んでおけば各 plugin で使えるかなー、とか妄想中。ただ plugin 間の依存が強すぎたり多すぎたりすると後々面倒になるのはわかりきっているのでどこまでが妥当かなぁと思ってはいる。以下妄想内訳。

  • video 用 library 名と liberator.plugins 以下に仕込むモノの仕様策定。
  • 各 player に対する作り込み ( stella の実装だとまだニコ動にコメントできなかったりする ) 。
  • player 操作に限らない情報取得のための仕組み構築 ( タイトルとかコメント一覧とかの取得 ) 。 SITEINFO 的なもので済みそうな気はする。
  • addUserCommand / removeUserCommand と autocommands.add による動的な command set 切り替え ( 使えないコマンドを補完に出さない ) 。どちらかというと library を使用する側 ?

とかなんとか。あとタイトルは最近「〜厨」が流行ってるのでおれも流行りに乗ってみたというだけのことで。おれのことなんだけど。