SlideShare a Scribd company logo
1 of 55
Download to read offline
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
全文検索で
Redmineを
さらに活用!
須藤功平 株式会社クリアコード
Redmine大阪 第17回勉強会
2017-08-26
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
よく活用されたRedmine
情報の宝庫
問題解決の経緯
Wikiに整理したノウハウ
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
さらに活用するために
必要なときに
必要な情報に
素早くアクセスしたい!
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
活用方法:検索!
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
活用の壁
よく活用されたRedmine
大量の情報(ただし玉石混合)
さらに活用するための課題
大量→必要な情報を見つけにくい
大量→探す時間が増える
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
課題例1:検索ノイズが多い
これ以外全部ノイズ
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
課題例2:検索が遅い
本当に大量だとね!
↓これくらいだと遅くない
チケット数:4049
コメント数:41264
Wikiページ数:1081
1秒以内に返ってくる
キャッシュが効く:0.1sくらい
キャッシュが効かない:0.7sくらい
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
解決策
Groongaで
Redmineを
高速・高精度
全文検索
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
解決例1:検索ノイズがない
全部それっぽい!
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
検索ノイズ?
上位N件でがっかりする?
がっかり→ノイズ多い
ユーザーは上位N件しか確認しない
Groongaはスコアを調整してソート
件数は関係ない
実はこの例ではヒット件数は同じ
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
解決例2:検索が速い
↓これくらいだと誤差
チケット数:4049
コメント数:41264
Wikiページ数:1081
参考:
既存(キャッシュあり)と
Groonga(キャッシュなし)が
同じくらい
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
200万チケットのケース
https://twitter.com/akahane92/status/733832496945594368
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
ここまでのまとめ
Redmineをさらに活用したい!
素早く必要な情報にアクセス!
検索をがんばらないと!
Groongaで全文検索!
検索ノイズが少ない!
速い!
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
ここからの話
導入したくなる
情報を紹介
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
インストール:RDBMS
対応RDBMS
MySQLもPostgreSQLも!
RDBMSにGroonga対応
プラグインをインストール
プラグイン:別途サービス管理不要→運用コスト増加な
し
MySQL:Mroonga
PostgreSQL:PGroonga
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
インストール:Mroonga
http://mroonga.org/ja/docs/install.html
パッケージで簡単インストール
対応プラットフォーム
Debian GNU/Linux, Ubuntu
CentOS Fedora
macOS
Windows
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
インストール:PGroonga
https://pgroonga.github.io/ja/install/
パッケージで簡単インストール
対応プラットフォーム
Debian GNU/Linux, Ubuntu
CentOS Fedora
macOS
Windows
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
インストール:プラグイン
% cd redmine
% git clone 
https://github.com/okkez/redmine_full_text_search.git 
plugins/full_text_search
% bin/rake redmine:plugins RAILS_ENV=production
再起動で完了!
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
高度な検索1:AND/OR/NOT
キーワード単位でのAND/OR/NOT
従来:AND/ORのみ
従来:キーワード全体で切り替え
例:
(Groonga OR Mroonga) -PostgreSQL
GroongaまたはMroongaを含むが
PostgreSQLは含まない
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
高度な検索2
キーワード単位の優先度
重要語のスコアを上げ下げ
例:
Groonga (>MySQL OR <PostgreSQL)
「GroongaとMySQL」または
「GroongaとPostgresSQL」を含む
MySQLの方がPostgreSQLより重要
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
高度な検索2
キーワード単位の優先度
ノイズ語のスコアを下げる
例:
Groonga ~MySQL
Groongaを含む
MySQLを含んでいてもヒットする
MySQLを含むとスコアが下がる
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
高度な検索3:並び順の変更
ソート対象:スコア・更新時刻
従来:更新時刻のみ
ソート順:昇順・降順
従来:降順のみ
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
並び順の変更UI
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
ここまでのまとめ
簡単にインストールできる
運用も楽
AND/OR/NOTを使える
絞り込みに便利
並び順をカスタマイズできる
スコアと更新時刻で十分
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
2017年5月以降の話
redmine.tokyo 第12回勉強会
2017年5月
ノイズが少なくて高速
その後
高速化
類似issue検索対応
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
高速化
旧
LIKE検索をGroongaに置き換え
他の条件はそのまま
新
すべてGroongaで検索
高速・柔軟・高度な検索をサポート
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
データの扱い
旧
正規化してデータを保存
検索時に複数回のSELECT
新
1つのテーブルにデータを保存
1回のSELECTで検索(速い)
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
柔軟
ドリルダウンで対象を分別
チケットn件・Wikiページn件とか
標準でもあるやつ
ハイライト・スニペット
標準よりもいい感じ
類似文書検索
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
類似文書検索
活用例
類似issue検索
実装着手
類似Wiki検索
未実装
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
類似issue検索
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
類似issue:ユースケース
新しい問題が発生!
あれ?どこかで見たような…
プラグイン:
「このissue、似ていませんか?」
→問題の早期解決!
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
類似issue検索:現実装
issue閲覧時
自動で類似issueを提示
Groonga内のデータを活用
テキストデータで類似文書検索
精度
まぁまぁ
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
ここからの話
今後の野望
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
類似issue検索精度向上
メタデータを活用
手動設定の関連issue情報使用
属性情報使用
カテゴリとかトラッカーとか
同一プロジェクトに限定する
Wikiも対象に加える
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
類似issue検索精度向上
機械学習技術を活用
字面でなく意味で類似文書検索
例:メールのthreadとプログラムの
threadは違う
例:MroongaでMySQLも類似度向上
回答の自動生成
RNNを用いた機械翻訳とか
類似issueの結論を探さなくてよい
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
データ活用に向けて
GroongaにPython組込
Rubyでデータ処理
Red Data Tools
Apache Arrow
次世代データ交換フォーマット
コミッターになった!
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
類似issue
共同開発組織募集
精度向上にはデータが不可欠
データを持っていそうな組織
大量ユーザー・長期間運用組織
マネージドサービス提供組織
Redmine内データを活用したい
組織はぜひ!
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
添付ファイル内全文検索
現状:ファイル名と説明
テキスト抽出できれば検索可能
テキスト抽出ツール例:ChupaText
Groongaプロジェクトのテキスト抽出ツール
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
添付ファイル内全文検索
実装案
テキスト抽出部分をプラグイン
できるようにすればRedmine本
体に入れられるのでは!?
ChupaTextよりApache Tikaを使いた
い人もいそう
検索はLIKEでよい
Groongaプラグインを入れたら高速になる、でよい
だれかチャレンジしない?
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
入力補完
検索ボックス
入力に応じてキーワードを随時提示
↑ヒットするもののみ
各種入力欄(タイトルなど)
入力に応じて既存内容を随時提示
ローマ字でインクリメンタルサーチ
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
入力補完:ユースケース
検索ボックス
自然と適切な検索に誘導!
例:typoを防ぐ・表記揺れを吸収
各種入力欄
自然と表記を統一!
→検索しやすい・理解しやすい
例:typoを防ぐ・表記揺れを吸収
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
入力補完:実装
Groonga内のデータを活用
どのくらいヒットするキーワード?
ログも活用:検索頻度は?
メタデータも活用:
プロジェクト・トラッカー毎に
文脈をわける
開発協力者を募集
実装・データ提供・発注など
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
同義語展開
表記揺れを吸収
例:「打ち合わせ」・「打合せ」
吸収:「打ち合わせ OR 打合せ」
同義語は管理が大変!
文脈で異なる!増減する!
同義語管理を支援
例:同義語候補を自動生成
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
同義語展開:ユースケース
検索ボックス
欲しい情報にたどり着ける!
表記揺れによる未発見を解消
同義語管理のコスト削減
Redmine内のデータを
より低コストで有効活用!
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
同義語展開:実装
Groongaの組み込み機能を活用
高速に同義語展開が可能
同義語候補を機械学習
Groonga内のデータを活用
開発協力者を募集
実装・データ提供・発注など
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
スマートナビ(仮)
言わなくても欲しいものを提示
例:駅の近くでスマホを見る
→その駅の時刻表を自動で表示
ポイント:ユーザーは
「駅名 時刻表」で
明示的に検索していない!
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
スマートナビ:ユースケース
.oO(打ち合わせのアジェンダ
をWikiにまとめておこう)
Redmine:ホーム画面に該当Wikiペ
ージのリンクを表示
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
スマートナビ:実装
行動履歴から知識を学習
打ち合わせ前にいつもWikiを更新
内容から事実を収集
Wikiページ内のテキスト
「参加者:○○…」から抽出
開発協力者を募集
実装・データ提供・発注など
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
ここまでのまとめ
このプラグインの現状
Redmineの不便を解消
(マイナスを少しプラスに)
このプラグインの今後
Redmineをさらに有効活用!
(少しプラスをすごくプラスに)
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
ここからの話
Redmineの開発に
参加しよう!
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
開発に参加?
Redmine本体のコードを書く
だけじゃない
バグレポート・テスト・issue対応
ドキュメント作成・宣伝
プラグインを作る
だけじゃない
本体と同様↑のことも大事な開発
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
開発の参加例
Groongaプラグイン開発時の
知見をフィードバック
Defect #21993: サイズ上限が小
Patch #23153: フックを追加
Feature #25198: スコアを表示
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
敷居が高そう?
OSS Gateワークショップへ
参加してみよう
「OSS開発に参加」を経験できる
(Redmineもプラグインの多くもOSS!)
(もちろんこのプラグインもGroongaもOSS!)
https://oss-gate.doorkeeper.jp/
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
添付ファイル内全文検索を
実装したい!
私に相談だ!
全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1
まとめ
Redmineをさらに活用するなら
Groongaプラグインを使おう!
Redmineの開発に参加しよう!
OSS Gateワークショップが役立つ
宣伝:全文検索のことは
クリアコードに相談しよう!

