SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
ステップバイステップ
で解説!Rails検索処理
Ruby / Ruby on Rails ビギナーズ勉強会 第9回 #coedorb
photo by poluz!
http://www.flickr.com/photos/poluz
自己紹介
• 派遣で6年程エンジニア&PM
• WindowsのActiveDirecotryとか
• 2005年∼2014年までは人材系の仕事
• エンジニア専門のキャリアコンサルタント
• 昨年からなぜかフリーランス
• しかもWeb系のエンジニア
• Rails4+AngularJS。最近は仕事でRubyでク
ローラー開発とかも行う
• http://qiita.com/h5y1m141@github/
items
• 実はJavaScriptが好きでこっちのほうが経験が長
い
•Titanium Mobile、Node.js、最近だとNW.js
•(最近メンテ辞めましたが)クラフトビールが飲め
る買えるお店が探せるスマフォアプリ、Webサイト
を全部JavaScriptベースの技術で作ってました
©jeffrey james pacres
http://www.flickr.com/photos/jjpacres/3293117576/
本題に入る前置き:

1年半の仕事を通じた学び
• Railsの検索処理が色々あるの
を実感
• 検索処理について深掘りすると
仕事の幅が広がる
©dliban

https://www.flickr.com/photos/dliban/1747257576/
ということで検索系の処理に
ついて3つのステップで解説
これからお話するRailsの構成は以下のような感じ
ruby 2.2.2

source 'https://
rubygems.org'
gem 'rails', '4.2.0'
# 省略
gem ‘ransack'


#以下は本来不要(おまけのネタの
ため設定)
gem 'elasticsearch-rails'
gem 'elasticsearch-model'
class InitSchema < ActiveRecord::Migration
def up
create_table "items", force: :cascade do |t|
t.string "name", limit: 255
t.string "url", limit: 255
t.integer "price", limit: 7
t.integer "sale_price", limit: 7
t.text "description", limit: 65535
t.datetime "created_at"
t.datetime "updated_at"
end
end
end
class Item < ActiveRecord::Base
end
Gemfile db/migarte/001_init_schema.rb
app/model/item.rb
STEP1: find系
Photo By peter burge
https://www.flickr.com/photos/peterburge/14441995464/
find系
class ItemsController < ApplicationController
before_action :set_task, only: [:show, :edit, :update, :destroy]
# 中略
private
def set_item
@item = Item.find(params[:id])
end
end
• 特定の条件にマッチする値を抽出する時に利用
• ./bin/rails generate scaffold itemとかすると自動的に生成さ
れる
@item = Item.find_by_id(params[:id]) # 特定のIDにマッチするアイテムを抽出

@item = Item.find_by_name(params[:name]) # 特定の名前にマッチするアイテムを抽出
• find_by_カラム名という書き方もできる
• find_by・・・はたくさんあるので、以下Qiitaの記事がわかりや
すい
• http://qiita.com/jnchito/items/2b7d64851665071ed6e6
STEP2: where
Photo By peter burge
https://www.flickr.com/photos/peterburge/14441995464/
where基本
•特定の条件にマッチする値が1つ以上抽出される
•配列で値が返ります
Item.where(price: 1998)
=> [#<Item:0x007fa44dd9b9f0
id: 1438,
price: 1998,
#<Item:0x007fa44dd9b888
id: 1445,
price: 1998
]
•配列で値が得られるのでその値に対する処理もや
りやすい
exclude_list = ['トップス']
Item.where(price: 1998).select{|item| item unless exclude_list.include?
(item[:name])}}
where複数条件指定
•whereの引数をハッシュで渡すことで複数条件指
定ができます
Item.where(price: params[:price], sale_price: params[:sale_price])
=> [#<Item:0x007fa44dd9b9f0
id: 1438,
price: 1998,
#<Item:0x007fa44dd9b888
id: 1445,
price: 1998
]
•以下の書き方はセキュリティ上の問題あるので避
けましょう!
※詳しくは英語のサイトですがWhere Methodをご覧ください

