SlideShare a Scribd company logo
Redmineを
プラグインで
拡張しよう!
@haru_iida
飯田治行
静岡県在住
Redmineのプラグイン開発多数
Code Review, Wiki Extensions, Logs, ThemeChanger…
r-labs管理者
shinagawa.redmine立ち上げメンバ
宣伝
• 日経BPムック
• ¥1944
• 「必ず役立つ厳選プラ
グイン20」を執筆
本日お話する内容
Today s theme
•プラグインの作り方
•拡張ポイント
•プラグインを公開する
プラグインの
作り方
How to make plugin
参考書
おそらく世界で唯一の
プラグインに関する書籍
!
(全部英語)
!
Alex Bevilacqua
参考書(Web)
• Redmine本家のDeveloperガイド(英語)
• http://www.redmine.org/projects/
redmine/wiki/Developer_Guide
• r-labsのプラグイン開発ガイド(日本語)
• http://www.r-labs.org/projects/r-labs/
wiki/プラグイン開発ガイド
でも一番の参考書は公開され
ているプラグインのコードで
す。
気になるプラグインのコード
を真似するのが一番。
はじめの一歩
Getting started
用意するもの
• 開発マシン
• 開発ツール
• Ruby
• Redmine
開発マシン:OSは何でもよい
Windowsは環境構築に
ちょっと苦労するかも・・・
Ruby
Windows
• RubyInstaller for Windows + DevKit +pikがお勧め
• http://rubyinstaller.org
• 面倒ならBitNamiでRedmineごとインストール
• https://bitnami.com/stack/redmine
Mac, Linux
• rbenvで複数バージョンのrubyを管理
開発ツールのおすすめは
RubyMine
• http://www.jetbrains.com/ruby/
デモ
準備が整ったら早速開始
Plugin Generator
$ $ ruby script/rails generate redmine_plugin redmine_demo	
create plugins/redmine_demo/app	
create plugins/redmine_demo/app/controllers	
create plugins/redmine_demo/app/helpers	
create plugins/redmine_demo/app/models	
create plugins/redmine_demo/app/views	
create plugins/redmine_demo/db/migrate	
create plugins/redmine_demo/lib/tasks	
create plugins/redmine_demo/assets/images	
create plugins/redmine_demo/assets/javascripts	
create plugins/redmine_demo/assets/stylesheets	
create plugins/redmine_demo/config/locales	
create plugins/redmine_demo/test	
create plugins/redmine_demo/test/fixtures	
create plugins/redmine_demo/test/unit	
create plugins/redmine_demo/test/functional	
create plugins/redmine_demo/test/integration	
create plugins/redmine_demo/README.rdoc	
create plugins/redmine_demo/init.rb	
create plugins/redmine_demo/config/routes.rb	
create plugins/redmine_demo/config/locales/en.yml	
create plugins/redmine_demo/test/test_helper.rb
プラグインのひな形を作成するコマンド
Redmineインストールディレクトリ直下で実行する
プラグインの構造はミニrails
• プラグインの下に
controllers, helpers,
models, views…
modelとcontrollerもスクリ
プトで生成
$ ruby script/rails generate redmine_plugin_model redmine_demo
sample_models field1:string field2:integer	
create plugins/redmine_demo/app/models/sample_models.rb	
create plugins/redmine_demo/test/unit/sample_models_test.rb	
create plugins/redmine_demo/db/migrate/001_create_sample_models.rb
$ ruby script/rails generate redmine_plugin_controller redmine_demo Demo
sample_action	
create plugins/redmine_demo/app/controllers/Demo_controller.rb	
create plugins/redmine_demo/app/helpers/Demo_helper.rb	
create plugins/redmine_demo/test/functional/Demo_controller_test.rb	
create plugins/redmine_demo/app/views/Demo/sample_action.html.erb
テストコードのひな形も作成される
init.rb
Redmine::Plugin.register :redmine_demo do	
name 'Redmine Demo plugin'	
author 'Author name'	
description 'This is a plugin for Redmine'	
version '0.0.1'	
url 'http://example.com/path/to/plugin'	
author_url 'http://example.com/about'	
end
プラグインの情報を定義する場所
Plugin Generatorが出力した内容を適宜書き
換える。
特に公開する場合は重要な情報となる。
デモ
拡張ポイント
初級編
• メニュー追加
• Wiki マクロ
• Hook
メニューの追加
メニューの種類
• TOPメニュー
• アプリケーションメニュー
• プロジェクトメニュー
• アカウントメニュー
• アドミンメニュー
メニュー追加は一番オーソドッ
クスな拡張方法
いろいろなプラグインが行っている
メニューの追加はinit.rbで
Redmine::Plugin.register :redmine_demo do	
[...]	
!
# プロジェクトメニューの定義	
menu :project_menu, :demo, { :controller => 'demo', 	
:action => 'sample_action' }, :caption => :demo	
end
デモ
Wikiマクロ
wikiマクロ
• wikiの文法を拡張できる
• 一つぐらいならinit.rbに定義する
• たくさん作るならlibの下に定義を作ってinit.rb
でロードする
• Wiki Extensionsにはたくさんのwikiマクロが
あるので参考にしてください。
twitterマクロ(from Wiki Extensions)
Redmine::WikiFormatting::Macros.register do	
# マクロの説明	
desc "Creates link to twitter account page.nn" +	
" !{{twitter(user_name)}}n”	
# マクロの定義	
macro :twitter do |obj, args|	
	
