8. 開発者向け情報

8.3. 開発手法について

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

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

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

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

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

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

We develop based on the roadmap, and you can see our roadmap in the following page.

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

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

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

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

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

http://github.com/mroonga/mroonga

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

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

8.6. 開発環境

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

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

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

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

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

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

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

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

  8. チケットの完了

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

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

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

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

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

8.7. リリースについて

リリースはロードマップ上のチケットが全て完了となった段階で行います。

リリースにあたっては以下の作業を行っています。

  • ソースパッケージ作成

  • バイナリパッケージ作成

  • ドキュメント(http://mroonga.org)のアップデート

  • リリースの告知

リリース手順 へ移動予定。

8.8. 開発環境

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

8.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テストスクリプトとその想定実行結果を機能一覧/仕様定義として見なしています。

8.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

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

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

Sphinx is a documentation generator which uses reStructuredText as its markup language, and converts reStructuredText files into HTML files.

reStructuredText uses .rst filename extensions.

ドキュメントは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します。

We push added or updated HTML files to the repository after confirming the consistency between the documents and the current release version.

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

The details are as follows.

8.11.1. Installing Sphinx

You don't need to install Sphinx by yourself because Mroonga clones the latest Sphinx from Sphinx repository automatically. You just need to install Mercurial.

8.11.2. Build Mroonga

In order to enables documentation generation, you should run configure script with "--enable-document" option as follows.

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

8.11.3. ドキュメントを追加

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

See reStructuredText (reST) concepts and syntax about how to write a document in reStructuredText format.

8.11.4. Confirm generated document

You can generate HTML files by the following command.

% cd doc/locale/en
% make html

You can confirm generated HTML document in web browser, after generating HTML files.

Here we show an example of using Firefox.

% firefox html/characteristic.html