More Related Content

What's hot

Redmineカスタムフィールド表示改善
Redmineカスタムフィールド表示改善Redmineカスタムフィールド表示改善
Redmineカスタムフィールド表示改善Yuuki Nara
 
Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法Hidehisa Matsutani
 
Redmineによるメール対応管理の運用事例
Redmineによるメール対応管理の運用事例Redmineによるメール対応管理の運用事例
Redmineによるメール対応管理の運用事例Go Maeda
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Etsuji Nakai
 
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システム
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システムRedmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システム
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システムGo Maeda
 
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020onozaty
 
挫折しないRedmine
挫折しないRedmine挫折しないRedmine
挫折しないRedmineGo Maeda
 
うちのRedmineの使い方
うちのRedmineの使い方うちのRedmineの使い方
うちのRedmineの使い方Tomohisa Kusukawa
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計Yoshinori Matsunobu
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
ある工場のRedmine画面カスタム【View customize plugin 活用例】
ある工場のRedmine画面カスタム【View customize plugin 活用例】ある工場のRedmine画面カスタム【View customize plugin 活用例】
ある工場のRedmine画面カスタム【View customize plugin 活用例】Kohei Nakamura
 
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」akipii Oga
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法についてYuji Otani
 
View Customize Pluginで出来ること
View Customize Pluginで出来ることView Customize Pluginで出来ること
View Customize Pluginで出来ることonozaty
 
