全文検索エンジンnGroongaへのnmrubyの組み込み¶ ↑
: author
須藤功平
: institution
Groongaプロジェクト
: content-source
第7回フクオカRuby大賞
: date
2015-01-23
: allotted-time
10m
: theme
.
説明すること¶ ↑
(1) 特徴 (2) Rubyを適用した箇所 (3) Rubyを活用したことによる\n 効果、社会に及ぼす影響
(1) 特徴¶ ↑
mrubyの使い方がn 少し違う
使い方の分類¶ ↑
# RT 主体\n対象者, mruby, C ユーザー向け, (('1')), (('2')) 開発者\n向け, (('3')), (('4'))
分類の補足¶ ↑
* 主体 * メインの処理を実装する言語 * (('note:あるいは')) * プログラムのエントリーポイントを実装する言語 * 対象者 * Rubyを書く人はだれか
よくある使い方¶ ↑
# RT 主体\n対象者, mruby, C ユーザー向け, ((*1*)), ((*2*)) 開発者\n向け, ((*3*)), (('4'))
Groongaの使い方¶ ↑
# RT 主体\n対象者, mruby, C ユーザー向け, (('1')), (('2')) 開発者\n向け, (('3')), ((*4*))
よくある使い方(1)¶ ↑
* ユーザー向け・mruby主体\n (('note:ユーザーがRubyを書く・mrubyでメインの処理を実装')) * 拡張性が高いアプリ * PCで動かすならCRubyでもよい\n (('note:CRuby + バインディング')) * 単体で配布可能なバイナリーを\n 作れることが便利
よくある使い方(2)¶ ↑
* ユーザー向け・C主体\n (('note:ユーザーがRubyを書く・Cでメインの処理を実装')) * プラグイン・設定 * C側がマルチスレッドや\n マルチプロセスでも組み込みやすい * CRubyだと難しい・面倒\n (('note:シグナル・RUBY_INIT_STACK…'))
よくある使い方(3)¶ ↑
* 開発者向け・mruby主体\n (('note:開発者がRubyを書く・mrubyでメインの処理を実装')) * 組み込み環境向けアプリケーション * 消費リソースが少なくてうれしい * 開発速度があがる * CRuby感覚で使うと機能が少なくてツライ
Groongaの使い方¶ ↑
# RT 主体\n対象者, mruby, C ユーザー向け, (('1')), (('2')) 開発者\n向け, (('3')), ((*4*))
Groongaの使い方¶ ↑
* 開発者向け・C主体\n (('note:開発者がRubyを書く・Cでメインの処理を実装')) * アプリ内のコア機能の一部を実装 * 開発速度があがる * mruby対応がそこそこ大変\n (('note:バインディングの開発・ビルドシステムへの統合・'))\n (('note:テストの仕組み…'))
開発者向け・C主体の使い方¶ ↑
* 使い所は難しい * 仕組み作りを乗り越えられれば有用 * 仕組みできる→((*開発速度はあがる*)) * 難易度も高い * プロジェクト依存部分が大きい * (('note:Groongaの事例から一般化できるといいなぁ'))
(2) Rubyを適用した箇所¶ ↑
(1) 特徴 (2) ((*Rubyを適用した箇所*)) (3) Rubyを活用したことによる\n 効果、社会に及ぼす影響
コア機能の実装¶ ↑
* クエリーオプティマイザー * 予定:式のJIT化
クエリーオプティマイザー¶ ↑
# image # src = images/query-optimizer.svg # relative_width = 100
例¶ ↑
# image # src = images/query-optimizer-example.svg # relative_width = 100
mrubyは割にあうか¶ ↑
* 最適化→10倍以上高速化も可 * C→mrubyの速度低下は影響小 * C→mrubyで開発速度向上 * 課題:GDBが使えない * →ppをmrubyに移植してなんとか…
予定:式のJIT化¶ ↑
# image # src = images/jit-evaluator.svg # relative_width = 100
(3) 影響¶ ↑
(1) 特徴 (2) Rubyを適用した箇所 (3) ((*Rubyを活用したことによる*))\n ((*効果、社会に及ぼす影響*))
影響(1)¶ ↑
* 「コア機能をRubyで実装」\n という使い方の実例を示した * フリーソフトウェアなので\n 他のプロダクトは参考にできる * 仕組み作りをできれば割にあう * →「技術支援」という仕事をしたい
影響(2)¶ ↑
* mrubyがよくなる * 開発中に見つけた問題は\n 直してパッチを送っている
まとめ¶ ↑
(1) 特徴 * 類をみないmrubyの使い方 (2) Rubyを適用した箇所 * クエリーオプティマイザー (3) Rubyを活用したことによる\n 効果、社会に及ぼす影響 * 参考にできる・mrubyがよくなる