SlideShare a Scribd company logo
1 of 60
Download to read offline
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

What's hot

What's hot (20)

ある工場のRedmine画面カスタム【View customize plugin 活用例】
ある工場のRedmine画面カスタム【View customize plugin 活用例】ある工場のRedmine画面カスタム【View customize plugin 活用例】
ある工場のRedmine画面カスタム【View customize plugin 活用例】
 
RedmineのFAQとアンチパターン集
RedmineのFAQとアンチパターン集RedmineのFAQとアンチパターン集
RedmineのFAQとアンチパターン集
 
Redmineの基本と適用事例
Redmineの基本と適用事例Redmineの基本と適用事例
Redmineの基本と適用事例
 
うちのRedmineの使い方
うちのRedmineの使い方うちのRedmineの使い方
うちのRedmineの使い方
 
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
 
事例から探る、Redmineの機能とよりよい運用
事例から探る、Redmineの機能とよりよい運用事例から探る、Redmineの機能とよりよい運用
事例から探る、Redmineの機能とよりよい運用
 
講演1 Redmine導入のアンチパターン
講演1 Redmine導入のアンチパターン講演1 Redmine導入のアンチパターン
講演1 Redmine導入のアンチパターン
 
Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定Redmineを快適に使うためのおすすめ初期設定
Redmineを快適に使うためのおすすめ初期設定
 
はじめる! Redmine (2021年版)
はじめる! Redmine (2021年版) はじめる! Redmine (2021年版)
はじめる! Redmine (2021年版)
 
Redmine + Lychee導入のアンチパターン
Redmine + Lychee導入のアンチパターンRedmine + Lychee導入のアンチパターン
Redmine + Lychee導入のアンチパターン
 
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
Redmineチューニングの実際と限界(旧資料) - Redmine performance tuning(old), See Below.
 
Redmineをちょっと便利に! プログラミング無しで使ってみるREST API
Redmineをちょっと便利に! プログラミング無しで使ってみるREST APIRedmineをちょっと便利に! プログラミング無しで使ってみるREST API
Redmineをちょっと便利に! プログラミング無しで使ってみるREST API
 
View customize1.2.0の紹介
View customize1.2.0の紹介View customize1.2.0の紹介
View customize1.2.0の紹介
 
挫折しないRedmine
挫折しないRedmine挫折しないRedmine
挫折しないRedmine
 
Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法Redmineでメトリクスを見える化する方法
Redmineでメトリクスを見える化する方法
 
Redmineサーバ統合事例
Redmineサーバ統合事例Redmineサーバ統合事例
Redmineサーバ統合事例
 
Redmineって何ができるの?
Redmineって何ができるの?Redmineって何ができるの?
Redmineって何ができるの?
 
挫折しないRedmine (2022)
 挫折しないRedmine  (2022) 挫折しないRedmine  (2022)
挫折しないRedmine (2022)
 
Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例Redmineとgitの 連携利用事例
Redmineとgitの 連携利用事例
 
Redmineの情報を自分好みに見える化した話
Redmineの情報を自分好みに見える化した話Redmineの情報を自分好みに見える化した話
Redmineの情報を自分好みに見える化した話
 

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

DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
terurou
 
20120413 nestakabaneworkshop
20120413 nestakabaneworkshop20120413 nestakabaneworkshop
20120413 nestakabaneworkshop
Yoichiro Sakurai
 
devsami kansai 2012 #c2
devsami kansai 2012 #c2devsami kansai 2012 #c2
devsami kansai 2012 #c2
Yushi_Takagi
 
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイPlaybay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイ
Kazuhiro Hara
 
Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22Gitと出会って人生変わった テックヒルズ2013-03-22
Gitと出会って人生変わった テックヒルズ2013-03-22
Shota Umeda
 

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

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

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