SlideShare a Scribd company logo
1 of 54
Download to read offline
便利なHerokuと
ActiveRecordの
速度改善Tips
2015-06-06(土) 第9回中国地方DB勉強会 IN 米子
株式会社リゾーム システム開発部 尾古 豊明
自己紹介
名前:尾古 豊明
所属:株式会社リゾーム(岡山)
TwitterID:@patorash
鳥取県大山町(旧中山町)出身。
米子東高校卒業後、愛媛大学に進学。松山で就職。
NWしてたけど25歳でPHPプログラマに強制転向。
独自フレームワーク、CakePHP、WordPressなどを経て
Androidやって、1年個人事業主やって、チーム開発がしたくな
りリゾームに入社。RubyとRailsを覚える。
DBには詳しくありません!
実家は牧場です
和牛の飼育からお肉の通信販売
焼肉レストランを経営しています
春先から放牧することも
会社の話
とは?
ショッピングセンター(SC)・専門店向けのシステム
開発やコンサルティング業務をしている会社です。
Windows系・Java・Rubyなどで自社製品の
開発を行っています。
● 顧客分析システム
● デベロッパーマネジメントシステム
● BOND GATE(コミュニケーションウェア)
● SC GATE(SC・ショップDB)
SC GATEとは?
SCと、そのテナント(ショップ)と運営元の企業を横
断的に検索・比較できるデータベースシステムで
す。
● SCの出店計画を立てるため
● 専門店の出店計画
● ライバルの動向チェック
などなど。
SC GATEを支える技術
● プログラミング言語 :Ruby 2.2.2
● フレームワーク   :Rails 4.2.1
● プラットフォーム  :Heroku
● データベース    :Postgresql
● ソースコード管理  :github
● CSSフレームワーク :Bootstrap
● AltJS :CoffeeScript
● CSS :Sass
● テンプレートエンジン :Slim
● JSライブラリ :jQuery,Knockout
Ruby on Railsとは?
● 世の中のWebフレームワークで最も大きな影響
を与えたであろうMVCフレークワーク
● Railsのようなフレームワークが色んなプログラ
ミング言語で作られた
○ PHP・・ CakePHP
○ Java・・ SpringMVC、Play Framework
○ Python・ Django
● 中でもModelを担当するActiveRecordが
ものすごく優秀で使いやすい
今日話すこと
● Herokuについて
● ActiveRecordについて
● PostGISについて
Herokuとは?
● PaaSサービス
● 課金でスケーラブルな環境が手に入る
● 様々なプログラミング言語をサポート
● 様々なデプロイ方法(git, github,DropBox)
● 制限が色々…
○ 30秒ルール
○ ファイルの保存はできない等
● アドオンを追加することで、拡張可能
○ データベース(Postgresql, MySQL)
○ SSL
○ NewRelicなど監視ツール系、ログ収集系
○ メール配信系
○ memcachedなどその他色々…
Heroku App
Heroku git
Slug(塊)
Dyno Manager
DynoDyno Dyno
コンパイル
アドオン
● データベース
● メール配信システム
● キャッシュシステム
● 状態監視サービス
● スケジューラー
● SSL
● エラー監視サービス
● ログサービス
git
Rails
git push heroku tagname:master開発者
● 固有のサーバを持たなくて済む。
● Dynoの性能変更でスケールアップ、数を変更でスケールアウト
● スポットでDynoの増減をすればいい(イベント時のみ増やすとか)
コード管理はgithub
git push origin develop
Herokuのデータベース
● Heroku Postgresqlが提供されている
● MySQLはサードパーティのアドオン
● HerokuでRailsアプリを作る場合は
特に制限・こだわりがなければ
Postgresqlがいいと思う(情報が多いから)
● 定期的にバックアップを取ってくれる
● お試しの無料プラン、趣味の$9プラン、
本番環境向けのstandard, premiumなど
色々ある。
● 商用だとstandard0以上オススメ($50〜)
○ 最大コネクション数が100になるから
ActiveRecordとは?
● 超強力なO/R Mapperです。
○ データベースから取得したデータが自動的にクラスのオ
ブジェクトに変換される仕組みのこと
利点
● SQLを書かなくてもいい。
● マイグレーションができる。
● データベース周辺を抽象化してくれる。
● オブジェクトなので扱いやすい
欠点
● 遅い(と、よく言われる)
● メモリを大量に使う
利点:SQLを書かなくてもいい
SELECT * FROM articles WHERE id = 1;
SELECT * FROM comments WHERE article_id = 1;
のようなSQLを書かなくてもよい。結構複雑なところまで網羅で
きるが、拡張gemを使うとさらに便利に。
article = Article.find 1
article.comments.each do |comment|
p comment.title
end
ActiveRecordの表現力の高さ
user = User.find 1
articles = Article.where(status: ‘open’, user_id: user).order
(created_at: :desc).limit(10)
user = User.find 1
articles = Article.open.written_by(user).recent(10)
ActiveRecordの流儀に則ってscopeを定義すると、データの絞
り込みが流れるように書ける
利点:マイグレーションができる
DB定義の変更はリスクを伴うし、だめだった場合に戻すのが大
変だった。しかし、マイグレーションが簡単になったことで気軽に
DB定義の変更ができるようになった。
class AddCommentsCountToArticle < ActiveRecord::Migration
def up
add_column :articles, :comments_count, :integer, default: 0
end
def down
remove_column :articles, :comments_count
end
end
利点:マイグレーションができる
カジュアルにテーブル定義を書き換えられる。
仕様変更しやすい。ダメでもすぐに戻せる。
テーブル定義の変更履歴が
マイグレーションファイルとして残るため、
変更の反映漏れが起こる確率はかなり低くなる。
$ bin/rake db:migrate
● テーブル定義を変更する
● テーブル定義を前の状態に戻す
$ bin/rake db:rollback
欠点:遅い(と言われる)
● 適当にコードを書くと、DBアクセス回数が膨大
になる(N+1問題)
● 大量のデータを読み込むとメモリを大量に消費
する(Rubyでオブジェクトが大量に作られるた
め)
● Rubyでループを回すと遅い
N+1問題とは?
article = Article.find 1
article.comments.each do |comment|
p comment.user.name
end
SELECT * FROM articles WHERE id = 1;
SELECT * FROM comments WHERE article_id = 1;
SELECT * FROM users WHERE user_id = 1;
コメントしたユーザー名の取得N回
コメント全件取得1回
のDBアクセスが発生する。
どうすれば速くなるか?
● 1度のDBアクセスでデータを取得する
(DBアクセス回数を減らす)
● 使うカラムのデータだけ取得する
(取得するデータ総量を減らす、
 オブジェクトを生成しない等)