http://rails-sqli.org
Item.where(“price = ‘#{params[:sale]} AND sale_price= ‘#{sale_price}”)
whereついでにModel#scope
•よく利用する検索処理は Rails のModelの機能の
1つであるscope活用しましょう!
•意図が伝わりやすいコードになりやすい。
class Item < ActiveRecord::Base
# セール中のアイテムを抽出するためのメソッド

scope :on_sale, -> do
where.not(sale_price: nil)
end
end
Item.on_sale
=> [#<Item:0x007fa44dd9b9f0
id: 3,
sale_price: 998
#<Item:0x007fa44dd9b888
id: 4,
sale_price: 1998
]
app/model/item.rb
STEP3: Ransack
Photo By peter burge
https://www.flickr.com/photos/peterburge/14441995464/
Ransack
•gem
•https://github.com/activerecord-hackery/ransack
•入力フォームとの連携の仕組みが最初から整ってて便利
= search_form_for @search, {url: admin_items_path, html: {class: 'form-
horizontal'}} do |f|
%div.row
%div.col-md-offset-2
%div.form-group
= f.label 'アイテムID'
= f.number_field :id_eq, class: "form-control"
%div.col-md-offset-2
%div.form-group.col-md-1
= f.label '価格'
%div.form-group
%div.input-group.col-md-2
= f.text_field :price_gteq, size: 3, class: "form-control"
%div.input-group-addon 円以上
@search = Item.search(
price_gteq: params[:q][:price_gteq],
id_in: item_ids
)
View
Controller
Photo By Eugene Zemlyanskiy
http://www.flickr.com/photos/pictureperfectpose/76138988/
Ransack利用時の注意
• whereと条件指定がかなり似てるので混在して利用す
る時に注意した方が良い
• whereの場合にはカラム名だけでOK
• Ransack使う場合カラム名+SQLのwhere句の
条件となる文字を指定
• 具体例を次のスライドで!
Photo By Eugene Zemlyanskiy
http://www.flickr.com/photos/pictureperfectpose/76138988/
Ransack利用時の注意
item_ids = %w(1 2 3 4 5)
@items = Item.where(id: item_ids)
=> [#<Item:0x007fc199b42410
id: 1,
name: "#1 Item",
#<Item:0x007fc199b422a8
id: 2,
name: "#2 Item"
whereの場合 Ransackの場合
item_ids = %w(1 2 3 4 5)
@search = Item.search(id_in: item_ids)
@search.result
=> [#<Item:0x007fc199b42410
id: 1,
name: "#1 Item",
#<Item:0x007fc199b422a8
id: 2,
name: "#2 Item"
おまけ: ElasticSearch
Photo By peter burge
https://www.flickr.com/photos/peterburge/14441995464/
ElasticSearch
• 何?
• オープンソースの全文検索エンジンでJavaで書かれてるソフト
ウェアです
• https://github.com/elastic/elasticsearch
• 採用してる会社・サービス多数
• FacebookやLinkedIn、GitHub・・
• 何が出来るのか?
• 多機能で色々なことが出来ます。(詳しくは次のスライド)
• 簡単?
• 検索エンジンの仕組みの概念を理解しないと使うのは難しい
• 検索のアルゴリズムも色々あるので学習コストがとても高い
• ElasticSearch自体+Railsから利用するgemの使い方も知ら
ないといけないので・・・
ElasticSearch使った例
•あいまい検索っぽいもの
•Nikeという名前でデーターベースに登録されてる
•ユーザーからの検索はNikeはもちろんナイキでもヒットするようにしたい
Item.__elasticsearch__.client.indices.delete index: Item.index_name rescue nil
Item.create_index! force: true
Item.import
ナイキ, Nike
items = Item.__elasticsearch__.search(query:{term:{ 'name':'ナイキ' }})
trendwords.response
=> {"took"=>1,
"timed_out"=>false,
"_shards"=>{"total"=>5, "successful"=>5, "failed"=>0},
"hits"=>
{"total"=>2,
"max_score"=>5.9938283,
"hits"=>
[{"_index"=>"sample",
"_type"=>"item",
"_id"=>"514",
"_score"=>5.9938283,
"_source"=>
{"id"=>514,
"name"=>"Nike",
独自の辞書
ElasticSearchの設定(本当はもっとあるけど割愛)
ご清聴ありがとうございました

Weitere ähnliche Inhalte

Was ist angesagt?

10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話takehiko yoshida
 
Rails templateで開発の初速を上げよう
Rails templateで開発の初速を上げようRails templateで開発の初速を上げよう
Rails templateで開発の初速を上げよう豊明 尾古
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話Naoto Koshikawa
 
ぼくたちのじゅたくかいはつ
ぼくたちのじゅたくかいはつぼくたちのじゅたくかいはつ
ぼくたちのじゅたくかいはつAtsushi Harada
 
師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013 師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013 hiboma
 
Word pressはじめの一歩 テーマ作成ハンズオン
Word pressはじめの一歩 テーマ作成ハンズオンWord pressはじめの一歩 テーマ作成ハンズオン
Word pressはじめの一歩 テーマ作成ハンズオンHidetaka Okamoto
 
喋って、DEMOで 伝える 僕がHerokuを使う理由
喋って、DEMOで 伝える 僕がHerokuを使う理由喋って、DEMOで 伝える 僕がHerokuを使う理由
喋って、DEMOで 伝える 僕がHerokuを使う理由Masaru Gushiken
 
20120702勉強会 webアプリ作ってみた
20120702勉強会 webアプリ作ってみた20120702勉強会 webアプリ作ってみた
20120702勉強会 webアプリ作ってみたShugo Numano
 
WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015
WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015
WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015Kitani Kimiya
 
ぼくたちのじゅたくかいはつ(と品質の話)
ぼくたちのじゅたくかいはつ(と品質の話)ぼくたちのじゅたくかいはつ(と品質の話)
ぼくたちのじゅたくかいはつ(と品質の話)Atsushi Harada
 
Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料Shohei Kobayashi
 
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!Yasuyuki Ogawa
 
PWAをWebサービスに導入した話
PWAをWebサービスに導入した話PWAをWebサービスに導入した話
PWAをWebサービスに導入した話dobby618
 
テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする
 テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする
テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする文樹 高橋
 
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎schoowebcampus
 
実録 WordPress Twenty Sixteen のカスタマイズ | WordBench東京 2月勉強会 「みんなのテーマ開発」〜自分の好きな作り方...
実録 WordPress Twenty Sixteen のカスタマイズ | WordBench東京 2月勉強会 「みんなのテーマ開発」〜自分の好きな作り方...実録 WordPress Twenty Sixteen のカスタマイズ | WordBench東京 2月勉強会 「みんなのテーマ開発」〜自分の好きな作り方...
実録 WordPress Twenty Sixteen のカスタマイズ | WordBench東京 2月勉強会 「みんなのテーマ開発」〜自分の好きな作り方...Akira Tachibana
 
Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Kanako Kobayashi
 
わかると楽しいInfrastructure as code
わかると楽しいInfrastructure as codeわかると楽しいInfrastructure as code
わかると楽しいInfrastructure as codeShohei Kobayashi
 

Was ist angesagt? (20)

WooCommerce & AWS
WooCommerce & AWSWooCommerce & AWS
WooCommerce & AWS
 
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
10年以上Java屋してたおっさんが 今年からフロントエンジニアやっている話
 
Rails templateで開発の初速を上げよう
Rails templateで開発の初速を上げようRails templateで開発の初速を上げよう
Rails templateで開発の初速を上げよう
 
MF GeeksNight pplogの話
MF GeeksNight pplogの話MF GeeksNight pplogの話
MF GeeksNight pplogの話
 
ぼくたちのじゅたくかいはつ
ぼくたちのじゅたくかいはつぼくたちのじゅたくかいはつ
ぼくたちのじゅたくかいはつ
 
20150704cmsdou
20150704cmsdou20150704cmsdou
20150704cmsdou
 
師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013 師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013
 
Word pressはじめの一歩 テーマ作成ハンズオン
Word pressはじめの一歩 テーマ作成ハンズオンWord pressはじめの一歩 テーマ作成ハンズオン
Word pressはじめの一歩 テーマ作成ハンズオン
 
喋って、DEMOで 伝える 僕がHerokuを使う理由
喋って、DEMOで 伝える 僕がHerokuを使う理由喋って、DEMOで 伝える 僕がHerokuを使う理由
喋って、DEMOで 伝える 僕がHerokuを使う理由
 
20120702勉強会 webアプリ作ってみた
20120702勉強会 webアプリ作ってみた20120702勉強会 webアプリ作ってみた
20120702勉強会 webアプリ作ってみた
 
WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015
WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015
WordCamp Kansai 2015 ハンズオン - 踏み出してみよう!翻訳の第一歩 #wck2015
 
ぼくたちのじゅたくかいはつ(と品質の話)
ぼくたちのじゅたくかいはつ(と品質の話)ぼくたちのじゅたくかいはつ(と品質の話)
ぼくたちのじゅたくかいはつ(と品質の話)
 
Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料Ruby on vim yokohama.vim発表資料
Ruby on vim yokohama.vim発表資料
 
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
Slack Appsでやれる事を確認した。年内日本語化されるんで、急ぎで!
 
PWAをWebサービスに導入した話
PWAをWebサービスに導入した話PWAをWebサービスに導入した話
PWAをWebサービスに導入した話
 
テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする
 テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする
テーマに機能を含めちゃダメなんて誰が決めた! テーマをモリモリにカスタマイズする
 
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの広め方〜PR・継続できる目標の立て方・改善編 先生:増井 雄一郎
 
実録 WordPress Twenty Sixteen のカスタマイズ | WordBench東京 2月勉強会 「みんなのテーマ開発」〜自分の好きな作り方...
実録 WordPress Twenty Sixteen のカスタマイズ | WordBench東京 2月勉強会 「みんなのテーマ開発」〜自分の好きな作り方...実録 WordPress Twenty Sixteen のカスタマイズ | WordBench東京 2月勉強会 「みんなのテーマ開発」〜自分の好きな作り方...
実録 WordPress Twenty Sixteen のカスタマイズ | WordBench東京 2月勉強会 「みんなのテーマ開発」〜自分の好きな作り方...
 
Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207Svgアニメーションを実装してみよう 20150207
Svgアニメーションを実装してみよう 20150207
 
わかると楽しいInfrastructure as code
わかると楽しいInfrastructure as codeわかると楽しいInfrastructure as code
わかると楽しいInfrastructure as code
 

Ähnlich wie 2015 12-19-ruby rails

omotesando.rb_20231005.pdf
omotesando.rb_20231005.pdfomotesando.rb_20231005.pdf
omotesando.rb_20231005.pdf瑛一 西口
 
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発takuma mori
 
Ruby and I at 神奈川Ruby会議01
Ruby and I at 神奈川Ruby会議01Ruby and I at 神奈川Ruby会議01
Ruby and I at 神奈川Ruby会議01Yutaka Tachibana
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Takuya Mukohira
 
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場Yasuko Ohba
 
テックリンク資料20170529
テックリンク資料20170529テックリンク資料20170529
テックリンク資料20170529yoshito funayose
 
Railsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えてRailsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えてHirata Tomoko
 
20111029 rubyon php
20111029 rubyon php20111029 rubyon php
20111029 rubyon phpdo_aki
 
マイクロサービスにおける 非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャマイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける 非同期アーキテクチャota42y
 
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクションTakahiro Okumura
 
Ruby on Railsではじめるrspecテスト
Ruby on RailsではじめるrspecテストRuby on Railsではじめるrspecテスト
Ruby on RailsではじめるrspecテストKanako Kobayashi
 
RESTからGraphQL APIへの移行で学んだこと.pptx
RESTからGraphQL APIへの移行で学んだこと.pptxRESTからGraphQL APIへの移行で学んだこと.pptx
RESTからGraphQL APIへの移行で学んだこと.pptxYuya55
 
Perl Beginners #7 おとなのWAF
Perl Beginners #7 おとなのWAF Perl Beginners #7 おとなのWAF
Perl Beginners #7 おとなのWAF Munenori Sugimura
 
Rubymotionはオススメか?
Rubymotionはオススメか?Rubymotionはオススメか?
Rubymotionはオススメか?Junya Ishihara
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerTakuro Sasaki
 
Sprocketsを捨てたい
Sprocketsを捨てたいSprocketsを捨てたい
Sprocketsを捨てたいMasato Noguchi
 

Ähnlich wie 2015 12-19-ruby rails (20)

2015 07-04-ruby rails
2015 07-04-ruby rails2015 07-04-ruby rails
2015 07-04-ruby rails
 
omotesando.rb_20231005.pdf
omotesando.rb_20231005.pdfomotesando.rb_20231005.pdf
omotesando.rb_20231005.pdf
 
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
RubyKaigi2009 - RubyをつかったiPhoneアプリケーション開発
 
Ruby and I at 神奈川Ruby会議01
Ruby and I at 神奈川Ruby会議01Ruby and I at 神奈川Ruby会議01
Ruby and I at 神奈川Ruby会議01
 
Rubyのススメ
RubyのススメRubyのススメ
Rubyのススメ
 
Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1Sinatra軽量Web開発 - LOUPE Study #1
Sinatra軽量Web開発 - LOUPE Study #1
 
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
QCon2009 Tokyo - Ruby on Railsで変わるエンタープライズ開発の現場
 
テックリンク資料20170529
テックリンク資料20170529テックリンク資料20170529
テックリンク資料20170529
 
My cordovaprojectstory
My cordovaprojectstoryMy cordovaprojectstory
My cordovaprojectstory
 
Railsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えてRailsチュートリアル(second)を終えて
Railsチュートリアル(second)を終えて
 
20111029 rubyon php
20111029 rubyon php20111029 rubyon php
20111029 rubyon php
 
マイクロサービスにおける 非同期アーキテクチャ
マイクロサービスにおける非同期アーキテクチャマイクロサービスにおける非同期アーキテクチャ
マイクロサービスにおける 非同期アーキテクチャ
 
Application Bootstrap
Application BootstrapApplication Bootstrap
Application Bootstrap
 
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Web開発研修イントロダクション
 
Ruby on Railsではじめるrspecテスト
Ruby on RailsではじめるrspecテストRuby on Railsではじめるrspecテスト
Ruby on Railsではじめるrspecテスト
 
RESTからGraphQL APIへの移行で学んだこと.pptx
RESTからGraphQL APIへの移行で学んだこと.pptxRESTからGraphQL APIへの移行で学んだこと.pptx
RESTからGraphQL APIへの移行で学んだこと.pptx
 
Perl Beginners #7 おとなのWAF
Perl Beginners #7 おとなのWAF Perl Beginners #7 おとなのWAF
Perl Beginners #7 おとなのWAF
 
Rubymotionはオススメか?
Rubymotionはオススメか?Rubymotionはオススメか?
Rubymotionはオススメか?
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
 
Sprocketsを捨てたい
Sprocketsを捨てたいSprocketsを捨てたい
Sprocketsを捨てたい
 

Mehr von Hiroshi Oyamada

育児を支える技術〜クローラーとかスクレイピング
育児を支える技術〜クローラーとかスクレイピング育児を支える技術〜クローラーとかスクレイピング
育児を支える技術〜クローラーとかスクレイピングHiroshi Oyamada
 
日々の面倒をプログラミングで解決!【入門編】
日々の面倒をプログラミングで解決!【入門編】日々の面倒をプログラミングで解決!【入門編】
日々の面倒をプログラミングで解決!【入門編】Hiroshi Oyamada
 
2014 05-17-titanium hamamatsuvol3
2014 05-17-titanium hamamatsuvol32014 05-17-titanium hamamatsuvol3
2014 05-17-titanium hamamatsuvol3Hiroshi Oyamada
 
20140319 titanium meetupvol17
20140319 titanium meetupvol1720140319 titanium meetupvol17
20140319 titanium meetupvol17Hiroshi Oyamada
 
2014 02-19-titanium meetupvol16
2014 02-19-titanium meetupvol162014 02-19-titanium meetupvol16
2014 02-19-titanium meetupvol16Hiroshi Oyamada
 
20130910 titanium meetupvol11
20130910 titanium meetupvol1120130910 titanium meetupvol11
20130910 titanium meetupvol11Hiroshi Oyamada
 
勉強会主催者のための勉強会
勉強会主催者のための勉強会勉強会主催者のための勉強会
勉強会主催者のための勉強会Hiroshi Oyamada
 
20130613 titanium meetupvol9
20130613 titanium meetupvol920130613 titanium meetupvol9
20130613 titanium meetupvol9Hiroshi Oyamada
 
2013 06-11-craft beerfanlt
2013 06-11-craft beerfanlt2013 06-11-craft beerfanlt
2013 06-11-craft beerfanltHiroshi Oyamada
 
2013 06-05-web-career-talk-at-coedo
2013 06-05-web-career-talk-at-coedo2013 06-05-web-career-talk-at-coedo
2013 06-05-web-career-talk-at-coedoHiroshi Oyamada
 
20130412 titanium meetupvol7
20130412 titanium meetupvol720130412 titanium meetupvol7
20130412 titanium meetupvol7Hiroshi Oyamada
 
2013 02-28-bussiness-plan-about-titanium
2013 02-28-bussiness-plan-about-titanium2013 02-28-bussiness-plan-about-titanium
2013 02-28-bussiness-plan-about-titaniumHiroshi Oyamada
 
20130126 titanium新年会
20130126 titanium新年会20130126 titanium新年会
20130126 titanium新年会Hiroshi Oyamada
 
20130125 titanium meetupvol5
20130125 titanium meetupvol520130125 titanium meetupvol5
20130125 titanium meetupvol5Hiroshi Oyamada
 
2012 12-17-titanium meetupvol4
2012 12-17-titanium meetupvol42012 12-17-titanium meetupvol4
2012 12-17-titanium meetupvol4Hiroshi Oyamada
 
Sinatraアプリをherokuにアップ
SinatraアプリをherokuにアップSinatraアプリをherokuにアップ
SinatraアプリをherokuにアップHiroshi Oyamada
 
Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶHiroshi Oyamada
 
Twitter連携chrome extension作り方
Twitter連携chrome extension作り方Twitter連携chrome extension作り方
Twitter連携chrome extension作り方Hiroshi Oyamada
 
2012 03-24-titanium plusquicktigame2d
2012 03-24-titanium plusquicktigame2d2012 03-24-titanium plusquicktigame2d
2012 03-24-titanium plusquicktigame2dHiroshi Oyamada
 

Mehr von Hiroshi Oyamada (20)

育児を支える技術〜クローラーとかスクレイピング
育児を支える技術〜クローラーとかスクレイピング育児を支える技術〜クローラーとかスクレイピング
育児を支える技術〜クローラーとかスクレイピング
 
日々の面倒をプログラミングで解決!【入門編】
日々の面倒をプログラミングで解決!【入門編】日々の面倒をプログラミングで解決!【入門編】
日々の面倒をプログラミングで解決!【入門編】
 
2014 05-17-titanium hamamatsuvol3
2014 05-17-titanium hamamatsuvol32014 05-17-titanium hamamatsuvol3
2014 05-17-titanium hamamatsuvol3
 
20140319 titanium meetupvol17
20140319 titanium meetupvol1720140319 titanium meetupvol17
20140319 titanium meetupvol17
 
2014 02-19-titanium meetupvol16
2014 02-19-titanium meetupvol162014 02-19-titanium meetupvol16
2014 02-19-titanium meetupvol16
 
TitaniumMeetUpVol13
TitaniumMeetUpVol13TitaniumMeetUpVol13
TitaniumMeetUpVol13
 
20130910 titanium meetupvol11
20130910 titanium meetupvol1120130910 titanium meetupvol11
20130910 titanium meetupvol11
 
勉強会主催者のための勉強会
勉強会主催者のための勉強会勉強会主催者のための勉強会
勉強会主催者のための勉強会
 
20130613 titanium meetupvol9
20130613 titanium meetupvol920130613 titanium meetupvol9
20130613 titanium meetupvol9
 
2013 06-11-craft beerfanlt
2013 06-11-craft beerfanlt2013 06-11-craft beerfanlt
2013 06-11-craft beerfanlt
 
2013 06-05-web-career-talk-at-coedo
2013 06-05-web-career-talk-at-coedo2013 06-05-web-career-talk-at-coedo
2013 06-05-web-career-talk-at-coedo
 
20130412 titanium meetupvol7
20130412 titanium meetupvol720130412 titanium meetupvol7
20130412 titanium meetupvol7
 
2013 02-28-bussiness-plan-about-titanium
2013 02-28-bussiness-plan-about-titanium2013 02-28-bussiness-plan-about-titanium
2013 02-28-bussiness-plan-about-titanium
 
20130126 titanium新年会
20130126 titanium新年会20130126 titanium新年会
20130126 titanium新年会
 
20130125 titanium meetupvol5
20130125 titanium meetupvol520130125 titanium meetupvol5
20130125 titanium meetupvol5
 
2012 12-17-titanium meetupvol4
2012 12-17-titanium meetupvol42012 12-17-titanium meetupvol4
2012 12-17-titanium meetupvol4
 
Sinatraアプリをherokuにアップ
SinatraアプリをherokuにアップSinatraアプリをherokuにアップ
Sinatraアプリをherokuにアップ
 
Sinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶSinatraでwebアプリケーション開発を学ぶ
Sinatraでwebアプリケーション開発を学ぶ
 
Twitter連携chrome extension作り方
Twitter連携chrome extension作り方Twitter連携chrome extension作り方
Twitter連携chrome extension作り方
 
2012 03-24-titanium plusquicktigame2d
2012 03-24-titanium plusquicktigame2d2012 03-24-titanium plusquicktigame2d
2012 03-24-titanium plusquicktigame2d
 

2015 12-19-ruby rails