Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
shibuya-rb-20120215-ramaze-sequel
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kensuke Nagae
February 15, 2012
Programming
3.9k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
shibuya-rb-20120215-ramaze-sequel
Kensuke Nagae
February 15, 2012
More Decks by Kensuke Nagae
See All by Kensuke Nagae
スタディサプリ開発チームのこれまでとこれから / StudySapuri Product Meetup #1
kyanny
0
2.6k
Tokyo Web Dev hiring discussion session
kyanny
0
13k
sbpayment.rbのご紹介
kyanny
0
2.2k
#AsiaDevNight
kyanny
0
190
Grape による API 実装 in action
kyanny
7
7.3k
<%= link_to "bundle", "update" %> - Make "bundle update" more fun to review
kyanny
2
5.4k
Web Developer Seminar
kyanny
0
2k
Heroku を利用した Quipper の開発事例紹介
kyanny
11
3.4k
Continuous gem dependency updating with Jenkins and Pull Request
kyanny
9
3.5k
Other Decks in Programming
See All in Programming
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
380
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
130
iOSDCのペンライトを自動制御したい!
akkeylab
0
330
Are APIs Still Relevant in the AI Era?
soyuka
0
390
Ghostty + Neovimで作る 透明でカッコ良い開発環境
j341nono
0
150
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
460
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
200
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
290
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
570
速習iPhone Duo対応
yuukiw00w
2
920
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
460
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.6k
Featured
See All Featured
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
300
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
42k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Statistics for Hackers
jakevdp
799
230k
WENDY [Excerpt]
tessaabrams
14
40k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Paper Plane
katiecoart
PRO
4
53k
Ruling the World: When Life Gets Gamed
codingconduct
0
380
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
900
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
The untapped power of vector embeddings
frankvandijk
2
1.9k
Transcript
Ramaze と Sequel で ウェブサービスを作ってみた 渋谷.rb[:20120215] Kensuke Nagae
謝罪
s/Ramaze/Sinatra/ s/作ってみた/作ってます/
でも Ramaze の話をします
長永 健介 について • 刺身☆ブーメラン, @kyanny • ペパボ、 30days Album
• 最近猫を飼いました
HBKindle 作ってます • はてブしたページを Kindle に送るサービス • はてなブックマーク WebHook を使ってます
Ramaze と Sequel 使ってみた • Ramaze はマイクロフレームワーク (Sinatra 的なもの) •
Sequel は O/R マッパ (ActiveRecord 的なもの) • 両方初めて -> 簡単に使えた -> せっかくなので発表
Ramaze • ラマゼ? • WAF • 主要な日本語の情報源 ◦ ramaze-users ◦
Ruby Freaks Lounge 第11回 自由なWebフレームワーク, Ramaze ◦ Ruby Freaks Lounge 第12回 Ramazeを使って120行で作る 単語帳アプリ ▪ 全て yhara さんの仕事 (すごい)
Ramaze のコードの例 require 'ramaze' class Blog < Ramaze::Controller map '/blog'
# GET /blog def index 'Hello, this is my Ramaze blog' end end Ramaze.start
Ramaze の特徴 • いいところ ◦ DSL じゃない (Ruby のクラスそのもの) ◦
覚えることが少ない • 悪いところ ◦ Ruby を知らないときつい (デザイナさんとか)
Ramaze Command • ひな形作成 • ウェブサーバ起動 • irb コンソール起動 •
別に使わなくていい
覚えることが少ない? • 規約が少ない • • require は Ramaze を知らなくても読める
Controllers • map '/uri' • request[:form_field_name] • これだけ知ってれば十分使えます ◦ params
はあっても良かった • controller/*.rb に置くのが流儀
Models • 好きな • O/R マッパを • 使ってください • model/*.rb
に置くのが流儀
Views • 好きな • テンプレートエンジンを (ry • layout 使えます •
Controller から render_* でレンダリング • 変数の参照はインスタンス変数 @user とかで (Rails と同じ) • view/*.erb とかに置くのが流儀 ◦ map で階層増えたらそのぶんディレクトリを掘る
Helpers • いっぱい • あるので • がんばって研究しましょう
Configuration • Ramaze::Traited ◦ 外からアクセスできるクラス変数 @@val ◦ 継承で上書きされない == クラスごとに固有の値
◦ 設定値をもたせたりとか ▪ 定数でよいのでは... • Ramaze::Optioned ◦ グローバル変数的な存在 ◦ registrar とか context とかみたいな? ◦ 設定値をもたせたりとか ▪ グローバル変数でよいのでは... ◦ 入れたり出したりが面倒くさい
Sessions • session と flash がある • Rack::Session::Cookie とか使ったほうがよさげ
Ramaze まとめ • 覚えることが少ない • 把握しやすい • Sinatra を Modular
スタイルに書きなおすくらいなら最初から採 用してもいいのでは
Sequel • シークェル? • O/R マッパ • 主要な日本語の情報源 ◦ http://d.hatena.ne.jp/yshgt/20080629/1214720897
▪ ここみれば以降のスライドみなくていいです ◦ Ruby Freaks Lounge 第9回 SinatraとSequel・Hamlで掲示板 アプリを作る ▪ これも yhara さん (すごい)
Sequel のコードの例 # データベースに接続 DB = Sequel.connect('sqlite://development.db') # CREATE DB[:users]
<< {:name => 'Kensuke Nagae'} # SELECT @user = DB[:users].filter( :name => 'Kensuke Nagae' ).first # UPDATE DB[:users].filter( :name => 'Kensuke Nagae' ).update(:name => 'kyanny')
Sequel の特徴 • dataset がとてもお手軽 • dataset がとてもお手軽 ◦ ホントにお手軽なので二回いいました
• Model クラスも作れる ◦ ActiveRecord でよいのでは... • Migration もある ◦ でも Rake タスクは自前で用意する... • Heroku Friendly (postgres:// みたいな URL を直接食わせら れる)
dataset とはなにか • Dataset Basics ◦ Datasets are probably the
thing that separate Sequel from other database libraries. ◦ 「SQL クエリ」または「行セット」を表現したもの ◦ 行セットとは、データの列を含む行の集まりです。 ◦ SQL といえば集合指向 ◦ dataset は集合を集合のまま扱う仕組み ▪ SQL クエリとの剥離が少ないので直感的
The Sequel Console • irb コンソール起動 • DB という定数にデータベースオブジェクトが入る ◦
sqlite(1) とかでよいのでは... • マイグレーション実行 (-m) ◦ 便利、だが反面 Rake タスクがない...
Migrations • sequel -m path/to/migrations postgres://host/database • rake タスクは自分で用意する... ◦
http://steamcode.blogspot.com/2010/09/sequel-and- heroku.html ◦ 自分で用意しなくてよかった ◦ ほかにも探せばけっこうあります
Sequel for ActiveRecord Users • ActiveRecord っぽい Model が欲しい方に •
けっこう多機能 (association, validation, callback, etc.) ◦ ActiveRecord でよいのでは... ◦ dataset スタイルとコードが違いすぎる ◦ Sinatra の Classic Style と Modular Style に似ている ◦ 最初から AR っぽく書くなら AR を選べばいい ◦ 途中から変えるくらいなら最初から AR で書けばいい ◦ 「大きく育てる気がないコード」用と割り切る
他にもいろいろあるけど 調べきれませんでした
Sequel まとめ • プロトタイピングのお供に最適 ◦ せっかく WAF はミニマルなのに DB 使うととたんにヘヴィに
なるのはだるい • dataset は小さいコード向き、と割り切る • Model を使うくらいなら他の O/R マッパでいいんじゃない?
まとめ Ramaze も Sequel も使い始めに覚えなきゃいkこと・知ってないと使 えないことが少ないので、思いついたものをさっと書いて動かしてみ るのにオススメです
おわり ありがとうございました