SlideShare a Scribd company logo
スタ~ト Padrino

   Presentation by Uchio Kondo (@udzura)
                           2011/10/21(Fri)
         於 Preferred Infrastructure Inc. 殿
近藤うちお(@udzura)
●
    Rubyist(2年半ほど)
●
    Groovyに挫折
●
    現在Haskellを順調に挫折
●
    富士マガ所属、雑誌を定期購読で買ってね!
●
    カルマ: Rack, Sinatra, Padrinoあたり
    Rails3, TDD, Linux, アジャイルとかも興味はあるんですよ……
近藤うちおさんのworks
●   ブロッグ http://blog.udzura.jp/
●
    Padrino 日本語サイト翻訳リーダー
●   Padrino framework contributor
    ●   自称、 Padrino framework エバンジェリストJPです
●   RubyGems: rack-session-dbm
●   RubyGems: rspec-padrino
●   若干のふざけたウェッブサービス
●   その他、 http://udzura.jp
今日の構成
●
    第一章: Sinatra の歴史(独断と偏見篇)
●
    第二章: What's going on Padrino?
●
    第三章: Extending Sinatra in deep
            ~Sinatra Ecosystem~
●
    Extra Session: “Blog Tutorial” をやってみよう
第一章
●
    Sinatra の歴史
●
    それは、Padrinoの歴史でもあるのだ……
Sinatra爆誕
●   0.0.1 on 2007-09(only on repo)
●   0.1.0 on 2007-10
●   http://rubygems.org/gems/sinatra/versions
シンプル
●   https://github.com/sinatra/sinatra/blob/0.0.1/lib/sinatra
    /dsl.rb
たくさんのフレームワークに影響
●   Dancer, Mojolitious::Lite
●   Juno
●   loli
●   Scalatra, Graffiti
時は流れ、1.0 was released
●   2010-05
1.0になり、
●
    クラシックスタイルとモジュラ~スタイルが
    分離した。Sinatra::Baseの誕生
Sinatraの歴史の詳細
●
    gihyo.jp さんへ
    ●
        第41回 Sinatra 1.0の世界にようこそ
    ●
        第42回 実世界のSinatra
    ●   http://gihyo.jp/dev/serial/01/ruby/0041
    ●
        @tsuyoshikawa 氏渾身の記事
一方その頃
●   sinatra_more gem
●
    2009年後半ごろから開発
sinatra_more moved to Padrino
●
    Padrino 自体は 2009-11ごろから開発されていたっぽい
●
    2010-02、sinatra_moreのREADMEに、Padrinoへ移行
    する旨のコミット
●   https://github.com/nesquena/sinatra_more/commit/2ee59c6c709a90c7723a86d62c0542114bd02b09#README.rdoc

●
    sinatra_more の開発者も Padrino 開発teamにジョイン
●


●
Sinatra
●   1.0 2010-03
●   1.1.0 2010-10
●   1.2.0 2011-03
●
    1.2.6 2011-05 長い間の安定版でした
●   1.3.0/1.2.7 2011-10(new!)
●
    3月と10月に何かが起こる
Padrino
●
    0.9.0 2010-02 リリース
●
    0.9系統は、キャッシュ機能担当のsub gemを
    新規に追加するなど、改修に次ぐ改修
●
    0.10.0 2011-07 リリース
●
    0.10.3 で Sinatra 1.3 系をキャッチアップ!!
●
    0.10.4 と 0.10.5 は半日足らずで連続リリース
                               (...)
最近のSinatra/Padrino情勢[PR]
●
    「Sinatra 1.3.0 & Padrino 0.10.3 がリリースされ
    ました。ざっくり紹介。」
●   (1): http://l.udr.me/oPFtQI
●   (2): http://l.udr.me/ruLxHN
●
    (Sinatra)Stream API, (Padrino)JRuby/Rubiniusサ
    ポートなど、Sinatrasta必読の話題です?
その他
●
    big_band, renee など Sinatra 界隈でも色々な動
    きがあるようですが……
●
    続きはググれ!
●
    もしくはudzuraさんがブログを書くかもしれ
    ません[PR]
第二章
●
    Padrino とは何か?
●
    併せて読みたい: http://jp.padrinorb.com
●
    併せて読みたい: http://www.padrinorb.com
●
    この章の各項目について、ちゃんと公式の
    Guideがあります。今回は概観を。
その前に
●
    Sinatra使ってる?(そもそも論)
Sinatraでアレしてて
●
    Viewやmodelのディレクトリ構造とか、
    spec_helper.rbとか、Gemfileつくってbundlerで
    読み込むとこの処理とか、
●
    色々自作してません?
あなたと、
Padrino
●
    “Sinatraの哲学の上に”、Sinatraを拡張し、楽
    しく開発できるようにしたフレームワーク
           The goal for this framework is to match the essence of Sinatra and make it
           suitable for increasingly complex applications that require the use of forms,
           mail delivery, localization, helpers, caching, etc…

           For our team, coding is an art form and Sinatra best enables this concept
           because of these core principles:

            * Clean
            * Compact
            * Fast
            * Creative
            * Concise

           The Padrino framework is the perfect solution for your small projects as
           well as for your larger project requirements!
Sinatraを「正しく」拡張
●
    2つの安全なAPI
    ●   use
    ●   register
●
    を中心的に用いている。
大きな特徴
●   Agnostic
●   Modularity
●   Light-weight
Agnostic
●   ORM
●   Adapter
●   Template Engine
●   Testing Framework/Mocking
●   JavaScript/CSS Framework
●
    が、交換可能
Modularity
●
    開発者は、Padrinoのすべての機能を使っても
    いいし、一部の機能を Sinatra に導入する形
    で使ってもいい。
