「全文検索エンジンGroongaを囲む夕べ 4」レポート

11月29日、DeNAの会議室をお借りして、全文検索エンジンGroongaを囲む夕べ 4が開催されました。Groongaは29日を定期的なリリース日としています。いい肉の日となる11月29日に毎年イベントを開催するようにしており、今年で4回目になります。

本稿では、各セッションの模様をレポートしていきます。

第1部:Groonga開発チームから

第1部は、Groonga開発チームからの発表です。

Groonga族 2013(須藤功平さん)

クリアコードの須藤功平さんは、Groonga関連プロジェクトの最新情報を発表しましたスライドはこちら⁠。

まず始めに大事なお知らせとして、今日は「にく」の日なので、Groonga族である、Groonga3.1.0, Mroonga3.1.0, Rroonga3.1.0, Droonga0.7.0を続々とリリースしたことを告知しました。また、Groongaを世界進出させるために、Groongaの頭文字は大文字にした話がありました。

画像

そして、Groonga族の概要を改めて紹介しました。

GroongaはFedoraのオフィシャルパッケージになったこと、mrubyへの対応、Mroonga用の機能拡張をしていることを説明しました。MroongaはWindowsサポートを開始して、さらにMariaDBへのバンドル作業も開始しているとのことです。Rroongaは最新のGroongaに追従させていて、64bit版WindowsのRuby用バイナリも提供しているそうです。新しいGrnxxやDroongaについては概要を示しました。その他、周辺ツールであるgrndump, grntest, groonga-query-log-analyzeへの言及もありました。

セッションの最後では、Mroongaは全文検索だけではなく、カラムストアDBとしても使えることも紹介しました。

※発表では、先頭文字をなぜ大文字にしたかなども説明されていますので、興味のあ る方はUsteramの録画第1部の0分目頃)をご覧ください。

画像

Mroonga 今年の収穫(斯波健徳さん)

スパイラルアームの斯波健徳さんは、Mroongaの今年の成果について発表しましたスライドはこちら⁠。

画像

MySQL互換のノーマライザーがGroongaのプラグインとして提供されていて、Mroonga以外のGroonga族でも利用できます。現在はUTF-8に対応していますが、MySQLすべての文字コードに対応したいと考えてるそうです。

Groongaに直接クエリーを実行できるmroonga_command()や、特別な文字をエスケープするmroonga_escape()というUDF関数を追加したことも紹介しました。また、auto_incrementの値を、テーブルを作るときにも参照し、かつ直近のレコードが削除されてもそのまま保持することに対応したとのことです。

最適化については、Tritonnで使えたWプラグマをサポートし、GROUP BYをインデクスに使って検索できるように対応したことを紹介しました。また、既存のテーブルをFULLTEXT INDEXだけではなく、INDEXの対象となる語彙表として使えるように対応したとのことです。

MroongaはMySQL/MariaDBのプラグインでどちらでも使えます。今後の予定としてMariaDBへのバンドルの作業中だと言います。

最後に、⁠Groongaの機能でまだMroongaで使えないものを使えるようにしていきますので、要望はgroonga-devというMLに投げてください」と述べていました。

発表に興味のある方はUsteramの録画第1部の録画の17分14秒目頃)をご覧ください。

Droongaの紹介(森大二郎さん)

未来検索ブラジルの森大二郎さんは、Droongaについて発表しましたスライドはこちら⁠。

画像

Droongaはリアルタイム分散処理エンジン、分散データストア、分散型全文検索エンジンとして使えます。今日初めてリリースデビューしました。Droongaではストリーム指向、リアルタイム指向、可用性重視、拡張性重視という意図があって設計したと言います。また、入出力をJSONにしたストリーム処理をカスケードして様々な処理ができること、Rubyで書いたPluginによって機能拡張ができることを紹介しました。

これからは、droonga.orgで情報を発信していくそうです。

発表では、内部のモジュール構成など設計方針について説明していますので、興味のある方はUstreamの録画第1部の録画の30分目頃)をご覧ください。

Grnxxの紹介(矢田晋さん)