● 大量のデータを一度に取得しない
(生成するオブジェクトの数を減らす)
● Rubyでのループの回数を減らす
(一度に取得する上限は20件まで等)
● そもそもDBにアクセスしない
どうすれば気付くか、減らせるか
● パフォーマンス監視ツールを使う
● 検知するためのgemを使う
● counter_cacheを使う
● 便利なメソッドを使う
● ページング用のgemを使う(kaminari)
● フラグメントキャッシュを使う
どうすれば気付くか、減らせるか
● パフォーマンス監視ツールを使う
● 検知するためのgemを使う
● counter_cacheを使う
● 便利なメソッドを使う
● ページング用のgemを使う(kaminari)
● フラグメントキャッシュを使う
New Relic:パフォーマンス監視
NewRelicはローカル環境も見れる
http://localhost:3000/newrelic/
レスポンスタイムが一目でわかる。
遅い場合は赤文字で教えてくれる。
そこを速くすればいい。
どんなクエリが発行されて、どれだけ時間がかかっているかが一覧でわかる。
遅い場所があれば、そのクエリを改善してみる。結果をキャッシュしてもよいのなら
キャッシュを試みる。そして、計測する。
bullet:N+1問題検出用gem
N+1問題とは?
article = Article.find 1
article.comments.each do |comment|
p comment.user.name
end
SELECT * FROM articles WHERE id = 1;
SELECT * FROM comments WHERE article_id = 1;
SELECT * FROM users WHERE user_id = 1;
コメントしたユーザー名の取得N回
コメント全件取得1回
のDBアクセスが発生する。
bulletがN+1問題を検出して通知。
<= Comment.includes(:user)をすればいいと言ってくれてる。
counter_cacheを使う
関連先のデータ数をキャッシュしておく
例:記事のコメント数がいくらあるか?
SELECT * FROM articles WHERE id = 1
SELECT COUNT(*) FROM comments WHERE
article_id = 1;
2回SQLが実行される
article = Article.find 1
article.comments.count
counter_cacheを使う
例:記事のコメント数がいくらあるか?
comments_countカラムを定義して、
更新時にカウント数をキャッシュしておく。
SELECT * FROM articles WHERE id = 1
1回のSQLで済む
article = Article.find 1
article.comments_count
counter_cacheの注意点
例えば、論理削除・無効フラグなどを使ってデータ
を制御している場合は、デフォルトだとその設定は
無視される。
絞り込み条件も与えること。
has_many :comments
has_many :comments, -> { where(deleted: false) }
便利なメソッドを使う
Railsは便利だがパフォーマンスが悪い、と
長年言われ続けてきたためパフォーマンス改善の
ために様々なメソッドが準備されている。
● pluck
● find_each
● eager_load, joins, preload
● to_sql
● explain
pluck
モデルオブジェクトを生成せずに指定したカラムの
データを配列で取得する。
titles = Article.pluck(:title)
titles.each do |title|
puts title
end
articles = Article.all
articles.each do |article|
puts article.title
end
find_each
大量のデータを小分けに取得してループする。
一度に大量のオブジェクトが作られないため、
メモリに優しい反面、DBへのアクセス回数は増える
Article.all.each do |article|
puts article.title
end
Article.find_each do |article|
puts article.title
end
eager_load, joins, preload
関連データをキャッシュしてDBアクセス数を減らす。
代わりにメモリを消費するので大きなテーブル同士は
やめたほうがいい。検索条件に使うだけならjoinsを使う。
article = Article.find 1
article.comments.each do |comment|
puts comment.content
end
article = Article.eager_load(:comments).find 1
article.comments.each do |comment|
puts comment.content
end
to_sql
ActiveRecordで組み立てて発行したSQL文を取得する。
サブクエリとして使うパターンもある。
私自身はあまり使わないが、思った通りのデータが取得できな
いときに、確認のためにデバッグツール上で呼ぶことがある。
query = Article.where(id: 1).to_sql
explain
実行計画を見ることができる。
私自身は全く使ったことがない。
Article.where(id: 1).explain
PostGISについて
PostGISはGISを
扱うための拡張機能
Geographic
Information
System・・・ 地理情報システム
緯度・経度・標高など
平たくいうと、Google Mapsなど地図アプリで独自
のデータを扱う際などに便利!
PostGISのなにが嬉しいのか?
位置情報からレコードを
検索できる
例えば・・・
● 指定した緯度・経度から
半径10km以内のレコードを取得
● 距離でソートなど
ActiveRecordでPostGIS
● activerecord_postgis_adapterを利用すること
で使える
● 2系だとRails4.2系がサポートされていなかっ
た。スライド書き始めた時は最新が
3.0.0.β5だったが、最近3.0.0がリリース
GISを扱う時にハマッたポイント
測地系:世界測地系・日本測地系
● 数百メートル近くずれる
● activerecord_postgis_adapterでは、
世界測地系しかサポートしていない
● システム的には、日本測地系のデータしか使わ
ない
● 毎回、測地系変換をJS側で実行している
HerokuでPostGISは使えるか?
使える
● PostGISの有効化
● Rails起動時にAdapter差し替え処理を追加
○ Herokuのドキュメントに書いてある
※ただし、正式サポートではない
以上!!

