背景
AIとのセッションが終わるたびに、記録をMarkdownファイルで残している(以前の記事で書いた仕組み)。特定のAIのメモリ機能に頼らないので、特定のAIに依存するベンダーロックインを防げるし、ブログ記事の下書きにもする狙いだったが、この運用自体はとてもうまく回っている。
しかし、作業が増えるにつれてフォルダひとつに130近いファイルが積み上がり、見づらくなってきた。「いつかそうなるかな」と構えていたら、たった2ヶ月でその日が来てしまった。7月だけで109ファイル。7月はFable祭りもあって、AIをフル活用した月だった。
1ディレクトリ何件までなら「見渡せる」のか
整理の前に「そもそも何件を超えたら分割すべきなのか?」をAIと議論した。OSの仕様ではなく「人の認知の観点」の基準でだ。
出た結論は「1〜2スクロールで全体を見渡せる量、だいたい50〜100件」。それを超えると、人は一覧を眺めて見つけるのを諦め、検索に切り替える。そうなった時点で、フォルダを開く意味(=一覧性)が失われている。
月あたり約100件の今のペースなら、月フォルダで分割すればちょうど快適な数におさまる。「あれは7月ごろの話だったな」という時間軸の記憶とフォルダ構造が一致するのも、相性がいいと思った。
もうひとつの問題:同じ日のログの並び順
あわせて、前から気になっていた小さなストレスも解消することにした。同じ日に複数の作業をすると、ログはトピック名のアルファベット順に並ぶ。先にやった作業のログがあとに表示されて、「あれ?」と一瞬迷う時間ができることがあった。
解決策はファイル名に時刻を入れること。20260731_2157_topic.md のような形式。連番(_1, _2)も検討したが、時刻方式を選んだ。理由は3つ。
- 「次は何番か」を確認する採番作業がいらない
- 並行してセッションを走らせても番号が衝突しない
- 「夜にやったやつ」という記憶で探せる(連番の「2」は順序以外何も語らない)
「どの時点の時刻を入れるか」問題
時刻方式で悩ましいのが基準点。作業開始時か、ログを書いた時か。並行作業していたら?
結論は「そのログファイルを最初に作成した時点。以後どれだけ追記しても動かさない」。並行作業に本当の意味での「正しい順序」は存在しない。完璧な順序付けを目指すより、判断不要で機械的に決まる基準のほうが運用は続く。ファイル名は「いつの作業か」の識別子であって、鮮度の表示ではない。
過去136件への時刻付与はgit履歴が救ってくれた
新規ファイルはいいとして、過去の136件には時刻情報がない……と思いきや、あった。ログをGitで管理していたおかげで、各ファイルの初回コミット時刻が履歴に全部残っていた。
git log --diff-filter=A --format='%ad' -- <ファイル>
これで136件全件に、推測ではなく実際の時刻を機械的に付与できた。記録を残す運用は、あとからこういう形で効いてくる。
リネームして終わり、ではなかった
ファイル名規約の変更で大事なのが、参照の追従。ログのパスはCLAUDE.md(AIへの指示書)や各プロジェクトのREADMEなど、あちこちから参照されていた。grepで洗い出すと21ファイル。これらを新パスに一括置換して、ログ運用ルールの規約文書も新形式に更新して移行完了。
新しい月や年が来たらAIが黙ってディレクトリを作れるよう、そのルールも規約に一行追加しておいた。こういう細かい取り決めは「言わなくてもやってくれそう」でも、ファイルに書いておくと確実になる。
使ってみて
月ごとに整理されて、ファイル一覧が2スクロール程度で見渡せるようになった。本棚を片付けたような達成感がある。
「問題が実際に起きてから考える」方針は今回も正解だった気がする。問題が起きる前に設計すると過剰な仕組みを作りがちだが、136件という実物を前にすると「月フォルダ+時刻」というちょうどいい落とし所が自然に決まった。移行作業も、AIと議論しながら30分ほどで完了した。