原田です。
先日加湿器を購入しました。在宅中は加湿器を使用していますが、会社に出勤している間は除湿機を使用して部屋の湿気を減らすようにしています。
加湿器と除湿機を使用するのは、(加湿と除湿で部屋の水分量がプラス・マイナス0になるんじゃないかと思ってしまい)無駄なことをしている気がします。
今回は最近実施したRedmine改善の中で強く印象に残ったものについて書きます。
弊社の提供するRedmineのクラウドサービス My Redmine のお客様からwebサポート窓口に「プロジェクトの作業時間一覧で作業分類フィルターを使用したところ、サブプロジェクトに同じ作業分類名の作業時間は存在するが一覧に表示されない」というお問い合わせをいただきました。
再現手順を見つけ出して、私の開発環境のRedmineでもお客様の仰る事象を再現することができました。
事象は再現できましたが原因がよく分かりませんでした。そこで作業分類の管理方法と作業時間一覧機能のソースコードを確認したところ、Redmineの不具合であることが判明しました。
作業分類は以下の2箇所で管理されています。
上記2でシステム作業分類列にチェックがある作業分類は、上記1の作業分類(時間管理) で登録された作業分類をそのまま利用しています。チェックのない作業分類は各プロジェクトでカスタムフィールド(例では「Billable」)の値を変更したり、有効/無効を切り替えた作業分類です。
作業分類名は同じですがデータ上は別の作業分類(レコードIDの異なる作業分類)として登録されます。そのためプロジェクトごとに作業分類の設定値を変更すると、各プロジェクト用の作業分類が個別に作成されます。
# select id, name, position, is_default, active, project_id, parent_id from enumerations where type='TimeEntryActivity' order by position asc, id asc; id | name | position | is_default | active | project_id | parent_id ----+-------------+----------+------------+--------+------------+----------- 9 | Design | 1 | f | t | | 17 | Design | 1 | f | t | 1 | 9 10 | Development | 2 | t | t | | 18 | Development | 2 | f | t | 1 | 10
上記作業分類のデータ構造(同じ作業名であってもレコードIDが違う点)が個人的にとても気になりました。そこで作業時間の一覧表示で使用している作業分類フィルターに関する処理(ソースコード)を確認したところ、原因と思われる作業分類フィルターの選択肢を作り出している箇所を見つけました。
これを以下のように修正したところ、サブプロジェクトの作業分類も一覧画面に表示されました。
diff --git a/app/models/time_entry_query.rb b/app/models/time_entry_query.rb index 11128cfcd6..5fd4790893 100644 --- a/app/models/time_entry_query.rb +++ b/app/models/time_entry_query.rb @@ -88,7 +88,7 @@ class TimeEntryQuery < Query activities = (project ? project.activities : TimeEntryActivity.shared) add_available_filter( "activity_id", - :type => :list, :values => activities.map {|a| [a.name, a.id.to_s]} + :type => :list, :values => activities.map {|a| [a.name, (a.parent_id || a.id).to_s]} ) add_available_filter( "project.status",
私自身、作業時間機能をあまり使用しないため不具合があることを気付いていませんでした。今回のお客様からのご指摘はとても参考になりました。
今回印象に残った点は、作業分類のデータ構造が一般的なデータ構造と異なっていたことです。たぶん作業分類フィルターを使用しない限りこの不具合には遭遇しないだろうと思いました。今回の事案はRedmine公式サイトにチケット登録し、上記の修正パッチを投稿しました。
余談ですがRedmine公式サイトの未対応チケットの一覧を見ていると、今回の事案とは直接関係しない作業分類に関する不具合と思われる報告(チケット)がいくつか存在していました。今回実施したRedmine改善の内容を参考にして、これらのチケットも改善していきたいと思います。
![]() |
Redmine公式サイトへの投稿履歴から取り組みやすいカテゴリやチケットが分かりました。 |
![]() |
統計分析の学びとしてR言語を使い始めました。R言語は利用までのコストが低く、情報も多いのでお勧めです。 |
![]() |
趣味の中国語学習のために無料のアプリの中から頻繁に使っているものを紹介します。 |
![]() |
「RedMica Bridge」はシンプルなUIで簡単にチケットに入力でき、複数のRedmineのチケットを表示することができます。 |
![]() |
障害が発生したものとして擬似的に対応を進めるサービス障害対応訓練を行いました。 |
![]() |
社員研修に伴うサポート体制変更・休業のお知らせ(5/20〜23) 社員研修に伴い、5月20日〜23日はサポート体制の変更および休業とさせていただきます。 |
![]() |
オープンソースカンファレンス2025 Nagoyaに弊社代表の前田が登壇(ブース出展あり) オープンソースカンファレンス(OSC)2025 Nagoyaに弊社代表の前田が登壇。『Redmineの意外と知らない便利な機能(Redmine 6.0 対応版)』をテーマに発表します。 |
![]() |
エンタープライズプラン向け「優先サポート」を開始 My Redmineでは、エンタープライズプランをご契約のお客様向けにサポート対応を優先的に行う「優先サポート(プライオリティサポート)」を開始いたしました。 |
![]() |
プロジェクト管理ツール「RedMica」バージョン 3.1.0をリリース Redmine互換のオープンソースソフトウェア ファーエンドテクノロジー株式会社は、2024年11月19日(日本時間)、Redmine互換のプロジェクト管理ソフトウェア「RedMica 3.1.0」をリリースしました。 |
![]() |
Redmineの最新情報をメールでお知らせする「Redmine News」配信中 新バージョンやセキュリティ修正のリリース情報、そのほか最新情報を迅速にお届け |