SlideShare a Scribd company logo
1 of 20
Download to read offline
Backlogでの
Perlのつかいかた
   山本 竜三




           Fukuoka Perl Workshop #13
                          2009/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
    –   他
Subversionフック
•      Backlog::SVN::Hook
•      (pre|post)-hookでキックされる
    #!/bin/sh

    PERL=/usr/bin/perl
    REPOS_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'
まとめ と これから
•   Backlogでは結構Perlを使っています
•   実運用での事例として紹介しました

•   これからは”モダン”に使っていきたい
ご清聴
ありがとうございました

More Related Content

What's hot

GCP HTTPロードバランサ運用例
GCP HTTPロードバランサ運用例GCP HTTPロードバランサ運用例
GCP HTTPロードバランサ運用例Fumihiko Shiroyama
 
20180929 lowcode developlogicflow
20180929 lowcode developlogicflow20180929 lowcode developlogicflow
20180929 lowcode developlogicflowTomoyuki Obi
 
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscalaビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscalatakezoe
 
フィードフォースと AWS と私
フィードフォースと AWS と私フィードフォースと AWS と私
フィードフォースと AWS と私a know
 
イケてる分析基盤をつくる
イケてる分析基盤をつくるイケてる分析基盤をつくる
イケてる分析基盤をつくるAtsushi Hayakawa
 
Capistrano in practice - WebCareer
Capistrano in practice - WebCareerCapistrano in practice - WebCareer
Capistrano in practice - WebCareerKyosuke MOROHASHI
 
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015Masahiro Nagano
 
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポートJAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート真吾 吉田
 
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみアメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみKazunari Hara
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.jsTanUkkii
 
データポータルソフトウェア CKAN
データポータルソフトウェア CKANデータポータルソフトウェア CKAN
データポータルソフトウェア CKANFumihiro Kato
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践Shumpei Shiraishi
 
採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」Takayuki Fukumoto
 
Gearpump, akka based Distributed Reactive Realtime Engine
Gearpump, akka based Distributed Reactive Realtime EngineGearpump, akka based Distributed Reactive Realtime Engine
Gearpump, akka based Distributed Reactive Realtime EngineSotaro Kimura
 
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Tokuhiro Matsuno
 
知って欲しいPaaSの話
知って欲しいPaaSの話知って欲しいPaaSの話
知って欲しいPaaSの話Kazuto Kusama
 

What's hot (20)

GCP HTTPロードバランサ運用例
GCP HTTPロードバランサ運用例GCP HTTPロードバランサ運用例
GCP HTTPロードバランサ運用例
 
Node platforms
Node platformsNode platforms
Node platforms
 
20180929 lowcode developlogicflow
20180929 lowcode developlogicflow20180929 lowcode developlogicflow
20180929 lowcode developlogicflow
 
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscalaビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
 
フィードフォースと AWS と私
フィードフォースと AWS と私フィードフォースと AWS と私
フィードフォースと AWS と私
 
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_cccSpring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
 
イケてる分析基盤をつくる
イケてる分析基盤をつくるイケてる分析基盤をつくる
イケてる分析基盤をつくる
 
Capistrano in practice - WebCareer
Capistrano in practice - WebCareerCapistrano in practice - WebCareer
Capistrano in practice - WebCareer
 
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
 
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポートJAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
JAWS-UGアーキテクチャ専門支部 ServerlessConfレポート
 
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみアメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
アメブロ2016 アメブロフロント刷新にみる ひかりとつらみ
 
Isomorphic web development with scala and scala.js
Isomorphic web development  with scala and scala.jsIsomorphic web development  with scala and scala.js
Isomorphic web development with scala and scala.js
 
データポータルソフトウェア CKAN
データポータルソフトウェア CKANデータポータルソフトウェア CKAN
データポータルソフトウェア CKAN
 
[jjug] Java と Benchmark
[jjug] Java と Benchmark[jjug] Java と Benchmark
[jjug] Java と Benchmark
 
オフラインファーストの思想と実践
オフラインファーストの思想と実践オフラインファーストの思想と実践
オフラインファーストの思想と実践
 
採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」採用LT「まだお祈りデプロイで消耗してるの?」
採用LT「まだお祈りデプロイで消耗してるの?」
 
Gearpump, akka based Distributed Reactive Realtime Engine
Gearpump, akka based Distributed Reactive Realtime EngineGearpump, akka based Distributed Reactive Realtime Engine
Gearpump, akka based Distributed Reactive Realtime Engine
 
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用
 
CMS for Cloud by Ruby
CMS for Cloud by RubyCMS for Cloud by Ruby
CMS for Cloud by Ruby
 
知って欲しいPaaSの話
知って欲しいPaaSの話知って欲しいPaaSの話
知って欲しいPaaSの話
 

Similar to Backlogでの Perlのつかいかた

Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッションYuichi Hasegawa
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShiftEtsuji Nakai
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンKazuyuki Miyake
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...Naoya Ito
 
Webフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapyWebフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapyMasashi Shibata
 
JavaScript And Keywords
JavaScript And KeywordsJavaScript And Keywords
JavaScript And Keywordsuupaa
 
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!Yoichi Kawasaki
 
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構Ryosuke MATSUMOTO
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-PE-BANK
 
Azure 高速サイトソリューション
Azure 高速サイトソリューションAzure 高速サイトソリューション
Azure 高速サイトソリューションHiromasa Oka
 
Clovaにおける機械学習モジュールの配信&運用基盤の紹介
Clovaにおける機械学習モジュールの配信&運用基盤の紹介Clovaにおける機械学習モジュールの配信&運用基盤の紹介
Clovaにおける機械学習モジュールの配信&運用基盤の紹介LINE Corporation
 
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンAzure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンKazuyuki Miyake
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験AdvancedTechNight
 
