rabbit-slide-kou-myna-201807 2018.7.23.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1150667c0fce4d192d131ae3f2fe98e60e35349528be0acddeeb7ffc7ede9de7
4
+ data.tar.gz: 8252bc3526fcddff9cc913e869aeb3703874d28514405f98f14b1c1df1c418e9
5
+ SHA512:
6
+ metadata.gz: 1f6a9b658f4761434de05e4315f3f19693ba47dabb84f2d14ef53b5e7dad63f9ffd18bd6a3c5024ee844a8189f57223afe666baa01d2ea420a1041bc94645bd8
7
+ data.tar.gz: 27f898b5a11ef7889f1eea07fb7ad927f3056a697bf7f79b5c7d8e3b93fdbe3bfc91cbd6f36c937702ca4f591f8639180a1f48246d1e2322e814c356c6c397f0
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ mysql8-and-mroonga.rab
@@ -0,0 +1,23 @@
1
+ = MySQL 8でMroonga
2
+
3
+ MySQL 8でMroongaを使うとこんなにうれしい!
4
+
5
+ == 作者向け
6
+
7
+ === 表示
8
+
9
+ rake
10
+
11
+ === 公開
12
+
13
+ rake publish
14
+
15
+ == 閲覧者向け
16
+
17
+ === インストール
18
+
19
+ gem install rabbit-slide-kou-myna-201807
20
+
21
+ === 表示
22
+
23
+ rabbit rabbit-slide-kou-myna-201807.gem
@@ -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("images/**/*.*")
9
+ # spec.files -= Dir.glob("private/**/*.*")
10
+ spec.add_runtime_dependency("rabbit-theme-groonga")
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
@@ -0,0 +1,26 @@
1
+ ---
2
+ id: myna-201807
3
+ base_name: mysql8-and-mroonga
4
+ tags:
5
+ - rabbit
6
+ - myna
7
+ - mysql8
8
+ - mroonga
9
+ presentation_date: 2018-07-23
10
+ presentation_start_time: 2018-07-23T21:05:00+09:00
11
+ presentation_end_time: 2018-07-23T21:15:00+09:00
12
+ version: 2018.7.23.0
13
+ licenses:
14
+ - CC-BY-SA-4.0
15
+ slideshare_id:
16
+ speaker_deck_id:
17
+ ustream_id:
18
+ vimeo_id:
19
+ youtube_id:
20
+ author:
21
+ markup_language: :rd
22
+ name: 須藤功平
23
+ email: kou@clear-code.com
24
+ rubygems_user: kou
25
+ slideshare_user: kou
26
+ speaker_deck_user:
Binary file
Binary file
@@ -0,0 +1,529 @@
1
+ = MySQL 8でMroonga
2
+
3
+ : author
4
+ 須藤功平
5
+ : institution
6
+ クリアコード
7
+ : content-source
8
+ MyNA会 2018年7月
9
+ : date
10
+ 2018-07-23
11
+ : start-time
12
+ 2018-07-23T21:05:00+09:00
13
+ : end-time
14
+ 2018-07-23T21:15:00+09:00
15
+ : theme
16
+ .
17
+
18
+ = Mroonga
19
+
20
+ MySQLの\n
21
+ ストレージ\n
22
+ エンジン
23
+
24
+ = ストレージエンジン
25
+
26
+ * C++で実装
27
+ * MySQLのハンドラーAPIを使う
28
+ * (('note:ハンドラーAPIっていう名前なの?'))
29
+
30
+ = ハンドラーAPI
31
+
32
+ * すごくよく変わる
33
+ * メジャーバージョンアップ
34
+ * (('wait'))絶対変わる
35
+ * MyNAバージョンアップ
36
+ * (('wait'))たまに変わる
37
+
38
+ = MySQL 8対応
39
+
40
+ (1) ビルドエラー修正
41
+ * API変更に対応
42
+ (2) (('wait'))新機能対応
43
+ * 新COLLATION対応とか
44
+ (3) (('wait'))テストをパスするようにする
45
+ * ビルドができても期待通りに動くとは限らない
46
+
47
+ = 制約
48
+
49
+ 対応MySQL族で\n
50
+ Mroongaの\n
51
+ テストを\n
52
+ すべてパス
53
+
54
+ = 対応MySQL族
55
+
56
+ * MySQL
57
+ * 5.5, 5.6, 5.7
58
+ * MariaDB
59
+ * 5.5, 10.0, 10.1, 10.2, 10.3
60
+ * Percona Server for MySQL
61
+ * 5.6, 5.7
62
+
63
+ = Travis CI
64
+
65
+ # img
66
+ # src = images/travis-ci.png
67
+ # relative_height = 100
68
+
69
+ = AppVeyor
70
+
71
+ # img
72
+ # src = images/appveyor.png
73
+ # relative_width = 100
74
+
75
+ = MySQL 8対応の現状
76
+
77
+ (1) ビルドエラー修正
78
+ * (('wait'))完了
79
+ (2) 新機能対応
80
+ * (('wait'))完了
81
+ (3) テストをパスするようにする
82
+ * (('wait'))未完(('note:(全然おわんねーの)'))
83
+
84
+ = ビルドエラー修正までの道
85
+
86
+ 90コミット
87
+
88
+ = API変更パターン
89
+
90
+ (1) (('wait'))ふつうのC++になった
91
+ * すごくよいこと
92
+ (2) (('wait'))名前が変わった
93
+ (3) (('wait'))新しいなにかが増えた
94
+
95
+ = ふつうのC++
96
+
97
+ * (({my_bool}))→(({bool}))
98
+ * 必要なヘッダーだけ(({#include}))
99
+ * (({HASH}))→(({std::unordered_map}))
100
+ * (({std::string}))を使える!
101
+ * (({auto}))を使える!
102
+
103
+ = 名前が変わった
104
+
105
+ * 型:(({st_select_lex}))→(({SELECT_LEX}))
106
+ * API:
107
+ * (({order->direction == ORDER_ASC}))
108
+ * (({order->direction == ORDER::ORDER_ASC}))
109
+ * (({order->asc}))
110
+
111
+ = 対応方針
112
+
113
+ * ((*上位*))互換APIを用意して使う
114
+ * 使わない引数は単に無視
115
+ * コード中で(({#if}))しない
116
+ * メンテナンスできないコードの\n
117
+ できあがり!😇
118
+
119
+ = 互換型
120
+
121
+ # coderay cpp
122
+ #if MYSQL_VERSION_ID >= 80011 && !defined(MRN_MARIADB_P)
123
+ class SELECT_LEX;
124
+ typedef SELECT_LEX mrn_select_lex;
125
+ #else
126
+ typedef st_select_lex mrn_select_lex;
127
+ #endif
128
+
129
+ // mrn_select_lex *select_lex = table_list->select_lex;
130
+
131
+ = 互換API
132
+
133
+ # coderay cpp
134
+
135
+ #if MYSQL_VERSION_ID >= 80011
136
+ # define MRN_ORDER_IS_ASC(order) \
137
+ ((order)->direction == ORDER_ASC)
138
+ #elif MYSQL_VERSION_ID >= 50603
139
+ # define MRN_ORDER_IS_ASC(order) \
140
+ ((order)->direction == ORDER::ORDER_ASC)
141
+ #else
142
+ # define MRN_ORDER_IS_ASC(order) ((order)->asc)
143
+ #endif
144
+
145
+ // if (MRN_ORDER_IS_ASC(order)) {...}
146
+
147
+ = 新しいなにかが増えた
148
+
149
+ * (({dd::*}))が増えた
150
+ * (('wait'))data dictionaryだって
151
+ * (('wait'))テーブル定義の取得方法が変わった
152
+ * (('wait'))(({handler}))にメンバー関数追加
153
+ * 実装して対応しないといけない
154
+
155
+ = 対応方針
156
+
157
+ 説明が面倒に\n
158
+ なってきたので\n
159
+ 省略
160
+
161
+ = 新機能対応
162
+
163
+ * 新COLLATION対応
164
+ * (({utf8mb4_0900_ai_ci}))
165
+ * (({utf8mb4_0900_as_ci}))
166
+ * (({utf8mb4_0900_as_cs}))
167
+ * (({utf8mb4_ja_0900_as_cs}))
168
+ * (({utf8mb4_ja_0900_as_cs_ks}))
169
+
170
+ = groonga-normalizer-mysql
171
+
172
+ 1.1.4で\n
173
+ 全部対応!
174
+
175
+ = テストデータ
176
+
177
+ # coderay sql
178
+
179
+ CREATE TABLE x (
180
+ a text,
181
+ FULLTEXT INDEX (a)
182
+ ) ENGINE=Mroonga;
183
+ INSERT INTO x VALUES ("はひふへほ");
184
+ INSERT INTO x VALUES ("ばびぶべぼ");
185
+ INSERT INTO x VALUES ("ハヒフヘホ");
186
+ INSERT INTO x VALUES ("バビブベボ");
187
+ INSERT INTO x VALUES ("ハヒフヘホ");
188
+ INSERT INTO x VALUES ("バビブベボ");
189
+
190
+ = 確認方法
191
+
192
+ # coderay sql
193
+ SELECT * FROM x
194
+ WHERE MATCH(a)
195
+ AGAINST('+バビブベボ' IN BOOLEAN MODE);
196
+
197
+ = (({utf8mb4_0900_ai_ci}))
198
+
199
+ # coderay sql
200
+
201
+ ALTER TABLE x MODIFY COLUMN a text
202
+ COLLATE utf8mb4_0900_ai_ci;
203
+ -- +--------------------------------+
204
+ -- | a |
205
+ -- +--------------------------------+
206
+ -- | はひふへほ |
207
+ -- | ばびぶべぼ |
208
+ -- | ハヒフヘホ |
209
+ -- | バビブベボ |
210
+ -- | ハヒフヘホ |
211
+ -- | バビブベボ |
212
+ -- +--------------------------------+
213
+
214
+ = (({utf8mb4_0900_as_cs}))
215
+
216
+ # coderay sql
217
+
218
+ ALTER TABLE x MODIFY COLUMN a text
219
+ COLLATE utf8mb4_0900_as_cs;
220
+ -- +-----------------+
221
+ -- | a |
222
+ -- +-----------------+
223
+ -- | バビブベボ |
224
+ -- +-----------------+
225
+
226
+ = (({utf8mb4_ja_0900_as_cs}))
227
+
228
+ # coderay sql
229
+
230
+ ALTER TABLE x MODIFY COLUMN a text
231
+ COLLATE utf8mb4_ja_0900_as_cs;
232
+ -- +-----------------+
233
+ -- | a |
234
+ -- +-----------------+
235
+ -- | ばびぶべぼ |
236
+ -- | バビブベボ |
237
+ -- +-----------------+
238
+
239
+ = (({utf8mb4_ja_0900_as_cs_ks}))
240
+
241
+ # coderay sql
242
+
243
+ ALTER TABLE x MODIFY COLUMN a text
244
+ COLLATE utf8mb4_ja_0900_as_cs_ks;
245
+ -- +-----------------+
246
+ -- | a |
247
+ -- +-----------------+
248
+ -- | バビブベボ |
249
+ -- +-----------------+
250
+
251
+ = Mroongaの正規化
252
+
253
+ * MySQLとはステージが違う
254
+ * 濁点とかひらがなとかカタカナとか小文字とか絵文字とかそういうステージじゃないから
255
+
256
+ = 使用Unicodeのバージョン
257
+
258
+ * MySQL: 9.0.0
259
+ * Mroonga: 10.0.0
260
+
261
+ (('note:2018-07時点の最新Unicodeバージョン:11.0.0'))
262
+
263
+ = 使い方
264
+
265
+ # coderay sql
266
+
267
+ CREATE TABLE x (
268
+ a text,
269
+ FULLTEXT INDEX (a)
270
+ -- MariaDBだとNORMALIZER='NormalizerNFKC100'と書ける!
271
+ COMMENT='normalizer "NormalizerNFKC100"'
272
+ ) ENGINE=Mroonga;
273
+
274
+ = デフォルト
275
+
276
+ # coderay sql
277
+ AGAINST('+バビブベボ' IN BOOLEAN MODE)
278
+ -- +-----------------+
279
+ -- | a |
280
+ -- +-----------------+
281
+ -- | バビブベボ |
282
+ -- | バビブベボ |
283
+ -- +-----------------+
284
+
285
+ = (({unify_kana}))
286
+
287
+ # coderay sql
288
+ -- COMMENT='normalizer
289
+ -- "NormalizerNFKC100(\'unify_kana\', true)"'
290
+ AGAINST('+バビブベボ' IN BOOLEAN MODE)
291
+ -- +-----------------+
292
+ -- | a |
293
+ -- +-----------------+
294
+ -- | ばびぶべぼ |
295
+ -- | バビブベボ |
296
+ -- | バビブベボ |
297
+ -- +-----------------+
298
+
299
+ = (({unify_voiced_sound_mark}))
300
+
301
+ # coderay sql
302
+ -- COMMENT='normalizer
303
+ -- "NormalizerNFKC100(\'unify_voiced_sound_mark\', true)"'
304
+ AGAINST('+バビブベボ' IN BOOLEAN MODE)
305
+ -- +--------------------------------+
306
+ -- | a |
307
+ -- +--------------------------------+
308
+ -- | ハヒフヘホ |
309
+ -- | バビブベボ |
310
+ -- | ハヒフヘホ |
311
+ -- | バビブベボ |
312
+ -- +--------------------------------+
313
+
314
+ = (({unify_kana_case}))
315
+
316
+ # coderay sql
317
+ INSERT INTO x VALUES ("やゆよ");
318
+ INSERT INTO x VALUES ("ゃゅょ");
319
+ INSERT INTO x VALUES ("ヤユヨ");
320
+ INSERT INTO x VALUES ("ャュョ");
321
+ INSERT INTO x VALUES ("ヤユヨ");
322
+ INSERT INTO x VALUES ("ャュョ");
323
+
324
+ = (({unify_kana_case}))
325
+
326
+ # coderay sql
327
+ -- COMMENT='normalizer
328
+ -- "NormalizerNFKC100(\'unify_kana_case\', true)"'
329
+ AGAINST('+ヤユヨ' IN BOOLEAN MODE)
330
+ -- +-----------+
331
+ -- | a |
332
+ -- +-----------+
333
+ -- | ヤユヨ |
334
+ -- | ャュョ |
335
+ -- | ヤユヨ |
336
+ -- | ャュョ |
337
+ -- +-----------+
338
+
339
+ = (({unify_hyphen}))
340
+
341
+ * ハイフンっぽい文字を
342
+ * -˗֊‐‑‒–⁃⁻₋−
343
+ * ハイフンへ
344
+ * -(U+002D)
345
+ * ユースケース:電話番号検索
346
+
347
+ = (({unify_prolonged_sound_mark}))
348
+
349
+ * 長音記号っぽい文字を
350
+ * ー—―─━ー
351
+ * 長音記号へ
352
+ * ー(U+30FC)
353
+ * ユースケース:電話番号検索
354
+
355
+ = (({unify_hyphen_and_}))\n(({prolonged_sound_mark}))
356
+
357
+ * ハイフンっぽい文字と
358
+ * -˗֊‐‑‒–⁃⁻₋−
359
+ * 長音記号っぽい文字を
360
+ * ー—―─━ー
361
+ * ハイフンへ
362
+ * -(U+002D)
363
+
364
+ = (({unify_middle_dot}))
365
+
366
+ * 中点っぽい文字を
367
+ * ·ᐧ•∙⋅⸱・・
368
+ * 中点へ
369
+ * ·(U+00B7)
370
+ * ユースケース:外来語検索
371
+
372
+ = (({unify_katakana_v_sounds}))
373
+
374
+ * ヴァヴィヴヴェヴォを
375
+ * バビブベボへ
376
+ * ユースケース:
377
+ * 外来語検索(ワイン名)
378
+
379
+ = (({unify_katakana_bu_sound}))
380
+
381
+ * ヴァヴィヴヴェヴォを
382
+ * ブへ
383
+ * ユースケース:
384
+ * 外来語検索(ワイン名)
385
+
386
+ = オプションは組み合わせ可能
387
+
388
+ # coderay sql
389
+ -- ワイン名検索用
390
+ -- COMMENT='normalizer
391
+ -- "NormalizerNFKC100(
392
+ -- \'unify_middle_dot\', true,
393
+ -- \'unify_katakana_bu_sound\', true)"'
394
+
395
+ = トークナイザー
396
+
397
+ * MySQLとはステージが違う
398
+ * ゆるく検索するモード
399
+ * 電話番号・ワイン名検索に便利
400
+
401
+ = ゆるく検索
402
+
403
+ * (({loose_symbol}))
404
+ * 記号の有無に関係なくマッチ
405
+ * (({loose_blank}))
406
+ * 空白文字の有無に関係なくマッチ
407
+
408
+ = 書き方
409
+
410
+ # coderay sql
411
+ -- MariaDBだと↓と書ける!
412
+ -- TOKENIZER='TokenNgram("loose_symbol", true)'
413
+ -- COMMENT='tokenizer
414
+ -- "TokenNgram(\'loose_symbol\', true)"'
415
+
416
+ = 電話番号検索例
417
+
418
+ # coderay sql
419
+ INSERT INTO x VALUES ('(123)4567-8901');
420
+ INSERT INTO x VALUES ('123-4567-8901');
421
+ INSERT INTO x VALUES ('12345678901');
422
+ INSERT INTO x VALUES ('(123)4567−8901');
423
+ INSERT INTO x VALUES ('123 4567 8901');
424
+
425
+ = 電話番号検索例
426
+
427
+ # coderay sql
428
+ -- NormalizerNFKC100('unify_hyphen_and_prolonged_sound_mark', true)
429
+ -- TokenNgram('loose_symbol', true,
430
+ -- 'loose_blank', true)
431
+ AGAINST('+1234567ー8901' IN BOOLEAN MODE)
432
+ -- +--------------------------------------------+
433
+ -- | a |
434
+ -- +--------------------------------------------+
435
+ -- | (123)4567-8901 |
436
+ -- | 123-4567-8901 |
437
+ -- | 12345678901 |
438
+ -- | (123)4567−8901 |
439
+ -- | 123 4567 8901 |
440
+ -- +--------------------------------------------+
441
+
442
+ = ワイン名検索例
443
+
444
+ # coderay sql
445
+ INSERT INTO x VALUES ('セーヴェル エ メーヌ');
446
+ INSERT INTO x VALUES ('セブルエメーヌ');
447
+ INSERT INTO x VALUES ('セーブル・エ・メーヌ');
448
+ INSERT INTO x VALUES ('セーヴル エメーヌ');
449
+
450
+ = ワイン名検索例
451
+
452
+ # coderay sql
453
+ -- NormalizerNFKC100('unify_middle_dot', true,
454
+ -- 'unify_hyphen_and_prolonged_sound_mark', true,
455
+ -- 'unify_katakana_bu_sound', true)
456
+ -- TokenNgram('loose_symbol', true,
457
+ -- 'loose_blank', true)
458
+ AGAINST('+セーヴェルエメーヌ' IN BOOLEAN MODE)
459
+ -- +--------------------------------+
460
+ -- | a |
461
+ -- +--------------------------------+
462
+ -- | セーヴェル エ メーヌ |
463
+ -- | セブルエメーヌ |
464
+ -- | セーブル・エ・メーヌ |
465
+ -- | セーヴル エメーヌ |
466
+ -- +--------------------------------+
467
+
468
+ = テストがパスしない原因
469
+
470
+ * そもそも動かない
471
+ * 動くけどクラッシュする
472
+ * 動くけど期待通りじゃない
473
+ * 動くし期待通りだけど\n
474
+ 期待通りじゃない(?)
475
+
476
+ = そもそも動かない例
477
+
478
+ * (({mysql-test/include/*}))が減った
479
+ * (({have_innodb.inc})):InnoDB必須だから
480
+ * (({not_embedded.inc})):\n
481
+ libmysqldを辞めたから
482
+ * 互換(({.inc}))を用意
483
+
484
+ = 動くけどクラッシュする例
485
+
486
+ * JSON型のカラムの更新
487
+ * ラッパーモード
488
+ * 使っている人いる?
489
+ * 削除していい?
490
+
491
+ = 動くけど期待通りじゃない例
492
+
493
+ * (({FOREIGN KEY}))の制約チェック
494
+ * (({dd::*}))からうまく主キー情報を\n
495
+ 取得できていない
496
+
497
+ = 動くし期待通りだけど\n期待通りじゃない例
498
+
499
+ * デフォルト値の変更でこれまでと期待結果が変わる
500
+ * 例:COLLATIONの変更
501
+ * (({SHOW CREATE TABLE}))の結果が変わる
502
+ * テスト方法・結果の変更で対応
503
+ * 例:非デフォルトCOLLATIONを使う
504
+ * ただただ面倒
505
+
506
+ = テストがまだパスしていない要因
507
+
508
+ * テスト実行が遅くなった
509
+ * JSONのやつがなんで動かなくなったかわからん
510
+ * (({dd::*}))の使い方がわからん
511
+
512
+ = テスト実行が遅い
513
+
514
+ * mysql-test-runが遅くなった
515
+ * テスト実行開始まで30秒くらい
516
+ * メモリー3GB食うようになった
517
+ * Mroongaのテストは約770個
518
+ * gdbの起動が遅くなった
519
+ * mysqldのシンボル読込に15秒くらい
520
+
521
+ = テストがパスするための支援方法
522
+
523
+ * クリアコードに開発案件を発注
524
+ * 仕事の時間で開発できる!
525
+
526
+ = 次回リリース
527
+
528
+ * 8月か9月の肉の日かなぁ
529
+ * db tech showcase Tokyo 2018の前にリリースできるといいな
@@ -0,0 +1,2 @@
1
+ @groonga_product = "mroonga"
2
+ include_theme("groonga")
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-kou-myna-201807
3
+ version: !ruby/object:Gem::Version
4
+ version: 2018.7.23.0
5
+ platform: ruby
6
+ authors:
7
+ - 須藤功平
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-07-23 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: rabbit-theme-groonga
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: MySQL 8でMroongaを使うとこんなにうれしい!
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
+ - images/appveyor.png
53
+ - images/travis-ci.png
54
+ - mysql8-and-mroonga.rab
55
+ - pdf/myna-201807-mysql8-and-mroonga.pdf
56
+ - theme.rb
57
+ homepage: http://slide.rabbit-shocker.org/authors/kou/myna-201807/
58
+ licenses:
59
+ - CC-BY-SA-4.0
60
+ metadata: {}
61
+ post_install_message:
62
+ rdoc_options: []
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ requirements: []
76
+ rubyforge_project:
77
+ rubygems_version: 3.0.0.beta1
78
+ signing_key:
79
+ specification_version: 4
80
+ summary: MySQL 8でMroonga
81
+ test_files: []