Ruby プログラマのための Perl ウェブアプリケーション開発入門 (Perl web development guide for Rubyist )

Kensuke Nagae
Kensuke NagaeDeveloper at Quipper
Ruby
Perl


            2011/10/14
        YAPC::Asia Tokyo 2011
$ whoami

•           <Kensuke Nagae>

•
• @kyanny
Ruby プログラマのための Perl ウェブアプリケーション開発入門 (Perl web development guide for Rubyist )
Ruby プログラマのための Perl ウェブアプリケーション開発入門 (Perl web development guide for Rubyist )
Perl => Ruby
•       Ruby

• Rails
•
Ruby プログラマのための Perl ウェブアプリケーション開発入門 (Perl web development guide for Rubyist )
Ruby
Perl
Ruby


• Environment
• Web Application Framework
• Platform
Environment
Environment

•   Ruby

•
           ...
Ruby プログラマのための Perl ウェブアプリケーション開発入門 (Perl web development guide for Rubyist )
RVM

• Ruby Version Manager
•        Ruby

•             Ruby
RVM

•
•
•
$ rvm install 1.9.2
$ rvm use 1.9.2
$ rvm use system
Web Application
 Framework
Web Application
       Framework

• Rails
• Rails
• Sinatra, Padrino, Ramaze, etc.
Ruby プログラマのための Perl ウェブアプリケーション開発入門 (Perl web development guide for Rubyist )
Sinatra


•                    DSL

•             (get         )
require 'sinatra'

get '/hi' do
  "Hello World!"
end
Platform
Platform

•
•                VPS

• Google AppEngine
Ruby プログラマのための Perl ウェブアプリケーション開発入門 (Perl web development guide for Rubyist )
Heroku


• Rack                 PaaS

• CLI + Git
$ gem install heroku
$ heroku create
$ git push heroku master
s/Ruby/Perl/
Ruby
Perl
Perl


• Environment
• Framework
• Platform
Environment
Environment

• 5.8.x
                        ...

•              CPAN
Ruby プログラマのための Perl ウェブアプリケーション開発入門 (Perl web development guide for Rubyist )
Perlbrew

• RVM
•       Perl

•              Perl
Perlbrew

•
•
•
$ perlbrew install perl-5.14.1
$ perlbrew switch perl-5.14.1
$ perlbrew switch /usr/bin/perl
Web Application
 Framework
Web Application
       Framework

• Catalyst
• Catalyst
• Dancer, Mojolicious::Lite, Amon2::Lite, etc.
Ruby プログラマのための Perl ウェブアプリケーション開発入門 (Perl web development guide for Rubyist )
Mojolicious::Lite

• Mojolicious
•                        DSL

• Sinatra (     )
use Mojolicious::Lite;

get '/hi' => {
    text => 'Hello World!'
};

app->start;
Platform
Platform

• CGI                       ...

•      mod_perl, FastCGI

• PSGI             Heroku
Ruby プログラマのための Perl ウェブアプリケーション開発入門 (Perl web development guide for Rubyist )
DotCloud

• PSGI                           PaaS

• CLI + Git, Mercurial
• YAPC::Asia Tokyo 2011 Sponsor :)
$ sudo easy_install pip &&
sudo pip install dotcloud

$ dotcloud create myapp
$ dotcloud push myapp
Ruby プログラマのための Perl ウェブアプリケーション開発入門 (Perl web development guide for Rubyist )
Environment

• RVM
• Perlbrew
•
$ rvm install 1.9.2
$ rvm use 1.9.2
$ rvm use system
$ perlbrew install perl-5.14.1
$ perlbrew switch perl-5.14.1
$ perlbrew switch /usr/bin/perl
Web Application
       Framework

• Sinatra
• Mojolicious::Lite
•                       DSL
require 'sinatra'

get '/hi' do
  "Hello World!"
end
use Mojolicious::Lite;

get '/hi' => {
    text => 'Hello World!'
};

