少人数でのwebアプリ開発 cgiからpsgiまでの変遷
DESCRIPTION
YAPC::Asia Tokyo 2010で使用したスライドですTRANSCRIPT
少人数での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月上旬予定
ご清聴ありがとうございました