More Related Content

What's hot

商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
商用DBからPostgreSQLへ まず知っておいて欲しいまとめ商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
商用DBからPostgreSQLへ まず知っておいて欲しいまとめKosuke Kida
 
PostgreSQLの冗長化について
PostgreSQLの冗長化についてPostgreSQLの冗長化について
PostgreSQLの冗長化についてSoudai Sone
 
Postgre sqlから見るnosql
Postgre sqlから見るnosqlPostgre sqlから見るnosql
Postgre sqlから見るnosqlSoudai Sone
 
今すぐ使えるクラウドとPostgreSQL
今すぐ使えるクラウドとPostgreSQL今すぐ使えるクラウドとPostgreSQL
今すぐ使えるクラウドとPostgreSQLSoudai Sone
 
Oratopostgres-hiroshima
Oratopostgres-hiroshimaOratopostgres-hiroshima
Oratopostgres-hiroshimaKosuke Kida
 
[OSC2016沖縄]商用DBからPostgreSQLへの移行入門
[OSC2016沖縄]商用DBからPostgreSQLへの移行入門[OSC2016沖縄]商用DBからPostgreSQLへの移行入門
[OSC2016沖縄]商用DBからPostgreSQLへの移行入門Kosuke Kida
 
職場で使用しているOSSの開発に参加してみた!
職場で使用しているOSSの開発に参加してみた!職場で使用しているOSSの開発に参加してみた!
職場で使用しているOSSの開発に参加してみた!infinite_loop
 
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)Ryuji Tamagawa
 
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発infinite_loop
 
