rabbit-slide-kou-rwc-2014 2014.11.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.rabbit +1 -0
- data/README.rd +33 -0
- data/Rakefile +17 -0
- data/config.yaml +23 -0
- data/distributed-full-text-search-middleware-in-ruby.rab +269 -0
- data/pdf/rwc-2014-distributed-full-text-search-middleware-in-ruby.pdf +0 -0
- data/theme.rb +4 -0
- metadata +79 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 742a538b994cd09f825032c041d41a003d798c5c
|
4
|
+
data.tar.gz: 81006a0af0963b369090ffb3729d5cf673ff998b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4ebb9b24d6dcac468f7f6ee38eee854ab1e391219a6da91744b5752c16bfd869d0ca6b0fe87b69f9cebc2b3c51d22d75b1e8e69b52bb68c340e6cd07a3c71366
|
7
|
+
data.tar.gz: 6256de9c022d74c5c20da7a2c1d0673e55c9d5d3a91a88742a7948b2b2ddd084017352a2ecd568a690e0538db4cf466bead62c0ae37cedc63a12d5d092dfe468
|
data/.rabbit
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
distributed-full-text-search-middleware-in-ruby.rab
|
data/README.rd
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
= Rubyを使った分散全文検索ミドルウェア
|
2
|
+
|
3
|
+
この発表はミドルウェアの分野でもRubyの普及を促進することを目指します。Rubyで分散全文検索エンジンというミドルウェアを開発している経験から、Rubyで開発したミドルウェアを他の言語でのプロダクトと差別化するために気をつけるべきことを紹介します。この知見を使って、Rubyを活かしたミドルウェアがより多く開発されることを期待します。
|
4
|
+
|
5
|
+
== ライセンス
|
6
|
+
|
7
|
+
CC BY-SA 4.0
|
8
|
+
|
9
|
+
原著作者名には以下のどちらかを使ってください。
|
10
|
+
|
11
|
+
* 須藤功平
|
12
|
+
* Kouhei Sutou
|
13
|
+
|
14
|
+
== 作者向け
|
15
|
+
|
16
|
+
=== 表示
|
17
|
+
|
18
|
+
rake
|
19
|
+
|
20
|
+
=== 公開
|
21
|
+
|
22
|
+
rake publish
|
23
|
+
|
24
|
+
== 閲覧者向け
|
25
|
+
|
26
|
+
=== インストール
|
27
|
+
|
28
|
+
gem install rabbit-slide-kou-rwc-2014
|
29
|
+
|
30
|
+
=== 表示
|
31
|
+
|
32
|
+
rabbit rabbit-slide-kou-rwc-2014.gem
|
33
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require "rabbit/task/slide"
|
2
|
+
|
3
|
+
# Edit ./config.yaml to customize meta data
|
4
|
+
|
5
|
+
spec = nil
|
6
|
+
Rabbit::Task::Slide.new do |task|
|
7
|
+
spec = task.spec
|
8
|
+
# spec.files += Dir.glob("doc/**/*.*")
|
9
|
+
# spec.files -= Dir.glob("private/**/*.*")
|
10
|
+
spec.add_runtime_dependency("clear-code")
|
11
|
+
end
|
12
|
+
|
13
|
+
desc "Tag #{spec.version}"
|
14
|
+
task :tag do
|
15
|
+
sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
|
16
|
+
sh("git", "push", "--tags")
|
17
|
+
end
|
data/config.yaml
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
---
|
2
|
+
id: rwc-2014
|
3
|
+
base_name: distributed-full-text-search-middleware-in-ruby
|
4
|
+
tags:
|
5
|
+
- rabbit
|
6
|
+
- ruby
|
7
|
+
- full-text-search
|
8
|
+
presentation_date: 2014-11-13
|
9
|
+
version: 2014.11.13.0
|
10
|
+
licenses:
|
11
|
+
- CC BY-SA 4.0
|
12
|
+
slideshare_id:
|
13
|
+
speaker_deck_id:
|
14
|
+
ustream_id:
|
15
|
+
vimeo_id:
|
16
|
+
youtube_id:
|
17
|
+
author:
|
18
|
+
markup_language: :rd
|
19
|
+
name: Kouhei Sutou
|
20
|
+
email: kou@clear-code.com
|
21
|
+
rubygems_user: kou
|
22
|
+
slideshare_user: kou
|
23
|
+
speaker_deck_user: kou
|
@@ -0,0 +1,269 @@
|
|
1
|
+
= Rubyを使った\n分散全文検索ミドルウェア
|
2
|
+
|
3
|
+
: author
|
4
|
+
須藤功平
|
5
|
+
: institution
|
6
|
+
株式会社クリアコード
|
7
|
+
: content-source
|
8
|
+
RubyWorld Conference 2014
|
9
|
+
: date
|
10
|
+
2014/11/13
|
11
|
+
: allotted-time
|
12
|
+
30m
|
13
|
+
: theme
|
14
|
+
.
|
15
|
+
|
16
|
+
= 趣意書 - 今
|
17
|
+
|
18
|
+
* 今ではRubyは「当たり前」
|
19
|
+
* Rubyはキャズム理論の段階を\n
|
20
|
+
順当に進んできている
|
21
|
+
* Rubyは「レートマジョリティ」\n
|
22
|
+
にも到達しつつある
|
23
|
+
* 「レートマジョリティ」 =\n
|
24
|
+
「普通の人々」
|
25
|
+
|
26
|
+
= 趣意書 - これから
|
27
|
+
|
28
|
+
* 「レートマジョリティ」に\n
|
29
|
+
浸透させるには?
|
30
|
+
* 技術だけを追求するのではなく、\n
|
31
|
+
心理的、経済的、政治的な障害なども考慮する必要がある
|
32
|
+
* Ruby普及における重要なテーマ
|
33
|
+
* これらの障害を乗り越えた\n
|
34
|
+
「浸透(penetration)」
|
35
|
+
|
36
|
+
= 趣意書 - まとめ
|
37
|
+
|
38
|
+
Rubyを\n
|
39
|
+
普通の人々に\n
|
40
|
+
浸透させたい!
|
41
|
+
|
42
|
+
= この発表の内容
|
43
|
+
|
44
|
+
浸透促進案の\n
|
45
|
+
ご提案
|
46
|
+
|
47
|
+
= 浸透の定義
|
48
|
+
|
49
|
+
Rubyを使っても\n
|
50
|
+
驚かない
|
51
|
+
|
52
|
+
= 普通の人々
|
53
|
+
|
54
|
+
* IT系
|
55
|
+
* いつもプログラムを書いている人
|
56
|
+
* たまにプログラムを書く人
|
57
|
+
* プログラムを使う人
|
58
|
+
* 非IT系
|
59
|
+
* こども
|
60
|
+
|
61
|
+
= 領域拡大な浸透方法
|
62
|
+
|
63
|
+
* IT系
|
64
|
+
* ((*いつもプログラムを書いている人*))
|
65
|
+
* ((*たまにプログラムを書く人*))
|
66
|
+
* プログラムを使う人
|
67
|
+
* 非IT系
|
68
|
+
* こども
|
69
|
+
|
70
|
+
= 新規開拓な浸透方法
|
71
|
+
|
72
|
+
* IT系
|
73
|
+
* いつもプログラムを書いている人
|
74
|
+
* たまにプログラムを書く人
|
75
|
+
* ((*プログラムを使う人*))
|
76
|
+
* 非IT系
|
77
|
+
* ((*こども*))
|
78
|
+
|
79
|
+
= 提案方針
|
80
|
+
|
81
|
+
* 領域拡大にフォーカス
|
82
|
+
* 新規開拓は考えない
|
83
|
+
* おんがえしさんのofrubyは\n
|
84
|
+
1つのやり方のように思える
|
85
|
+
|
86
|
+
= 領域拡大
|
87
|
+
|
88
|
+
* 他の言語からの移行を促す
|
89
|
+
* 技術的な攻め方
|
90
|
+
* 多機能・高機能・高性能
|
91
|
+
* 心理的・政治的な攻め方
|
92
|
+
* 流行り(('note:(「みんな」使っていますよ)'))
|
93
|
+
|
94
|
+
= 領域拡大 - 提案方針
|
95
|
+
|
96
|
+
* 他の言語からの移行を促す
|
97
|
+
* 技術的な攻め方
|
98
|
+
* 多機能・高機能・高性能
|
99
|
+
* 心理的・政治的な攻め方
|
100
|
+
* ((*流行り*))(('note:(「みんな」使っていますよ)'))
|
101
|
+
|
102
|
+
= 流行っている状態
|
103
|
+
|
104
|
+
(('tag:center'))シェアを独占している
|
105
|
+
|
106
|
+
* キラーアプリがある
|
107
|
+
* 例:Ruby on Rails
|
108
|
+
* 有用アプリの多くがRuby製
|
109
|
+
* 例:Chef, Puppet, Vagrant, Serverspec
|
110
|
+
|
111
|
+
= キラーアプリは難しい
|
112
|
+
|
113
|
+
(('tag:center'))シェアを独占している
|
114
|
+
|
115
|
+
* (('del:キラーアプリがある'))
|
116
|
+
* 例:Ruby on Rails
|
117
|
+
* 有用アプリの多くがRuby製
|
118
|
+
* 例:Chef, Puppet, Vagrant, Serverspec
|
119
|
+
|
120
|
+
= 多有用アプリ状況を目指す
|
121
|
+
|
122
|
+
* 成功事例
|
123
|
+
* 後続が真似したくなればよい
|
124
|
+
* そんなに流行らなくてもよい
|
125
|
+
* 開発ノウハウ
|
126
|
+
* 後続が開発しやすくなる
|
127
|
+
|
128
|
+
= 領域拡大の対象分野案
|
129
|
+
|
130
|
+
(('tag:center'))ミドルウェア
|
131
|
+
|
132
|
+
* データストア(RDBMSやKVS)
|
133
|
+
* 検索システム
|
134
|
+
* メッセージキュー
|
135
|
+
* ログ活用(分析や監視)
|
136
|
+
|
137
|
+
= Rubyでミドルウェア
|
138
|
+
|
139
|
+
* 成功事例
|
140
|
+
* Fluentd
|
141
|
+
* 分散全文検索エンジンを開発中\n
|
142
|
+
(('note:(Droonga)'))
|
143
|
+
* 開発ノウハウ
|
144
|
+
* これから紹介
|
145
|
+
* Rubyで新規に開発しようという人の\n
|
146
|
+
役に立てばよい
|
147
|
+
|
148
|
+
= 強みの選び方
|
149
|
+
|
150
|
+
* 最高速で勝負しない
|
151
|
+
* 多機能で勝負しない
|
152
|
+
* 使いやすさで勝負する
|
153
|
+
|
154
|
+
= 性能
|
155
|
+
|
156
|
+
* 最高速は目指さない
|
157
|
+
* C/C++とかJavaに負ける
|
158
|
+
* 十分な速度は目指す
|
159
|
+
|
160
|
+
= 高速化方法
|
161
|
+
|
162
|
+
* ボトルネックを確認!
|
163
|
+
* ボトルネックになりやすい箇所
|
164
|
+
* CPU
|
165
|
+
* ネットワーク
|
166
|
+
* なるかもしれない箇所
|
167
|
+
* I/Oとメモリー
|
168
|
+
|
169
|
+
= CPUネック
|
170
|
+
|
171
|
+
* マルチプロセス
|
172
|
+
* 1スレッド・パイプ・spawn
|
173
|
+
* Cで拡張ライブラリーを書く
|
174
|
+
* Fluentd: MessagePack
|
175
|
+
* Droonga: MessagePack, Groonga
|
176
|
+
* ヒント:JSONはとても重い
|
177
|
+
|
178
|
+
= ネットワークネック
|
179
|
+
|
180
|
+
* ノンブロッキングI/Oと多重化
|
181
|
+
* 拡張ライブラリー必須
|
182
|
+
* →Cool.io, nio4r, EventMachine
|
183
|
+
* 通信量を減らす
|
184
|
+
* データを減らす
|
185
|
+
* ムリなら圧縮(zlib, LZ4)
|
186
|
+
|
187
|
+
= I/Oとメモリーネック
|
188
|
+
|
189
|
+
* データストアをCで書く
|
190
|
+
* Droonga: Groonga
|
191
|
+
* ROMA: Tokyo Cabinet, SQLite3
|
192
|
+
* コアの機能もCで書く
|
193
|
+
* データコピーも減らしたいとき
|
194
|
+
|
195
|
+
= 強みの選び方 - 性能
|
196
|
+
|
197
|
+
* 最高速で勝負しない
|
198
|
+
* でも、十分な速度は目指す
|
199
|
+
* 使いものになればよい
|
200
|
+
* 多機能で勝負しない
|
201
|
+
* 使いやすさで勝負する
|
202
|
+
|
203
|
+
= 機能
|
204
|
+
|
205
|
+
* 多機能をウリにしない
|
206
|
+
* 多機能だと遅くなる(('note:ことが多い'))
|
207
|
+
* 組み込みの機能より拡張性
|
208
|
+
* →プラグイン機能
|
209
|
+
* Fluentd, ROMA, Droonga
|
210
|
+
|
211
|
+
= プラグイン機能のポイント
|
212
|
+
|
213
|
+
* 開発者向け
|
214
|
+
* 作りやすい
|
215
|
+
* テストしやすい
|
216
|
+
* リリースしやすい
|
217
|
+
* ユーザー向け
|
218
|
+
* インストールしやすい
|
219
|
+
* 設定しやすい
|
220
|
+
|
221
|
+
= 開発者向け
|
222
|
+
|
223
|
+
* 作りやすさ
|
224
|
+
* scaffoldいらずのAPI
|
225
|
+
* テストしやすさ
|
226
|
+
* ドライバー・スタブを提供
|
227
|
+
* リリースしやすさ
|
228
|
+
* gem
|
229
|
+
|
230
|
+
= ユーザー向け
|
231
|
+
|
232
|
+
* インストールのしやすさ
|
233
|
+
* Rubyをそんなに知らない前提なのに\n
|
234
|
+
直接gemを使ってもらうのってアリ?
|
235
|
+
* 設定のしやすさ
|
236
|
+
* できるだけ少なく
|
237
|
+
* できればno configuration
|
238
|
+
|
239
|
+
= 強みの選び方 - 機能
|
240
|
+
|
241
|
+
* 最高速で勝負しない
|
242
|
+
* 多機能で勝負しない
|
243
|
+
* 組込機能よりも簡単拡張で勝負
|
244
|
+
* Ruby初心者でも開発できる簡単さ
|
245
|
+
* →プラグイン開発でRubyデビュー\n
|
246
|
+
(('note:(tDiaryスタイルのRuby浸透方法)'))
|
247
|
+
* 使いやすさで勝負する
|
248
|
+
|
249
|
+
= 使いやすさ
|
250
|
+
|
251
|
+
* 設定は少ないほうがよい
|
252
|
+
* 適切なデフォルト値
|
253
|
+
* 自動調整
|
254
|
+
* 起動するだけなら設定なしで
|
255
|
+
* 起動するまでが一番くじけやすい
|
256
|
+
|
257
|
+
= まとめ1
|
258
|
+
|
259
|
+
* 趣意書
|
260
|
+
* Rubyを浸透させたい!
|
261
|
+
* この発表
|
262
|
+
* 浸透促進案の提案
|
263
|
+
* ミドルウェア分野での促進案
|
264
|
+
|
265
|
+
= まとめ2
|
266
|
+
|
267
|
+
* 最高速で勝負しない
|
268
|
+
* 多機能で勝負しない
|
269
|
+
* 使いやすさで勝負する
|
Binary file
|
data/theme.rb
ADDED
metadata
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rabbit-slide-kou-rwc-2014
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2014.11.13.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kouhei Sutou
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-10-30 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rabbit
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.0.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 2.0.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: clear-code
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: "この発表はミドルウェアの分野でもRubyの普及を促進することを目指します。Rubyで分散全文検索エンジンというミドルウェアを開発している経験から、Rubyで開発したミドルウェアを他の言語でのプロダクトと差別化するために気をつけるべきことを紹介します。この知見を使って、Rubyを活かしたミドルウェアがより多く開発されることを期待します。"
|
42
|
+
email:
|
43
|
+
- kou@clear-code.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- ".rabbit"
|
49
|
+
- README.rd
|
50
|
+
- Rakefile
|
51
|
+
- config.yaml
|
52
|
+
- distributed-full-text-search-middleware-in-ruby.rab
|
53
|
+
- pdf/rwc-2014-distributed-full-text-search-middleware-in-ruby.pdf
|
54
|
+
- theme.rb
|
55
|
+
homepage: http://slide.rabbit-shocker.org/authors/kou/rwc-2014/
|
56
|
+
licenses:
|
57
|
+
- CC BY-SA 4.0
|
58
|
+
metadata: {}
|
59
|
+
post_install_message:
|
60
|
+
rdoc_options: []
|
61
|
+
require_paths:
|
62
|
+
- lib
|
63
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
73
|
+
requirements: []
|
74
|
+
rubyforge_project:
|
75
|
+
rubygems_version: 2.2.2
|
76
|
+
signing_key:
|
77
|
+
specification_version: 4
|
78
|
+
summary: Rubyを使った分散全文検索ミドルウェア
|
79
|
+
test_files: []
|