Text
Page: 1
全文検索エンジン Groongaへの mrubyの組み込み 須藤功平 Groongaプロジェクト 第7回フクオカRuby大賞 2015-01-23 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Page: 2
説明すること 1. 特徴 2. Rubyを適用した箇所 3. Rubyを活用したことによる 効果、社会に及ぼす影響 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Page: 3
(1) 特徴 mrubyの使い方が 少し違う 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Page: 4
使い方の分類 主体 対象者 ユーザー 向け 開発者 向け 全文検索エンジン Groongaへの mrubyの組み込み mruby C 12 34 Powered by Rabbit 2.1.3
Page: 5
分類の補足 主体 メインの処理を実装する言語 あるいは プログラムのエントリーポイントを 実装する言語 対象者 Rubyを書く人はだれか 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Page: 6
よくある使い方 主体 対象者 ユーザー 向け 開発者 向け 全文検索エンジン Groongaへの mrubyの組み込み mruby C 12 34 Powered by Rabbit 2.1.3
Page: 7
Groongaの使い方 主体 対象者 ユーザー 向け 開発者 向け 全文検索エンジン Groongaへの mrubyの組み込み mruby C 12 34 Powered by Rabbit 2.1.3
Page: 8
よくある使い方(1) ユーザー向け・mruby主体 ユーザーがRubyを書く・mrubyでメインの処理を実装 拡張性が高いアプリ PCで動かすならCRubyでもよい CRuby + バインディング 単体で配布可能なバイナリーを 作れることが便利 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Page: 9
よくある使い方(2) ユーザー向け・C主体 ユーザーがRubyを書く・Cでメインの処理を実装 プラグイン・設定 C側がマルチスレッドや マルチプロセスでも組み込みやすい CRubyだと難しい・面倒 シグナル・RUBY_INIT_STACK… 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Page: 10
よくある使い方(3) 開発者向け・mruby主体 開発者がRubyを書く・mrubyでメインの処理を実装 組み込み環境向けアプリケーション 消費リソースが少なくてうれしい 開発速度があがる CRuby感覚で使うと機能が少なくて ツライ 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Page: 11
Groongaの使い方 主体 対象者 ユーザー 向け 開発者 向け 全文検索エンジン Groongaへの mrubyの組み込み mruby C 12 34 Powered by Rabbit 2.1.3
Page: 12
Groongaの使い方 開発者向け・C主体 開発者がRubyを書く・Cでメインの処理を実装 アプリ内のコア機能の一部を実装 開発速度があがる mruby対応がそこそこ大変 バインディングの開発・ビルドシステムへの統合・ テストの仕組み… 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Page: 13
開発者向け・C主体の使い方 使い所は難しい 仕組み作りを乗り越えられれば有用 仕組みできる→開発速度はあがる 難易度も高い プロジェクト依存部分が大きい Groongaの事例から一般化できるといいなぁ 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Page: 14
(2) Rubyを適用した箇所 1. 特徴 2. Rubyを適用した箇所 3. Rubyを活用したことによる 効果、社会に及ぼす影響 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Page: 15
コア機能の実装 クエリーオプティマイザー 予定:式のJIT化 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Page: 16
クエリーオプティマイザー クエリー 最適化 最適化された 全文検索 普通の検索 クエリー クエリー オプティマイザー by Yukihiro Matsumoto 評価器 結果セット 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Page: 17
例 10 <= x && x <= 20 10 10 <= x <= 20 20 10 <= x 最適化 10 20 x <= 20 && 上限・下限を一度に評価 上限・下限を別に評価してAND 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Page: 18
mrubyは割にあうか 最適化→10倍以上高速化も可 C→mrubyの速度低下は影響小 C→mrubyで開発速度向上 課題:GDBが使えない →ppをmrubyに移植してなんとか… 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Page: 19
予定:式のJIT化 クエリー コンパイル + LLVM by Yukihiro Matsumoto クエリー専用 評価器 評価器を 実行 JITコンパイラー API 結果セット 全文検索エンジン Groongaへの mrubyの組み込み 全文検索 普通の検索 Powered by Rabbit 2.1.3
Page: 20
(3) 影響 1. 特徴 2. Rubyを適用した箇所 3. Rubyを活用したことによる 効果、社会に及ぼす影響 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Page: 21
影響(1) 「コア機能をRubyで実装」 という使い方の実例を示した フリーソフトウェアなので 他のプロダクトは参考にできる 仕組み作りをできれば割にあう →「技術支援」という仕事をしたい 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Page: 22
影響(2) mrubyがよくなる 開発中に見つけた問題は 直してパッチを送っている 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Page: 23
まとめ 1. 特徴 類をみないmrubyの使い方 2. Rubyを適用した箇所 クエリーオプティマイザー 3. Rubyを活用したことによる 効果、社会に及ぼす影響 参考にできる・mrubyがよくなる 全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3