Your SlideShare is downloading. ×
PSGIへの誘い
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

PSGIへの誘い

5,000
views

Published on

Published in: Technology

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,000
On Slideshare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
2
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. PSGIへの誘い~CGIと比較して利便性を実感~ Perl Beginners #2 Lightning Talk @ytnobody
  • 2. 対象とねらい これからCGIについて学ぼうとしている方いまCGIについて学んでいる方に言いたい。「ぜひPSGIを触ってみてくれ!」と。
  • 3. PSGIとは?● Webサーバレイヤを抽象化するための仕様。 ● http://d.hatena.ne.jp/keyword/PSGI● Plack ● PerlでのPSGIリファレンス実装● 類似品(というか大体は兄貴分みたいなの) ● Ruby – Rack ● Python – WSGI
  • 4. よくわかんねえw
  • 5. 要するにPSGIというのは CGIと同じようにwebページを動的に生成する技術です
  • 6. シンプルなCGI#!/usr/bin/env perluse strict;### HTTPレスポンスヘッダprint “Content-type: text/htmlnn”;### HTTPレスポンスボディprint <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOF
  • 7. CGI.pmをつかってみる#!/usr/bin/env perluse strict;use CGI;### CGIインスタンス生成my $cgi = CGI->new;### HTTPレスポンスヘッダprint $cgi->header( -type => text/html );### HTTPレスポンスボディprint <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOF
  • 8. PSGIならこうなる● 下記ファイルをapp.psgiとして保存。use strict;my $body = <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOFsub { [ 200, [ Content-Type => text/html ], [ $body ] ]};
  • 9. PSGI-appの基本use strict; ← shebang(#!/usr/bin/env perl)は無し。my $body = <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOFsub { [ 200, [ Content-Type => text/html ], [ $body ] ]};
  • 10. PSGI-appの基本use strict;my $body = <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOFsub { [ 200, [ Content-Type => text/html ], [ $body ] ]};← PSGI-appは、コードリファレンス(sub {...})を返す。
  • 11. PSGI-appの基本use strict;my $body = <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOFsub { [ 200, [ Content-Type => text/html ], [ $body ] ] ← コードリファレンスは、配列リファレンスを返す。};
  • 12. PSGI-appの基本use strict;my $body = <<EOF;<html><body> <h1>Hello, world!</h1></body></html>EOFsub { [ 200, ← レスポンスコード。 [ Content-Type => text/html ], ← HTTPレスポンスヘッダ [ $body ] ← HTTPボディ ]};
  • 13. CGIのデプロイ(?)● httpデーモン(Apacheとか)側での設定 ● 特定のパス以下にリクエストが来た場合にCGIを実行 する指定 ● 上記で指定されたパスに相当するディレクトリにプログ ラムを設置 ● プログラムに実行権限を与える(パーミッションの設定)
  • 14. PSGI-appのデプロイ● あらかじめサーバにPlackをインストールしておく ● cpanm Plack● plackupコマンドでアプリケーションサーバを起動 ● plackup ./app.psgi
  • 15. デプロイの相違点● app.psgiに実行権限を与える必要はない● apacheなどのhttpデーモンを必要としない
  • 16. DEMOPSGI-appのライブコーディング & デプロイ
  • 17. PSGIを導入できる条件● SSHなどでシェルを実行できる環境であること – いわゆるレンタルwebスペースだと、この点はクリアできない● プロセスを常駐させても怒られないこと – いわゆるレンタルwebスペースだと(ry● (必須じゃないけど推奨)perlbrew+cpanmが使えること – いわゆるレン(ry
  • 18. オススメのデプロイ先● VPS ● さくらVPS ● WebARENA ● などなど。。。● お手持ちのMac● 自宅サーバ ● 各種LinuxやBSDなど● PaaS ● DotCloud – 但しデプロイ方法が独特。慣れると楽。
  • 19. まとめ● PSGIは難しくない ● CGIより簡単● デプロイするにはそれなりの環境が必要。 ● CGIみたいにレンタルスペースじゃ動かせない ● VPS/自宅サーバ/MacBookあたりがあれば楽々。● 今から学習するなら、断然PSGI ● CGIについて学習するのがダメなんじゃなくて、先に PSGIを触っておいたほうが、動くものを手早く作れる。 ● PSGIならWAFも色々あるよ! ● まずは恐れずにPSGIを触ろうよ!
  • 20. さいごに Twitterで #perl 付けて 「教えてください」っていうと、意外と教えてくれる人がいるかもしれないので やってみるといいんじゃないでしょうか。
  • 21. ご清聴ありがとうございました