Groongaの歩き方

## はじめに

Groongaを使ってみたいけど、どうやって始めたらいいのかわからないという方向けに、Groongaを始めるときに知っておくと便利な情報をまとめました。

次のような内容です。

* 特徴
* Groonga族
* 情報の入手方法
* イベント（勉強会）
* Groonga族の選び方
* 学習方法

## 特徴

Groongaは、オープンソースの全文検索エンジン [^1] です。以下のような特徴があります。

[^1]: そもそも全文検索って何？という方は、過去に開催された[Groongaで学ぶ全文検索](https://groonga.doorkeeper.jp/events/48368)というイベントで参加者がまとめたブログ記事（下にスクロールすると出てきます）を読んでみると参考になるかもしれません。

>
1. 即時更新
1. 安定した高い検索性能
1. 日本語特化の検索機能
1. 他システムと連携
1. 定期リリース

[Groonga Advent Calendar 2014 - Qiita](http://qiita.com/advent-calendar/2014/groonga)に[Groongaの特徴 - Qiita](http://qiita.com/groonga/items/98b526802a6e9a0d44ae)という記事があるので、詳細はそちらをご覧ください。

## Groonga族

特徴にもあった通り、Groongaは簡単に他のシステムと連携することができます。連携するためのソフトウェアを含めて、「Groonga族」と呼んでいます。代表的なものは以下の4つです。

* [Groonga](http://groonga.org/ja/): Groonga本体
* [Mroonga](http://mroonga.org/ja/): MySQLのストレージエンジン
* [PGroonga](https://pgroonga.github.io/ja/): PostgreSQLの拡張機能
* [Rroonga](http://ranguba.org/ja/#about-rroonga): Rubyバインディング

他にも、各言語向けのHTTPクライアントなど、いろいろなプロジェクトがあります。プロジェクトの一覧は[Groonga - 関連プロジェクト](http://groonga.org/ja/related-projects.html)にあります。

## 情報の入手方法

Groonga関連の情報は、メーリングリストやブログ、Twitterなどで発信されています。代表的なものは以下の通りです。

* メーリングリスト
  * [groonga-dev](http://lists.osdn.me/mailman/listinfo/groonga-dev)
* ブログ
  * [Groonga、PGroonga、イベント情報など（Mroonga関連以外）](http://groonga.org/ja/blog/)
  * [Mroonga関連](http://mroonga.org/ja/blog/)
* Twitter
  * [@groonga](https://twitter.com/groonga)
* Facebook
  * [Groonga、PGroonga、イベント情報など（Mroonga関連以外）](https://ja-jp.facebook.com/groonga/)
  * [Mroonga関連](https://ja-jp.facebook.com/mroonga/)

リリースアナウンスなどは上記すべてで発信されるため、少なくとも自分の使い慣れているサービスのものを1つウォッチしておくとよいでしょう。

## イベント（勉強会）

数名規模から百数十名規模まで、様々なイベントが開催されています。イベントの管理には[Doorkeeper](https://groonga.doorkeeper.jp/)を利用しているので、メンバー登録しておくとイベント公開時に通知を受け取ることができます。

こんなイベントをやってほしい、こんな発表が聞きたいといった要望があれば、メーリングリストなどで提案してみると実現するかもしれません。

## Groonga族の選び方

どのGroonga族を使ったらよいのかわからないという方のために、簡単な目安を用意しました。

* コマンドラインで使いたい -> [Groonga](http://groonga.org/ja/)
* HTTP経由で使いたい -> [Groonga](http://groonga.org/ja/) （Groonga HTTP Server、groonga-httpd）＋[各言語向けクライアント](http://groonga.org/ja/related-projects.html)
  * 参考: [5. サーバー — Groonga v6.1.1ドキュメント](http://groonga.org/ja/docs/server.html)
* MySQLで使いたい -> [Mroonga](http://mroonga.org/ja/)
* PostgreSQLで使いたい -> [PGroonga](https://pgroonga.github.io/ja/)
* Rubyで使いたい -> [Rroonga](http://ranguba.org/ja/#about-rroonga)
* RDBMSでデータを管理したい -> [Mroonga](http://mroonga.org/ja/)、[PGroonga](https://pgroonga.github.io/ja/)
* ローカルで手軽に使いたい（RDBMSの運用は面倒） -> [Groonga](http://groonga.org/ja/)、[Rroonga](http://ranguba.org/ja/#about-rroonga)
* よくわからないけどとりあえず使ってみたい -> [Groonga](http://groonga.org/ja/)

ウェブサイトの利用例にはどのGroonga族を使っているかも記載されているので、こちらも参考にしてみてください。

* [Groonga - 利用者のみなさん](http://groonga.org/ja/users/)
* [Mroonga - 利用者のみなさん](http://mroonga.org/ja/users/)

## 学習方法

まずは手元のPCにGroonga（またはGroonga族のどれか）をインストールして、チュートリアルを実際に動かしながらやってみることをおすすめします（主なGroonga族には公式のチュートリアルが用意されています）。インストール手順などは各ウェブサイトを参照してください。

* 主なGroonga族のウェブサイト
  * Groonga: http://groonga.org/ja/
  * Mroonga: http://mroonga.org/ja/
  * PGroonga: https://pgroonga.github.io/ja/
  * Rroonga: http://ranguba.org/ja/#about-rroonga

詳しい使い方を知りたいときは、リファレンスマニュアルやコードを読むとよいでしょう（コードはGitHubで公開されています）。

* 主なGroonga族のGitHubリポジトリ
  * Groonga: https://github.com/groonga/groonga
  * Mroonga: https://github.com/mroonga/mroonga
  * PGroonga: https://github.com/pgroonga/pgroonga
  * Rroonga: https://github.com/ranguba/rroonga

詰まったら、コミュニティ（[メーリングリスト](http://lists.osdn.me/mailman/listinfo/groonga-dev)や[GitHub Issues](https://github.com/groonga/groonga/issues)、[Gitter](https://gitter.im/groonga/ja)など）で質問すると開発者やユーザーが答えてくれるので活用してください。

## おわりに

[Groonga Advent Calendar 2016](http://qiita.com/advent-calendar/2016/groonga)の最初の記事として、Groongaの始め方をまとめました。Groongaは日本語のコミュニティが充実しているので、困ったら気軽にコミュニティで聞いてみてください。