9. 開発者向け情報

9.4. 開発手法について

Mroonga開発プロジェクトではBTSの1つであるRedmineを用いたチケット駆動開発を実施しています。

Redmineは以下のサイトで運用されています。

http://redmine.groonga.org/projects/mroonga

開発の作業はチケット単位で行っています。

開発者の方は上記サイトへのアカウント登録をお願いします。

9.5. ロードマップについて

ロードマップに基づいた開発を行っています。ロードマップは以下のページから確認できます。

http://redmine.groonga.org/projects/mroonga/roadmap

ロードマップはオフラインあるいはオンラインでの開発会議で検討を行った上で決定されます。

ロードマップは各バージョンごとに追加する機能の一覧として構成されています。

9.6. ソースコード管理について

GitHubを使用したgitによるソースコード管理を行っています。

http://github.com/mroonga/mroonga

上記レポジトリに対してread/writeでcloneを作成し、commitおよびpushして下さい。

アカウントを作成していない開発者の方はgithub.comへの登録をお願いします。

9.7. 開発環境

開発は以下の流れで行いたいと考えています。

  1. チケットの新規作成と内容の記述

  2. 開発会議での検討(ロードマップへの反映)

  3. チケットの割り当て(担当者作業開始)

  4. 機能実装あるいはバグの修正作業、必要に応じてレポジトリへのpush

  5. テストコードの追加と実行、レポジトリへのpush

  6. 実装/テスト内容に対するレビュー(必要に応じて4へ戻る)

  7. ドキュメントの追加/変更、 レポジトリへのpush

  8. チケットの完了

機能追加や仕様変更などについても積極的にアイデアを募集します。まずはチケットを新規作成して内容を記述して下さい。

テストコードの追加と実行については後述しますのでそちらを参照して下さい。

基本的にチケットを担当されている方が設計、実装、テスト、ドキュメントまで一通りお願いしたいと考えています。

他の開発者にレビューを依頼し(特に機能追加の場合)、無事パスしたら最後にドキュメントを追加/変更してチケット完了となります。

ドキュメントの追加/変更方法についても詳しくは後述します。

9.8. 開発環境

現在、以下のような開発環境を想定しています。

9.9. ソースディレクトリ解説

今のところソースファイルの数はごくわずかです。なるべくシンプルな状態を維持したいと考えています。

ha_mroonga.hpp

Mroongaのヘッダファイル

ha_mroonga.cpp

Mroongaの実装コード

mrnsys.hpp

ユーティリティ関数のヘッダファイル

mrnsys.cpp

ユーティリティ関数の実装コード

mysql-test/

SQLによるテストコード用ディレクトリ

SQLによるテストコード用ディレクトリSQLテストスクリプト(現在実行可能なSQL文の定義も兼ねる)

SQLテスト想定実行結果(SQL動作仕様定義も兼ねる)

test/unit/

C/C++関数単体でのテストコード用ディレクトリ

doc/source/

Sphinx形式の英語ドキュメント一式

Mroongaはまだ開発の立ち上げ段階であるため、SQL実行に関する仕様のドキュメント化は当面行いません。

その代わりとしてSQLテストスクリプトとその想定実行結果を機能一覧/仕様定義として見なしています。

9.10. テストコードの追加と実行について

Mroongaではプログラムの品質管理のため、2種類の回帰テストを用いています。

SQL tests

SQL実行により動作確認を行えるような機能追加/バグ修正に関しては必ずSQLテストを追加して下さい。高速化機能などは一見するとSQLによる動作確認ができないように見える場合もありますが、ステータス変数やinformation_schemaプラグインなどを使用することで上手くテストできるものもあります。

C/C++単体テスト

Cutterを使用した関数レベルでの回帰テストです。ユーティリティ関数などSQL実行結果による動作の差異を確認できないような実装を追加した場合にはこちらにテストを追加して下さい。

ソースコードレポジトリへのpushを行う前に必ず回帰テストを実行し、デグレードが発生していないことを確認して下さい。

上記の回帰テストは"make check"で双方とも呼び出されます。

SQLテストはMySQLの回帰テストである"mysql-test"に対する"sub test suite"として実装しています。テストケースの追加や想定結果ファイルの改変方法などの詳細情報は以下のMySQLのドキュメントを参照して下さい。

http://dev.mysql.com/doc/mysqltest/2.0/en/index.html

C/C++単体テストの書き方についてはCutterのドキュメントを参照して下さい。

http://cutter.sourceforge.net/index.html.ja

9.11. ドキュメントの追加と変更について

Mroongaではドキュメント作成にSphinxを使用しています。

Sphinxはマークアップ言語としてreStructuredTextを使用し、reStructuredTextファイルからHTMLファイルを生成する、ドキュメンテーションジェネレーターです。

reStructuredTextは.rstというファイル拡張子を使用します。

ドキュメントはReStructuredText形式でソースファイルを書き、HTML形式などにビルドしています。

ドキュメントのソースファイルは"doc/source"ディレクトリにある拡張子が.rstのファイルです。

加筆修正を行ったら"make html"等でビルドして構文エラーが起きないことを確認して下さい。

ドキュメントの実際の公開場所は http://mroonga.org で、これはGitHubのサイト機能を使用しているため http://github.com/mroonga/mroonga.github.com レポジトリに最新のHTML出力ファイルをpushすることで更新が行われる仕組みとなっています。

mroonga.github.comレポジトリへのpushは現リリースバージョンとの整合性などを確認した上で別のタイミングでpushします。

従って、各チケットに対するドキュメントのpushはmroongaレポジトリに対するpushのみで構いません。

詳細は以下の通りです。

9.11.1. Sphinxのインストール

Sphinxを自分でインストールする必要はありません。Mroongaが最新のSphinxのリポジトリをcloneするためです。Mercurialのインストールのみ必要です。

9.11.2. Mroongaのビルド

ドキュメント生成を有効にするには、以下のようにconfigureスクリプトを"--enable-document"オプションを指定して実行します。

% ./configure --enable-document --with-mysql-source=(your mysql source directory)
% make
% make install

9.11.3. ドキュメントを追加

reStructuredText形式でドキュメントを書き、拡張子を.rstにして"doc/source"ディレクトリーに保存します。

reStructuredText形式については、 reStructuredText (reST) を参照してください。

9.11.4. 生成されたドキュメントの確認

以下のコマンドでHTMLファイルを生成することができます。

% cd doc/locale/en
% make html

生成されたHTMLドキュメントをWebブラウザで確認することができます。

以下はFirefoxで確認する例です。

% firefox html/characteristic.html