return nil if args.length < 1 #引数が無かったら何もしない	
user_name = args[0].strip # 第一引数をuser_nameに代入	
# twitterへのリンクを作成	
link_to(h("@#{user_name}"), "http://www.twitter.com/#{user_name}").html_safe	
end	
end
デモ
Hook
Hookとは
• Redmineのいろいろな処理に割り込んでプラ
グイン独自の処理を挿入するしくみ。
• 割り込みポイントはRedmine内に予め用意さ
れている。
Hookの種類
• Controller Hooks
• View Hooks
• Model Hooks
• Helper Hooks
http://www.redmine.org/projects/redmine/
wiki/Hooks_List
View Hooks
• 一番よく使うHook
• Remine本体のページに任意のhtmlコードを
挿入する
View Hooksの書き方
# リスナークラスを定義。init.rbで読み込ませる	
class DemoHookViewListener < Redmine::Hook::ViewListener	
render_on :view_issues_new_top, :partial => "Demo/issue_note"	
end
• ViewListenerを継承したクラスを作成
• render_onでHookと読み込むerbファイルを指定
デモ
Controller Hooksの書き方
class DemoHookListener < Redmine::Hook::Listener	
!
def controller_issues_new_after_save(context = { }) 	
project = context[:project] 	
request = context[:request]	
!
#ここに処理を書く	
end	
end
• Listenerを継承したクラスを作成
• Hookと同じ名前のメソッドを定義
デモ
上級編
JavaScriptによるページ書
き換え
JavaScriptでRedmineが吐く
HTMLを動的に書き換え
• Redmineの既存のページを変更したい場合に使
う。
• JQueryでDOMをゴリゴリ編集するロジックを
ViewHooksで挿入する。
• もはや何でもアリ。見た目をどうとでも変えられる
• RedmineのバージョンアップによってDOMの構造
が変わると破綻するので注意
Code Review Plugin
デモ
alias_method_chain
alias_method_chain
• Redmineの既存の処理を書き換える
def save_with_demo	
# 置き換えたい処理の内容	
end	
!
alias_method_chain :save, :demo
def save	
#処理	
end
しくみを詳しく知りたければ
• Rubyの魔法が判る本
• Paolo Perrotta 著
• 角征典 訳
• 定価:3,024円
デモ
公開する
Publish
せっかく作ったプラグイン、
自分だけで使っていたらもっ
たいない。
思い切って公開しよう。
公開場所を決める
• www.redmine.orgは情報は載せてくれるがリ
ポジトリは提供されない。
www.redmine.orgに登録する
まず最初にユーザー登録
Plugin情報を登録
審査なしで誰でも登録できる。
全部英語で頑張って登録
宣伝しよう
• 公開したら宣伝
• ブログ、SNS等
!
• もれなくあきぴーさんが拾って「プログラ
マーの思索」で紹介されるシステム。
宣伝しよう2
• 勉強会でLTしよう
• twitterで一気に拡散される
まとめ
summary
• 開発ツールのお勧めはRubyMine
• Plugin generatorで雛形作成
• 他のプラグインを真似する
• 作ったら公開しよう
• 公開したら宣伝しよう
これであなたもプラグイン作者!!

More Related Content

PDF
Redmineプラグイン導入・開発入門
PDF
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
PDF
とあるメーカーのRedmine活用事例
PDF
Redmineによるwebサポート窓口の実装と運用
PDF
うちのRedmineの使い方(2)
PDF
View customize plugin for Redmineの紹介 (2019年版)
PDF
Redmine にいろいろ埋め込んでみた
PDF
View customize pluginを使いこなす
Redmineプラグイン導入・開発入門
Redmineの画面をあなた好みにカスタマイズ - View customize pluginの紹介 - Redmine Japan 2020
とあるメーカーのRedmine活用事例
Redmineによるwebサポート窓口の実装と運用
うちのRedmineの使い方(2)
View customize plugin for Redmineの紹介 (2019年版)
Redmine にいろいろ埋め込んでみた
View customize pluginを使いこなす