●
    register/useで “Sinatra way” で拡張している強み
Lightweight
●
    フルスタックPadrinoでも、素のSinatraとほと
    んど変わらないレスポンスの速さ




* http://www.padrinorb.com/blog/padrino-0-10-0-routing-
upgrades-rbx-and-jruby-support-and-minor-breaking-changes
図解
●
    Padrinoの出現以前

                                Rails
             ActionController
                                        Rspec-    mochaほか
Mongoidほか
                ActiveRecord            Rails

    ERB                                          RSpec
                         Sinatra
Hamlほか

    Erubis
ゴッドファーザー登場
●
    Sinatra Family 誕生の瞬間

                                Rails
             ActionController
                                          Rspec-    mochaほか
Mongoidほか
                ActiveRecord              Rails

    ERB                                            RSpec
                      Sinatra
Hamlほか

    Erubis
                                Padrino
Sinatraから拡張した点
●   Rails風MVCパターンの導入
●   豊富なHelper
●   シンプルなメール配信機能
●   シンプルなキャッシュ機能
●   基本的な国際化機能
●   見易いロガー
●   開発時のリローダー
●   管理画面の自動作成
●   サブアプリケーションの作成/マウント
●   ジェネレータ含むコマンドラインツール
●   テストの自動生成
Rails風MVC
●
    コントローラ相当                    → Padrino::Rouiting
●   Rails – ActionController + routes.rb
●   Sinatra – Sinatra DSL
●
    Padrino は、Sinatra DSLをさらに拡張し、擬似
    的な「コントローラ」を導入、各ルーティン
    グを参照可能にする
Helper
●
    Railsっぽい便利ヘルパ~ズ
●   content_for
●   form_for
●   stylesheet_link_tag
●   Format Helpers
       → Padrino::Helpers
Mailer
●
    メール定義用のDSL           → Padrino::Mailer
●
    deliver メソッドで配信
●
    Mail gemがベースなので、マルチパートを
    はじめ結構融通が効く
●
Cache
●
    割と最近追加されました                 → Padrino::Cache
●   Page cache/Fragment cache
ロガ~
●   Padrino::Logger::Rack
リローダー
●
    0.10.5 現在、超頭良い
●
    F5駆動開発にぜひ
管理画面
●
    管理画面担当のサブアプリケーションを簡単
    に作れる
    ●
        どうせScaffoldとか管理画面作ることが多いでしょ?
●
    ModelのScaffold、というかCRUDを簡単に
サブアプリケーション
●
    ルーティングは共有しないが、Modelはじめ共
    通ライブラリを使う場合に有利
●
    Djangoからインスパイアザネクスト
コマンドラインツール
●
    padrino コマンドがあります
●
    一通り
    ジェネレータ
    あります
●
    コンソール、
    サーバ起動
    など…
padrino rake test
●
    ジェネレータは、基本的にユニットテストも
    一緒に作ってくれます。
●
    テストの基本的な構成物を作ってくれるの
    で、TDDにも向いていたりします。
●
    また、実は、machinist、capybaraなどのテスト
    支援ライブラリもちょっとしたコツで使えた
    りします。
テストの話は
 ●
     TokyuRubyKaigi 04 で!
 ●   10/29
 ●
     於 神泉近くの某社




http://regional.rubykaigi.org/tokyu04
ここまでのまとめ
●
    Sinatraはシンプル、軽量、素敵
●
    Sinatraはシンプル過ぎるので、「かゆいとこ
    ろに手が届く」Padrinoが出現、Railsとの抗争
    激化(予定)
●
    Padrinoは伸縮自在、小規模~大規模OK
●
    Padrinoはいろんなライブラリと共存する
第三章
●   Extending Sinatra
      as a super-simple Rack-based framework
●   The Sinatra Ecosystem
●
    そして伝説へ…
Sinatraを強めるAPI
●   use
    ●
        Rack Middleware を登録する
●   register
    ●
        Sinatra::Base を拡張したクラスに直接作用し、挙
        動を変更する
    ●
        helpers, set, use, なんかのクラスマクロをセットで
        呼ぶのがよくある使い方
use
●   Rack config DSL




         とある簡素な config.ru
Rack準拠アプリケ~ション
●
    App#call(env) を呼び、
●
    [status_code, {“Header” => “foo”}, [bodies]] を返す
●
    ダックタイピング、特定のClass/Moduleを継承
    する必要なし(奥野氏)
Rack Middleware
●
    Initialize 時に、第一引数として app を取る
●
    あとは Rack向けアプリケーションと同様



                  ⇔
Super Simple Rack Middleware
これは、ねこのおくちです
便利な Rack Middleware 情報です
●   OmniAuth
●   Warden
●   Rack::Rewrite
●   Rack::Protection
    (1.3 よりSinatraが標準で使う)
●   Rack::Recaptcha
●
    Jpmobile::Rack::* (一部機能不可)
●
    Rack gem 自身にもいくつか添付されています。
    ベーシック/ダイジェスト認証とかが有名?ですか?
register
●
    register されたModuleは、`self.registered`フック
    が呼ばれる
●
    そのフックで、元アプリのクラスマクロを呼
    んだりできたりする
そんな難しい話ではないですね
app.class_eval とかが始まると
●   暗黒
●   send :include, send :extend, …



●
    Padrino::Routingとかは、もともとのSinatraの
    get/post/put/delete の移譲先、
    ●   Sinatra::Base.route
●   を上書きしている!!!!!!
●   メタプログラミングは用量を守って正しく
使い分け
●
    Rackに切り出せるものはRackで
    ●
        ほとんど何でも切り出せますが……
    ●
        一応、例えばRailsで使えるか?とか意識