Observability, Service Mesh and Microservices
Observability, Service Mesh and MicroservicesObservability, Service Mesh and Microservices
Observability, Service Mesh and MicroservicesTaiki
 
QCon北京2015 sina jpool-微博平台自动化运维实践
QCon北京2015 sina jpool-微博平台自动化运维实践QCon北京2015 sina jpool-微博平台自动化运维实践
QCon北京2015 sina jpool-微博平台自动化运维实践Weibo Corporation
 
fluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギングfluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギングYuichi Tateno
 
Data management of cosmos db using apache gremlin
Data management of cosmos db using apache gremlinData management of cosmos db using apache gremlin
Data management of cosmos db using apache gremlinTakao Tetsuro
 

Similar to Backlogでの Perlのつかいかた (20)

Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッション
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
 
Webフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapyWebフレームワークを作ってる話 #osakapy
Webフレームワークを作ってる話 #osakapy
 
JavaScript And Keywords
JavaScript And KeywordsJavaScript And Keywords
JavaScript And Keywords
 
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
Web App for Containers + MySQLでコンテナ対応したRailsアプリを作ろう!
 
HTML5&API総まくり
HTML5&API総まくりHTML5&API総まくり
HTML5&API総まくり
 
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
 
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
Javaヂカラ #Java最新動向 -Java 11 の新機能やOracle Code One 2018 発の最新技術トレンドを一気にキャッチアップ-
 
Azure 高速サイトソリューション
Azure 高速サイトソリューションAzure 高速サイトソリューション
Azure 高速サイトソリューション
 
Clovaにおける機械学習モジュールの配信&運用基盤の紹介
Clovaにおける機械学習モジュールの配信&運用基盤の紹介Clovaにおける機械学習モジュールの配信&運用基盤の紹介
Clovaにおける機械学習モジュールの配信&運用基盤の紹介
 
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンAzure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
 
全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験全部入り!WGPで高速JavaScript+HML5体験
全部入り!WGPで高速JavaScript+HML5体験
 
Observability, Service Mesh and Microservices
Observability, Service Mesh and MicroservicesObservability, Service Mesh and Microservices
Observability, Service Mesh and Microservices
 
QCon北京2015 sina jpool-微博平台自动化运维实践
QCon北京2015 sina jpool-微博平台自动化运维实践QCon北京2015 sina jpool-微博平台自动化运维实践
QCon北京2015 sina jpool-微博平台自动化运维实践
 
HTML5最新動向
HTML5最新動向HTML5最新動向
HTML5最新動向
 
fluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギングfluentd を利用した大規模ウェブサービスのロギング
fluentd を利用した大規模ウェブサービスのロギング
 
Data management of cosmos db using apache gremlin
Data management of cosmos db using apache gremlinData management of cosmos db using apache gremlin
Data management of cosmos db using apache gremlin
 

Backlogでの Perlのつかいかた

  • 1. Backlogでの Perlのつかいかた 山本 竜三 Fukuoka Perl Workshop #13 2009/08/22
  • 2. 自己紹介 山本 竜三 – やまもと りゅうぞう – 株式会社ヌーラボ所属 – dragon3
  • 3. お題 Backlogでは どんな感じで Perlを使っているの?
  • 4. 予定 • Backlogってなに? • 全体の構成 • どんなふうにPerlを使っているか?
  • 5. Backlogってなに? • プロジェクト管理ツール – 課題管理 – Wiki – Subversion – ファイル共有(WebDAV)
  • 8. Backlog ≒ Java ? メインは Javaです
  • 9. Backlog での Perl利用歴 • 2006年 – 運用やメンテナンス系をPerlで • 2007年 – 徐々にアプリにも拡大 • メールでコメント登録 • Subversion+WebDAV機能の追加 • 2009年 – 携帯版開発でPerlを採用 • プロトタイプがそのまま...
  • 11. Backlog = Java + Perl ? • Java – Webアプリケーション (PC版) – 日次メール送信 • Perl – Webアプリケーション • 携帯版 • 運用システム – SubversionやWebDAVの認証 • mod_perlハンドラ – Subversionフック • 容量チェックやコミットメール送信 – メールでコメント登録
  • 12. 携帯版Webアプリ - 構成 • Backlog::Mobile • Catalyst (5.80007) • DBIx::Class • TT • 日本&携帯的 – HTTP::MobileAgent – Net::CIDR::MobileJP – Encode::JP::Mobile – HTML::Entities::ConvertPictogramMobileJp – Lingua::JA::Regular::Unicode
  • 13. 携帯版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
  • 14. 携帯版Webアプリ - 絵文字 • 絵文字のキャリア間変換 – 変換用のView作成 – HTML::Entities::ConvertPictogramMobileJp • Backlog独自の絵文字 – 単に画像タグへの置換 • PC版Webアプリにも同様の変換を実装
  • 15. 携帯版Webアプリ - データアクセス • データの参照はDBに直接アクセス – MySQLマスター/スレーブで負荷分散(予定) • 更新系はPC版WebアプリのAPIを使用 – XML-RPCで – WebService::Backlog
  • 16. 運用Webアプリ - 構成 • CGI::Application • Class::DBI … 古くからあるのです
  • 17. SubversionやWebDAVの認証 • Backlog::Apache • mod_perlハンドラ – PerlAccessHandler – PerlAuthenHandler – PerlAuthzHandler – 他
  • 18. Subversionフック • Backlog::SVN::Hook • (pre|post)-hookでキックされる #!/bin/sh PERL=/usr/bin/perl REPOS_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'
  • 19. まとめ と これから • Backlogでは結構Perlを使っています • 実運用での事例として紹介しました • これからは”モダン”に使っていきたい