知って得するWebで便利なpostgre sqlの3つの機能
知って得するWebで便利なpostgre sqlの3つの機能知って得するWebで便利なpostgre sqlの3つの機能
知って得するWebで便利なpostgre sqlの3つの機能Soudai Sone
 
データベース技術の羅針盤
データベース技術の羅針盤データベース技術の羅針盤
データベース技術の羅針盤Yoshinori Matsunobu
 
サーバーのおしごと
サーバーのおしごとサーバーのおしごと
サーバーのおしごとYugo Shimizu
 
第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51civicpg
 
利益はデータベースの中にあった!
利益はデータベースの中にあった!利益はデータベースの中にあった!
利益はデータベースの中にあった!infinite_loop
 
データベース勉強会 In 広島 mongodb
データベース勉強会 In 広島  mongodbデータベース勉強会 In 広島  mongodb
データベース勉強会 In 広島 mongodbRyuji Tamagawa
 
株式会社インフィニットループ紹介資料
株式会社インフィニットループ紹介資料株式会社インフィニットループ紹介資料
株式会社インフィニットループ紹介資料infinite_loop
 
NoSQLデータベースと位置情報
NoSQLデータベースと位置情報NoSQLデータベースと位置情報
NoSQLデータベースと位置情報Koji Ichiwaki
 
大ヒットソーシャルアプリの裏側
大ヒットソーシャルアプリの裏側大ヒットソーシャルアプリの裏側
大ヒットソーシャルアプリの裏側KLab株式会社
 

What's hot (20)

商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
商用DBからPostgreSQLへ まず知っておいて欲しいまとめ商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
 
PostgreSQLの冗長化について
PostgreSQLの冗長化についてPostgreSQLの冗長化について
PostgreSQLの冗長化について
 
Postgre sqlから見るnosql
Postgre sqlから見るnosqlPostgre sqlから見るnosql
Postgre sqlから見るnosql
 
今すぐ使えるクラウドとPostgreSQL
今すぐ使えるクラウドとPostgreSQL今すぐ使えるクラウドとPostgreSQL
今すぐ使えるクラウドとPostgreSQL
 
Oratopostgres-hiroshima
Oratopostgres-hiroshimaOratopostgres-hiroshima
Oratopostgres-hiroshima
 
[OSC2016沖縄]商用DBからPostgreSQLへの移行入門
[OSC2016沖縄]商用DBからPostgreSQLへの移行入門[OSC2016沖縄]商用DBからPostgreSQLへの移行入門
[OSC2016沖縄]商用DBからPostgreSQLへの移行入門
 
職場で使用しているOSSの開発に参加してみた!
職場で使用しているOSSの開発に参加してみた!職場で使用しているOSSの開発に参加してみた!
職場で使用しているOSSの開発に参加してみた!
 
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
RDB経験者に送るMongoDBの勘所(db tech showcase tokyo 2013)
 
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
 