●
    たとえばhelperの追加、クラスマクロの追加と
    かはregisterでどう?
    ●
        そもそもそういう機能追加ならSinatraへの依存度
        が高いはず、遠慮なくいっとこう
Sinatraをベースに、
●
    use/registerを駆使して、ビュッフェのごとく欲しい
    機能を皿に盛ることで、
●
    ウェッブアプリケ~ションができる!
●
    疎結合、スモール、読みやすい、高速
●
    post-Railsなウェブ開発を感じさせてくれます
 




左: Railsを用いたフルスタック開発のイメージ画像
右: Sinatra/RackベースのModularな開発のイメージ画像
cf.
●
    cho45先生の発表
●
    ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく
    ●
Sinatra「呼んだ?」
●
    安全: rack-protection とか色々ある
●
    読むコード最小:
     sinatra/base.rbは1,646行、いける!(...)
●
    早い: これは自信あるぞ、高速
●
    必要なら最低限自分で書く:
      前述した二つのAPIの力で、
      簡単な機能を自作するのもやりやすいですね
Sinatra、いい線行ってる
●
    行ってると信じてる
Yet Another Extending
●
    plugin 機構がある
●
       The Plugin Generator allows you to create Padrino projects based on a template file that
       contains all the necessary actions needed to create the project. Plugins can also be
●      executed within an existing Padrino application. The plugin generator provides a simple
       DSL in addition with leveraging Thor to make generating projects a breeze!

●
    Generator の内部DSLと同じものを使っている
    っぽい。padrino-recipeというところでいくつ
    かレシピが公開されている
                  https://github.com/padrino/padrino-recipes/tree/master/plugins
                  Pull request welcome!
こんな感じですね
Rack/Sinatra/Padrinoエコシステム
●
    成長中と信じてる
●
    英語圏、けっこう便利Rackミドルウェア~や
    Sinatra拡張が多い印象
●
    日本語情報もどんどん増やそう!




                         悲しいお知らせの例
一つのヒント
●   rack-contrib      https://github.com/rack/rack-contrib
●   sinatra-contrib   https://github.com/sinatra/sinatra-contrib
●   padrino-contrib   https://github.com/padrino/padrino-contrib
●   上記リポジトリでやりたいことはできないか?
    ●   上記リポジトリに入っているライブラリは、gemで簡単に利用できる
●   英語も含めてちゃんとググったか?
●   いたずらな車輪の再発明より、あるものを使う、あるものにリ
    ソースを集中させる方を個人的にすすめて行きたい
    ●   そうして、コミュニティが徐々にできていくのでは
    ●   何か目的があって車輪を発明することを咎めるわけではない
最後にPadrinoとSinatraの関係に
       ついて言っとくか
●
    PadrinoはSinatraなしでは存在し得ない
●
    PadrinoはSinatraを便利にする道具の一つです
●
    なので、Sinatraをリプレースするものとか
    じゃないですね。誤解しないでね~。

●
    協力し、Rails組との抗争に打ち勝とう!
@rails
総括
●   Sinatra is a fun!
●   Padrino helps you a lot!
●
    どんどん使って、どんどん貢献していきま
    しょう(特に Padrino はまだ若いです)
__END__
●
    ご清聴ありがとうございました
misc
●
    今日の資料、と言うかコピペ向けコード
●   https://gist.github.com/1302918
●
    スライドシェッア~予定地
●   http://www.slideshare.net/udzura/startpadrino
/~\[PR]/~\
●
    富士山マガジンサービスでは、
    ●
        Ruby好き、Rails得意
    ●
        Groovyというものに抵抗がない
    ●
        Windowsというものにひどいアレルギーがない
●
    エンジニアを募集しています。興味があれば
    私に声掛けを~
                            JOIN US!

More Related Content

What's hot (20)

20120706-readablecode
20120706-readablecode20120706-readablecode
20120706-readablecode
Masanori Kado
 
Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19
Hitoshi Kurokawa
 
今日から業務で使える17の運用系Linuxツール、そして円環の理
今日から業務で使える17の運用系Linuxツール、そして円環の理今日から業務で使える17の運用系Linuxツール、そして円環の理
今日から業務で使える17の運用系Linuxツール、そして円環の理
Masahito Zembutsu
 
Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!
Sotaro Omura
 
Serfが面白いと俺の中で話題にwwwwww
Serfが面白いと俺の中で話題にwwwwwwSerfが面白いと俺の中で話題にwwwwww
Serfが面白いと俺の中で話題にwwwwww
Masahito Zembutsu
 
20170111 macnica networks-nohara_rancher_usecase
20170111 macnica networks-nohara_rancher_usecase20170111 macnica networks-nohara_rancher_usecase
20170111 macnica networks-nohara_rancher_usecase
Minehiko Nohara
 
Pythonで検索エンジン2
Pythonで検索エンジン2Pythonで検索エンジン2
Pythonで検索エンジン2
Yasukazu Kawasaki
 
テストを書くのに挫折したあとやったこと
テストを書くのに挫折したあとやったことテストを書くのに挫折したあとやったこと
テストを書くのに挫折したあとやったこと
Yuta Ohashi
 
Wakayama.rbボードの使い方
Wakayama.rbボードの使い方Wakayama.rbボードの使い方
Wakayama.rbボードの使い方
三七男 山本
 
人間たちとsystemd
人間たちとsystemd人間たちとsystemd
人間たちとsystemd
Uchio Kondo
 
20120731 c4 saリリースパーティlt
20120731 c4 saリリースパーティlt20120731 c4 saリリースパーティlt
20120731 c4 saリリースパーティlt
Kaz Watanabe
 