こわくない Git
こわくない Gitこわくない Git
こわくない GitKota Saito
 
RedmineのFAQとアンチパターン集
RedmineのFAQとアンチパターン集RedmineのFAQとアンチパターン集
RedmineのFAQとアンチパターン集akipii Oga
 
View customize pluginを使いこなす
View customize pluginを使いこなすView customize pluginを使いこなす
View customize pluginを使いこなすonozaty
 

What's hot (20)

Redmineカスタムフィールド表示改善
Redmineカスタムフィールド表示改善Redmineカスタムフィールド表示改善
Redmineカスタムフィールド表示改善
 
Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法
 
Redmineによるメール対応管理の運用事例
Redmineによるメール対応管理の運用事例Redmineによるメール対応管理の運用事例
Redmineによるメール対応管理の運用事例
 
Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門Linux女子部 systemd徹底入門
Linux女子部 systemd徹底入門
 
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システム
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システムRedmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システム
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システム
 
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
 
挫折しないRedmine
挫折しないRedmine挫折しないRedmine
挫折しないRedmine
 
うちのRedmineの使い方
うちのRedmineの使い方うちのRedmineの使い方
うちのRedmineの使い方
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計ソーシャルゲームのためのデータベース設計
ソーシャルゲームのためのデータベース設計
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
ある工場のRedmine画面カスタム【View customize plugin 活用例】
ある工場のRedmine画面カスタム【View customize plugin 活用例】ある工場のRedmine画面カスタム【View customize plugin 活用例】
ある工場のRedmine画面カスタム【View customize plugin 活用例】
 
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
 
Redisの特徴と活用方法について
Redisの特徴と活用方法についてRedisの特徴と活用方法について
Redisの特徴と活用方法について
 
