Redmineプラグインの作り方入門|ひな形生成・init.rb・Hookの実装手順をやさしく解説

プログラミング

はじめに

Redmineをより便利に使いたい。
そのために「プラグインを作ってみよう」と思ったはいいものの、「どこから始めたらいいのか分からない」という方も多いはずだ。

本記事では、Redmineプラグインの開発を始めるために必要な基本手順と、Hookによるカスタマイズのポイントを、実用的な目線でまとめた。
コマンドでのひな形作成から、init.rbの記述例、主要なHookの種類と使い方までを解説していく。


スポンサーリンク
スポンサーリンク

使用環境と前提

以下の開発環境を前提としている:

ツール バージョン 備考
Ubuntu 22.04 LTS
Ruby 3.2.4 rbenvでインストール

プラグインのひな形を一発生成する

Redmineにはプラグインの構成を一気に作ってくれる便利なコマンドが用意されている。
Redmineをインストールしたディレクトリに移動し、以下のコマンドを実行する:

bundle exec rails generate redmine_plugin Sample

このコマンドを走らせると、自動で以下のような構成が生成される:

  • controllers/
  • helpers/
  • models/
  • views/
  • テストコードの雛形ファイル

必要なファイル群がすぐに揃うので、ゼロから手作業で作る必要がない。とにかく最初の一歩が軽くなる。


Redmineにプラグインを認識させる

生成しただけではRedmineに認識されない。
init.rbファイルを作成し、以下のようにプラグイン情報を記述する:

Redmine::Plugin.register :sample do
  name 'Sample plugin'
  author 'saitoxu'
  description 'This is a sample plugin'
  version '0.0.1'
  url 'http://example.com/path/to/plugin'
  author_url 'http://example.com/about'
end

このファイルは、Redmineに「これはプラグインだよ」と伝えるための名刺のようなもの。
プラグイン名、バージョン、著者などのメタ情報を登録しておくことで、Redmineの管理画面からもプラグインが確認できるようになる。


Hookとは何か?

Redmineの醍醐味は、単なる機能追加だけではない。
Hookという仕組みを使えば、Redmineの既存動作に対して処理を差し込むことが可能になる。

特定のイベントが発生したとき」に「特定の処理を実行する」——
そんな動的カスタマイズを実現するのがHookの役割だ。

主なHookの種類

Hookの種類 用途
View Hooks ビューにHTMLやUI要素を追加する
Controller Hooks コントローラーの処理に介入する
Model Hooks モデルのライフサイクルに処理を追加
Helper Hooks ヘルパーの処理を拡張する

詳細なHook一覧は公式Wikiにまとまっている。


View Hookを使って画面に要素を追加する

たとえば、「課題作成画面の上部にお知らせを出したい」と思ったとしよう。
View Hookを使えば、こんな風にできる:

class DemoHookViewListener < Redmine::Hook::ViewListener
  render_on :view_issues_new_top, partial: "demo/issue_note"
end

このコードは、view_issues_new_topという位置にdemo/issue_noteというパーシャルテンプレートを挿入する。
ユーザーの目につく場所に、必要な情報を表示できるようになる。


Controller Hookで処理を拡張する

Controller Hookを使えば、Redmineの処理に直接手を入れることもできる。
以下の例は、新しい課題が保存されたあとに追加処理を行うケース:

class DemoHookListener < Redmine::Hook::Listener
  def controller_issues_new_after_save(context = {})
    project = context[:project]
    request = context[:request]
    # ここに任意の処理を記述
  end
end

このHookは、課題保存後の「余白」に任意の処理を挿し込むポイントになる。
例えば、通知の送信、外部サービスとの連携などもここで対応可能だ。


まとめ

Redmineのプラグイン開発では、雛形作成コマンドを活用することでスタート地点がぐっと近くなる。
さらにHookを組み合わせれば、標準機能では手が届かないようなカスタマイズも実現できる。

業務に合わせたチューニング、チームに最適化された表示、動的な処理の追加。
そうした柔軟なRedmine活用を目指すうえで、Hookとプラグインの基礎知識は強力な武器になるはずだ。

記事の内容を実践すれば、Redmineのプラグイン開発における最初のハードルを越えることができるはず。
まずは小さなHookから、自分仕様のRedmineを育ててみよう。


参考リンク

コメント