未来検索ブラジルの矢田晋さんは、Grnxxについて発表しましたスライドはこちら⁠。

画像

Grnxx(ぐるんたす)はGroongaの後継で、名称の由来はGroongaとC++を組み合わせたものだと紹介しました。

開発の経緯は、Groongaよりも「大きなデータを扱えるように」⁠速くデータを検索・更新できるように」⁠小さくデータを格納できるように」するためとのことです。そのため、設計が新しくなっています。

発表では、新設計の利点や解決すべき課題についても説明していますので、興味のある方はUsteramの録画第1部の録画の45分20秒目頃)をご覧ください。

第2部:Groongaと商用利用

第2部はGroongaと商用利用についてです。

SCSKさんのMroongaサポートの紹介(池田さん)

SCSKの池田さんは、SCSKではMroongaの技術サポートを始めたことを発表しました。

SCSKではGroongaの前身であるTritonnの技術サポートをしており、⁠MySQL + Senna」を提供していたそうです。詳しくは会社のサイトを確認してみてくださいと話していました。

興味のある方はUsteramの録画第2部の録画の5分20秒目頃)をご覧ください。

画像

Groongaビジネスパートナー募集(南慎一郎さん)

クリアコードの南慎一郎さんは、Groongaについてのビジネスパートナーを募集していることを発表しましたスライドはこちら⁠。

クリアコードではGroongaのサポートサービスを1年余りやっているけれども、お客様のニーズに応えられないケースが多く、Groongaの普及にはサポート体制の強化が必要であると感じたそうです。そこで、様々な方と連携してGroongaに関連したビジネスを立ち上げ盛り上げていくために、ビジネスパートナーの構想を作っていきたいと述べていました。

興味のある方はUsteramの録画第2部の録画の16分37秒目頃)をご覧ください。

画像

第3部:Groongaユーザーから

第3部では、Groongaユーザーの皆さんによる発表が行われました。

TritonnからMroongaへの移行体験記(吉田健太郎さん)

リブセンスの吉田健太郎さんは、TritonnからMroongaへの移行時の苦労話を紹介しましたスライドはこちら⁠。MySQLで作ったシステムのバージョンアップ方法について、ノウハウを披露していました。Mroongaを使う場合ではなくても参考になりそうです。

興味のある方はUsteramの録画第3部前半の録画の0分目頃)をご覧ください。

画像

Mroonga de fulltextsearch (@yoku0825さん feat. 河野隆志さん)

@yoku0825さんと河野隆志さんは、とあるサービスで使っているTritonnをMroongaへ移行した事例について紹介しましたスライドはこちら⁠。

本題に入る前に、Groonga、MroongaのパッケージングをしているWING☆さんから、3.10に対応したRPMがすでに出ているというCMが入りました。試してみたい人は、wingリポジトリを確認してほしいとのことです。

事例については、トラフィックの増大や移行時にどのように考えたかという話を、@yoku0825さんと河野さんが掛け合う形で説明しました。Apache Solrにしようとも考えたがMroongaにしたこと、問題がなかったわけではないが結果として半年でバグを踏み抜き切ったことを紹介しました。最後に「Tritonnからの移行は、Mroongaが鉄板である」と述べていました。

興味のある方はUsteramの録画第3部前半の録画の13分目頃)をご覧ください。

画像

InnoDB FTSよりMroonga! (一井崇さん)

GREEの一井崇さんは、InnoDB FTSについて紹介しました。

MySQLだけで全文検索できることはとても手軽で良いが、日本語が使えないと言います。現状は単語がスペース区切り前提で、latin文字に特化した実装も一部にあるとのことです。将来はCJK対応の予定はあるらしいが、英語圏の人には理解してもらいにくいだろうと話していました。まとめとして「日本語の全文検索は日本にまかせよう! Mroongaに期待しよう」と述べていました。

興味のある方はUsteramの録画第3部前半の録画の24分10秒目頃)をご覧ください。

画像

Groongaをem-synchronyから使う (瀧内元気さん)

瀧内元気さんは、Groongaをem-synchronyから使ったことについて紹介しましたスライドはこちら⁠。

