少人数でのWebアプリ開発 CGIからPSGIまでの変遷

Preview:

DESCRIPTION

YAPC::Asia Tokyo 2010で使用したスライドです

Citation preview

少人数でのWebアプリ開発CGIからPSGIまでの変遷

YAPC::Asia Tokyo 2011Yoshihiro Sasaki

自己紹介

自己紹介•佐々木 義広

自己紹介•佐々木 義広• Twitter: @aloelight

自己紹介•佐々木 義広• Twitter: @aloelight• CPAN: YSASAKI

自己紹介•佐々木 義広• Twitter: @aloelight• CPAN: YSASAKI• 株式会社アイダック CPS事業部

自己紹介•佐々木 義広• Twitter: @aloelight• CPAN: YSASAKI• 株式会社アイダック CPS事業部• Hokkaido.pm

自己紹介•佐々木 義広• Twitter: @aloelight• CPAN: YSASAKI• 株式会社アイダック CPS事業部• Hokkaido.pm • YAPC::Asia Tokyoは1年ぶり3回目

札幌

For PC

For Feature Phone

For Smart Phone

1. はじめに

2. CGI

3. ModPerl

4. PSGI

5. 今後の予定

6. まとめ

はじめに

•実装の詳しい話しは出ません

•実装の詳しい話しは出ません• PSGIの仕様・使い方も出ません

•実装の詳しい話しは出ません• PSGIの仕様・使い方も出ません•『なぜ、高校生がPerlを使うのか?』はフェライト会議室です

開発スタイルについて

OS

Linux

Mac

Windows

*BSD

UNIX

VCS

cvs

svn

git

hg

bzr

Web ServerCGI/Apache

mod_perl2/Apache2.x

FastCGI + nginx

FastCGI + IIS

Starman

Editor

Vim

Emacs

Padre

メモ帳

秀丸

Mi

その開発スタイルは多分誰かが

試行錯誤した結果

私の開発スタイルの変化を紹介します

4年半

対象期間

対象期間期間 実行方法 人数

2006.10 ~ 2007.04 CGI 2

2007.04 ~ 2009.10 ModPerl 2 ~ 2.5

2009.10 ~ PSGI 2.5 ~ 3.5

CGI2006.10 ~ 2007.04

•趣味グラマからプログラマになる

•趣味グラマからプログラマになる•O’Reillyの動物本を読む

•趣味グラマからプログラマになる•O’Reillyの動物本を読む•その他の技術情報は周囲の人

2006年の開発スタイル

•ライブラリはCore Moduleと少し自作•実行形式はCGI• Excelでタスク管理• deployはtarballをscp•本番サーバで直接作業

不満点人力バージョニング

人力バージョニングの例

$ ls -1 | grep index.cgiindex.cgiindex.cgi.2index.cgi.20061011index.cgi.2006101102index.cgi.2006107index.cgi.backindex.cgi.back.back

人力バージョニングの例

不満点Excelでタスク管理

不満点

1.更新されない

Excelでタスク管理

不満点

1.更新されない2.更新したけど、共有されていない

Excelでタスク管理

ModPerl2007.04 ~ 2009.10

RSSの利用

RSSの利用1.効率的

RSSの利用1.効率的

2.情報の鮮度が高い

CGIからModPerlへ

1. YAPCに来てるPerl Mongerが凄い

CGIからModPerlへ

1. YAPCに来てるPerl Mongerが凄い

2.自作よりCPANの方が安心

CGIからModPerlへ

1. YAPCに来てるPerl Mongerが凄い

2.自作よりCPANの方が安心

3.CPAN Module 使いまくり

CGIからModPerlへ

1. YAPCに来てるPerl Mongerが凄い

2.自作よりCPANの方が安心

3.CPAN Module 使いまくり

4.大量のuseでCGIでは遅い

CGIからModPerlへ

1. YAPCに来てるPerl Mongerが凄い

2.自作よりCPANの方が安心

3.CPAN Module 使いまくり

4.大量のuseでCGIでは遅い

5.ModPerlに変更

CGIからModPerlへ

trac + svn の導入

trac + svn の導入1.人力バージョニングにさようなら

trac + svn の導入1.人力バージョニングにさようなら

2. svn checkoutでデータ移行

trac + svn の導入1.人力バージョニングにさようなら

2. svn checkoutでデータ移行

3.Excelの代わりにチケットを発行

DevからDevOpsへ

DevからDevOpsへ1.2009年初頭、インフラ、監視担当の人が退職し、一人チームになる

DevからDevOpsへ1.2009年初頭、インフラ、監視担当の人が退職し、一人チームになる

2.自分のためにログを出す

DevからDevOpsへ1.2009年初頭、インフラ、監視担当の人が退職し、一人チームになる

2.自分のためにログを出す

3.保守しやすいコードを書く

DevからDevOpsへ1.2009年初頭、インフラ、監視担当の人が退職し、一人チームになる

2.自分のためにログを出す

3.保守しやすいコードを書く

4.負荷が高い仕様は考えなおしてもらう

2009年の開発スタイル

•CPAN Moduleを活用• CGIをModPerlに変更• VCSはSubversion• tracのチケットでタスク管理•開発環境のLinuxサーバで直接開発

不満点ModPerl

不満点

