20
Backlogでの Perlのつかいかた 山本 竜三 Fukuoka Perl Workshop #13 2009/08/22

Backlogでの Perlのつかいかた

Embed Size (px)

Citation preview

Page 1: Backlogでの Perlのつかいかた

BacklogでのPerlのつかいかた

山本 竜三

Fukuoka Perl Workshop #132009/08/22

Page 2: Backlogでの Perlのつかいかた

自己紹介

山本 竜三– やまもと りゅうぞう– 株式会社ヌーラボ所属– dragon3

Page 3: Backlogでの Perlのつかいかた

お題

Backlogではどんな感じで

Perlを使っているの?

Page 4: Backlogでの Perlのつかいかた

予定

• Backlogってなに?

• 全体の構成

• どんなふうにPerlを使っているか?

Page 5: Backlogでの Perlのつかいかた

Backlogってなに?

• プロジェクト管理ツール– 課題管理– Wiki– Subversion– ファイル共有(WebDAV)

Page 6: Backlogでの Perlのつかいかた

Backlogの構成

Page 7: Backlogでの Perlのつかいかた

Backlogの構成 - メイン

Page 8: Backlogでの Perlのつかいかた

Backlog Java ?≒

メインはJavaです

Page 9: Backlogでの Perlのつかいかた

Backlog での Perl利用歴

• 2006年– 運用やメンテナンス系をPerlで

• 2007年– 徐々にアプリにも拡大

• メールでコメント登録• Subversion+WebDAV機能の追加

• 2009年– 携帯版開発でPerlを採用

• プロトタイプがそのまま...

Page 10: Backlogでの Perlのつかいかた

Backlogの構成

Page 11: Backlogでの Perlのつかいかた

Backlog = Java + Perl ?

• Java– Webアプリケーション (PC版)– 日次メール送信

• Perl– Webアプリケーション

• 携帯版• 運用システム

– SubversionやWebDAVの認証• mod_perlハンドラ

– Subversionフック• 容量チェックやコミットメール送信

– メールでコメント登録

Page 12: Backlogでの Perlのつかいかた

携帯版Webアプリ - 構成

• Backlog::Mobile• Catalyst (5.80007)• DBIx::Class• TT• 日本&携帯的

– HTTP::MobileAgent– Net::CIDR::MobileJP– Encode::JP::Mobile– HTML::Entities::ConvertPictogramMobileJp– Lingua::JA::Regular::Unicode

Page 13: Backlogでの Perlのつかいかた

携帯版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

Page 14: Backlogでの Perlのつかいかた

携帯版Webアプリ - 絵文字

• 絵文字のキャリア間変換– 変換用のView作成– HTML::Entities::ConvertPictogramMobileJp

• Backlog独自の絵文字– 単に画像タグへの置換

• PC版Webアプリにも同様の変換を実装

Page 15: Backlogでの Perlのつかいかた

携帯版Webアプリ - データアクセス

• データの参照はDBに直接アクセス– MySQLマスター/スレーブで負荷分散(予定)

• 更新系はPC版WebアプリのAPIを使用– XML-RPCで– WebService::Backlog

Page 16: Backlogでの Perlのつかいかた

運用Webアプリ - 構成

• CGI::Application• Class::DBI

… 古くからあるのです

Page 17: Backlogでの Perlのつかいかた

SubversionやWebDAVの認証

• Backlog::Apache• mod_perlハンドラ

– PerlAccessHandler– PerlAuthenHandler– PerlAuthzHandler – 他

Page 18: Backlogでの Perlのつかいかた

#!/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でキックされる

Page 19: Backlogでの Perlのつかいかた

まとめ と これから

• Backlogでは結構Perlを使っています• 実運用での事例として紹介しました

• これからは”モダン”に使っていきたい

Page 20: Backlogでの Perlのつかいかた

ご清聴ありがとうございました