設計作業中に時間を意識せずに過ごしてしまうことはよくある。重要なメモや思考をその場で記録しないと、後から振り返ることができず、自身の生産性や成長を分析する手段を失ってしまう。このような問題を解決するために、毎時自動でログ入力を促すスクリプトを開発した。
このツールは Windows のタスクスケジューラにより1時間ごとに起動され、Tcl/Tk を用いた簡易GUIウィンドウを表示。ユーザーが短いメモを入力すると、現在時刻とともに指定されたMarkdownファイルに追記される。
BAT起動スクリプト
hourly_log_launcher.bat
set script_dir=%~dp0
set tcl_script="%script_dir%hourly_log_ui.tcl"
start "Log Prompt" %SF_P_WISH% %tcl_script:\=/%
Tcl/Tk GUIスクリプト
hourly_log_ui.tcl
encoding system utf-8
set script_path [file normalize [info script]]
set base_dir [file dirname $script_path]
# 5分後に自動終了
set timeout_id [after 300000 {exit}]
proc save_log {content log_file timeout_id} {
set timestamp [clock format [clock seconds] -format "%D %H:%M:%S"]
set fd [open $log_file a+]
puts $fd "---"
puts $fd "## $timestamp"
puts $fd $content
close $fd
after cancel $timeout_id
exit
}
cd $base_dir
set config_file "config.ini"
set fp [open $config_file r]
set config_data [read $fp]
close $fp
# 設定ファイルからログパスを抽出
if {[regexp {\s*log_path\s*=(.+)} $config_data -> log_path]} {
set log_file [string trim $log_path]
} else {
error "log_path not found in config.ini"
}
# GUI構築
set user_input ""
label .lbl -text "今時の活動内容:"
entry .inp -width 100 -textvariable user_input -relief sunken -bd 2
button .btn -text "保存" -command "save_log \$user_input {$log_file} $timeout_id"
bind . <Return> "save_log \$user_input {$log_file} $timeout_id"
grid .lbl .inp .btn -padx 20 -pady 5
focus .inp
設定ファイル
config.ini(スクリプトと同じディレクトリに配置)
; ログ出力先のMarkdownファイルパス
log_path=D:/logs/hourly_notes.md
Windowsタスクスケジューラ設定
「タスク スケジューラ」より、新しい基本タスクを作成し、以下の設定を行う:
- トリガー:「繰り返し」を有効にし、1時間ごと
- 操作:上記の
.batファイルを起動
出力例
---
## 04/12/2023 23:06:56
* 小規模スクリプトを公開