― Web Technology and Life ―

Kossyを使ったペアプロイベントとPerlのWAFのあれこれ

2012-03-18
先週、クロージャーをまともに知らなかったことを露呈してしまったばかりですが、今日は「PerlのウェブアプリケーションフレームワークのKossyを使ったペアプロイベントやるよ!」って話と、PerlのWAFについていろいろと考えてみた記録を公開です。

【宣伝】Like a ハッカソン(pre Hachioji.pm #15)開催のお知らせ

  • 日時 :2012/03/24 9:00-
  • 参加者 :7/19(2012/3/18現在)
  • 会場 :八王子南口MTビル時間貸し会議室 (東京都八王子市子安町4-9)
  • 会費: 1000円〜2000円位
  • 概要 : ペアプロやるか、モクモクやる宣言してモリモリコーディングする(詳細は下記参照)
  • ATND : http://atnd.org/events/25927

イベント内容

前回の取り組みの結果から、「Like ハッカソン」とは、「モクモクやりたいことをやる」というのと「和気あいあいペアプロする」ということに決めました。モクモクやるひとは好きなもの作って最後にみんなに共有してください。言葉にすることで、頭も整理されるだろうし、それからコミュニケーションも生まれますので。ペアプロの人は下記の通りです。

ペアプロ内容

  • PerlのWAFのKossyを使って掲示板アプリを作る
  • ペアは主催がランダムか適当に決める
  • 掲示板アプリの仕様は各自が決める(といっても何もないと手が動かなかったりするので(わたしがw)、簡単な方向性は数日以内にわたしがつくっておきます)

わたしが想定しているタイムスケジュール

  • 9:00-(ペアプロする組の組み合わせの告知と、コーディング開始)
  • 昼(各自適当にw)
  • 16:00-(やったことの共有)

シャッフルランチ的なのもしようかなーと思ったけど、モクモクしている人は邪魔されたくないだろうし、ちょっとまた先送り。ご意見あれば何なりとお願いします。

また、もろもろ告知とかがまた遅くなってすみません。。。で、なんで、PerlのWAFがKossyになったのか下記につらつらと。

Perlのウェブアプリケーションフレームワーク(WAF)のあれこれ ~なぜKossyか?~

Plackのサイトをみると、Plack対応のPerlの最新ウェブアプリケーションフレームワーク(WAF)がたくさんのっているのですが、いったいそれぞれどんな特徴があって何がオススメなのかまではわかりません。(ガッツリ調べてケースバイケースでオススメを示してくれる人がいたら教えてください!)

そもそも普通のウェブサイトを作るときは、大体こんな感じの要件が基本ですね。

WAFの要件

  • リクエストをうけとれる
  • レスポンスをつくれる
  • いろいろ差し込める余地がある(DB処理, バリデーション処理, キャッシュ処理)

とてもシンプルなので、そんなゴミゴミしないような気がするんだけど、三つ目のところで、結構ごみごみしちゃいますね。そういっていう観点で、なんとなくドキュメントみたり、いろいろなPerl Mongerのブログ見たり、話聞いたりして、だいたいこんな感じの分類になるかなーと思うのが以下です。

オレオレPerlのウェブアプリケーションフレームワーク分類

カテゴリ フレームワーク名
フルスタック Catalyst
フルスタック Jiffy
フルスタック Ark
フルスタック Pickles
万能 Amon2
万能 Dancer
万能 Mojolicious
軽量系 Kossy
特殊系 Tatsumaki

それでは、それぞれのカテゴリはこんなイメージというのをつらつらと行きたいと思います。

フルスタック

先の「WAFの要件」でいう「いろいろ差し込める余地がある」が、「いろいろ差し込まれた状態にある」というのがフルスタック系の特徴です。予め、「DB処理はCatalystではこうやる」とか、「バリデーション処理はCatalystではこうやる」みたいなのが、プラグインも含めたくさん用意されているんですね。なので、自分で書いてもいいですが、cpanとかでいろいろ探せば既存のプラグインがたくさん見つかります。予め決まっているので、それに沿って書けば、チーム内で不和が起きることもないし、ドキュメントも豊富だったりするから、学習コストも高い一方で、運用やトラブルコストは低いように思えます。

万能

先の「WAFの要件」でいう「いろいろ差し込める余地がある」が、まさに「余地がある」というのが万能系の特徴です。基本的に、子クラスにLite名前空間をもち、そのLiteな作成方法を使えば、昔のCGIのように1枚のファイルでアプリケーションを動かすことができます。簡単な1ペラアプリからたくさんクラスをわけた大規模サイトまで作れるし、マスターすれば高速に小さいアプリから大きいアプリまでつくれちゃう予感がする一方で、独自にいろいろ拡張できる余地があるために人によって拡張方法がかわりチームの拡張とともに、その後の拡張方法に苦労が生まれそうな予感です。

軽量系

先の「WAFの要件」でいう「いろいろ差し込める余地がある」という要件がないのが軽量系の特徴です。といってもKossyしかありませんがw万能系なら、CookBookというかたちなどで、「こういう風に書くといいよ」っていうのがあるんですけど、それすらもないのがいいですね。小さいアプリ作るなら、いろいろ決め打ちで用意されているので、前提覚えれば使い勝手もいいし、初めての人で集まって何か作る上では、ドキュメントがシンプルだから覚えてから使うまで短時間で済みそうだなーと思う次第です。

特殊系

上述の三つのカテゴリは、普通の(URIの原則に忠実な)ウェブサイトを作るツールだったのに対して、それらとはちょっと違ったアプリケーションを作るためのWAFのジャンルです。Tatsumakiの場合は、チャットシステムのような非同期でいろいろな処理を走らせたいアプリケーションを作成するのにまさに適したWAFのようです。

あれこれのまとめ ~なぜKossyか?~

というわけで前述しましたが、「Like a ハッカソン(pre Hachioji.pm #15)」というイベントのペアプロのテーマで「Kossy」を使うのは、学習コストが低いし、使い手によってそこまで大きなぶれがでないだろうなーというところが大きな理由です。また、先のPerlのWAFの分類に関して、「ちょっと違うよ!」とか「ぼくはこう思う」とかあればコメントとかもらえるとうれしいし、この記事に対してじゃなくても議論上がれば『PerlフレームワークCatalyst完全入門』以外にも、PerlのWAFに関する書籍出て、Perlのプレゼンスも高まるかなーと思う次第です。

Kossyのメモ

ぶっちゃけドキュメント読んだだけで、Kossyをまだ使っていないので、早急に勉強するために、参考情報をメモっておきます。とりあえず、サンプルアプリつくって別途記事にすることを予告します。

Kossyの特徴

  • 1毎のpsgiファイルで実行可能
  • ディスパッチャー/ルーターとコントローラーはSinatra-ish
  • テンプレートエンジンは、Text::Xslate(Kolon)
  • 独自のバリデーター
  • セットアップスクリプトあり
  • bootstrapがデフォルトでついてくる

参考情報

hirobanexの作ったサンプルアプリの話

『PerlのWAFのKossyとO/RマッパーTengでつくるWIKIアプリ』

まとめ

という感じですが、いかがでしょうか?みなさま是非お時間あれば、イベントご参加ください。http://atnd.org/events/25927。 「PerlのウェブアプリケーションフレームワークのKossyを使ったペアプロイベントやるよ!」って最初に書きましたが、モクモクやるのも歓迎です。いいムードでコーディングを楽しめればと思っています。ご意見等もお待ちしますー。

Perl hachioji.pm update_at : 2012-03-22T04:35:51
hirobanex.netの更新情報の取得
 RSSリーダーで購読する   
blog comments powered by Disqus