Hatena::Groupcatalyst

dann@catalyst このページをアンテナに追加 RSSフィード

2008-04-22

プラグイン作るな、使うな その2

プラグイン作るな、使うな その2 - dann@catalyst を含むブックマーク はてなブックマーク - プラグイン作るな、使うな その2 - dann@catalyst プラグイン作るな、使うな その2 - dann@catalyst のブックマークコメント

マニュアル嫁って話なわけなので、とりあえず読んでみた。ただ、やっぱりプラグイン作るな、使うなって話はなんか書いてない気がしたなぁ。

http://search.cpan.org/dist/Catalyst-Manual/lib/Catalyst/Manual/ExtendingCatalyst.pod

読む限り、

Pluginを使っていいと言ってるのは、以下の2点

  • request lifecycleの一部を変更したい場合。

When is a plugin suited to your task? Your code needs to be a plugin to act upon or alter specific parts of Catalyst's request lifecycle.

  • 本当にアプリケーションワイドに機能が必要なケース。
    • session, authenticationがその例

Another valid target for a plugin architecture are things that really have to be globally available, like sessions or authentication.

使うなってケースは、以下の二つ。

  • prepare_* or finalize_* stagesなどをwrapするケース。
    • wrapってのがいまいち意味がつかみきれないのと、なんでダメなのかがよくわからない。もっと別の解があるからかな。

If your functionality needs to wrap some prepare_* or finalize_* stages, you won't get around a plugin.

  • 適切なスコープがある場合には、Globalに機能追加するな。これはまぁそうだろうなぁ。
    • ただ、どのスコープでどんな拡張ポイントを用意するのかについては、フレームワーク側で明示すべき話な気はするけど。もっと例がほしいね、ここは。

Please do not release Catalyst extensions as plugins only to provide some functionality application wide. Design it as a controller base class or another suiting technique with a smaller scope, so that your code only influences those parts of the application where it is needed, and namespace clashes and conflicts are ruled out.

ということで、プラグインを使うなって話を、Catalystの中の人が書いているという話しではないというところまでは分かった。上記の中でも、まだ不明点があるから、もう少し考えないといけないね。

プラグイン使うなって話

プラグイン使うなって話 - dann@catalyst を含むブックマーク はてなブックマーク - プラグイン使うなって話 - dann@catalyst プラグイン使うなって話 - dann@catalyst のブックマークコメント

割と多くの人が言っていたのが、Plugin使うな!(作るな?)って話。多くの人が言っていたけど、その理由がよくわからなかった。

認証とかすんのに誰もプラグイン使ってないのかなという素朴な疑問。。。どういうコンテキストでプラグインを使うなと言っているのかが、全然わからなかったからここら辺をえろい人に解説してもらいたいなぁ。

時間あったら、ゆっくりid:charsbarさんとかに聞いてみたい。テーブルがちょっと分かれてしまったからあまり聞けなかったのだけど、ちょっと突っ込んで聞いてみたかったなぁ。

# エロイ人から、少しだけ教えてもらった。

  • Plugin作るな、使うなっていうのは、Catalystの制御フローに割り込むのを作るなってことなんじゃないか?prepare_xxx よんで NEXT するの全部。
    • けど、それが何故まずいのかが、いまいちよくわかってない。
  • C::P::Authentication なんかは controller で呼ぶから別物と考えればいいと思う
  • ExtendingCatalyst

あざーっす。まだ、全く何故ダメなのかということの理解はしてないのだけれど、ちょっと情報あさってみます。lazy-people++

エロイ人が言ってたからとか、マニュアルに書いてあるからという理由じゃ全然納得できないんだなぁ、自分の場合。なんか明確な理由がないと気持ち悪いなぁという。自分の言葉で説明できないと、なんか納得できないんだよね。

CatalystCon#1 感想

CatalystCon#1 感想 - dann@catalyst を含むブックマーク はてなブックマーク - CatalystCon#1 感想 - dann@catalyst CatalystCon#1 感想 - dann@catalyst のブックマークコメント

  • id:ikasam_aさんのROA+Catalystな話
    • Catalyst::Controller::ResourcesでROAって話。既に便利に使わせてもらってる!
  • id:charsbarさんのCatalystの歴史など
    • Pluginダメ、Component使えなど。$cの汚染よくないなど。
      • Pluginダメって理由をもっと詳しく聞きたかった。
  • id:YappoさんのCatalyst::Engineがらみの話
    • HTTP::Server::Wrapperだっけかな(ちょっと違うかも)。Yappoさんの話面白かったなぁ。Catalystと密な話でもないんだけど、WAFのデザインについての話。15分枠で聞きたかった。
  • id:tokuhiromさんのSledge+Catalystのネタ
    • ネタのインパクトが強くてすげー面白い。LTっぽい感じ。
  • id:hide-KさんのModel::Adaptorの話
    • Model::Adaptorが便利なケースがあるのは納得。
  • id:typesterさんの再利用の話
    • Validatorの話がcool. nameベースのValidatorほしい!

CatalystCon#1 プレゼン

CatalystCon#1 プレゼン - dann@catalyst を含むブックマーク はてなブックマーク - CatalystCon#1 プレゼン - dann@catalyst CatalystCon#1 プレゼン - dann@catalyst のブックマークコメント

何回かやった割にはさくっと時間オーバーしてしまった。さらに、コンセントがささってるのに休止状態に orz

本当に伝えたかったことは、

  • MVCのMはWAFの仕事じゃないよ
  • POPOモデル重要

これだけなんだけど、ちょっとスライド引っ張りすぎたのかも。スライドのアップは後で。

MildredMildred2011/08/04 09:52Short, sweet, to the point, FREE-exactly as information shulod be!

vivzenmrmvivzenmrm2011/08/04 22:13opiHjr <a href="http://sxhjtmarrmol.com/">sxhjtmarrmol</a>

ksxgjfokfjksxgjfokfj2011/08/05 20:29OZQ5Zv , [url=http://vsgviiwrgcye.com/]vsgviiwrgcye[/url], [link=http://poqjypxwnxkn.com/]poqjypxwnxkn[/link], http://qmjlmfohnnzo.com/

ihqiprzcgihqiprzcg2011/08/07 00:55ovLaIT <a href="http://irzktwxpxhea.com/">irzktwxpxhea</a>

ixricpqetwixricpqetw2011/08/07 22:07whA4Gx , [url=http://dizpwhgfquda.com/]dizpwhgfquda[/url], [link=http://wurmcvefktra.com/]wurmcvefktra[/link], http://lteysztnyloi.com/

トラックバック - http://catalyst.g.hatena.ne.jp/dann/20080422