知って得するWebで便利なpostgre sqlの3つの機能
知って得するWebで便利なpostgre sqlの3つの機能知って得するWebで便利なpostgre sqlの3つの機能
知って得するWebで便利なpostgre sqlの3つの機能
 
データベース技術の羅針盤
データベース技術の羅針盤データベース技術の羅針盤
データベース技術の羅針盤
 
初めてのMongo db
初めてのMongo db初めてのMongo db
初めてのMongo db
 
サーバーのおしごと
サーバーのおしごとサーバーのおしごと
サーバーのおしごと
 
MongoDBの監視
MongoDBの監視MongoDBの監視
MongoDBの監視
 
第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51第51回NDS PostgreSQLのデータ型 #nds51
第51回NDS PostgreSQLのデータ型 #nds51
 
利益はデータベースの中にあった!
利益はデータベースの中にあった!利益はデータベースの中にあった!
利益はデータベースの中にあった!
 
データベース勉強会 In 広島 mongodb
データベース勉強会 In 広島  mongodbデータベース勉強会 In 広島  mongodb
データベース勉強会 In 広島 mongodb
 
株式会社インフィニットループ紹介資料
株式会社インフィニットループ紹介資料株式会社インフィニットループ紹介資料
株式会社インフィニットループ紹介資料
 
NoSQLデータベースと位置情報
NoSQLデータベースと位置情報NoSQLデータベースと位置情報
NoSQLデータベースと位置情報
 
大ヒットソーシャルアプリの裏側
大ヒットソーシャルアプリの裏側大ヒットソーシャルアプリの裏側
大ヒットソーシャルアプリの裏側
 

Viewers also liked

Webで役立つRDBの使い方
Webで役立つRDBの使い方Webで役立つRDBの使い方
Webで役立つRDBの使い方Soudai Sone
 
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+Ryusuke Kajiyama
 
SunspotではじめるSolr入門
SunspotではじめるSolr入門SunspotではじめるSolr入門
SunspotではじめるSolr入門Takao Baba
 
Rails開発におけるキャッシュあれこれ
Rails開発におけるキャッシュあれこれRails開発におけるキャッシュあれこれ
Rails開発におけるキャッシュあれこれYoichi Toyota
 
Chugokudb study-20150131
Chugokudb study-20150131Chugokudb study-20150131
Chugokudb study-20150131Toshi Harada
 
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
DynamoDB   MyNA・JPUG合同DB勉強会 in 東京DynamoDB   MyNA・JPUG合同DB勉強会 in 東京
DynamoDB MyNA・JPUG合同DB勉強会 in 東京Yuko Mori
 
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@sakaik
 
Viewを使って開発を楽にする話
Viewを使って開発を楽にする話Viewを使って開発を楽にする話
Viewを使って開発を楽にする話Isamu Watanabe
 
中国地方Db勉強会
中国地方Db勉強会中国地方Db勉強会
中国地方Db勉強会Daisuke Kasuya
 
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)Shinya Sugiyama
 
意外と知らないFilemakerの世界
意外と知らないFilemakerの世界意外と知らないFilemakerの世界
意外と知らないFilemakerの世界Tatsuo_Ohtani
 
オープンデータ超入門
オープンデータ超入門オープンデータ超入門
オープンデータ超入門和宏 石崎
 
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情Kazuhiro Serizawa
 
意外と知らないFilemakerの世界
意外と知らないFilemakerの世界意外と知らないFilemakerの世界
意外と知らないFilemakerの世界Tatsuo_Ohtani
 
Amazon Redshiftを使ったデータ分析
Amazon Redshiftを使ったデータ分析Amazon Redshiftを使ったデータ分析
Amazon Redshiftを使ったデータ分析Tomohiro Yamaguchi
 
Chugoku db 17th-lt-kly
Chugoku db 17th-lt-klyChugoku db 17th-lt-kly
Chugoku db 17th-lt-klyToshi Harada
 
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Toshi Harada
 
20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQL20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQLRyusuke Kajiyama
 

Viewers also liked (20)

Webで役立つRDBの使い方
Webで役立つRDBの使い方Webで役立つRDBの使い方
Webで役立つRDBの使い方
 
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+第九回中国地方DB勉強会 in 米子 MySQL 5.7+
第九回中国地方DB勉強会 in 米子 MySQL 5.7+
 
