Redmineにこんなパッチを投稿しています


My Redmine

原田です。2月に入りやっと雪が降りました。積雪があったのは一日だけでしたけどスノータイヤの有り難みを感じました。

今回は私が日々投稿しているRedmineのパッチをご紹介したいと思います。

Redmineをより良くするためにパッチを投稿しましょう

Redmine公式サイトには、新機能の要望・提案(Feature)や不具合の報告(Defect)等のチケットが日々登録されています。当社ではRedmineへの貢献活動の一つとして(Redmineをより良くするために)これらのチケットに対するパッチを作成し投稿しております。


Redmine公式のチケット一覧

当社に入社し一年半ほど経ちましたが、それなりの数のパッチ(具体的な数は把握できておりません)を投稿していると思います。例えば、昨年12月にリリースされたRedmine 4.1では、私が開発したパッチのうち40件が採用されました。

最近投稿したパッチをご紹介します

最近投稿したパッチのひとつをご紹介したいと思います。実際のパッチはRedmine公式サイトのチケットに添付されていますのでよろしければご覧ください。

Feature #4511: Allow adding user groups as watchers for issues

ウォッチャーにグループも追加できる機能を作成しました(2020年2月6日、Redmine公式のtrunkリポジトリにコミット済)。このチケットは2010年1月に登録されており多くの方の賛同を得ていますが、実装には至っておりませんでした。当社提供サービス「My Redmine」のご利用者様からも同様のご要望を寄せられておりました。


Redmine公式サイトでパッチを添付

今回の作業に関して以下の2点を明確にしておく必要がありました。

  1. そもそもウォッチャーにグループが追加できるような造り(コード)なのか
  2. ウォッチャーにグループを追加することで影響が出る既存機能(処理)はどの程度存在するか

1.に関しては調査した結果以下のことが分かりましたので対応(追加)可能と結論付けました。

2.に関しては以下のコマンドを実行し該当する箇所を抽出後、地道な作業ですけど一つひとつ確認しました。

$ grep -rin "watch" * --exclude-dir={vendor,public,tmp,doc,log,test,config/locales,files,plugins,coverage}
app/models/mailer.rb:95:    users = issue.notified_users | issue.notified_watchers
app/models/mailer.rb:130:    users  = journal.notified_users | journal.notified_watchers
...
(snip)
...
app/models/watcher.rb:20:class Watcher < ActiveRecord::Base
app/models/watcher.rb:21:  belongs_to :watchable, :polymorphic => true
app/models/watcher.rb:25:  validates_uniqueness_of :user_id, :scope => [:watchable_type, :watchable_id]
app/models/watcher.rb:28:  # Returns true if at least one object among objects is watched by user
app/models/watcher.rb:29:  def self.any_watched?(objects, user)
app/models/watcher.rb:33:        if Watcher.where(:watchable_type => base_class.name, :watchable_id => objects.map(&:id), :user_id => user.id).exists?
...
(snip)
...
ウォッチャーに関する処理を抽出(一部)

これらに加えグループ追加に伴う処理やテストを見直したパッチをRedmine公式に投稿しました。実際にはレビュアー(社内・公式サイトのそれぞれ)からいくつか指摘を受けましたが、自分の知らなかったことや新たな気付きを得られました。

このパッチを適用すると以下のようにウォッチャーにグループを追加することができます。


ウォッチャーの追加 ウィンドウ

ウォッチャー一覧(チケット画面のサイドバー)

Redmineをより良くするためには皆様の協力が必要です

当社はRedmineのクラウドサービス「My Redmine」を提供していることもあり、Redmineに関すること(運用・サポート)には精通していると思っております。しかしながらRedmine公式サイトをご覧いただくとお分かりになるかと思いますが、パッチ投稿者・レビュアー・コミッター等のメンバーがある程度決まった人員になっており、Redmineをより良くするための改善という面から見るとマンパワーが足らないと個人的には思います。

私はチケットを英文で書くことが苦手で、日本人の方の投稿が少ないのも同じこと(英語が苦手)が原因なのかなと思います。ちなみに私の場合はGoogle翻訳で伝えたいことを何度か翻訳させることで(日本語→英語→日本語→英語、この時点で英文がおかしくなることが多いけど)それなりに伝わる文章を作成しています。

もし可能であればRedmineをより良くするために公式サイトにチケットやコメントを投稿してみませんか。


My Redmine

こちらの記事もオススメです!
Redmineのパッチを書くときに気をつけていること
Redmineのパッチを書く活動の中で個人的に気をつけていることをまとめました。
換気してますか?二酸化炭素濃度計をオフィスに設置しました
二酸化炭素濃度計を導入して、オフィスの換気を行うようになりました。体調が良くなるなどの効果があるようです。
AWSの学習でAWSome Day(オンライン)参加とハンズオンをしました
AWSome DayというAWSに関する基礎知識を学べるイベントにオンラインで参加しました。
イベントのブースでGoogle フォームを使ったクイズを企画しました
ブース出展時の企画でGoogle フォームを使ったクイズを実施。ブースにお立ち寄り頂いたお客様とコミュニケーションがとれました。
AWS Amplify のログイン認証機能を試してみた
「AWS Amplify」を利用して、ログイン画面の実装について手順を紹介します。
ファーエンドテクノロジーからのお知らせ(2024/04/10更新)
My Redmine 初回ご契約で「入門Redmine 第6版」プレゼントのお知らせ
Redmineのクラウドサービス「My Redmine」を初めてご契約いただいたお客様にRedmine解説書「入門Redmine 第6版」を進呈いたします。
入門Redmine 第6版 出版記念セミナー「Redmine 8年分の新機能ふりかえり」【2024/4/18開催】
入門Redmine 第6版(2024年3月23日発売)に掲載された新機能に関する内容を執筆者・監修者が紹介します。
2024年4月14日 オライリー本の全冊公開日のお知らせ(もくもく勉強会も同時開催)
ファーエンドテクノロジーが所蔵するオライリー本(全冊)公開日のご案内です。公開日には「もくもく勉強会」も同時開催します。
My Redmine スタンダードプランおよびAdminサポートデスクプランの料金改定のお知らせ【2024年4月ご利用分より】
2024年4月ご利用分より、My Redmine スタンダードプラン(民間企業・個人向け及び官公庁向け)とAdminサポートデスクプランの料金を改定いたします。
Redmineの最新情報をメールでお知らせする「Redmine News」配信中
新バージョンやセキュリティ修正のリリース情報、そのほか最新情報を迅速にお届け