【毎月更新】Redmine リリース前の新機能を先行チェック!パフォーマンスの改善に関するコミットを紹介(2025年1月コミット分)

 •  分類: ,  •  黒谷明大

Redmine公式サイトでコミット済みの未リリースの新機能を毎月紹介します。より便利になるRedmineの機能を一足先にチェックしましょう。

今月は2025年1月にコミットされたチケットの中から、Redmineのパフォーマンス改善に関するチケットを5つ紹介します。


Redmineとは:
Redmineはオープンソースのプロジェクト管理ソフトウェアです。オンプレミスのサーバなど自前の環境に自由にインストールできるほか、 クラウドサービス も利用できます。Redmineについて詳しくは Redmine.JP (Redmine日本語情報サイト)をご覧ください。

TimeEntryActivity#default_activity_id メソッドを最適化しSQLクエリを削減する

TimeEntryActivity#default_activity_id メソッドは、時間管理の作業分類のデフォルト値を決定するメソッドです。このメソッドは、ひとつのチケットを表示する場合にも呼び出されます。 その際、ユーザーのロールやシステム全体のデフォルト値など、複数の条件を考慮するような仕組みになっています。 例えば、ロールにデフォルト値が設定されていればその値に決定できますが、先にその値が見つかったとしても他の条件を全てチェックしてから決定するように作られています。そのため、実行する必要のないSQLクエリが実行されるようになっています。

次期バージョンでは、デフォルトの作業分類が決定された時点で直ちに処理を終了できるようにこのメソッドが修正されます。これにより不要なSQLクエリが実行されなくなり、パフォーマンスが改善します。

IssuesController#show メソッドを最適化しSQLクエリを削減する

IssuesController#show メソッドは、「時間管理」モジュールが無効の場合でも時間管理に関するデータベースや関連データを読み込もうとするように作られています。

次期バージョンでは、「時間管理」モジュールが有効な場合にのみ時間管理に関するSQLクエリを実行するようにこのメソッドが改善されます。これにより不要なSQLクエリが実行されなくなり、パフォーマンスが改善します。

Member#role_ids= メソッドをリファクタリングし可読性と効率性を向上

次期バージョンでは Member#role_ids= メソッドをリファクタリングし、不要な MemberRole レコードの識別と削除の処理を簡素化することで、可読性と効率性を向上します。

Version#wiki_page メソッドを最適化しSQLクエリを削減する

Version#wiki_page メソッドは、 wiki_page_title が空の場合でも project.wiki を評価するように作られています。これにより、不要な SQL クエリが wikis テーブルに対して実行されてしまう場合があります。

次期バージョンでは、wiki_page_title が存在する場合にのみ project.wiki を評価するようにこのメソッドが改善されます。これにより不要なSQLクエリが実行されなくなり、パフォーマンスが改善します。

活動画面を最適化しパフォーマンスを改善

活動画面において、各履歴に対して複数のSQLクエリが発生し、パフォーマンスの問題を引き起こす可能性があります。

次期バージョンでは、Journal#journalized メソッドの修正と acts_as_activity_provider:scope パラメータが修正されます。これにより不要なSQLクエリが実行されなくなり、パフォーマンスが改善します。

Redmineの新機能を先行して利用できる「RedMica」

Redmine互換のオープンソースソフトウェアRedMica (ファーエンドテクノロジー版Redmine)では、Redmineの次期バージョンの新機能を先行して利用できます。

RedMicaが今すぐ使えるサービス「My Redmine」

「My Redmine」は、RedMicaの開発者ファーエンドテクノロジーが提供するクラウドサービスです。無料でお試しできます。

バックナンバー(過去1年分)

この連載は毎月上旬に掲載します。「Redmine News」に登録いただくと新着記事をメールでお知らせします。
最新情報お知らせメール「Redmine News」 (Redmine.JP)


作成: 2025-02-14 13:00  •  分類: ,