Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
全文検索エンジン
Groongaへの
mrubyの組み込み
須藤功平 Groongaプロジェクト
第7回フクオカRuby大賞
2015-...
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
説明すること
特徴1.
Rubyを適用した箇所2.
Rubyを活用したことによる
効果、社会に及ぼす影響
3.
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
(1) 特徴
mrubyの使い方が
少し違う
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
使い方の分類
 主体
対象者
mruby C
ユーザー
向け
1 2
開発者
向け
3 4
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
分類の補足
主体
メインの処理を実装する言語
あるいは
プログラムのエントリーポイントを
実装する言語
対象者
Rubyを書く人はだれか
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
よくある使い方
 主体
対象者
mruby C
ユーザー
向け
1 2
開発者
向け
3 4
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Groongaの使い方
 主体
対象者
mruby C
ユーザー
向け
1 2
開発者
向け
3 4
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
よくある使い方(1)
ユーザー向け・mruby主体
ユーザーがRubyを書く・mrubyでメインの処理を実装
拡張性が高いアプリ
PCで...
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
よくある使い方(2)
ユーザー向け・C主体
ユーザーがRubyを書く・Cでメインの処理を実装
プラグイン・設定
C側がマルチスレッドや
...
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
よくある使い方(3)
開発者向け・mruby主体
開発者がRubyを書く・mrubyでメインの処理を実装
組み込み環境向けアプリケーショ...
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Groongaの使い方
 主体
対象者
mruby C
ユーザー
向け
1 2
開発者
向け
3 4
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
Groongaの使い方
開発者向け・C主体
開発者がRubyを書く・Cでメインの処理を実装
アプリ内のコア機能の一部を実装
開発速度があ...
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
開発者向け・C主体の使い方
使い所は難しい
仕組み作りを乗り越えられれば有用
仕組みできる→開発速度はあがる
難易度も高い
プロジェクト...
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
(2) Rubyを適用した箇所
特徴1.
Rubyを適用した箇所2.
Rubyを活用したことによる
効果、社会に及ぼす影響
3.
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
コア機能の実装
クエリーオプティマイザー
予定:式のJIT化
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
クエリーオプティマイザー
クエリー
クエリー
オプティマイザー
最適化
最適化された
クエリー
評価器
全文検索
普通の検索
by Yu...
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
例
最適化
10 <= x && x <= 20
10 <= x <= 20
上限・下限を別に評価してAND
上限・下限を一度に評価
1...
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
mrubyは割にあうか
最適化→10倍以上高速化も可
C→mrubyの速度低下は影響小
C→mrubyで開発速度向上
課題:GDBが使え...
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
予定:式のJIT化
クエリー
JITコンパイラー
コンパイル
クエリー専用
評価器
評価器を
実行
全文検索
普通の検索
by Yuki...
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
(3) 影響
特徴1.
Rubyを適用した箇所2.
Rubyを活用したことによる
効果、社会に及ぼす影響
3.
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
影響(1)
「コア機能をRubyで実装」
という使い方の実例を示した
フリーソフトウェアなので
他のプロダクトは参考にできる
仕組み作り...
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
影響(2)
mrubyがよくなる
開発中に見つけた問題は
直してパッチを送っている
全文検索エンジン Groongaへの mrubyの組み込み Powered by Rabbit 2.1.3
まとめ
特徴
類をみないmrubyの使い方
1.
Rubyを適用した箇所
クエリーオプティマイザー
2.
Rubyを活用したことによる
...
Upcoming SlideShare
Loading in …5
×

第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み

598 views

Published on

第7回フクオカRuby大賞本審査用の資料です。「全文検索エンジンGroongaへのmrubyの組み込み」という応募の説明です。

次の3つの項目を含んでいます。

(1) 特徴を表現するもの
(2) Rubyを適用した箇所
(3) Rubyを活用したことによる効果、社会に及ぼす影響

Published in: Software
  • Be the first to comment

  • Be the first to like this

第7回フクオカRuby大賞本審査資料:全文検索エンジンGroongaへのmrubyの組み込み

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

×