少人数でのwebアプリ開発 cgiからpsgiまでの変遷

111
少人数でのWebアプリ開発 CGIからPSGIまでの変遷 YAPC::Asia Tokyo 2011 Yoshihiro Sasaki

Upload: yoshihiro-sasaki

Post on 08-Jul-2015

5.191 views

Category:

Technology


1 download

DESCRIPTION

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

TRANSCRIPT

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

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

YAPC::Asia Tokyo 2011Yoshihiro Sasaki

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

自己紹介

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

自己紹介•佐々木 義広

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

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

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

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

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

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

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

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

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

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

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

札幌

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

For PC

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

For Feature Phone

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

For Smart Phone

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

1. はじめに

2. CGI

3. ModPerl

4. PSGI

5. 今後の予定

6. まとめ

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

はじめに

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

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

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

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

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

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

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

開発スタイルについて

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

OS

Linux

Mac

Windows

*BSD

UNIX

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

VCS

cvs

svn

git

hg

bzr

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

Web ServerCGI/Apache

mod_perl2/Apache2.x

FastCGI + nginx

FastCGI + IIS

Starman

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

Editor

Vim

Emacs

Padre

メモ帳

秀丸

Mi

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

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

試行錯誤した結果

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

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

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

4年半

対象期間

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

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

2006.10 ~ 2007.04 CGI 2

2007.04 ~ 2009.10 ModPerl 2 ~ 2.5

2009.10 ~ PSGI 2.5 ~ 3.5

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

CGI2006.10 ~ 2007.04

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

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

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

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

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

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

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

2006年の開発スタイル

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

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

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

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

人力バージョニングの例

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

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

人力バージョニングの例

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

不満点Excelでタスク管理

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

不満点

1.更新されない

Excelでタスク管理

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

不満点

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

Excelでタスク管理

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

ModPerl2007.04 ~ 2009.10

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

RSSの利用

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

RSSの利用1.効率的

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

RSSの利用1.効率的

2.情報の鮮度が高い

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

CGIからModPerlへ

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

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

CGIからModPerlへ

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

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

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

CGIからModPerlへ

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

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

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

3.CPAN Module 使いまくり

CGIからModPerlへ

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

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

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

3.CPAN Module 使いまくり

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

CGIからModPerlへ

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

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

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

3.CPAN Module 使いまくり

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

5.ModPerlに変更

CGIからModPerlへ

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

trac + svn の導入

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

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

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

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

2. svn checkoutでデータ移行

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

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

2. svn checkoutでデータ移行

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

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

DevからDevOpsへ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2009年の開発スタイル

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

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

不満点ModPerl

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

不満点

•速度面で必要なだけModPerl

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

不満点

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

ModPerl

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

不満点

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

ModPerl

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

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

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

不満点

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

開発サーバ上で直接作業

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

不満点

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

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

開発サーバ上で直接作業

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

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

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

不満点

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

テストがほとんどない

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

不満点

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

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

テストがほとんどない

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

不満点

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

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

テストがほとんどない

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

PSGI2009.10 ~

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

PSGI-1.0Plack-0.9012

2009.10.132009.11.17

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

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

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

独自WAFの作成

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

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

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

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

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

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

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

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

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

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

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

個人環境での開発

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

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

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

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

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

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

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

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

3.VMware上で開発

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

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

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

3.VMware上で開発

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

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

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

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

3.VMware上で開発

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

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

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

テストの習慣化

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

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

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

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

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

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

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

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

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

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

テスト時間の確保方法

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

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

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

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

2.TwitterとFacebookを連携させる

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

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

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

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

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

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

4.上司に呼び出される

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

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

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

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

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

2011年の開発スタイル

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

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

今後の予定

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

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

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

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

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

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

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

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

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

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

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

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

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

まとめ

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

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

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

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

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

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

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

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

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

Hokkaido.pm12月上旬予定

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

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