View Customize Pluginで出来ること
View Customize Pluginで出来ることView Customize Pluginで出来ること
View Customize Pluginで出来ること
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
RedmineのFAQとアンチパターン集
RedmineのFAQとアンチパターン集RedmineのFAQとアンチパターン集
RedmineのFAQとアンチパターン集
 
View customize pluginを使いこなす
View customize pluginを使いこなすView customize pluginを使いこなす
View customize pluginを使いこなす
 
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。 【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
 

Viewers also liked

[DO05] システムの信頼性を上げるための新しい考え方 SRE ( Site Reliability Engineering ) in Azure, o...
[DO05] システムの信頼性を上げるための新しい考え方 SRE ( Site Reliability Engineering ) in Azure, o...[DO05] システムの信頼性を上げるための新しい考え方 SRE ( Site Reliability Engineering ) in Azure, o...
[DO05] システムの信頼性を上げるための新しい考え方 SRE ( Site Reliability Engineering ) in Azure, o...de:code 2017
 
AWS クックパッドの運用事例
AWS クックパッドの運用事例AWS クックパッドの運用事例
AWS クックパッドの運用事例Satoshi Takada
 
第6回 itil講義資料
第6回 itil講義資料第6回 itil講義資料
第6回 itil講義資料Mugen Fujii
 
仕事に活きる数学講座(第四回:予測力編)
仕事に活きる数学講座(第四回:予測力編)仕事に活きる数学講座(第四回:予測力編)
仕事に活きる数学講座(第四回:予測力編)schoowebcampus
 
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...WebSig24/7
 
Cookpad TechConf 2016 - DWHに必要なこと
Cookpad TechConf 2016 - DWHに必要なことCookpad TechConf 2016 - DWHに必要なこと
Cookpad TechConf 2016 - DWHに必要なことMinero Aoki
 
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜真吾 吉田
 
クラウド運用のベストプラクティスを考える - OpenStack最新情報セミナー(2016年12月)
クラウド運用のベストプラクティスを考える - OpenStack最新情報セミナー(2016年12月)クラウド運用のベストプラクティスを考える - OpenStack最新情報セミナー(2016年12月)
クラウド運用のベストプラクティスを考える - OpenStack最新情報セミナー(2016年12月)VirtualTech Japan Inc.
 
仕事の成果は「聞き方」で9割決まる
仕事の成果は「聞き方」で9割決まる仕事の成果は「聞き方」で9割決まる
仕事の成果は「聞き方」で9割決まるKatsuhito Okada
 
クックパッドの開発プロセス
クックパッドの開発プロセスクックパッドの開発プロセス
クックパッドの開発プロセスHiroyuki Inoue
 
今年のOss業界10大ニュース
今年のOss業界10大ニュース今年のOss業界10大ニュース
今年のOss業界10大ニュースYukio Yoshida
 
オブジェクト指向を学んで図解力、仕事力アップ
オブジェクト指向を学んで図解力、仕事力アップオブジェクト指向を学んで図解力、仕事力アップ
オブジェクト指向を学んで図解力、仕事力アップHaruo Sato
 
日々の気づきをふりかえり、 個人とチームの成長につなげる方法
日々の気づきをふりかえり、 個人とチームの成長につなげる方法日々の気づきをふりかえり、 個人とチームの成長につなげる方法
日々の気づきをふりかえり、 個人とチームの成長につなげる方法株式会社コパイロツト COPILOT Inc.
 
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンスNozomi Ito
 
5分で分かるサイボウズのSRE
5分で分かるサイボウズのSRE5分で分かるサイボウズのSRE
5分で分かるサイボウズのSREuchan_nos
 
Cookpadの料理画像を分類した話
Cookpadの料理画像を分類した話Cookpadの料理画像を分類した話
Cookpadの料理画像を分類した話Shunsuke KITADA
 
hbstudy 74 Site Reliability Engineering
hbstudy 74 Site Reliability Engineeringhbstudy 74 Site Reliability Engineering
hbstudy 74 Site Reliability EngineeringRyuji Tamagawa
 
いまの Office 365 ってこんな感じ?
いまの Office 365 ってこんな感じ?いまの Office 365 ってこんな感じ?
いまの Office 365 ってこんな感じ?Hirofumi Ota
 
ITサービスマネジメントとSRE
ITサービスマネジメントとSREITサービスマネジメントとSRE
ITサービスマネジメントとSRE真吾 吉田
 
技術者の自分が11年間会社を経営して学んだ7つのこと
技術者の自分が11年間会社を経営して学んだ7つのこと技術者の自分が11年間会社を経営して学んだ7つのこと
技術者の自分が11年間会社を経営して学んだ7つのことHaruo Sato
 

