SlideShare a Scribd company logo
1 of 66
Download to read offline
Rails4
SUZUKI, Kei
Table of Contents
1. イントロダクション
2. 主な変更点
3. 注目機能
4. ライブラリの対応状況
5. はまりどころ
6. 残された課題
7. 参考情報
8. まとめ
イントロダクション
ハイライト
● Ruby2.0推奨、1.9.3以降をサポート
● Strong Parameters
● Turbolinks
● Russian Doll Caching
イントロダクション
外部ライブラリ化された機能
● 非推奨機能のため
○ Hash-based & Dynamic finder methods
● 使用頻度が低いなどの理由で
○ Mass assignment protection in Active Record models
○ ActiveRecord::SessionStore
○ Active Record Observers
○ Active Resource
○ Action Caching
○ Page Caching
○ Performance tests
● 疎結合にするため
○ Sprockets
イントロダクション
主な変更点
全体的な変更
プラグインの廃止
● プラグイン(vendor/plugins)が廃止
● バージョンや依存関係の管理に問題があった
主な変更点(全体的な変更)
Rails2 vendor/plugins
Rails3 bundler (vendor/plugins)
Rails4 bundler
ライブラリ管理がbundlerに一本化された
テストコードのディレクトリ構成が変更
主な変更点(全体的な変更)
Rails3 Rails4
unit
functional
integration
performance
fixtures
models
mailers
helpers
controllers
integration
fixtures
テストコードの置き場所が明確になった
concernsディレクトリの導入(1)
● concerns ディレクトリ
○ app/models/concerns
○ app/controllers/concerns
● 用途
○ モデル、コントローラの Mixin 用モジュールを置く場所
○ プロジェクトごとにバラバラだった置き場所を統一する
主な変更点(全体的な変更)
共通コードの置き場所が用意された
concernsディレクトリの導入(2)
● 肥大化したクラスは機能ごとにモジュール分割
主な変更点(全体的な変更)
# app/models/article.rb
class Article < ActiveRecord::Base
include Tagging
include Rating
end
# app/models/concerns/tagging.rb
module Tagging
# … タグ付けに関するコード
end
# app/models/concerns/rating.rb
module Rating
# … レーティングに関するコード
end
# app/models/article.rb
class Article < ActiveRecord::Base
# … タグ付けに関するコード
# … レーティングに関するコード
# … その他のコード
end
分割したモジュールの置き場所がconcerns
index.html の動的生成
主な変更点(全体的な変更)
public/index.htmlを消す手間が不要になった
Not Found ページの改良
主な変更点(全体的な変更)
ルーティングのインクリメンタル検索が可能になった
開発用情報ページの導入(1)
主な変更点(全体的な変更)
● /rails/info/routes
ここでもインクリメンタル検索が可能
開発用情報ページの導入(2)
主な変更点(全体的な変更)
● /rails/info/properties
Railsの起動を待たない分、rakeタスクより速い
内部的な変更
主な変更点(全体的な変更)
● デフォルトでスレッドセーフ
○ config.threadsafe! は廃止
● ルーティングのパフォーマンス改善
○ 内部エンジンがRack::MountからJourneyに変更
● sprocketsのバージョンアップが容易になった
○ sprocketsと疎結合になったため
● ActiveSupport::Cache::MemCacheStore
○ 依存ライブラリがmemcache-clientからdalliに変更
● ActiveSupport::Cache::Entry の最適化
○ メモリ使用量と処理のオーバーヘッドを削減
目に見えない部分も改良されています
主な変更点
Model
attr_accessible, attr_protected は非推奨
主な変更点(Model)
● protected_attributesとして外部ライブラリ化
● 今後はStrongParametersを使用することを推奨
StrongParameters については後述します
動的なファインダメソッドは非推奨
主な変更点(Model)
xxx_by_yyy は where(...) に置き換える
find_all_by_XXX(...) → where(XXX: …)
find_last_by_XXX(...) → where(XXX: …).last
scoped_by_XXX(...) → where(XXX: …)
find_or_initialize_by_XXX(...) → where(XXX: …).find_or_initialize
find_or_create_by_XXX(...) → where(XXX: …).find_or_create
または find_or_create_by(XXX: …)
find_or_create_by_XXX!(...) → where(XXX: …).find_or_create!
または find_or_create_by!(XXX: …)
scope には Proc オブジェクトが必須
主な変更点(Model)
Procを指定しない書き方(=バグの温床)は禁止
NG
scope :recent,
where(‘created_at > ?’, 7.days.ago)
OK
scope :recent,
lambda { where(‘created_at > ?’, 7.days.ago) }
ActiveModel::Modelモジュール(1)
主な変更点(Model)
● Rails3でモデルの機能がモジュール分割され、
再利用可能にはなったが・・
再利用するだけで、これだけ書くの?
class YourModel
extend ActiveModel::Naming
extend ActiveModel::Translation
include ActiveModel::Validations
include ActiveModel::Conversion
def initialize(params={})
params.each do |attr, value|
self.public_send(“#{attr}=”, value)
end if params
end
def persisted?
false
end
end
ActiveModel::Modelモジュール(2)
主な変更点(Model)
● Rails4では基本的な機能を持つ
ActiveModel::Modelモジュールが用意された
includeするだけで簡単にモデルの機能を再利用可能
class YourModel
include ActiveModel::Model
end
クエリ API の変更(1)
主な変更点(Model)
● all が配列ではなく Relation を返す
○ Rails3 では配列を返す
○ Rails4 では Relation を返す
(配列が欲しい場合はto_aする)
● pluck は複数カラムを指定可能
○ Rails3 では1つのカラムのみ指定可能
● update_column の代わりに update_columns
○ update_column は非推奨
● update_attributes は update のエイリアスに
○ update_attributes が非推奨となった訳ではない
細かい改良が多くあります
クエリ API の変更(2)
主な変更点(Model)
● where.not で否定条件
○ Rails3: where(‘name != ?’, ‘たろう’)
○ Rails4: where.not(name: ‘たろう’)
● 再代入せずに(破壊的に)条件を追加
○ u = User.all
○ u.where!(name: ‘たろう’)
○ u.where!(status: ‘有効’)
○ u.order!(:created_at)
○ u.limit!(777)
細かい改良が多くあります
クエリ API の変更(3)
主な変更点(Model)
● unscopeというexceptより柔軟なメソッドが追加
使用頻度は低いでしょう
# except
User.where(name: ‘Taro’, status: ‘OK’).except(:where)
# unscope
User.where(name: ‘Taro’, status: ‘OK’).unscope(where: :name)
クエリ API の変更(4)
主な変更点(Model)
● 嫌な挙動が直った!
● Rails3だと
○ SELECT * FROM users
WHERE name = ‘じろう’;
● Rails4だと
○ SELECT * FROM users
WHERE name = ‘たろう’ AND name = ‘じろう’;
scopeのチェインで問題になることが多くありました
class User < ActiveRecord::Base
scope :taro, lambda { where(name: ‘たろう’) }
scope :jiro, lambda { where(name: ‘じろう’) }
end
User.taro.jiro.to_sql
バリデーション
主な変更点(Model)
● validates_absence_of が追加された
○ blank? が true であることを検証する
● validates に :strict オプションが追加された
○ validates :xxx, …, strict: true
○ ActiveModel::StrictValidationFailed が raise される
● ConfirmationValidator のエラーメッセージ
○ Rails3: ATTR に設定される
○ Rails4: ATTR_confirmation に設定される
ConfirmationValidatorの挙動変更は心の片隅に
マイグレーション
主な変更点(Model)
● 条件付きでリバーシブルになったメソッド
○ drop_table, remove_column: 追加情報を与えれば
○ change_table: ブロック内で remove などをしなければ
● reversible メソッド
○ ブロック内で up/down を行うコードを指定可能
● revert メソッド
○ 指定されたマイグレーションを down する
あまり複雑なマイグレーションは書きたくないですね
主な変更点
View
.jbuilderテンプレート
主な変更点(View)
● views/users/index.json.jbuilder
scaffoldを使うとこのようなコードが生成されます
json.array!(@users) do |user|
json.extract! user, :name, :email, :birthday
json.url user_url(user, format: :json)
end
.rubyテンプレート
主な変更点(View)
● views/users/index.html.ruby
● render :text => ‘ものすごく長い文字列’
○ という場合は View に分割しましょう
ポイントはControllerでViewの仕事をしすぎない
‘<p>Hello</p>’
HTML5 用のヘルパーメソッド
主な変更点(View)
● week_field
● month_field
● datetime_field
● datetime_local_field
● color_field
● time_field
● date_field
● highlight
ブラウザごとに対応しているタグは異なるので注意
week_field
color_field
主な変更点
Controller
フィルタのメソッド名が変更
主な変更点(Controller)
xxx_filter から xxx_action に変更
before_action
after_action
around_action
before_filter
after_filter
around_filter
ルーティングの concern
主な変更点(Controller)
同じルーティングは concern にまとめる
concern :confirmable do
post :confirm
end
resources :users, concern: :confirmable
resources :articles, concern: :confirmable
resources :users do
post :confirm
end
resources :articles do
post :confirm
end
主な変更点
ActiveSupport
● Inflection(単数形/複数形の変換)の国際化
○ singularize, pluralize の引数にロケールを指定可能
● Object#try, Object#try!
○ Object#try はメソッドがない場合に nil を返すように変更
○ Object#try! は NoMethodError を raise する
ActiveSupport
主な変更点(ActiveSupport)
他にも色々、細かい変更が多い
注目機能
Turbolinks
Turbolinksとは
注目機能(Turbolinks)
● リンクのクリックをAjaxリクエストに変換
○ レスポンスからページの <body> 内を置き換える
○ <title> など <head> 内の一部も書き換える
● <head> 内が変わらない場合に効果的
○ CSS や Javascript の読み直しが発生しない
● Ajax って戻るボタンに弱い?
○ HTML5 の History API を利用し、戻るボタンにも対応
<head> 内がどのページでも同じ場合に有効
注意点
注目機能(Turbolinks)
● デフォルトで有効
○ 使わない場合は明示的に無効化する必要がある
● Javascript イベントのタイミングが変わる
○ Javascript イベントのタイミングが変わる
○ 外部の Javascript ライブラリを使う場合も注意
使うときはポイントを押さえて!
注目機能
StrongParameters
StrongParametersとは
注目機能(StrongParameters)
● モデルの一括代入問題の対策
● 必要なリクエストパラメータだけ受け取る仕組み
Rails4ではattr_accessibleではなくStrongParameters
StrongParametersの使い方
注目機能(StrongParameters)
scaffold が生成するコードを見ると分かりやすい
class UsersController < AplicationController
def create
@user = User.new(user_params)
…
end
def user_params
params.require(:user).permit(:name, :email)
end
end
attr_accessibleとの比較
注目機能(StrongParameters)
● attr_accessibleは
モデルに一括代入可能な属性を制御する
● StrongParametersは
リクエストとして受け取るパラメータを制御する
意図しない属性の書き換えを防ぎたい気持ちは同じ
モデルの仕事、コントローラの仕事
注目機能(StrongParameters)
attr_accessibleは問題を解決する場所を間違えていた
● モデルの仕事は自身の一貫性を保つこと
○ その画面では変更できない属性が何か、までは知らない
● コントローラの仕事は View とモデルの橋渡し
○ Viewからの入力をモデルに渡す
○ 表示すべきデータを View に渡す
● モデルの一括代入問題
○ コントローラで解決すべき問題
○ StrongParametersを使って解決する
StrongParametersを使いましょう
注目機能(StrongParameters)
詳しい使い方は TECHSCORE BLOG へ
注目機能
ActionController::Live
ActionController::Liveとは
注目機能(ActionController::Live)
● サーバ側からリアルタイムPush通知
○ 別スレッドで少しずつレスポンスを返す
○ Transfer-Encoding: chunked
○ Server-Sent Events などが可能になる
● ストリーミングに対応したサーバが必要
○ OK: Puma, Unicorn, Rainbows!
○ NG: WEBrick, Thin
● 大量コネクションに耐えるサーバが必要
○ マルチプロセス(1プロセス1リクエスト)方式だと厳しい
○ マルチスレッド方式のほうが好ましい
○ Puma, Rainbows! などが候補
サーバ側からリアルタイムPush通知する機能
コントローラの実装例
注目機能(ActionController::Live)
class SampleController < ApplicationController
include ActionController::Live
def stream
response.headers[‘Content-Type’] = ‘text/event-stream’
10.times do |i|
response.stream.write(“data: Hellonn”)
sleep 1
end
ensure
response.stream.close
end
end
レスポンスの確認
注目機能(ActionController::Live)
$ curl -i http://localhost:3000/stream
HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-UA-Compatible: chrome=1
Content-Type: text/event-stream
Cache-Control: no-cache
Set-Cookie: request_method=GET; path=/
X-Request-Id: 6ef6eae2-e9d3-45ed-b993-5893cb75fbb3
X-Runtime: 0.024241
Transfer-Encoding: chunked
event: message
data: Hello 1
event: message
data: Hello 2
event: message
data: Hello 3
event: done
data: done
Viewの実装
注目機能(ActionController::Live)
var eventSource = new EventSource(“/sample/stream”);
eventSource.addEventListener(“message”, function(event) {
// event.data に受信したメッセージが入っている
alert(event.data);
});
eventSource.addEventListener(“done”, function(event) {
eventSource.close();
});
使いどころ
注目機能(ActionController::Live)
● リアルタイムPush通信と言えばチャットですが…
● 長時間かかるインポート処理の進捗
● Twitter や Facebook のタイムライン
● Google Maps 上に表示する位置情報
アイディア次第で面白いことができるかも
マルチスレッド対応
マルチスレッド方式へ
マルチスレッド対応
● Webサーバ
○ Unicorn から Puma
● 非同期処理ライブラリ
○ Resque/Delayed_Job から Sidekiq
マルチプロセス方式からマルチスレッド方式へ
メリット、デメリット
マルチスレッド対応
● メリット
○ リソース効率向上
○ パフォーマンス向上
● デメリット
○ マルチスレッドを意識したコーディングが必要
マルチスレッド方式へ移行すべき?
ライブラリの対応状況
だいたい大丈夫
ライブラリの対応状況
● 外部ライブラリ
○ [OK] unicorn 4.6.3
○ [OK] thin 1.5.1
○ [NG] mongrel 1.1.5
○ [OK] bullet 4.6.0
○ [OK] settingslogic 2.0.9
○ [OK] rails_config 0.3.3
○ [OK] rails4_acts_as_paranoid 0.1.4
○ [OK] jpmobile 4.0.0
○ [OK] device 1.5.4
○ [OK] ssl_requirement 1.4.2
○ [OK] kaminari 0.14.1
○ [NG] meta_search 0.5.4
○ [OK] paperclip
○ [OK] exception_notification 4.0.0
○ [△] rails_admin 0.5.0
○ [NG] typus 3.1.10
○ [OK] dynamic_form 1.1.4
● 社内ライブラリ
○ [OK] const_enum 1.0.4 (ActiveRecord 定数拡張)
○ [OK] easy_model 1.0.4 (DB 非依存モデルのサポート)
○ [OK] sys_logger 1.0.0 (Syslog モジュールのラッパー)
○ [OK] active_modurality 1.0.1 (モデルの継承機能支援)
○ [OK] activerecord-blockwhere 1.0.3 (Arel の where 拡張 DSL)
詳しくは TECHSCORE BLOG へ
はまりどころ
● ActiveSupport::TaggedLogging
○ クラスからモジュールに変更された。
● ルーティング定義の match
○ via オプションで HTTP メソッドの指定が必須になった。
● abstract なモデルの scope
○ 正しく動かない問題がある。
はまりどころ
はまりどころ
詳しくは TECHSCORE BLOG へ
残された課題
残された課題
残された課題
● 導入が見送られた機能もある
○ Job Queue システム
○ 非同期処理
● 見送られた理由
○ 洗練されきっていない
○ 開発者間の合意が十分に取れなかった
○ etc...
今後に期待
参考情報
参考情報(1)
参考情報
● [1] Ruby on Rails Guide (v4.0.0)
○ 最新版の Rails Guide です。
● [2] Ruby on Rails 4.0 Release Notes
○ Rails4.0 のリリースノートです。
○ 新機能や変更点の概要を知るには一番のページです。
● [3] Upgrading from Rails 3.2 to Rails 4.0
○ Rails4.0 へのアップグレードガイドです。
○ 既存プロジェクトを Rails4.0 に移行する場合は必読です。
● [4] GitHub (rails/rails 4-0-stable)
○ Rails4.0 のリポジトリです。
○ ソースコードを確認する必要がある場合に参照しましょう。
● [5] rails/actionmailer/CHANGELOG.md
○ actionmailer の CHANGELOG です。
○ リリースノートには書かれていない詳細な変更点を知ることができます。
● [6] rails/actionpack/CHANGELOG.md
○ actionpack の CHANGELOG です。
○ リリースノートには書かれていない詳細な変更点を知ることができます。
● [7] rails/activemodel/CHANGELOG.md
○ activemodel の CHANGELOG です。
○ リリースノートには書かれていない詳細な変更点を知ることができます。
● [8] rails/activerecord/CHANGELOG.md
○ activerecord の CHANGELOG です。
○ リリースノートには書かれていない詳細な変更点を知ることができます。
参考情報(2)
参考情報
● [9] rails/activesupport/CHANGELOG.md
○ activesupport の CHANGELOG です。
○ リリースノートには書かれていない詳細な変更点を知ることができます。
● [10] rails/railties/CHANGELOG.md
○ railties の CHANGELOG です。
○ リリースノートには書かれていない詳細な変更点を知ることができます。
● [11] Rails 4.0: Final version released!
○ Rails4.0 のリリースがアナウンスされた Blog エントリです。
● [12] Rails 4.0: Release Candidate 2 released!
○ Rails4.0-rc2 のリリースがアナウンスされた Blog エントリです。
● [13] Rails 4.0: Release Candidate 1 released!
○ Rails4.0-rc1 のリリースがアナウンスされた Blog エントリです。
● [14] Ruby on Rails API
○ 最新版の API リファレンスです。
● [15] Rails 4 Countdown to 2013
○ Rails4.0 が開発中の頃から注目機能をまとめられているサイトです。
○ 公式リリース後の内容に沿って注釈が丁寧に入れられています。
● [16] EdgeRails.info
○ Rails の最新の開発状況のサマリーを毎週まとめているサイトです。
● [17] WEB+DB PRESS vol.73
○ Rails4.0 の分かりやすい特集が組まれています。
● [18] Rails4 ライブラリ対応状況調査
○ 主要ライブラリの Rails4 対応状況の調査結果をまとめています。
参考情報(3)
参考情報
● [19] Rails4 の Strong Parameters でリクエストパラメータを検証する
○ Rails4.0 の注目機能の一つ、 Strong Parameters についてまとめています。
● [20] Ruby on Rails 4.0 Release Notes を読む
○ Rails4.0 のリリースノートの内容をまとめています。
● [21] Put chubby models on a diet with concerns
○ DHH によるconcerns の解説です。
● [22] Edge Rails: PATCH is the new primary HTTP method for updates
○ リソースの更新を PUT ではなく PATCH で行うことに関するエントリです。
まとめ
まとめ
まとめ
● Rails4 は既に使えるレベル
○ Rails4 で開発中の新規案件もあります。
● Rails を使う以上、立ち止まってはいけない
○ Railsは「今」の「最善」を追及するフレームワーク
● 新機能は使えばいいってもんじゃない
○ Turbolinks を使う場合は慎重に
○ StrongParameters は積極的に使いましょう
Enjoy Rails4 !!

More Related Content

What's hot

Solr 4.0 の主な機能
Solr 4.0 の主な機能Solr 4.0 の主な機能
Solr 4.0 の主な機能Shinichiro Abe
 
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)Issei Nishigata
 
JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介Yusuke Hirao
 
JavaScript基礎勉強会
JavaScript基礎勉強会JavaScript基礎勉強会
JavaScript基礎勉強会大樹 小倉
 
Javaクラスファイルの読み方
Javaクラスファイルの読み方Javaクラスファイルの読み方
Javaクラスファイルの読み方y torazuka
 
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」y torazuka
 
Kanazawa.js.Next
Kanazawa.js.NextKanazawa.js.Next
Kanazawa.js.Nextdynamis
 
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングTanUkkii
 
Java EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpJava EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpNorito Agetsuma
 
Clojureによるログ収集と解析
Clojureによるログ収集と解析Clojureによるログ収集と解析
Clojureによるログ収集と解析Yoshitaka Kawashima
 
Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015Norito Agetsuma
 
20130611 java concurrencyinpracticech7
20130611 java concurrencyinpracticech720130611 java concurrencyinpracticech7
20130611 java concurrencyinpracticech7Toshiaki Toyama
 
Java concurrency in_practice_chap06
Java concurrency in_practice_chap06Java concurrency in_practice_chap06
Java concurrency in_practice_chap06ohtsuchi
 
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fallこれからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fallなおき きしだ
 
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目大樹 小倉
 

What's hot (20)

Solr 4.0 の主な機能
Solr 4.0 の主な機能Solr 4.0 の主な機能
Solr 4.0 の主な機能
 
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
Solr6 の紹介(第18回 Solr勉強会 資料) (2016年6月10日)
 
JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介JavaScriptユーティリティライブラリの紹介
JavaScriptユーティリティライブラリの紹介
 
JavaScript基礎勉強会
JavaScript基礎勉強会JavaScript基礎勉強会
JavaScript基礎勉強会
 
Javaクラスファイルの読み方
Javaクラスファイルの読み方Javaクラスファイルの読み方
Javaクラスファイルの読み方
 
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
 
Spring3.1概要x di
Spring3.1概要x diSpring3.1概要x di
Spring3.1概要x di
 
Kanazawa.js.Next
Kanazawa.js.NextKanazawa.js.Next
Kanazawa.js.Next
 
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミングECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミング
 
Java EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpJava EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jp
 
Clojureによるログ収集と解析
Clojureによるログ収集と解析Clojureによるログ収集と解析
Clojureによるログ収集と解析
 
キメるClojure
キメるClojureキメるClojure
キメるClojure
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 
Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015Jbatch実践入門 #jdt2015
Jbatch実践入門 #jdt2015
 
Rpscala18th
Rpscala18thRpscala18th
Rpscala18th
 
20130611 java concurrencyinpracticech7
20130611 java concurrencyinpracticech720130611 java concurrencyinpracticech7
20130611 java concurrencyinpracticech7
 
Java EE8 Report
Java EE8 ReportJava EE8 Report
Java EE8 Report
 