サーバサイドNodeの使い道
サーバサイドNodeの使い道サーバサイドNodeの使い道
サーバサイドNodeの使い道
pospome
 
TypeScriptへの入口
TypeScriptへの入口TypeScriptへの入口
TypeScriptへの入口
Sunao Tomita
 
Arduino jenkins
Arduino jenkinsArduino jenkins
Arduino jenkins
Kiro Harada
 
サーバ擬人化ユーザ会Lt資料 qpstudy lite
サーバ擬人化ユーザ会Lt資料 qpstudy liteサーバ擬人化ユーザ会Lt資料 qpstudy lite
サーバ擬人化ユーザ会Lt資料 qpstudy lite
Seiichiro Ishida
 
Swiftからlibuvを呼び出すTIPS
Swiftからlibuvを呼び出すTIPSSwiftからlibuvを呼び出すTIPS
Swiftからlibuvを呼び出すTIPS
jugemjugemjugem
 
【Zabbix jp】明日から職場で使えるざびたん
【Zabbix jp】明日から職場で使えるざびたん【Zabbix jp】明日から職場で使えるざびたん
【Zabbix jp】明日から職場で使えるざびたん
Seiichiro Ishida
 
Rubyボードハンズオンテキスト
RubyボードハンズオンテキストRubyボードハンズオンテキスト
Rubyボードハンズオンテキスト
三七男 山本
 
RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)
三七男 山本
 
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコムResemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Go Sueyoshi (a.k.a sue445)
 
20120706-readablecode
20120706-readablecode20120706-readablecode
20120706-readablecode
Masanori Kado
 
Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19Bundler kanazawa.rb meetup #2 2012/09/19
Bundler kanazawa.rb meetup #2 2012/09/19
Hitoshi Kurokawa
 
今日から業務で使える17の運用系Linuxツール、そして円環の理
今日から業務で使える17の運用系Linuxツール、そして円環の理今日から業務で使える17の運用系Linuxツール、そして円環の理
今日から業務で使える17の運用系Linuxツール、そして円環の理
Masahito Zembutsu
 
Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!Dive into the Cloud with our buddy, lovely PHP!
Dive into the Cloud with our buddy, lovely PHP!
Sotaro Omura
 
Serfが面白いと俺の中で話題にwwwwww
Serfが面白いと俺の中で話題にwwwwwwSerfが面白いと俺の中で話題にwwwwww
Serfが面白いと俺の中で話題にwwwwww
Masahito Zembutsu
 
20170111 macnica networks-nohara_rancher_usecase
20170111 macnica networks-nohara_rancher_usecase20170111 macnica networks-nohara_rancher_usecase
20170111 macnica networks-nohara_rancher_usecase
Minehiko Nohara
 
Pythonで検索エンジン2
Pythonで検索エンジン2Pythonで検索エンジン2
Pythonで検索エンジン2
Yasukazu Kawasaki
 
テストを書くのに挫折したあとやったこと
テストを書くのに挫折したあとやったことテストを書くのに挫折したあとやったこと
テストを書くのに挫折したあとやったこと
Yuta Ohashi
 
Wakayama.rbボードの使い方
Wakayama.rbボードの使い方Wakayama.rbボードの使い方
Wakayama.rbボードの使い方
三七男 山本
 
人間たちとsystemd
人間たちとsystemd人間たちとsystemd
人間たちとsystemd
Uchio Kondo
 
20120731 c4 saリリースパーティlt
20120731 c4 saリリースパーティlt20120731 c4 saリリースパーティlt
20120731 c4 saリリースパーティlt
Kaz Watanabe
 
サーバサイドNodeの使い道
サーバサイドNodeの使い道サーバサイドNodeの使い道
サーバサイドNodeの使い道
pospome
 
TypeScriptへの入口
TypeScriptへの入口TypeScriptへの入口
TypeScriptへの入口
Sunao Tomita
 
サーバ擬人化ユーザ会Lt資料 qpstudy lite
サーバ擬人化ユーザ会Lt資料 qpstudy liteサーバ擬人化ユーザ会Lt資料 qpstudy lite
サーバ擬人化ユーザ会Lt資料 qpstudy lite
Seiichiro Ishida
 
Swiftからlibuvを呼び出すTIPS
Swiftからlibuvを呼び出すTIPSSwiftからlibuvを呼び出すTIPS
Swiftからlibuvを呼び出すTIPS
jugemjugemjugem
 
【Zabbix jp】明日から職場で使えるざびたん
【Zabbix jp】明日から職場で使えるざびたん【Zabbix jp】明日から職場で使えるざびたん
【Zabbix jp】明日から職場で使えるざびたん
Seiichiro Ishida
 
Rubyボードハンズオンテキスト
RubyボードハンズオンテキストRubyボードハンズオンテキスト
Rubyボードハンズオンテキスト
三七男 山本
 
RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)RubyではじめるIoT(Wakayama.rb活動報告)
RubyではじめるIoT(Wakayama.rb活動報告)
三七男 山本
 
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコムResemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Resemaraを支えた技術 フライングゲットガチャの舞台裏 #ksgstudy #ドリコム
Go Sueyoshi (a.k.a sue445)
 

Similar to Start-padrino (20)

otomodachi-kakumei
otomodachi-kakumeiotomodachi-kakumei
otomodachi-kakumei
Uchio Kondo
 
Web技術勉強会 20100424
Web技術勉強会 20100424Web技術勉強会 20100424
Web技術勉強会 20100424
guest17bfe2
 
Web技術勉強会 20100424
Web技術勉強会 20100424Web技術勉強会 20100424
Web技術勉強会 20100424
龍一 田中
 
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
ngi group.
 
