日報に org-ql を使うことにした経緯
部署内では朝会夕会で進捗の共有等はやってるのだけど それとは別に業務命令で日報を書くことになった。
日報、いちいちその日に何をしたか思い出して書くのもだるいし、 最近めっきりコーディングをしてない身分としては GitHub の PR から日報を起こすこともできない。
Trello でカンバン運用しているからそっちから引っ張れないこともないが、 会議とかはそこには入ってないし、 結構突発作業もしているので、そういうのも Trello には乗って来ないという状態。
なんだけど個人的に org-mode で org-clock を使ったりして記録はしているので それを引っ張り出せばいいかってことで org-ql を使って日報用のデータ出力をすることにした。
org-ql で試したこと
単純に org-ql-search を使ってみた
まずは org-ql-search から適当にクエリを作ってブチ込んで試してた
M-x org-ql-search で起動すると
検索対象を org-agenda-files や org-directory などから選べる。
ただしデフォルトだとディレクトリを再帰的に検索とかしてくれないので「マジか」ってなった
設定を弄る
上で「デフォルトでは」と書いてるように、 設定を弄れば再帰的な検索とかもできるってことに、ソースを読んでて気付いた。
多分、customize を起動して確認するのがもっと賢い見つけ方だけど、まあいい。
というわけで設定的には
org-ql-search-directories-files-recursive を有効にていると再帰的に検索するし
おー-search-directories-files-regexp を弄ってると .org 以外のファイルも検索してくれる。例えば org_archive とか。
他にも何かある気がするけど試してないので知らん。
というわけでそのあたりの設定でクエリを試してたんだけど org-agenda-files には登録してないやつも検索したいけど 同じ階層にある別ファイルは検索したくないというワガママの結果、 直で org-ql-search を叩くのは一旦諦めることにした。
日報用に関数を自作
特定のファイルだけ指定したいのであれば デフォルトに任せずに指定してあげればいいじゃない、ということで関数を用意した
(defun my/nippou-query ()
(interactive)
(org-ql-search
(my/org-nippou-targets)
"todo:TODO,DOING,WAIT,DONE ts:on=today"
:title "日報"
:super-groups '((:auto-group))))
org-ql-search の第一引数がファイルのリストで、
第二引数が検索クエリなのがわかったので、とりあえずそれを突っ込んで欲しいデータは取れるようになった
その後のところは色々とキーワード引数が指定できるみたい
title はまあタイトルなのでいいとして super-groups は org-super-agenda の定義を見ないといけない。
https://github.com/alphapapa/org-super-agenda#special-selectors
で auto-category とか便利に使えそうなのがあるんだけど、 ファイル名を基準にしたりするのでちょっと違うかな〜ってなったりしてて とりあえず auto-group を使うことにした
auto-group は各ツリーにproperty として agenda-group を設定してればそれを使い、
設定されてないやつは自動的に Other Items というグループに分類される感じ。
クエリ的には TODO keywords として TODO,DOING,WAIT,DONE のやつを対象にするのと その日の timestamp のやつを対象にする感じにしている。 (けど今試しに動かしてみたら何故か22日の作業分が表示されて謎なのでバグがあるっぽい)
という流れで https://github.com/mugijiru/.emacs.d/pull/156 の設定を放り込んだ。
今後やりたいこと
- 日報は Slack に送ってるのでコマンドからそのまま Slack に送信したい
- その場合確認画面も欲しいよね
- 投稿後に Slack の画面も開くとさらに良い気がする
- 「Group: 00_開発」みたいになってるのでそのあたりは見た目を調整したい
- org-ql-search ではなく org-ql-select などを叩いた結果を自前で加工するのがいいかもしれない
- 業務内容以外にもフリーテキストを書き込んで投稿するのでそれもやりたい
- あとそこまで頑張ったらちゃんとしたパッケージにしたい