app->start;
Platform

• Heroku
• DotCloud
•                   PaaS
$ gem install heroku
$ heroku create
$ git push heroku master
$ sudo easy_install pip &&
sudo pip install dotcloud

$ dotcloud create myapp
$ dotcloud push myapp
Ruby   Perl

•
•
• (Ruby|Perl)
CM
We’re Hiring!
Ruby プログラマのための Perl ウェブアプリケーション開発入門 (Perl web development guide for Rubyist )
Ruby プログラマのための Perl ウェブアプリケーション開発入門 (Perl web development guide for Rubyist )
Thank you!
1 of 60

More Related Content

Similar to Ruby プログラマのための Perl ウェブアプリケーション開発入門 (Perl web development guide for Rubyist )

Similar to Ruby プログラマのための Perl ウェブアプリケーション開発入門 (Perl web development guide for Rubyist ) (20)

GIT, RVM, FIRST HEROKU APPGIT, RVM, FIRST HEROKU APP
GIT, RVM, FIRST HEROKU APP
Pavel Tyk1.3K views
ASP.NET 5 auf Raspberry PI & dockerASP.NET 5 auf Raspberry PI & docker
ASP.NET 5 auf Raspberry PI & docker
Jürgen Gutsch3K views
How to distribute Ruby to the worldHow to distribute Ruby to the world
How to distribute Ruby to the world
Hiroshi SHIBATA3.8K views
Setup rubySetup ruby
Setup ruby
jugyo kohno1.6K views
Nodejs web,db,hostingNodejs web,db,hosting
Nodejs web,db,hosting
Kenu, GwangNam Heo817 views
perlbrew yapcasia 2010perlbrew yapcasia 2010
perlbrew yapcasia 2010
Kang-min Liu1.4K views
What is octohost?What is octohost?
What is octohost?
Darron Froese825 views
Node js quick-tour_v2Node js quick-tour_v2
Node js quick-tour_v2
http403565 views
Node js quick tour v2Node js quick tour v2
Node js quick tour v2
Wyatt Fang1.1K views
Node js quick-tour_v2Node js quick-tour_v2
Node js quick-tour_v2
tianyi5212222660 views
Deploying to Ubuntu on LinodeDeploying to Ubuntu on Linode
Deploying to Ubuntu on Linode
WO Community1.5K views
Toolbox of a Ruby TeamToolbox of a Ruby Team
Toolbox of a Ruby Team
Arto Artnik422 views
Deployment talesDeployment tales
Deployment tales
Amoniac OÜ163 views
Deployment talesDeployment tales
Deployment tales
Aleksandr Simonov194 views

Recently uploaded(20)

ChatGPT and AI for Web DevelopersChatGPT and AI for Web Developers
ChatGPT and AI for Web Developers
Maximiliano Firtman152 views
Web Dev - 1 PPT.pdfWeb Dev - 1 PPT.pdf
Web Dev - 1 PPT.pdf
gdsczhcet48 views
METHOD AND SYSTEM FOR PREDICTING OPTIMAL LOAD FOR WHICH THE YIELD IS MAXIMUM ...METHOD AND SYSTEM FOR PREDICTING OPTIMAL LOAD FOR WHICH THE YIELD IS MAXIMUM ...
METHOD AND SYSTEM FOR PREDICTING OPTIMAL LOAD FOR WHICH THE YIELD IS MAXIMUM ...
Prity Khastgir IPR Strategic India Patent Attorney Amplify Innovation23 views
Green Leaf Consulting: Capabilities DeckGreen Leaf Consulting: Capabilities Deck
Green Leaf Consulting: Capabilities Deck
GreenLeafConsulting170 views

Ruby プログラマのための Perl ウェブアプリケーション開発入門 (Perl web development guide for Rubyist )

