Thanks Driven Life

日々是感謝

org-redmine を作ってみた

一番肝心な POST がまだで、今は GET しかできてないんですが、ひとまず報告。

なにこれ

org-mode の住人がまたひきこもりに一歩近づけるツールです

なんで作った

いつか誰か作ってくれるって信じて待ち続けても一向に出てこないから!

現在、業務で Redmine を用いたチケット管理を行っています。
が、その前から org-mode を使ってタスク管理をしていたので、
Redmine 導入後も、org-mode を使ってほげほげという2重作業をしていました。
2重作業とは、例えば issue をコピってきて org file に追加して、こっちで DONE したものを redmine でも完了にしたり。
なので、せめてこのコピペったりする作業だけでも省略したい!という気持ちで一杯です。

実のところ、org-redmine が完成してもある意味2重管理のままなんですけどね。
まあそれはいいじゃないですか。書いてみたくなったんです。elisp の勉強も兼ねて。

成果物一覧

まずは何ができたのか、何ができるのか。

ソースコード
GitHub - hackers/org-redmine: Redmine tools using Emacs OrgMode

ちなみに hackers は、私が勤めている会社の社内勉強会、「はごー勉強会(通称:パソコンクラブ)」の
Organization アカウントです。

✓ デモ動画

時間 内容
開始 〜 1:35 org-redmine の基本的な使い方(issue 番号指定による挿入や anything を使った閲覧、挿入)
1:35 〜 2:58 対象の redmine を変更する方法
2:58 〜 最後 挿入する tree のテンプレート変更方法

参考

ものすごく参考になりました。というかむしろパク・・参考になりました!

今できること

(require 'org-redmine)

org-redmine.el を load-path に通して上を評価すればきっと動くと思います多分信じてる。

上記デモ動画でもあったように、今できることは以下のとおりです。

  • 指定した issue を subtree に挿入 ( M-x org-redmine-get-issue )
  • anything を用いて issues の取得・閲覧(ブラウザで起動) ( M-x org-redmine-anything-show-issue-all )
  • anything action を切り替えて、issue 挿入も可能
  • 対象となる redmine の変更 (setq org-redmine-uri)
  • 挿入する issue のテンプレート変更可能

テンプレートは、例えばこんな感じ

% sequence 置換される内容
%p_n% プロジェクト名
%i% issue id
%s% issue タイトル
%as_n% 担当者
(setq org-redmine-template-header "[%p_n%] #%i% %s% by %as_n%")
(setq org-redmine-template-property
      '(("担当者" . "%as_n%")
        ("対象バージョン" . "%v_n%")))

;; * [プロジェクト名] #333 テスト by gongo
;;   :PROPERTIES:
;;   :担当者:  dududu
;;   :対象バージョン: 1.2

また、デモではやらなかったんですが、API Key のセットも可能です

(setq org-redmine-api-key "xxxxxxxxxx")

できないこと・やりたいこと

✓ issue の description をまだ挿入してない
description の書式が textile だったり markdown だったりと
プロジェクト毎に違う可能性があるので、そのまま載せていいものか。
まあ別にいいかなーとは思うんですけどね。簡単だし。

✓ POST
イメージとしては

* subject
  description

** #1  ;; uri/issue#1
** #2  ;; uri/issue#2
** #3  ;; uri/issue#3
** memo

この状態で、例えば M-x org-redmine-post とかすると

  • description 及び #1 〜 #3 は更新
  • memo は更新しない(ローカルファイルで留めておく)

こんなところかなー。あまり自由な記述にすると追いつけなさそう。

✓ 細かいところ

  • 開始日とか終了日を、SCHEDULED や DEADLINE に置き換え
  • 今はカーソルがあるところに挿入してるが、プロジェクト名で振り分けたり(org-capture のイメージ)
  • anything でのほげほげ(今は毎回取得してるので、うまい具合にキャッシュとか?)
  • カスタムクエリのテンプレ記号どうすっかな
  • その他バグもろもろ。エラー処理とかもろもろ

最後に

elisp の勉強がてら作っているため、いまいち構文的なものはまだよくわかっていません。
なので、もっとうまい書き方があるぜーとか、むしろ俺に作らせろっていう方よろしくお願いします。