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