SunspotではじめるSolr入門
SunspotではじめるSolr入門SunspotではじめるSolr入門
SunspotではじめるSolr入門
 
10大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon201510大ニュースで振り返るPGCon2015
10大ニュースで振り返るPGCon2015
 
Rails開発におけるキャッシュあれこれ
Rails開発におけるキャッシュあれこれRails開発におけるキャッシュあれこれ
Rails開発におけるキャッシュあれこれ
 
Chugokudb study-20150131
Chugokudb study-20150131Chugokudb study-20150131
Chugokudb study-20150131
 
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
DynamoDB   MyNA・JPUG合同DB勉強会 in 東京DynamoDB   MyNA・JPUG合同DB勉強会 in 東京
DynamoDB MyNA・JPUG合同DB勉強会 in 東京
 
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
最近始めたあなたも今日から語れるようになるMySQLの{概要と最新情報}入門@
 
Viewを使って開発を楽にする話
Viewを使って開発を楽にする話Viewを使って開発を楽にする話
Viewを使って開発を楽にする話
 
中国地方Db勉強会
中国地方Db勉強会中国地方Db勉強会
中国地方Db勉強会
 
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
No sql with mysql cluster (MyNA・JPUG合同DB勉強会)
 
意外と知らないFilemakerの世界
意外と知らないFilemakerの世界意外と知らないFilemakerの世界
意外と知らないFilemakerの世界
 
オープンデータ超入門
オープンデータ超入門オープンデータ超入門
オープンデータ超入門
 
AWS Case of SonicGarden
AWS Case of SonicGardenAWS Case of SonicGarden
AWS Case of SonicGarden
 
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情
 
意外と知らないFilemakerの世界
意外と知らないFilemakerの世界意外と知らないFilemakerの世界
意外と知らないFilemakerの世界
 
Amazon Redshiftを使ったデータ分析
Amazon Redshiftを使ったデータ分析Amazon Redshiftを使ったデータ分析
Amazon Redshiftを使ったデータ分析
 
Chugoku db 17th-lt-kly
Chugoku db 17th-lt-klyChugoku db 17th-lt-kly
Chugoku db 17th-lt-kly
 
Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6Chugoku db 17th-postgresql-9.6
Chugoku db 17th-postgresql-9.6
 
20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQL20150131 ChugokuDB-Shimane-MySQL
20150131 ChugokuDB-Shimane-MySQL
 

Similar to 便利なHerokuと active recordの 速度改善tips

Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Tokoroten Nakayama
 
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Drecom Co., Ltd.
 
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイントKentaro Matsui
 
ぼっち開発からチーム開発へ(仮)
ぼっち開発からチーム開発へ(仮)ぼっち開発からチーム開発へ(仮)
ぼっち開発からチーム開発へ(仮)Yuki Maeto
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方Yusuke Wada
 
Kintone + ruby + ThinReports 連携
Kintone + ruby + ThinReports 連携Kintone + ruby + ThinReports 連携
Kintone + ruby + ThinReports 連携sy250
 
高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編Kazuya Numata
 
React+fluxを導入した話
React+fluxを導入した話React+fluxを導入した話
React+fluxを導入した話Yuki Ishikawa
 
20190116 tectettec#7
20190116 tectettec#720190116 tectettec#7
20190116 tectettec#7Otazo Man
 
初心から一週間で作ってみた Kinesis Client Library for Go
初心から一週間で作ってみた Kinesis Client Library for Go初心から一週間で作ってみた Kinesis Client Library for Go
初心から一週間で作ってみた Kinesis Client Library for GoTerui Masashi
 
第45回PHP勉強会(里洋平)
第45回PHP勉強会(里洋平)第45回PHP勉強会(里洋平)
第45回PHP勉強会(里洋平)Yohei Sato
 
bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩Satoshi Yamada
 
Riot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディングRiot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディングKeisuke Imai
 
DBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキルDBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキルSatoshi Yamada
 