Editor's Notes

  1. \n
  2. \n
  3. &amp;#x30ED;&amp;#x30EA;&amp;#x30DD;&amp;#x30C3;&amp;#x30D7; JUGEM &amp;#x30D6;&amp;#x30AF;&amp;#x30ED;&amp;#x30B0; &amp;#x30B6;&amp;#x30A4;&amp;#x30F3;&amp;#x30BF;&amp;#x30D3;&amp;#x30E5;&amp;#x30FC;&amp;#x30BA;\n&amp;#x30C9;&amp;#x30AF;&amp;#x30DA;&amp;#x597D;&amp;#x304D;&amp;#x306A;&amp;#x6280;&amp;#x8853;&amp;#x8CAC;&amp;#x4EFB;&amp;#x8005;&amp;#x3067;&amp;#x3082;&amp;#x6709;&amp;#x540D;\n
  4. &amp;#x30AA;&amp;#x30F3;&amp;#x30E9;&amp;#x30A4;&amp;#x30F3;&amp;#x5199;&amp;#x771F;&amp;#x5171;&amp;#x6709;&amp;#x30B5;&amp;#x30A4;&amp;#x30C8;\nRuby on Rails\n
  5. &amp;#x30B9;&amp;#x30A4;&amp;#x30C3;&amp;#x30C1;&amp;#x3057;&amp;#x305F;\n&amp;#x8A00;&amp;#x8A9E;&amp;#x306F;&amp;#x4F3C;&amp;#x3066;&amp;#x3066;&amp;#x5E73;&amp;#x6C17;&amp;#x3060;&amp;#x3063;&amp;#x305F;&amp;#x3051;&amp;#x3069;&amp;#x4ED6;&amp;#x306E;&amp;#x90E8;&amp;#x5206;&amp;#x3067;&amp;#x56F0;&amp;#x3063;&amp;#x305F;\n
  6. &amp;#x8A00;&amp;#x8A9E;&amp;#x4EE5;&amp;#x5916;&amp;#x306E;&amp;#x90E8;&amp;#x5206;\n&amp;#x30D9;&amp;#x30B9;&amp;#x30C8;&amp;#x30D7;&amp;#x30E9;&amp;#x30AF;&amp;#x30C6;&amp;#x30A3;&amp;#x30B9;&amp;#x304C;&amp;#x77E5;&amp;#x308A;&amp;#x305F;&amp;#x304B;&amp;#x3063;&amp;#x305F;\n
  7. Perl&amp;#x306E;&amp;#x300C;&amp;#x305D;&amp;#x306E;&amp;#x4ED6;&amp;#x300D;&amp;#x304C;&amp;#x308F;&amp;#x304B;&amp;#x3089;&amp;#x306A;&amp;#x3044;&amp;#x4EBA;&amp;#x3078;\n&amp;#x4E21;&amp;#x65B9;&amp;#x3061;&amp;#x3087;&amp;#x3063;&amp;#x3068;&amp;#x305A;&amp;#x3064;&amp;#x77E5;&amp;#x3063;&amp;#x3066;&amp;#x308B;&amp;#x3001;&amp;#x7FFB;&amp;#x8A33;&amp;#x3001;&amp;#x6A4B;&amp;#x6E21;&amp;#x3057;\n&amp;#x5F79;&amp;#x306B;&amp;#x7ACB;&amp;#x3066;&amp;#x308B;&amp;#x304B;&amp;#x3082;\n
  8. &amp;#x305D;&amp;#x3046;&amp;#x601D;&amp;#x3063;&amp;#x3066;&amp;#x3001;&amp;#x8A71;&amp;#x3059;&amp;#x3053;&amp;#x3068;&amp;#x306B;&amp;#x3057;&amp;#x305F;\n
  9. &amp;#x8A00;&amp;#x8A9E;&amp;#x300C;&amp;#x4EE5;&amp;#x5916;&amp;#x300D;&amp;#x306E;&amp;#x4E09;&amp;#x3064;&amp;#x306E;&amp;#x8981;&amp;#x7D20;\n
  10. &amp;#x30D7;&amp;#x30ED;&amp;#x30B0;&amp;#x30E9;&amp;#x30E0;&amp;#x306E;&amp;#x5B9F;&amp;#x884C;&amp;#x74B0;&amp;#x5883;\n
  11. Ruby&amp;#x306E;&amp;#x5B9F;&amp;#x88C5;&amp;#x3044;&amp;#x308D;&amp;#x3044;&amp;#x308D;\nrpm &amp;#x304C;&amp;#x306A;&amp;#x3044;\n&amp;#x624B;&amp;#x3067;&amp;#x30BD;&amp;#x30FC;&amp;#x30B9;&amp;#x304B;&amp;#x3089;&amp;#x30B3;&amp;#x30F3;&amp;#x30D1;&amp;#x30A4;&amp;#x30EB;&amp;#x3059;&amp;#x308B;&amp;#x306E;&amp;#x9762;&amp;#x5012;&amp;#x304F;&amp;#x3055;&amp;#x3044;\n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. &amp;#x66F8;&amp;#x3044;&amp;#x305F;&amp;#x30D7;&amp;#x30ED;&amp;#x30B0;&amp;#x30E9;&amp;#x30E0;&amp;#x3092;&amp;#x52D5;&amp;#x304B;&amp;#x3059;&amp;#x30B5;&amp;#x30FC;&amp;#x30D0;&amp;#x3068;&amp;#x304B;&amp;#x30A4;&amp;#x30F3;&amp;#x30D5;&amp;#x30E9;\n
  22. \n
  23. \n
  24. Salesforce\nmatz &amp;#x307E;&amp;#x3064;&amp;#x3082;&amp;#x3068;&amp;#x3086;&amp;#x304D;&amp;#x3072;&amp;#x308D; &amp;#x30C1;&amp;#x30FC;&amp;#x30D5;&amp;#x30A2;&amp;#x30FC;&amp;#x30AD;&amp;#x30C6;&amp;#x30AF;&amp;#x30C8;\nRack == Ruby &amp;#x306E;&amp;#x30A6;&amp;#x30A7;&amp;#x30D6;&amp;#x30A2;&amp;#x30D7;&amp;#x30EA;&amp;#x30B1;&amp;#x30FC;&amp;#x30B7;&amp;#x30E7;&amp;#x30F3;&amp;#x62BD;&amp;#x8C61;&amp;#x5316;&amp;#x30EC;&amp;#x30A4;&amp;#x30E4;\n
  25. \n
  26. Ruby &amp;#x306E;&amp;#x8A71;&amp;#x3070;&amp;#x3063;&amp;#x304B;&amp;#x308A;&amp;#x3057;&amp;#x3066;&amp;#x304D;&amp;#x305F;&amp;#x3051;&amp;#x3069;\nYAPC &amp;#x306A;&amp;#x306E;&amp;#x3067;&amp;#x3053;&amp;#x3053;&amp;#x304B;&amp;#x3089;&amp;#x306F; Perl &amp;#x306E;&amp;#x8A71;&amp;#x3092;\nRuby &amp;#x3092; Perl &amp;#x306B;&amp;#x7F6E;&amp;#x304D;&amp;#x63DB;&amp;#x3048;&amp;#x3066;&amp;#x307F;&amp;#x308B;\n
  27. \n
  28. &amp;#x6BD4;&amp;#x8F03;&amp;#x3057;&amp;#x3084;&amp;#x3059;&amp;#x3044;&amp;#x3088;&amp;#x3046;&amp;#x306B;&amp;#x4E09;&amp;#x3064;&amp;#x306E;&amp;#x8981;&amp;#x7D20;\n
  29. \n
  30. &amp;#x6700;&amp;#x521D;&amp;#x304B;&amp;#x3089;&amp;#x5165;&amp;#x3063;&amp;#x3066;&amp;#x308B;&amp;#x30D0;&amp;#x30FC;&amp;#x30B8;&amp;#x30E7;&amp;#x30F3;&amp;#x306F;&amp;#x53E4;&amp;#x3044;\n&amp;#x30B7;&amp;#x30B9;&amp;#x30C6;&amp;#x30E0;&amp;#x30C4;&amp;#x30FC;&amp;#x30EB;&amp;#x306A;&amp;#x3069;&amp;#x3067;&amp;#x4F7F;&amp;#x308F;&amp;#x308C;&amp;#x3066;&amp;#x3066;&amp;#x4F9D;&amp;#x5B58;&amp;#x3055;&amp;#x308C;&amp;#x3066;&amp;#x308B;&amp;#x306E;&amp;#x3067;&amp;#x30A2;&amp;#x30C3;&amp;#x30D7;&amp;#x30C7;&amp;#x30FC;&amp;#x30C8;&amp;#x3057;&amp;#x3065;&amp;#x3089;&amp;#x3044;\n&amp;#x6A19;&amp;#x6E96;&amp;#x30E2;&amp;#x30B8;&amp;#x30E5;&amp;#x30FC;&amp;#x30EB;&amp;#x306E;&amp;#x65B0;&amp;#x3057;&amp;#x3044;&amp;#x30D0;&amp;#x30FC;&amp;#x30B8;&amp;#x30E7;&amp;#x30F3;&amp;#x3092; cpan &amp;#x3067;&amp;#x5165;&amp;#x308C;&amp;#x308B;&amp;#x3068;&amp;#x30AB;&amp;#x30AA;&amp;#x30B9;&amp;#x306B;\n
  31. &amp;#x88CF;&amp;#x3067;&amp;#x3084;&amp;#x3063;&amp;#x3066;&amp;#x308B;\n&amp;#x306A;&amp;#x3093;&amp;#x3067;&amp;#x30D3;&amp;#x30FC;&amp;#x30EB;&amp;#x3068;&amp;#x5FCD;&amp;#x8005;&amp;#x306A;&amp;#x306E;&amp;#x304B;&amp;#x8B0E;\n
  32. \n
  33. \n
  34. \n
  35. \n
  36. &amp;#x6211;&amp;#x3005;&amp;#x306F; Perl &amp;#x3067;&amp;#x3082; Sinatra &amp;#x304C;&amp;#x6B32;&amp;#x3057;&amp;#x3044;&amp;#x308F;&amp;#x3051;&amp;#x3067;&amp;#x3059;\n
  37. &amp;#x4F9D;&amp;#x5B58;&amp;#x304C;&amp;#x5C11;&amp;#x306A;&amp;#x3044;&amp;#x306E;&amp;#x3067;&amp;#x30A4;&amp;#x30F3;&amp;#x30B9;&amp;#x30C8;&amp;#x30FC;&amp;#x30EB;&amp;#x304C;&amp;#x7C21;&amp;#x5358;\n&amp;#x59CB;&amp;#x3081;&amp;#x3084;&amp;#x3059;&amp;#x3044;\n
  38. \n
  39. \n
  40. \n
  41. Perl &amp;#x306F; CGI &amp;#x3068;&amp;#x30BB;&amp;#x30C3;&amp;#x30C8;&amp;#x3067;&amp;#x8A9E;&amp;#x3089;&amp;#x308C;&amp;#x308B;&amp;#x3053;&amp;#x3068;&amp;#x304C;&amp;#x591A;&amp;#x3044;\n&amp;#x30D5;&amp;#x30EC;&amp;#x30FC;&amp;#x30E0;&amp;#x30EF;&amp;#x30FC;&amp;#x30AF;&amp;#x306B;&amp;#x6163;&amp;#x308C;&amp;#x308B;&amp;#x3068; CGI &amp;#x3068;&amp;#x304B;&amp;#x66F8;&amp;#x304D;&amp;#x305F;&amp;#x304F;&amp;#x306A;&amp;#x3044;&amp;#x308F;&amp;#x3051;&amp;#x3067;&amp;#x3059;\nPerl &amp;#x3067;&amp;#x3082; Heroku &amp;#x304C;&amp;#x6B32;&amp;#x3057;&amp;#x3044;&amp;#x308F;&amp;#x3051;&amp;#x3067;&amp;#x3059;\n
  42. \n
  43. @miyagawa\n
  44. Python &amp;#x3067;&amp;#x66F8;&amp;#x304B;&amp;#x308C;&amp;#x3066;&amp;#x308B;\n&amp;#x3053;&amp;#x308C;&amp;#x304C; Perl &amp;#x3060;&amp;#x3063;&amp;#x305F;&amp;#x3089;...\n
  45. \n
  46. &amp;#x3069;&amp;#x3063;&amp;#x3061;&amp;#x3082;&amp;#x59CB;&amp;#x3081;&amp;#x3084;&amp;#x3059;&amp;#x3044;&amp;#x3057;&amp;#x6B62;&amp;#x3081;&amp;#x3084;&amp;#x3059;&amp;#x3044;\n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. &amp;#x8A00;&amp;#x8A9E;&amp;#x4EE5;&amp;#x5916;&amp;#x306E;&amp;#x90E8;&amp;#x5206;&amp;#x3082;&amp;#x3088;&amp;#x304F;&amp;#x4F3C;&amp;#x3066;&amp;#x3044;&amp;#x308B;\n&amp;#x30B9;&amp;#x30A4;&amp;#x30C3;&amp;#x30C1;&amp;#x306F;&amp;#x305D;&amp;#x308C;&amp;#x307B;&amp;#x3069;&amp;#x96E3;&amp;#x3057;&amp;#x304F;&amp;#x306A;&amp;#x3044;&amp;#x306E;&amp;#x3067;&amp;#x8A66;&amp;#x3057;&amp;#x3066;&amp;#x307F;&amp;#x3066;&amp;#x304F;&amp;#x3060;&amp;#x3055;&amp;#x3044;\n
  56. \n
  57. \n
  58. &amp;#x798F;&amp;#x5CA1;&amp;#x652F;&amp;#x793E;\nDAZAIFU PROJECT &amp;#x65B0;&amp;#x898F;&amp;#x30B5;&amp;#x30FC;&amp;#x30D3;&amp;#x30B9;&amp;#x958B;&amp;#x767A;&amp;#x30D7;&amp;#x30ED;&amp;#x30B8;&amp;#x30A7;&amp;#x30AF;&amp;#x30C8;\nRuby, Rails, MongoDB, node.js\n
  59. Github &amp;#x30B8;&amp;#x30E7;&amp;#x30D6;&amp;#x30DC;&amp;#x30FC;&amp;#x30C9;&amp;#x3067;&amp;#x3082;&amp;#x6C42;&amp;#x4EBA;&amp;#x3057;&amp;#x3066;&amp;#x307E;&amp;#x3059;\n&amp;#x8208;&amp;#x5473;&amp;#x306E;&amp;#x3042;&amp;#x308B;&amp;#x65B9;&amp;#x306F;&amp;#x305C;&amp;#x3072;&amp;#x58F0;&amp;#x3092;&amp;#x304B;&amp;#x3051;&amp;#x3066;&amp;#x304F;&amp;#x3060;&amp;#x3055;&amp;#x3044;\n
  60. &amp;#x4EE5;&amp;#x4E0A;&amp;#x3067;&amp;#x3059;\n&amp;#x3054;&amp;#x6E05;&amp;#x8074;&amp;#x3042;&amp;#x308A;&amp;#x304C;&amp;#x3068;&amp;#x3046;&amp;#x3054;&amp;#x3056;&amp;#x3044;&amp;#x307E;&amp;#x3057;&amp;#x305F;\n