Catalystでモバイルサイト開発に挑戦してみることにした。

という条件で、今月中くらいでモバイルサイトを開発してみることになった。果たしてできるのか?!


既存のオリジナルフレームワークはあるんだけど、どこかで一念発起してトレンドを吸収しておかないとね。


まるごとPerl! Vol.1

まるごとPerl! Vol.1


この本と、ITproの記事をテキスト代わりに、Catalyst::Manualを傍らにナメていけばそれなりに吸収できるかな。


と、思っていたら、この辺りの記事は古いのね。。

Catalyst::Plugin は、現在では*基本的に*利用/開発が推奨されていません。おりしも、この記事が公開される数日前に
CatalystCon#1 が開催され、Catalyst::Plugin のあり方について周知しようという Perl Mongers の動きがあった中で、
このようなふるい記事がでたこともあって、タイミングが悪かったというところもあります。


Perl がよくわからない人のために解説しておくと、2008年に gets(3) を使うサンプルコードが公開されたようなもの


そろそろ日経LinuxがDISられた理由について解説しておくか - TokuLog 改めB日記


えええ、じゃーまるで役に立たないの?

そのへんの事情は http://search.cpan.org/dist/Catalyst-Manual/lib/Catalyst/Manual/ExtendingCatalyst.pod#Plugins にのってるよ。


そろそろ日経LinuxがDISられた理由について解説しておくか - TokuLog 改めB日記


ふむふむ。という訳で該当箇所をよく読んでみよう。

The first thing to say about plugins is that if you're not sure if your module should be a plugin,
it probably shouldn't. It once was common to add features to Catalyst by writing plugins that provide
accessors to said functionality. As Catalyst grew more popular, it became obvious that this qualifies as bad practice.


By designing your module as a Catalyst plugin, every method you implement, import or inherit will be
available via your applications context object. A plugin pollutes the global namespace, and you should be
only doing that when you really need to.


Catalist::Manual::ExtendingCatalyst


なるほど。プラグインで公開すると、グローバルの名前空間に置かれるんだけど、Catalystがポピュラーになるにつれて衝突する可能性が高いから、本当に必要なときのみ使えってか。


その他にもBEST PRACTICE#Namespacesのあたりにも、

  • Catalist::*の名前空間はコア拡張で使用してるから、可能ならCatalystX::*名前空間を使用しなさい
  • モジュールのロードの際トラブルの元になるので、MyApp::Controller::Fooみたくモデルやコントローラー・ビューにベースクラスをMyAppディレクトリ以下に直接置かずに、MyApp::Base::Controller::* や MyApp::ControllerBase::* みたいな名前空間を使いなさい


とか書いてあるね。


でも逆を返せばこれらだけ気をつければ前述の本やITproの記事はそこそこ参考になりそうだ。


それにしても・・Ruby on Railsとかもそうだったけど、仕様の陳腐化が早いなぁ・・Railsは本まで出てるのに、今売ってるのじゃ既に古すぎたりするし。


社内でスキルの拙いメンバーに積極的に使わせて開発を進捗していくのはまだまだひと苦労もふた苦労もありそうだなーー。。。