Viewers also liked (20)

[DO05] システムの信頼性を上げるための新しい考え方 SRE ( Site Reliability Engineering ) in Azure, o...
[DO05] システムの信頼性を上げるための新しい考え方 SRE ( Site Reliability Engineering ) in Azure, o...[DO05] システムの信頼性を上げるための新しい考え方 SRE ( Site Reliability Engineering ) in Azure, o...
[DO05] システムの信頼性を上げるための新しい考え方 SRE ( Site Reliability Engineering ) in Azure, o...
 
AWS クックパッドの運用事例
AWS クックパッドの運用事例AWS クックパッドの運用事例
AWS クックパッドの運用事例
 
第6回 itil講義資料
第6回 itil講義資料第6回 itil講義資料
第6回 itil講義資料
 
仕事に活きる数学講座(第四回:予測力編)
仕事に活きる数学講座(第四回:予測力編)仕事に活きる数学講座(第四回:予測力編)
仕事に活きる数学講座(第四回:予測力編)
 
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...
手っ取り早くプロジェクトをなんとかしたい人のためのnanapi流ツール活用術~WebSig会議 vol.34「Webディレクター必見!プロジェクトを成功に...
 
Cookpad TechConf 2016 - DWHに必要なこと
Cookpad TechConf 2016 - DWHに必要なことCookpad TechConf 2016 - DWHに必要なこと
Cookpad TechConf 2016 - DWHに必要なこと
 
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜
実務で活かせる AWSアーキテクチャ設計 〜AWS re:Invent 2016アップデート最新版〜
 
クラウド運用のベストプラクティスを考える - OpenStack最新情報セミナー(2016年12月)
クラウド運用のベストプラクティスを考える - OpenStack最新情報セミナー(2016年12月)クラウド運用のベストプラクティスを考える - OpenStack最新情報セミナー(2016年12月)
クラウド運用のベストプラクティスを考える - OpenStack最新情報セミナー(2016年12月)
 
仕事の成果は「聞き方」で9割決まる
仕事の成果は「聞き方」で9割決まる仕事の成果は「聞き方」で9割決まる
仕事の成果は「聞き方」で9割決まる
 
クックパッドの開発プロセス
クックパッドの開発プロセスクックパッドの開発プロセス
クックパッドの開発プロセス
 
今年のOss業界10大ニュース
今年のOss業界10大ニュース今年のOss業界10大ニュース
今年のOss業界10大ニュース
 
オブジェクト指向を学んで図解力、仕事力アップ
オブジェクト指向を学んで図解力、仕事力アップオブジェクト指向を学んで図解力、仕事力アップ
オブジェクト指向を学んで図解力、仕事力アップ
 
日々の気づきをふりかえり、 個人とチームの成長につなげる方法
日々の気づきをふりかえり、 個人とチームの成長につなげる方法日々の気づきをふりかえり、 個人とチームの成長につなげる方法
日々の気づきをふりかえり、 個人とチームの成長につなげる方法
 
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
4時間で学ぶ、効率的な自動テストスクリプトのメンテナンス
 
5分で分かるサイボウズのSRE
5分で分かるサイボウズのSRE5分で分かるサイボウズのSRE
5分で分かるサイボウズのSRE
 
Cookpadの料理画像を分類した話
Cookpadの料理画像を分類した話Cookpadの料理画像を分類した話
Cookpadの料理画像を分類した話
 
hbstudy 74 Site Reliability Engineering
hbstudy 74 Site Reliability Engineeringhbstudy 74 Site Reliability Engineering
hbstudy 74 Site Reliability Engineering
 
いまの Office 365 ってこんな感じ?
いまの Office 365 ってこんな感じ?いまの Office 365 ってこんな感じ?
いまの Office 365 ってこんな感じ?
 
ITサービスマネジメントとSRE
ITサービスマネジメントとSREITサービスマネジメントとSRE
ITサービスマネジメントとSRE
 
技術者の自分が11年間会社を経営して学んだ7つのこと
技術者の自分が11年間会社を経営して学んだ7つのこと技術者の自分が11年間会社を経営して学んだ7つのこと
技術者の自分が11年間会社を経営して学んだ7つのこと
 

More from Kouhei Sutou

RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowRubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowKouhei Sutou
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Kouhei Sutou
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowKouhei Sutou
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアKouhei Sutou
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかKouhei Sutou
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataKouhei Sutou
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像Kouhei Sutou
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataKouhei Sutou
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Kouhei Sutou
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームKouhei Sutou
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムKouhei Sutou
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroongaKouhei Sutou
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Kouhei Sutou
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムKouhei Sutou
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!Kouhei Sutou
 

More from Kouhei Sutou (20)

RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache ArrowRubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
RubyKaigi 2022 - Fast data processing with Ruby and Apache Arrow
 
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
Apache Arrow Flight – ビッグデータ用高速データ転送フレームワーク #dbts2021
 
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache ArrowRubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
RubyKaigi Takeout 2021 - Red Arrow - Ruby and Apache Arrow
 
Rubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェアRubyと仕事と自由なソフトウェア
Rubyと仕事と自由なソフトウェア
 
Apache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのかApache Arrowフォーマットはなぜ速いのか
Apache Arrowフォーマットはなぜ速いのか
 
Apache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory dataApache Arrow 1.0 - A cross-language development platform for in-memory data
Apache Arrow 1.0 - A cross-language development platform for in-memory data
 
Apache Arrow 2019
Apache Arrow 2019Apache Arrow 2019
Apache Arrow 2019
 
Redmine検索の未来像
Redmine検索の未来像Redmine検索の未来像
Redmine検索の未来像
 
Apache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory dataApache Arrow - A cross-language development platform for in-memory data
Apache Arrow - A cross-language development platform for in-memory data
 
Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6Better CSV processing with Ruby 2.6
Better CSV processing with Ruby 2.6
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
Apache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォームApache Arrow - データ処理ツールの次世代プラットフォーム
Apache Arrow - データ処理ツールの次世代プラットフォーム
 
Apache Arrow
Apache ArrowApache Arrow
Apache Arrow
 
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システムMySQL・PostgreSQLだけで作る高速あいまい全文検索システム
MySQL・PostgreSQLだけで作る高速あいまい全文検索システム
 
MySQL 8.0でMroonga
MySQL 8.0でMroongaMySQL 8.0でMroonga
MySQL 8.0でMroonga
 
My way with Ruby
My way with RubyMy way with Ruby
My way with Ruby
 
Red Data Tools
Red Data ToolsRed Data Tools
Red Data Tools
 
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
Mroongaの高速全文検索機能でWordPress内のコンテンツを有効活用!
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システムMariaDBとMroongaで作る全言語対応超高速全文検索システム
MariaDBとMroongaで作る全言語対応超高速全文検索システム
 
PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!PGroonga 2 – Make PostgreSQL rich full text search system backend!
PGroonga 2 – Make PostgreSQL rich full text search system backend!
 

Recently uploaded

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Recently uploaded (9)

新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

