mdlogbook 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/AGENTS.md +80 -0
- data/CHANGELOG.md +16 -0
- data/CLAUDE.md +5 -0
- data/CODE_OF_CONDUCT.md +10 -0
- data/LICENSE.txt +21 -0
- data/README.md +99 -0
- data/Rakefile +21 -0
- data/docs/sample-logs/sample-2025-01.md +122 -0
- data/docs/sample-logs/sample-2025-02.md +123 -0
- data/docs/sample-logs/sample-2025-03.md +116 -0
- data/docs/sample-logs/sample-2025-04.md +128 -0
- data/docs/sample-logs/sample-2025-05.md +122 -0
- data/docs/sample-logs/sample-2025-06.md +113 -0
- data/docs/sample-logs/sample-2025-07.md +122 -0
- data/docs/sample-logs/sample-2025-08.md +94 -0
- data/docs/sample-logs/sample-2025-09.md +119 -0
- data/docs/sample-logs/sample-2025-10.md +123 -0
- data/docs/sample-logs/sample-2025-11.md +113 -0
- data/docs/sample-logs/sample-2025-12.md +121 -0
- data/docs/usage.md +778 -0
- data/exe/mlb +6 -0
- data/lib/mdlogbook/arg_parser.rb +372 -0
- data/lib/mdlogbook/brace_expander.rb +59 -0
- data/lib/mdlogbook/cli.rb +224 -0
- data/lib/mdlogbook/config.rb +247 -0
- data/lib/mdlogbook/date_filter.rb +22 -0
- data/lib/mdlogbook/editor_launcher.rb +90 -0
- data/lib/mdlogbook/env.rb +95 -0
- data/lib/mdlogbook/file_resolver.rb +43 -0
- data/lib/mdlogbook/formatter/anonymize.rb +75 -0
- data/lib/mdlogbook/formatter/anonymize_dict.rb +36 -0
- data/lib/mdlogbook/formatter/base.rb +138 -0
- data/lib/mdlogbook/formatter/calendar.rb +154 -0
- data/lib/mdlogbook/formatter/chart_series_builder.rb +57 -0
- data/lib/mdlogbook/formatter/extract.rb +41 -0
- data/lib/mdlogbook/formatter/grid.rb +256 -0
- data/lib/mdlogbook/formatter/heatmap.rb +142 -0
- data/lib/mdlogbook/formatter/line_chart.rb +156 -0
- data/lib/mdlogbook/formatter/simple.rb +42 -0
- data/lib/mdlogbook/option_def.rb +68 -0
- data/lib/mdlogbook/option_registry.rb +205 -0
- data/lib/mdlogbook/overlap_checker.rb +42 -0
- data/lib/mdlogbook/parser.rb +213 -0
- data/lib/mdlogbook/period_spec.rb +56 -0
- data/lib/mdlogbook/raw_extractor.rb +100 -0
- data/lib/mdlogbook/runner/base.rb +66 -0
- data/lib/mdlogbook/runner/editor_runner.rb +49 -0
- data/lib/mdlogbook/runner/extract_format_runner.rb +54 -0
- data/lib/mdlogbook/runner/standard_format_runner.rb +105 -0
- data/lib/mdlogbook/runner/visual_format_runner.rb +77 -0
- data/lib/mdlogbook/runner.rb +27 -0
- data/lib/mdlogbook/section_extractor.rb +140 -0
- data/lib/mdlogbook/version.rb +6 -0
- data/lib/mdlogbook/work_thresholds.rb +37 -0
- data/lib/mdlogbook.rb +41 -0
- data/sig/mdlogbook/arg_parser.rbs +54 -0
- data/sig/mdlogbook/brace_expander.rbs +4 -0
- data/sig/mdlogbook/cli.rbs +14 -0
- data/sig/mdlogbook/config.rbs +60 -0
- data/sig/mdlogbook/date_filter.rbs +4 -0
- data/sig/mdlogbook/editor_launcher.rbs +9 -0
- data/sig/mdlogbook/env.rbs +32 -0
- data/sig/mdlogbook/file_resolver.rbs +9 -0
- data/sig/mdlogbook/formatter/anonymize.rbs +4 -0
- data/sig/mdlogbook/formatter/anonymize_dict.rbs +4 -0
- data/sig/mdlogbook/formatter/base.rbs +15 -0
- data/sig/mdlogbook/formatter/calendar.rbs +4 -0
- data/sig/mdlogbook/formatter/chart_series_builder.rbs +9 -0
- data/sig/mdlogbook/formatter/extract.rbs +4 -0
- data/sig/mdlogbook/formatter/grid.rbs +8 -0
- data/sig/mdlogbook/formatter/heatmap.rbs +10 -0
- data/sig/mdlogbook/formatter/line_chart.rbs +7 -0
- data/sig/mdlogbook/formatter/simple.rbs +6 -0
- data/sig/mdlogbook/option_def.rbs +30 -0
- data/sig/mdlogbook/option_registry.rbs +18 -0
- data/sig/mdlogbook/overlap_checker.rbs +13 -0
- data/sig/mdlogbook/parser.rbs +32 -0
- data/sig/mdlogbook/period_spec.rbs +11 -0
- data/sig/mdlogbook/raw_extractor.rbs +15 -0
- data/sig/mdlogbook/runner/base.rbs +4 -0
- data/sig/mdlogbook/runner/editor_runner.rbs +5 -0
- data/sig/mdlogbook/runner/extract_format_runner.rbs +4 -0
- data/sig/mdlogbook/runner/standard_format_runner.rbs +4 -0
- data/sig/mdlogbook/runner/visual_format_runner.rbs +4 -0
- data/sig/mdlogbook/runner.rbs +4 -0
- data/sig/mdlogbook/section_extractor.rbs +24 -0
- data/sig/mdlogbook/work_thresholds.rbs +11 -0
- data/sig/mdlogbook.rbs +8 -0
- metadata +149 -0
data/docs/usage.md
ADDED
|
@@ -0,0 +1,778 @@
|
|
|
1
|
+
# mlb 使い方ガイド
|
|
2
|
+
|
|
3
|
+
`mlb`は、Markdownで書いた作業記録から勤務時間を集計し、一覧・カレンダー・グラフ・抽出・匿名化形式で表示するCLIツールです。
|
|
4
|
+
|
|
5
|
+
この文書は、日常的な使い方のガイドであると同時に、入出力やオプションの仕様を確認するためのリファレンスとしても使えるように構成しています。
|
|
6
|
+
|
|
7
|
+
## この文書の読み方
|
|
8
|
+
|
|
9
|
+
最初に使い始める場合は、次の順に読むと流れを追いやすくなります。
|
|
10
|
+
|
|
11
|
+
1. [クイックスタート](#クイックスタート)
|
|
12
|
+
2. [設定](#設定)
|
|
13
|
+
3. [対象期間の指定](#対象期間の指定)
|
|
14
|
+
|
|
15
|
+
特定の挙動を確認したい場合は、次の節を参照してください。
|
|
16
|
+
|
|
17
|
+
- 入力ファイルの書式: [入力ファイル形式](#入力ファイル形式)
|
|
18
|
+
- 期間指定の完全なルール: [対象期間の指定](#対象期間の指定)
|
|
19
|
+
- 出力形式ごとの挙動: [出力形式](#出力形式)
|
|
20
|
+
- 利用できるスイッチ一覧: [オプション一覧](#オプション一覧)
|
|
21
|
+
|
|
22
|
+
## クイックスタート
|
|
23
|
+
|
|
24
|
+
### 1. 設定ファイルを作成する
|
|
25
|
+
|
|
26
|
+
はじめに以下のコマンドで設定ファイルの雛型を作成します:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
mlb --init
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
設定ファイルは`$XDG_CONFIG_HOME/mdlogbook/config.yml`(`XDG_CONFIG_HOME`未設定時は`~/.config/mdlogbook/config.yml`)に作成されます。`--config`で別のパスを指定することもできます:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
mlb --config ~/my-config.yml --init
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
初期内容:
|
|
39
|
+
|
|
40
|
+
```yaml
|
|
41
|
+
mdlogbook:
|
|
42
|
+
path: ~/.local/share/mdlogbook/logs
|
|
43
|
+
# target_hours: 160
|
|
44
|
+
anonymize:
|
|
45
|
+
salt: "<ランダムな32文字のhex>"
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
`path`にログファイルを置くディレクトリを、`target_hours`に月間の基準時間を設定します。`target_hours`は省略可能で、省略すると達成率やRemaining表示、カレンダーのサイン(◎○△×)、折れ線グラフのtargetラインが非表示になります。
|
|
49
|
+
|
|
50
|
+
`default_view`でデフォルトの表示形式を変更できます(`simple`、`calendar`、`line_chart`、`grid`、`heatmap`)。省略時は`simple`です。コマンドラインで`-s`/`-c`/`-l`/`--grid`/`--heatmap`を指定すると上書きされます。
|
|
51
|
+
|
|
52
|
+
### 2. ログファイルを書く
|
|
53
|
+
|
|
54
|
+
ログファイルは日付・作業名・時間帯をMarkdownで記述します:
|
|
55
|
+
|
|
56
|
+
```markdown
|
|
57
|
+
# 2026-03-01
|
|
58
|
+
## 開発
|
|
59
|
+
* 09:30-12:00 (2.50)
|
|
60
|
+
* 13:00-18:00 (5.00)
|
|
61
|
+
|
|
62
|
+
# 2026-03-02
|
|
63
|
+
## 会議
|
|
64
|
+
* 10:00-11:30 (1.50)
|
|
65
|
+
## 開発
|
|
66
|
+
* 13:00-19:00 (6.00)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
- `# YYYY-MM-DD`で日付を表す
|
|
70
|
+
- `## ...`で作業区分や案件名を表す
|
|
71
|
+
- `* HH:MM-HH:MM (x.xx)`で時間帯と記録時間を表す
|
|
72
|
+
|
|
73
|
+
括弧内の記録時間と時刻から計算した差分が一致しない場合、`--simple`/`--calendar`では警告がstderrに表示されます。
|
|
74
|
+
|
|
75
|
+
まとまったサンプルが必要な場合は、[sample-logs/](sample-logs/)に2025年の1年分の例を置いています。
|
|
76
|
+
|
|
77
|
+
### 3. 当月の記録を確認する
|
|
78
|
+
|
|
79
|
+
引数なしで実行すると、当月のファイルを自動的に選択して表示します:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
mlb
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
表示形式は次のように切り替えられます:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
mlb -s # 一覧形式で表示(デフォルト)
|
|
89
|
+
mlb -c # カレンダー形式で表示
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 4. 記録ファイルを編集する
|
|
93
|
+
|
|
94
|
+
`-e`オプションで、対象ファイルをエディタで開きます:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
mlb -e # 当月ファイルを開く
|
|
98
|
+
mlb -e 2026/3 # 2026年3月のファイルを開く
|
|
99
|
+
mlb -e 2026-03-15 # 2026年3月のファイルを開き、3月15日の行に移動
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
エディタを閉じた後、編集したファイル全体を検査し、時間帯の重なりや記録時間の不一致があればstderrに警告を表示します。これは`--simple`/`--calendar`で表示される警告と同じ内容です。警告の有無にかかわらず終了コードは0です。
|
|
103
|
+
|
|
104
|
+
### 5. よく使う期間指定を試す
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
mlb m1 # 先月
|
|
108
|
+
mlb 2026/1 # 2026年1月
|
|
109
|
+
mlb 2026/1 2026/3 # 2026年1〜3月を月別表示
|
|
110
|
+
mlb w..1 # 今週+先週
|
|
111
|
+
mlb D30 # 直近30日間
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## 設定
|
|
115
|
+
|
|
116
|
+
### 設定ファイルの場所
|
|
117
|
+
|
|
118
|
+
設定ファイルの探索順序は以下のとおりです:
|
|
119
|
+
|
|
120
|
+
1. `--config=PATH`(コマンドラインオプション)
|
|
121
|
+
2. `MDLOGBOOK_CONFIG`環境変数
|
|
122
|
+
3. `$XDG_CONFIG_HOME/mdlogbook/config.yml`(`XDG_CONFIG_HOME`未設定時は`~/.config/mdlogbook/config.yml`)
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
mlb --config ~/work/config.yml # コマンドラインで指定
|
|
126
|
+
MDLOGBOOK_CONFIG=~/work/config.yml mlb # 環境変数で指定
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### ログディレクトリの上書き
|
|
130
|
+
|
|
131
|
+
`--path`で設定ファイルの`path`を一時的に上書きできます:
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
mlb --path /tmp/test-logs # このディレクトリのログファイルを使用
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### プロジェクトごとの設定
|
|
138
|
+
|
|
139
|
+
設定ファイルには複数のプロジェクトを定義できます:
|
|
140
|
+
|
|
141
|
+
```yaml
|
|
142
|
+
mdlogbook: &default
|
|
143
|
+
target_hours: 160
|
|
144
|
+
path: ~/.local/share/mdlogbook/logs
|
|
145
|
+
project-a:
|
|
146
|
+
<<: *default
|
|
147
|
+
path: ~/Documents/project-a
|
|
148
|
+
project-b:
|
|
149
|
+
<<: *default
|
|
150
|
+
path: /path/to/work/project-b
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
使用するプロジェクトは`-p`オプションまたは環境変数`MDLOGBOOK_PROJECT`で指定します。`-p`は環境変数より優先されます。どちらも未設定の場合は`mdlogbook`が使われます。
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
mlb -p project-a # project-aを使用
|
|
157
|
+
mlb --project=project-a # 同上
|
|
158
|
+
mlb --list-projects # 設定済みプロジェクトの一覧を表示
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
[mise](https://mise.jdx.dev/)や[direnv](https://direnv.net/)と組み合わせてディレクトリごとに自動切り替えできます:
|
|
162
|
+
|
|
163
|
+
```toml
|
|
164
|
+
# .mise.toml の例
|
|
165
|
+
[env]
|
|
166
|
+
MDLOGBOOK_PROJECT = "project-a"
|
|
167
|
+
MDLOGBOOK_CONFIG = "~/work/config.yml" # 設定ファイルも切り替え可能
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### ファイル命名規則
|
|
171
|
+
|
|
172
|
+
ログファイルは以下の形式で命名します:
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
$path/$MDLOGBOOK_PROJECT-YYYY-MM.md
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
例: `~/.local/share/mdlogbook/logs/mdlogbook-2026-03.md`
|
|
179
|
+
|
|
180
|
+
1つのファイルには1か月分の記録を書きます。
|
|
181
|
+
|
|
182
|
+
### エディタの設定
|
|
183
|
+
|
|
184
|
+
エディタは環境変数`VISUAL`(未設定の場合は`EDITOR`)を参照します。カーソル位置などの追加引数は設定ファイルの`editor_args`で設定します:
|
|
185
|
+
|
|
186
|
+
```yaml
|
|
187
|
+
mdlogbook:
|
|
188
|
+
path: ~/logs/mdlogbook
|
|
189
|
+
target_hours: 160
|
|
190
|
+
editor_args: "--goto {file}:{line}" # VS Code
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
エディタごとの設定例:
|
|
194
|
+
|
|
195
|
+
```yaml
|
|
196
|
+
# VS Code
|
|
197
|
+
editor_args: "--goto {file}:{line}"
|
|
198
|
+
|
|
199
|
+
# Vim(当日の日付パターンで検索)
|
|
200
|
+
editor_args: "+/{date} {file}"
|
|
201
|
+
|
|
202
|
+
# 行番号で開く汎用設定
|
|
203
|
+
editor_args: "+{line} {file}"
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
複数プロジェクトで同じエディタ設定を共有する場合はYAMLエイリアスが使えます:
|
|
207
|
+
|
|
208
|
+
```yaml
|
|
209
|
+
default: &default
|
|
210
|
+
target_hours: 160
|
|
211
|
+
editor_args: "--goto {file}:{line}"
|
|
212
|
+
|
|
213
|
+
mdlogbook:
|
|
214
|
+
<<: *default
|
|
215
|
+
path: ~/logs/mdlogbook
|
|
216
|
+
|
|
217
|
+
work:
|
|
218
|
+
<<: *default
|
|
219
|
+
path: ~/logs/work
|
|
220
|
+
editor_args: "+{line} {file}" # このプロジェクトだけ別の設定
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
`editor_args`で使えるプレースホルダ:
|
|
224
|
+
|
|
225
|
+
| プレースホルダ | 内容 |
|
|
226
|
+
|---|---|
|
|
227
|
+
| `{file}` | ファイルのパス |
|
|
228
|
+
| `{line}` | 当日のエントリが始まる行番号 |
|
|
229
|
+
| `{date}` | 当日の日付(`YYYY-MM-DD`形式) |
|
|
230
|
+
|
|
231
|
+
`editor_args`が未設定の場合、エディタはファイルだけを引数として起動し、カーソル移動は行いません。
|
|
232
|
+
|
|
233
|
+
## 入力ファイル形式
|
|
234
|
+
|
|
235
|
+
入力ファイルは、日付見出し・作業見出し・時間帯エントリをMarkdownで並べたものです。
|
|
236
|
+
|
|
237
|
+
```markdown
|
|
238
|
+
# 2026-03-01
|
|
239
|
+
## 開発
|
|
240
|
+
* 09:30-12:00 (2.50)
|
|
241
|
+
* 13:00-18:00 (5.00)
|
|
242
|
+
|
|
243
|
+
# 2026-03-02
|
|
244
|
+
## 会議
|
|
245
|
+
* 10:00-11:30 (1.50)
|
|
246
|
+
## 開発
|
|
247
|
+
* 13:00-19:00 (6.00)
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
各行の意味:
|
|
251
|
+
|
|
252
|
+
- `# YYYY-MM-DD`: 日付
|
|
253
|
+
- `## ...`: 作業区分や案件名
|
|
254
|
+
- `* HH:MM-HH:MM (x.xx)`: 時間帯と記録時間
|
|
255
|
+
|
|
256
|
+
入力上の注意:
|
|
257
|
+
|
|
258
|
+
- 括弧内の記録時間と時刻から計算した差分が一致しない場合、`--simple`/`--calendar`では警告がstderrに表示されます
|
|
259
|
+
- 日をまたぐ時間帯は`23:30-24:30`のように`24:xx`で記述します
|
|
260
|
+
- `23:30-00:30`のような`00:xx`表記も`23:30-24:30`として集計されますが、曖昧さを避けるため警告が表示されます
|
|
261
|
+
|
|
262
|
+
より長い例は、[sample-logs/](sample-logs/)にある2025年のサンプルログを参照してください。
|
|
263
|
+
|
|
264
|
+
## 対象期間の指定
|
|
265
|
+
|
|
266
|
+
対象期間は、明示的な日付・月指定と、現在を基準にした相対指定の両方で指定できます。
|
|
267
|
+
|
|
268
|
+
### 基本ルール
|
|
269
|
+
|
|
270
|
+
- 引数なしの場合は当月を対象にします
|
|
271
|
+
- 明示的な月指定(`YYYY/M`)はデフォルトで個別表示されます
|
|
272
|
+
- 相対指定(`d`/`w`/`m`/`q`/`y`/`D`で始まる引数)はデフォルトでまとめて集計されます
|
|
273
|
+
|
|
274
|
+
### 引数なし(当月)
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
mlb # 当月($MDLOGBOOK_PROJECT-YYYY-MM.md)
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### 明示的な指定
|
|
281
|
+
|
|
282
|
+
#### 特定の月
|
|
283
|
+
|
|
284
|
+
`YYYY/M`または`YYYY-M`形式で月を指定します:
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
mlb 2026/3 # 2026年3月
|
|
288
|
+
mlb 2026-03 # 同上(ダッシュ区切り・ゼロ埋めも可)
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
#### 特定の日
|
|
292
|
+
|
|
293
|
+
`YYYY-MM-DD`または`YYYY/MM/DD`形式で1日だけを対象にします:
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
mlb 2026-03-15 # 2026年3月15日だけを表示
|
|
297
|
+
mlb 2026/03/15 # 同上(スラッシュ区切り)
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
#### 月の範囲
|
|
301
|
+
|
|
302
|
+
引数を2つ指定すると、その範囲の月を対象にします。デフォルトで月別に個別表示します:
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
mlb 2026/1 2026/3 # 2026年1〜3月を月別表示
|
|
306
|
+
mlb 2026-01 2026-03 # 同上(ダッシュ区切り)
|
|
307
|
+
mlb 2026/1 2026/3 --merge # 同期間を合算表示
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
#### globパターン
|
|
311
|
+
|
|
312
|
+
bash/zshのブレース展開と同じ構文で、複雑な月の組み合わせを指定できます。**シェルに展開させないよう、引用符が必要です**:
|
|
313
|
+
|
|
314
|
+
```bash
|
|
315
|
+
mlb '2025/*' # 2025年の全月
|
|
316
|
+
mlb '2026/{08..11}' # 2026年8〜11月
|
|
317
|
+
mlb '2026/{1,3,5}' # 2026年1・3・5月(列挙)
|
|
318
|
+
mlb '202{4..6}/01' # 2024〜2026年の1月
|
|
319
|
+
mlb '*/*' # 現在のプロジェクトの全月(ファイルが存在する月のみ)
|
|
320
|
+
mlb '2026/0*' # 2026年1〜9月のうちファイルが存在する月
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### 相対指定
|
|
324
|
+
|
|
325
|
+
現在の日時を基準に対象を指定します。
|
|
326
|
+
|
|
327
|
+
#### 点指定(d / w / m / q / y)
|
|
328
|
+
|
|
329
|
+
1つのカレンダー単位を指定します。`0`が現在、正の数が過去を表します:
|
|
330
|
+
|
|
331
|
+
| 記法 | 意味 |
|
|
332
|
+
|---|---|
|
|
333
|
+
| `d` / `d0` | 今日 |
|
|
334
|
+
| `d1` | 昨日 |
|
|
335
|
+
| `d2` | 一昨日 |
|
|
336
|
+
| `w` / `w0` | 今週(月〜日) |
|
|
337
|
+
| `w1` | 先週 |
|
|
338
|
+
| `w2` | 先々週 |
|
|
339
|
+
| `m` / `m0` | 今月 |
|
|
340
|
+
| `m1` | 先月 |
|
|
341
|
+
| `q` / `q0` | 今期(3か月分に展開) |
|
|
342
|
+
| `q1` | 前期 |
|
|
343
|
+
| `y` / `y0` | 今年 |
|
|
344
|
+
| `y1` | 昨年 |
|
|
345
|
+
|
|
346
|
+
負の数は未来を表します(通常は使いません):
|
|
347
|
+
|
|
348
|
+
| 記法 | 意味 |
|
|
349
|
+
|---|---|
|
|
350
|
+
| `d-1` | 明日 |
|
|
351
|
+
| `w-1` | 来週 |
|
|
352
|
+
| `m-1` | 来月 |
|
|
353
|
+
| `q-1` | 来期 |
|
|
354
|
+
|
|
355
|
+
#### 相対globパターン(範囲)
|
|
356
|
+
|
|
357
|
+
点指定にglobパターンを使うことで複数の単位を指定できます。`{N..M}`の`N`・`M`は大きいほど過去です:
|
|
358
|
+
|
|
359
|
+
```bash
|
|
360
|
+
mlb 'w{0..1}' # 今週+先週
|
|
361
|
+
mlb 'm{0..2}' # 今月+先月+先々月
|
|
362
|
+
mlb 'd{0..6}' # 今日を含む直近7日間
|
|
363
|
+
mlb 'w{..1}' # 今週+先週(始点省略=0とみなす)
|
|
364
|
+
mlb 'y{1..}' # 昨年以前すべて(終点省略=無限の過去)
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
ブレースなしの簡略記法も使えます。シェルによる展開を気にせずに書けます:
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
mlb w0..1 # 'w{0..1}'と同じ
|
|
371
|
+
mlb m0..2 # 'm{0..2}'と同じ
|
|
372
|
+
mlb w..1 # 'w{..1}'と同じ(始点省略)
|
|
373
|
+
mlb d.. # 'd{0..}'と同じ(終点省略=全履歴)
|
|
374
|
+
mlb d1.. # 'd{1..}'と同じ
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
#### 期間指定(D)
|
|
378
|
+
|
|
379
|
+
`D`に日数を続けると、今日を含む直近N日間を指定します:
|
|
380
|
+
|
|
381
|
+
```bash
|
|
382
|
+
mlb D7 # 直近7日間
|
|
383
|
+
mlb D30 # 直近30日間
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
`D7`は`d{0..6}`と等価です。
|
|
387
|
+
|
|
388
|
+
### マージ動作
|
|
389
|
+
|
|
390
|
+
相対指定を使うと、**デフォルトでまとめて集計**されます。`--no-merge`を指定すると単位ごとに個別表示します:
|
|
391
|
+
|
|
392
|
+
```bash
|
|
393
|
+
mlb m0..2 # 今月+先月+先々月を合算(デフォルト)
|
|
394
|
+
mlb m0..2 --no-merge # 月別に個別表示
|
|
395
|
+
|
|
396
|
+
mlb y1 # 昨年を合算(デフォルト)
|
|
397
|
+
mlb y1 --no-merge # 月別に個別表示
|
|
398
|
+
|
|
399
|
+
mlb w0..1 # 今週+先週を合算(デフォルト)
|
|
400
|
+
mlb w0..1 --no-merge # 週別に個別表示
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
明示的な月指定(`YYYY/M`)はデフォルトで個別表示され、`--merge`でまとめます。
|
|
404
|
+
|
|
405
|
+
## オプション一覧
|
|
406
|
+
|
|
407
|
+
オプションは用途ごとに見ると把握しやすくなります。
|
|
408
|
+
|
|
409
|
+
### 表示・出力形式
|
|
410
|
+
|
|
411
|
+
| オプション | 説明 |
|
|
412
|
+
|---|---|
|
|
413
|
+
| `-s`, `--simple` | 一覧形式で表示(デフォルト) |
|
|
414
|
+
| `-c`, `--calendar` | カレンダー形式で表示 |
|
|
415
|
+
| `-l`, `--line-chart` | 累積作業時間の折れ線グラフを表示(月単位指定のみ・最大3か月) |
|
|
416
|
+
| `--grid` | 折れ線グラフをグリッド表示(月単位指定のみ・最大12か月・端末幅に応じて3/2/1列) |
|
|
417
|
+
| `--heatmap` | 曜日×時刻の作業パターンをヒートマップで表示(解像度: 15m/30m/1h) |
|
|
418
|
+
| `--anonymize` | 匿名化形式で表示 |
|
|
419
|
+
| `--anonymize-dict` | 匿名化の逆引き辞書を出力 |
|
|
420
|
+
| `--raw` | 生のMarkdown内容をそのまま出力(AI要約用) |
|
|
421
|
+
|
|
422
|
+
### 対象の絞り込み・集計方法
|
|
423
|
+
|
|
424
|
+
| オプション | 説明 |
|
|
425
|
+
|---|---|
|
|
426
|
+
| `--filter=REGEXP` | 作業名(`##`見出し)で時間集計の対象を正規表現フィルタ |
|
|
427
|
+
| `--grep=REGEXP` | 見出し(`##`/`###`)にマッチするMarkdownセクションを抽出 |
|
|
428
|
+
| `--merge` | 複数の対象をまとめて集計 |
|
|
429
|
+
| `--no-merge` | 相対指定のデフォルトマージを無効にして個別表示 |
|
|
430
|
+
| `--target-hours=HOURS` | 月間の基準時間を指定(設定ファイルの値を上書き) |
|
|
431
|
+
| `--no-target-hours` | 基準時間を無効化(達成率・Remaining・サイン・targetラインを非表示) |
|
|
432
|
+
|
|
433
|
+
### 設定
|
|
434
|
+
|
|
435
|
+
| オプション | 説明 |
|
|
436
|
+
|---|---|
|
|
437
|
+
| `-p`, `--project=NAME` | 使用するプロジェクトを指定(環境変数`MDLOGBOOK_PROJECT`より優先) |
|
|
438
|
+
| `--list-projects` | 設定ファイルに定義されたプロジェクト名の一覧を表示 |
|
|
439
|
+
| `--config=PATH` | 設定ファイルのパスを指定(環境変数`MDLOGBOOK_CONFIG`より優先) |
|
|
440
|
+
| `--path=PATH` | ログディレクトリのパスを指定(設定ファイルの`path`を上書き) |
|
|
441
|
+
| `--init` | 設定ファイルの雛型を作成する |
|
|
442
|
+
|
|
443
|
+
### 補助操作
|
|
444
|
+
|
|
445
|
+
| オプション | 説明 |
|
|
446
|
+
|---|---|
|
|
447
|
+
| `-e`, `--edit` | 対象ファイルをエディタで開く(終了後にファイルを検査) |
|
|
448
|
+
| `--completion=SHELL` | シェル補完スクリプトを出力(bash/zsh) |
|
|
449
|
+
| `--debug` | 内部診断を表示(例: カレンダー表示の判定用内部値、見つからないファイルの警告) |
|
|
450
|
+
| `-h`, `--help` | ヘルプを表示 |
|
|
451
|
+
|
|
452
|
+
## 出力形式
|
|
453
|
+
|
|
454
|
+
用途に応じて、一覧・カレンダー・グラフ・生テキスト出力・セクション抽出・匿名化を使い分けられます。
|
|
455
|
+
|
|
456
|
+
### 一覧形式(simple)
|
|
457
|
+
|
|
458
|
+
日付・時間帯・時間数・作業名を1行ずつ表示します。末尾に合計時間、8時間換算の日数、基準時間(`--target-hours`または設定ファイルの`target_hours`)に対する達成率を表示します。
|
|
459
|
+
|
|
460
|
+
端末への出力時は、日付ごとに行の色が交互に変わります。
|
|
461
|
+
|
|
462
|
+
### カレンダー形式(calendar)
|
|
463
|
+
|
|
464
|
+
月曜始まりのカレンダーに日ごとの合計時間を表示します。各週の右端に週合計と平均、末尾に曜日ごとの合計と平均を表示します。
|
|
465
|
+
|
|
466
|
+
各日に達成状況の記号が付きます。判定はその日の時間数またはその日までの月内平均のいずれかに適用されます:
|
|
467
|
+
|
|
468
|
+
| 記号 | 判定 |
|
|
469
|
+
|---|---|
|
|
470
|
+
| `◎` | 日の時間数または月内平均 ≥ 基準の1.2倍 |
|
|
471
|
+
| `○` | 日の時間数または月内平均 ≥ 基準 |
|
|
472
|
+
| `△` | 上記に該当せず、基準の0.7倍以上 |
|
|
473
|
+
| `×` | 基準の0.7倍未満 |
|
|
474
|
+
|
|
475
|
+
基準は`target_hours`÷月間稼働日数(20日固定)です。デフォルト設定(`target_hours: 160`)では**8.0時間/日**となります。
|
|
476
|
+
|
|
477
|
+
端末への出力時は記号と0時間の日が色付きで表示されます。
|
|
478
|
+
|
|
479
|
+
当月を表示していて月末まで日が残っている場合、基準時間に達するために残り何時間必要か(稼働日あたり・暦日あたり・合計)を表示します。すでに達成している場合はその旨を表示します。
|
|
480
|
+
|
|
481
|
+
### 折れ線グラフ表示(line-chart)
|
|
482
|
+
|
|
483
|
+
利用例:
|
|
484
|
+
|
|
485
|
+
```bash
|
|
486
|
+
mlb --line-chart # 今月を折れ線グラフで表示(通常の端末では端末幅に合わせて自動調整)
|
|
487
|
+
mlb -l # 同上(-lは--line-chartの短縮形)
|
|
488
|
+
mlb --line-chart=large # largeサイズで表示
|
|
489
|
+
mlb -ll # 同上(lはlargeの短縮形)
|
|
490
|
+
mlb --line-chart q0 # 今期(3か月)を月ごとに表示
|
|
491
|
+
mlb --line-chart 2026/1 2026/2 2026/3
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
仕様:
|
|
495
|
+
|
|
496
|
+
- **月単位指定のみ**対応しています(週・日・期間指定は使用不可)
|
|
497
|
+
- 最大3か月まで指定できます
|
|
498
|
+
- 複数月を指定した場合は、月ごとに個別のグラフを表示します
|
|
499
|
+
|
|
500
|
+
サイズは`=SIZE`で指定できます:
|
|
501
|
+
|
|
502
|
+
| SIZE | 短縮形 | 幅 | 高さ |
|
|
503
|
+
|---|---|---|---|
|
|
504
|
+
| `small` | `s` | 60 | 15 |
|
|
505
|
+
| `medium` | `m` | 80 | 20 |
|
|
506
|
+
| `large` | `l` | 100 | 25 |
|
|
507
|
+
| `max` | `x` | 端末幅に合わせて自動調整 | 35 |
|
|
508
|
+
|
|
509
|
+
`SIZE`を省略した場合は、通常の端末出力では端末幅に合わせて自動調整されます。端末幅を取得できない場合は`medium`になります。
|
|
510
|
+
|
|
511
|
+
グラフには3つの折れ線を表示します:
|
|
512
|
+
|
|
513
|
+
| 系列 | 内容 |
|
|
514
|
+
|---|---|
|
|
515
|
+
| Actual | 当日までの累積作業時間 |
|
|
516
|
+
| Linear target | `target_hours ÷ 月日数`を1日ずつ積み上げた直線目標 |
|
|
517
|
+
| Weekday target | 稼働日(月〜金)のみに目標時間を積み上げた階段状目標 |
|
|
518
|
+
|
|
519
|
+
グラフの下に、当月表示時は残り必要時間の統計も表示します(カレンダー形式と同じ形式)。
|
|
520
|
+
|
|
521
|
+
設定ファイルの`visual`セクションで系列の表示・非表示と色をカスタマイズできます:
|
|
522
|
+
|
|
523
|
+
```yaml
|
|
524
|
+
mdlogbook:
|
|
525
|
+
visual:
|
|
526
|
+
today: true # 今日の縦線(デフォルト: true)
|
|
527
|
+
weekday: false # 稼働日目標(デフォルト: false)
|
|
528
|
+
linear: true # 直線目標(デフォルト: true)
|
|
529
|
+
colors:
|
|
530
|
+
actual: cyan
|
|
531
|
+
linear: green
|
|
532
|
+
weekday: yellow
|
|
533
|
+
today: white
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
色に指定できる値: `red` / `green` / `blue` / `cyan` / `magenta` / `yellow` / `white` / `normal`
|
|
537
|
+
|
|
538
|
+
### グリッド表示(grid)
|
|
539
|
+
|
|
540
|
+
利用例:
|
|
541
|
+
|
|
542
|
+
```bash
|
|
543
|
+
mlb --grid # 今月をグリッド表示
|
|
544
|
+
mlb --grid q0 # 今期(3か月)を並べて表示
|
|
545
|
+
mlb --grid '2025/*' # 2025年の各月をまとめて表示
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
仕様:
|
|
549
|
+
|
|
550
|
+
- **月単位指定のみ**対応しています(週・日・期間指定は使用不可)
|
|
551
|
+
- 最大12か月まで指定できます
|
|
552
|
+
- 端末幅に応じて3列・2列・1列に自動調整されます
|
|
553
|
+
- 各チャートのタイトル行に、その月の合計時間と記録があった日の平均時間を表示します
|
|
554
|
+
- 凡例は先頭行の右端のチャートにだけ表示されます
|
|
555
|
+
- Remaining表示はありません
|
|
556
|
+
|
|
557
|
+
`visual`セクションの設定は`--grid`にも適用されます。`today`/`weekday`/`linear`や色設定を共通で使えます。
|
|
558
|
+
|
|
559
|
+
### ヒートマップ表示(heatmap)
|
|
560
|
+
|
|
561
|
+
利用例:
|
|
562
|
+
|
|
563
|
+
```bash
|
|
564
|
+
mlb --heatmap q0 # 今期の作業パターンを表示(デフォルト: 30分刻み)
|
|
565
|
+
mlb --heatmap y0 # 今年全体
|
|
566
|
+
mlb --heatmap m0..3 # 直近4か月
|
|
567
|
+
mlb --heatmap=15m q0 # 15分刻みで表示
|
|
568
|
+
mlb --heatmap=1h q0 # 1時間刻みで表示
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
仕様:
|
|
572
|
+
|
|
573
|
+
- 曜日(Mon-Sun)×時刻のヒートマップで、どの曜日の何時台に作業が集中しているかを可視化します
|
|
574
|
+
- Y軸は曜日(Mon=上〜Sun=下)で固定7行、曜日ラベルはチャート右側に表示されます
|
|
575
|
+
- X軸は`start_hour`から24時間分の範囲です(デフォルト: 0時〜24時)
|
|
576
|
+
- 任意の期間指定に対応しています(月単位制約なし)
|
|
577
|
+
- 複数期間のデータは常にマージして1つのプロットに統合されます
|
|
578
|
+
|
|
579
|
+
解像度は`=RESOLUTION`で指定できます:
|
|
580
|
+
|
|
581
|
+
| RESOLUTION | 列数 | 説明 |
|
|
582
|
+
|---|---|---|
|
|
583
|
+
| `1h` | 24 | 1時間刻み |
|
|
584
|
+
| `30m` | 48 | 30分刻み(デフォルト) |
|
|
585
|
+
| `15m` | 96 | 15分刻み |
|
|
586
|
+
|
|
587
|
+
設定ファイルの`heatmap`セクションでX軸の開始時刻を変更できます:
|
|
588
|
+
|
|
589
|
+
```yaml
|
|
590
|
+
mdlogbook:
|
|
591
|
+
heatmap:
|
|
592
|
+
start_hour: 4 # X軸の開始時刻(デフォルト: 0)
|
|
593
|
+
```
|
|
594
|
+
|
|
595
|
+
`start_hour`より前の時刻は+24時間にラップされます。例えば`start_hour: 4`を指定すると3:00は27時として右端付近に表示されます。負値も指定可能です。
|
|
596
|
+
|
|
597
|
+
### 生テキスト出力(raw)
|
|
598
|
+
|
|
599
|
+
利用例:
|
|
600
|
+
|
|
601
|
+
```bash
|
|
602
|
+
mlb --raw # 今月の記録をそのまま出力
|
|
603
|
+
mlb --raw m1 # 先月の記録をそのまま出力
|
|
604
|
+
```
|
|
605
|
+
|
|
606
|
+
仕様:
|
|
607
|
+
|
|
608
|
+
- 指定期間の記録をMarkdownのまま出力します
|
|
609
|
+
- タスク名・時間エントリだけでなく、メモや自由記述を含むすべての行が対象です
|
|
610
|
+
- AIに入力して作業内容を要約させる用途を想定しています
|
|
611
|
+
|
|
612
|
+
設定ファイルの`extract`セクションで`preamble`/`postamble`を設定できます:
|
|
613
|
+
|
|
614
|
+
```yaml
|
|
615
|
+
mdlogbook:
|
|
616
|
+
extract:
|
|
617
|
+
preamble: |
|
|
618
|
+
以下は{range_begin}〜{range_end}の作業記録です。
|
|
619
|
+
|
|
620
|
+
書式はMarkdownです。`# YYYY-MM-DD`は日付、`## `で始まる行はタスク名、
|
|
621
|
+
`* hh:mm-hh:mm (h.hh)`は時間帯と時間数を表します。
|
|
622
|
+
|
|
623
|
+
この記録をもとに作業内容を要約してください。
|
|
624
|
+
作業時間が長いものから順に上位5件程度を、以下の形式で出力してください。
|
|
625
|
+
- タスク名と合計作業時間
|
|
626
|
+
- 作業内容・メモ・その他の情報の要約
|
|
627
|
+
- 記述から読み取れる範囲でのタスクの状況(完了・未完了・課題など)
|
|
628
|
+
|
|
629
|
+
---
|
|
630
|
+
```
|
|
631
|
+
|
|
632
|
+
`{range_begin}`と`{range_end}`は対象期間の開始日・終了日に置換されます。
|
|
633
|
+
|
|
634
|
+
### セクション抽出(grep)
|
|
635
|
+
|
|
636
|
+
利用例:
|
|
637
|
+
|
|
638
|
+
```bash
|
|
639
|
+
mlb --grep 'FooBar' q1 # 見出しにFooBarを含むセクションを抽出
|
|
640
|
+
mlb --grep 'TODO|Review' D2 # ここ2日間のTODO/Reviewセクションを抽出
|
|
641
|
+
```
|
|
642
|
+
|
|
643
|
+
仕様:
|
|
644
|
+
|
|
645
|
+
- 見出し行のみを対象に正規表現マッチします
|
|
646
|
+
- 対象見出しはデフォルトで`##`と`###`です
|
|
647
|
+
- `# YYYY-MM-DD`は検索対象ではなく、日付境界として扱います
|
|
648
|
+
- `## Foo`にマッチした場合、その配下の`###`見出しと本文を含めて、次の`##`以上の見出し直前までを出力します
|
|
649
|
+
- `### TODO`にマッチした場合、その`### TODO`から次の`###`以上の見出し直前までを出力します
|
|
650
|
+
- 出力は元のMarkdownを保ち、各断片の先頭に親の日付見出し`# YYYY-MM-DD`を付けます
|
|
651
|
+
- `--grep`では`extract.preamble`/`extract.postamble`は適用しません
|
|
652
|
+
|
|
653
|
+
### 集計フィルタ(filter)
|
|
654
|
+
|
|
655
|
+
利用例:
|
|
656
|
+
|
|
657
|
+
```bash
|
|
658
|
+
mlb --filter 'ProjectA' q1
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
仕様:
|
|
662
|
+
|
|
663
|
+
- 一覧表示、カレンダー表示、グラフ表示などの時間集計結果を、`##`見出しの作業名で絞り込みます
|
|
664
|
+
- Markdown本文や`###`見出しの抽出は行いません
|
|
665
|
+
|
|
666
|
+
### 匿名化形式(anonymize)
|
|
667
|
+
|
|
668
|
+
利用例:
|
|
669
|
+
|
|
670
|
+
```bash
|
|
671
|
+
mlb --anonymize # 今月を匿名化して出力
|
|
672
|
+
mlb --anonymize m1 # 先月を匿名化して出力
|
|
673
|
+
```
|
|
674
|
+
|
|
675
|
+
仕様:
|
|
676
|
+
|
|
677
|
+
- 作業記録をAIへ入力するなど、タスク名を伏せたい場面で使用します
|
|
678
|
+
- 出力されるのは日付見出し・タスク見出し・時間帯の行のみで、その他のテキストは除外されます
|
|
679
|
+
- タスク名は`project名 + anonymize.salt + task名`を入力にしたSHA-256の先頭8文字に置換されます
|
|
680
|
+
- 同じタスク名は期間をまたいでも常に同じ値になります
|
|
681
|
+
|
|
682
|
+
設定ファイルの`anonymize`セクションで出力をカスタマイズできます:
|
|
683
|
+
|
|
684
|
+
```yaml
|
|
685
|
+
mdlogbook:
|
|
686
|
+
path: ~/logs
|
|
687
|
+
anonymize:
|
|
688
|
+
salt: "0123456789abcdef0123456789abcdef" # `mlb --init`で自動生成
|
|
689
|
+
format: "業務 {hash}" # デフォルト: "{hash}"
|
|
690
|
+
passthrough: # 匿名化しないタスク名
|
|
691
|
+
- "定例ミーティング" # 完全一致
|
|
692
|
+
- "/^社内/" # /pattern/形式で正規表現も指定可能
|
|
693
|
+
preamble: |
|
|
694
|
+
以下は{range_begin}〜{range_end}の作業記録です。
|
|
695
|
+
|
|
696
|
+
書式はMarkdownです。`# YYYY-MM-DD`は日付、`## `で始まる行はタスク名(匿名化済み)、
|
|
697
|
+
`* hh:mm-hh:mm (h.hh)`は時間帯と時間数を表します。
|
|
698
|
+
|
|
699
|
+
この記録をもとに以下の点を分析してください。
|
|
700
|
+
- 働き方の傾向と注意すべき点
|
|
701
|
+
- 期間中に傾向の変化があれば、その内容と考えられる理由
|
|
702
|
+
|
|
703
|
+
---
|
|
704
|
+
postamble: ""
|
|
705
|
+
```
|
|
706
|
+
|
|
707
|
+
- `salt`: ハッシュ入力に追加するプロジェクト固有のsalt。`mlb --init`でランダム値を生成します
|
|
708
|
+
- `format`: タスク見出し行の書式。`{hash}`が8文字のハッシュ値に置換されます
|
|
709
|
+
- `passthrough`: ここに指定したタスク名はハッシュ化せずそのまま出力します。`/pattern/`形式で正規表現も使用できます
|
|
710
|
+
- `preamble` / `postamble`: 出力の前後に付けるテキスト。`{range_begin}`と`{range_end}`は対象期間の開始日・終了日に置換されます
|
|
711
|
+
|
|
712
|
+
### 逆引き辞書
|
|
713
|
+
|
|
714
|
+
`--anonymize-dict`でハッシュ値と元のタスク名の対応表を出力します。`passthrough`に指定したタスクは除外されます。
|
|
715
|
+
|
|
716
|
+
```bash
|
|
717
|
+
mlb --anonymize-dict # 今月の辞書を出力
|
|
718
|
+
mlb --anonymize-dict m1..3 # 先月〜3ヶ月前の辞書を出力
|
|
719
|
+
```
|
|
720
|
+
|
|
721
|
+
出力例:
|
|
722
|
+
|
|
723
|
+
```
|
|
724
|
+
a1b2c3d4 ProjectA
|
|
725
|
+
e5f6a7b8 ProjectB
|
|
726
|
+
```
|
|
727
|
+
|
|
728
|
+
## 補助機能と補足事項
|
|
729
|
+
|
|
730
|
+
### 重複チェック
|
|
731
|
+
|
|
732
|
+
`--simple`・`--calendar`で表示する際、出力対象期間内のエントリに時間帯の重複がないか自動チェックします。重複が見つかった場合はstderrへ出力されます:
|
|
733
|
+
|
|
734
|
+
```
|
|
735
|
+
2026-03-15 09:00-12:00 (line 5) overlaps 11:00-13:00 (line 9)
|
|
736
|
+
```
|
|
737
|
+
|
|
738
|
+
stderrが端末の場合は赤字で表示されます。
|
|
739
|
+
|
|
740
|
+
### シェルコンプリーション
|
|
741
|
+
|
|
742
|
+
`--completion`オプションでbash/zsh用の補完スクリプトを生成できます。オプション名だけでなく、`--line-chart`のサイズ(`small`, `medium`等)や`--heatmap`の解像度(`15m`, `30m`, `1h`)、`--project`のプロジェクト名なども補完されます。
|
|
743
|
+
|
|
744
|
+
#### bash
|
|
745
|
+
|
|
746
|
+
補完スクリプトをファイルに保存します(bash-completion 2.x+で遅延ロードされます):
|
|
747
|
+
|
|
748
|
+
```bash
|
|
749
|
+
mlb --completion bash > ~/.local/share/bash-completion/completions/mlb
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
または`.bashrc`に直接記述します:
|
|
753
|
+
|
|
754
|
+
```bash
|
|
755
|
+
eval "$(mlb --completion bash)"
|
|
756
|
+
```
|
|
757
|
+
|
|
758
|
+
#### zsh
|
|
759
|
+
|
|
760
|
+
補完スクリプトを生成して`fpath`の通ったディレクトリに配置します:
|
|
761
|
+
|
|
762
|
+
```zsh
|
|
763
|
+
mlb --completion zsh > ~/.zsh/completions/_mlb
|
|
764
|
+
```
|
|
765
|
+
|
|
766
|
+
`~/.zsh/completions`が`fpath`に含まれていない場合は`.zshrc`に追加します:
|
|
767
|
+
|
|
768
|
+
```zsh
|
|
769
|
+
fpath=(~/.zsh/completions $fpath)
|
|
770
|
+
autoload -Uz compinit && compinit
|
|
771
|
+
```
|
|
772
|
+
|
|
773
|
+
設定後、新しいシェルを起動するか`exec zsh`で反映します。
|
|
774
|
+
|
|
775
|
+
### 注意点
|
|
776
|
+
|
|
777
|
+
- 作業名の絞り込み(`--filter`)は、各記録の直前にある`##`見出しに対して適用されます
|
|
778
|
+
- 終了時刻が開始時刻より前の場合は翌日として1回だけ繰り上げて計算します。`00:xx`表記は警告付きで受け付けます
|