What's hot (20)

PDF
Redmineの基本と適用事例
PDF
Redmine issue assign notice plugin の紹介
PDF
View Customize Pluginで出来ること
PDF
RedmineのFAQとアンチパターン集
PDF
挫折しないRedmine (2022)
PDF
ある工場のRedmine画面カスタム【View customize plugin 活用例】
PDF
View customize1.2.0の紹介
PPTX
Redmineカスタムフィールド表示改善
PDF
Redmine 5.0 + RedMica 2.1 新機能評価ガイド
PPTX
View customizeでユーザー/プロジェクトのカスタムフィールドを利用した個別カスタマイズの方法
PDF
Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -
PDF
うちのRedmineの使い方
PDF
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
PDF
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システム
PDF
Redmineを快適に使うためのおすすめ初期設定
PDF
Redmineとgitの 連携利用事例
PDF
全文検索でRedmineをさらに活用!
PDF
Redmineの情報を自分好みに見える化した話
PDF
Spring Bootをはじめる時にやるべき10のこと
PPTX
講演1 Redmine導入のアンチパターン
Redmineの基本と適用事例
Redmine issue assign notice plugin の紹介
View Customize Pluginで出来ること
RedmineのFAQとアンチパターン集
挫折しないRedmine (2022)
ある工場のRedmine画面カスタム【View customize plugin 活用例】
View customize1.2.0の紹介
Redmineカスタムフィールド表示改善
Redmine 5.0 + RedMica 2.1 新機能評価ガイド
View customizeでユーザー/プロジェクトのカスタムフィールドを利用した個別カスタマイズの方法
Remineを活かしたプロセス支援 - 失敗しないプロセス支援 -
うちのRedmineの使い方
認証の標準的な方法は分かった。では認可はどう管理するんだい? #cmdevio
Redmine 4.2で作るヘルプデスク向け問い合わせ受付・管理システム
Redmineを快適に使うためのおすすめ初期設定
Redmineとgitの 連携利用事例
全文検索でRedmineをさらに活用!
Redmineの情報を自分好みに見える化した話
Spring Bootをはじめる時にやるべき10のこと
講演1 Redmine導入のアンチパターン
Ad

Similar to Redmineをプラグインで拡張しよう (20)

PDF
Redmine plugin ハンズオン
PDF
OSC福岡 20111203
PPTX
Redmine4時代のプラグイン開発 redmine.tokyo #13
PDF
ブラウザだけで学ぶWebアプリ開発【デザイン編】
PDF
DLR言語によるSilverlightプログラミング
PPTX
210630 python
PDF
Voicepic@FukuiMASeminar
PDF
Salesforce Lightning をやってみてあれこれ
PPTX
Multibranch Pipeline with Docker 入門編
PDF
作る人から作りながら運用する人になっていく
KEY
20120413 nestakabaneworkshop
PDF
マイクロソフトの新しい Web 開発ツールと新しい Web ブラウザー、そして、それらの新しい機能についての話
PPTX
devsami kansai 2012 #c2
PPTX
今さら聞けない人のためのGit超入門 2020/12/19
PPTX
1分で分かるdeveloperWorks Premium
PDF
Playbay Play 2.0 plugin イロハのイ
PDF
パワーユーザー必携の海外の拡張機能20選+α
PDF
Gitと出会って人生変わった テックヒルズ2013-03-22
PDF
ペアプロはリモートでもできる!
PDF
Embedded Webで加速するWeb of Things
Redmine plugin ハンズオン
OSC福岡 20111203
Redmine4時代のプラグイン開発 redmine.tokyo #13
ブラウザだけで学ぶWebアプリ開発【デザイン編】
DLR言語によるSilverlightプログラミング
210630 python
Voicepic@FukuiMASeminar
Salesforce Lightning をやってみてあれこれ
Multibranch Pipeline with Docker 入門編
作る人から作りながら運用する人になっていく
20120413 nestakabaneworkshop
マイクロソフトの新しい Web 開発ツールと新しい Web ブラウザー、そして、それらの新しい機能についての話
devsami kansai 2012 #c2
今さら聞けない人のためのGit超入門 2020/12/19
1分で分かるdeveloperWorks Premium
Playbay Play 2.0 plugin イロハのイ
パワーユーザー必携の海外の拡張機能20選+α
Gitと出会って人生変わった テックヒルズ2013-03-22
ペアプロはリモートでもできる!
Embedded Webで加速するWeb of Things
Ad

Redmineをプラグインで拡張しよう