# Redmineタスク分解プラグイン 導入・運用マニュアル
ユーザー文書
2025-05-11
Redmineタスク分解プラグイン 導入・運用マニュアル¶
1. プラグインの概要¶
Redmineタスク分解プラグインは、親チケットを開発プロセスに準拠した9つの標準的な子チケットに分解する機能を提供します。分解されたチケットはテンプレート化された構造を持ち、開発作業の標準化と効率化を実現します。
1.1 主な機能¶
- 親チケットから9つの標準開発プロセス子チケットへの分解
- カスタマイズ可能なテンプレートによる子チケット内容の自動生成
- 親チケットからの情報抽出と子チケットへの自動反映
- 分解したチケット群の進捗管理機能
- プロジェクトごとの設定カスタマイズ
1.2 対応する開発ステップ¶
- ①機能概要: 誰が、何を、どのように入出力するかの定義
- ②ユースケース: システム利用シナリオの詳細化
- ③画面一覧: 必要な画面の定義と関連
- ④機能一覧: 実装する機能の詳細と優先度
- ⑤関数一覧: 設計する関数とその入出力、処理内容
- ⑥詳細設計: データ構造、処理フロー、エラー処理など
- ⑦実装: コーディング指示と品質基準
- ⑧試験: テスト項目と合格基準
- ⑨デプロイ: 環境設定とデプロイ手順
2. インストール手順¶
2.1 前提条件¶
- Redmine 4.0.0以上
- Ruby 2.4.0以上
- Rails 5.2.0以上
2.2 プラグインのインストール¶
-
Redmineのプラグインディレクトリに移動します:
cd /path/to/redmine/plugins
-
GitHubからプラグインをクローンします:
git clone https://github.com/example/redmine_task_decomposer.git
または、ダウンロードしたZIPファイルを解凍して配置:
unzip redmine_task_decomposer.zip -d /path/to/redmine/plugins/
-
必要な依存ライブラリをインストールします:
cd /path/to/redmine bundle install
-
データベースマイグレーションを実行します:
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
-
Redmineを再起動します:
# Passengerの場合 touch tmp/restart.txt # Pumaの場合 bundle exec puma -C config/puma.rb -e production # Unicornの場合 kill -s USR2 `cat tmp/pids/unicorn.pid`
2.3 インストールの確認¶
- Redmineの管理画面にログインします
- 「管理」→「プラグイン」を開きます
- インストール済みプラグイン一覧に「Task Decomposer Plugin」が表示されていることを確認します
- 「設定」リンクをクリックして、プラグインの設定画面を表示します
3. 初期設定¶
3.1 権限設定¶
- 「管理」→「ロールと権限」を開きます
- 編集したいロール(例:管理者、開発者など)をクリックします
- 「タスク分解」モジュールの権限を設定します:
-
タスク分解の表示
: チケット分解結果の閲覧権限 -
タスク分解の管理
: チケットの分解操作権限 -
タスクテンプレートの管理
: テンプレートの編集権限
-
3.2 プロジェクトでの有効化¶
- 設定したいプロジェクトの設定画面に移動します
- 「モジュール」タブをクリックします
- 「タスク分解」にチェックを入れて保存します
3.3 デフォルトテンプレートの設定¶
- 「管理」→「タスクテンプレート」を開きます
- 「デフォルトをリセット」ボタンをクリックして、初期テンプレートを生成します
- 必要に応じて各テンプレートを編集し、組織の開発プロセスに合わせてカスタマイズします
4. 使用方法¶
4.1 親チケットの作成¶
- プロジェクト内で新しいチケットを作成します
- このチケットは「機能要求」や「タスク」などのトラッカーを選択します
- チケットの説明欄に、実装すべき機能の要件や詳細を記述します
- 詳細な説明を記述することで、テンプレート変数の自動抽出精度が向上します
4.2 チケットの分解¶
- 作成した親チケットの詳細画面を表示します
- 右上の「チケットを分解」ボタンをクリックします
- 分解画面で各開発ステップに使用するテンプレートを選択します
- 各テンプレートにはプレビューが表示され、内容を確認できます
- 「分解」ボタンをクリックして処理を実行します
- 処理が完了すると、親チケットに9つの子チケットが作成されます
4.3 分解後のチケット管理¶
- 親チケットの詳細画面の下部に子チケット一覧が表示されます
- 各子チケットは開発プロセスの順に整理され、ステータスが視覚的に表示されます
- 子チケットのステータス変更は親チケットのステータスに自動的に反映されます:
- すべての子チケットが完了すると、親チケットも完了状態になります
- いずれかの子チケットが進行中になると、親チケットも進行中になります
5. テンプレート管理¶
5.1 テンプレートの編集¶
- 「管理」→「タスクテンプレート」を開きます
- 編集したいテンプレートの「編集」リンクをクリックします
- テンプレート名、説明、内容などを編集します
- テンプレート内容では以下の変数を使用できます:
-
{{parent_ticket.id}}
: 親チケットのID -
{{parent_ticket.subject}}
: 親チケットの件名 -
{{parent_ticket.description}}
: 親チケットの説明 -
{{actors_input}}
: 入力操作を行うアクター -
{{data_input}}
: 入力されるデータ -
{{method_input}}
: 入力方法 - その他の変数(詳細は変数一覧を参照)
-
5.2 新規テンプレートの作成¶
- 「管理」→「タスクテンプレート」を開きます
- 「新規テンプレート」ボタンをクリックします
- テンプレート種別、名前、内容などを入力します
- 適切なトラッカーを選択します(例:「機能概要」→「ドキュメント」)
- 「作成」ボタンをクリックして保存します
5.3 テンプレートのインポート/エクスポート¶
- テンプレート一覧画面で「エクスポート」ボタンをクリックすると、現在のテンプレート設定がJSONファイルとしてダウンロードされます
- 「インポート」ボタンをクリックし、JSONファイルを選択してテンプレートを一括インポートできます
- この機能を使用して、複数のRedmineインスタンス間でテンプレート設定を共有できます
6. 高度な設定¶
6.1 プロジェクト別設定¶
- プロジェクトの設定画面に移動します
- 「タスク分解」タブをクリックします
- 以下の設定をカスタマイズできます:
- 自動割り当て: 分解時に子チケットを自動的に担当者に割り当てるかどうか
- 作成時通知: 子チケット作成時に通知を送信するかどうか
- デフォルトテンプレート: このプロジェクトで使用するデフォルトテンプレート
6.2 自動抽出機能のカスタマイズ¶
カスタムルールを使用して、テキスト解析による変数抽出をカスタマイズできます。
-
lib/task_decomposer/text_analyzer.rb
ファイルを編集します - 抽出メソッド(
extract_actors
、extract_data_inputs
など)のロジックを修正します - 正規表現パターンや抽出キーワードを組織の開発文書に合わせて調整します
6.3 Webhook連携¶
Redmine APIを使用して外部システムからタスク分解を実行できます。
- APIアクセスキーを生成します
- 以下のAPIエンドポイントを使用します:
POST /task_decomposer/decompose/:id
- リクエストパラメータには、テンプレートIDを指定します:
{ "templates": { "function_overview": 1, "use_case": 2, "screen_list": 3, "feature_list": 4, "function_list": 5, "detailed_design": 6, "implementation": 7, "testing": 8, "deployment": 9 } }
7. トラブルシューティング¶
7.1 インストール時の問題¶
症状: プラグインがRedmineプラグイン一覧に表示されない
解決策:
-
plugins/redmine_task_decomposer/init.rb
ファイルが存在することを確認 - Redmineのログファイル (
log/production.log
) でエラーを確認 - Redmineのバージョンが要件を満たしているか確認
症状: マイグレーション実行時にエラーが発生する
解決策:
- データベースのバックアップを取る
- 開発環境でマイグレーションを先に試す (
RAILS_ENV=development
) - Redmineのバージョンに合わせてマイグレーションファイルを修正
7.2 利用時の問題¶
症状: テンプレート変数が置換されない
解決策:
- 変数名の大文字/小文字と正確な記述を確認(
{{variable}}
形式) - 親チケットの説明に十分な情報があるか確認
- テンプレートエンジンのログ出力を有効にして問題を特定
症状: 子チケット作成に失敗する
解決策:
- Redmineのログでエラーメッセージを確認
- ユーザーに必要な権限があるか確認
- テンプレート内容が有効なフォーマットか確認
症状: 自動抽出が正確でない
解決策:
- 親チケットの記述方法を標準化
- 抽出ロジックをカスタマイズ
- 手動で変数値を設定できるよう機能拡張を検討
7.3 更新とアップグレード¶
プラグインを新しいバージョンに更新する際は、以下の手順に従ってください:
- 現在の設定とテンプレートをエクスポートしてバックアップします
- Redmineを停止します
- プラグインディレクトリを更新します:
cd /path/to/redmine/plugins/redmine_task_decomposer git pull
- データベースマイグレーションを実行します:
cd /path/to/redmine bundle exec rake redmine:plugins:migrate RAILS_ENV=production
- Redmineを再起動します
- 必要に応じてテンプレートを再インポートします
8. カスタマイズと拡張¶
8.1 新しいテンプレート変数の追加¶
カスタムテンプレート変数を追加するには:
-
app/controllers/task_decomposer_controller.rb
のextract_variables_from_issue
メソッドを編集 - 新しい変数の抽出ロジックを追加
- テンプレート変数のドキュメントを更新
8.2 UIカスタマイズ¶
プラグインのUIをカスタマイズするには:
-
assets/stylesheets/task_decomposer.css
を編集してスタイルを変更 -
app/views/
ディレクトリ内のテンプレートファイルを修正 - 独自のJavaScriptを
assets/javascripts/task_decomposer.js
に追加
8.3 アジャイル開発向けカスタマイズ¶
スクラム/アジャイル開発プロセス向けにプラグインをカスタマイズするには:
- 「ユーザーストーリー」「アクセプタンスクライテリア」などのテンプレートを追加
- スプリントとの連携機能を実装
- カンバンボードでの表示を最適化
9. ベストプラクティス¶
9.1 効果的な親チケット作成¶
- チケット説明には「誰が」「何を」「どのように」の情報を明確に記述
- 用語と表現を統一し、テキスト解析の精度を向上
- 重要な要件や制約事項は明示的に記述
- カスタムフィールドを活用して構造化されたデータを提供
9.2 テンプレートのメンテナンス¶
- 定期的にテンプレートを見直し、組織の開発プロセスの変化に合わせて更新
- 複数のプロジェクトで共通して使用される部分は共通テンプレートとして管理
- プロジェクト固有の要素はプロジェクト設定でカスタマイズ
- 実際のプロジェクトからのフィードバックを収集し、継続的に改善
9.3 ワークフロー統合¶
- Redmineのワークフローと連携させて、開発プロセス全体を効率化
- チケットのステータス変更やトラッカーとの連携で、開発フェーズの自動管理を実現
- ガントチャートやカレンダーとの統合で、開発スケジュールの可視化を強化
- カスタムクエリを使用して、分解されたチケットの効率的な管理ビューを作成
10. サポートとコミュニティ¶
10.1 バグ報告と機能リクエスト¶
問題や機能リクエストは、GitHubリポジトリのIssueトラッカーに報告してください:
https://github.com/example/redmine_task_decomposer/issues
10.2 コントリビューション¶
- フォークしてプルリクエストを送信することで、プラグインの改善に貢献できます
- コードの変更を提案する前に、既存のIssueを確認してください
- テストを追加して、変更が既存の機能を破壊しないことを確認してください
10.3 コミュニティサポート¶
- Redmineフォーラム: https://www.redmine.org/projects/redmine/boards
- Reddit Redmineコミュニティ: https://www.reddit.com/r/redmine/
- Stack Overflow: https://stackoverflow.com/questions/tagged/redmine
付録A: テンプレート変数一覧¶
変数名 | 説明 | 例 |
---|---|---|
{{parent_ticket.id}} |
親チケットのID | 42 |
{{parent_ticket.subject}} |
親チケットの件名 | 顧客管理システム開発 |
{{parent_ticket.description}} |
親チケットの説明 | 顧客情報を管理するシステムを... |
{{parent_ticket.project}} |
親チケットのプロジェクト名 | CRMプロジェクト |
{{parent_ticket.tracker}} |
親チケットのトラッカー | 機能 |
{{parent_ticket.status}} |
親チケットのステータス | 新規 |
{{actors_input}} |
入力操作を行うアクター | 営業担当者, 管理者 |
{{actors_output}} |
出力結果を利用するアクター | 経営者, 営業担当者 |
{{data_input}} |
入力されるデータ | 顧客情報, 商談記録 |
{{data_output}} |
出力されるデータ | 顧客リスト, 売上レポート |
{{method_input}} |
入力方法 | Webフォーム, CSVインポート |
{{method_output}} |
出力方法 | 画面表示, PDFダウンロード |
{{main_features}} |
主要機能リスト | - 顧客データ登録\n- 検索機能\n... |
{{constraints}} |
制約条件 | - 個人情報保護法に準拠\n... |
{{notes}} |
備考 | 既存システムとの連携が必要 |
カスタムフィールド | 親チケットのカスタムフィールド | カスタム |
付録B: API リファレンス¶
B.1 タスク分解 API¶
エンドポイント: POST /task_decomposer/decompose/:id
パラメータ:
-
:id
- 親チケットのID -
templates
- テンプレートIDのマッピング
リクエスト例:
{
"templates": {
"function_overview": 1,
"use_case": 2,
"screen_list": 3,
"feature_list": 4,
"function_list": 5,
"detailed_design": 6,
"implementation": 7,
"testing": 8,
"deployment": 9
}
}
レスポンス例:
{
"success": true,
"issue_id": 42,
"child_issues": [
{"id": 43, "subject": "①機能概要 - 顧客管理システム開発", "tracker": "ドキュメント"},
{"id": 44, "subject": "②ユースケース - 顧客管理システム開発", "tracker": "ドキュメント"},
// ...
]
}
B.2 テンプレート API¶
エンドポイント: GET /task_templates
パラメータ:
- なし (全テンプレート取得)
レスポンス例:
{
"templates": [
{
"id": 1,
"template_type": "function_overview",
"name": "機能概要",
"description": "機能概要テンプレート",
"tracker_id": 3,
"is_default": true
},
// ...
]
}
付録C: 変更履歴¶
バージョン 0.1.0 (2025-05-10)¶
- 初回リリース
- 基本的なタスク分解機能
- テンプレート管理システム
- Redmine 4.0以上との互換性
バージョン 0.2.0 (予定)¶
- 自動抽出アルゴリズムの改善
- ガントチャート連携
- REST API拡張
バージョン 0.3.0 (予定)¶
- アジャイル開発プロセス対応
- AIによるテンプレート提案機能
- 複数プロジェクト一括管理