9. 開発者向け情報 — Mroonga vmrn_version documentation

本文へスキップ
`Ctrl`+`K`

# 9. 開発者向け情報

- 9.1. デバッグ方法
  - 9.1.1. デバッグ用ビルド方法
  - 9.1.2. `run-sql-test.sh`を使いこなす
- 9.2. Release procedure
  - 9.2.1. 必要なもの
  - 9.2.2. ビルド環境をセットアップする
  - 9.2.3. 変更点を記述する
  - 9.2.4. `release` タスクを実行する
  - 9.2.5. CIを確認する
  - 9.2.6. Dockerイメージを更新
  - 9.2.7. ドキュメントを更新
  - 9.2.8. Announce release for X(Twitter)
  - 9.2.9. リリースをFacebookで告知
- 9.3. コーディングスタイル
  - 9.3.1. 言語
  - 9.3.2. ファイル名
  - 9.3.3. 名前空間
  - 9.3.4. `include` ガード
  - 9.3.5. 代入
  - 9.3.6. 文字列
  - 9.3.7. バッファ
  - 9.3.8. 命名規則
  - 9.3.9. コピーコンストラクター
  - 9.3.10. クラスの代入
  - 9.3.11. 引数
  - 9.3.12. 定数
  - 9.3.13. 真偽値
  - 9.3.14. 条件式
  - 9.3.15. 初期化
  - 9.3.16. インクリメント・デクリメント
  - 9.3.17. キャスト
  - 9.3.18. 変数宣言
  - 9.3.19. その他
  - 9.3.20. メモ

## 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によるソースコード管理を行っています。

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. 開発環境

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

- Linux x86_64

- glibc

- MySQL

- Groonga

- Cutter (C/C++単体テスト用)

- Sphinx (ドキュメント用)

## 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. ドキュメントの追加と変更について

ドキュメントの追加と変更については、 How to contribute in documentation topics を参照して下さい。