•速度面で必要なだけModPerl

不満点

•速度面で必要なだけ•開発サーバには社内用サービスも同居

ModPerl

不満点

•速度面で必要なだけ•開発サーバには社内用サービスも同居• Apacheが必須

ModPerl

不満点開発サーバ上で直接作業

不満点

•複数人で同じサービスを開発するときにファイルの奪い合い

開発サーバ上で直接作業

不満点

•複数人で同じサービスを開発するときにファイルの奪い合い

•公開前のコンテンツのテストで開発サーバを使用するため、動かない状態になっていると企画から苦情が出る

開発サーバ上で直接作業

不満点テストがほとんどない

不満点

•CGIをModPerl::Registryで動かしている状態なのでテストが書きにくい

テストがほとんどない

不満点

•CGIをModPerl::Registryで動かしている状態なのでテストが書きにくい

•そもそもテストを書く習慣がない

テストがほとんどない

不満点

•CGIをModPerl::Registryで動かしている状態なのでテストが書きにくい

•そもそもテストを書く習慣がない•時間もない

テストがほとんどない

PSGI2009.10 ~

PSGI-1.0Plack-0.9012

2009.10.132009.11.17

Plackの特徴•セットアップが簡単•十分に速いWeb Serverの実装がある•Middlewareで簡単に拡張できる•環境に特化したオレオレWAFが作り易い

独自WAFの作成

独自WAFの作成•既存のライブラリに合わせてある

独自WAFの作成•既存のライブラリに合わせてある• Plack + Moose

独自WAFの作成•既存のライブラリに合わせてある• Plack + Moose • MVCモデル

独自WAFの作成•既存のライブラリに合わせてある• Plack + Moose • MVCモデル• Feature Phone向け

独自WAFの作成•既存のライブラリに合わせてある• Plack + Moose • MVCモデル• Feature Phone向け• CPAN形式のプロジェクト構成

個人環境での開発

個人環境での開発1.VMware上にLinuxをインストール

個人環境での開発1.VMware上にLinuxをインストール

2.独自WAFをセットアップ

個人環境での開発1.VMware上にLinuxをインストール

2.独自WAFをセットアップ

3.VMware上で開発

個人環境での開発1.VMware上にLinuxをインストール

2.独自WAFをセットアップ

3.VMware上で開発

4.開発用サーバにdeployする

個人環境での開発1.VMware上にLinuxをインストール

2.独自WAFをセットアップ

3.VMware上で開発

4.開発用サーバにdeployする

5.問題がなければ本番へ

テストの習慣化

テストの習慣化1.ロジックを分離できる設計にする

テストの習慣化1.ロジックを分離できる設計にする

2.『今日もテスト書いたわー』と連呼して、テストを書かない同僚に罪の意識を植えつける

テストの習慣化1.ロジックを分離できる設計にする

2.『今日もテスト書いたわー』と連呼して、テストを書かない同僚に罪の意識を植えつける

3.prove, make test, quickrun.vimで一発で動くようにする

テスト時間の確保方法

テスト時間の確保方法1. Facebookで上司、社長、その他社内の偉い人と友人になる

テスト時間の確保方法1. Facebookで上司、社長、その他社内の偉い人と友人になる

2.TwitterとFacebookを連携させる

テスト時間の確保方法1. Facebookで上司、社長、その他社内の偉い人と友人になる

2.TwitterとFacebookを連携させる3.「テストを書かなくていいのは小学生まで」と吹聴する

テスト時間の確保方法1. Facebookで上司、社長、その他社内の偉い人と友人になる

2.TwitterとFacebookを連携させる3.「テストを書かなくていいのは小学生まで」と吹聴する

4.上司に呼び出される

テスト時間の確保方法1. Facebookで上司、社長、その他社内の偉い人と友人になる

2.TwitterとFacebookを連携させる3.「テストを書かなくていいのは小学生まで」と吹聴する

4.上司に呼び出される5.交渉でテスト時間を公認させる

2011年の開発スタイル

•CPANモジュールが盛り沢山• PSGI/Plackベースの独自WAF• VMware上で開発• trac + Subversion•テストをもりもり

今後の予定

今後の予定•JenkinsCI or Ukigumo の導入

今後の予定•JenkinsCI or Ukigumo の導入• deploy作業の自動化

今後の予定•JenkinsCI or Ukigumo の導入• deploy作業の自動化• Subversionをgitに移行

今後の予定•JenkinsCI or Ukigumo の導入• deploy作業の自動化• Subversionをgitに移行• tracをupdate

今後の予定•JenkinsCI or Ukigumo の導入• deploy作業の自動化• Subversionをgitに移行• tracをupdate• Carton使ってみたい

今後の予定•JenkinsCI or Ukigumo の導入• deploy作業の自動化• Subversionをgitに移行• tracをupdate• Carton使ってみたい• pfperlも気になる

まとめ

まとめ•改善しようと思った最初のきっかけはYAPC::Asia

まとめ•改善しようと思った最初のきっかけはYAPC::Asia

• 定期的に開発スタイルを見直す

まとめ•改善しようと思った最初のきっかけはYAPC::Asia

• 定期的に開発スタイルを見直す•小規模なら変更も難しくない

Hokkaido.pm12月上旬予定

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