Dockerizeして
大変だった話、幸せになった話
Dockerizeして
大変だった話、幸せになった話Dockerizeして
大変だった話、幸せになった話
Dockerizeして
大変だった話、幸せになった話Akira Miki
 
Word pressの可能性とplugin拡張
Word pressの可能性とplugin拡張Word pressの可能性とplugin拡張
Word pressの可能性とplugin拡張Yuya Matsushima
 
Ormとの付き合い方
Ormとの付き合い方Ormとの付き合い方
Ormとの付き合い方豊明 尾古
 

Similar to 便利なHerokuと active recordの 速度改善tips (20)

Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話Rubyの会社でPythonistaが3ヶ月生き延びた話
Rubyの会社でPythonistaが3ヶ月生き延びた話
 
Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話Rubyの会社でPythonistaが三ヶ月生き延びた話
Rubyの会社でPythonistaが三ヶ月生き延びた話
 
地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント地方企業がソーシャルゲーム開発を成功させるための10のポイント
地方企業がソーシャルゲーム開発を成功させるための10のポイント
 
Xmlrpcと品詞分解
Xmlrpcと品詞分解Xmlrpcと品詞分解
Xmlrpcと品詞分解
 
ぼっち開発からチーム開発へ(仮)
ぼっち開発からチーム開発へ(仮)ぼっち開発からチーム開発へ(仮)
ぼっち開発からチーム開発へ(仮)
 
とある Perl Monger の働き方
とある Perl Monger の働き方とある Perl Monger の働き方
とある Perl Monger の働き方
 
Kintone + ruby + ThinReports 連携
Kintone + ruby + ThinReports 連携Kintone + ruby + ThinReports 連携
Kintone + ruby + ThinReports 連携
 
高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編
 
全文検索入門
全文検索入門全文検索入門
全文検索入門
 
React+fluxを導入した話
React+fluxを導入した話React+fluxを導入した話
React+fluxを導入した話
 
20190116 tectettec#7
20190116 tectettec#720190116 tectettec#7
20190116 tectettec#7
 
初心から一週間で作ってみた Kinesis Client Library for Go
初心から一週間で作ってみた Kinesis Client Library for Go初心から一週間で作ってみた Kinesis Client Library for Go
初心から一週間で作ってみた Kinesis Client Library for Go
 
第45回PHP勉強会(里洋平)
第45回PHP勉強会(里洋平)第45回PHP勉強会(里洋平)
第45回PHP勉強会(里洋平)
 
bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩bottleで始めるWEBアプリの最初の一歩
bottleで始めるWEBアプリの最初の一歩
 
Riot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディングRiot.jsとフォームのデータバインディング
Riot.jsとフォームのデータバインディング
 
Yapc2012ltthon
Yapc2012ltthonYapc2012ltthon
Yapc2012ltthon
 
DBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキルDBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキル
 
Dockerizeして
大変だった話、幸せになった話
Dockerizeして
大変だった話、幸せになった話Dockerizeして
大変だった話、幸せになった話
Dockerizeして
大変だった話、幸せになった話
 
Word pressの可能性とplugin拡張
Word pressの可能性とplugin拡張Word pressの可能性とplugin拡張
Word pressの可能性とplugin拡張
 
Ormとの付き合い方
Ormとの付き合い方Ormとの付き合い方
Ormとの付き合い方
 

More from 豊明 尾古

OSS-DB 取得のススメ
OSS-DB 取得のススメOSS-DB 取得のススメ
OSS-DB 取得のススメ豊明 尾古
 
Ecmascript2015とその周辺について
Ecmascript2015とその周辺についてEcmascript2015とその周辺について
Ecmascript2015とその周辺について豊明 尾古
 
ウェブアプリケーションのためのユニバーサルデザインを読んだので共有する
ウェブアプリケーションのためのユニバーサルデザインを読んだので共有するウェブアプリケーションのためのユニバーサルデザインを読んだので共有する
ウェブアプリケーションのためのユニバーサルデザインを読んだので共有する豊明 尾古
 
Middlemanによる静的サイト作成術
Middlemanによる静的サイト作成術Middlemanによる静的サイト作成術
Middlemanによる静的サイト作成術豊明 尾古
 
Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪豊明 尾古
 