em-synchronyとは非同期処理を書きやすくするRubyのライブラリです。応答に時間がかかる処理を書く場合、DBがメモリに載りきらない場合、同時コネクションが膨大でスレッドを大量につくりたくない場合などで、ユーザにストレスを与えないように考えて使ってみたとのことです。最後に、現在困ってることについて、開発チームへの公開要望を挙げていました。

興味のある方はUstreamの録画第3部前半の録画の35分目頃と第3部前半続きの録画をご覧ください。

画像

GroongaとMapKit(沖津貴智さん)

DeNAの沖津貴智さんは、iOSのMapKitでGroongaを使ったことについて紹介しましたスライドはこちら⁠。

pekoという日本では出していない、位置情報を使ったアプリを例に説明しました。位置情報に関する主な使用例は、表示しているMapの範囲にいるユーザを検索してMap上に自動的にピンを立てることにあります。その際、自分がいる位置から近い順に検索するということを、Groongaを使って実現していることを取り上げていました。

参考ソースも含む貴重な説明がありましたので、興味のある方はUstreamの録画第3部後半の録画の9分10秒目頃)をご覧ください。

画像

Groonga on スマホ(丸山謙志さん)

丸山謙志さんは、スマートフォンでのオフラインの検索を可能にするために、Groongaをスマートフォン上で動作させてみたことを紹介しましたスライドはこちら⁠。

iOS上で動作させる上での、制約と工夫についての説明が開発中のアプリiMirror(仮)を例に話を進めました。iMirror(仮)は、BlueToothで接続された別のスマホ上の内容を検索することもできるという面白い仕組みも持っていることも取り上げていました。http://www.getmirrors.infoにランディングページがあります。

デモもありますので興味のある方はUstreamの録画第3部後半の録画の21分16秒目頃)をご覧ください。

画像

Milkode2013年の歩み(Rroongaを使ったソースコード検索エンジン)(おんがえしさん)

昨年に続き、おんがえしさんは、Milkodeの2013年の歩みについて紹介しましたスライドはこちら⁠。

Milkodeはソースコードに特化した検索エンジンです。MySQLとかは使っておらず、RubyとRroongaでここまでできるという例になると言います。今年は新しくRroongaの絞り込み検索の機能を使ってみたそうです。Milkodeで、Milkodeのソースを確認してみてくださいと話していました。また、mruby Code Searchも取り上げました。そして、ドリルダウンについても言及があり、⁠Rroonga(Groonga)でドリルダウンは超簡単なので使ってみてほしい。ただ、ドリルダウンしたい要素のカラム種類には気をつけよう」と述べていました。

興味のある方はUstreamの録画第3部後半の録画の33分目頃)をご覧ください。昨年の録画はこちらです。

画像

Groongaを支える取り組みの紹介(林健太郎さん)

クリアコードの林健太郎さんは、Groongaを支える取り組みを紹介しましたスライドはこちら⁠。

@groongaで掲載の告知をしている週刊Groongagihyo.jpで連載した隔週連載Groongaがあります。また、メーリングリストのgroonga-devgroonga-talkを取り上げました。

興味のある方はUstreamの録画第3部後半の録画の42分50秒目頃と第3部後半最後の録画をご覧ください。

画像

GroongaからMroongaへの移行に際して(網岡隆宏さん)

WEICの網岡隆宏さんは、中国語学習のサイトで行った、GroongaからMroongaへの移行について紹介しました。

サイトの規模が増大したため、GroongaからMroongaに移行した時のプログラムの期日をどのように変換するかなどの話がありました。

興味のある方はUstreamの録画第3部後半最後の録画の4分40秒目頃)をご覧ください。

画像

懇親会

イベント後に、同会場で懇親会が行われました。今回は、会場を提供していただいたDeNAさんが懇親会の飲食の費用も出してくださいました。いい肉の日でしたので、肉系の食べものが多かったのが印象的でした。

画像

当日の内容はUstreamで公開されています。レポートを読んで興味を持ちましたら、ぜひUstreamの録画をご覧ください。

Ustreamの録画の詳細

おすすめ記事

記事・ニュース一覧