Railsで実装されたプロジェクト管理ツールです。競合のツールとしてTracが有名ですが,Tracと比較して開発速度が早く,ここ数年で急激にユーザを増やしています。Tracには標準で用意されていない機能として,ガントチャートの表示や複数プロジェクトの管理,チケットの種別ごとのワークフローのカスタマイズ機能に加え,最新の0.9系ではTracに比べて唯一貧弱だったチケットのレポーティング機能がほぼ同等レベルまで強化されました。これにより今年から本格的にRedmineへの移行が始まっていくと思われます。2009年の9月にはオープンソースのSNSエンジンであるOpenPNEの開発チームがTracからRedmineに移行したことや,Googleトレンドの検索数でRedmineがTracを追い抜いたというニュースもあります。今回は,Redmineのプラグインの開発について解説していきます。Redmineは記事執筆時点での最新安定版であるバージョン0.9.3を使っています。RedmineのインストールRedmineのインストール方法は公式サイトの記事を始め,沢山のサイトで解説されています。Passengerというソフトウェアを利用すればApache上でRedmineを稼働させることも可能ですが,ここでは最低限の手順でインストールを進めます。詳しく知りたい方は検索してみてください。お使いのDBMSに従ってデータベースのアカウント情報を入力して下さい。言語選択のプロンプトが表示されるので,「ja」と入力します。production作ってみようさて,それでは早速プラグインを作っていきましょう。プラグインの開発は,以下のような流れになります。今回はServerStatusというプラグインを作ります。稼動しているサーバのステータスを一覧で確認することで,稼働/停止を切り替えられるようにします。ステータスの変更履歴を残すようにもしてみましょう。雛形の作成Redmineではプラグインの実装用に3つのジェネレータが用意されています。redmine_pluginredmine_plugin_controllerredmine_plugin_model雛形の作成にはredmine_pluginジェネレータを使用します。ディレクトリ以下に沢山のファイルが作成されるはずです。これがプラグインのルートディレクトリになります。以降はPLUGIN_ROOTと表記します。プラグインの初期設定PLUGIN_ROOT/init.rbを編集し,初期設定を記述します。初期設定で最も重要なのは表示メニューへの追加です。追加可能な表示箇所は以下の4つに分類されます。トップメニュー(top_menu)アカウントメニュー(account_menu)アプリケーションメニュー(application_menu)プロジェクトメニュー(project_menu)それぞれのメニューの表示箇所を下図に表示します。プロジェクトメニューはプロジェクト選択時に,アプリケーションメニューはプロジェクト非選択時に表示されます。今回はトップメニューに追加します。メニューにはラベルとURLを指定する必要があります。URLはHashでも文字列でも構いませんが(外部サイトも指定可能です⁠)⁠,今回はserversコントローラのindexアクションを呼び出すようにします。trueend最後のmenuメソッドでメニューへの追加先を指定しています。引数は以下のとおりです。メニュー項目の識別子。一意でなければならない。URLのハッシュ、または文字列。標準メニューの間や先頭に挿入することも可能です。余談ですが,実はRedmineのメニューはMenuManagerと言うモジュールによって,標準の項目もプラグインと同様に扱われています。119行目の辺りから実装されています。トップメニューを定義している箇所を抜粋してみましょう。trueendRedmine::Plugin.registerブロックのmenuメソッドはMenuManagerを呼び出すラッパーになっています。Redmineではこのような実装に共通性があり,他にも様々な機能がモジュール化されています。非常に参考になりますので,興味のある方は是非一度lib/redmine.rbを読んでみてください。著者プロフィール京和崇行(きょうわたかゆき)株式会社カカクコム所属。食べログをRailsでリニューアルした時のメンバーの一人。今は主にサーバサイドの開発とチューニングを担当...のはずだが他にも色々やっている。クライミングとニコニコ動画とtwitterがあれば生きていける。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。