backlogでの perlのつかいかた
TRANSCRIPT
BacklogでのPerlのつかいかた
山本 竜三
Fukuoka Perl Workshop #132009/08/22
自己紹介
山本 竜三– やまもと りゅうぞう– 株式会社ヌーラボ所属– dragon3
お題
Backlogではどんな感じで
Perlを使っているの?
予定
• Backlogってなに?
• 全体の構成
• どんなふうにPerlを使っているか?
Backlogってなに?
• プロジェクト管理ツール– 課題管理– Wiki– Subversion– ファイル共有(WebDAV)
Backlogの構成
Backlogの構成 - メイン
Backlog Java ?≒
メインはJavaです
Backlog での Perl利用歴
• 2006年– 運用やメンテナンス系をPerlで
• 2007年– 徐々にアプリにも拡大
• メールでコメント登録• Subversion+WebDAV機能の追加
• 2009年– 携帯版開発でPerlを採用
• プロトタイプがそのまま...
Backlogの構成
Backlog = Java + Perl ?
• Java– Webアプリケーション (PC版)– 日次メール送信
• Perl– Webアプリケーション
• 携帯版• 運用システム
– SubversionやWebDAVの認証• mod_perlハンドラ
– Subversionフック• 容量チェックやコミットメール送信
– メールでコメント登録
携帯版Webアプリ - 構成
• Backlog::Mobile• Catalyst (5.80007)• DBIx::Class• TT• 日本&携帯的
– HTTP::MobileAgent– Net::CIDR::MobileJP– Encode::JP::Mobile– HTML::Entities::ConvertPictogramMobileJp– Lingua::JA::Regular::Unicode
携帯版Webアプリ - Catalyst
• Moose的実装が便利
use Moose;override 'uri_for' => sub { my ( $c, $arg ) = @_; my $uri = super(); if ( $c->stash->{space} ) { $uri->path( '/' . $c->stash->{space}->space_key . $uri->path ); } return $uri;};
Backlog::Mobile
携帯版Webアプリ - 絵文字
• 絵文字のキャリア間変換– 変換用のView作成– HTML::Entities::ConvertPictogramMobileJp
• Backlog独自の絵文字– 単に画像タグへの置換
• PC版Webアプリにも同様の変換を実装
携帯版Webアプリ - データアクセス
• データの参照はDBに直接アクセス– MySQLマスター/スレーブで負荷分散(予定)
• 更新系はPC版WebアプリのAPIを使用– XML-RPCで– WebService::Backlog
運用Webアプリ - 構成
• CGI::Application• Class::DBI
… 古くからあるのです
SubversionやWebDAVの認証
• Backlog::Apache• mod_perlハンドラ
– PerlAccessHandler– PerlAuthenHandler– PerlAuthzHandler – 他
#!/bin/sh
PERL=/usr/bin/perlREPOS_PATH="$1"REV="$2"
TOTAL_COMMIT_SIZE=`cat "${REPOS_PATH}/db/revs/${REV}" | wc -c`
REPOS_PATH="$REPOS_PATH" \REV="$REV" \COMMIT_SIZE="$TOTAL_COMMIT_SIZE" \DSN="dbi:mysql:database=backlog;host=db" \$PERL -MBacklog::SVN::Hook -e 'Backlog::SVN::Hook->new->post_commit'
Subversionフック
• Backlog::SVN::Hook• (pre|post)-hookでキックされる
まとめ と これから
• Backlogでは結構Perlを使っています• 実運用での事例として紹介しました
• これからは”モダン”に使っていきたい
ご清聴ありがとうございました