Web技術勉強会 第33回
Web技術勉強会 第33回Web技術勉強会 第33回
Web技術勉強会 第33回
龍一 田中
 
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPANSAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
SAIS/SIGMOD参加報告 in SAIS/DWS2018報告会@Yahoo! JAPAN
Yahoo!デベロッパーネットワーク
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
Yuzo Hebishima
 
Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
Yoji Shidara
 
Tokyo.R#16 wdkz
Tokyo.R#16 wdkzTokyo.R#16 wdkz
Tokyo.R#16 wdkz
Kazuya Wada
 
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarconSeasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Kazuhiro Sera
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
 
Opa - Cloud Language
Opa - Cloud LanguageOpa - Cloud Language
Opa - Cloud Language
Tozo Tanaka
 
CPUでもOK,はじめてのローカル画像生成AI。Stable-Diffusion-ForgeとFastSD CPU,Draw Things他など。練習例題...
CPUでもOK,はじめてのローカル画像生成AI。Stable-Diffusion-ForgeとFastSD CPU,Draw Things他など。練習例題...CPUでもOK,はじめてのローカル画像生成AI。Stable-Diffusion-ForgeとFastSD CPU,Draw Things他など。練習例題...
CPUでもOK,はじめてのローカル画像生成AI。Stable-Diffusion-ForgeとFastSD CPU,Draw Things他など。練習例題...
Netwalker lab kapper
 
Grailsのススメ(仮)
Grailsのススメ(仮)Grailsのススメ(仮)
Grailsのススメ(仮)
Tsuyoshi Yamamoto
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
 
Scalaの現状と課題
Scalaの現状と課題Scalaの現状と課題
Scalaの現状と課題
Kota Mizushima
 
LXDのすすめ
LXDのすすめLXDのすすめ
LXDのすすめ
智之 大野
 
otomodachi-kakumei
otomodachi-kakumeiotomodachi-kakumei
otomodachi-kakumei
Uchio Kondo
 
Web技術勉強会 20100424
Web技術勉強会 20100424Web技術勉強会 20100424
Web技術勉強会 20100424
guest17bfe2
 
Web技術勉強会 20100424
Web技術勉強会 20100424Web技術勉強会 20100424
Web技術勉強会 20100424
龍一 田中
 
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
ngi group.
 
Web技術勉強会 第33回
Web技術勉強会 第33回Web技術勉強会 第33回
Web技術勉強会 第33回
龍一 田中
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
Yuzo Hebishima
 
Building Static Website With Github And Jekyll
Building Static Website With Github And JekyllBuilding Static Website With Github And Jekyll
Building Static Website With Github And Jekyll
Yoji Shidara
 
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarconSeasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Seasar ユーザだったプログラマが目指す OSS の世界展開 #seasarcon
Kazuhiro Sera
 
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツールこんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
 
Opa - Cloud Language
Opa - Cloud LanguageOpa - Cloud Language
Opa - Cloud Language
Tozo Tanaka
 
CPUでもOK,はじめてのローカル画像生成AI。Stable-Diffusion-ForgeとFastSD CPU,Draw Things他など。練習例題...
CPUでもOK,はじめてのローカル画像生成AI。Stable-Diffusion-ForgeとFastSD CPU,Draw Things他など。練習例題...CPUでもOK,はじめてのローカル画像生成AI。Stable-Diffusion-ForgeとFastSD CPU,Draw Things他など。練習例題...
CPUでもOK,はじめてのローカル画像生成AI。Stable-Diffusion-ForgeとFastSD CPU,Draw Things他など。練習例題...
Netwalker lab kapper
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
ThinReports
 
Scalaの現状と課題
Scalaの現状と課題Scalaの現状と課題
Scalaの現状と課題
Kota Mizushima
 

More from Uchio Kondo (9)

ペパボのサービスとRuby
ペパボのサービスとRubyペパボのサービスとRuby
ペパボのサービスとRuby
Uchio Kondo
 
minneで学ぶクラウド脳
minneで学ぶクラウド脳minneで学ぶクラウド脳
minneで学ぶクラウド脳
Uchio Kondo
 
インフラ自動化とHashicorp tools
インフラ自動化とHashicorp toolsインフラ自動化とHashicorp tools
インフラ自動化とHashicorp tools
Uchio Kondo
 
Puppet of-2015-forupload
Puppet of-2015-foruploadPuppet of-2015-forupload
Puppet of-2015-forupload
Uchio Kondo
 
Hashicorpツールズ
HashicorpツールズHashicorpツールズ
Hashicorpツールズ
Uchio Kondo
 
Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?
Uchio Kondo
 
Drone.io のご紹介
Drone.io のご紹介Drone.io のご紹介
Drone.io のご紹介
Uchio Kondo
 
ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例
Uchio Kondo
 
Rubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LLRubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LL
Uchio Kondo
 
ペパボのサービスとRuby
ペパボのサービスとRubyペパボのサービスとRuby
ペパボのサービスとRuby
Uchio Kondo
 
minneで学ぶクラウド脳
minneで学ぶクラウド脳minneで学ぶクラウド脳
minneで学ぶクラウド脳
Uchio Kondo
 
インフラ自動化とHashicorp tools
インフラ自動化とHashicorp toolsインフラ自動化とHashicorp tools
インフラ自動化とHashicorp tools
Uchio Kondo
 
Puppet of-2015-forupload
Puppet of-2015-foruploadPuppet of-2015-forupload
Puppet of-2015-forupload
Uchio Kondo
 