Rails templateで開発の初速を上げよう
Rails templateで開発の初速を上げようRails templateで開発の初速を上げよう
Rails templateで開発の初速を上げよう豊明 尾古
 
KotlinAndroidLibを使ってみた
KotlinAndroidLibを使ってみたKotlinAndroidLibを使ってみた
KotlinAndroidLibを使ってみた豊明 尾古
 
Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介豊明 尾古
 
Calabashでbddしようぜ
CalabashでbddしようぜCalabashでbddしようぜ
Calabashでbddしようぜ豊明 尾古
 
Rubotoを試してみた
Rubotoを試してみたRubotoを試してみた
Rubotoを試してみた豊明 尾古
 
アプリ内課金してみた
アプリ内課金してみたアプリ内課金してみた
アプリ内課金してみた豊明 尾古
 
Webデザイナーのためのandroid用レイアウト講座
Webデザイナーのためのandroid用レイアウト講座Webデザイナーのためのandroid用レイアウト講座
Webデザイナーのためのandroid用レイアウト講座豊明 尾古
 
Android 3.Xアプリを開発してみて
Android 3.Xアプリを開発してみてAndroid 3.Xアプリを開発してみて
Android 3.Xアプリを開発してみて豊明 尾古
 
ABC2011 Winter #jag4
ABC2011 Winter #jag4ABC2011 Winter #jag4
ABC2011 Winter #jag4豊明 尾古
 

More from 豊明 尾古 (19)

OSS-DB 取得のススメ
OSS-DB 取得のススメOSS-DB 取得のススメ
OSS-DB 取得のススメ
 
Ecmascript2015とその周辺について
Ecmascript2015とその周辺についてEcmascript2015とその周辺について
Ecmascript2015とその周辺について
 
ウェブアプリケーションのためのユニバーサルデザインを読んだので共有する
ウェブアプリケーションのためのユニバーサルデザインを読んだので共有するウェブアプリケーションのためのユニバーサルデザインを読んだので共有する
ウェブアプリケーションのためのユニバーサルデザインを読んだので共有する
 
Middlemanによる静的サイト作成術
Middlemanによる静的サイト作成術Middlemanによる静的サイト作成術
Middlemanによる静的サイト作成術
 
Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪
 
Rails templateで開発の初速を上げよう
Rails templateで開発の初速を上げようRails templateで開発の初速を上げよう
Rails templateで開発の初速を上げよう
 
KotlinAndroidLibを使ってみた
KotlinAndroidLibを使ってみたKotlinAndroidLibを使ってみた
KotlinAndroidLibを使ってみた
 
Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介Rubyistのためのkotlin紹介
Rubyistのためのkotlin紹介
 
Kotlinの紹介
Kotlinの紹介Kotlinの紹介
Kotlinの紹介
 
Slimの紹介
Slimの紹介Slimの紹介
Slimの紹介
 
Calabashでbddしようぜ
CalabashでbddしようぜCalabashでbddしようぜ
Calabashでbddしようぜ
 
Rubotoを試してみた
Rubotoを試してみたRubotoを試してみた
Rubotoを試してみた
 
Successful git
Successful gitSuccessful git
Successful git
 
アプリ内課金してみた
アプリ内課金してみたアプリ内課金してみた
アプリ内課金してみた
 
Webデザイナーのためのandroid用レイアウト講座
Webデザイナーのためのandroid用レイアウト講座Webデザイナーのためのandroid用レイアウト講座
Webデザイナーのためのandroid用レイアウト講座
 
Android 3.Xアプリを開発してみて
Android 3.Xアプリを開発してみてAndroid 3.Xアプリを開発してみて
Android 3.Xアプリを開発してみて
 
Gae開発入門
Gae開発入門Gae開発入門
Gae開発入門
 
ABC2011 Winter #jag4
ABC2011 Winter #jag4ABC2011 Winter #jag4
ABC2011 Winter #jag4
 
初めてのC2DM
初めてのC2DM初めてのC2DM
初めてのC2DM
 

Recently uploaded

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 

Recently uploaded (9)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 

便利なHerokuと active recordの 速度改善tips