SlideShare a Scribd company logo
超軽量 Ruby フレームワーク 『 Sinatra 』を使ってみた。
Sinatra ってなに? Ruby の超軽量のフレームワークです。 1 モジュールだけで ( も ) 動きます。 基本的には、 Rack や ERB を組み込んだ Dispatcher です。 開発環境構築~開発~本番環境構築  全工程がとっても簡単。 Sinatra の良いところ    Ruby のフレームワークと言えば Rails が圧倒的に有名ですが    Rails の長所と短所を考えてみると   長所: 大きめの規模の場合、開発効率が良い   短所: 重量級故に実行速度が遅い。 ちょっとしたものを作る時には大げさ。 ということで、 Sinatra は 『 ちょっとしたものを作る時にはいいかも 』   そんなフレームワーク(だと思います)
言葉で説明するより見てもらう方が早い require  'rubygems'  require  'sinatra'  get  '/hi'  do   'Hello, world!'  end  get の部分は、 HTTP メソッドなので、 post, put, delete などが使用できます マッチする URL には、 * や正規表現、変数が使えます。 post ‘/create/*/:id’  do   id = param[ :id ] name = param[ :account ][ :name ] end じゃーん! なんだか美しい!
その他、基本のご紹介 http://github.com/sinatra/sinatra/blob/master/README.jp.rdoc ソースに日本語ドキュメントが含まれてるので、興味ある方は ご参照ください。 リダイレクト redirect '/', 303 ステータスコード status 404  &quot;Not found“ フィルター before do … end ヘルパー helpers do  include Rack::Utils  alias_method :h, :escape_html end ->  <%=h hoge %> ERB( テンプレート ) の使い方 get '/' do  erb :index, layout => true end ./views/index.erb  ./views/layout.erb Static ファイル ./public 以下に置く ./public/css/default.css ->  /css/default.css ActiveRecord (O/R マッパ ) は使いたい! require 'activerecord' Sessions enable :sessions  get '/' do  ssid = session[:ssid]  end
インストールもすごく簡単 Gem で入れるだけです。 # gem install sinatra # gem install mongrel 起動もすごく簡単 これで WEB サーバーごと 起動します!   $  ruby hello.rb    Port や WEB サーバの指定   $  ruby hello.rb -p 80 -s mongrel   Webrick や Thin も、入っているなら指定可能です ソースに 2 行程足せば、 CGI 動作させることも可能です。
Apache + passenger(mod_rails) で動かす Passenger で動かすのも簡単です。 # gem install passenger  # passenger-install-apache2-module (最後に表示される 3 行の文字列を httpd.conf にコピペ)  # mkdir /path/to/sinatra_root/public # mkdir /path/to/sinatra_root/tmp # vi config.ru ------------------------- require ‘hello’ run Sinatra::Application ------------------------- あとは、 DocumentRoot を  /path/to/sinatra_root/public に変更して httpd を restart Passenger で動かすメリット Mongrel のように Port を消費しない(いくつも起動しなくていい) tmp/restert.txt というのを一緒にアップすれば restart してくれるので  アップすれば OK という簡単デプロイ 速い(らしい) アクセスがない時は自動で子プロセスが消える   ->メモリ節約、再起動効果
Rails と速度比較してみた 比較環境 Apache2.2.3 + Passenger2.2.5   同一設定 ApacheBench を利用 sinatra は ActiveRecord を require 比較内容 テンプレートを使って簡単な HTML を吐くだけ 比較結果 やっぱり速い! (よかった) () 内は ActiveRecord を require しない場合 Rails 1.2.6 Rails 2.3.4 Sinatra 0.9.4 req /sec 68 83 116 % 82% 100%( 基準 ) 140% VSZ 42M 42MB 21M (13MB) RSS 34M 25MB 18M (9MB)
まとめ 長所  なにもかも簡単  コードがシンプル  そこそこ速い 短所  作りこむと開発効率悪そう(-> Rails の範疇)  作りこむと結局遅くなりそう(-> Rails もどき化) 結論 ちょっとしたものを作りたいときに。 壁が見当たらないので、初めてのプログラミングにどうでしょう。

More Related Content

PDF
サーバ構築実践入門
PDF
当社のawsへの取組
PDF
RVM with Server Environment
PDF
Vagrant intro
PPTX
PowerShell de Azure
PDF
仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会
PDF
Ember コミュニティとわたし
PDF
Ruby紹介
サーバ構築実践入門
当社のawsへの取組
RVM with Server Environment
Vagrant intro
PowerShell de Azure
仮想マシンざっくり解説と実践Vagrant | StaticPress × S3 × Vagrant 勉強会
Ember コミュニティとわたし
Ruby紹介

What's hot (20)

KEY
EmitJSの環境をちょこっと調べた
PPTX
MS open technologies の ross gardler さんを囲む会 改め 『MS open technologies に必ず伝えてほしい...
PPTX
Microsoft open technologies の ross gardler さんを囲む会 改め 『microsoft open technolo...
PPTX
Maglica - A Simple Internal Cloud Tool at #techkayac
PDF
Playで作るwebsocketサーバ
PPTX
わんくま東京#46 予告編
PDF
第1回 一撃サーバー構築シェルスクリプト勉強会
PDF
Ansible roleとinventoryの書き方
PPTX
Zabbixを2分でインストール
PDF
130412 kayac-cinnamon
PDF
2010年インストールマニアックス ~Javaアプリ編~
PDF
PDF
Sendslacker
PPTX
async / await の話
PPTX
Rubyで.netを扱う
PDF
忍者ツールズのCouchbase導入事例
PDF
Chefを利用した運用省力化とDevOpsの取り組みについて
PDF
Devlove mackerel
PDF
PIAXで作る P2Pネットワーク
PDF
イマドキのコーダー環境構築2016
EmitJSの環境をちょこっと調べた
MS open technologies の ross gardler さんを囲む会 改め 『MS open technologies に必ず伝えてほしい...
Microsoft open technologies の ross gardler さんを囲む会 改め 『microsoft open technolo...
Maglica - A Simple Internal Cloud Tool at #techkayac
Playで作るwebsocketサーバ
わんくま東京#46 予告編
第1回 一撃サーバー構築シェルスクリプト勉強会
Ansible roleとinventoryの書き方
Zabbixを2分でインストール
130412 kayac-cinnamon
2010年インストールマニアックス ~Javaアプリ編~
Sendslacker
async / await の話
Rubyで.netを扱う
忍者ツールズのCouchbase導入事例
Chefを利用した運用省力化とDevOpsの取り組みについて
Devlove mackerel
PIAXで作る P2Pネットワーク
イマドキのコーダー環境構築2016
Ad

Viewers also liked (18)

PPTX
SvnからGitへの移行について
PDF
The Royal Lagoon Bhubaneswar
PPT
素敵なjavascript ~google chrome編~
PPT
Q4 Mでメッセージキュー
PPT
Yii紹介
PPTX
軽量高機能webサーバーnginx
PPT
RubyとPost Gis
PPT
Html5 入門編 その2
PPTX
muninで簡単&自在サーバーモニタリング
PPT
素敵なjavascript ~Firefox編 ~
PPTX
フラクタリスト技術知識共有会発表資料 090903
PPT
Git紹介~入門編~
PPT
正規表現のススメ_20091217
PPT
Tokyo Cabinet
PPT
Mixiアプリで体験する Open Social
PPTX
Zshって最強らしい
PDF
しょぼいプレゼンをパワポのせいにするな! by @jessedee
PDF
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
SvnからGitへの移行について
The Royal Lagoon Bhubaneswar
素敵なjavascript ~google chrome編~
Q4 Mでメッセージキュー
Yii紹介
軽量高機能webサーバーnginx
RubyとPost Gis
Html5 入門編 その2
muninで簡単&自在サーバーモニタリング
素敵なjavascript ~Firefox編 ~
フラクタリスト技術知識共有会発表資料 090903
Git紹介~入門編~
正規表現のススメ_20091217
Tokyo Cabinet
Mixiアプリで体験する Open Social
Zshって最強らしい
しょぼいプレゼンをパワポのせいにするな! by @jessedee
【プレゼン】見やすいプレゼン資料の作り方【初心者用】
Ad

Similar to 20091119_sinatraを使ってみた (20)

PDF
Start-padrino
KEY
Real world rails
PDF
Web技術勉強会 第33回
PPTX
シラサギハンズオン 大阪
PPTX
シラサギハンズオン 1015 1016
PDF
成長を加速する minne の技術基盤戦略
PDF
クラウドカンファレンスIn静岡 r cloud
PDF
Ruby Enterprise Environment
PDF
Railsの開発環境作るぞ
PPTX
シラサギハンズオン 東京
PDF
Building Static Website With Github And Jekyll
PDF
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
PPT
Ruby on Rails3 Tutorial Chapter3
PDF
InfiniBand on Debian
PDF
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
PDF
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
PDF
Rails初心者レッスン lesson1 3rd edition
PDF
Sinatraでwebアプリケーション開発を学ぶ
PDF
RでつくるWebアプリ~rApache編~
PDF
Docker最新動向2017秋+セキュリティの落とし穴
Start-padrino
Real world rails
Web技術勉強会 第33回
シラサギハンズオン 大阪
シラサギハンズオン 1015 1016
成長を加速する minne の技術基盤戦略
クラウドカンファレンスIn静岡 r cloud
Ruby Enterprise Environment
Railsの開発環境作るぞ
シラサギハンズオン 東京
Building Static Website With Github And Jekyll
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Ruby on Rails3 Tutorial Chapter3
InfiniBand on Debian
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
Rails初心者レッスン lesson1 3rd edition
Sinatraでwebアプリケーション開発を学ぶ
RでつくるWebアプリ~rApache編~
Docker最新動向2017秋+セキュリティの落とし穴

20091119_sinatraを使ってみた

  • 1. 超軽量 Ruby フレームワーク 『 Sinatra 』を使ってみた。
  • 2. Sinatra ってなに? Ruby の超軽量のフレームワークです。 1 モジュールだけで ( も ) 動きます。 基本的には、 Rack や ERB を組み込んだ Dispatcher です。 開発環境構築~開発~本番環境構築  全工程がとっても簡単。 Sinatra の良いところ   Ruby のフレームワークと言えば Rails が圧倒的に有名ですが   Rails の長所と短所を考えてみると   長所: 大きめの規模の場合、開発効率が良い   短所: 重量級故に実行速度が遅い。 ちょっとしたものを作る時には大げさ。 ということで、 Sinatra は 『 ちょっとしたものを作る時にはいいかも 』   そんなフレームワーク(だと思います)
  • 3. 言葉で説明するより見てもらう方が早い require 'rubygems' require 'sinatra' get '/hi' do 'Hello, world!' end get の部分は、 HTTP メソッドなので、 post, put, delete などが使用できます マッチする URL には、 * や正規表現、変数が使えます。 post ‘/create/*/:id’ do id = param[ :id ] name = param[ :account ][ :name ] end じゃーん! なんだか美しい!
  • 4. その他、基本のご紹介 http://github.com/sinatra/sinatra/blob/master/README.jp.rdoc ソースに日本語ドキュメントが含まれてるので、興味ある方は ご参照ください。 リダイレクト redirect '/', 303 ステータスコード status 404 &quot;Not found“ フィルター before do … end ヘルパー helpers do include Rack::Utils alias_method :h, :escape_html end -> <%=h hoge %> ERB( テンプレート ) の使い方 get '/' do erb :index, layout => true end ./views/index.erb ./views/layout.erb Static ファイル ./public 以下に置く ./public/css/default.css -> /css/default.css ActiveRecord (O/R マッパ ) は使いたい! require 'activerecord' Sessions enable :sessions get '/' do ssid = session[:ssid] end
  • 5. インストールもすごく簡単 Gem で入れるだけです。 # gem install sinatra # gem install mongrel 起動もすごく簡単 これで WEB サーバーごと 起動します!   $ ruby hello.rb    Port や WEB サーバの指定   $ ruby hello.rb -p 80 -s mongrel   Webrick や Thin も、入っているなら指定可能です ソースに 2 行程足せば、 CGI 動作させることも可能です。
  • 6. Apache + passenger(mod_rails) で動かす Passenger で動かすのも簡単です。 # gem install passenger # passenger-install-apache2-module (最後に表示される 3 行の文字列を httpd.conf にコピペ) # mkdir /path/to/sinatra_root/public # mkdir /path/to/sinatra_root/tmp # vi config.ru ------------------------- require ‘hello’ run Sinatra::Application ------------------------- あとは、 DocumentRoot を /path/to/sinatra_root/public に変更して httpd を restart Passenger で動かすメリット Mongrel のように Port を消費しない(いくつも起動しなくていい) tmp/restert.txt というのを一緒にアップすれば restart してくれるので  アップすれば OK という簡単デプロイ 速い(らしい) アクセスがない時は自動で子プロセスが消える   ->メモリ節約、再起動効果
  • 7. Rails と速度比較してみた 比較環境 Apache2.2.3 + Passenger2.2.5  同一設定 ApacheBench を利用 sinatra は ActiveRecord を require 比較内容 テンプレートを使って簡単な HTML を吐くだけ 比較結果 やっぱり速い! (よかった) () 内は ActiveRecord を require しない場合 Rails 1.2.6 Rails 2.3.4 Sinatra 0.9.4 req /sec 68 83 116 % 82% 100%( 基準 ) 140% VSZ 42M 42MB 21M (13MB) RSS 34M 25MB 18M (9MB)
  • 8. まとめ 長所  なにもかも簡単  コードがシンプル  そこそこ速い 短所  作りこむと開発効率悪そう(-> Rails の範疇)  作りこむと結局遅くなりそう(-> Rails もどき化) 結論 ちょっとしたものを作りたいときに。 壁が見当たらないので、初めてのプログラミングにどうでしょう。