Java concurrency in_practice_chap06
Java concurrency in_practice_chap06Java concurrency in_practice_chap06
Java concurrency in_practice_chap06
 
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fallこれからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
これからのコンピューティングの変化とJava-JJUG CCC 2015 Fall
 
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目
 

Similar to Ruby on Rails 4.0 勉強会資料

企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624Yusuke Suzuki
 
MySQL 5.7とレプリケーションにおける改良
MySQL 5.7とレプリケーションにおける改良MySQL 5.7とレプリケーションにおける改良
MySQL 5.7とレプリケーションにおける改良Shinya Sugiyama
 
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama [D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama Insight Technology, Inc.
 
プロとしてのOracleアーキテクチャ入門 ~番外編~
プロとしてのOracleアーキテクチャ入門 ~番外編~プロとしてのOracleアーキテクチャ入門 ~番外編~
プロとしてのOracleアーキテクチャ入門 ~番外編~ryouta watabe
 
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策Salesforce Developers Japan
 
20080521-Ruby-on-Rails-Security
20080521-Ruby-on-Rails-Security20080521-Ruby-on-Rails-Security
20080521-Ruby-on-Rails-SecurityKoji SHIMADA
 
dimSTATから見るベンチマーク
dimSTATから見るベンチマークdimSTATから見るベンチマーク
dimSTATから見るベンチマークhiroi10
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, CodereadingHiro Yoshioka
 
Using docker infrastructure
Using docker infrastructureUsing docker infrastructure
Using docker infrastructureJunya Niwa
 
JVM上でのストリーム処理エンジンの変遷
JVM上でのストリーム処理エンジンの変遷JVM上でのストリーム処理エンジンの変遷
JVM上でのストリーム処理エンジンの変遷Sotaro Kimura
 
Java EEを補完する仕様 MicroProfile
Java EEを補完する仕様 MicroProfileJava EEを補完する仕様 MicroProfile
Java EEを補完する仕様 MicroProfileNorito Agetsuma
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決オラクルエンジニア通信
 
JJUG CCC 20150411 grails3 Spring-boot
JJUG CCC 20150411 grails3 Spring-bootJJUG CCC 20150411 grails3 Spring-boot
JJUG CCC 20150411 grails3 Spring-bootTsuyoshi Yamamoto
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングYosuke Mizutani
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortemtamtam180
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べMasahiro Nagano
 
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報yoyamasaki
 
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)信之 岩永
 

