はじめに
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を育ててみよう。
コメント