Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
shibuya-rb-20120215-ramaze-sequel
Search
Kensuke Nagae
February 15, 2012
Programming
3
3.9k
shibuya-rb-20120215-ramaze-sequel
Kensuke Nagae
February 15, 2012
Tweet
Share
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.1k
#AsiaDevNight
kyanny
0
170
Grape による API 実装 in action
kyanny
7
7.2k
<%= link_to "bundle", "update" %> - Make "bundle update" more fun to review
kyanny
2
5.2k
Web Developer Seminar
kyanny
0
1.9k
Heroku を利用した Quipper の開発事例紹介
kyanny
11
3.4k
Continuous gem dependency updating with Jenkins and Pull Request
kyanny
9
3.4k
Other Decks in Programming
See All in Programming
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
510
「抽象に依存せよ」が分からなかった新卒1年目の私が Goのインターフェースと和解するまで
kurogenki
0
120
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
15
8.8k
Everything Claude Code OSS詳細 — 5層構造の中身と導入方法
targe
0
100
AIに任せる範囲を安全に広げるためにやっていること
fukucheee
0
130
ふつうの Rubyist、ちいさなデバイス、大きな一年
bash0c7
0
950
new(1.26) ← これすき / kamakura.go #8
utgwkk
0
2.3k
Claude Code Skill入門
mayahoney
0
390
ロボットのための工場に灯りは要らない
watany
10
2.9k
クライアントワークでSREをするということ。あるいは事業会社におけるSREと同じこと・違うこと
nnaka2992
1
340
encoding/json/v2のUnmarshalはこう変わった:内部実装で見る設計改善
kurakura0916
0
410
Swift ConcurrencyでよりSwiftyに
yuukiw00w
0
270
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
190
Practical Orchestrator
shlominoach
191
11k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
sira's awesome portfolio website redesign presentation
elsirapls
0
190
Into the Great Unknown - MozCon
thekraken
40
2.3k
Accessibility Awareness
sabderemane
0
81
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
970
Measuring & Analyzing Core Web Vitals
bluesmoon
9
780
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
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こと・知ってないと使 えないことが少ないので、思いついたものをさっと書いて動かしてみ るのにオススメです
おわり ありがとうございました