Hashicorpツールズ
HashicorpツールズHashicorpツールズ
Hashicorpツールズ
Uchio Kondo
 
Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?Consul は 全自動オーケストレーションの 夢を見るか?
Consul は 全自動オーケストレーションの 夢を見るか?
Uchio Kondo
 
Drone.io のご紹介
Drone.io のご紹介Drone.io のご紹介
Drone.io のご紹介
Uchio Kondo
 
ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例
Uchio Kondo
 
Rubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LLRubyist started to learn Groovy - things important to leran new LL
Rubyist started to learn Groovy - things important to leran new LL
Uchio Kondo
 

Recently uploaded (8)

Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
 
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OSIoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
Tomohiro Saneyoshi
 
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptxドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ssuserfcafd1
 
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdfIchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
Matsushita Laboratory
 
Matching_Program_for_Quantum_Challenge_Overview.pdf
Matching_Program_for_Quantum_Challenge_Overview.pdfMatching_Program_for_Quantum_Challenge_Overview.pdf
Matching_Program_for_Quantum_Challenge_Overview.pdf
hirokiokuda2
 
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
kota usuha
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
Apache Sparkに対するKubernetesのNUMAノードを意識したリソース割り当ての性能効果 (Open Source Conference ...
NTT DATA Technology & Innovation
 
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
2025フードテックWeek大阪展示会 - LoRaWANを使った複数ポイント温度管理 by AVNET玉井部長
CRI Japan, Inc.
 
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OSIoT Devices Compliant with JC-STAR Using Linux as a Container OS
IoT Devices Compliant with JC-STAR Using Linux as a Container OS
Tomohiro Saneyoshi
 
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptxドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ドメインモデリング基本編①~全体の流れ2025_02_27社内向け開催.pptx
ssuserfcafd1
 
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdfIchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
IchiiRikisuke_理学療法士間の知識共有に向けた臨床推論テキストの構造化に関する研究.pdf
Matsushita Laboratory
 
Matching_Program_for_Quantum_Challenge_Overview.pdf
Matching_Program_for_Quantum_Challenge_Overview.pdfMatching_Program_for_Quantum_Challenge_Overview.pdf
Matching_Program_for_Quantum_Challenge_Overview.pdf
hirokiokuda2
 
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
ElasticsearchでSPLADEする [Search Engineering Tech Talk 2025 Winter]
kota usuha
 
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
PostgreSQL最新動向 ~カラムナストアから生成AI連携まで~ (Open Source Conference 2025 Tokyo/Spring ...
NTT DATA Technology & Innovation
 

Start-padrino

  • 1. スタ~ト Padrino Presentation by Uchio Kondo (@udzura) 2011/10/21(Fri) 於 Preferred Infrastructure Inc. 殿
  • 2. 近藤うちお(@udzura) ● Rubyist(2年半ほど) ● Groovyに挫折 ● 現在Haskellを順調に挫折 ● 富士マガ所属、雑誌を定期購読で買ってね! ● カルマ: Rack, Sinatra, Padrinoあたり Rails3, TDD, Linux, アジャイルとかも興味はあるんですよ……
  • 3. 近藤うちおさんのworks ● ブロッグ http://blog.udzura.jp/ ● Padrino 日本語サイト翻訳リーダー ● Padrino framework contributor ● 自称、 Padrino framework エバンジェリストJPです ● RubyGems: rack-session-dbm ● RubyGems: rspec-padrino ● 若干のふざけたウェッブサービス ● その他、 http://udzura.jp
  • 4. 今日の構成 ● 第一章: Sinatra の歴史(独断と偏見篇) ● 第二章: What's going on Padrino? ● 第三章: Extending Sinatra in deep ~Sinatra Ecosystem~ ● Extra Session: “Blog Tutorial” をやってみよう
  • 5. 第一章 ● Sinatra の歴史 ● それは、Padrinoの歴史でもあるのだ……
  • 6. Sinatra爆誕 ● 0.0.1 on 2007-09(only on repo) ● 0.1.0 on 2007-10 ● http://rubygems.org/gems/sinatra/versions
  • 7. シンプル ● https://github.com/sinatra/sinatra/blob/0.0.1/lib/sinatra /dsl.rb
  • 8. たくさんのフレームワークに影響 ● Dancer, Mojolitious::Lite ● Juno ● loli ● Scalatra, Graffiti
  • 10. 1.0になり、 ● クラシックスタイルとモジュラ~スタイルが 分離した。Sinatra::Baseの誕生
  • 11. Sinatraの歴史の詳細 ● gihyo.jp さんへ ● 第41回 Sinatra 1.0の世界にようこそ ● 第42回 実世界のSinatra ● http://gihyo.jp/dev/serial/01/ruby/0041 ● @tsuyoshikawa 氏渾身の記事
  • 12. 一方その頃 ● sinatra_more gem ● 2009年後半ごろから開発
  • 13. sinatra_more moved to Padrino ● Padrino 自体は 2009-11ごろから開発されていたっぽい ● 2010-02、sinatra_moreのREADMEに、Padrinoへ移行 する旨のコミット ● https://github.com/nesquena/sinatra_more/commit/2ee59c6c709a90c7723a86d62c0542114bd02b09#README.rdoc ● sinatra_more の開発者も Padrino 開発teamにジョイン ● ●
  • 14. Sinatra ● 1.0 2010-03 ● 1.1.0 2010-10 ● 1.2.0 2011-03 ● 1.2.6 2011-05 長い間の安定版でした ● 1.3.0/1.2.7 2011-10(new!) ● 3月と10月に何かが起こる
  • 15. Padrino ● 0.9.0 2010-02 リリース ● 0.9系統は、キャッシュ機能担当のsub gemを 新規に追加するなど、改修に次ぐ改修 ● 0.10.0 2011-07 リリース ● 0.10.3 で Sinatra 1.3 系をキャッチアップ!! ● 0.10.4 と 0.10.5 は半日足らずで連続リリース (...)
  • 16. 最近のSinatra/Padrino情勢[PR] ● 「Sinatra 1.3.0 & Padrino 0.10.3 がリリースされ ました。ざっくり紹介。」 ● (1): http://l.udr.me/oPFtQI ● (2): http://l.udr.me/ruLxHN ● (Sinatra)Stream API, (Padrino)JRuby/Rubiniusサ ポートなど、Sinatrasta必読の話題です?
  • 17. その他 ● big_band, renee など Sinatra 界隈でも色々な動 きがあるようですが…… ● 続きはググれ! ● もしくはudzuraさんがブログを書くかもしれ ません[PR]
  • 18. 第二章 ● Padrino とは何か? ● 併せて読みたい: http://jp.padrinorb.com ● 併せて読みたい: http://www.padrinorb.com ● この章の各項目について、ちゃんと公式の Guideがあります。今回は概観を。
  • 19. その前に ● Sinatra使ってる?(そもそも論)
  • 20. Sinatraでアレしてて ● Viewやmodelのディレクトリ構造とか、 spec_helper.rbとか、Gemfileつくってbundlerで 読み込むとこの処理とか、 ● 色々自作してません?
  • 22. Padrino ● “Sinatraの哲学の上に”、Sinatraを拡張し、楽 しく開発できるようにしたフレームワーク The goal for this framework is to match the essence of Sinatra and make it suitable for increasingly complex applications that require the use of forms, mail delivery, localization, helpers, caching, etc… For our team, coding is an art form and Sinatra best enables this concept because of these core principles: * Clean * Compact * Fast * Creative * Concise The Padrino framework is the perfect solution for your small projects as well as for your larger project requirements!
  • 23. Sinatraを「正しく」拡張 ● 2つの安全なAPI ● use ● register ● を中心的に用いている。
  • 24. 大きな特徴 ● Agnostic ● Modularity ● Light-weight
  • 25. Agnostic ● ORM ● Adapter ● Template Engine ● Testing Framework/Mocking ● JavaScript/CSS Framework ● が、交換可能
  • 26. Modularity ● 開発者は、Padrinoのすべての機能を使っても いいし、一部の機能を Sinatra に導入する形 で使ってもいい。 ● register/useで “Sinatra way” で拡張している強み
  • 27. Lightweight ● フルスタックPadrinoでも、素のSinatraとほと んど変わらないレスポンスの速さ * http://www.padrinorb.com/blog/padrino-0-10-0-routing- upgrades-rbx-and-jruby-support-and-minor-breaking-changes
  • 28. 図解 ● Padrinoの出現以前 Rails ActionController Rspec- mochaほか Mongoidほか ActiveRecord Rails ERB RSpec Sinatra Hamlほか Erubis
  • 29. ゴッドファーザー登場 ● Sinatra Family 誕生の瞬間 Rails ActionController Rspec- mochaほか Mongoidほか ActiveRecord Rails ERB RSpec Sinatra Hamlほか Erubis Padrino
  • 30. Sinatraから拡張した点 ● Rails風MVCパターンの導入 ● 豊富なHelper ● シンプルなメール配信機能 ● シンプルなキャッシュ機能 ● 基本的な国際化機能 ● 見易いロガー ● 開発時のリローダー ● 管理画面の自動作成 ● サブアプリケーションの作成/マウント ● ジェネレータ含むコマンドラインツール ● テストの自動生成
  • 31. Rails風MVC ● コントローラ相当 → Padrino::Rouiting ● Rails – ActionController + routes.rb ● Sinatra – Sinatra DSL ● Padrino は、Sinatra DSLをさらに拡張し、擬似 的な「コントローラ」を導入、各ルーティン グを参照可能にする
  • 32. Helper ● Railsっぽい便利ヘルパ~ズ ● content_for ● form_for ● stylesheet_link_tag ● Format Helpers → Padrino::Helpers
  • 33. Mailer ● メール定義用のDSL → Padrino::Mailer ● deliver メソッドで配信 ● Mail gemがベースなので、マルチパートを はじめ結構融通が効く ●
  • 34. Cache ● 割と最近追加されました → Padrino::Cache ● Page cache/Fragment cache
  • 35. ロガ~ ● Padrino::Logger::Rack
  • 36. リローダー ● 0.10.5 現在、超頭良い ● F5駆動開発にぜひ
  • 37. 管理画面 ● 管理画面担当のサブアプリケーションを簡単 に作れる ● どうせScaffoldとか管理画面作ることが多いでしょ? ● ModelのScaffold、というかCRUDを簡単に
  • 38. サブアプリケーション ● ルーティングは共有しないが、Modelはじめ共 通ライブラリを使う場合に有利 ● Djangoからインスパイアザネクスト
  • 39. コマンドラインツール ● padrino コマンドがあります ● 一通り ジェネレータ あります ● コンソール、 サーバ起動 など…
  • 40. padrino rake test ● ジェネレータは、基本的にユニットテストも 一緒に作ってくれます。 ● テストの基本的な構成物を作ってくれるの で、TDDにも向いていたりします。 ● また、実は、machinist、capybaraなどのテスト 支援ライブラリもちょっとしたコツで使えた りします。
  • 41. テストの話は ● TokyuRubyKaigi 04 で! ● 10/29 ● 於 神泉近くの某社 http://regional.rubykaigi.org/tokyu04
  • 42. ここまでのまとめ ● Sinatraはシンプル、軽量、素敵 ● Sinatraはシンプル過ぎるので、「かゆいとこ ろに手が届く」Padrinoが出現、Railsとの抗争 激化(予定) ● Padrinoは伸縮自在、小規模~大規模OK ● Padrinoはいろんなライブラリと共存する
  • 43. 第三章 ● Extending Sinatra as a super-simple Rack-based framework ● The Sinatra Ecosystem ● そして伝説へ…
  • 44. Sinatraを強めるAPI ● use ● Rack Middleware を登録する ● register ● Sinatra::Base を拡張したクラスに直接作用し、挙 動を変更する ● helpers, set, use, なんかのクラスマクロをセットで 呼ぶのがよくある使い方
  • 45. use ● Rack config DSL とある簡素な config.ru
  • 46. Rack準拠アプリケ~ション ● App#call(env) を呼び、 ● [status_code, {“Header” => “foo”}, [bodies]] を返す ● ダックタイピング、特定のClass/Moduleを継承 する必要なし(奥野氏)
  • 47. Rack Middleware ● Initialize 時に、第一引数として app を取る ● あとは Rack向けアプリケーションと同様 ⇔
  • 48. Super Simple Rack Middleware
  • 50. 便利な Rack Middleware 情報です ● OmniAuth ● Warden ● Rack::Rewrite ● Rack::Protection (1.3 よりSinatraが標準で使う) ● Rack::Recaptcha ● Jpmobile::Rack::* (一部機能不可) ● Rack gem 自身にもいくつか添付されています。 ベーシック/ダイジェスト認証とかが有名?ですか?
  • 51. register ● register されたModuleは、`self.registered`フック が呼ばれる ● そのフックで、元アプリのクラスマクロを呼 んだりできたりする
  • 53. app.class_eval とかが始まると ● 暗黒 ● send :include, send :extend, … ● Padrino::Routingとかは、もともとのSinatraの get/post/put/delete の移譲先、 ● Sinatra::Base.route ● を上書きしている!!!!!! ● メタプログラミングは用量を守って正しく
  • 54. 使い分け ● Rackに切り出せるものはRackで ● ほとんど何でも切り出せますが…… ● 一応、例えばRailsで使えるか?とか意識 ● たとえばhelperの追加、クラスマクロの追加と かはregisterでどう? ● そもそもそういう機能追加ならSinatraへの依存度 が高いはず、遠慮なくいっとこう
  • 55. Sinatraをベースに、 ● use/registerを駆使して、ビュッフェのごとく欲しい 機能を皿に盛ることで、 ● ウェッブアプリケ~ションができる! ● 疎結合、スモール、読みやすい、高速 ● post-Railsなウェブ開発を感じさせてくれます
  • 57. cf. ● cho45先生の発表 ● ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく ●
  • 58. Sinatra「呼んだ?」 ● 安全: rack-protection とか色々ある ● 読むコード最小: sinatra/base.rbは1,646行、いける!(...) ● 早い: これは自信あるぞ、高速 ● 必要なら最低限自分で書く: 前述した二つのAPIの力で、 簡単な機能を自作するのもやりやすいですね
  • 59. Sinatra、いい線行ってる ● 行ってると信じてる
  • 60. Yet Another Extending ● plugin 機構がある ● The Plugin Generator allows you to create Padrino projects based on a template file that contains all the necessary actions needed to create the project. Plugins can also be ● executed within an existing Padrino application. The plugin generator provides a simple DSL in addition with leveraging Thor to make generating projects a breeze! ● Generator の内部DSLと同じものを使っている っぽい。padrino-recipeというところでいくつ かレシピが公開されている https://github.com/padrino/padrino-recipes/tree/master/plugins Pull request welcome!
  • 62. Rack/Sinatra/Padrinoエコシステム ● 成長中と信じてる ● 英語圏、けっこう便利Rackミドルウェア~や Sinatra拡張が多い印象 ● 日本語情報もどんどん増やそう! 悲しいお知らせの例
  • 63. 一つのヒント ● rack-contrib https://github.com/rack/rack-contrib ● sinatra-contrib https://github.com/sinatra/sinatra-contrib ● padrino-contrib https://github.com/padrino/padrino-contrib ● 上記リポジトリでやりたいことはできないか? ● 上記リポジトリに入っているライブラリは、gemで簡単に利用できる ● 英語も含めてちゃんとググったか? ● いたずらな車輪の再発明より、あるものを使う、あるものにリ ソースを集中させる方を個人的にすすめて行きたい ● そうして、コミュニティが徐々にできていくのでは ● 何か目的があって車輪を発明することを咎めるわけではない
  • 64. 最後にPadrinoとSinatraの関係に ついて言っとくか ● PadrinoはSinatraなしでは存在し得ない ● PadrinoはSinatraを便利にする道具の一つです ● なので、Sinatraをリプレースするものとか じゃないですね。誤解しないでね~。 ● 協力し、Rails組との抗争に打ち勝とう!
  • 66. 総括 ● Sinatra is a fun! ● Padrino helps you a lot! ● どんどん使って、どんどん貢献していきま しょう(特に Padrino はまだ若いです)
  • 67. __END__ ● ご清聴ありがとうございました
  • 68. misc ● 今日の資料、と言うかコピペ向けコード ● https://gist.github.com/1302918 ● スライドシェッア~予定地 ● http://www.slideshare.net/udzura/startpadrino
  • 69. /~\[PR]/~\ ● 富士山マガジンサービスでは、 ● Ruby好き、Rails得意 ● Groovyというものに抵抗がない ● Windowsというものにひどいアレルギーがない ● エンジニアを募集しています。興味があれば 私に声掛けを~ JOIN US!