Similar to Ruby on Rails 4.0 勉強会資料 (20)

企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
 
MySQL 5.7とレプリケーションにおける改良
MySQL 5.7とレプリケーションにおける改良MySQL 5.7とレプリケーションにおける改良
MySQL 5.7とレプリケーションにおける改良
 
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama [D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
[D37]MySQLの真のイノベーションはこれだ!MySQL 5.7と「実験室」 by Ryusuke Kajiyama
 
プロとしてのOracleアーキテクチャ入門 ~番外編~
プロとしてのOracleアーキテクチャ入門 ~番外編~プロとしてのOracleアーキテクチャ入門 ~番外編~
プロとしてのOracleアーキテクチャ入門 ~番外編~
 
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策HerokuでRailsアプリ運用の パフォーマンス、SEO対策
HerokuでRailsアプリ運用の パフォーマンス、SEO対策
 
20080521-Ruby-on-Rails-Security
20080521-Ruby-on-Rails-Security20080521-Ruby-on-Rails-Security
20080521-Ruby-on-Rails-Security
 
dimSTATから見るベンチマーク
dimSTATから見るベンチマークdimSTATから見るベンチマーク
dimSTATから見るベンチマーク
 
Start-padrino
Start-padrinoStart-padrino
Start-padrino
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, Codereading
 
Using docker infrastructure
Using docker infrastructureUsing docker infrastructure
Using docker infrastructure
 
JVM上でのストリーム処理エンジンの変遷
JVM上でのストリーム処理エンジンの変遷JVM上でのストリーム処理エンジンの変遷
JVM上でのストリーム処理エンジンの変遷
 
Java EEを補完する仕様 MicroProfile
Java EEを補完する仕様 MicroProfileJava EEを補完する仕様 MicroProfile
Java EEを補完する仕様 MicroProfile
 
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
(Tech DeepDive #1) Java Flight Recorder を活用した問題解決
 
JJUG CCC 20150411 grails3 Spring-boot
JJUG CCC 20150411 grails3 Spring-bootJJUG CCC 20150411 grails3 Spring-boot
JJUG CCC 20150411 grails3 Spring-boot
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
jjugccc2018 app review postmortem
jjugccc2018 app review postmortemjjugccc2018 app review postmortem
jjugccc2018 app review postmortem
 
blogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べblogサービスの全文検索の話 - #groonga を囲む夕べ
blogサービスの全文検索の話 - #groonga を囲む夕べ
 
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
MySQL Cluster 解説 & MySQL Cluster 7.3 最新情報
 
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)
 
Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
 

Recently uploaded

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 

Recently uploaded (12)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

Ruby on Rails 4.0 勉強会資料