Kouhei Sutou
kou****@clear*****
2014年 5月 21日 (水) 12:39:29 JST
須藤です。 実は、GroongaにはWebベースの管理画面がついていて、テーブル・ カラムの作成から検索の実行まで一通りの機能を使うことができま す。(知っていました?) http://qiita.com/groonga/items/cf6d83b2b3e2956d6bd8 この管理画面は数年前に作ったものでjQuery UIを使ってHTMLと JavaScriptで実装してあります。いくつか改良したいなぁという思 いもあるのですが、手付かずのまま時間が過ぎているのが現状です。 以下に、現状の管理画面から維持したいことと、改良したいことを あげるので、やりたい!という方がいればぜひお願いします! 維持したいこと: * すべてクライアント側で動作する実装する。 (HTML + CSS + JavaScriptで実装) * 別途管理画面用のWebアプリケーションも必要、ではなく、 Groongaを起動するだけで使える状態がよい。 * Groongaにコマンドを追加するのはアリ。(後述) * jQuery UIにこだわっているわけではない。他のライブラリー に乗り換えることで開発速度の向上などメリットがあるなら 乗り換えはアリ。 * selectを実行して結果を確認できる。 改良したいこと: * select結果のJSONを確認できる。 * Groongaを使ったプログラムを開発するときの助けになると うれしい。Groongaはパフォーマンスのために余計なスペー スなしJSONを返すが、管理画面では見やすさ優先で pretty printされたJSONを表示できるとよい。 * トークナイズ結果を確認できる。 * 当時はtokenizeコマンドがなかったので、トークナイザーで 挙動がどう変わるかを確認するには、データをロードして 検索してみるしかなかったが、今はtokenizeコマンドで結果 を確認できるので、管理画面からそれを使えると確認が捗っ てよい。 * プラグインで追加したトークナイザーやノーマライザーに対応 できる。 * 現在は、「登録されているトークナイザーのリスト」や 「登録されているノーマライザーのリスト」を返すコマンド がないため、JavaScriptないに利用可能なトークナイザーの リストなどが埋め込まれている。そのため、プラグインで追 加したトークナイザーなどを使えない。 * Groonga本体にtokenizer_listやnormalizer_listなどのイン スペクション系のコマンドを追加して、プラグインで追加し たトークナイザーなども使えるようにしたい。 (コマンドを追加するところはCで実装することになる。) * よい見た目とよい使い勝手。 * 具体的に今のここが悪いのでこう変更するべき、みたいなの はないが、漠然ともっとよくなるべきなのでは、という思い がある。 他にも、他のプロダクトの管理画面にはこういう機能があって便利! とかいうのがあれば取り入れるのはアリです!が、なんでもできる けど使い勝手がよくない、というのは避けたいのでバランスを考え る必要があると思っています。 開発を進めると、様々なトレードオフを検討しないといけない場面 に出くわしますが、その指標をいくつか挙げます。 トレードオフの選び方: * リッチな機能よりメンテナンスのしやすさ。 * 100%のことを100の複雑さで実現するより、 60%のことを40の複雑さで実現できるなら後者を選びたい。 作って終わりではないので、メンテナンスしやすい状態を維持したい。 * ポータビリティーより開発しやすさ。 * 古いブラウザーをサポートすることで著しく開発速度が落ち るなら古いブラウザーのサポートを切りたい。 例えば、jQuery 2.xではIE8はサポート対象外ですが、 jQuery 1.xを使っていると開発速度が落ちる、あるいは、 jQuery 2.xを使うと開発速度があがるならIE8のサポートを 切ります。 * 注意: 古いブラウザーのサポートを積極的に切りたいわけで はありません。 * 独自実装より既存のライブラリーを使用。 * ↑とも通じるが、本当に独自実装しなければいけないケース (例えば、Groongaのレスポンスの扱い。これは、Groonga独 自のものなので実装しないといけない。)以外は、できるだ け既存のライブラリーを利用して開発速度をあげたい。 * 既存のライブラリーに問題がある場合は、できるなら、 既存のライブラリーを直して使いたい。そうした方が他にも 嬉しい人がいるだろうから。 * メンテナンスされていないライブラリーはできるだけ使わない。 開発の進め方ですが、今は、index.htmlというHTMLで管理画面を実 現しているのでそれとは別の名前のnew.htmlとかいうHTMLでリニュー アル版の管理画面を実現するのがいいんじゃないかと思っています。 一気にすべての機能を実現するのはムリだし、時間もかかるので、 徐々に作り上げていくのがよいと思います。完全に置き換えられる ようになったらindex.htmlにリネームする、という流れです。それ までは、new.htmlに足りない機能はindex.htmlを使う、とできれば、 困ることはないと思っています。 面白そうだと思ったらぜひ手を付けてみてください! -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) Groongaサポート: http://groonga.org/ja/support/ パッチ採用はじめました: http://www.clear-code.com/recruitment/ コードリーダー育成支援はじめました: http://www.clear-code.com/services/code-reader/