全文検索でRedmineをさらに活用!

  • 1. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 全文検索で Redmineを さらに活用! 須藤功平 株式会社クリアコード Redmine大阪 第17回勉強会 2017-08-26
  • 2. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 よく活用されたRedmine 情報の宝庫 問題解決の経緯 Wikiに整理したノウハウ
  • 3. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 さらに活用するために 必要なときに 必要な情報に 素早くアクセスしたい!
  • 4. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 活用方法:検索!
  • 5. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 活用の壁 よく活用されたRedmine 大量の情報(ただし玉石混合) さらに活用するための課題 大量→必要な情報を見つけにくい 大量→探す時間が増える
  • 6. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 課題例1:検索ノイズが多い これ以外全部ノイズ
  • 7. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 課題例2:検索が遅い 本当に大量だとね! ↓これくらいだと遅くない チケット数:4049 コメント数:41264 Wikiページ数:1081 1秒以内に返ってくる キャッシュが効く:0.1sくらい キャッシュが効かない:0.7sくらい
  • 8. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 解決策 Groongaで Redmineを 高速・高精度 全文検索
  • 9. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 解決例1:検索ノイズがない 全部それっぽい!
  • 10. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 検索ノイズ? 上位N件でがっかりする? がっかり→ノイズ多い ユーザーは上位N件しか確認しない Groongaはスコアを調整してソート 件数は関係ない 実はこの例ではヒット件数は同じ
  • 11. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 解決例2:検索が速い ↓これくらいだと誤差 チケット数:4049 コメント数:41264 Wikiページ数:1081 参考: 既存(キャッシュあり)と Groonga(キャッシュなし)が 同じくらい
  • 12. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 200万チケットのケース https://twitter.com/akahane92/status/733832496945594368
  • 13. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 ここまでのまとめ Redmineをさらに活用したい! 素早く必要な情報にアクセス! 検索をがんばらないと! Groongaで全文検索! 検索ノイズが少ない! 速い!
  • 14. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 ここからの話 導入したくなる 情報を紹介
  • 15. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 インストール:RDBMS 対応RDBMS MySQLもPostgreSQLも! RDBMSにGroonga対応 プラグインをインストール プラグイン:別途サービス管理不要→運用コスト増加な し MySQL:Mroonga PostgreSQL:PGroonga
  • 16. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 インストール:Mroonga http://mroonga.org/ja/docs/install.html パッケージで簡単インストール 対応プラットフォーム Debian GNU/Linux, Ubuntu CentOS Fedora macOS Windows
  • 17. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 インストール:PGroonga https://pgroonga.github.io/ja/install/ パッケージで簡単インストール 対応プラットフォーム Debian GNU/Linux, Ubuntu CentOS Fedora macOS Windows
  • 18. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 インストール:プラグイン % cd redmine % git clone https://github.com/okkez/redmine_full_text_search.git plugins/full_text_search % bin/rake redmine:plugins RAILS_ENV=production 再起動で完了!
  • 19. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 高度な検索1:AND/OR/NOT キーワード単位でのAND/OR/NOT 従来:AND/ORのみ 従来:キーワード全体で切り替え 例: (Groonga OR Mroonga) -PostgreSQL GroongaまたはMroongaを含むが PostgreSQLは含まない
  • 20. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 高度な検索2 キーワード単位の優先度 重要語のスコアを上げ下げ 例: Groonga (>MySQL OR <PostgreSQL) 「GroongaとMySQL」または 「GroongaとPostgresSQL」を含む MySQLの方がPostgreSQLより重要
  • 21. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 高度な検索2 キーワード単位の優先度 ノイズ語のスコアを下げる 例: Groonga ~MySQL Groongaを含む MySQLを含んでいてもヒットする MySQLを含むとスコアが下がる
  • 22. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 高度な検索3:並び順の変更 ソート対象:スコア・更新時刻 従来:更新時刻のみ ソート順:昇順・降順 従来:降順のみ
  • 23. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 並び順の変更UI
  • 24. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 ここまでのまとめ 簡単にインストールできる 運用も楽 AND/OR/NOTを使える 絞り込みに便利 並び順をカスタマイズできる スコアと更新時刻で十分
  • 25. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 2017年5月以降の話 redmine.tokyo 第12回勉強会 2017年5月 ノイズが少なくて高速 その後 高速化 類似issue検索対応
  • 26. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 高速化 旧 LIKE検索をGroongaに置き換え 他の条件はそのまま 新 すべてGroongaで検索 高速・柔軟・高度な検索をサポート
  • 27. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 データの扱い 旧 正規化してデータを保存 検索時に複数回のSELECT 新 1つのテーブルにデータを保存 1回のSELECTで検索(速い)
  • 28. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 柔軟 ドリルダウンで対象を分別 チケットn件・Wikiページn件とか 標準でもあるやつ ハイライト・スニペット 標準よりもいい感じ 類似文書検索
  • 29. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 類似文書検索 活用例 類似issue検索 実装着手 類似Wiki検索 未実装
  • 30. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 類似issue検索
  • 31. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 類似issue:ユースケース 新しい問題が発生! あれ?どこかで見たような… プラグイン: 「このissue、似ていませんか?」 →問題の早期解決!
  • 32. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 類似issue検索:現実装 issue閲覧時 自動で類似issueを提示 Groonga内のデータを活用 テキストデータで類似文書検索 精度 まぁまぁ
  • 33. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 ここからの話 今後の野望
  • 34. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 類似issue検索精度向上 メタデータを活用 手動設定の関連issue情報使用 属性情報使用 カテゴリとかトラッカーとか 同一プロジェクトに限定する Wikiも対象に加える
  • 35. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 類似issue検索精度向上 機械学習技術を活用 字面でなく意味で類似文書検索 例:メールのthreadとプログラムの threadは違う 例:MroongaでMySQLも類似度向上 回答の自動生成 RNNを用いた機械翻訳とか 類似issueの結論を探さなくてよい
  • 36. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 データ活用に向けて GroongaにPython組込 Rubyでデータ処理 Red Data Tools Apache Arrow 次世代データ交換フォーマット コミッターになった!
  • 37. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 類似issue 共同開発組織募集 精度向上にはデータが不可欠 データを持っていそうな組織 大量ユーザー・長期間運用組織 マネージドサービス提供組織 Redmine内データを活用したい 組織はぜひ!
  • 38. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 添付ファイル内全文検索 現状:ファイル名と説明 テキスト抽出できれば検索可能 テキスト抽出ツール例:ChupaText Groongaプロジェクトのテキスト抽出ツール
  • 39. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 添付ファイル内全文検索 実装案 テキスト抽出部分をプラグイン できるようにすればRedmine本 体に入れられるのでは!? ChupaTextよりApache Tikaを使いた い人もいそう 検索はLIKEでよい Groongaプラグインを入れたら高速になる、でよい だれかチャレンジしない?
  • 40. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 入力補完 検索ボックス 入力に応じてキーワードを随時提示 ↑ヒットするもののみ 各種入力欄(タイトルなど) 入力に応じて既存内容を随時提示 ローマ字でインクリメンタルサーチ
  • 41. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 入力補完:ユースケース 検索ボックス 自然と適切な検索に誘導! 例:typoを防ぐ・表記揺れを吸収 各種入力欄 自然と表記を統一! →検索しやすい・理解しやすい 例:typoを防ぐ・表記揺れを吸収
  • 42. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 入力補完:実装 Groonga内のデータを活用 どのくらいヒットするキーワード? ログも活用:検索頻度は? メタデータも活用: プロジェクト・トラッカー毎に 文脈をわける 開発協力者を募集 実装・データ提供・発注など
  • 43. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 同義語展開 表記揺れを吸収 例:「打ち合わせ」・「打合せ」 吸収:「打ち合わせ OR 打合せ」 同義語は管理が大変! 文脈で異なる!増減する! 同義語管理を支援 例:同義語候補を自動生成
  • 44. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 同義語展開:ユースケース 検索ボックス 欲しい情報にたどり着ける! 表記揺れによる未発見を解消 同義語管理のコスト削減 Redmine内のデータを より低コストで有効活用!
  • 45. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 同義語展開:実装 Groongaの組み込み機能を活用 高速に同義語展開が可能 同義語候補を機械学習 Groonga内のデータを活用 開発協力者を募集 実装・データ提供・発注など
  • 46. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 スマートナビ(仮) 言わなくても欲しいものを提示 例:駅の近くでスマホを見る →その駅の時刻表を自動で表示 ポイント:ユーザーは 「駅名 時刻表」で 明示的に検索していない!
  • 47. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 スマートナビ:ユースケース .oO(打ち合わせのアジェンダ をWikiにまとめておこう) Redmine:ホーム画面に該当Wikiペ ージのリンクを表示
  • 48. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 スマートナビ:実装 行動履歴から知識を学習 打ち合わせ前にいつもWikiを更新 内容から事実を収集 Wikiページ内のテキスト 「参加者:○○…」から抽出 開発協力者を募集 実装・データ提供・発注など
  • 49. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 ここまでのまとめ このプラグインの現状 Redmineの不便を解消 (マイナスを少しプラスに) このプラグインの今後 Redmineをさらに有効活用! (少しプラスをすごくプラスに)
  • 50. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 ここからの話 Redmineの開発に 参加しよう!
  • 51. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 開発に参加? Redmine本体のコードを書く だけじゃない バグレポート・テスト・issue対応 ドキュメント作成・宣伝 プラグインを作る だけじゃない 本体と同様↑のことも大事な開発
  • 52. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 開発の参加例 Groongaプラグイン開発時の 知見をフィードバック Defect #21993: サイズ上限が小 Patch #23153: フックを追加 Feature #25198: スコアを表示
  • 53. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 敷居が高そう? OSS Gateワークショップへ 参加してみよう 「OSS開発に参加」を経験できる (Redmineもプラグインの多くもOSS!) (もちろんこのプラグインもGroongaもOSS!) https://oss-gate.doorkeeper.jp/
  • 54. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 添付ファイル内全文検索を 実装したい! 私に相談だ!
  • 55. 全文検索で Redmineを さらに活用! Powered by Rabbit 2.2.1 まとめ Redmineをさらに活用するなら Groongaプラグインを使おう! Redmineの開発に参加しよう! OSS Gateワークショップが役立つ 宣伝:全文検索のことは クリアコードに相談しよう!